@hazeljs/agent 0.2.0-alpha.1

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 (166) hide show
  1. package/IMPLEMENTATION_SUMMARY.md +400 -0
  2. package/LICENSE +192 -0
  3. package/PERSISTENCE.md +201 -0
  4. package/PRISMA_INTEGRATION.md +499 -0
  5. package/PRODUCTION_READINESS.md +264 -0
  6. package/QUICKSTART.md +135 -0
  7. package/README.md +541 -0
  8. package/STATE_VS_MEMORY.md +243 -0
  9. package/benchmarks/performance.benchmark.ts +157 -0
  10. package/coverage/clover.xml +1508 -0
  11. package/coverage/lcov-report/base.css +224 -0
  12. package/coverage/lcov-report/block-navigation.js +87 -0
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/index.html +296 -0
  15. package/coverage/lcov-report/prettify.css +1 -0
  16. package/coverage/lcov-report/prettify.js +2 -0
  17. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  18. package/coverage/lcov-report/sorter.js +210 -0
  19. package/coverage/lcov.info +2722 -0
  20. package/dist/agent.module.d.ts +57 -0
  21. package/dist/agent.module.d.ts.map +1 -0
  22. package/dist/agent.module.js +99 -0
  23. package/dist/agent.module.js.map +1 -0
  24. package/dist/context/agent.context.d.ts +27 -0
  25. package/dist/context/agent.context.d.ts.map +1 -0
  26. package/dist/context/agent.context.js +98 -0
  27. package/dist/context/agent.context.js.map +1 -0
  28. package/dist/decorators/agent.decorator.d.ts +21 -0
  29. package/dist/decorators/agent.decorator.d.ts.map +1 -0
  30. package/dist/decorators/agent.decorator.js +38 -0
  31. package/dist/decorators/agent.decorator.js.map +1 -0
  32. package/dist/decorators/delegate.decorator.d.ts +66 -0
  33. package/dist/decorators/delegate.decorator.d.ts.map +1 -0
  34. package/dist/decorators/delegate.decorator.js +108 -0
  35. package/dist/decorators/delegate.decorator.js.map +1 -0
  36. package/dist/decorators/tool.decorator.d.ts +23 -0
  37. package/dist/decorators/tool.decorator.d.ts.map +1 -0
  38. package/dist/decorators/tool.decorator.js +61 -0
  39. package/dist/decorators/tool.decorator.js.map +1 -0
  40. package/dist/events/event.emitter.d.ts +45 -0
  41. package/dist/events/event.emitter.d.ts.map +1 -0
  42. package/dist/events/event.emitter.js +96 -0
  43. package/dist/events/event.emitter.js.map +1 -0
  44. package/dist/executor/agent.executor.d.ts +58 -0
  45. package/dist/executor/agent.executor.d.ts.map +1 -0
  46. package/dist/executor/agent.executor.js +312 -0
  47. package/dist/executor/agent.executor.js.map +1 -0
  48. package/dist/executor/tool.executor.d.ts +55 -0
  49. package/dist/executor/tool.executor.d.ts.map +1 -0
  50. package/dist/executor/tool.executor.js +266 -0
  51. package/dist/executor/tool.executor.js.map +1 -0
  52. package/dist/graph/agent-graph.d.ts +131 -0
  53. package/dist/graph/agent-graph.d.ts.map +1 -0
  54. package/dist/graph/agent-graph.js +462 -0
  55. package/dist/graph/agent-graph.js.map +1 -0
  56. package/dist/graph/agent-graph.types.d.ts +210 -0
  57. package/dist/graph/agent-graph.types.d.ts.map +1 -0
  58. package/dist/graph/agent-graph.types.js +12 -0
  59. package/dist/graph/agent-graph.types.js.map +1 -0
  60. package/dist/index.d.ts +34 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +51 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/prompts/agent-system.prompt.d.ts +10 -0
  65. package/dist/prompts/agent-system.prompt.d.ts.map +1 -0
  66. package/dist/prompts/agent-system.prompt.js +18 -0
  67. package/dist/prompts/agent-system.prompt.js.map +1 -0
  68. package/dist/prompts/index.d.ts +4 -0
  69. package/dist/prompts/index.d.ts.map +1 -0
  70. package/dist/prompts/index.js +20 -0
  71. package/dist/prompts/index.js.map +1 -0
  72. package/dist/prompts/supervisor-routing.prompt.d.ts +9 -0
  73. package/dist/prompts/supervisor-routing.prompt.d.ts.map +1 -0
  74. package/dist/prompts/supervisor-routing.prompt.js +22 -0
  75. package/dist/prompts/supervisor-routing.prompt.js.map +1 -0
  76. package/dist/prompts/supervisor-system.prompt.d.ts +9 -0
  77. package/dist/prompts/supervisor-system.prompt.d.ts.map +1 -0
  78. package/dist/prompts/supervisor-system.prompt.js +21 -0
  79. package/dist/prompts/supervisor-system.prompt.js.map +1 -0
  80. package/dist/registry/agent.registry.d.ts +49 -0
  81. package/dist/registry/agent.registry.d.ts.map +1 -0
  82. package/dist/registry/agent.registry.js +90 -0
  83. package/dist/registry/agent.registry.js.map +1 -0
  84. package/dist/registry/tool.registry.d.ts +54 -0
  85. package/dist/registry/tool.registry.d.ts.map +1 -0
  86. package/dist/registry/tool.registry.js +153 -0
  87. package/dist/registry/tool.registry.js.map +1 -0
  88. package/dist/runtime/agent.runtime.d.ts +218 -0
  89. package/dist/runtime/agent.runtime.d.ts.map +1 -0
  90. package/dist/runtime/agent.runtime.extensions.d.ts +49 -0
  91. package/dist/runtime/agent.runtime.extensions.d.ts.map +1 -0
  92. package/dist/runtime/agent.runtime.extensions.js +93 -0
  93. package/dist/runtime/agent.runtime.extensions.js.map +1 -0
  94. package/dist/runtime/agent.runtime.js +448 -0
  95. package/dist/runtime/agent.runtime.js.map +1 -0
  96. package/dist/state/agent-state.interface.d.ts +63 -0
  97. package/dist/state/agent-state.interface.d.ts.map +1 -0
  98. package/dist/state/agent-state.interface.js +7 -0
  99. package/dist/state/agent-state.interface.js.map +1 -0
  100. package/dist/state/agent.state.d.ts +67 -0
  101. package/dist/state/agent.state.d.ts.map +1 -0
  102. package/dist/state/agent.state.js +172 -0
  103. package/dist/state/agent.state.js.map +1 -0
  104. package/dist/state/database-state.manager.d.ts +63 -0
  105. package/dist/state/database-state.manager.d.ts.map +1 -0
  106. package/dist/state/database-state.manager.js +282 -0
  107. package/dist/state/database-state.manager.js.map +1 -0
  108. package/dist/state/redis-state.manager.d.ts +81 -0
  109. package/dist/state/redis-state.manager.d.ts.map +1 -0
  110. package/dist/state/redis-state.manager.js +253 -0
  111. package/dist/state/redis-state.manager.js.map +1 -0
  112. package/dist/supervisor/supervisor.d.ts +81 -0
  113. package/dist/supervisor/supervisor.d.ts.map +1 -0
  114. package/dist/supervisor/supervisor.js +220 -0
  115. package/dist/supervisor/supervisor.js.map +1 -0
  116. package/dist/types/agent.types.d.ts +166 -0
  117. package/dist/types/agent.types.d.ts.map +1 -0
  118. package/dist/types/agent.types.js +32 -0
  119. package/dist/types/agent.types.js.map +1 -0
  120. package/dist/types/event.types.d.ts +198 -0
  121. package/dist/types/event.types.d.ts.map +1 -0
  122. package/dist/types/event.types.js +46 -0
  123. package/dist/types/event.types.js.map +1 -0
  124. package/dist/types/llm.types.d.ts +66 -0
  125. package/dist/types/llm.types.d.ts.map +1 -0
  126. package/dist/types/llm.types.js +7 -0
  127. package/dist/types/llm.types.js.map +1 -0
  128. package/dist/types/rag.types.d.ts +40 -0
  129. package/dist/types/rag.types.d.ts.map +1 -0
  130. package/dist/types/rag.types.js +7 -0
  131. package/dist/types/rag.types.js.map +1 -0
  132. package/dist/types/tool.types.d.ts +118 -0
  133. package/dist/types/tool.types.d.ts.map +1 -0
  134. package/dist/types/tool.types.js +19 -0
  135. package/dist/types/tool.types.js.map +1 -0
  136. package/dist/utils/circuit-breaker.d.ts +9 -0
  137. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  138. package/dist/utils/circuit-breaker.js +16 -0
  139. package/dist/utils/circuit-breaker.js.map +1 -0
  140. package/dist/utils/health-check.d.ts +71 -0
  141. package/dist/utils/health-check.d.ts.map +1 -0
  142. package/dist/utils/health-check.js +156 -0
  143. package/dist/utils/health-check.js.map +1 -0
  144. package/dist/utils/logger.d.ts +53 -0
  145. package/dist/utils/logger.d.ts.map +1 -0
  146. package/dist/utils/logger.js +133 -0
  147. package/dist/utils/logger.js.map +1 -0
  148. package/dist/utils/metrics.d.ts +90 -0
  149. package/dist/utils/metrics.d.ts.map +1 -0
  150. package/dist/utils/metrics.js +186 -0
  151. package/dist/utils/metrics.js.map +1 -0
  152. package/dist/utils/rate-limiter.d.ts +44 -0
  153. package/dist/utils/rate-limiter.d.ts.map +1 -0
  154. package/dist/utils/rate-limiter.js +82 -0
  155. package/dist/utils/rate-limiter.js.map +1 -0
  156. package/dist/utils/retry.d.ts +42 -0
  157. package/dist/utils/retry.d.ts.map +1 -0
  158. package/dist/utils/retry.js +103 -0
  159. package/dist/utils/retry.js.map +1 -0
  160. package/jest.config.js +30 -0
  161. package/logs/combined.log +1 -0
  162. package/logs/error.log +0 -0
  163. package/package.json +74 -0
  164. package/prisma-schema.example.prisma +76 -0
  165. package/tests/setup.ts +17 -0
  166. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,462 @@
