flowcraft 2.1.0 → 2.1.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.
- package/README.md +51 -5
- package/dist/analysis.d.ts +1 -1
- package/dist/{chunk-CO5BTPKI.js → chunk-3XVVR2SR.js} +14 -7
- package/dist/chunk-3XVVR2SR.js.map +1 -0
- package/dist/{chunk-5ZWYSKMH.js → chunk-4A627Q6L.js} +3 -3
- package/dist/chunk-4A627Q6L.js.map +1 -0
- package/dist/chunk-M2FRTT2K.js +144 -0
- package/dist/chunk-M2FRTT2K.js.map +1 -0
- package/dist/{chunk-UMXW3TCY.js → chunk-NBIRTKZ7.js} +32 -5
- package/dist/chunk-NBIRTKZ7.js.map +1 -0
- package/dist/{chunk-5EHIPX23.js → chunk-O3XD45IL.js} +53 -19
- package/dist/chunk-O3XD45IL.js.map +1 -0
- package/dist/{chunk-5QMPFUKA.js → chunk-U5V5O5MN.js} +11 -2
- package/dist/chunk-U5V5O5MN.js.map +1 -0
- package/dist/context.d.ts +1 -1
- package/dist/evaluator.d.ts +1 -1
- package/dist/flow.d.ts +3 -3
- package/dist/flow.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -6
- package/dist/linter.d.ts +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/node.d.ts +1 -1
- package/dist/node.js +1 -1
- package/dist/runtime/adapter.d.ts +5 -1
- package/dist/runtime/adapter.js +5 -5
- package/dist/runtime/executors.d.ts +1 -1
- package/dist/runtime/executors.js +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +5 -5
- package/dist/runtime/runtime.d.ts +3 -2
- package/dist/runtime/runtime.js +4 -4
- package/dist/runtime/state.d.ts +1 -1
- package/dist/runtime/traverser.d.ts +2 -1
- package/dist/runtime/traverser.js +1 -1
- package/dist/runtime/types.d.ts +2 -1
- package/dist/sanitizer.d.ts +1 -1
- package/dist/serializer.d.ts +1 -1
- package/dist/{types-lG3xCzp_.d.ts → types-CQCe_nBM.d.ts} +8 -0
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chunk-5EHIPX23.js.map +0 -1
- package/dist/chunk-5QMPFUKA.js.map +0 -1
- package/dist/chunk-5ZWYSKMH.js.map +0 -1
- package/dist/chunk-CO5BTPKI.js.map +0 -1
- package/dist/chunk-QRMUKDSP.js +0 -141
- package/dist/chunk-QRMUKDSP.js.map +0 -1
- package/dist/chunk-UMXW3TCY.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime/runtime.ts"],"names":["nodeDef"],"mappings":"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","file":"chunk-CO5BTPKI.js","sourcesContent":["import { analyzeBlueprint } from '../analysis'\nimport { AsyncContextView } from '../context'\nimport { CancelledWorkflowError, FatalNodeExecutionError, NodeExecutionError } from '../errors'\nimport { PropertyEvaluator } from '../evaluator'\nimport { NullLogger } from '../logger'\nimport type { BaseNode } from '../node'\nimport { isNodeClass } from '../node'\nimport { sanitizeBlueprint } from '../sanitizer'\nimport { JsonSerializer } from '../serializer'\nimport type {\n\tContextImplementation,\n\tEdgeDefinition,\n\tIAsyncContext,\n\tIEvaluator,\n\tIEventBus,\n\tILogger,\n\tISerializer,\n\tISyncContext,\n\tMiddleware,\n\tNodeClass,\n\tNodeContext,\n\tNodeDefinition,\n\tNodeFunction,\n\tNodeResult,\n\tRuntimeOptions,\n\tWorkflowBlueprint,\n\tWorkflowResult,\n} from '../types'\nimport type { ExecutionStrategy } from './executors'\nimport { BuiltInNodeExecutor, ClassNodeExecutor, FunctionNodeExecutor } from './executors'\nimport { WorkflowState } from './state'\nimport { GraphTraverser } from './traverser'\nimport type { IRuntime } from './types'\n\nexport class FlowRuntime<TContext extends Record<string, any>, TDependencies extends Record<string, any>>\n\timplements IRuntime<TContext, TDependencies>\n{\n\tprivate registry: Record<string, NodeFunction | NodeClass | typeof BaseNode>\n\tprivate blueprints: Record<string, WorkflowBlueprint>\n\tprivate dependencies: TDependencies\n\tprivate logger: ILogger\n\tprivate eventBus: IEventBus\n\tprivate serializer: ISerializer\n\tprivate middleware: Middleware[]\n\tprivate evaluator: IEvaluator\n\tpublic options: RuntimeOptions<TDependencies>\n\n\tconstructor(options: RuntimeOptions<TDependencies>) {\n\t\tthis.registry = options.registry || {}\n\t\tthis.blueprints = options.blueprints || {}\n\t\tthis.dependencies = options.dependencies || ({} as TDependencies)\n\t\tthis.logger = options.logger || new NullLogger()\n\t\tthis.eventBus = options.eventBus || { emit: () => {} }\n\t\tthis.serializer = options.serializer || new JsonSerializer()\n\t\tthis.middleware = options.middleware || []\n\t\tthis.evaluator = options.evaluator || new PropertyEvaluator()\n\t\tthis.options = options\n\t}\n\n\tasync run(\n\t\tblueprint: WorkflowBlueprint,\n\t\tinitialState: Partial<TContext> | string = {},\n\t\toptions?: {\n\t\t\tfunctionRegistry?: Map<string, any>\n\t\t\tstrict?: boolean\n\t\t\tsignal?: AbortSignal\n\t\t\tconcurrency?: number\n\t\t},\n\t): Promise<WorkflowResult<TContext>> {\n\t\tconst executionId = globalThis.crypto?.randomUUID()\n\t\tconst startTime = Date.now()\n\t\tconst contextData =\n\t\t\ttypeof initialState === 'string' ? (this.serializer.deserialize(initialState) as Partial<TContext>) : initialState\n\t\tblueprint = sanitizeBlueprint(blueprint)\n\t\tconst state = new WorkflowState<TContext>(contextData)\n\n\t\tthis.logger.info(`Starting workflow execution`, {\n\t\t\tblueprintId: blueprint.id,\n\t\t\texecutionId,\n\t\t})\n\n\t\ttry {\n\t\t\tawait this.eventBus.emit('workflow:start', {\n\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\texecutionId,\n\t\t\t})\n\t\t\tconst analysis = analyzeBlueprint(blueprint)\n\t\t\tif (options?.strict && !analysis.isDag) {\n\t\t\t\tthrow new Error(`Workflow '${blueprint.id}' failed strictness check: Cycles are not allowed.`)\n\t\t\t}\n\t\t\tif (!analysis.isDag) {\n\t\t\t\tthis.logger.warn(`Workflow contains cycles`, {\n\t\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\t})\n\t\t\t}\n\t\t\tconst traverser = new GraphTraverser<TContext, TDependencies>(\n\t\t\t\tblueprint,\n\t\t\t\tthis,\n\t\t\t\tstate,\n\t\t\t\toptions?.functionRegistry,\n\t\t\t\texecutionId,\n\t\t\t\toptions?.signal,\n\t\t\t\toptions?.concurrency,\n\t\t\t)\n\t\t\tawait traverser.traverse()\n\t\t\tconst status = state.getStatus(traverser.getAllNodeIds(), traverser.getFallbackNodeIds())\n\t\t\tconst result = state.toResult(this.serializer)\n\t\t\tresult.status = status\n\t\t\tconst duration = Date.now() - startTime\n\t\t\tif (status === 'stalled') {\n\t\t\t\tawait this.eventBus.emit('workflow:stall', {\n\t\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\t\texecutionId,\n\t\t\t\t\tremainingNodes: traverser.getAllNodeIds().size - state.getCompletedNodes().size,\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.logger.info(`Workflow execution completed`, {\n\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\texecutionId,\n\t\t\t\tstatus,\n\t\t\t\tduration,\n\t\t\t\terrors: result.errors?.length || 0,\n\t\t\t})\n\t\t\tawait this.eventBus.emit('workflow:finish', {\n\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\texecutionId,\n\t\t\t\tstatus,\n\t\t\t\terrors: result.errors,\n\t\t\t})\n\t\t\treturn result\n\t\t} catch (error) {\n\t\t\tconst duration = Date.now() - startTime\n\t\t\tif (error instanceof DOMException ? error.name === 'AbortError' : error instanceof CancelledWorkflowError) {\n\t\t\t\tthis.logger.info(`Workflow execution cancelled`, {\n\t\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\t\texecutionId,\n\t\t\t\t\tduration,\n\t\t\t\t})\n\t\t\t\tawait this.eventBus.emit('workflow:finish', {\n\t\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\t\texecutionId,\n\t\t\t\t\tstatus: 'cancelled',\n\t\t\t\t\terror,\n\t\t\t\t})\n\t\t\t\treturn {\n\t\t\t\t\tcontext: {} as TContext,\n\t\t\t\t\tserializedContext: '{}',\n\t\t\t\t\tstatus: 'cancelled',\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.logger.error(`Workflow execution failed`, {\n\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\texecutionId,\n\t\t\t\tduration,\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t})\n\t\t\tthrow error\n\t\t}\n\t}\n\n\tasync executeNode(\n\t\tblueprint: WorkflowBlueprint,\n\t\tnodeId: string,\n\t\tstate: WorkflowState<TContext>,\n\t\tallPredecessors?: Map<string, Set<string>>,\n\t\tfunctionRegistry?: Map<string, any>,\n\t\texecutionId?: string,\n\t\tsignal?: AbortSignal,\n\t): Promise<NodeResult<any, any>> {\n\t\tconst nodeDef = blueprint.nodes.find((n) => n.id === nodeId)\n\t\tif (!nodeDef) {\n\t\t\tthrow new NodeExecutionError(\n\t\t\t\t`Node '${nodeId}' not found in blueprint.`,\n\t\t\t\tnodeId,\n\t\t\t\tblueprint.id,\n\t\t\t\tundefined,\n\t\t\t\texecutionId,\n\t\t\t)\n\t\t}\n\n\t\tconst contextImpl = state.getContext()\n\t\tconst asyncContext: IAsyncContext<TContext> =\n\t\t\tcontextImpl.type === 'sync'\n\t\t\t\t? new AsyncContextView(contextImpl as ISyncContext<TContext>)\n\t\t\t\t: (contextImpl as IAsyncContext<TContext>)\n\t\tconst nodeContext: NodeContext<TContext, TDependencies, any> = {\n\t\t\tcontext: asyncContext,\n\t\t\tinput: await this._resolveNodeInput(nodeDef, asyncContext, allPredecessors),\n\t\t\tparams: nodeDef.params || {},\n\t\t\tdependencies: { ...this.dependencies, logger: this.logger },\n\t\t\tsignal,\n\t\t}\n\n\t\tconst beforeHooks = this.middleware\n\t\t\t.map((m) => m.beforeNode)\n\t\t\t.filter((hook): hook is NonNullable<Middleware['beforeNode']> => !!hook)\n\t\tconst afterHooks = this.middleware\n\t\t\t.map((m) => m.afterNode)\n\t\t\t.filter((hook): hook is NonNullable<Middleware['afterNode']> => !!hook)\n\t\tconst aroundHooks = this.middleware\n\t\t\t.map((m) => m.aroundNode)\n\t\t\t.filter((hook): hook is NonNullable<Middleware['aroundNode']> => !!hook)\n\n\t\tconst executor = this.getExecutor(nodeDef, functionRegistry)\n\t\tconst coreExecution = async (): Promise<NodeResult> => {\n\t\t\tlet result: NodeResult | undefined\n\t\t\tlet error: Error | undefined\n\t\t\ttry {\n\t\t\t\tfor (const hook of beforeHooks) await hook(nodeContext.context, nodeId)\n\t\t\t\tresult = await this.executeWithFallback(\n\t\t\t\t\tblueprint,\n\t\t\t\t\tnodeDef,\n\t\t\t\t\tnodeContext,\n\t\t\t\t\texecutor,\n\t\t\t\t\texecutionId,\n\t\t\t\t\tsignal,\n\t\t\t\t\tstate,\n\t\t\t\t\tfunctionRegistry,\n\t\t\t\t)\n\t\t\t\treturn result\n\t\t\t} catch (e: any) {\n\t\t\t\terror = e\n\t\t\t\tthrow e\n\t\t\t} finally {\n\t\t\t\tfor (const hook of afterHooks) await hook(nodeContext.context, nodeId, result, error)\n\t\t\t}\n\t\t}\n\n\t\tlet executionChain: () => Promise<NodeResult> = coreExecution\n\t\tfor (let i = aroundHooks.length - 1; i >= 0; i--) {\n\t\t\tconst hook = aroundHooks[i]\n\t\t\tconst next = executionChain\n\t\t\texecutionChain = () => hook(nodeContext.context, nodeId, next)\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.eventBus.emit('node:start', {\n\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\tnodeId,\n\t\t\t\texecutionId,\n\t\t\t})\n\t\t\tconst result = await executionChain()\n\t\t\tawait this.eventBus.emit('node:finish', {\n\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\tnodeId,\n\t\t\t\tresult,\n\t\t\t\texecutionId,\n\t\t\t})\n\t\t\treturn result\n\t\t} catch (error: any) {\n\t\t\tawait this.eventBus.emit('node:error', {\n\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\tnodeId,\n\t\t\t\terror,\n\t\t\t\texecutionId,\n\t\t\t})\n\t\t\tif (error instanceof DOMException && error.name === 'AbortError') {\n\t\t\t\tthrow new CancelledWorkflowError('Workflow cancelled')\n\t\t\t}\n\t\t\tthrow error instanceof NodeExecutionError\n\t\t\t\t? error\n\t\t\t\t: new NodeExecutionError(`Node '${nodeId}' failed execution.`, nodeId, blueprint.id, error, executionId)\n\t\t}\n\t}\n\n\tprivate getExecutor(nodeDef: NodeDefinition, functionRegistry?: Map<string, any>): ExecutionStrategy {\n\t\tif (nodeDef.uses.startsWith('batch-') || nodeDef.uses.startsWith('loop-') || nodeDef.uses === 'subflow') {\n\t\t\treturn new BuiltInNodeExecutor((nodeDef, context) => this._executeBuiltInNode(nodeDef, context))\n\t\t}\n\t\tconst implementation = functionRegistry?.get(nodeDef.uses) || this.registry[nodeDef.uses]\n\t\tif (!implementation) {\n\t\t\tthrow new FatalNodeExecutionError(\n\t\t\t\t`Implementation for '${nodeDef.uses}' not found for node '${nodeDef.id}'.`,\n\t\t\t\tnodeDef.id,\n\t\t\t\t'',\n\t\t\t)\n\t\t}\n\t\tconst maxRetries = nodeDef.config?.maxRetries ?? 1\n\t\treturn isNodeClass(implementation)\n\t\t\t? new ClassNodeExecutor(implementation, maxRetries, this.eventBus)\n\t\t\t: new FunctionNodeExecutor(implementation, maxRetries, this.eventBus)\n\t}\n\n\tprivate async executeWithFallback(\n\t\tblueprint: WorkflowBlueprint,\n\t\tnodeDef: NodeDefinition,\n\t\tcontext: NodeContext<TContext, TDependencies, any>,\n\t\texecutor: ExecutionStrategy,\n\t\texecutionId?: string,\n\t\tsignal?: AbortSignal,\n\t\tstate?: WorkflowState<TContext>,\n\t\tfunctionRegistry?: Map<string, any>,\n\t): Promise<NodeResult<any, any>> {\n\t\ttry {\n\t\t\treturn await executor.execute(nodeDef, context, executionId, signal)\n\t\t} catch (error) {\n\t\t\tconst isFatal =\n\t\t\t\terror instanceof FatalNodeExecutionError ||\n\t\t\t\t(error instanceof NodeExecutionError && error.originalError instanceof FatalNodeExecutionError)\n\t\t\tif (isFatal) throw error\n\t\t\tconst fallbackNodeId = nodeDef.config?.fallback\n\t\t\tif (fallbackNodeId && state) {\n\t\t\t\tcontext.dependencies.logger.warn(`Executing fallback for node`, {\n\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\tfallbackNodeId,\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\texecutionId,\n\t\t\t\t})\n\t\t\t\tawait this.eventBus.emit('node:fallback', {\n\t\t\t\t\tblueprintId: blueprint.id,\n\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\texecutionId,\n\t\t\t\t\tfallback: fallbackNodeId,\n\t\t\t\t})\n\t\t\t\tconst fallbackNode = blueprint.nodes.find((n: NodeDefinition) => n.id === fallbackNodeId)\n\t\t\t\tif (!fallbackNode) {\n\t\t\t\t\tthrow new NodeExecutionError(\n\t\t\t\t\t\t`Fallback node '${fallbackNodeId}' not found in blueprint.`,\n\t\t\t\t\t\tnodeDef.id,\n\t\t\t\t\t\tblueprint.id,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\texecutionId,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst fallbackExecutor = this.getExecutor(fallbackNode, functionRegistry)\n\t\t\t\tconst fallbackResult = await fallbackExecutor.execute(fallbackNode, context, executionId, signal)\n\t\t\t\tstate.markFallbackExecuted()\n\t\t\t\tstate.addCompletedNode(fallbackNodeId, fallbackResult.output)\n\t\t\t\tcontext.dependencies.logger.info(`Fallback execution completed`, {\n\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\tfallbackNodeId,\n\t\t\t\t\texecutionId,\n\t\t\t\t})\n\t\t\t\treturn { ...fallbackResult, _fallbackExecuted: true }\n\t\t\t}\n\t\t\tthrow error\n\t\t}\n\t}\n\n\tasync determineNextNodes(\n\t\tblueprint: WorkflowBlueprint,\n\t\tnodeId: string,\n\t\tresult: NodeResult<any, any>,\n\t\tcontext: ContextImplementation<TContext>,\n\t): Promise<{ node: NodeDefinition; edge: EdgeDefinition }[]> {\n\t\tconst outgoingEdges = blueprint.edges.filter((edge) => edge.source === nodeId)\n\t\tconst matched: { node: NodeDefinition; edge: EdgeDefinition }[] = []\n\t\tconst evaluateEdge = async (edge: EdgeDefinition): Promise<boolean> => {\n\t\t\tif (!edge.condition) return true\n\t\t\tconst contextData = context.type === 'sync' ? context.toJSON() : await context.toJSON()\n\t\t\treturn !!this.evaluator.evaluate(edge.condition, {\n\t\t\t\t...contextData,\n\t\t\t\tresult,\n\t\t\t})\n\t\t}\n\t\tif (result.action) {\n\t\t\tconst actionEdges = outgoingEdges.filter((edge) => edge.action === result.action)\n\t\t\tfor (const edge of actionEdges) {\n\t\t\t\tif (await evaluateEdge(edge)) {\n\t\t\t\t\tconst targetNode = blueprint.nodes.find((n) => n.id === edge.target)\n\t\t\t\t\tif (targetNode) matched.push({ node: targetNode, edge })\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (matched.length === 0) {\n\t\t\tconst defaultEdges = outgoingEdges.filter((edge) => !edge.action)\n\t\t\tfor (const edge of defaultEdges) {\n\t\t\t\tif (await evaluateEdge(edge)) {\n\t\t\t\t\tconst targetNode = blueprint.nodes.find((n) => n.id === edge.target)\n\t\t\t\t\tif (targetNode) matched.push({ node: targetNode, edge })\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.logger.debug(`Determined next nodes for ${nodeId}`, {\n\t\t\tmatchedNodes: matched.map((m) => m.node.id),\n\t\t\taction: result.action,\n\t\t})\n\t\treturn matched\n\t}\n\n\tpublic async applyEdgeTransform(\n\t\tedge: EdgeDefinition,\n\t\tsourceResult: NodeResult<any, any>,\n\t\ttargetNode: NodeDefinition,\n\t\tcontext: ContextImplementation<TContext>,\n\t\tallPredecessors?: Map<string, Set<string>>,\n\t): Promise<void> {\n\t\tconst asyncContext = context.type === 'sync' ? new AsyncContextView(context) : context\n\t\tconst finalInput = edge.transform\n\t\t\t? this.evaluator.evaluate(edge.transform, {\n\t\t\t\t\tinput: sourceResult.output,\n\t\t\t\t\tcontext: await asyncContext.toJSON(),\n\t\t\t\t})\n\t\t\t: sourceResult.output\n\t\tconst inputKey = `${targetNode.id}_input`\n\t\tawait asyncContext.set(inputKey as any, finalInput)\n\t\tif (targetNode.config?.joinStrategy === 'any') {\n\t\t\ttargetNode.inputs = inputKey\n\t\t} else if (!targetNode.inputs) {\n\t\t\tconst predecessors = allPredecessors?.get(targetNode.id)\n\t\t\tif (!predecessors || predecessors.size === 1) {\n\t\t\t\ttargetNode.inputs = inputKey\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async _resolveNodeInput(\n\t\tnodeDef: NodeDefinition,\n\t\tcontext: IAsyncContext<TContext>,\n\t\tallPredecessors?: Map<string, Set<string>>,\n\t): Promise<any> {\n\t\tif (nodeDef.inputs) {\n\t\t\tif (typeof nodeDef.inputs === 'string') return await context.get(nodeDef.inputs as any)\n\t\t\tif (typeof nodeDef.inputs === 'object') {\n\t\t\t\tconst input: Record<string, any> = {}\n\t\t\t\tfor (const key in nodeDef.inputs) {\n\t\t\t\t\tconst contextKey = nodeDef.inputs[key]\n\t\t\t\t\tinput[key] = await context.get(contextKey as any)\n\t\t\t\t}\n\t\t\t\treturn input\n\t\t\t}\n\t\t}\n\t\tif (allPredecessors) {\n\t\t\tconst predecessors = allPredecessors.get(nodeDef.id)\n\t\t\tif (predecessors && predecessors.size === 1) {\n\t\t\t\tconst singlePredecessorId = predecessors.values().next().value\n\t\t\t\treturn await context.get(singlePredecessorId as any)\n\t\t\t}\n\t\t}\n\t\treturn undefined\n\t}\n\n\tprotected async _executeBuiltInNode(\n\t\tnodeDef: NodeDefinition,\n\t\tcontextImpl: ContextImplementation<TContext>,\n\t): Promise<NodeResult<any, any>> {\n\t\tconst context = contextImpl.type === 'sync' ? new AsyncContextView(contextImpl) : contextImpl\n\t\tconst { params = {}, id, inputs } = nodeDef\n\t\tswitch (nodeDef.uses) {\n\t\t\tcase 'batch-scatter': {\n\t\t\t\tconst inputArray = (await context.get(inputs as any)) || []\n\t\t\t\tif (!Array.isArray(inputArray)) throw new Error(`Input for batch-scatter node '${id}' must be an array.`)\n\t\t\t\tconst batchId = globalThis.crypto.randomUUID()\n\t\t\t\tconst dynamicNodes: NodeDefinition[] = []\n\t\t\t\tfor (let i = 0; i < inputArray.length; i++) {\n\t\t\t\t\tconst item = inputArray[i]\n\t\t\t\t\tconst itemInputKey = `${id}_${batchId}_item_${i}`\n\t\t\t\t\tawait context.set(itemInputKey as any, item)\n\t\t\t\t\tdynamicNodes.push({\n\t\t\t\t\t\tid: `${params.workerUsesKey}_${batchId}_${i}`,\n\t\t\t\t\t\tuses: params.workerUsesKey,\n\t\t\t\t\t\tinputs: itemInputKey,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tconst gatherNodeId = params.gatherNodeId\n\t\t\t\treturn { dynamicNodes, output: { gatherNodeId } }\n\t\t\t}\n\t\t\tcase 'batch-gather': {\n\t\t\t\treturn { output: {} }\n\t\t\t}\n\t\t\tcase 'loop-controller': {\n\t\t\t\tconst contextData = await context.toJSON()\n\t\t\t\tconst shouldContinue = !!this.evaluator.evaluate(params.condition, contextData)\n\t\t\t\treturn { action: shouldContinue ? 'continue' : 'break' }\n\t\t\t}\n\t\t\tcase 'subflow': {\n\t\t\t\tconst { blueprintId, inputs: inputMapping, outputs: outputMapping } = params\n\t\t\t\tif (!blueprintId)\n\t\t\t\t\tthrow new FatalNodeExecutionError(`Subflow node '${id}' is missing the 'blueprintId' parameter.`, id, '')\n\n\t\t\t\tconst subBlueprint = this.blueprints[blueprintId]\n\t\t\t\tif (!subBlueprint)\n\t\t\t\t\tthrow new FatalNodeExecutionError(\n\t\t\t\t\t\t`Sub-blueprint with ID '${blueprintId}' not found in runtime registry.`,\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t'',\n\t\t\t\t\t)\n\n\t\t\t\tconst subflowInitialContext: Record<string, any> = {}\n\n\t\t\t\tif (inputMapping) {\n\t\t\t\t\tfor (const [targetKey, sourceKey] of Object.entries(inputMapping)) {\n\t\t\t\t\t\tif (await context.has(sourceKey as any)) {\n\t\t\t\t\t\t\tsubflowInitialContext[targetKey] = await context.get(sourceKey as any)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst subflowResult = await this.run(subBlueprint, subflowInitialContext as Partial<TContext>)\n\n\t\t\t\tif (subflowResult.status !== 'completed')\n\t\t\t\t\tthrow new NodeExecutionError(\n\t\t\t\t\t\t`Sub-workflow '${blueprintId}' did not complete successfully. Status: ${subflowResult.status}`,\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tsubBlueprint.id,\n\t\t\t\t\t)\n\n\t\t\t\tif (outputMapping) {\n\t\t\t\t\tfor (const [parentKey, subKey] of Object.entries(outputMapping)) {\n\t\t\t\t\t\tconst subflowFinalContext = subflowResult.context as Record<string, any>\n\t\t\t\t\t\tif (Object.hasOwn(subflowFinalContext, subKey as string)) {\n\t\t\t\t\t\t\tawait context.set(parentKey as any, subflowFinalContext[subKey as string])\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn { output: subflowResult.context }\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tthrow new FatalNodeExecutionError(`Unknown built-in node type: '${nodeDef.uses}'`, id, '')\n\t\t}\n\t}\n}\n"]}
|
package/dist/chunk-QRMUKDSP.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { CancelledWorkflowError, FatalNodeExecutionError } from './chunk-5ZXV3R5D.js';
|
|
2
|
-
|
|
3
|
-
// src/runtime/executors.ts
|
|
4
|
-
var FunctionNodeExecutor = class {
|
|
5
|
-
constructor(implementation, maxRetries, eventBus) {
|
|
6
|
-
this.implementation = implementation;
|
|
7
|
-
this.maxRetries = maxRetries;
|
|
8
|
-
this.eventBus = eventBus;
|
|
9
|
-
}
|
|
10
|
-
async execute(nodeDef, context, executionId, signal) {
|
|
11
|
-
let lastError;
|
|
12
|
-
for (let attempt = 1; attempt <= this.maxRetries; attempt++) {
|
|
13
|
-
try {
|
|
14
|
-
signal?.throwIfAborted();
|
|
15
|
-
const result = await this.implementation(context);
|
|
16
|
-
if (attempt > 1) {
|
|
17
|
-
context.dependencies.logger.info(`Node execution succeeded after retry`, {
|
|
18
|
-
nodeId: nodeDef.id,
|
|
19
|
-
attempt,
|
|
20
|
-
executionId
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
return result;
|
|
24
|
-
} catch (error) {
|
|
25
|
-
lastError = error;
|
|
26
|
-
if (error instanceof DOMException && error.name === "AbortError") {
|
|
27
|
-
throw new CancelledWorkflowError("Workflow cancelled");
|
|
28
|
-
}
|
|
29
|
-
if (error instanceof FatalNodeExecutionError) break;
|
|
30
|
-
if (attempt < this.maxRetries) {
|
|
31
|
-
context.dependencies.logger.warn(`Node execution failed, retrying`, {
|
|
32
|
-
nodeId: nodeDef.id,
|
|
33
|
-
attempt,
|
|
34
|
-
maxRetries: this.maxRetries,
|
|
35
|
-
error: error instanceof Error ? error.message : String(error),
|
|
36
|
-
executionId
|
|
37
|
-
});
|
|
38
|
-
await this.eventBus.emit("node:retry", {
|
|
39
|
-
blueprintId: context.dependencies.blueprint?.id || "",
|
|
40
|
-
nodeId: nodeDef.id,
|
|
41
|
-
attempt,
|
|
42
|
-
executionId
|
|
43
|
-
});
|
|
44
|
-
} else {
|
|
45
|
-
context.dependencies.logger.error(`Node execution failed after all retries`, {
|
|
46
|
-
nodeId: nodeDef.id,
|
|
47
|
-
attempts: this.maxRetries,
|
|
48
|
-
error: error instanceof Error ? error.message : String(error),
|
|
49
|
-
executionId
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
throw lastError;
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
var ClassNodeExecutor = class {
|
|
58
|
-
constructor(implementation, maxRetries, eventBus) {
|
|
59
|
-
this.implementation = implementation;
|
|
60
|
-
this.maxRetries = maxRetries;
|
|
61
|
-
this.eventBus = eventBus;
|
|
62
|
-
}
|
|
63
|
-
async execute(nodeDef, context, executionId, signal) {
|
|
64
|
-
const instance = new this.implementation(nodeDef.params || {});
|
|
65
|
-
try {
|
|
66
|
-
signal?.throwIfAborted();
|
|
67
|
-
const prepResult = await instance.prep(context);
|
|
68
|
-
let execResult;
|
|
69
|
-
let lastError;
|
|
70
|
-
for (let attempt = 1; attempt <= this.maxRetries; attempt++) {
|
|
71
|
-
try {
|
|
72
|
-
signal?.throwIfAborted();
|
|
73
|
-
execResult = await instance.exec(prepResult, context);
|
|
74
|
-
lastError = void 0;
|
|
75
|
-
if (attempt > 1) {
|
|
76
|
-
context.dependencies.logger.info(`Node execution succeeded after retry`, {
|
|
77
|
-
nodeId: nodeDef.id,
|
|
78
|
-
attempt,
|
|
79
|
-
executionId
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
break;
|
|
83
|
-
} catch (error) {
|
|
84
|
-
lastError = error;
|
|
85
|
-
if (error instanceof DOMException && error.name === "AbortError") {
|
|
86
|
-
throw new CancelledWorkflowError("Workflow cancelled");
|
|
87
|
-
}
|
|
88
|
-
if (error instanceof FatalNodeExecutionError) break;
|
|
89
|
-
if (attempt < this.maxRetries) {
|
|
90
|
-
context.dependencies.logger.warn(`Node execution failed, retrying`, {
|
|
91
|
-
nodeId: nodeDef.id,
|
|
92
|
-
attempt,
|
|
93
|
-
maxRetries: this.maxRetries,
|
|
94
|
-
error: error instanceof Error ? error.message : String(error),
|
|
95
|
-
executionId
|
|
96
|
-
});
|
|
97
|
-
await this.eventBus.emit("node:retry", {
|
|
98
|
-
blueprintId: context.dependencies.blueprint?.id || "",
|
|
99
|
-
nodeId: nodeDef.id,
|
|
100
|
-
attempt,
|
|
101
|
-
executionId
|
|
102
|
-
});
|
|
103
|
-
} else {
|
|
104
|
-
context.dependencies.logger.error(`Node execution failed after all retries`, {
|
|
105
|
-
nodeId: nodeDef.id,
|
|
106
|
-
attempts: this.maxRetries,
|
|
107
|
-
error: error instanceof Error ? error.message : String(error),
|
|
108
|
-
executionId
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
if (lastError) {
|
|
114
|
-
signal?.throwIfAborted();
|
|
115
|
-
execResult = await instance.fallback(lastError, context);
|
|
116
|
-
}
|
|
117
|
-
signal?.throwIfAborted();
|
|
118
|
-
if (!execResult) {
|
|
119
|
-
throw new Error("Execution failed after all retries");
|
|
120
|
-
}
|
|
121
|
-
return await instance.post(execResult, context);
|
|
122
|
-
} catch (error) {
|
|
123
|
-
if (error instanceof DOMException && error.name === "AbortError") {
|
|
124
|
-
throw new CancelledWorkflowError("Workflow cancelled");
|
|
125
|
-
}
|
|
126
|
-
throw error;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
var BuiltInNodeExecutor = class {
|
|
131
|
-
constructor(executeBuiltIn) {
|
|
132
|
-
this.executeBuiltIn = executeBuiltIn;
|
|
133
|
-
}
|
|
134
|
-
async execute(nodeDef, context) {
|
|
135
|
-
return this.executeBuiltIn(nodeDef, context.context);
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
export { BuiltInNodeExecutor, ClassNodeExecutor, FunctionNodeExecutor };
|
|
140
|
-
//# sourceMappingURL=chunk-QRMUKDSP.js.map
|
|
141
|
-
//# sourceMappingURL=chunk-QRMUKDSP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime/executors.ts"],"names":[],"mappings":"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","file":"chunk-QRMUKDSP.js","sourcesContent":["import { CancelledWorkflowError, FatalNodeExecutionError } from '../errors'\nimport type {\n\tContextImplementation,\n\tIEventBus,\n\tNodeClass,\n\tNodeContext,\n\tNodeDefinition,\n\tNodeFunction,\n\tNodeResult,\n} from '../types'\n\nexport interface ExecutionStrategy {\n\texecute: (\n\t\tnodeDef: NodeDefinition,\n\t\tcontext: NodeContext<any, any, any>,\n\t\texecutionId?: string,\n\t\tsignal?: AbortSignal,\n\t) => Promise<NodeResult<any, any>>\n}\n\nexport class FunctionNodeExecutor implements ExecutionStrategy {\n\tconstructor(\n\t\tprivate implementation: NodeFunction,\n\t\tprivate maxRetries: number,\n\t\tprivate eventBus: IEventBus,\n\t) {}\n\n\tasync execute(\n\t\tnodeDef: NodeDefinition,\n\t\tcontext: NodeContext<any, any, any>,\n\t\texecutionId?: string,\n\t\tsignal?: AbortSignal,\n\t): Promise<NodeResult<any, any>> {\n\t\tlet lastError: any\n\t\tfor (let attempt = 1; attempt <= this.maxRetries; attempt++) {\n\t\t\ttry {\n\t\t\t\tsignal?.throwIfAborted()\n\t\t\t\tconst result = await this.implementation(context)\n\t\t\t\tif (attempt > 1) {\n\t\t\t\t\tcontext.dependencies.logger.info(`Node execution succeeded after retry`, {\n\t\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\t\tattempt,\n\t\t\t\t\t\texecutionId,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error\n\t\t\t\tif (error instanceof DOMException && error.name === 'AbortError') {\n\t\t\t\t\tthrow new CancelledWorkflowError('Workflow cancelled')\n\t\t\t\t}\n\t\t\t\tif (error instanceof FatalNodeExecutionError) break\n\t\t\t\tif (attempt < this.maxRetries) {\n\t\t\t\t\tcontext.dependencies.logger.warn(`Node execution failed, retrying`, {\n\t\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\t\tattempt,\n\t\t\t\t\t\tmaxRetries: this.maxRetries,\n\t\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t\texecutionId,\n\t\t\t\t\t})\n\t\t\t\t\tawait this.eventBus.emit('node:retry', {\n\t\t\t\t\t\tblueprintId: context.dependencies.blueprint?.id || '',\n\t\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\t\tattempt,\n\t\t\t\t\t\texecutionId,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tcontext.dependencies.logger.error(`Node execution failed after all retries`, {\n\t\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\t\tattempts: this.maxRetries,\n\t\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t\texecutionId,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow lastError\n\t}\n}\n\nexport class ClassNodeExecutor implements ExecutionStrategy {\n\tconstructor(\n\t\tprivate implementation: NodeClass,\n\t\tprivate maxRetries: number,\n\t\tprivate eventBus: IEventBus,\n\t) {}\n\n\tasync execute(\n\t\tnodeDef: NodeDefinition,\n\t\tcontext: NodeContext<any, any, any>,\n\t\texecutionId?: string,\n\t\tsignal?: AbortSignal,\n\t): Promise<NodeResult<any, any>> {\n\t\tconst instance = new this.implementation(nodeDef.params || {})\n\t\ttry {\n\t\t\tsignal?.throwIfAborted()\n\t\t\tconst prepResult = await instance.prep(context)\n\t\t\tlet execResult: Omit<NodeResult, 'error'> | undefined\n\t\t\tlet lastError: any\n\t\t\tfor (let attempt = 1; attempt <= this.maxRetries; attempt++) {\n\t\t\t\ttry {\n\t\t\t\t\tsignal?.throwIfAborted()\n\t\t\t\t\texecResult = await instance.exec(prepResult, context)\n\t\t\t\t\tlastError = undefined\n\t\t\t\t\tif (attempt > 1) {\n\t\t\t\t\t\tcontext.dependencies.logger.info(`Node execution succeeded after retry`, {\n\t\t\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\t\t\tattempt,\n\t\t\t\t\t\t\texecutionId,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlastError = error\n\t\t\t\t\tif (error instanceof DOMException && error.name === 'AbortError') {\n\t\t\t\t\t\tthrow new CancelledWorkflowError('Workflow cancelled')\n\t\t\t\t\t}\n\t\t\t\t\tif (error instanceof FatalNodeExecutionError) break\n\t\t\t\t\tif (attempt < this.maxRetries) {\n\t\t\t\t\t\tcontext.dependencies.logger.warn(`Node execution failed, retrying`, {\n\t\t\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\t\t\tattempt,\n\t\t\t\t\t\t\tmaxRetries: this.maxRetries,\n\t\t\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t\t\texecutionId,\n\t\t\t\t\t\t})\n\t\t\t\t\t\tawait this.eventBus.emit('node:retry', {\n\t\t\t\t\t\t\tblueprintId: context.dependencies.blueprint?.id || '',\n\t\t\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\t\t\tattempt,\n\t\t\t\t\t\t\texecutionId,\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.dependencies.logger.error(`Node execution failed after all retries`, {\n\t\t\t\t\t\t\tnodeId: nodeDef.id,\n\t\t\t\t\t\t\tattempts: this.maxRetries,\n\t\t\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t\t\texecutionId,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (lastError) {\n\t\t\t\tsignal?.throwIfAborted()\n\t\t\t\texecResult = await instance.fallback(lastError, context)\n\t\t\t}\n\t\t\tsignal?.throwIfAborted()\n\t\t\tif (!execResult) {\n\t\t\t\tthrow new Error('Execution failed after all retries')\n\t\t\t}\n\t\t\treturn await instance.post(execResult, context)\n\t\t} catch (error) {\n\t\t\tif (error instanceof DOMException && error.name === 'AbortError') {\n\t\t\t\tthrow new CancelledWorkflowError('Workflow cancelled')\n\t\t\t}\n\t\t\tthrow error\n\t\t}\n\t}\n}\n\nexport class BuiltInNodeExecutor implements ExecutionStrategy {\n\tconstructor(\n\t\tprivate executeBuiltIn: (\n\t\t\tnodeDef: NodeDefinition,\n\t\t\tcontext: ContextImplementation<any>,\n\t\t) => Promise<NodeResult<any, any>>,\n\t) {}\n\n\tasync execute(\n\t\tnodeDef: NodeDefinition,\n\t\tcontext: NodeContext<Record<string, unknown>, Record<string, unknown>, any>,\n\t): Promise<NodeResult<any, any>> {\n\t\treturn this.executeBuiltIn(nodeDef, context.context as ContextImplementation<any>)\n\t}\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime/traverser.ts"],"names":["nodeId"],"mappings":"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","file":"chunk-UMXW3TCY.js","sourcesContent":["import { analyzeBlueprint } from '../analysis'\nimport { CancelledWorkflowError } from '../errors'\nimport type { NodeResult, WorkflowBlueprint } from '../types'\nimport type { WorkflowState } from './state'\nimport type { IRuntime } from './types'\n\nexport class GraphTraverser<TContext extends Record<string, any>, TDependencies extends Record<string, any>> {\n\tprivate frontier = new Set<string>()\n\tprivate allPredecessors: Map<string, Set<string>>\n\tprivate dynamicBlueprint: WorkflowBlueprint\n\n\tconstructor(\n\t\tblueprint: WorkflowBlueprint,\n\t\tprivate runtime: IRuntime<TContext, TDependencies>,\n\t\tprivate state: WorkflowState<TContext>,\n\t\tprivate functionRegistry: Map<string, any> | undefined,\n\t\tprivate executionId: string,\n\t\tprivate signal?: AbortSignal,\n\t\tprivate concurrency?: number,\n\t) {\n\t\tthis.dynamicBlueprint = structuredClone(blueprint) as WorkflowBlueprint\n\t\tthis.allPredecessors = new Map<string, Set<string>>()\n\t\tfor (const node of this.dynamicBlueprint.nodes) {\n\t\t\tthis.allPredecessors.set(node.id, new Set())\n\t\t}\n\t\tfor (const edge of this.dynamicBlueprint.edges) {\n\t\t\tthis.allPredecessors.get(edge.target)?.add(edge.source)\n\t\t}\n\t\tconst analysis = analyzeBlueprint(blueprint)\n\t\tthis.frontier = new Set(analysis.startNodeIds.filter((id) => !this.isFallbackNode(id)))\n\t\tif (this.frontier.size === 0 && analysis.cycles.length > 0 && this.runtime.options.strict !== true) {\n\t\t\tconst uniqueStartNodes = new Set<string>()\n\t\t\tfor (const cycle of analysis.cycles) {\n\t\t\t\tif (cycle.length > 0) uniqueStartNodes.add(cycle[0])\n\t\t\t}\n\t\t\tthis.frontier = new Set(uniqueStartNodes)\n\t\t}\n\t}\n\n\tprivate isFallbackNode(nodeId: string): boolean {\n\t\treturn this.dynamicBlueprint.nodes.some((n) => n.config?.fallback === nodeId)\n\t}\n\n\tasync traverse(): Promise<void> {\n\t\ttry {\n\t\t\tthis.signal?.throwIfAborted()\n\t\t} catch (error) {\n\t\t\tif (error instanceof DOMException && error.name === 'AbortError')\n\t\t\t\tthrow new CancelledWorkflowError('Workflow cancelled')\n\t\t\tthrow error\n\t\t}\n\t\tlet iterations = 0\n\t\tconst maxIterations = 10000\n\t\twhile (this.frontier.size > 0) {\n\t\t\tif (++iterations > maxIterations) throw new Error('Traversal exceeded maximum iterations, possible infinite loop')\n\n\t\t\ttry {\n\t\t\t\tthis.signal?.throwIfAborted()\n\t\t\t\tconst currentJobs = Array.from(this.frontier)\n\t\t\t\tthis.frontier.clear()\n\t\t\t\tconst settledResults = await this.executeWithConcurrency(currentJobs)\n\t\t\t\tconst completedThisTurn = new Set<string>()\n\t\t\t\tfor (const promiseResult of settledResults) {\n\t\t\t\t\tif (promiseResult.status === 'rejected') {\n\t\t\t\t\t\tconst { nodeId, error } = promiseResult.reason\n\t\t\t\t\t\tif (error instanceof CancelledWorkflowError) throw error\n\t\t\t\t\t\tthis.state.addError(nodeId, error as Error)\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tconst { nodeId, result } = promiseResult.value\n\t\t\t\t\tthis.state.addCompletedNode(nodeId, result.output)\n\t\t\t\t\tcompletedThisTurn.add(nodeId)\n\t\t\t\t\tif (result._fallbackExecuted) this.state.markFallbackExecuted()\n\t\t\t\t\tawait this.handleDynamicNodes(nodeId, result)\n\t\t\t\t\tif (!result._fallbackExecuted) {\n\t\t\t\t\t\tconst matched = await this.runtime.determineNextNodes(\n\t\t\t\t\t\t\tthis.dynamicBlueprint,\n\t\t\t\t\t\t\tnodeId,\n\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\tthis.state.getContext(),\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\t// If one of the next nodes is a loop controller, prioritize it to avoid ambiguity from manual cycle edges.\n\t\t\t\t\t\tconst loopControllerMatch = matched.find((m) => m.node.uses === 'loop-controller')\n\t\t\t\t\t\tconst finalMatched = loopControllerMatch ? [loopControllerMatch] : matched\n\n\t\t\t\t\t\tfor (const { node, edge } of finalMatched) {\n\t\t\t\t\t\t\tconst joinStrategy = node.config?.joinStrategy || 'all'\n\t\t\t\t\t\t\tif (joinStrategy !== 'any' && this.state.getCompletedNodes().has(node.id)) continue\n\t\t\t\t\t\t\tawait this.runtime.applyEdgeTransform(edge, result, node, this.state.getContext(), this.allPredecessors)\n\t\t\t\t\t\t\tconst requiredPredecessors = this.allPredecessors.get(node.id)\n\t\t\t\t\t\t\tif (!requiredPredecessors) continue\n\t\t\t\t\t\t\tconst isReady =\n\t\t\t\t\t\t\t\tjoinStrategy === 'any'\n\t\t\t\t\t\t\t\t\t? [...requiredPredecessors].some((p) => completedThisTurn.has(p))\n\t\t\t\t\t\t\t\t\t: [...requiredPredecessors].every((p) => this.state.getCompletedNodes().has(p))\n\t\t\t\t\t\t\tif (isReady) this.frontier.add(node.id)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (matched.length === 0) {\n\t\t\t\t\t\t\tfor (const [potentialNextId, predecessors] of this.allPredecessors) {\n\t\t\t\t\t\t\t\tif (predecessors.has(nodeId) && !this.state.getCompletedNodes().has(potentialNextId)) {\n\t\t\t\t\t\t\t\t\tconst joinStrategy =\n\t\t\t\t\t\t\t\t\t\tthis.dynamicBlueprint.nodes.find((n) => n.id === potentialNextId)?.config?.joinStrategy || 'all'\n\t\t\t\t\t\t\t\t\tconst isReady =\n\t\t\t\t\t\t\t\t\t\tjoinStrategy === 'any'\n\t\t\t\t\t\t\t\t\t\t\t? [...predecessors].some((p) => completedThisTurn.has(p))\n\t\t\t\t\t\t\t\t\t\t\t: [...predecessors].every((p) => this.state.getCompletedNodes().has(p))\n\t\t\t\t\t\t\t\t\tif (isReady) this.frontier.add(potentialNextId)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof DOMException && error.name === 'AbortError') {\n\t\t\t\t\tthrow new CancelledWorkflowError('Workflow cancelled')\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async executeWithConcurrency(\n\t\tnodeIds: string[],\n\t): Promise<\n\t\tArray<\n\t\t\t| { status: 'fulfilled'; value: { nodeId: string; result: NodeResult<any, any> } }\n\t\t\t| { status: 'rejected'; reason: { nodeId: string; error: unknown } }\n\t\t>\n\t> {\n\t\tconst maxConcurrency = this.concurrency || nodeIds.length\n\t\tconst results: Array<\n\t\t\t| { status: 'fulfilled'; value: { nodeId: string; result: NodeResult<any, any> } }\n\t\t\t| { status: 'rejected'; reason: { nodeId: string; error: unknown } }\n\t\t> = []\n\n\t\tfor (let i = 0; i < nodeIds.length; i += maxConcurrency) {\n\t\t\tconst batch = nodeIds.slice(i, i + maxConcurrency)\n\t\t\tconst batchPromises = batch.map(async (nodeId) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await this.runtime.executeNode(\n\t\t\t\t\t\tthis.dynamicBlueprint,\n\t\t\t\t\t\tnodeId,\n\t\t\t\t\t\tthis.state,\n\t\t\t\t\t\tthis.allPredecessors,\n\t\t\t\t\t\tthis.functionRegistry,\n\t\t\t\t\t\tthis.executionId,\n\t\t\t\t\t\tthis.signal,\n\t\t\t\t\t)\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tstatus: 'fulfilled' as const,\n\t\t\t\t\t\tvalue: { nodeId, result },\n\t\t\t\t\t})\n\t\t\t\t} catch (error) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tstatus: 'rejected' as const,\n\t\t\t\t\t\treason: { nodeId, error },\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tawait Promise.all(batchPromises)\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async handleDynamicNodes(nodeId: string, result: NodeResult<any, any>) {\n\t\tif (result.dynamicNodes && result.dynamicNodes.length > 0) {\n\t\t\tconst gatherNodeId = result.output?.gatherNodeId\n\t\t\tfor (const dynamicNode of result.dynamicNodes) {\n\t\t\t\tthis.dynamicBlueprint.nodes.push(dynamicNode)\n\t\t\t\tthis.allPredecessors.set(dynamicNode.id, new Set([nodeId]))\n\t\t\t\tif (gatherNodeId) {\n\t\t\t\t\tthis.allPredecessors.get(gatherNodeId)?.add(dynamicNode.id)\n\t\t\t\t}\n\t\t\t\tthis.frontier.add(dynamicNode.id)\n\t\t\t}\n\t\t}\n\t}\n\n\tgetAllNodeIds(): Set<string> {\n\t\treturn new Set(this.dynamicBlueprint.nodes.map((n) => n.id))\n\t}\n\n\tgetFallbackNodeIds(): Set<string> {\n\t\tconst fallbackNodeIds = new Set<string>()\n\t\tfor (const node of this.dynamicBlueprint.nodes) {\n\t\t\tif (node.config?.fallback) fallbackNodeIds.add(node.config.fallback)\n\t\t}\n\t\treturn fallbackNodeIds\n\t}\n\n\tgetDynamicBlueprint(): WorkflowBlueprint {\n\t\treturn this.dynamicBlueprint\n\t}\n}\n"]}
|