@graph-compose/client 1.0.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 +646 -0
- package/dist/core/builder.d.ts +313 -0
- package/dist/core/builder.d.ts.map +1 -0
- package/dist/core/builder.js +538 -0
- package/dist/core/builder.js.map +1 -0
- package/dist/core/node-builder.d.ts +180 -0
- package/dist/core/node-builder.d.ts.map +1 -0
- package/dist/core/node-builder.js +387 -0
- package/dist/core/node-builder.js.map +1 -0
- package/dist/core/tool-builder.d.ts +130 -0
- package/dist/core/tool-builder.d.ts.map +1 -0
- package/dist/core/tool-builder.js +343 -0
- package/dist/core/tool-builder.js.map +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +39 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/node-builder.d.ts +64 -0
- package/dist/node-builder.d.ts.map +1 -0
- package/dist/node-builder.js +261 -0
- package/dist/node-builder.js.map +1 -0
- package/dist/types.d.ts +65 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/validation/index.d.ts +34 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +304 -0
- package/dist/validation/index.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { AgentNode, ErrorBoundaryNode, FlowControl, HttpNode, JsonataParam, Node, NodeConditions, RetryPolicy } from "@graph-compose/core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { GraphCompose } from "./core/builder";
|
|
4
|
+
export declare class NodeBuilder {
|
|
5
|
+
private readonly graph;
|
|
6
|
+
protected node: HttpNode | ErrorBoundaryNode | AgentNode;
|
|
7
|
+
private isHttpNode;
|
|
8
|
+
private isAgentNode;
|
|
9
|
+
constructor(graph: GraphCompose, id: string, type?: "http" | "error_boundary" | "agent", protectedNodes?: string[]);
|
|
10
|
+
private validateJsonataExpression;
|
|
11
|
+
get(url: string): NodeBuilder;
|
|
12
|
+
post(url: string): NodeBuilder;
|
|
13
|
+
put(url: string): NodeBuilder;
|
|
14
|
+
delete(url: string): NodeBuilder;
|
|
15
|
+
patch(url: string): NodeBuilder;
|
|
16
|
+
withCondition(behavior: NodeConditions): NodeBuilder;
|
|
17
|
+
withFlowControl(flowControls: FlowControl[]): NodeBuilder;
|
|
18
|
+
addFlowControl(flowControl: FlowControl): NodeBuilder;
|
|
19
|
+
withHeaders(headers: Record<string, string | JsonataParam>): NodeBuilder;
|
|
20
|
+
withBody(body: Record<string, any> | string): NodeBuilder;
|
|
21
|
+
withRetries(config: Partial<RetryPolicy>): NodeBuilder;
|
|
22
|
+
withTimeout(duration: string | number): NodeBuilder;
|
|
23
|
+
withDependencies(nodeIds: string[]): NodeBuilder;
|
|
24
|
+
withValidation(config: {
|
|
25
|
+
input?: z.ZodType<any> | Record<string, any>;
|
|
26
|
+
output?: z.ZodType<any> | Record<string, any>;
|
|
27
|
+
}): NodeBuilder;
|
|
28
|
+
private isZodType;
|
|
29
|
+
/**
|
|
30
|
+
* Set the maximum number of iterations for an agent node.
|
|
31
|
+
* An agent runs until it returns a completion schema response.
|
|
32
|
+
* You are responsible for ensuring the agent returns a `complete` response before this limit.
|
|
33
|
+
* If the agent reaches the max iterations without completing, it will fail.
|
|
34
|
+
*
|
|
35
|
+
* @default 5
|
|
36
|
+
* @param maxIterations Must be greater than 0
|
|
37
|
+
* @throws {Error} If called on a non-agent node
|
|
38
|
+
* @throws {ValidationError} If maxIterations is less than 1
|
|
39
|
+
*/
|
|
40
|
+
withMaxIterations(maxIterations: number): NodeBuilder;
|
|
41
|
+
/**
|
|
42
|
+
* Set the tools available to the agent.
|
|
43
|
+
* Tools must be defined in the global tools section of the workflow.
|
|
44
|
+
* Each tool name must be unique within the workflow and have no dashes or spaces.
|
|
45
|
+
*
|
|
46
|
+
* @param tools Array of tool names that the agent can use
|
|
47
|
+
* @throws {Error} If called on a non-agent node
|
|
48
|
+
* @throws {ValidationError} If any tool is not found in global tools
|
|
49
|
+
*/
|
|
50
|
+
withTools(tools: string[]): NodeBuilder;
|
|
51
|
+
/**
|
|
52
|
+
* Add a single tool to the agent's available tools.
|
|
53
|
+
* The tool must be defined in the global tools section of the workflow.
|
|
54
|
+
* The tool name must be unique within the workflow and have no dashes or spaces.
|
|
55
|
+
*
|
|
56
|
+
* @param tool Name of the tool to add
|
|
57
|
+
* @throws {Error} If called on a non-agent node
|
|
58
|
+
* @throws {ValidationError} If the tool is not found in global tools
|
|
59
|
+
*/
|
|
60
|
+
addTool(tool: string): NodeBuilder;
|
|
61
|
+
end(): GraphCompose;
|
|
62
|
+
build(): Node;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=node-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-builder.d.ts","sourceRoot":"","sources":["../src/node-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,IAAI,EACJ,cAAc,EACd,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,qBAAa,WAAW;IAMpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IALxB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACzD,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,WAAW,CAAU;gBAGV,KAAK,EAAE,YAAY,EACpC,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAM,GAAG,gBAAgB,GAAG,OAAgB,EAClD,cAAc,CAAC,EAAE,MAAM,EAAE;IA0C3B,OAAO,CAAC,yBAAyB;IAcjC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAM7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAM9B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAM7B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAMhC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAO/B,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,WAAW;IASpD,eAAe,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,WAAW;IAYzD,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW;IAgBrD,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG,WAAW;IAWxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,WAAW;IAWzD,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW;IAQtD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW;IAKnD,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW;IAWhD,cAAc,CAAC,MAAM,EAAE;QACrB,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC/C,GAAG,WAAW;IA2Bf,OAAO,CAAC,SAAS;IAIjB;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW;IASrD;;;;;;;;OAQG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW;IASvC;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAYlC,GAAG,IAAI,YAAY;IAKnB,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NodeBuilder = void 0;
|
|
7
|
+
const jsonata_1 = __importDefault(require("jsonata"));
|
|
8
|
+
const zod_1 = require("zod");
|
|
9
|
+
const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
10
|
+
class NodeBuilder {
|
|
11
|
+
constructor(graph, id, type = "http", protectedNodes) {
|
|
12
|
+
this.graph = graph;
|
|
13
|
+
this.isHttpNode = type === "http";
|
|
14
|
+
this.isAgentNode = type === "agent";
|
|
15
|
+
if (type === "error_boundary") {
|
|
16
|
+
this.node = {
|
|
17
|
+
id,
|
|
18
|
+
type: "error_boundary",
|
|
19
|
+
protectedNodes: protectedNodes || [],
|
|
20
|
+
http: {
|
|
21
|
+
method: "POST",
|
|
22
|
+
url: "",
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
else if (type === "agent") {
|
|
27
|
+
this.node = {
|
|
28
|
+
id,
|
|
29
|
+
type: "agent",
|
|
30
|
+
dependencies: [],
|
|
31
|
+
tools: [],
|
|
32
|
+
http: {
|
|
33
|
+
method: "POST",
|
|
34
|
+
url: "",
|
|
35
|
+
config: {
|
|
36
|
+
max_iterations: undefined,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.node = {
|
|
43
|
+
id,
|
|
44
|
+
type: "http",
|
|
45
|
+
dependencies: [],
|
|
46
|
+
http: {
|
|
47
|
+
method: "GET",
|
|
48
|
+
url: "",
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
validateJsonataExpression(expression, context) {
|
|
54
|
+
try {
|
|
55
|
+
console.log("validating", expression);
|
|
56
|
+
// Try to parse the JSONata expression
|
|
57
|
+
(0, jsonata_1.default)(expression);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
console.log("error", e);
|
|
61
|
+
throw new Error(`Invalid JSONata expression in ${context}: ${e instanceof Error ? e.message : "Unknown error"}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Update HTTP methods to validate URLs
|
|
65
|
+
get(url) {
|
|
66
|
+
this.node.http.method = "GET";
|
|
67
|
+
this.node.http.url = url;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
post(url) {
|
|
71
|
+
this.node.http.method = "POST";
|
|
72
|
+
this.node.http.url = url;
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
put(url) {
|
|
76
|
+
this.node.http.method = "PUT";
|
|
77
|
+
this.node.http.url = url;
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
delete(url) {
|
|
81
|
+
this.node.http.method = "DELETE";
|
|
82
|
+
this.node.http.url = url;
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
patch(url) {
|
|
86
|
+
this.node.http.method = "PATCH";
|
|
87
|
+
this.node.http.url = url;
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
// Conditional branching methods - only available for HTTP nodes
|
|
91
|
+
withCondition(behavior) {
|
|
92
|
+
if (!this.isHttpNode) {
|
|
93
|
+
throw new Error("Conditional branching is only available for HTTP nodes");
|
|
94
|
+
}
|
|
95
|
+
const httpNode = this.node;
|
|
96
|
+
httpNode.conditions = behavior;
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
withFlowControl(flowControls) {
|
|
100
|
+
if (!this.isHttpNode) {
|
|
101
|
+
throw new Error("Conditional branching is only available for HTTP nodes");
|
|
102
|
+
}
|
|
103
|
+
const httpNode = this.node;
|
|
104
|
+
if (!httpNode.conditions) {
|
|
105
|
+
httpNode.conditions = { flowControl: [] };
|
|
106
|
+
}
|
|
107
|
+
httpNode.conditions.flowControl = flowControls;
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
addFlowControl(flowControl) {
|
|
111
|
+
if (!this.isHttpNode) {
|
|
112
|
+
throw new Error("Conditional branching is only available for HTTP nodes");
|
|
113
|
+
}
|
|
114
|
+
const httpNode = this.node;
|
|
115
|
+
if (!httpNode.conditions) {
|
|
116
|
+
httpNode.conditions = { flowControl: [] };
|
|
117
|
+
}
|
|
118
|
+
if (!httpNode.conditions.flowControl) {
|
|
119
|
+
httpNode.conditions.flowControl = [];
|
|
120
|
+
}
|
|
121
|
+
httpNode.conditions.flowControl.push(flowControl);
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
// Configuration methods
|
|
125
|
+
withHeaders(headers) {
|
|
126
|
+
// Validate any JSONata expressions in headers
|
|
127
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
128
|
+
if (typeof value === "object" && "jsonataExpression" in value) {
|
|
129
|
+
this.validateJsonataExpression(value.jsonataExpression, `header '${key}'`);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
this.node.http.headers = headers;
|
|
133
|
+
return this;
|
|
134
|
+
}
|
|
135
|
+
withBody(body) {
|
|
136
|
+
// Note: Template expression validation happens during final workflow validation
|
|
137
|
+
// This allows us to collect all validation errors at once and maintain a single source of truth
|
|
138
|
+
if (typeof body === "string") {
|
|
139
|
+
this.node.http.body = body;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
this.node.http.body = body;
|
|
143
|
+
}
|
|
144
|
+
return this;
|
|
145
|
+
}
|
|
146
|
+
withRetries(config) {
|
|
147
|
+
this.node.http.retryPolicy = {
|
|
148
|
+
...this.node.http.retryPolicy,
|
|
149
|
+
...config,
|
|
150
|
+
};
|
|
151
|
+
return this;
|
|
152
|
+
}
|
|
153
|
+
withTimeout(duration) {
|
|
154
|
+
this.node.http.startToCloseTimeout = duration;
|
|
155
|
+
return this;
|
|
156
|
+
}
|
|
157
|
+
withDependencies(nodeIds) {
|
|
158
|
+
if (this.isHttpNode) {
|
|
159
|
+
this.node.dependencies = nodeIds;
|
|
160
|
+
}
|
|
161
|
+
else if (this.isAgentNode) {
|
|
162
|
+
this.node.dependencies = nodeIds;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
throw new Error("Dependencies can only be set on HTTP or agent nodes");
|
|
166
|
+
}
|
|
167
|
+
return this;
|
|
168
|
+
}
|
|
169
|
+
withValidation(config) {
|
|
170
|
+
if (!this.isHttpNode) {
|
|
171
|
+
throw new Error("Validation can only be set on HTTP nodes");
|
|
172
|
+
}
|
|
173
|
+
if (config.input || config.output) {
|
|
174
|
+
this.node.validation = {};
|
|
175
|
+
if (config.input) {
|
|
176
|
+
const inputSchema = this.isZodType(config.input)
|
|
177
|
+
? (0, zod_to_json_schema_1.zodToJsonSchema)(config.input)
|
|
178
|
+
: config.input;
|
|
179
|
+
this.node.validation.input =
|
|
180
|
+
inputSchema.definitions?.[Object.keys(inputSchema.definitions || {})[0]] || inputSchema;
|
|
181
|
+
}
|
|
182
|
+
if (config.output) {
|
|
183
|
+
const outputSchema = this.isZodType(config.output)
|
|
184
|
+
? (0, zod_to_json_schema_1.zodToJsonSchema)(config.output)
|
|
185
|
+
: config.output;
|
|
186
|
+
this.node.validation.output =
|
|
187
|
+
outputSchema.definitions?.[Object.keys(outputSchema.definitions || {})[0]] ||
|
|
188
|
+
outputSchema;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return this;
|
|
192
|
+
}
|
|
193
|
+
isZodType(value) {
|
|
194
|
+
return value instanceof zod_1.z.ZodType;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Set the maximum number of iterations for an agent node.
|
|
198
|
+
* An agent runs until it returns a completion schema response.
|
|
199
|
+
* You are responsible for ensuring the agent returns a `complete` response before this limit.
|
|
200
|
+
* If the agent reaches the max iterations without completing, it will fail.
|
|
201
|
+
*
|
|
202
|
+
* @default 5
|
|
203
|
+
* @param maxIterations Must be greater than 0
|
|
204
|
+
* @throws {Error} If called on a non-agent node
|
|
205
|
+
* @throws {ValidationError} If maxIterations is less than 1
|
|
206
|
+
*/
|
|
207
|
+
withMaxIterations(maxIterations) {
|
|
208
|
+
if (!this.isAgentNode) {
|
|
209
|
+
throw new Error("Max iterations can only be set for agent nodes");
|
|
210
|
+
}
|
|
211
|
+
const agentNode = this.node;
|
|
212
|
+
agentNode.http.config.max_iterations = maxIterations;
|
|
213
|
+
return this;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Set the tools available to the agent.
|
|
217
|
+
* Tools must be defined in the global tools section of the workflow.
|
|
218
|
+
* Each tool name must be unique within the workflow and have no dashes or spaces.
|
|
219
|
+
*
|
|
220
|
+
* @param tools Array of tool names that the agent can use
|
|
221
|
+
* @throws {Error} If called on a non-agent node
|
|
222
|
+
* @throws {ValidationError} If any tool is not found in global tools
|
|
223
|
+
*/
|
|
224
|
+
withTools(tools) {
|
|
225
|
+
if (!this.isAgentNode) {
|
|
226
|
+
throw new Error("Tools can only be set for agent nodes");
|
|
227
|
+
}
|
|
228
|
+
const agentNode = this.node;
|
|
229
|
+
agentNode.tools = tools;
|
|
230
|
+
return this;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Add a single tool to the agent's available tools.
|
|
234
|
+
* The tool must be defined in the global tools section of the workflow.
|
|
235
|
+
* The tool name must be unique within the workflow and have no dashes or spaces.
|
|
236
|
+
*
|
|
237
|
+
* @param tool Name of the tool to add
|
|
238
|
+
* @throws {Error} If called on a non-agent node
|
|
239
|
+
* @throws {ValidationError} If the tool is not found in global tools
|
|
240
|
+
*/
|
|
241
|
+
addTool(tool) {
|
|
242
|
+
if (!this.isAgentNode) {
|
|
243
|
+
throw new Error("Tools can only be added to agent nodes");
|
|
244
|
+
}
|
|
245
|
+
const agentNode = this.node;
|
|
246
|
+
if (!agentNode.tools.includes(tool)) {
|
|
247
|
+
agentNode.tools.push(tool);
|
|
248
|
+
}
|
|
249
|
+
return this;
|
|
250
|
+
}
|
|
251
|
+
// Terminal operation
|
|
252
|
+
end() {
|
|
253
|
+
return this.graph;
|
|
254
|
+
}
|
|
255
|
+
// Internal method to get the built node
|
|
256
|
+
build() {
|
|
257
|
+
return this.node;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
exports.NodeBuilder = NodeBuilder;
|
|
261
|
+
//# sourceMappingURL=node-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-builder.js","sourceRoot":"","sources":["../src/node-builder.ts"],"names":[],"mappings":";;;;;;AAUA,sDAA8B;AAC9B,6BAAwB;AACxB,2DAAqD;AAGrD,MAAa,WAAW;IAKtB,YACmB,KAAmB,EACpC,EAAU,EACV,OAA4C,MAAM,EAClD,cAAyB;QAHR,UAAK,GAAL,KAAK,CAAc;QAKpC,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,OAAO,CAAC;QAEpC,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,GAAG;gBACV,EAAE;gBACF,IAAI,EAAE,gBAAgB;gBACtB,cAAc,EAAE,cAAc,IAAI,EAAE;gBACpC,IAAI,EAAE;oBACJ,MAAM,EAAE,MAAM;oBACd,GAAG,EAAE,EAAE;iBACR;aACF,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG;gBACV,EAAE;gBACF,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,EAAE;gBAChB,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE;oBACJ,MAAM,EAAE,MAAM;oBACd,GAAG,EAAE,EAAE;oBACP,MAAM,EAAE;wBACN,cAAc,EAAE,SAA8B;qBAC/C;iBACF;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG;gBACV,EAAE;gBACF,IAAI,EAAE,MAAM;gBACZ,YAAY,EAAE,EAAE;gBAChB,IAAI,EAAE;oBACJ,MAAM,EAAE,KAAK;oBACb,GAAG,EAAE,EAAE;iBACR;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,yBAAyB,CAAC,UAAkB,EAAE,OAAe;QACnE,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YACtC,sCAAsC;YACtC,IAAA,iBAAO,EAAC,UAAU,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,iCAAiC,OAAO,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAChG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,GAAG,CAAC,GAAW;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,aAAa,CAAC,QAAwB;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAgB,CAAC;QACvC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,YAA2B;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAgB,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzB,QAAQ,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC5C,CAAC;QACD,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,WAAwB;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAgB,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzB,QAAQ,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACrC,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,EAAE,CAAC;QACvC,CAAC;QACD,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wBAAwB;IACxB,WAAW,CAAC,OAA8C;QACxD,8CAA8C;QAC9C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,IAAI,KAAK,EAAE,CAAC;gBAC9D,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,iBAAiB,EAAE,WAAW,GAAG,GAAG,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAkC;QACzC,gFAAgF;QAChF,gGAAgG;QAChG,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,MAA4B;QACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG;YAC3B,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAC7B,GAAG,MAAM;SACV,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,QAAyB;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,OAAiB;QAChC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,IAAiB,CAAC,YAAY,GAAG,OAAO,CAAC;QACjD,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAkB,CAAC,YAAY,GAAG,OAAO,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,MAGd;QACC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,IAAiB,CAAC,UAAU,GAAG,EAAE,CAAC;YAExC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9C,CAAC,CAAC,IAAA,oCAAe,EAAC,MAAM,CAAC,KAAK,CAAC;oBAC/B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChB,IAAI,CAAC,IAAiB,CAAC,UAAW,CAAC,KAAK;oBACvC,WAAW,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;YAC5F,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;oBAChD,CAAC,CAAC,IAAA,oCAAe,EAAC,MAAM,CAAC,MAAM,CAAC;oBAChC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjB,IAAI,CAAC,IAAiB,CAAC,UAAW,CAAC,MAAM;oBACxC,YAAY,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC1E,YAAY,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,SAAS,CAAC,KAAU;QAC1B,OAAO,KAAK,YAAY,OAAC,CAAC,OAAO,CAAC;IACpC,CAAC;IAED;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,aAAqB;QACrC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAiB,CAAC;QACzC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,SAAS,CAAC,KAAe;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAiB,CAAC;QACzC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAiB,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB;IACrB,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,wCAAwC;IACxC,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAxRD,kCAwRC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface ExecuteOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Context data to pass to the workflow
|
|
4
|
+
*/
|
|
5
|
+
context?: Record<string, any>;
|
|
6
|
+
/**
|
|
7
|
+
* Webhook URL to receive notifications about workflow progress
|
|
8
|
+
*/
|
|
9
|
+
webhookUrl?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Represents the detailed response for getting workflow status or synchronous execution results.
|
|
13
|
+
*/
|
|
14
|
+
export interface WorkflowResponse<TState = any, TErr = any> {
|
|
15
|
+
/** Unique identifier for the workflow execution */
|
|
16
|
+
workflowId: string;
|
|
17
|
+
/** Unique identifier for the specific workflow run */
|
|
18
|
+
runId: string;
|
|
19
|
+
/** ISO string timestamp when the workflow started */
|
|
20
|
+
startedAt: string;
|
|
21
|
+
/** User ID associated with the workflow */
|
|
22
|
+
userId: string;
|
|
23
|
+
/** Organization ID associated with the workflow */
|
|
24
|
+
organizationId: string;
|
|
25
|
+
/** Current status of the workflow execution */
|
|
26
|
+
status: "RUNNING" | "COMPLETED" | "FAILED" | "CANCELLED" | "TERMINATED" | "CONTINUED_AS_NEW" | "TIMED_OUT";
|
|
27
|
+
/**
|
|
28
|
+
* The current state of the workflow (e.g., node results).
|
|
29
|
+
* Structure depends on the workflow implementation.
|
|
30
|
+
* Often null if status is RUNNING, FAILED, or TERMINATED.
|
|
31
|
+
*/
|
|
32
|
+
executionState?: TState | null;
|
|
33
|
+
/**
|
|
34
|
+
* Error information if workflow status is FAILED or TERMINATED.
|
|
35
|
+
* Structure varies based on failure type.
|
|
36
|
+
*/
|
|
37
|
+
error?: TErr | null;
|
|
38
|
+
}
|
|
39
|
+
export interface ApiResponse<T> {
|
|
40
|
+
success: boolean;
|
|
41
|
+
message: string;
|
|
42
|
+
data: T | null;
|
|
43
|
+
}
|
|
44
|
+
export interface ValidationResult {
|
|
45
|
+
isValid: boolean;
|
|
46
|
+
errors: {
|
|
47
|
+
name: string;
|
|
48
|
+
message: string;
|
|
49
|
+
}[];
|
|
50
|
+
}
|
|
51
|
+
export interface GetWorkflowResponse {
|
|
52
|
+
workflow_id: string;
|
|
53
|
+
run_id: string;
|
|
54
|
+
started_at: string;
|
|
55
|
+
user_id: string;
|
|
56
|
+
organization_id: string;
|
|
57
|
+
status: string;
|
|
58
|
+
execution_state: any;
|
|
59
|
+
error?: any;
|
|
60
|
+
}
|
|
61
|
+
export interface TerminateWorkflowResponse {
|
|
62
|
+
workflowId: string;
|
|
63
|
+
status: string;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE9B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG;IACxD,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,MAAM,EACF,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,kBAAkB,GAClB,WAAW,CAAC;IAChB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACrB;AAID,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;CAChB;AAID,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7C;AAID,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,GAAG,CAAC;IACrB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAID,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AAkFA,0BAA0B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { WorkflowGraph } from "@graph-compose/core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export declare const ValidationResponseSchema: z.ZodObject<{
|
|
4
|
+
isValid: z.ZodBoolean;
|
|
5
|
+
errors: z.ZodArray<z.ZodType<Error, z.ZodTypeDef, Error>, "many">;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
isValid: boolean;
|
|
8
|
+
errors: Error[];
|
|
9
|
+
}, {
|
|
10
|
+
isValid: boolean;
|
|
11
|
+
errors: Error[];
|
|
12
|
+
}>;
|
|
13
|
+
export interface ValidationResult extends z.infer<typeof ValidationResponseSchema> {
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Validates a workflow definition
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateWorkflow(workflow: WorkflowGraph): ValidationResult;
|
|
19
|
+
/**
|
|
20
|
+
* Validates a JSONata expression within a node's configuration
|
|
21
|
+
* @param expr - The JSONata expression to validate
|
|
22
|
+
* @param nodeId - The ID of the node containing the expression
|
|
23
|
+
* @returns A validation result indicating success or failure
|
|
24
|
+
*/
|
|
25
|
+
declare function validateExpression(expr: string, nodeId: string): ValidationResult;
|
|
26
|
+
/**
|
|
27
|
+
* Validates a template string containing JSONata expressions
|
|
28
|
+
* @param template - The template string to validate
|
|
29
|
+
* @param nodeId - The ID of the node containing the template
|
|
30
|
+
* @returns A validation result indicating success or failure
|
|
31
|
+
*/
|
|
32
|
+
declare function validateTemplate(template: string, nodeId: string): ValidationResult;
|
|
33
|
+
export { validateExpression, validateTemplate };
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|