1
+ "use strict";
2
+ /**
3
+ * AgentGraph — Multi-Agent Orchestration Graph
4
+ *
5
+ * Provides a LangGraph-inspired DAG runtime for orchestrating multiple agents.
6
+ * Supports sequential pipelines, conditional routing, and parallel fan-out/fan-in.
7
+ *
8
+ * @example Sequential pipeline
9
+ * ```ts
10
+ * const graph = runtime.createGraph('pipeline')
11
+ * .addNode('researcher', { type: 'agent', agentName: 'ResearchAgent' })
12
+ * .addNode('writer', { type: 'agent', agentName: 'WriterAgent' })
13
+ * .addEdge('researcher', 'writer')
14
+ * .addEdge('writer', END)
15
+ * .setEntryPoint('researcher')
16
+ * .compile();
17
+ *
18
+ * const result = await graph.execute('Write a blog about LLMs');
19
+ * ```
20
+ *
21
+ * @example Conditional routing
22
+ * ```ts
23
+ * const graph = runtime.createGraph('router')
24
+ * .addNode('classifier', { type: 'agent', agentName: 'ClassifierAgent' })
25
+ * .addNode('coder', { type: 'agent', agentName: 'CoderAgent' })
26
+ * .addNode('writer', { type: 'agent', agentName: 'WriterAgent' })
27
+ * .setEntryPoint('classifier')
28
+ * .addConditionalEdge('classifier', state => state.data.type === 'code' ? 'coder' : 'writer')
29
+ * .addEdge('coder', END)
30
+ * .addEdge('writer', END)
31
+ * .compile();
32
+ * ```
33
+ *
34
+ * @example Parallel fan-out / fan-in
35
+ * ```ts
36
+ * const graph = runtime.createGraph('parallel')
37
+ * .addNode('splitter', { type: 'function', fn: splitTask })
38
+ * .addNode('parallel-1', { type: 'parallel', branches: ['agent-a', 'agent-b'] })
39
+ * .addNode('agent-a', { type: 'agent', agentName: 'AgentA' })
40
+ * .addNode('agent-b', { type: 'agent', agentName: 'AgentB' })
41
+ * .addNode('combiner', { type: 'function', fn: combineResults })
42
+ * .addEdge('splitter', 'parallel-1')
43
+ * .addEdge('parallel-1', 'combiner')
44
+ * .addEdge('combiner', END)
45
+ * .setEntryPoint('splitter')
46
+ * .compile();
47
+ * ```
48
+ */
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.CompiledGraph = exports.AgentGraph = void 0;
51
+ const crypto_1 = require("crypto");
52
+ const agent_graph_types_1 = require("./agent-graph.types");
53
+ // ---------------------------------------------------------------------------
54
+ // AgentGraph (builder)
55
+ // ---------------------------------------------------------------------------
56
+ /**
57
+ * Fluent builder for constructing a multi-agent graph.
58
+ * Call `.compile()` to get an executable `CompiledGraph`.
59
+ */
60
+ class AgentGraph {
61
+ constructor(graphId, runtime) {
62
+ this.graphId = graphId;
63
+ this.runtime = runtime;
64
+ this.nodes = new Map();
65
+ this.edges = [];
66
+ // Register the sentinel END node
67
+ this.nodes.set(agent_graph_types_1.END, { id: agent_graph_types_1.END, config: { type: 'function', fn: (s) => s } });
68
+ }
69
+ // -------------------------------------------------------------------------
70
+ // Nodes
71
+ // -------------------------------------------------------------------------
72
+ /**
73
+ * Add a node to the graph.
74
+ *
75
+ * Node types:
76
+ * - `'agent'` — runs a named agent via AgentRuntime
77
+ * - `'function'` — runs an arbitrary async function
78
+ * - `'parallel'` — fans-out to multiple child nodes concurrently
79
+ */
80
+ addNode(id, config) {
81
+ if (id === agent_graph_types_1.END) {
82
+ throw new Error(`"${agent_graph_types_1.END}" is a reserved node ID`);
83
+ }
84
+ if (this.nodes.has(id)) {
85
+ throw new Error(`Node "${id}" is already registered in graph "${this.graphId}"`);
86
+ }
87
+ this.nodes.set(id, { id, config });
88
+ return this;
89
+ }
90
+ // -------------------------------------------------------------------------
91
+ // Edges
92
+ // -------------------------------------------------------------------------
93
+ /**
94
+ * Add an unconditional directed edge from `from` → `to`.
95
+ * Use `END` as the target to terminate the graph.
96
+ */
97
+ addEdge(from, to) {
98
+ this.edges.push({ from, to });
99
+ return this;
100
+ }
101
+ /**
102
+ * Add a conditional edge from `from`.
103
+ * The `routerFn` inspects the current `GraphState` and returns the ID of
104
+ * the next node (or `END` to stop).
105
+ *
106
+ * @param routeMap Optional mapping of routerFn return values to node IDs,
107
+ * so you can use short keys like `'code'` → `'CoderNode'`.
108
+ */
109
+ addConditionalEdge(from, routerFn, routeMap) {
110
+ const condition = routeMap
111
+ ? (state) => {
112
+ const key = routerFn(state);
113
+ return routeMap[key] ?? key;
114
+ }
115
+ : routerFn;
116
+ this.edges.push({ from, condition });
117
+ return this;
118
+ }
119
+ /** Set the node where graph execution begins */
120
+ setEntryPoint(nodeId) {
121
+ this.entryPoint = nodeId;
122
+ return this;
123
+ }
124
+ // -------------------------------------------------------------------------
125
+ // Compile
126
+ // -------------------------------------------------------------------------
127
+ /**
128
+ * Validate the graph and return an executable `CompiledGraph`.
129
+ * Throws if the graph is malformed (missing entry point, dangling edges, etc.)
130
+ */
131
+ compile() {
132
+ if (!this.entryPoint) {
133
+ throw new Error(`Graph "${this.graphId}" has no entry point. Call setEntryPoint() first.`);
134
+ }
135
+ if (!this.nodes.has(this.entryPoint)) {
136
+ throw new Error(`Entry point "${this.entryPoint}" is not a registered node in graph "${this.graphId}"`);
137
+ }
138
+ // Validate all edge references
139
+ for (const edge of this.edges) {
140
+ if (!this.nodes.has(edge.from)) {
141
+ throw new Error(`Edge references unknown source node: "${edge.from}"`);
142
+ }
143
+ if (edge.to && edge.to !== agent_graph_types_1.END && !this.nodes.has(edge.to)) {
144
+ throw new Error(`Edge references unknown target node: "${edge.to}"`);
145
+ }
146
+ }
147
+ // Validate parallel branch references
148
+ for (const [, node] of this.nodes) {
149
+ if (node.config.type === 'parallel') {
150
+ for (const branch of node.config.branches) {
151
+ if (!this.nodes.has(branch)) {
152
+ throw new Error(`Parallel node "${node.id}" references unknown branch node: "${branch}"`);
153
+ }
154
+ }
155
+ }
156
+ }
157
+ return new CompiledGraph(this.graphId, new Map(this.nodes), [...this.edges], this.entryPoint, this.runtime);
158
+ }
159
+ }
160
+ exports.AgentGraph = AgentGraph;
161
+ // ---------------------------------------------------------------------------
162
+ // CompiledGraph (executor)
163
+ // ---------------------------------------------------------------------------
164
+ /**
165
+ * Executable graph produced by `AgentGraph.compile()`.
166
+ */
167
+ class CompiledGraph {
168
+ constructor(graphId, nodes, edges, entryPoint, runtime) {
169
+ this.graphId = graphId;
170
+ this.nodes = nodes;
171
+ this.edges = edges;
172
+ this.entryPoint = entryPoint;
173
+ this.runtime = runtime;
174
+ }
175
+ // -------------------------------------------------------------------------
176
+ // execute()
177
+ // -------------------------------------------------------------------------
178
+ /**
179
+ * Execute the graph synchronously (collects all results before returning).
180
+ */
181
+ async execute(input, options = {}) {
182
+ const executionId = `graph_${(0, crypto_1.randomUUID)()}`;
183
+ const startTime = Date.now();
184
+ const steps = [];
185
+ const nodeExecutions = {};
186
+ let state = {
187
+ input,
188
+ messages: [{ role: 'user', content: input, timestamp: new Date() }],
189
+ data: { ...(options.initialData ?? {}) },
190
+ nodeResults: {},
191
+ metadata: { executionId, graphId: this.graphId, ...options },
192
+ };
193
+ const maxSteps = options.maxSteps ?? 50;
194
+ const timeout = options.timeout ?? 600000;
195
+ const deadline = Date.now() + timeout;
196
+ let currentNodeId = this.entryPoint;
197
+ let stepCount = 0;
198
+ try {
199
+ while (currentNodeId !== agent_graph_types_1.END) {
200
+ if (Date.now() > deadline) {
201
+ throw new Error(`Graph "${this.graphId}" exceeded timeout of ${timeout}ms after ${stepCount} steps`);
202
+ }
203
+ if (stepCount >= maxSteps) {
204
+ throw new Error(`Graph "${this.graphId}" exceeded maxSteps (${maxSteps}). Possible infinite loop.`);
205
+ }
206
+ stepCount++;
207
+ const node = this.nodes.get(currentNodeId);
208
+ if (!node) {
209
+ throw new Error(`Node "${currentNodeId}" not found in graph "${this.graphId}"`);
210
+ }
211
+ state = { ...state, currentNode: currentNodeId };
212
+ const stepStart = Date.now();
213
+ const { nextState, agentResult, parallelBranches } = await this.executeNode(node, state, options);
214
+ state = nextState;
215
+ if (agentResult) {
216
+ nodeExecutions[currentNodeId] = agentResult;
217
+ state = { ...state, nodeResults: { ...state.nodeResults, [currentNodeId]: agentResult } };
218
+ }
219
+ steps.push({
220
+ id: `step_${stepCount}`,
221
+ nodeId: currentNodeId,
222
+ nodeType: node.config.type,
223
+ input: state.input,
224
+ output: state.output,
225
+ duration: Date.now() - stepStart,
226
+ timestamp: new Date(),
227
+ parallelBranches,
228
+ });
229
+ currentNodeId = this.resolveNextNode(currentNodeId, state);
230
+ }
231
+ return {
232
+ graphId: this.graphId,
233
+ executionId,
234
+ state,
235
+ response: state.output,
236
+ steps,
237
+ nodeExecutions,
238
+ duration: Date.now() - startTime,
239
+ completedAt: new Date(),
240
+ success: true,
241
+ };
242
+ }
243
+ catch (error) {
244
+ return {
245
+ graphId: this.graphId,
246
+ executionId,
247
+ state: { ...state, error: error },
248
+ steps,
249
+ nodeExecutions,
250
+ duration: Date.now() - startTime,
251
+ completedAt: new Date(),
252
+ success: false,
253
+ error: error,
254
+ };
255
+ }
256
+ }
257
+ // -------------------------------------------------------------------------
258
+ // stream()
259
+ // -------------------------------------------------------------------------
260
+ /**
261
+ * Execute the graph and yield a `GraphStreamChunk` after each node completes.
262
+ * Useful for streaming progress updates to the client in real-time.
263
+ *
264
+ * @example
265
+ * ```ts
266
+ * for await (const chunk of graph.stream('Research LLMs')) {
267
+ * console.log(`[${chunk.nodeId}]`, chunk.chunk);
268
+ * }
269
+ * ```
270
+ */
271
+ async *stream(input, options = {}) {
272
+ const executionId = `graph_${(0, crypto_1.randomUUID)()}`;
273
+ const maxSteps = options.maxSteps ?? 50;
274
+ const timeout = options.timeout ?? 600000;
275
+ const deadline = Date.now() + timeout;
276
+ let state = {
277
+ input,
278
+ messages: [{ role: 'user', content: input, timestamp: new Date() }],
279
+ data: { ...(options.initialData ?? {}) },
280
+ nodeResults: {},
281
+ metadata: { executionId, graphId: this.graphId, ...options },
282
+ };
283
+ let currentNodeId = this.entryPoint;
284
+ let stepCount = 0;
285
+ while (currentNodeId !== agent_graph_types_1.END) {
286
+ if (Date.now() > deadline || stepCount >= maxSteps)
287
+ break;
288
+ stepCount++;
289
+ const node = this.nodes.get(currentNodeId);
290
+ if (!node)
291
+ break;
292
+ state = { ...state, currentNode: currentNodeId };
293
+ const { nextState, agentResult, parallelBranches } = await this.executeNode(node, state, options);
294
+ state = nextState;
295
+ if (agentResult) {
296
+ state = {
297
+ ...state,
298
+ nodeResults: { ...state.nodeResults, [currentNodeId]: agentResult },
299
+ };
300
+ }
301
+ yield {
302
+ executionId,
303
+ nodeId: currentNodeId,
304
+ nodeType: node.config.type,
305
+ chunk: state.output ?? '',
306
+ nodeOutput: state.output,
307
+ done: false,
308
+ };
309
+ if (parallelBranches) {
310
+ for (const branch of parallelBranches) {
311
+ yield {
312
+ executionId,
313
+ nodeId: branch,
314
+ nodeType: 'agent',
315
+ chunk: state.nodeResults[branch]?.response ?? '',
316
+ nodeOutput: state.nodeResults[branch]?.response,
317
+ done: false,
318
+ };
319
+ }
320
+ }
321
+ currentNodeId = this.resolveNextNode(currentNodeId, state);
322
+ }
323
+ yield {
324
+ executionId,
325
+ nodeId: currentNodeId === agent_graph_types_1.END ? agent_graph_types_1.END : currentNodeId,
326
+ nodeType: 'function',
327
+ chunk: state.output ?? '',
328
+ nodeOutput: state.output,
329
+ done: true,
330
+ };
331
+ }
332
+ // -------------------------------------------------------------------------
333
+ // Node execution
334
+ // -------------------------------------------------------------------------
335
+ async executeNode(node, state, options) {
336
+ const config = node.config;
337
+ // -- function node --
338
+ if (config.type === 'function') {
339
+ const patch = await config.fn(state);
340
+ return { nextState: this.applyPatch(state, patch) };
341
+ }
342
+ // -- agent node --
343
+ if (config.type === 'agent') {
344
+ const agentInput = config.inputMapper ? config.inputMapper(state) : state.input;
345
+ const result = await this.runtime.execute(config.agentName, agentInput, {
346
+ sessionId: options.sessionId,
347
+ userId: options.userId,
348
+ });
349
+ let patch;
350
+ if (config.outputMapper) {
351
+ patch = config.outputMapper(result, state);
352
+ }
353
+ else {
354
+ const newMessage = {
355
+ role: 'assistant',
356
+ content: result.response ?? '',
357
+ nodeId: node.id,
358
+ timestamp: new Date(),
359
+ };
360
+ patch = {
361
+ output: result.response,
362
+ messages: [...state.messages, newMessage],
363
+ };
364
+ }
365
+ return {
366
+ nextState: this.applyPatch(state, patch),
367
+ agentResult: result,
368
+ };
369
+ }
370
+ // -- parallel node --
371
+ if (config.type === 'parallel') {
372
+ const branchResults = await this.executeParallelBranches(config.branches, state, options);
373
+ // Apply custom merge or default
374
+ let patch;
375
+ if (config.mergeStrategy) {
376
+ patch = config.mergeStrategy(branchResults, state);
377
+ }
378
+ else {
379
+ patch = this.defaultMerge(branchResults, state);
380
+ }
381
+ return {
382
+ nextState: this.applyPatch(state, patch),
383
+ parallelBranches: config.branches,
384
+ };
385
+ }
386
+ return { nextState: state };
387
+ }
388
+ // -------------------------------------------------------------------------
389
+ // Parallel execution helpers
390
+ // -------------------------------------------------------------------------
391
+ async executeParallelBranches(branchIds, state, options) {
392
+ const tasks = branchIds.map(async (nodeId) => {
393
+ const node = this.nodes.get(nodeId);
394
+ if (!node) {
395
+ return { nodeId, state, error: new Error(`Branch node "${nodeId}" not found`) };
396
+ }
397
+ try {
398
+ const { nextState, agentResult } = await this.executeNode(node, state, options);
399
+ return { nodeId, state: nextState, agentResult };
400
+ }
401
+ catch (err) {
402
+ return { nodeId, state, error: err };
403
+ }
404
+ });
405
+ return Promise.all(tasks);
406
+ }
407
+ defaultMerge(results, base) {
408
+ const messages = [...base.messages];
409
+ const nodeResults = { ...base.nodeResults };
410
+ const data = { ...base.data };
411
+ const outputs = [];
412
+ for (const r of results) {
413
+ if (r.agentResult) {
414
+ nodeResults[r.nodeId] = r.agentResult;
415
+ if (r.agentResult.response) {
416
+ outputs.push(`[${r.nodeId}]: ${r.agentResult.response}`);
417
+ messages.push({
418
+ role: 'assistant',
419
+ content: r.agentResult.response,
420
+ nodeId: r.nodeId,
421
+ timestamp: new Date(),
422
+ });
423
+ }
424
+ }
425
+ // Merge data from parallel states (last-write wins for conflicts)
426
+ Object.assign(data, r.state.data);
427
+ }
428
+ return {
429
+ output: outputs.join('\n\n---\n\n'),
430
+ messages,
431
+ nodeResults,
432
+ data,
433
+ };
434
+ }
435
+ // -------------------------------------------------------------------------
436
+ // Edge resolution
437
+ // -------------------------------------------------------------------------
438
+ resolveNextNode(fromNodeId, state) {
439
+ const edge = this.edges.find((e) => e.from === fromNodeId);
440
+ if (!edge)
441
+ return agent_graph_types_1.END;
442
+ if (edge.condition) {
443
+ return edge.condition(state);
444
+ }
445
+ return edge.to ?? agent_graph_types_1.END;
446
+ }
447
+ // -------------------------------------------------------------------------
448
+ // State helpers
449
+ // -------------------------------------------------------------------------
450
+ applyPatch(state, patch) {
451
+ return {
452
+ ...state,
453
+ ...patch,
454
+ // Always deep-merge these collections rather than replacing them
455
+ data: { ...state.data, ...(patch.data ?? {}) },
456
+ nodeResults: { ...state.nodeResults, ...(patch.nodeResults ?? {}) },
457
+ messages: patch.messages ?? state.messages,
458
+ };
459
+ }
460
+ }
461
+ exports.CompiledGraph = CompiledGraph;
462
+ //# sourceMappingURL=agent-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-graph.js","sourceRoot":"","sources":["../../src/graph/agent-graph.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;;;AAEH,mCAAoC;AACpC,2DAa6B;AAc7B,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;;GAGG;AACH,MAAa,UAAU;IAKrB,YACmB,OAAe,EACf,OAAoB;QADpB,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAa;QANtB,UAAK,GAA2B,IAAI,GAAG,EAAE,CAAC;QAC1C,UAAK,GAAgB,EAAE,CAAC;QAOvC,iCAAiC;QACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAG,EAAE,EAAE,EAAE,EAAE,uBAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,4EAA4E;IAC5E,QAAQ;IACR,4EAA4E;IAE5E;;;;;;;OAOG;IACH,OAAO,CAAC,EAAU,EAAE,MAAuB;QACzC,IAAI,EAAE,KAAK,uBAAG,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,IAAI,uBAAG,yBAAyB,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE,qCAAqC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4EAA4E;IAC5E,QAAQ;IACR,4EAA4E;IAE5E;;;OAGG;IACH,OAAO,CAAC,IAAY,EAAE,EAAU;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,kBAAkB,CAChB,IAAY,EACZ,QAAwB,EACxB,QAAiC;QAEjC,MAAM,SAAS,GAAmB,QAAQ;YACxC,CAAC,CAAC,CAAC,KAAK,EAAU,EAAE;gBAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAW,CAAC;gBACtC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;YAC9B,CAAC;YACH,CAAC,CAAC,QAAQ,CAAC;QAEb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gDAAgD;IAChD,aAAa,CAAC,MAAc;QAC1B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4EAA4E;IAC5E,UAAU;IACV,4EAA4E;IAE5E;;;OAGG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,OAAO,mDAAmD,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,gBAAgB,IAAI,CAAC,UAAU,wCAAwC,IAAI,CAAC,OAAO,GAAG,CACvF,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,uBAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC5B,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,EAAE,sCAAsC,MAAM,GAAG,CACzE,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,OAAO,EACZ,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EACf,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;CACF;AAhID,gCAgIC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;GAEG;AACH,MAAa,aAAa;IACxB,YACmB,OAAe,EACf,KAA6B,EAC7B,KAAkB,EAClB,UAAkB,EAClB,OAAoB;QAJpB,YAAO,GAAP,OAAO,CAAQ;QACf,UAAK,GAAL,KAAK,CAAwB;QAC7B,UAAK,GAAL,KAAK,CAAa;QAClB,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAa;IACpC,CAAC;IAEJ,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,UAAiC,EAAE;QAC9D,MAAM,WAAW,GAAG,SAAS,IAAA,mBAAU,GAAE,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAyC,EAAE,CAAC;QAEhE,IAAI,KAAK,GAAe;YACtB,KAAK;YACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;YACnE,IAAI,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE;YACxC,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE;SAC7D,CAAC;QAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAO,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAEtC,IAAI,aAAa,GAAW,IAAI,CAAC,UAAU,CAAC;QAC5C,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,IAAI,CAAC;YACH,OAAO,aAAa,KAAK,uBAAG,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CACb,UAAU,IAAI,CAAC,OAAO,yBAAyB,OAAO,YAAY,SAAS,QAAQ,CACpF,CAAC;gBACJ,CAAC;gBACD,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CACb,UAAU,IAAI,CAAC,OAAO,wBAAwB,QAAQ,4BAA4B,CACnF,CAAC;gBACJ,CAAC;gBAED,SAAS,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,SAAS,aAAa,yBAAyB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBAClF,CAAC;gBAED,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;gBACjD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAE7B,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CACzE,IAAI,EACJ,KAAK,EACL,OAAO,CACR,CAAC;gBACF,KAAK,GAAG,SAAS,CAAC;gBAElB,IAAI,WAAW,EAAE,CAAC;oBAChB,cAAc,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC;oBAC5C,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;gBAC5F,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC;oBACT,EAAE,EAAE,QAAQ,SAAS,EAAE;oBACvB,MAAM,EAAE,aAAa;oBACrB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAChC,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,gBAAgB;iBACjB,CAAC,CAAC;gBAEH,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAC7D,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,WAAW;gBACX,KAAK;gBACL,QAAQ,EAAE,KAAK,CAAC,MAAM;gBACtB,KAAK;gBACL,cAAc;gBACd,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,WAAW;gBACX,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE;gBAC1C,KAAK;gBACL,cAAc;gBACd,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAc;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,WAAW;IACX,4EAA4E;IAE5E;;;;;;;;;;OAUG;IACH,KAAK,CAAC,CAAC,MAAM,CACX,KAAa,EACb,UAAiC,EAAE;QAEnC,MAAM,WAAW,GAAG,SAAS,IAAA,mBAAU,GAAE,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAO,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAEtC,IAAI,KAAK,GAAe;YACtB,KAAK;YACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;YACnE,IAAI,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE;YACxC,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE;SAC7D,CAAC;QAEF,IAAI,aAAa,GAAW,IAAI,CAAC,UAAU,CAAC;QAC5C,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,OAAO,aAAa,KAAK,uBAAG,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,SAAS,IAAI,QAAQ;gBAAE,MAAM;YAE1D,SAAS,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI;gBAAE,MAAM;YAEjB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;YAEjD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CACzE,IAAI,EACJ,KAAK,EACL,OAAO,CACR,CAAC;YACF,KAAK,GAAG,SAAS,CAAC;YAElB,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,GAAG;oBACN,GAAG,KAAK;oBACR,WAAW,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE;iBACpE,CAAC;YACJ,CAAC;YAED,MAAM;gBACJ,WAAW;gBACX,MAAM,EAAE,aAAa;gBACrB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBAC1B,KAAK,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;gBACzB,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,IAAI,EAAE,KAAK;aACZ,CAAC;YAEF,IAAI,gBAAgB,EAAE,CAAC;gBACrB,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;oBACtC,MAAM;wBACJ,WAAW;wBACX,MAAM,EAAE,MAAM;wBACd,QAAQ,EAAE,OAAO;wBACjB,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,IAAI,EAAE;wBAChD,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ;wBAC/C,IAAI,EAAE,KAAK;qBACZ,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM;YACJ,WAAW;YACX,MAAM,EAAE,aAAa,KAAK,uBAAG,CAAC,CAAC,CAAC,uBAAG,CAAC,CAAC,CAAC,aAAa;YACnD,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;YACzB,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAEpE,KAAK,CAAC,WAAW,CACvB,IAAe,EACf,KAAiB,EACjB,OAA8B;QAM9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,sBAAsB;QACtB,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;QACtD,CAAC;QAED,mBAAmB;QACnB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YAEhF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE;gBACtE,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,IAAI,KAA0B,CAAC;YAC/B,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAiB;oBAC/B,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;oBAC9B,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC;gBACF,KAAK,GAAG;oBACN,MAAM,EAAE,MAAM,CAAC,QAAQ;oBACvB,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC;iBAC1C,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;gBACxC,WAAW,EAAE,MAAM;aACpB,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAE1F,gCAAgC;YAChC,IAAI,KAA0B,CAAC;YAC/B,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;gBACxC,gBAAgB,EAAE,MAAM,CAAC,QAAQ;aAClC,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,4EAA4E;IAC5E,6BAA6B;IAC7B,4EAA4E;IAEpE,KAAK,CAAC,uBAAuB,CACnC,SAAmB,EACnB,KAAiB,EACjB,OAA8B;QAE9B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAiC,EAAE;YAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,gBAAgB,MAAM,aAAa,CAAC,EAAE,CAAC;YAClF,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEO,YAAY,CAAC,OAA+B,EAAE,IAAgB;QACpE,MAAM,QAAQ,GAAmB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,WAAW,GAAyC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClF,MAAM,IAAI,GAA4B,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAClB,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;gBACtC,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACzD,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ;wBAC/B,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,SAAS,EAAE,IAAI,IAAI,EAAE;qBACtB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,kEAAkE;YAClE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACnC,QAAQ;YACR,WAAW;YACX,IAAI;SACL,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAEpE,eAAe,CAAC,UAAkB,EAAE,KAAiB;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI;YAAE,OAAO,uBAAG,CAAC;QAEtB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAW,CAAC;QACzC,CAAC;QAED,OAAQ,IAAI,CAAC,EAAa,IAAI,uBAAG,CAAC;IACpC,CAAC;IAED,4EAA4E;IAC5E,gBAAgB;IAChB,4EAA4E;IAEpE,UAAU,CAAC,KAAiB,EAAE,KAA0B;QAC9D,OAAO;YACL,GAAG,KAAK;YACR,GAAG,KAAK;YACR,iEAAiE;YACjE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE;YAC9C,WAAW,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE;YACnE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ;SAC3C,CAAC;IACJ,CAAC;CACF;AA1WD,sCA0WC"}