@arc-dev/runtime
Advanced tools
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.cjs","sources":["../src/nodes.ts","../src/executor.ts","../../arc-storage/dist/index.js","../src/runtime.ts"],"sourcesContent":["import {\n ArcNode,\n ArcState,\n ArcNodeKind,\n ImmutableMap,\n ArcEvent,\n} from \"@arc-dev/core\";\n\nexport async function* execute<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n>(\n node: ArcNode<State, Context>,\n arcState: ArcState<State, Context>\n): AsyncIterable<ArcEvent<State, Context>> {\n const stateContext = arcState.getStateContext();\n const models = arcState.getModels();\n\n switch (node.kind) {\n case ArcNodeKind.Agent: {\n const agent = node.handler;\n yield* agent.run(stateContext, node.id, models);\n\n const pendingContext = (stateContext as any).__pendingContext;\n if (pendingContext) {\n arcState.setContext(pendingContext.nodeId, pendingContext.result);\n delete (stateContext as any).__pendingContext;\n }\n\n break;\n }\n case ArcNodeKind.Action: {\n const action = node.handler;\n yield* action.run(stateContext, node.id, models);\n\n const pendingState = (stateContext as any).__pendingState;\n\n if (pendingState) {\n arcState.setState(pendingState);\n delete (stateContext as any).__pendingState;\n }\n\n break;\n }\n case ArcNodeKind.Arc: {\n arcState.setContext(node.id, ImmutableMap({ executed: true }));\n break;\n }\n }\n}\n","import {\n Arc,\n ArcStateContext,\n ArcEdge,\n ArcNodeKind,\n ArcEvent,\n ArcState,\n} from \"@arc-dev/core\";\nimport { execute } from \"./nodes\";\nimport { Storage } from \"@arc-dev/storage\";\n\nconst buildDependencyMap = (\n nodes: Array<{ id: string }>,\n edges: ArcEdge[]\n): Map<string, string[]> => {\n const deps = new Map<string, string[]>();\n\n for (const node of nodes) {\n deps.set(node.id, []);\n }\n\n for (const edge of edges) {\n if (!edge.from || edge.from === edge.to) {\n continue;\n }\n const currentDeps = deps.get(edge.to) || [];\n currentDeps.push(edge.from);\n deps.set(edge.to, currentDeps);\n }\n\n return deps;\n};\n\nconst getEdgeConditions = (\n nodeId: string,\n edges: ArcEdge[],\n conditions: Map<string, (sc: ArcStateContext<any, any>) => boolean>\n): Array<(sc: ArcStateContext<any, any>) => boolean> => {\n const edgeConditions: Array<(sc: ArcStateContext<any, any>) => boolean> = [];\n\n for (const edge of edges) {\n if (edge.to === nodeId && edge.from && edge.from !== edge.to) {\n if (edge.when) {\n edgeConditions.push(edge.when);\n } else if (edge.condition && conditions.has(edge.condition)) {\n const conditionFn = conditions.get(edge.condition)!;\n edgeConditions.push(conditionFn);\n }\n }\n }\n\n return edgeConditions;\n};\n\nconst getWaitingEdges = (nodeId: string, edges: ArcEdge[]): ArcEdge[] => {\n return edges.filter(\n (edge) =>\n edge.to === nodeId && (!edge.from || edge.from !== edge.to) && edge.wait\n );\n};\n\nconst getLoopEdge = (nodeId: string, edges: ArcEdge[]): ArcEdge | null => {\n for (const edge of edges) {\n if (edge.from === nodeId && edge.to === nodeId) {\n return edge;\n }\n }\n return null;\n};\n\nexport async function* executeArc<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n>(\n arc: Arc<State, Context>,\n arcState: ArcState<State, Context>,\n resumeResolvers: Map<string, (value: any) => void>,\n initialExecuted?: Set<string>,\n storage?: Storage,\n sessionId?: string,\n parentArc?: Arc<any, any>,\n parentLoopNodeId?: string,\n parentExecutedNodes?: Set<string>,\n serverless?: boolean\n): AsyncIterable<ArcEvent<State, Context>> {\n const executed = initialExecuted\n ? new Set(initialExecuted)\n : new Set<string>();\n let changed = true;\n\n const dependencyMap = buildDependencyMap(arc.nodes, arc.edges);\n\n while (changed) {\n changed = false;\n\n for (const node of arc.nodes) {\n if (executed.has(node.id)) continue;\n\n const deps = dependencyMap.get(node.id) || [];\n const depsDone = deps.every((d: string) => executed.has(d));\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\": deps=${JSON.stringify(deps)}, depsDone=${depsDone}`,\n timestamp: Date.now(),\n };\n\n if (!depsDone) {\n continue;\n }\n\n const stateContext = arcState.getStateContext();\n\n const edgeConditions = getEdgeConditions(\n node.id,\n arc.edges,\n arc.conditions\n );\n\n if (edgeConditions.length > 0) {\n const allConditionsMet = edgeConditions.every((condFn) => {\n try {\n return condFn(stateContext);\n } catch (e) {\n return false;\n }\n });\n\n if (!allConditionsMet) {\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Skipping node \"${node.id}\" due to edge condition(s)`,\n timestamp: Date.now(),\n };\n executed.add(node.id);\n changed = true;\n continue;\n }\n }\n\n const waitingEdges = getWaitingEdges(node.id, arc.edges);\n\n if (waitingEdges.length > 0) {\n const firstWaitingEdge = waitingEdges[0];\n const inputKey = firstWaitingEdge?.wait?.id || node.id;\n\n const edgeContext = arcState.getEdgeContext();\n const hasInput = edgeContext.has(inputKey);\n\n if (hasInput) {\n const inputValue = edgeContext.get(inputKey);\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\" has waiting edge(s) but input already provided (${inputValue}), continuing execution`,\n timestamp: Date.now(),\n };\n } else {\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\" has ${waitingEdges.length} waiting edge(s)`,\n timestamp: Date.now(),\n };\n\n for (const edge of waitingEdges) {\n if (edge.wait) {\n const { message, id: waitInputId } = edge.wait;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Pausing execution at node \"${node.id}\" waiting for input on edge ${edge.from || \"entry\"} -> ${edge.to}`,\n timestamp: Date.now(),\n };\n\n // Use sessionId if available, otherwise fall back to nodeId for same-instance resume\n const resolverKey = sessionId || node.id;\n const resumePromise = new Promise<any>((resolve) => {\n resumeResolvers.set(resolverKey, resolve);\n });\n\n // If storage is provided, store execution state\n // If this is a sub-arc, store both the sub-arc and parent arc so we can continue the loop\n if (storage && sessionId) {\n await storage.store(sessionId, {\n arc, // Store the current arc (sub-arc if in a loop)\n snapshot: {\n executed: Array.from(executed),\n ...arcState.serialize(),\n },\n nodeId: node.id,\n waitInputId: waitInputId || undefined, // Store wait input ID if specified\n parentArc: parentArc || undefined, // Store parent arc if this is a sub-arc\n parentLoopNodeId: parentLoopNodeId || undefined, // Store loop node ID\n parentExecutedNodes: parentExecutedNodes\n ? Array.from(parentExecutedNodes)\n : undefined, // Store parent's executed set if this is a sub-arc\n });\n }\n\n // Emit node-paused with state - platforms handle validation themselves\n yield {\n type: \"node-paused\" as const,\n nodeId: node.id,\n prompt: message,\n state: stateContext.state.toJS() as State,\n context: stateContext.context.toJS() as Context,\n timestamp: Date.now(),\n sessionId: sessionId,\n snapshot: storage\n ? undefined // Don't include in event if using storage\n : {\n executed: Array.from(executed),\n ...arcState.serialize(),\n },\n };\n\n // In serverless environments (e.g., Cloudflare Workers), we must end the stream\n // after emitting the pause event to avoid hanging the request.\n // The client will need to call /resume to continue execution.\n if (serverless) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Pausing execution in serverless mode. Use /resume endpoint to continue.`,\n timestamp: Date.now(),\n };\n return; // End the generator, allowing the Worker to complete\n }\n\n // For in-process resumption (long-running environments), wait for the promise\n const result = await resumePromise;\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Resumed with input for node ${node.id}`,\n timestamp: Date.now(),\n };\n\n // Convert result to string for edge input (maintaining compatibility)\n const inputValue =\n typeof result === \"string\" ? result : JSON.stringify(result);\n // Use wait input ID if specified, otherwise fall back to node ID for backward compatibility\n const inputKey = waitInputId || node.id;\n arcState.setEdgeContext(inputKey, inputValue);\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Input received on edge ${edge.from || \"entry\"} -> ${edge.to}`,\n timestamp: Date.now(),\n };\n }\n }\n }\n }\n\n const loopEdge = getLoopEdge(node.id, arc.edges);\n\n if (loopEdge && node.kind === ArcNodeKind.Arc && node.handler.arc) {\n const subArc = node.handler.arc;\n const maxIterations = loopEdge.maxIterations || 100;\n let iteration = 0;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Starting loop \"${node.id}\" (max ${maxIterations} iterations)`,\n timestamp: Date.now(),\n };\n\n while (iteration < maxIterations) {\n const stateContext = arcState.getStateContext();\n\n let shouldContinue = true;\n\n if (loopEdge.when) {\n try {\n shouldContinue = loopEdge.when(stateContext);\n } catch (e) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: e instanceof Error ? e : new Error(String(e)),\n timestamp: Date.now(),\n };\n break;\n }\n } else if (\n loopEdge.condition &&\n arc.conditions.has(loopEdge.condition)\n ) {\n const conditionFn = arc.conditions.get(loopEdge.condition)!;\n try {\n shouldContinue = conditionFn(stateContext);\n } catch (e) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: e instanceof Error ? e : new Error(String(e)),\n timestamp: Date.now(),\n };\n break;\n }\n }\n\n if (!shouldContinue) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Loop \"${node.id}\" condition failed after ${iteration} iterations`,\n timestamp: Date.now(),\n };\n // Clear storage entry if loop completed naturally (not paused)\n // This ensures that when the executor finishes, the runtime knows the arc is done\n if (storage && sessionId) {\n await storage.delete(sessionId);\n }\n break;\n }\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Loop \"${node.id}\" iteration ${iteration + 1}`,\n timestamp: Date.now(),\n };\n\n const parentExecutedNodesSet = new Set(executed);\n\n yield* executeArc(\n subArc,\n arcState,\n resumeResolvers,\n undefined,\n storage,\n sessionId,\n arc,\n node.id,\n parentExecutedNodesSet,\n serverless\n );\n\n // In serverless mode, check if execution was paused\n // If the session still exists in storage, it means we paused\n if (serverless && storage && sessionId) {\n const storedSession = await storage.get(sessionId);\n if (storedSession) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Loop \"${node.id}\" paused in serverless mode at iteration ${iteration + 1}`,\n timestamp: Date.now(),\n };\n // Return early to end the stream and allow the Worker to complete\n return;\n }\n }\n\n iteration++;\n }\n\n if (iteration >= maxIterations) {\n yield {\n type: \"log\" as const,\n level: \"warn\" as const,\n message: `Loop \"${node.id}\" reached max iterations (${maxIterations})`,\n timestamp: Date.now(),\n };\n // Clear storage entry if loop completed due to max iterations (not paused)\n if (storage && sessionId) {\n await storage.delete(sessionId);\n }\n }\n\n executed.add(node.id);\n changed = true;\n } else {\n yield {\n type: \"node-started\" as const,\n nodeId: node.id,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Running node \"${node.id}\" (${node.kind})`,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `About to execute node ${node.id}`,\n timestamp: Date.now(),\n };\n\n try {\n yield* execute(node, arcState);\n } catch (error) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n throw error;\n }\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Finished executing node ${node.id}`,\n timestamp: Date.now(),\n };\n\n const stateContext = arcState.getStateContext();\n\n yield {\n type: \"node-completed\" as const,\n nodeId: node.id,\n state: stateContext.state.toJS() as State,\n context: stateContext.context.toJS() as Context,\n timestamp: Date.now(),\n };\n\n // Clear edge input after node execution if it was set (for waiting edges)\n const waitingEdgesForNode = getWaitingEdges(node.id, arc.edges);\n if (waitingEdgesForNode.length > 0) {\n const firstWaitingEdge = waitingEdgesForNode[0];\n const inputKey = firstWaitingEdge?.wait?.id || node.id;\n const edgeContext = arcState.getEdgeContext();\n if (edgeContext.has(inputKey)) {\n arcState.clearEdgeContext(inputKey);\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Cleared edge input for node \"${node.id}\" after execution`,\n timestamp: Date.now(),\n };\n }\n }\n\n executed.add(node.id);\n\n changed = true;\n }\n }\n }\n}\n","class InMemoryStorage {\n executions = new Map();\n store(sessionId, execution) {\n this.executions.set(sessionId, execution);\n }\n get(sessionId) {\n return this.executions.get(sessionId) || null;\n }\n delete(sessionId) {\n this.executions.delete(sessionId);\n }\n}\n\nexport { InMemoryStorage };\n//# sourceMappingURL=index.js.map\n","import {\n ArcRuntime as ArcRuntimeType,\n Arc,\n ArcState,\n ArcEvent,\n} from \"@arc-dev/core\";\nimport { executeArc } from \"./executor\";\nimport { InMemoryStorage, Storage } from \"@arc-dev/storage\";\nimport { Models, createModels } from \"@arc-dev/model\";\n\nexport interface ArcRuntimeOptions {\n storage?: Storage;\n models?: Models;\n}\n\nexport class ArcRuntime implements ArcRuntimeType {\n protected resumeResolvers: Map<string, (value: any) => void> = new Map();\n protected storage: Storage;\n protected sessionIdGenerator: () => string;\n protected models: Models;\n\n constructor(options?: ArcRuntimeOptions) {\n this.storage = options?.storage || new InMemoryStorage();\n this.sessionIdGenerator = () =>\n `session_${Date.now()}_${Math.random().toString(36).substring(7)}`;\n\n if (options?.models) {\n this.models = options.models;\n } else {\n let apiKey = \"\";\n if (typeof globalThis !== \"undefined\") {\n const nodeProcess = (globalThis as any).process;\n apiKey = nodeProcess?.env?.OPENAI_API_KEY || \"\";\n if (!apiKey) {\n apiKey = (globalThis as any).OPENAI_API_KEY || \"\";\n }\n }\n\n if (!apiKey) {\n throw new Error(\n \"Models require an API key. Provide models via ArcRuntimeOptions or set OPENAI_API_KEY environment variable.\"\n );\n }\n\n this.models = createModels({ apiKey });\n }\n }\n\n async resume<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input: any): Promise<string | void> {\n const resolver = this.resumeResolvers.get(sessionId);\n\n if (resolver) {\n resolver(input);\n this.resumeResolvers.delete(sessionId);\n return;\n }\n\n const stored = this.storage.get(sessionId);\n const storedExecution = stored instanceof Promise ? await stored : stored;\n\n if (storedExecution) {\n storedExecution.pendingInput = input;\n\n const storeResult = this.storage.store(sessionId, storedExecution);\n if (storeResult instanceof Promise) {\n await storeResult;\n }\n\n return sessionId;\n }\n\n return sessionId;\n }\n\n async *resumeFromSession<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input?: any): AsyncIterable<ArcEvent<State, Context>> {\n if (this.resumeResolvers.has(sessionId)) {\n this.resumeResolvers.delete(sessionId);\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Cleared existing resolver for session ${sessionId} before resuming`,\n timestamp: Date.now(),\n };\n }\n\n const stored = await this.storage.get(sessionId);\n\n if (!stored) {\n yield {\n type: \"arc-error\" as const,\n arcId: \"unknown\",\n error: new Error(`Session ${sessionId} not found or expired`),\n timestamp: Date.now(),\n };\n return;\n }\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Resuming session ${sessionId}, paused at node \"${stored.nodeId}\", arc: \"${stored.arc.id}\", has parent: ${!!stored.parentArc}`,\n timestamp: Date.now(),\n };\n\n const arcState = ArcState.fromSerialized<State, Context>(\n stored.snapshot,\n this.models\n );\n\n const resumeInput = input !== undefined ? input : stored.pendingInput;\n\n if (resumeInput === undefined) {\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: new Error(`No input provided for session ${sessionId}`),\n timestamp: Date.now(),\n };\n return;\n }\n\n const inputValue =\n typeof resumeInput === \"string\"\n ? resumeInput\n : JSON.stringify(resumeInput);\n\n // Use wait input ID if specified, otherwise fall back to node ID for backward compatibility\n const inputKey = stored.waitInputId || stored.nodeId;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Setting edge input for node \"${stored.nodeId}\" with key \"${inputKey}\" and value: ${inputValue}`,\n timestamp: Date.now(),\n };\n\n arcState.setEdgeContext(inputKey, inputValue);\n\n try {\n yield* executeArc(\n stored.arc,\n arcState,\n this.resumeResolvers,\n new Set(stored.snapshot.executed),\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n\n if (stored.parentArc && stored.parentLoopNodeId) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Sub-arc completed, continuing parent arc \"${stored.parentArc.id}\" loop \"${stored.parentLoopNodeId}\"`,\n timestamp: Date.now(),\n };\n\n const parentExecutedNodes = stored.parentExecutedNodes\n ? new Set(stored.parentExecutedNodes)\n : new Set<string>();\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Continuing parent arc with executed nodes: [${Array.from(parentExecutedNodes).join(\", \")}]`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n stored.parentArc,\n arcState,\n this.resumeResolvers,\n parentExecutedNodes,\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n }\n\n const stillPaused = await this.storage.get(sessionId);\n if (!stillPaused) {\n await this.storage.delete(sessionId);\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: stored.arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${stored.arc.id}\" completed`,\n timestamp: Date.now(),\n };\n }\n } catch (error) {\n await this.storage.delete(sessionId);\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n\n async *run<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n arc: Arc<State, Context>,\n state: State,\n sessionId?: string\n ): AsyncIterable<ArcEvent<State, Context>> {\n const arcState = new ArcState<State, Context>(state, this.models);\n const execSessionId = sessionId || this.sessionIdGenerator();\n\n try {\n yield {\n type: \"arc-started\" as const,\n arcId: arc.id,\n initialState: state,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" started`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n arc,\n arcState,\n this.resumeResolvers,\n undefined,\n this.storage,\n execSessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" completed`,\n timestamp: Date.now(),\n };\n\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n } catch (error) {\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n yield {\n type: \"arc-error\" as const,\n arcId: arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n}\n\nexport class ArcServerlessRuntime extends ArcRuntime {\n async *run<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n arc: Arc<State, Context>,\n state: State,\n sessionId?: string\n ): AsyncIterable<ArcEvent<State, Context>> {\n const arcState = new ArcState<State, Context>(state, this.models);\n const execSessionId = sessionId || this.sessionIdGenerator();\n\n try {\n yield {\n type: \"arc-started\" as const,\n arcId: arc.id,\n initialState: state,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" started (serverless mode)`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n arc,\n arcState,\n this.resumeResolvers,\n undefined,\n this.storage,\n execSessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n\n const storedSession = await this.storage.get(execSessionId);\n if (storedSession) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" paused, session stored for resumption`,\n timestamp: Date.now(),\n };\n return;\n }\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" completed`,\n timestamp: Date.now(),\n };\n\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n } catch (error) {\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n yield {\n type: \"arc-error\" as const,\n arcId: arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n\n async *resumeFromSession<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input?: any): AsyncIterable<ArcEvent<State, Context>> {\n if (this.resumeResolvers.has(sessionId)) {\n this.resumeResolvers.delete(sessionId);\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Cleared existing resolver for session ${sessionId} before resuming`,\n timestamp: Date.now(),\n };\n }\n\n const stored = await this.storage.get(sessionId);\n\n if (!stored) {\n yield {\n type: \"arc-error\" as const,\n arcId: \"unknown\",\n error: new Error(`Session ${sessionId} not found or expired`),\n timestamp: Date.now(),\n };\n return;\n }\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Resuming session ${sessionId} (serverless mode), paused at node \"${stored.nodeId}\", arc: \"${stored.arc.id}\", has parent: ${!!stored.parentArc}`,\n timestamp: Date.now(),\n };\n\n const arcState = ArcState.fromSerialized<State, Context>(\n stored.snapshot,\n this.models\n );\n\n const resumeInput = input !== undefined ? input : stored.pendingInput;\n\n if (resumeInput === undefined) {\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: new Error(`No input provided for session ${sessionId}`),\n timestamp: Date.now(),\n };\n return;\n }\n\n const inputValue =\n typeof resumeInput === \"string\"\n ? resumeInput\n : JSON.stringify(resumeInput);\n\n const inputKey = stored.waitInputId || stored.nodeId;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Setting edge input for node \"${stored.nodeId}\" with key \"${inputKey}\" and value: ${inputValue}`,\n timestamp: Date.now(),\n };\n\n arcState.setEdgeContext(inputKey, inputValue);\n\n try {\n yield* executeArc(\n stored.arc,\n arcState,\n this.resumeResolvers,\n new Set(stored.snapshot.executed),\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n\n if (stored.parentArc && stored.parentLoopNodeId) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Sub-arc completed, continuing parent arc \"${stored.parentArc.id}\" loop \"${stored.parentLoopNodeId}\"`,\n timestamp: Date.now(),\n };\n\n // Use the stored parent executed set to continue from where we left off\n // This ensures we don't restart the parent arc from the beginning\n const parentExecutedNodes = stored.parentExecutedNodes\n ? new Set(stored.parentExecutedNodes)\n : new Set<string>();\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Continuing parent arc with executed nodes: [${Array.from(parentExecutedNodes).join(\", \")}]`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n stored.parentArc,\n arcState,\n this.resumeResolvers,\n parentExecutedNodes,\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n }\n\n const stillPaused = await this.storage.get(sessionId);\n if (!stillPaused) {\n await this.storage.delete(sessionId);\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: stored.arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${stored.arc.id}\" completed`,\n timestamp: Date.now(),\n };\n }\n } catch (error) {\n await this.storage.delete(sessionId);\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n}\n"],"names":["ArcNodeKind","ImmutableMap","createModels","ArcState"],"mappings":"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"} | ||
| {"version":3,"file":"index.cjs","sources":["../src/nodes.ts","../src/executor.ts","../../arc-storage/dist/index.js","../src/runtime.ts"],"sourcesContent":["import {\n ArcNode,\n ArcState,\n ArcNodeKind,\n ImmutableMap,\n ArcEvent,\n} from \"@arc-dev/core\";\n\nexport async function* execute<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n>(\n node: ArcNode<State, Context>,\n arcState: ArcState<State, Context>\n): AsyncIterable<ArcEvent<State, Context>> {\n const stateContext = arcState.getStateContext();\n const models = arcState.getModels();\n\n switch (node.kind) {\n case ArcNodeKind.Agent: {\n const agent = node.handler;\n yield* agent.run(stateContext, node.id, models);\n\n const pendingContext = (stateContext as any).__pendingContext;\n if (pendingContext) {\n arcState.setContext(pendingContext.nodeId, pendingContext.result);\n delete (stateContext as any).__pendingContext;\n }\n\n break;\n }\n case ArcNodeKind.Action: {\n const action = node.handler;\n yield* action.run(stateContext, node.id, models);\n\n const pendingState = (stateContext as any).__pendingState;\n\n if (pendingState) {\n arcState.setState(pendingState);\n delete (stateContext as any).__pendingState;\n }\n\n break;\n }\n case ArcNodeKind.Arc: {\n arcState.setContext(node.id, ImmutableMap({ executed: true }));\n break;\n }\n }\n}\n","import {\n Arc,\n ArcStateContext,\n ArcEdge,\n ArcNodeKind,\n ArcEvent,\n ArcState,\n} from \"@arc-dev/core\";\nimport { execute } from \"./nodes\";\nimport { Storage } from \"@arc-dev/storage\";\n\nconst buildDependencyMap = (\n nodes: Array<{ id: string }>,\n edges: ArcEdge[]\n): Map<string, string[]> => {\n const deps = new Map<string, string[]>();\n\n for (const node of nodes) {\n deps.set(node.id, []);\n }\n\n for (const edge of edges) {\n if (!edge.from || edge.from === edge.to) {\n continue;\n }\n const currentDeps = deps.get(edge.to) || [];\n currentDeps.push(edge.from);\n deps.set(edge.to, currentDeps);\n }\n\n return deps;\n};\n\nconst getEdgeConditions = (\n nodeId: string,\n edges: ArcEdge[],\n conditions: Map<string, (sc: ArcStateContext<any, any>) => boolean>\n): Array<(sc: ArcStateContext<any, any>) => boolean> => {\n const edgeConditions: Array<(sc: ArcStateContext<any, any>) => boolean> = [];\n\n for (const edge of edges) {\n if (edge.to === nodeId && edge.from && edge.from !== edge.to) {\n if (edge.when) {\n edgeConditions.push(edge.when);\n } else if (edge.condition && conditions.has(edge.condition)) {\n const conditionFn = conditions.get(edge.condition)!;\n edgeConditions.push(conditionFn);\n }\n }\n }\n\n return edgeConditions;\n};\n\nconst getWaitingEdges = (nodeId: string, edges: ArcEdge[]): ArcEdge[] => {\n return edges.filter(\n (edge) =>\n edge.to === nodeId && (!edge.from || edge.from !== edge.to) && edge.wait\n );\n};\n\nconst getLoopEdge = (nodeId: string, edges: ArcEdge[]): ArcEdge | null => {\n for (const edge of edges) {\n if (edge.from === nodeId && edge.to === nodeId) {\n return edge;\n }\n }\n return null;\n};\n\nexport async function* executeArc<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n>(\n arc: Arc<State, Context>,\n arcState: ArcState<State, Context>,\n resumeResolvers: Map<string, (value: any) => void>,\n initialExecuted?: Set<string>,\n storage?: Storage,\n sessionId?: string,\n parentArc?: Arc<any, any>,\n parentLoopNodeId?: string,\n parentExecutedNodes?: Set<string>,\n serverless?: boolean\n): AsyncIterable<ArcEvent<State, Context>> {\n const executed = initialExecuted\n ? new Set(initialExecuted)\n : new Set<string>();\n let changed = true;\n\n const dependencyMap = buildDependencyMap(arc.nodes, arc.edges);\n\n while (changed) {\n changed = false;\n\n for (const node of arc.nodes) {\n if (executed.has(node.id)) continue;\n\n const deps = dependencyMap.get(node.id) || [];\n const depsDone = deps.every((d: string) => executed.has(d));\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\": deps=${JSON.stringify(deps)}, depsDone=${depsDone}`,\n timestamp: Date.now(),\n };\n\n if (!depsDone) {\n continue;\n }\n\n const stateContext = arcState.getStateContext();\n\n const edgeConditions = getEdgeConditions(\n node.id,\n arc.edges,\n arc.conditions\n );\n\n if (edgeConditions.length > 0) {\n const allConditionsMet = edgeConditions.every((condFn) => {\n try {\n return condFn(stateContext);\n } catch (e) {\n return false;\n }\n });\n\n if (!allConditionsMet) {\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Skipping node \"${node.id}\" due to edge condition(s)`,\n timestamp: Date.now(),\n };\n executed.add(node.id);\n changed = true;\n continue;\n }\n }\n\n const waitingEdges = getWaitingEdges(node.id, arc.edges);\n\n if (waitingEdges.length > 0) {\n const firstWaitingEdge = waitingEdges[0];\n const inputKey = firstWaitingEdge?.wait?.id || node.id;\n\n const edgeContext = arcState.getEdgeContext();\n const hasInput = edgeContext.has(inputKey);\n\n if (hasInput) {\n const inputValue = edgeContext.get(inputKey);\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\" has waiting edge(s) but input already provided (${inputValue}), continuing execution`,\n timestamp: Date.now(),\n };\n } else {\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\" has ${waitingEdges.length} waiting edge(s)`,\n timestamp: Date.now(),\n };\n\n for (const edge of waitingEdges) {\n if (edge.wait) {\n const { message, id: waitInputId } = edge.wait;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Pausing execution at node \"${node.id}\" waiting for input on edge ${edge.from || \"entry\"} -> ${edge.to}`,\n timestamp: Date.now(),\n };\n\n // Use sessionId if available, otherwise fall back to nodeId for same-instance resume\n const resolverKey = sessionId || node.id;\n const resumePromise = new Promise<any>((resolve) => {\n resumeResolvers.set(resolverKey, resolve);\n });\n\n // If storage is provided, store execution state\n // If this is a sub-arc, store both the sub-arc and parent arc so we can continue the loop\n if (storage && sessionId) {\n await storage.store(sessionId, {\n arc, // Store the current arc (sub-arc if in a loop)\n snapshot: {\n executed: Array.from(executed),\n ...arcState.serialize(),\n },\n nodeId: node.id,\n waitInputId: waitInputId || undefined, // Store wait input ID if specified\n parentArc: parentArc || undefined, // Store parent arc if this is a sub-arc\n parentLoopNodeId: parentLoopNodeId || undefined, // Store loop node ID\n parentExecutedNodes: parentExecutedNodes\n ? Array.from(parentExecutedNodes)\n : undefined, // Store parent's executed set if this is a sub-arc\n });\n }\n\n // Emit node-paused with state - platforms handle validation themselves\n yield {\n type: \"node-paused\" as const,\n nodeId: node.id,\n prompt: message,\n state: stateContext.state.toJS() as State,\n context: stateContext.context.toJS() as Context,\n timestamp: Date.now(),\n sessionId: sessionId,\n snapshot: storage\n ? undefined // Don't include in event if using storage\n : {\n executed: Array.from(executed),\n ...arcState.serialize(),\n },\n };\n\n // In serverless environments (e.g., Cloudflare Workers), we must end the stream\n // after emitting the pause event to avoid hanging the request.\n // The client will need to call /resume to continue execution.\n if (serverless) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Pausing execution in serverless mode. Use /resume endpoint to continue.`,\n timestamp: Date.now(),\n };\n return; // End the generator, allowing the Worker to complete\n }\n\n // For in-process resumption (long-running environments), wait for the promise\n const result = await resumePromise;\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Resumed with input for node ${node.id}`,\n timestamp: Date.now(),\n };\n\n // Convert result to string for edge input (maintaining compatibility)\n const inputValue =\n typeof result === \"string\" ? result : JSON.stringify(result);\n // Use wait input ID if specified, otherwise fall back to node ID for backward compatibility\n const inputKey = waitInputId || node.id;\n arcState.setEdgeContext(inputKey, inputValue);\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Input received on edge ${edge.from || \"entry\"} -> ${edge.to}`,\n timestamp: Date.now(),\n };\n }\n }\n }\n }\n\n const loopEdge = getLoopEdge(node.id, arc.edges);\n\n if (loopEdge && node.kind === ArcNodeKind.Arc && node.handler.arc) {\n const subArc = node.handler.arc;\n const maxIterations = loopEdge.maxIterations || 100;\n let iteration = 0;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Starting loop \"${node.id}\" (max ${maxIterations} iterations)`,\n timestamp: Date.now(),\n };\n\n while (iteration < maxIterations) {\n const stateContext = arcState.getStateContext();\n\n let shouldContinue = true;\n\n if (loopEdge.when) {\n try {\n shouldContinue = loopEdge.when(stateContext);\n } catch (e) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: e instanceof Error ? e : new Error(String(e)),\n timestamp: Date.now(),\n };\n break;\n }\n } else if (\n loopEdge.condition &&\n arc.conditions.has(loopEdge.condition)\n ) {\n const conditionFn = arc.conditions.get(loopEdge.condition)!;\n try {\n shouldContinue = conditionFn(stateContext);\n } catch (e) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: e instanceof Error ? e : new Error(String(e)),\n timestamp: Date.now(),\n };\n break;\n }\n }\n\n if (!shouldContinue) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Loop \"${node.id}\" condition failed after ${iteration} iterations`,\n timestamp: Date.now(),\n };\n // Clear storage entry if loop completed naturally (not paused)\n // This ensures that when the executor finishes, the runtime knows the arc is done\n if (storage && sessionId) {\n await storage.delete(sessionId);\n }\n break;\n }\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Loop \"${node.id}\" iteration ${iteration + 1}`,\n timestamp: Date.now(),\n };\n\n const parentExecutedNodesSet = new Set(executed);\n\n yield* executeArc(\n subArc,\n arcState,\n resumeResolvers,\n undefined,\n storage,\n sessionId,\n arc,\n node.id,\n parentExecutedNodesSet,\n serverless\n );\n\n // In serverless mode, check if execution was paused\n // If the session still exists in storage, it means we paused\n if (serverless && storage && sessionId) {\n const storedSession = await storage.get(sessionId);\n if (storedSession) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Loop \"${node.id}\" paused in serverless mode at iteration ${iteration + 1}`,\n timestamp: Date.now(),\n };\n // Return early to end the stream and allow the Worker to complete\n return;\n }\n }\n\n iteration++;\n }\n\n if (iteration >= maxIterations) {\n yield {\n type: \"log\" as const,\n level: \"warn\" as const,\n message: `Loop \"${node.id}\" reached max iterations (${maxIterations})`,\n timestamp: Date.now(),\n };\n // Clear storage entry if loop completed due to max iterations (not paused)\n if (storage && sessionId) {\n await storage.delete(sessionId);\n }\n }\n\n executed.add(node.id);\n changed = true;\n } else {\n yield {\n type: \"node-started\" as const,\n nodeId: node.id,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Running node \"${node.id}\" (${node.kind})`,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `About to execute node ${node.id}`,\n timestamp: Date.now(),\n };\n\n try {\n yield* execute(node, arcState);\n } catch (error) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n throw error;\n }\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Finished executing node ${node.id}`,\n timestamp: Date.now(),\n };\n\n const stateContext = arcState.getStateContext();\n\n yield {\n type: \"node-completed\" as const,\n nodeId: node.id,\n state: stateContext.state.toJS() as State,\n context: stateContext.context.toJS() as Context,\n timestamp: Date.now(),\n };\n\n // Clear edge input after node execution if it was set (for waiting edges)\n const waitingEdgesForNode = getWaitingEdges(node.id, arc.edges);\n if (waitingEdgesForNode.length > 0) {\n const firstWaitingEdge = waitingEdgesForNode[0];\n const inputKey = firstWaitingEdge?.wait?.id || node.id;\n const edgeContext = arcState.getEdgeContext();\n if (edgeContext.has(inputKey)) {\n arcState.clearEdgeContext(inputKey);\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Cleared edge input for node \"${node.id}\" after execution`,\n timestamp: Date.now(),\n };\n }\n }\n\n executed.add(node.id);\n\n changed = true;\n }\n }\n }\n}\n","class InMemoryStorage {\n executions = new Map();\n store(sessionId, execution) {\n this.executions.set(sessionId, execution);\n }\n get(sessionId) {\n return this.executions.get(sessionId) || null;\n }\n delete(sessionId) {\n this.executions.delete(sessionId);\n }\n}\n\n/**\n * Storage implementation using Cloudflare KV\n *\n * @example\n * ```typescript\n * // In your Cloudflare Worker\n * import { CloudflareKVStorage } from '@arc-dev/storage';\n *\n * export default {\n * async fetch(request: Request, env: { ARC_KV: KVNamespace }) {\n * const storage = new CloudflareKVStorage(env.ARC_KV);\n * // Use storage with ARC runtime\n * }\n * }\n * ```\n */\nclass CloudflareKVStorage {\n kv;\n constructor(kv) {\n this.kv = kv;\n }\n async store(sessionId, execution) {\n // Serialize the execution data to JSON\n const data = JSON.stringify(execution, (key, value) => {\n // Handle functions and other non-serializable types\n if (typeof value === \"function\") {\n return undefined;\n }\n return value;\n });\n // Store in KV with optional expiration (e.g., 24 hours)\n await this.kv.put(sessionId, data);\n }\n async get(sessionId) {\n const data = await this.kv.get(sessionId, \"text\");\n if (!data) {\n return null;\n }\n try {\n return JSON.parse(data);\n }\n catch (error) {\n console.error(`Failed to parse stored execution for session ${sessionId}:`, error);\n return null;\n }\n }\n async delete(sessionId) {\n await this.kv.delete(sessionId);\n }\n}\n/**\n * Configurable CloudflareKV storage with TTL and key prefix support\n *\n * @example\n * ```typescript\n * const storage = new ConfigurableCloudflareKVStorage({\n * kv: env.ARC_KV,\n * expirationTtl: 3600, // 1 hour\n * keyPrefix: 'arc:sessions:',\n * });\n * ```\n */\nclass ConfigurableCloudflareKVStorage {\n kv;\n expirationTtl;\n keyPrefix;\n constructor(options) {\n this.kv = options.kv;\n this.expirationTtl = options.expirationTtl ?? 86400;\n this.keyPrefix = options.keyPrefix ?? \"\";\n }\n getKey(sessionId) {\n return `${this.keyPrefix}${sessionId}`;\n }\n async store(sessionId, execution) {\n const data = JSON.stringify(execution, (key, value) => {\n if (typeof value === \"function\") {\n return undefined;\n }\n return value;\n });\n await this.kv.put(this.getKey(sessionId), data, {\n expirationTtl: this.expirationTtl,\n });\n }\n async get(sessionId) {\n const data = await this.kv.get(this.getKey(sessionId), \"text\");\n if (!data) {\n return null;\n }\n try {\n return JSON.parse(data);\n }\n catch (error) {\n console.error(`Failed to parse stored execution for session ${sessionId}:`, error);\n return null;\n }\n }\n async delete(sessionId) {\n await this.kv.delete(this.getKey(sessionId));\n }\n}\n\nexport { CloudflareKVStorage, ConfigurableCloudflareKVStorage, InMemoryStorage };\n//# sourceMappingURL=index.js.map\n","import {\n ArcRuntime as ArcRuntimeType,\n Arc,\n ArcState,\n ArcEvent,\n} from \"@arc-dev/core\";\nimport { executeArc } from \"./executor\";\nimport { InMemoryStorage, Storage } from \"@arc-dev/storage\";\nimport { Models, createModels } from \"@arc-dev/model\";\n\nexport interface ArcRuntimeOptions {\n storage?: Storage;\n models?: Models;\n}\n\nexport class ArcRuntime implements ArcRuntimeType {\n protected resumeResolvers: Map<string, (value: any) => void> = new Map();\n protected storage: Storage;\n protected sessionIdGenerator: () => string;\n protected models: Models;\n\n constructor(options?: ArcRuntimeOptions) {\n this.storage = options?.storage || new InMemoryStorage();\n this.sessionIdGenerator = () =>\n `session_${Date.now()}_${Math.random().toString(36).substring(7)}`;\n\n if (options?.models) {\n this.models = options.models;\n } else {\n let apiKey = \"\";\n if (typeof globalThis !== \"undefined\") {\n const nodeProcess = (globalThis as any).process;\n apiKey = nodeProcess?.env?.OPENAI_API_KEY || \"\";\n if (!apiKey) {\n apiKey = (globalThis as any).OPENAI_API_KEY || \"\";\n }\n }\n\n if (!apiKey) {\n throw new Error(\n \"Models require an API key. Provide models via ArcRuntimeOptions or set OPENAI_API_KEY environment variable.\"\n );\n }\n\n this.models = createModels({ apiKey });\n }\n }\n\n async resume<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input: any): Promise<string | void> {\n const resolver = this.resumeResolvers.get(sessionId);\n\n if (resolver) {\n resolver(input);\n this.resumeResolvers.delete(sessionId);\n return;\n }\n\n const stored = this.storage.get(sessionId);\n const storedExecution = stored instanceof Promise ? await stored : stored;\n\n if (storedExecution) {\n storedExecution.pendingInput = input;\n\n const storeResult = this.storage.store(sessionId, storedExecution);\n if (storeResult instanceof Promise) {\n await storeResult;\n }\n\n return sessionId;\n }\n\n return sessionId;\n }\n\n async *resumeFromSession<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input?: any): AsyncIterable<ArcEvent<State, Context>> {\n if (this.resumeResolvers.has(sessionId)) {\n this.resumeResolvers.delete(sessionId);\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Cleared existing resolver for session ${sessionId} before resuming`,\n timestamp: Date.now(),\n };\n }\n\n const stored = await this.storage.get(sessionId);\n\n if (!stored) {\n yield {\n type: \"arc-error\" as const,\n arcId: \"unknown\",\n error: new Error(`Session ${sessionId} not found or expired`),\n timestamp: Date.now(),\n };\n return;\n }\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Resuming session ${sessionId}, paused at node \"${stored.nodeId}\", arc: \"${stored.arc.id}\", has parent: ${!!stored.parentArc}`,\n timestamp: Date.now(),\n };\n\n const arcState = ArcState.fromSerialized<State, Context>(\n stored.snapshot,\n this.models\n );\n\n const resumeInput = input !== undefined ? input : stored.pendingInput;\n\n if (resumeInput === undefined) {\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: new Error(`No input provided for session ${sessionId}`),\n timestamp: Date.now(),\n };\n return;\n }\n\n const inputValue =\n typeof resumeInput === \"string\"\n ? resumeInput\n : JSON.stringify(resumeInput);\n\n // Use wait input ID if specified, otherwise fall back to node ID for backward compatibility\n const inputKey = stored.waitInputId || stored.nodeId;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Setting edge input for node \"${stored.nodeId}\" with key \"${inputKey}\" and value: ${inputValue}`,\n timestamp: Date.now(),\n };\n\n arcState.setEdgeContext(inputKey, inputValue);\n\n try {\n yield* executeArc(\n stored.arc,\n arcState,\n this.resumeResolvers,\n new Set(stored.snapshot.executed),\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n\n if (stored.parentArc && stored.parentLoopNodeId) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Sub-arc completed, continuing parent arc \"${stored.parentArc.id}\" loop \"${stored.parentLoopNodeId}\"`,\n timestamp: Date.now(),\n };\n\n const parentExecutedNodes = stored.parentExecutedNodes\n ? new Set(stored.parentExecutedNodes)\n : new Set<string>();\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Continuing parent arc with executed nodes: [${Array.from(parentExecutedNodes).join(\", \")}]`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n stored.parentArc,\n arcState,\n this.resumeResolvers,\n parentExecutedNodes,\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n }\n\n const stillPaused = await this.storage.get(sessionId);\n if (!stillPaused) {\n await this.storage.delete(sessionId);\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: stored.arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${stored.arc.id}\" completed`,\n timestamp: Date.now(),\n };\n }\n } catch (error) {\n await this.storage.delete(sessionId);\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n\n async *run<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n arc: Arc<State, Context>,\n state: State,\n sessionId?: string\n ): AsyncIterable<ArcEvent<State, Context>> {\n const arcState = new ArcState<State, Context>(state, this.models);\n const execSessionId = sessionId || this.sessionIdGenerator();\n\n try {\n yield {\n type: \"arc-started\" as const,\n arcId: arc.id,\n initialState: state,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" started`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n arc,\n arcState,\n this.resumeResolvers,\n undefined,\n this.storage,\n execSessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" completed`,\n timestamp: Date.now(),\n };\n\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n } catch (error) {\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n yield {\n type: \"arc-error\" as const,\n arcId: arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n}\n\nexport class ArcServerlessRuntime extends ArcRuntime {\n async *run<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n arc: Arc<State, Context>,\n state: State,\n sessionId?: string\n ): AsyncIterable<ArcEvent<State, Context>> {\n const arcState = new ArcState<State, Context>(state, this.models);\n const execSessionId = sessionId || this.sessionIdGenerator();\n\n try {\n yield {\n type: \"arc-started\" as const,\n arcId: arc.id,\n initialState: state,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" started (serverless mode)`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n arc,\n arcState,\n this.resumeResolvers,\n undefined,\n this.storage,\n execSessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n\n const storedSession = await this.storage.get(execSessionId);\n if (storedSession) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" paused, session stored for resumption`,\n timestamp: Date.now(),\n };\n return;\n }\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" completed`,\n timestamp: Date.now(),\n };\n\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n } catch (error) {\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n yield {\n type: \"arc-error\" as const,\n arcId: arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n\n async *resumeFromSession<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input?: any): AsyncIterable<ArcEvent<State, Context>> {\n if (this.resumeResolvers.has(sessionId)) {\n this.resumeResolvers.delete(sessionId);\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Cleared existing resolver for session ${sessionId} before resuming`,\n timestamp: Date.now(),\n };\n }\n\n const stored = await this.storage.get(sessionId);\n\n if (!stored) {\n yield {\n type: \"arc-error\" as const,\n arcId: \"unknown\",\n error: new Error(`Session ${sessionId} not found or expired`),\n timestamp: Date.now(),\n };\n return;\n }\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Resuming session ${sessionId} (serverless mode), paused at node \"${stored.nodeId}\", arc: \"${stored.arc.id}\", has parent: ${!!stored.parentArc}`,\n timestamp: Date.now(),\n };\n\n const arcState = ArcState.fromSerialized<State, Context>(\n stored.snapshot,\n this.models\n );\n\n const resumeInput = input !== undefined ? input : stored.pendingInput;\n\n if (resumeInput === undefined) {\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: new Error(`No input provided for session ${sessionId}`),\n timestamp: Date.now(),\n };\n return;\n }\n\n const inputValue =\n typeof resumeInput === \"string\"\n ? resumeInput\n : JSON.stringify(resumeInput);\n\n const inputKey = stored.waitInputId || stored.nodeId;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Setting edge input for node \"${stored.nodeId}\" with key \"${inputKey}\" and value: ${inputValue}`,\n timestamp: Date.now(),\n };\n\n arcState.setEdgeContext(inputKey, inputValue);\n\n try {\n yield* executeArc(\n stored.arc,\n arcState,\n this.resumeResolvers,\n new Set(stored.snapshot.executed),\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n\n if (stored.parentArc && stored.parentLoopNodeId) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Sub-arc completed, continuing parent arc \"${stored.parentArc.id}\" loop \"${stored.parentLoopNodeId}\"`,\n timestamp: Date.now(),\n };\n\n // Use the stored parent executed set to continue from where we left off\n // This ensures we don't restart the parent arc from the beginning\n const parentExecutedNodes = stored.parentExecutedNodes\n ? new Set(stored.parentExecutedNodes)\n : new Set<string>();\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Continuing parent arc with executed nodes: [${Array.from(parentExecutedNodes).join(\", \")}]`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n stored.parentArc,\n arcState,\n this.resumeResolvers,\n parentExecutedNodes,\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n }\n\n const stillPaused = await this.storage.get(sessionId);\n if (!stillPaused) {\n await this.storage.delete(sessionId);\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: stored.arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${stored.arc.id}\" completed`,\n timestamp: Date.now(),\n };\n }\n } catch (error) {\n await this.storage.delete(sessionId);\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n}\n"],"names":["ArcNodeKind","ImmutableMap","createModels","ArcState"],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/nodes.ts","../src/executor.ts","../../arc-storage/dist/index.js","../src/runtime.ts"],"sourcesContent":["import {\n ArcNode,\n ArcState,\n ArcNodeKind,\n ImmutableMap,\n ArcEvent,\n} from \"@arc-dev/core\";\n\nexport async function* execute<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n>(\n node: ArcNode<State, Context>,\n arcState: ArcState<State, Context>\n): AsyncIterable<ArcEvent<State, Context>> {\n const stateContext = arcState.getStateContext();\n const models = arcState.getModels();\n\n switch (node.kind) {\n case ArcNodeKind.Agent: {\n const agent = node.handler;\n yield* agent.run(stateContext, node.id, models);\n\n const pendingContext = (stateContext as any).__pendingContext;\n if (pendingContext) {\n arcState.setContext(pendingContext.nodeId, pendingContext.result);\n delete (stateContext as any).__pendingContext;\n }\n\n break;\n }\n case ArcNodeKind.Action: {\n const action = node.handler;\n yield* action.run(stateContext, node.id, models);\n\n const pendingState = (stateContext as any).__pendingState;\n\n if (pendingState) {\n arcState.setState(pendingState);\n delete (stateContext as any).__pendingState;\n }\n\n break;\n }\n case ArcNodeKind.Arc: {\n arcState.setContext(node.id, ImmutableMap({ executed: true }));\n break;\n }\n }\n}\n","import {\n Arc,\n ArcStateContext,\n ArcEdge,\n ArcNodeKind,\n ArcEvent,\n ArcState,\n} from \"@arc-dev/core\";\nimport { execute } from \"./nodes\";\nimport { Storage } from \"@arc-dev/storage\";\n\nconst buildDependencyMap = (\n nodes: Array<{ id: string }>,\n edges: ArcEdge[]\n): Map<string, string[]> => {\n const deps = new Map<string, string[]>();\n\n for (const node of nodes) {\n deps.set(node.id, []);\n }\n\n for (const edge of edges) {\n if (!edge.from || edge.from === edge.to) {\n continue;\n }\n const currentDeps = deps.get(edge.to) || [];\n currentDeps.push(edge.from);\n deps.set(edge.to, currentDeps);\n }\n\n return deps;\n};\n\nconst getEdgeConditions = (\n nodeId: string,\n edges: ArcEdge[],\n conditions: Map<string, (sc: ArcStateContext<any, any>) => boolean>\n): Array<(sc: ArcStateContext<any, any>) => boolean> => {\n const edgeConditions: Array<(sc: ArcStateContext<any, any>) => boolean> = [];\n\n for (const edge of edges) {\n if (edge.to === nodeId && edge.from && edge.from !== edge.to) {\n if (edge.when) {\n edgeConditions.push(edge.when);\n } else if (edge.condition && conditions.has(edge.condition)) {\n const conditionFn = conditions.get(edge.condition)!;\n edgeConditions.push(conditionFn);\n }\n }\n }\n\n return edgeConditions;\n};\n\nconst getWaitingEdges = (nodeId: string, edges: ArcEdge[]): ArcEdge[] => {\n return edges.filter(\n (edge) =>\n edge.to === nodeId && (!edge.from || edge.from !== edge.to) && edge.wait\n );\n};\n\nconst getLoopEdge = (nodeId: string, edges: ArcEdge[]): ArcEdge | null => {\n for (const edge of edges) {\n if (edge.from === nodeId && edge.to === nodeId) {\n return edge;\n }\n }\n return null;\n};\n\nexport async function* executeArc<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n>(\n arc: Arc<State, Context>,\n arcState: ArcState<State, Context>,\n resumeResolvers: Map<string, (value: any) => void>,\n initialExecuted?: Set<string>,\n storage?: Storage,\n sessionId?: string,\n parentArc?: Arc<any, any>,\n parentLoopNodeId?: string,\n parentExecutedNodes?: Set<string>,\n serverless?: boolean\n): AsyncIterable<ArcEvent<State, Context>> {\n const executed = initialExecuted\n ? new Set(initialExecuted)\n : new Set<string>();\n let changed = true;\n\n const dependencyMap = buildDependencyMap(arc.nodes, arc.edges);\n\n while (changed) {\n changed = false;\n\n for (const node of arc.nodes) {\n if (executed.has(node.id)) continue;\n\n const deps = dependencyMap.get(node.id) || [];\n const depsDone = deps.every((d: string) => executed.has(d));\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\": deps=${JSON.stringify(deps)}, depsDone=${depsDone}`,\n timestamp: Date.now(),\n };\n\n if (!depsDone) {\n continue;\n }\n\n const stateContext = arcState.getStateContext();\n\n const edgeConditions = getEdgeConditions(\n node.id,\n arc.edges,\n arc.conditions\n );\n\n if (edgeConditions.length > 0) {\n const allConditionsMet = edgeConditions.every((condFn) => {\n try {\n return condFn(stateContext);\n } catch (e) {\n return false;\n }\n });\n\n if (!allConditionsMet) {\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Skipping node \"${node.id}\" due to edge condition(s)`,\n timestamp: Date.now(),\n };\n executed.add(node.id);\n changed = true;\n continue;\n }\n }\n\n const waitingEdges = getWaitingEdges(node.id, arc.edges);\n\n if (waitingEdges.length > 0) {\n const firstWaitingEdge = waitingEdges[0];\n const inputKey = firstWaitingEdge?.wait?.id || node.id;\n\n const edgeContext = arcState.getEdgeContext();\n const hasInput = edgeContext.has(inputKey);\n\n if (hasInput) {\n const inputValue = edgeContext.get(inputKey);\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\" has waiting edge(s) but input already provided (${inputValue}), continuing execution`,\n timestamp: Date.now(),\n };\n } else {\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\" has ${waitingEdges.length} waiting edge(s)`,\n timestamp: Date.now(),\n };\n\n for (const edge of waitingEdges) {\n if (edge.wait) {\n const { message, id: waitInputId } = edge.wait;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Pausing execution at node \"${node.id}\" waiting for input on edge ${edge.from || \"entry\"} -> ${edge.to}`,\n timestamp: Date.now(),\n };\n\n // Use sessionId if available, otherwise fall back to nodeId for same-instance resume\n const resolverKey = sessionId || node.id;\n const resumePromise = new Promise<any>((resolve) => {\n resumeResolvers.set(resolverKey, resolve);\n });\n\n // If storage is provided, store execution state\n // If this is a sub-arc, store both the sub-arc and parent arc so we can continue the loop\n if (storage && sessionId) {\n await storage.store(sessionId, {\n arc, // Store the current arc (sub-arc if in a loop)\n snapshot: {\n executed: Array.from(executed),\n ...arcState.serialize(),\n },\n nodeId: node.id,\n waitInputId: waitInputId || undefined, // Store wait input ID if specified\n parentArc: parentArc || undefined, // Store parent arc if this is a sub-arc\n parentLoopNodeId: parentLoopNodeId || undefined, // Store loop node ID\n parentExecutedNodes: parentExecutedNodes\n ? Array.from(parentExecutedNodes)\n : undefined, // Store parent's executed set if this is a sub-arc\n });\n }\n\n // Emit node-paused with state - platforms handle validation themselves\n yield {\n type: \"node-paused\" as const,\n nodeId: node.id,\n prompt: message,\n state: stateContext.state.toJS() as State,\n context: stateContext.context.toJS() as Context,\n timestamp: Date.now(),\n sessionId: sessionId,\n snapshot: storage\n ? undefined // Don't include in event if using storage\n : {\n executed: Array.from(executed),\n ...arcState.serialize(),\n },\n };\n\n // In serverless environments (e.g., Cloudflare Workers), we must end the stream\n // after emitting the pause event to avoid hanging the request.\n // The client will need to call /resume to continue execution.\n if (serverless) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Pausing execution in serverless mode. Use /resume endpoint to continue.`,\n timestamp: Date.now(),\n };\n return; // End the generator, allowing the Worker to complete\n }\n\n // For in-process resumption (long-running environments), wait for the promise\n const result = await resumePromise;\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Resumed with input for node ${node.id}`,\n timestamp: Date.now(),\n };\n\n // Convert result to string for edge input (maintaining compatibility)\n const inputValue =\n typeof result === \"string\" ? result : JSON.stringify(result);\n // Use wait input ID if specified, otherwise fall back to node ID for backward compatibility\n const inputKey = waitInputId || node.id;\n arcState.setEdgeContext(inputKey, inputValue);\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Input received on edge ${edge.from || \"entry\"} -> ${edge.to}`,\n timestamp: Date.now(),\n };\n }\n }\n }\n }\n\n const loopEdge = getLoopEdge(node.id, arc.edges);\n\n if (loopEdge && node.kind === ArcNodeKind.Arc && node.handler.arc) {\n const subArc = node.handler.arc;\n const maxIterations = loopEdge.maxIterations || 100;\n let iteration = 0;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Starting loop \"${node.id}\" (max ${maxIterations} iterations)`,\n timestamp: Date.now(),\n };\n\n while (iteration < maxIterations) {\n const stateContext = arcState.getStateContext();\n\n let shouldContinue = true;\n\n if (loopEdge.when) {\n try {\n shouldContinue = loopEdge.when(stateContext);\n } catch (e) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: e instanceof Error ? e : new Error(String(e)),\n timestamp: Date.now(),\n };\n break;\n }\n } else if (\n loopEdge.condition &&\n arc.conditions.has(loopEdge.condition)\n ) {\n const conditionFn = arc.conditions.get(loopEdge.condition)!;\n try {\n shouldContinue = conditionFn(stateContext);\n } catch (e) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: e instanceof Error ? e : new Error(String(e)),\n timestamp: Date.now(),\n };\n break;\n }\n }\n\n if (!shouldContinue) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Loop \"${node.id}\" condition failed after ${iteration} iterations`,\n timestamp: Date.now(),\n };\n // Clear storage entry if loop completed naturally (not paused)\n // This ensures that when the executor finishes, the runtime knows the arc is done\n if (storage && sessionId) {\n await storage.delete(sessionId);\n }\n break;\n }\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Loop \"${node.id}\" iteration ${iteration + 1}`,\n timestamp: Date.now(),\n };\n\n const parentExecutedNodesSet = new Set(executed);\n\n yield* executeArc(\n subArc,\n arcState,\n resumeResolvers,\n undefined,\n storage,\n sessionId,\n arc,\n node.id,\n parentExecutedNodesSet,\n serverless\n );\n\n // In serverless mode, check if execution was paused\n // If the session still exists in storage, it means we paused\n if (serverless && storage && sessionId) {\n const storedSession = await storage.get(sessionId);\n if (storedSession) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Loop \"${node.id}\" paused in serverless mode at iteration ${iteration + 1}`,\n timestamp: Date.now(),\n };\n // Return early to end the stream and allow the Worker to complete\n return;\n }\n }\n\n iteration++;\n }\n\n if (iteration >= maxIterations) {\n yield {\n type: \"log\" as const,\n level: \"warn\" as const,\n message: `Loop \"${node.id}\" reached max iterations (${maxIterations})`,\n timestamp: Date.now(),\n };\n // Clear storage entry if loop completed due to max iterations (not paused)\n if (storage && sessionId) {\n await storage.delete(sessionId);\n }\n }\n\n executed.add(node.id);\n changed = true;\n } else {\n yield {\n type: \"node-started\" as const,\n nodeId: node.id,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Running node \"${node.id}\" (${node.kind})`,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `About to execute node ${node.id}`,\n timestamp: Date.now(),\n };\n\n try {\n yield* execute(node, arcState);\n } catch (error) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n throw error;\n }\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Finished executing node ${node.id}`,\n timestamp: Date.now(),\n };\n\n const stateContext = arcState.getStateContext();\n\n yield {\n type: \"node-completed\" as const,\n nodeId: node.id,\n state: stateContext.state.toJS() as State,\n context: stateContext.context.toJS() as Context,\n timestamp: Date.now(),\n };\n\n // Clear edge input after node execution if it was set (for waiting edges)\n const waitingEdgesForNode = getWaitingEdges(node.id, arc.edges);\n if (waitingEdgesForNode.length > 0) {\n const firstWaitingEdge = waitingEdgesForNode[0];\n const inputKey = firstWaitingEdge?.wait?.id || node.id;\n const edgeContext = arcState.getEdgeContext();\n if (edgeContext.has(inputKey)) {\n arcState.clearEdgeContext(inputKey);\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Cleared edge input for node \"${node.id}\" after execution`,\n timestamp: Date.now(),\n };\n }\n }\n\n executed.add(node.id);\n\n changed = true;\n }\n }\n }\n}\n","class InMemoryStorage {\n executions = new Map();\n store(sessionId, execution) {\n this.executions.set(sessionId, execution);\n }\n get(sessionId) {\n return this.executions.get(sessionId) || null;\n }\n delete(sessionId) {\n this.executions.delete(sessionId);\n }\n}\n\nexport { InMemoryStorage };\n//# sourceMappingURL=index.js.map\n","import {\n ArcRuntime as ArcRuntimeType,\n Arc,\n ArcState,\n ArcEvent,\n} from \"@arc-dev/core\";\nimport { executeArc } from \"./executor\";\nimport { InMemoryStorage, Storage } from \"@arc-dev/storage\";\nimport { Models, createModels } from \"@arc-dev/model\";\n\nexport interface ArcRuntimeOptions {\n storage?: Storage;\n models?: Models;\n}\n\nexport class ArcRuntime implements ArcRuntimeType {\n protected resumeResolvers: Map<string, (value: any) => void> = new Map();\n protected storage: Storage;\n protected sessionIdGenerator: () => string;\n protected models: Models;\n\n constructor(options?: ArcRuntimeOptions) {\n this.storage = options?.storage || new InMemoryStorage();\n this.sessionIdGenerator = () =>\n `session_${Date.now()}_${Math.random().toString(36).substring(7)}`;\n\n if (options?.models) {\n this.models = options.models;\n } else {\n let apiKey = \"\";\n if (typeof globalThis !== \"undefined\") {\n const nodeProcess = (globalThis as any).process;\n apiKey = nodeProcess?.env?.OPENAI_API_KEY || \"\";\n if (!apiKey) {\n apiKey = (globalThis as any).OPENAI_API_KEY || \"\";\n }\n }\n\n if (!apiKey) {\n throw new Error(\n \"Models require an API key. Provide models via ArcRuntimeOptions or set OPENAI_API_KEY environment variable.\"\n );\n }\n\n this.models = createModels({ apiKey });\n }\n }\n\n async resume<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input: any): Promise<string | void> {\n const resolver = this.resumeResolvers.get(sessionId);\n\n if (resolver) {\n resolver(input);\n this.resumeResolvers.delete(sessionId);\n return;\n }\n\n const stored = this.storage.get(sessionId);\n const storedExecution = stored instanceof Promise ? await stored : stored;\n\n if (storedExecution) {\n storedExecution.pendingInput = input;\n\n const storeResult = this.storage.store(sessionId, storedExecution);\n if (storeResult instanceof Promise) {\n await storeResult;\n }\n\n return sessionId;\n }\n\n return sessionId;\n }\n\n async *resumeFromSession<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input?: any): AsyncIterable<ArcEvent<State, Context>> {\n if (this.resumeResolvers.has(sessionId)) {\n this.resumeResolvers.delete(sessionId);\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Cleared existing resolver for session ${sessionId} before resuming`,\n timestamp: Date.now(),\n };\n }\n\n const stored = await this.storage.get(sessionId);\n\n if (!stored) {\n yield {\n type: \"arc-error\" as const,\n arcId: \"unknown\",\n error: new Error(`Session ${sessionId} not found or expired`),\n timestamp: Date.now(),\n };\n return;\n }\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Resuming session ${sessionId}, paused at node \"${stored.nodeId}\", arc: \"${stored.arc.id}\", has parent: ${!!stored.parentArc}`,\n timestamp: Date.now(),\n };\n\n const arcState = ArcState.fromSerialized<State, Context>(\n stored.snapshot,\n this.models\n );\n\n const resumeInput = input !== undefined ? input : stored.pendingInput;\n\n if (resumeInput === undefined) {\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: new Error(`No input provided for session ${sessionId}`),\n timestamp: Date.now(),\n };\n return;\n }\n\n const inputValue =\n typeof resumeInput === \"string\"\n ? resumeInput\n : JSON.stringify(resumeInput);\n\n // Use wait input ID if specified, otherwise fall back to node ID for backward compatibility\n const inputKey = stored.waitInputId || stored.nodeId;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Setting edge input for node \"${stored.nodeId}\" with key \"${inputKey}\" and value: ${inputValue}`,\n timestamp: Date.now(),\n };\n\n arcState.setEdgeContext(inputKey, inputValue);\n\n try {\n yield* executeArc(\n stored.arc,\n arcState,\n this.resumeResolvers,\n new Set(stored.snapshot.executed),\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n\n if (stored.parentArc && stored.parentLoopNodeId) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Sub-arc completed, continuing parent arc \"${stored.parentArc.id}\" loop \"${stored.parentLoopNodeId}\"`,\n timestamp: Date.now(),\n };\n\n const parentExecutedNodes = stored.parentExecutedNodes\n ? new Set(stored.parentExecutedNodes)\n : new Set<string>();\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Continuing parent arc with executed nodes: [${Array.from(parentExecutedNodes).join(\", \")}]`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n stored.parentArc,\n arcState,\n this.resumeResolvers,\n parentExecutedNodes,\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n }\n\n const stillPaused = await this.storage.get(sessionId);\n if (!stillPaused) {\n await this.storage.delete(sessionId);\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: stored.arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${stored.arc.id}\" completed`,\n timestamp: Date.now(),\n };\n }\n } catch (error) {\n await this.storage.delete(sessionId);\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n\n async *run<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n arc: Arc<State, Context>,\n state: State,\n sessionId?: string\n ): AsyncIterable<ArcEvent<State, Context>> {\n const arcState = new ArcState<State, Context>(state, this.models);\n const execSessionId = sessionId || this.sessionIdGenerator();\n\n try {\n yield {\n type: \"arc-started\" as const,\n arcId: arc.id,\n initialState: state,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" started`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n arc,\n arcState,\n this.resumeResolvers,\n undefined,\n this.storage,\n execSessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" completed`,\n timestamp: Date.now(),\n };\n\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n } catch (error) {\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n yield {\n type: \"arc-error\" as const,\n arcId: arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n}\n\nexport class ArcServerlessRuntime extends ArcRuntime {\n async *run<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n arc: Arc<State, Context>,\n state: State,\n sessionId?: string\n ): AsyncIterable<ArcEvent<State, Context>> {\n const arcState = new ArcState<State, Context>(state, this.models);\n const execSessionId = sessionId || this.sessionIdGenerator();\n\n try {\n yield {\n type: \"arc-started\" as const,\n arcId: arc.id,\n initialState: state,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" started (serverless mode)`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n arc,\n arcState,\n this.resumeResolvers,\n undefined,\n this.storage,\n execSessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n\n const storedSession = await this.storage.get(execSessionId);\n if (storedSession) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" paused, session stored for resumption`,\n timestamp: Date.now(),\n };\n return;\n }\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" completed`,\n timestamp: Date.now(),\n };\n\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n } catch (error) {\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n yield {\n type: \"arc-error\" as const,\n arcId: arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n\n async *resumeFromSession<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input?: any): AsyncIterable<ArcEvent<State, Context>> {\n if (this.resumeResolvers.has(sessionId)) {\n this.resumeResolvers.delete(sessionId);\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Cleared existing resolver for session ${sessionId} before resuming`,\n timestamp: Date.now(),\n };\n }\n\n const stored = await this.storage.get(sessionId);\n\n if (!stored) {\n yield {\n type: \"arc-error\" as const,\n arcId: \"unknown\",\n error: new Error(`Session ${sessionId} not found or expired`),\n timestamp: Date.now(),\n };\n return;\n }\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Resuming session ${sessionId} (serverless mode), paused at node \"${stored.nodeId}\", arc: \"${stored.arc.id}\", has parent: ${!!stored.parentArc}`,\n timestamp: Date.now(),\n };\n\n const arcState = ArcState.fromSerialized<State, Context>(\n stored.snapshot,\n this.models\n );\n\n const resumeInput = input !== undefined ? input : stored.pendingInput;\n\n if (resumeInput === undefined) {\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: new Error(`No input provided for session ${sessionId}`),\n timestamp: Date.now(),\n };\n return;\n }\n\n const inputValue =\n typeof resumeInput === \"string\"\n ? resumeInput\n : JSON.stringify(resumeInput);\n\n const inputKey = stored.waitInputId || stored.nodeId;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Setting edge input for node \"${stored.nodeId}\" with key \"${inputKey}\" and value: ${inputValue}`,\n timestamp: Date.now(),\n };\n\n arcState.setEdgeContext(inputKey, inputValue);\n\n try {\n yield* executeArc(\n stored.arc,\n arcState,\n this.resumeResolvers,\n new Set(stored.snapshot.executed),\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n\n if (stored.parentArc && stored.parentLoopNodeId) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Sub-arc completed, continuing parent arc \"${stored.parentArc.id}\" loop \"${stored.parentLoopNodeId}\"`,\n timestamp: Date.now(),\n };\n\n // Use the stored parent executed set to continue from where we left off\n // This ensures we don't restart the parent arc from the beginning\n const parentExecutedNodes = stored.parentExecutedNodes\n ? new Set(stored.parentExecutedNodes)\n : new Set<string>();\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Continuing parent arc with executed nodes: [${Array.from(parentExecutedNodes).join(\", \")}]`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n stored.parentArc,\n arcState,\n this.resumeResolvers,\n parentExecutedNodes,\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n }\n\n const stillPaused = await this.storage.get(sessionId);\n if (!stillPaused) {\n await this.storage.delete(sessionId);\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: stored.arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${stored.arc.id}\" completed`,\n timestamp: Date.now(),\n };\n }\n } catch (error) {\n await this.storage.delete(sessionId);\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n}\n"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/nodes.ts","../src/executor.ts","../../arc-storage/dist/index.js","../src/runtime.ts"],"sourcesContent":["import {\n ArcNode,\n ArcState,\n ArcNodeKind,\n ImmutableMap,\n ArcEvent,\n} from \"@arc-dev/core\";\n\nexport async function* execute<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n>(\n node: ArcNode<State, Context>,\n arcState: ArcState<State, Context>\n): AsyncIterable<ArcEvent<State, Context>> {\n const stateContext = arcState.getStateContext();\n const models = arcState.getModels();\n\n switch (node.kind) {\n case ArcNodeKind.Agent: {\n const agent = node.handler;\n yield* agent.run(stateContext, node.id, models);\n\n const pendingContext = (stateContext as any).__pendingContext;\n if (pendingContext) {\n arcState.setContext(pendingContext.nodeId, pendingContext.result);\n delete (stateContext as any).__pendingContext;\n }\n\n break;\n }\n case ArcNodeKind.Action: {\n const action = node.handler;\n yield* action.run(stateContext, node.id, models);\n\n const pendingState = (stateContext as any).__pendingState;\n\n if (pendingState) {\n arcState.setState(pendingState);\n delete (stateContext as any).__pendingState;\n }\n\n break;\n }\n case ArcNodeKind.Arc: {\n arcState.setContext(node.id, ImmutableMap({ executed: true }));\n break;\n }\n }\n}\n","import {\n Arc,\n ArcStateContext,\n ArcEdge,\n ArcNodeKind,\n ArcEvent,\n ArcState,\n} from \"@arc-dev/core\";\nimport { execute } from \"./nodes\";\nimport { Storage } from \"@arc-dev/storage\";\n\nconst buildDependencyMap = (\n nodes: Array<{ id: string }>,\n edges: ArcEdge[]\n): Map<string, string[]> => {\n const deps = new Map<string, string[]>();\n\n for (const node of nodes) {\n deps.set(node.id, []);\n }\n\n for (const edge of edges) {\n if (!edge.from || edge.from === edge.to) {\n continue;\n }\n const currentDeps = deps.get(edge.to) || [];\n currentDeps.push(edge.from);\n deps.set(edge.to, currentDeps);\n }\n\n return deps;\n};\n\nconst getEdgeConditions = (\n nodeId: string,\n edges: ArcEdge[],\n conditions: Map<string, (sc: ArcStateContext<any, any>) => boolean>\n): Array<(sc: ArcStateContext<any, any>) => boolean> => {\n const edgeConditions: Array<(sc: ArcStateContext<any, any>) => boolean> = [];\n\n for (const edge of edges) {\n if (edge.to === nodeId && edge.from && edge.from !== edge.to) {\n if (edge.when) {\n edgeConditions.push(edge.when);\n } else if (edge.condition && conditions.has(edge.condition)) {\n const conditionFn = conditions.get(edge.condition)!;\n edgeConditions.push(conditionFn);\n }\n }\n }\n\n return edgeConditions;\n};\n\nconst getWaitingEdges = (nodeId: string, edges: ArcEdge[]): ArcEdge[] => {\n return edges.filter(\n (edge) =>\n edge.to === nodeId && (!edge.from || edge.from !== edge.to) && edge.wait\n );\n};\n\nconst getLoopEdge = (nodeId: string, edges: ArcEdge[]): ArcEdge | null => {\n for (const edge of edges) {\n if (edge.from === nodeId && edge.to === nodeId) {\n return edge;\n }\n }\n return null;\n};\n\nexport async function* executeArc<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n>(\n arc: Arc<State, Context>,\n arcState: ArcState<State, Context>,\n resumeResolvers: Map<string, (value: any) => void>,\n initialExecuted?: Set<string>,\n storage?: Storage,\n sessionId?: string,\n parentArc?: Arc<any, any>,\n parentLoopNodeId?: string,\n parentExecutedNodes?: Set<string>,\n serverless?: boolean\n): AsyncIterable<ArcEvent<State, Context>> {\n const executed = initialExecuted\n ? new Set(initialExecuted)\n : new Set<string>();\n let changed = true;\n\n const dependencyMap = buildDependencyMap(arc.nodes, arc.edges);\n\n while (changed) {\n changed = false;\n\n for (const node of arc.nodes) {\n if (executed.has(node.id)) continue;\n\n const deps = dependencyMap.get(node.id) || [];\n const depsDone = deps.every((d: string) => executed.has(d));\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\": deps=${JSON.stringify(deps)}, depsDone=${depsDone}`,\n timestamp: Date.now(),\n };\n\n if (!depsDone) {\n continue;\n }\n\n const stateContext = arcState.getStateContext();\n\n const edgeConditions = getEdgeConditions(\n node.id,\n arc.edges,\n arc.conditions\n );\n\n if (edgeConditions.length > 0) {\n const allConditionsMet = edgeConditions.every((condFn) => {\n try {\n return condFn(stateContext);\n } catch (e) {\n return false;\n }\n });\n\n if (!allConditionsMet) {\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Skipping node \"${node.id}\" due to edge condition(s)`,\n timestamp: Date.now(),\n };\n executed.add(node.id);\n changed = true;\n continue;\n }\n }\n\n const waitingEdges = getWaitingEdges(node.id, arc.edges);\n\n if (waitingEdges.length > 0) {\n const firstWaitingEdge = waitingEdges[0];\n const inputKey = firstWaitingEdge?.wait?.id || node.id;\n\n const edgeContext = arcState.getEdgeContext();\n const hasInput = edgeContext.has(inputKey);\n\n if (hasInput) {\n const inputValue = edgeContext.get(inputKey);\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\" has waiting edge(s) but input already provided (${inputValue}), continuing execution`,\n timestamp: Date.now(),\n };\n } else {\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Node \"${node.id}\" has ${waitingEdges.length} waiting edge(s)`,\n timestamp: Date.now(),\n };\n\n for (const edge of waitingEdges) {\n if (edge.wait) {\n const { message, id: waitInputId } = edge.wait;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Pausing execution at node \"${node.id}\" waiting for input on edge ${edge.from || \"entry\"} -> ${edge.to}`,\n timestamp: Date.now(),\n };\n\n // Use sessionId if available, otherwise fall back to nodeId for same-instance resume\n const resolverKey = sessionId || node.id;\n const resumePromise = new Promise<any>((resolve) => {\n resumeResolvers.set(resolverKey, resolve);\n });\n\n // If storage is provided, store execution state\n // If this is a sub-arc, store both the sub-arc and parent arc so we can continue the loop\n if (storage && sessionId) {\n await storage.store(sessionId, {\n arc, // Store the current arc (sub-arc if in a loop)\n snapshot: {\n executed: Array.from(executed),\n ...arcState.serialize(),\n },\n nodeId: node.id,\n waitInputId: waitInputId || undefined, // Store wait input ID if specified\n parentArc: parentArc || undefined, // Store parent arc if this is a sub-arc\n parentLoopNodeId: parentLoopNodeId || undefined, // Store loop node ID\n parentExecutedNodes: parentExecutedNodes\n ? Array.from(parentExecutedNodes)\n : undefined, // Store parent's executed set if this is a sub-arc\n });\n }\n\n // Emit node-paused with state - platforms handle validation themselves\n yield {\n type: \"node-paused\" as const,\n nodeId: node.id,\n prompt: message,\n state: stateContext.state.toJS() as State,\n context: stateContext.context.toJS() as Context,\n timestamp: Date.now(),\n sessionId: sessionId,\n snapshot: storage\n ? undefined // Don't include in event if using storage\n : {\n executed: Array.from(executed),\n ...arcState.serialize(),\n },\n };\n\n // In serverless environments (e.g., Cloudflare Workers), we must end the stream\n // after emitting the pause event to avoid hanging the request.\n // The client will need to call /resume to continue execution.\n if (serverless) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Pausing execution in serverless mode. Use /resume endpoint to continue.`,\n timestamp: Date.now(),\n };\n return; // End the generator, allowing the Worker to complete\n }\n\n // For in-process resumption (long-running environments), wait for the promise\n const result = await resumePromise;\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Resumed with input for node ${node.id}`,\n timestamp: Date.now(),\n };\n\n // Convert result to string for edge input (maintaining compatibility)\n const inputValue =\n typeof result === \"string\" ? result : JSON.stringify(result);\n // Use wait input ID if specified, otherwise fall back to node ID for backward compatibility\n const inputKey = waitInputId || node.id;\n arcState.setEdgeContext(inputKey, inputValue);\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Input received on edge ${edge.from || \"entry\"} -> ${edge.to}`,\n timestamp: Date.now(),\n };\n }\n }\n }\n }\n\n const loopEdge = getLoopEdge(node.id, arc.edges);\n\n if (loopEdge && node.kind === ArcNodeKind.Arc && node.handler.arc) {\n const subArc = node.handler.arc;\n const maxIterations = loopEdge.maxIterations || 100;\n let iteration = 0;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Starting loop \"${node.id}\" (max ${maxIterations} iterations)`,\n timestamp: Date.now(),\n };\n\n while (iteration < maxIterations) {\n const stateContext = arcState.getStateContext();\n\n let shouldContinue = true;\n\n if (loopEdge.when) {\n try {\n shouldContinue = loopEdge.when(stateContext);\n } catch (e) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: e instanceof Error ? e : new Error(String(e)),\n timestamp: Date.now(),\n };\n break;\n }\n } else if (\n loopEdge.condition &&\n arc.conditions.has(loopEdge.condition)\n ) {\n const conditionFn = arc.conditions.get(loopEdge.condition)!;\n try {\n shouldContinue = conditionFn(stateContext);\n } catch (e) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: e instanceof Error ? e : new Error(String(e)),\n timestamp: Date.now(),\n };\n break;\n }\n }\n\n if (!shouldContinue) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Loop \"${node.id}\" condition failed after ${iteration} iterations`,\n timestamp: Date.now(),\n };\n // Clear storage entry if loop completed naturally (not paused)\n // This ensures that when the executor finishes, the runtime knows the arc is done\n if (storage && sessionId) {\n await storage.delete(sessionId);\n }\n break;\n }\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Loop \"${node.id}\" iteration ${iteration + 1}`,\n timestamp: Date.now(),\n };\n\n const parentExecutedNodesSet = new Set(executed);\n\n yield* executeArc(\n subArc,\n arcState,\n resumeResolvers,\n undefined,\n storage,\n sessionId,\n arc,\n node.id,\n parentExecutedNodesSet,\n serverless\n );\n\n // In serverless mode, check if execution was paused\n // If the session still exists in storage, it means we paused\n if (serverless && storage && sessionId) {\n const storedSession = await storage.get(sessionId);\n if (storedSession) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Loop \"${node.id}\" paused in serverless mode at iteration ${iteration + 1}`,\n timestamp: Date.now(),\n };\n // Return early to end the stream and allow the Worker to complete\n return;\n }\n }\n\n iteration++;\n }\n\n if (iteration >= maxIterations) {\n yield {\n type: \"log\" as const,\n level: \"warn\" as const,\n message: `Loop \"${node.id}\" reached max iterations (${maxIterations})`,\n timestamp: Date.now(),\n };\n // Clear storage entry if loop completed due to max iterations (not paused)\n if (storage && sessionId) {\n await storage.delete(sessionId);\n }\n }\n\n executed.add(node.id);\n changed = true;\n } else {\n yield {\n type: \"node-started\" as const,\n nodeId: node.id,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Running node \"${node.id}\" (${node.kind})`,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `About to execute node ${node.id}`,\n timestamp: Date.now(),\n };\n\n try {\n yield* execute(node, arcState);\n } catch (error) {\n yield {\n type: \"node-error\" as const,\n nodeId: node.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n throw error;\n }\n\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Finished executing node ${node.id}`,\n timestamp: Date.now(),\n };\n\n const stateContext = arcState.getStateContext();\n\n yield {\n type: \"node-completed\" as const,\n nodeId: node.id,\n state: stateContext.state.toJS() as State,\n context: stateContext.context.toJS() as Context,\n timestamp: Date.now(),\n };\n\n // Clear edge input after node execution if it was set (for waiting edges)\n const waitingEdgesForNode = getWaitingEdges(node.id, arc.edges);\n if (waitingEdgesForNode.length > 0) {\n const firstWaitingEdge = waitingEdgesForNode[0];\n const inputKey = firstWaitingEdge?.wait?.id || node.id;\n const edgeContext = arcState.getEdgeContext();\n if (edgeContext.has(inputKey)) {\n arcState.clearEdgeContext(inputKey);\n yield {\n type: \"log\" as const,\n level: \"debug\" as const,\n message: `Cleared edge input for node \"${node.id}\" after execution`,\n timestamp: Date.now(),\n };\n }\n }\n\n executed.add(node.id);\n\n changed = true;\n }\n }\n }\n}\n","class InMemoryStorage {\n executions = new Map();\n store(sessionId, execution) {\n this.executions.set(sessionId, execution);\n }\n get(sessionId) {\n return this.executions.get(sessionId) || null;\n }\n delete(sessionId) {\n this.executions.delete(sessionId);\n }\n}\n\n/**\n * Storage implementation using Cloudflare KV\n *\n * @example\n * ```typescript\n * // In your Cloudflare Worker\n * import { CloudflareKVStorage } from '@arc-dev/storage';\n *\n * export default {\n * async fetch(request: Request, env: { ARC_KV: KVNamespace }) {\n * const storage = new CloudflareKVStorage(env.ARC_KV);\n * // Use storage with ARC runtime\n * }\n * }\n * ```\n */\nclass CloudflareKVStorage {\n kv;\n constructor(kv) {\n this.kv = kv;\n }\n async store(sessionId, execution) {\n // Serialize the execution data to JSON\n const data = JSON.stringify(execution, (key, value) => {\n // Handle functions and other non-serializable types\n if (typeof value === \"function\") {\n return undefined;\n }\n return value;\n });\n // Store in KV with optional expiration (e.g., 24 hours)\n await this.kv.put(sessionId, data);\n }\n async get(sessionId) {\n const data = await this.kv.get(sessionId, \"text\");\n if (!data) {\n return null;\n }\n try {\n return JSON.parse(data);\n }\n catch (error) {\n console.error(`Failed to parse stored execution for session ${sessionId}:`, error);\n return null;\n }\n }\n async delete(sessionId) {\n await this.kv.delete(sessionId);\n }\n}\n/**\n * Configurable CloudflareKV storage with TTL and key prefix support\n *\n * @example\n * ```typescript\n * const storage = new ConfigurableCloudflareKVStorage({\n * kv: env.ARC_KV,\n * expirationTtl: 3600, // 1 hour\n * keyPrefix: 'arc:sessions:',\n * });\n * ```\n */\nclass ConfigurableCloudflareKVStorage {\n kv;\n expirationTtl;\n keyPrefix;\n constructor(options) {\n this.kv = options.kv;\n this.expirationTtl = options.expirationTtl ?? 86400;\n this.keyPrefix = options.keyPrefix ?? \"\";\n }\n getKey(sessionId) {\n return `${this.keyPrefix}${sessionId}`;\n }\n async store(sessionId, execution) {\n const data = JSON.stringify(execution, (key, value) => {\n if (typeof value === \"function\") {\n return undefined;\n }\n return value;\n });\n await this.kv.put(this.getKey(sessionId), data, {\n expirationTtl: this.expirationTtl,\n });\n }\n async get(sessionId) {\n const data = await this.kv.get(this.getKey(sessionId), \"text\");\n if (!data) {\n return null;\n }\n try {\n return JSON.parse(data);\n }\n catch (error) {\n console.error(`Failed to parse stored execution for session ${sessionId}:`, error);\n return null;\n }\n }\n async delete(sessionId) {\n await this.kv.delete(this.getKey(sessionId));\n }\n}\n\nexport { CloudflareKVStorage, ConfigurableCloudflareKVStorage, InMemoryStorage };\n//# sourceMappingURL=index.js.map\n","import {\n ArcRuntime as ArcRuntimeType,\n Arc,\n ArcState,\n ArcEvent,\n} from \"@arc-dev/core\";\nimport { executeArc } from \"./executor\";\nimport { InMemoryStorage, Storage } from \"@arc-dev/storage\";\nimport { Models, createModels } from \"@arc-dev/model\";\n\nexport interface ArcRuntimeOptions {\n storage?: Storage;\n models?: Models;\n}\n\nexport class ArcRuntime implements ArcRuntimeType {\n protected resumeResolvers: Map<string, (value: any) => void> = new Map();\n protected storage: Storage;\n protected sessionIdGenerator: () => string;\n protected models: Models;\n\n constructor(options?: ArcRuntimeOptions) {\n this.storage = options?.storage || new InMemoryStorage();\n this.sessionIdGenerator = () =>\n `session_${Date.now()}_${Math.random().toString(36).substring(7)}`;\n\n if (options?.models) {\n this.models = options.models;\n } else {\n let apiKey = \"\";\n if (typeof globalThis !== \"undefined\") {\n const nodeProcess = (globalThis as any).process;\n apiKey = nodeProcess?.env?.OPENAI_API_KEY || \"\";\n if (!apiKey) {\n apiKey = (globalThis as any).OPENAI_API_KEY || \"\";\n }\n }\n\n if (!apiKey) {\n throw new Error(\n \"Models require an API key. Provide models via ArcRuntimeOptions or set OPENAI_API_KEY environment variable.\"\n );\n }\n\n this.models = createModels({ apiKey });\n }\n }\n\n async resume<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input: any): Promise<string | void> {\n const resolver = this.resumeResolvers.get(sessionId);\n\n if (resolver) {\n resolver(input);\n this.resumeResolvers.delete(sessionId);\n return;\n }\n\n const stored = this.storage.get(sessionId);\n const storedExecution = stored instanceof Promise ? await stored : stored;\n\n if (storedExecution) {\n storedExecution.pendingInput = input;\n\n const storeResult = this.storage.store(sessionId, storedExecution);\n if (storeResult instanceof Promise) {\n await storeResult;\n }\n\n return sessionId;\n }\n\n return sessionId;\n }\n\n async *resumeFromSession<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input?: any): AsyncIterable<ArcEvent<State, Context>> {\n if (this.resumeResolvers.has(sessionId)) {\n this.resumeResolvers.delete(sessionId);\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Cleared existing resolver for session ${sessionId} before resuming`,\n timestamp: Date.now(),\n };\n }\n\n const stored = await this.storage.get(sessionId);\n\n if (!stored) {\n yield {\n type: \"arc-error\" as const,\n arcId: \"unknown\",\n error: new Error(`Session ${sessionId} not found or expired`),\n timestamp: Date.now(),\n };\n return;\n }\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Resuming session ${sessionId}, paused at node \"${stored.nodeId}\", arc: \"${stored.arc.id}\", has parent: ${!!stored.parentArc}`,\n timestamp: Date.now(),\n };\n\n const arcState = ArcState.fromSerialized<State, Context>(\n stored.snapshot,\n this.models\n );\n\n const resumeInput = input !== undefined ? input : stored.pendingInput;\n\n if (resumeInput === undefined) {\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: new Error(`No input provided for session ${sessionId}`),\n timestamp: Date.now(),\n };\n return;\n }\n\n const inputValue =\n typeof resumeInput === \"string\"\n ? resumeInput\n : JSON.stringify(resumeInput);\n\n // Use wait input ID if specified, otherwise fall back to node ID for backward compatibility\n const inputKey = stored.waitInputId || stored.nodeId;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Setting edge input for node \"${stored.nodeId}\" with key \"${inputKey}\" and value: ${inputValue}`,\n timestamp: Date.now(),\n };\n\n arcState.setEdgeContext(inputKey, inputValue);\n\n try {\n yield* executeArc(\n stored.arc,\n arcState,\n this.resumeResolvers,\n new Set(stored.snapshot.executed),\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n\n if (stored.parentArc && stored.parentLoopNodeId) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Sub-arc completed, continuing parent arc \"${stored.parentArc.id}\" loop \"${stored.parentLoopNodeId}\"`,\n timestamp: Date.now(),\n };\n\n const parentExecutedNodes = stored.parentExecutedNodes\n ? new Set(stored.parentExecutedNodes)\n : new Set<string>();\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Continuing parent arc with executed nodes: [${Array.from(parentExecutedNodes).join(\", \")}]`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n stored.parentArc,\n arcState,\n this.resumeResolvers,\n parentExecutedNodes,\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n }\n\n const stillPaused = await this.storage.get(sessionId);\n if (!stillPaused) {\n await this.storage.delete(sessionId);\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: stored.arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${stored.arc.id}\" completed`,\n timestamp: Date.now(),\n };\n }\n } catch (error) {\n await this.storage.delete(sessionId);\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n\n async *run<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n arc: Arc<State, Context>,\n state: State,\n sessionId?: string\n ): AsyncIterable<ArcEvent<State, Context>> {\n const arcState = new ArcState<State, Context>(state, this.models);\n const execSessionId = sessionId || this.sessionIdGenerator();\n\n try {\n yield {\n type: \"arc-started\" as const,\n arcId: arc.id,\n initialState: state,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" started`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n arc,\n arcState,\n this.resumeResolvers,\n undefined,\n this.storage,\n execSessionId,\n undefined,\n undefined,\n undefined,\n false\n );\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" completed`,\n timestamp: Date.now(),\n };\n\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n } catch (error) {\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n yield {\n type: \"arc-error\" as const,\n arcId: arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n}\n\nexport class ArcServerlessRuntime extends ArcRuntime {\n async *run<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n arc: Arc<State, Context>,\n state: State,\n sessionId?: string\n ): AsyncIterable<ArcEvent<State, Context>> {\n const arcState = new ArcState<State, Context>(state, this.models);\n const execSessionId = sessionId || this.sessionIdGenerator();\n\n try {\n yield {\n type: \"arc-started\" as const,\n arcId: arc.id,\n initialState: state,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" started (serverless mode)`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n arc,\n arcState,\n this.resumeResolvers,\n undefined,\n this.storage,\n execSessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n\n const storedSession = await this.storage.get(execSessionId);\n if (storedSession) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" paused, session stored for resumption`,\n timestamp: Date.now(),\n };\n return;\n }\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${arc.id}\" completed`,\n timestamp: Date.now(),\n };\n\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n } catch (error) {\n if (execSessionId) {\n await this.storage.delete(execSessionId);\n }\n yield {\n type: \"arc-error\" as const,\n arcId: arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n\n async *resumeFromSession<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(sessionId: string, input?: any): AsyncIterable<ArcEvent<State, Context>> {\n if (this.resumeResolvers.has(sessionId)) {\n this.resumeResolvers.delete(sessionId);\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Cleared existing resolver for session ${sessionId} before resuming`,\n timestamp: Date.now(),\n };\n }\n\n const stored = await this.storage.get(sessionId);\n\n if (!stored) {\n yield {\n type: \"arc-error\" as const,\n arcId: \"unknown\",\n error: new Error(`Session ${sessionId} not found or expired`),\n timestamp: Date.now(),\n };\n return;\n }\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Resuming session ${sessionId} (serverless mode), paused at node \"${stored.nodeId}\", arc: \"${stored.arc.id}\", has parent: ${!!stored.parentArc}`,\n timestamp: Date.now(),\n };\n\n const arcState = ArcState.fromSerialized<State, Context>(\n stored.snapshot,\n this.models\n );\n\n const resumeInput = input !== undefined ? input : stored.pendingInput;\n\n if (resumeInput === undefined) {\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: new Error(`No input provided for session ${sessionId}`),\n timestamp: Date.now(),\n };\n return;\n }\n\n const inputValue =\n typeof resumeInput === \"string\"\n ? resumeInput\n : JSON.stringify(resumeInput);\n\n const inputKey = stored.waitInputId || stored.nodeId;\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `[Runtime] Setting edge input for node \"${stored.nodeId}\" with key \"${inputKey}\" and value: ${inputValue}`,\n timestamp: Date.now(),\n };\n\n arcState.setEdgeContext(inputKey, inputValue);\n\n try {\n yield* executeArc(\n stored.arc,\n arcState,\n this.resumeResolvers,\n new Set(stored.snapshot.executed),\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n\n if (stored.parentArc && stored.parentLoopNodeId) {\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Sub-arc completed, continuing parent arc \"${stored.parentArc.id}\" loop \"${stored.parentLoopNodeId}\"`,\n timestamp: Date.now(),\n };\n\n // Use the stored parent executed set to continue from where we left off\n // This ensures we don't restart the parent arc from the beginning\n const parentExecutedNodes = stored.parentExecutedNodes\n ? new Set(stored.parentExecutedNodes)\n : new Set<string>();\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Continuing parent arc with executed nodes: [${Array.from(parentExecutedNodes).join(\", \")}]`,\n timestamp: Date.now(),\n };\n\n yield* executeArc(\n stored.parentArc,\n arcState,\n this.resumeResolvers,\n parentExecutedNodes,\n this.storage,\n sessionId,\n undefined,\n undefined,\n undefined,\n true\n );\n }\n\n const stillPaused = await this.storage.get(sessionId);\n if (!stillPaused) {\n await this.storage.delete(sessionId);\n\n const finalContext = arcState.getContext().toJS() as Context;\n const finalState = arcState.getState().toJS() as State;\n\n yield {\n type: \"arc-completed\" as const,\n arcId: stored.arc.id,\n finalState,\n finalContext,\n timestamp: Date.now(),\n };\n\n yield {\n type: \"log\" as const,\n level: \"info\" as const,\n message: `Arc \"${stored.arc.id}\" completed`,\n timestamp: Date.now(),\n };\n }\n } catch (error) {\n await this.storage.delete(sessionId);\n yield {\n type: \"arc-error\" as const,\n arcId: stored.arc.id,\n error: error instanceof Error ? error : new Error(String(error)),\n timestamp: Date.now(),\n };\n }\n }\n}\n"],"names":[],"mappings":"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"} |
+2
-2
| { | ||
| "name": "@arc-dev/runtime", | ||
| "version": "0.0.2-alpha.12", | ||
| "version": "0.0.2-alpha.13", | ||
| "description": "Single process runtime implementation for ARC", | ||
@@ -30,3 +30,3 @@ "license": "Apache-2.0", | ||
| "@arc-dev/model": "0.0.2-alpha.9", | ||
| "@arc-dev/storage": "0.0.2-alpha.5" | ||
| "@arc-dev/storage": "0.0.2-alpha.6" | ||
| }, | ||
@@ -33,0 +33,0 @@ "devDependencies": { |
194318
3.17%+ Added
- Removed