🚀. Socket Launch Week Day 2:Introducing Manifest Alerts.Learn more
Sign In

@arc-dev/core

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@arc-dev/core - npm Package Compare versions

Comparing version
0.0.2-alpha.2
to
0.0.2-alpha.3
+17
-14
dist/index.cjs

@@ -513,7 +513,7 @@ 'use strict';

nodeContext;
edgeIn;
edgeContext;
constructor(initial) {
this.state = immutable.Map(initial);
this.nodeContext = immutable.Map();
this.edgeIn = immutable.Map();
this.edgeContext = immutable.Map();
}

@@ -526,4 +526,4 @@ getState() {

}
getEdgeIn() {
return this.edgeIn;
getEdgeContext() {
return this.edgeContext;
}

@@ -534,3 +534,3 @@ getStateContext() {

context: this.nodeContext,
edgeIn: this.edgeIn,
edgeContext: this.edgeContext,
};

@@ -549,10 +549,13 @@ }

}
setEdgeIn(nodeId, value) {
this.edgeIn = this.edgeIn.set(nodeId, value);
setEdgeContext(nodeId, value) {
this.edgeContext = this.edgeContext.set(nodeId, value);
}
clearEdgeContext(nodeId) {
this.edgeContext = this.edgeContext.delete(nodeId);
}
serialize() {
return {
state: this.state.toJS(),
context: this.nodeContext.toJS(),
edgeIn: this.edgeIn.toJS(),
nodeContext: this.nodeContext.toJS(),
edgeContext: this.edgeContext.toJS(),
};

@@ -562,10 +565,10 @@ }

const arcState = new ArcState(serialized.state);
if (serialized.context) {
for (const [key, value] of Object.entries(serialized.context)) {
if (serialized.nodeContext) {
for (const [key, value] of Object.entries(serialized.nodeContext)) {
arcState.setContext(key, value);
}
}
if (serialized.edgeIn) {
for (const [nodeId, value] of Object.entries(serialized.edgeIn)) {
arcState.setEdgeIn(nodeId, value);
if (serialized.edgeContext) {
for (const [nodeId, value] of Object.entries(serialized.edgeContext)) {
arcState.setEdgeContext(nodeId, value);
}

@@ -572,0 +575,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"index.cjs","sources":["../src/types/node.ts","../src/renderers/renderer.dot.ts","../src/builders/builder.arc.ts","../src/builders/builder.node.ts","../src/builders/builder.edge-condition.ts","../src/builders/builder.edge.ts","../src/builders/index.ts","../src/types/result.ts","../src/types/logging.ts","../src/channels/terminal.ts","../src/state.ts"],"sourcesContent":["import type { Arc } from \"./arc\";\nimport { ArcStateContext } from \"./state\";\nimport { ArcEvent } from \"./events\";\n\nexport enum ArcNodeKind {\n Agent = \"agent\",\n Action = \"action\",\n Arc = \"arc\",\n}\n\nexport interface ArcNode<\n State extends Record<string, any> = any,\n Context extends Record<string, any> = any,\n> {\n id: string;\n kind: ArcNodeKind;\n handler: {\n id: string;\n run: (\n sc: ArcStateContext<State, Context>,\n nodeId: string\n ) => AsyncIterable<ArcEvent<State, Context>>;\n arc?: Arc<State, Context>;\n };\n}\n","import { ArcNodeKind } from \"../types/node\";\nimport type { Arc as IArc } from \"../types/arc\";\nimport type { ArcNode } from \"../types/node\";\nimport type { ArcEdge } from \"../types/edge\";\n\nexport const renderAsDot = (\n id: string,\n description: string | undefined,\n nodes: ArcNode[],\n edges: ArcEdge[]\n): string => {\n const lines: string[] = [];\n\n lines.push(`digraph \"${id}\" {`);\n lines.push(` label=\"${description || id}\";`);\n lines.push(` rankdir=TB;`);\n lines.push(` node [fontname=\"Arial\", fontsize=12];`);\n lines.push(` compound=true;`);\n lines.push(``);\n\n const getNodeStyle = (kind: ArcNodeKind): string => {\n switch (kind) {\n case ArcNodeKind.Agent:\n return 'shape=box, style=filled, fillcolor=\"#E3F2FD\", color=\"#1976D2\"';\n case ArcNodeKind.Action:\n return 'shape=box, style=\"filled,rounded\", fillcolor=\"#E8F5E9\", color=\"#388E3C\"';\n case ArcNodeKind.Arc:\n return 'shape=box, style=\"filled,dashed\", fillcolor=\"#FFF3E0\", color=\"#F57C00\"';\n default:\n return \"shape=box\";\n }\n };\n\n const arcNodes = new Map<string, IArc<any>>();\n const loopEdges = new Set<string>();\n\n for (const node of nodes) {\n if (node.kind === ArcNodeKind.Arc && node.handler.arc) {\n arcNodes.set(node.id, node.handler.arc);\n }\n }\n\n for (const edge of edges) {\n if (edge.from === edge.to && arcNodes.has(edge.from)) {\n loopEdges.add(`${edge.from}->${edge.to}`);\n }\n }\n\n // Render nodes with Arc nodes as subgraphs\n let clusterIndex = 0;\n for (const node of nodes) {\n if (node.kind === ArcNodeKind.Arc && node.handler.arc) {\n const arc = node.handler.arc;\n const loopEdge = edges.find(\n (e) => e.from === node.id && e.to === node.id\n );\n const maxIterations = loopEdge?.maxIterations;\n\n lines.push(` subgraph cluster_${clusterIndex} {`);\n lines.push(\n ` label=\"${node.id}\\\\n[loop${maxIterations ? ` max: ${maxIterations}` : \"\"}]\";`\n );\n lines.push(` style=filled;`);\n lines.push(` fillcolor=\"#FFF3E0\";`);\n lines.push(` color=\"#F57C00\";`);\n lines.push(` penwidth=2;`);\n lines.push(``);\n\n // Create an entry node for the subgraph\n lines.push(\n ` \"${node.id}_entry\" [label=\"entry\", shape=circle, style=filled, fillcolor=\"#F57C00\", fontcolor=white, width=0.5, height=0.5];`\n );\n\n // Render inner arc nodes\n for (const innerNode of arc.nodes) {\n const innerStyle = getNodeStyle(innerNode.kind);\n const innerLabel = `${innerNode.id}\\\\n[${innerNode.kind}]`;\n lines.push(\n ` \"${node.id}.${innerNode.id}\" [label=\"${innerLabel}\", ${innerStyle}];`\n );\n }\n\n // Create an exit node for the subgraph\n lines.push(\n ` \"${node.id}_exit\" [label=\"exit\", shape=circle, style=filled, fillcolor=\"#F57C00\", fontcolor=white, width=0.5, height=0.5];`\n );\n lines.push(``);\n\n // Render inner arc edges\n for (const innerEdge of arc.edges) {\n const hasCondition = innerEdge.condition || innerEdge.when;\n const edgeStyle = hasCondition ? \" [style=dashed]\" : \"\";\n lines.push(\n ` \"${node.id}.${innerEdge.from}\" -> \"${node.id}.${innerEdge.to}\"${edgeStyle};`\n );\n }\n\n // Connect entry to first nodes (nodes with no incoming edges)\n const innerNodesWithIncoming = new Set(arc.edges.map((e) => e.to));\n const firstInnerNodes = arc.nodes.filter(\n (n) => !innerNodesWithIncoming.has(n.id)\n );\n for (const firstNode of firstInnerNodes) {\n lines.push(` \"${node.id}_entry\" -> \"${node.id}.${firstNode.id}\";`);\n }\n\n // Connect last nodes to exit (nodes with no outgoing edges, unless they're part of internal loops)\n const innerNodesWithOutgoing = new Set(arc.edges.map((e) => e.from));\n const lastInnerNodes = arc.nodes.filter(\n (n) => !innerNodesWithOutgoing.has(n.id)\n );\n for (const lastNode of lastInnerNodes) {\n lines.push(` \"${node.id}.${lastNode.id}\" -> \"${node.id}_exit\";`);\n }\n\n lines.push(` }`);\n lines.push(``);\n clusterIndex++;\n } else {\n // Regular node\n const style = getNodeStyle(node.kind);\n const label = `${node.id}\\\\n[${node.kind}]`;\n lines.push(` \"${node.id}\" [label=\"${label}\", ${style}];`);\n }\n }\n\n lines.push(``);\n\n // Render edges\n for (const edge of edges) {\n const isLoopEdge = loopEdges.has(`${edge.from}->${edge.to}`);\n const hasCondition = edge.condition || edge.when;\n\n if (isLoopEdge) {\n const conditionPart = hasCondition ? \"style=dashed, \" : \"\";\n const maxIterPart = edge.maxIterations\n ? `, label=\"max: ${edge.maxIterations}\"`\n : \"\";\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.from}_entry\" [${conditionPart}color=\"#F57C00\", penwidth=2${maxIterPart}, constraint=false];`\n );\n } else if (arcNodes.has(edge.from) && !arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.to}\" [${conditionLabel}ltail=cluster_${Array.from(arcNodes.keys()).indexOf(edge.from)}];`\n );\n } else if (!arcNodes.has(edge.from) && arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n lines.push(\n ` \"${edge.from}\" -> \"${edge.to}_entry\" [${conditionLabel}lhead=cluster_${Array.from(arcNodes.keys()).indexOf(edge.to)}];`\n );\n } else if (\n arcNodes.has(edge.from) &&\n arcNodes.has(edge.to) &&\n edge.from !== edge.to\n ) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n const fromIdx = Array.from(arcNodes.keys()).indexOf(edge.from);\n const toIdx = Array.from(arcNodes.keys()).indexOf(edge.to);\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.to}_entry\" [${conditionLabel}ltail=cluster_${fromIdx}, lhead=cluster_${toIdx}];`\n );\n } else if (!arcNodes.has(edge.from) && !arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \" [style=dashed]\" : \"\";\n lines.push(` \"${edge.from}\" -> \"${edge.to}\"${conditionLabel};`);\n }\n }\n\n lines.push(`}`);\n return lines.join(\"\\n\");\n};\n","import type { Arc } from \"../types/arc\";\nimport { ArcStateContext } from \"../types/state\";\nimport { renderAsDot } from \"../renderers/renderer.dot\";\nimport { ArcNode, ArcEdge, ArcNodeKind } from \"../types\";\n\nexport class ArcBuilder<\n State extends Record<string, any> = any,\n Context extends Record<string, any> = any,\n> {\n private readonly id: string;\n private readonly description?: string;\n private readonly nodes: ArcNode[] = [];\n private readonly edges: ArcEdge[] = [];\n private readonly conditions: Map<\n string,\n (stateContext: ArcStateContext<State, Context>) => boolean\n > = new Map();\n\n constructor(opts: { id: string; description?: string }) {\n this.id = opts.id;\n this.description = opts.description;\n }\n\n addNode(id: string, kind: ArcNodeKind, handler: ArcNode[\"handler\"]): void {\n this.nodes.push({ id, kind, handler });\n }\n\n addEdge(edge: ArcEdge): void {\n this.edges.push(edge);\n }\n\n addCondition(\n name: string,\n fn: (sc: ArcStateContext<any, any>) => boolean\n ): void {\n this.conditions.set(name, fn);\n }\n\n getEdges(): ArcEdge[] {\n return this.edges;\n }\n\n build(): Arc<State, Context> {\n return {\n id: this.id,\n description: this.description,\n nodes: [...this.nodes],\n edges: [...this.edges],\n conditions: this.conditions,\n toDot: () =>\n renderAsDot(this.id, this.description, this.nodes, this.edges),\n };\n }\n}\n","import { z } from \"zod\";\nimport { Map as ImmutableMap } from \"immutable\";\nimport type { Arc as IArc } from \"../types/arc\";\nimport { ArcStateContext } from \"../types/state\";\nimport { ArcNodeKind } from \"../types/node\";\nimport type { ArcBuilder } from \"./builder.arc\";\nimport { createModels, ModelId, Models } from \"@arc-dev/models\";\nimport { ArcEvent } from \"../types\";\n\nexport class NodeBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n constructor(private builder: ArcBuilder<State, Context>) {}\n\n agent<NodeId extends string, Schema extends z.ZodTypeAny>(\n id: NodeId,\n config: {\n model: ModelId;\n messages: (sc: ArcStateContext<State, Context>) => {\n role: \"system\" | \"user\";\n content: string;\n }[];\n output: Schema;\n }\n ): void {\n this.builder.addNode(id, ArcNodeKind.Agent, {\n id: `${id}-agent`,\n run: async function* (\n stateContext: ArcStateContext<State, Context>\n ): AsyncIterable<ArcEvent<State, Context>> {\n const models = createModels();\n const model = models.get(config.model);\n\n const messages = config.messages(stateContext);\n\n const jsonSchema = z.toJSONSchema(config.output);\n\n const { $schema, ...cleanSchema } = jsonSchema as any;\n\n let fullContent = \"\";\n\n for await (const streamEvent of model.stream({\n messages,\n temperature: 0,\n response_format: {\n type: \"json_schema\",\n json_schema: {\n name: `${id}_output`,\n schema: cleanSchema,\n strict: true,\n },\n },\n })) {\n if (streamEvent.done) {\n fullContent = streamEvent.fullContent || fullContent;\n } else {\n yield {\n type: \"render\" as const,\n chunk: streamEvent.chunk,\n nodeId: id,\n };\n }\n }\n\n const parsed = JSON.parse(fullContent);\n const result = config.output.parse(parsed);\n\n // Store the result for this node (will be set in nodes.ts)\n (stateContext as any).__pendingContext = {\n nodeId: id,\n result: ImmutableMap(result as Record<string, any>),\n };\n },\n });\n }\n\n action<NodeId extends string>(\n id: NodeId,\n handler: (\n sc: ArcStateContext<State, Context> & {\n render: (chunk: string) => void;\n }\n ) => Promise<ImmutableMap<string, any>> | ImmutableMap<string, any>\n ): void {\n this.builder.addNode(id, ArcNodeKind.Action, {\n id: `${id}-action`,\n run: async function* (\n stateContext: ArcStateContext<State, Context>\n ): AsyncIterable<ArcEvent<State, Context>> {\n const renderChunks: string[] = [];\n\n const render = (chunk: string) => {\n renderChunks.push(chunk);\n };\n\n const result = await handler({\n ...stateContext,\n render,\n });\n\n for (const chunk of renderChunks) {\n yield {\n type: \"render\" as const,\n chunk,\n nodeId: id,\n };\n }\n\n (stateContext as any).__pendingState = result;\n },\n });\n }\n\n arc<NodeId extends string>(id: NodeId, arc: IArc<any>): void {\n this.builder.addNode(id, ArcNodeKind.Arc, {\n id: `${id}-arc`,\n run: async function* (): AsyncIterable<ArcEvent<State, Context>> {\n // NoOp\n },\n arc,\n } as any);\n }\n}\n","import { ArcStateContext } from \"../types/state\";\nimport type { ArcBuilder } from \"./builder.arc\";\n\nexport class EdgeConditionBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n constructor(\n private builder: ArcBuilder<State, Context>,\n private from: string,\n private to: string\n ) {}\n\n when(condition: string): this;\n when(condition: (sc: ArcStateContext<State, Context>) => boolean): this;\n when(\n condition: string | ((sc: ArcStateContext<State, Context>) => boolean)\n ): this {\n const edges = this.builder.getEdges();\n const lastEdge = edges[edges.length - 1];\n if (lastEdge && lastEdge.from === this.from && lastEdge.to === this.to) {\n if (typeof condition === \"string\") {\n lastEdge.condition = condition;\n } else {\n lastEdge.when = condition as any;\n }\n }\n return this;\n }\n\n maxIterations(max: number): this {\n const edges = this.builder.getEdges();\n const lastEdge = edges[edges.length - 1];\n if (lastEdge && lastEdge.from === this.from && lastEdge.to === this.to) {\n lastEdge.maxIterations = max;\n }\n return this;\n }\n}\n","import { ArcStateContext } from \"../types/state\";\nimport { EdgeConditionBuilder } from \"./builder.edge-condition\";\nimport type { ArcBuilder } from \"./builder.arc\";\nimport { ArcEdge, EventValidator, WaitConfig } from \"../types/edge\";\n\nexport class EdgeBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n private sourceNode: string | null = null;\n\n constructor(private builder: ArcBuilder<State, Context>) {}\n\n from(nodeId: string): this {\n this.sourceNode = nodeId;\n return this;\n }\n\n waitForInput(options?: {\n message?: string;\n validator?: EventValidator<State, Context>;\n }): this & { to(nodeId: string): EdgeConditionBuilder<State, Context> } {\n if (!this.sourceNode) {\n throw new Error(\"Must call from() before waitForInput()\");\n }\n\n const waitConfig: WaitConfig<State, Context> = {\n message: options?.message,\n validator: options?.validator,\n };\n\n const sourceNode = this.sourceNode;\n const builder = this.builder;\n\n return {\n ...this,\n to: (nodeId: string): EdgeConditionBuilder<State, Context> => {\n const edge: ArcEdge = {\n from: sourceNode,\n to: nodeId,\n wait: waitConfig,\n };\n builder.addEdge(edge);\n\n const conditionBuilder = new EdgeConditionBuilder(\n builder,\n sourceNode,\n nodeId\n );\n\n this.sourceNode = null;\n\n return conditionBuilder;\n },\n };\n }\n\n to(nodeId: string): EdgeConditionBuilder<State, Context> {\n if (!this.sourceNode) {\n throw new Error(\"Must call from() before to()\");\n }\n const edge: ArcEdge = {\n from: this.sourceNode,\n to: nodeId,\n };\n this.builder.addEdge(edge);\n const conditionBuilder = new EdgeConditionBuilder(\n this.builder,\n this.sourceNode,\n nodeId\n );\n\n this.sourceNode = null;\n\n return conditionBuilder;\n }\n\n condition<ConditionName extends string>(\n name: ConditionName,\n fn: (sc: ArcStateContext<State, Context>) => boolean\n ): string {\n this.builder.addCondition(name, fn);\n return name;\n }\n}\n","import type { Arc as IArc } from \"../types/arc\";\nimport { ArcBuilder } from \"./builder.arc\";\nimport { NodeBuilder } from \"./builder.node\";\nimport { EdgeBuilder } from \"./builder.edge\";\n\nexport { ArcBuilder } from \"./builder.arc\";\nexport { NodeBuilder } from \"./builder.node\";\nexport { EdgeBuilder } from \"./builder.edge\";\nexport { EdgeConditionBuilder } from \"./builder.edge-condition\";\nexport { renderAsDot } from \"../renderers/renderer.dot\";\n\n/**\n * Creates a new Arc with the edge-centric API.\n * @param id - The Arc identifier\n * @param configurator - Function to configure nodes and edges\n * @returns A new Arc instance\n */\nexport function Arc<State extends Record<string, any>>(\n id: string,\n configurator: (helpers: {\n node: NodeBuilder<State, any>;\n edge: EdgeBuilder<State, any>;\n }) => void\n): IArc<any> {\n const builder = new ArcBuilder<State, Record<string, never>>({\n id,\n });\n\n const nodeBuilder = new NodeBuilder<State, any>(builder);\n const edgeBuilder = new EdgeBuilder<State, any>(builder);\n\n configurator({ node: nodeBuilder, edge: edgeBuilder });\n\n return builder.build();\n}\n","export type ArcRunId = `run_${string}`;\n\nexport enum ArcRunStatus {\n SUCCESS = \"success\",\n WAITING = \"waiting\",\n QUEUED = \"queued\",\n RUNNING = \"running\",\n COMPLETED = \"completed\",\n FAILED = \"failed\",\n CANCELLED = \"cancelled\",\n TIMEOUT = \"timeout\",\n}\n\nexport type ArcRunResult<Context, State = any> = {\n runId: ArcRunId;\n arcId: string;\n status: ArcRunStatus;\n startedAt: string;\n finishedAt: string;\n context: Context;\n state: State;\n error?: string;\n};\n","export enum LogVerbosity {\n Silent = 0,\n Fatal = 1,\n Error = 2,\n Warn = 3,\n Info = 4,\n Debug = 5,\n Trace = 6,\n}\n","import * as readline from \"node:readline\";\nimport { ArcRuntime, ArcEvent, LogVerbosity } from \"../types\";\n\nexport class TerminalChannel {\n private currentNode: string | undefined;\n\n constructor(private readonly verbosity?: LogVerbosity) {\n this.verbosity = verbosity ?? LogVerbosity.Silent;\n }\n\n async consume<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n runtime: ArcRuntime,\n events: AsyncIterable<ArcEvent<State, Context>>\n ): Promise<{ finalState: State; finalContext: Context }> {\n let finalState: State | undefined;\n let finalContext: Context | undefined;\n\n console.log(\"🚀 Starting Arc execution...\");\n console.log();\n\n let nodeIndex = 0;\n\n for await (const event of events) {\n switch (event.type) {\n case \"render\": {\n if (event.nodeId && event.nodeId !== this.currentNode) {\n if (nodeIndex > 0) {\n console.log();\n console.log();\n }\n this.currentNode = event.nodeId;\n this.printNodeHeader(event.nodeId);\n nodeIndex++;\n }\n\n process.stdout.write(event.chunk);\n break;\n }\n\n case \"paused\": {\n console.log();\n const answer = await this.askUser(\n event.prompt || \"Enter input: \",\n event.validator\n ? (input: string) => {\n const result = event.validator!(input, {} as any);\n if (result.valid) {\n return { valid: true };\n }\n return {\n valid: false,\n message: result.message,\n };\n }\n : undefined\n );\n const resumeKey = event.sessionId || event.nodeId;\n await runtime.resume(resumeKey, answer);\n break;\n }\n\n case \"log\": {\n this.printLog(event.level, event.message);\n break;\n }\n\n case \"done\":\n console.log();\n this.printSuccess();\n finalState = event.finalState;\n finalContext = event.finalContext;\n break;\n\n case \"error\":\n console.log();\n this.printError(event.error);\n throw event.error;\n }\n }\n\n if (!finalState || !finalContext) {\n throw new Error(\"Arc did not complete successfully\");\n }\n\n return { finalState, finalContext };\n }\n\n private printNodeHeader(id: string): void {\n console.log(`\\x1b[36m- ${id}\\x1b[0m`);\n }\n\n private printLog(level: string, message: string): void {\n if (this.verbosity === LogVerbosity.Silent) {\n return;\n }\n\n const colors = {\n debug: \"\\x1b[90m\", // gray\n info: \"\\x1b[36m\", // cyan\n warn: \"\\x1b[33m\", // yellow\n error: \"\\x1b[31m\", // red\n };\n const color = colors[level as keyof typeof colors] || \"\\x1b[0m\";\n const prefix = level.toUpperCase().padEnd(5);\n\n console.log(`${color}[${prefix}] ${message}\\x1b[0m`);\n }\n\n private printSuccess(): void {\n console.log(`\\x1b[32m✓ Arc completed successfully\\x1b[0m`);\n }\n\n private printError(error: Error): void {\n console.log(`\\x1b[31m✗ Arc failed: ${error.message}\\x1b[0m`);\n }\n\n private async askUser(\n prompt: string,\n validator?: (input: string) => { valid: boolean; message?: string }\n ): Promise<string> {\n while (true) {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n const answer = await new Promise<string>((resolve) => {\n rl.question(prompt, resolve);\n });\n\n rl.close();\n\n if (validator) {\n const validation = validator(answer);\n\n if (!validation.valid) {\n console.log(\n ` \\x1b[31m✗ ${validation.message || \"Invalid input\"}\\x1b[0m`\n );\n continue;\n }\n }\n\n return answer;\n }\n }\n}\n","import { ArcStateContext, ImmutableMap, TypedImmutableMap } from \".\";\n\nexport class ArcState<\n State extends Record<string, any>,\n Context extends Record<string, any> = Record<string, never>,\n> {\n private state: ImmutableMap<string, any>;\n private nodeContext: ImmutableMap<string, any>;\n private edgeIn: ImmutableMap<string, any>;\n\n constructor(initial: State) {\n this.state = ImmutableMap<string, any>(initial);\n this.nodeContext = ImmutableMap<string, any>();\n this.edgeIn = ImmutableMap<string, any>();\n }\n\n getState(): ImmutableMap<string, any> {\n return this.state;\n }\n\n getContext(): ImmutableMap<string, any> & Context {\n return this.nodeContext as ImmutableMap<string, any> & Context;\n }\n\n getEdgeIn(): ImmutableMap<string, any> {\n return this.edgeIn;\n }\n\n getStateContext(): ArcStateContext<State, Context> {\n return {\n state: this.state as TypedImmutableMap<State>,\n context: this.nodeContext as TypedImmutableMap<Context>,\n edgeIn: this.edgeIn,\n };\n }\n\n setState(newState: ImmutableMap<string, any>): ImmutableMap<string, any> {\n this.state = newState;\n return this.state;\n }\n\n setContext<K extends string, V>(\n key: K,\n value: V\n ): ImmutableMap<string, any> & (Context & { [P in K]: V }) {\n const immutableValue =\n value && typeof value === \"object\" && !ImmutableMap.isMap(value)\n ? ImmutableMap(value)\n : value;\n\n this.nodeContext = this.nodeContext.set(key, immutableValue);\n\n return this.nodeContext as ImmutableMap<string, any> &\n (Context & { [P in K]: V });\n }\n\n setEdgeIn(nodeId: string, value: any): void {\n this.edgeIn = this.edgeIn.set(nodeId, value);\n }\n\n serialize(): {\n state: any;\n context: any;\n edgeIn: any;\n } {\n return {\n state: this.state.toJS(),\n context: this.nodeContext.toJS(),\n edgeIn: this.edgeIn.toJS(),\n };\n }\n\n static fromSerialized<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(serialized: {\n state: State;\n context?: Context;\n edgeIn?: Record<string, any>;\n }): ArcState<State, Context> {\n const arcState = new ArcState<State, Context>(serialized.state);\n\n if (serialized.context) {\n for (const [key, value] of Object.entries(serialized.context)) {\n arcState.setContext(key, value);\n }\n }\n\n if (serialized.edgeIn) {\n for (const [nodeId, value] of Object.entries(serialized.edgeIn)) {\n arcState.setEdgeIn(nodeId, value);\n }\n }\n\n return arcState;\n }\n}\n"],"names":["ArcNodeKind","models","createModels","z","ImmutableMap","ArcRunStatus","LogVerbosity","readline"],"mappings":"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"}
{"version":3,"file":"index.cjs","sources":["../src/types/node.ts","../src/renderers/renderer.dot.ts","../src/builders/builder.arc.ts","../src/builders/builder.node.ts","../src/builders/builder.edge-condition.ts","../src/builders/builder.edge.ts","../src/builders/index.ts","../src/types/result.ts","../src/types/logging.ts","../src/channels/terminal.ts","../src/state.ts"],"sourcesContent":["import type { Arc } from \"./arc\";\nimport { ArcStateContext } from \"./state\";\nimport { ArcEvent } from \"./events\";\n\nexport enum ArcNodeKind {\n Agent = \"agent\",\n Action = \"action\",\n Arc = \"arc\",\n}\n\nexport interface ArcNode<\n State extends Record<string, any> = any,\n Context extends Record<string, any> = any,\n> {\n id: string;\n kind: ArcNodeKind;\n handler: {\n id: string;\n run: (\n sc: ArcStateContext<State, Context>,\n nodeId: string\n ) => AsyncIterable<ArcEvent<State, Context>>;\n arc?: Arc<State, Context>;\n };\n}\n","import { ArcNodeKind } from \"../types/node\";\nimport type { Arc as IArc } from \"../types/arc\";\nimport type { ArcNode } from \"../types/node\";\nimport type { ArcEdge } from \"../types/edge\";\n\nexport const renderAsDot = (\n id: string,\n description: string | undefined,\n nodes: ArcNode[],\n edges: ArcEdge[]\n): string => {\n const lines: string[] = [];\n\n lines.push(`digraph \"${id}\" {`);\n lines.push(` label=\"${description || id}\";`);\n lines.push(` rankdir=TB;`);\n lines.push(` node [fontname=\"Arial\", fontsize=12];`);\n lines.push(` compound=true;`);\n lines.push(``);\n\n const getNodeStyle = (kind: ArcNodeKind): string => {\n switch (kind) {\n case ArcNodeKind.Agent:\n return 'shape=box, style=filled, fillcolor=\"#E3F2FD\", color=\"#1976D2\"';\n case ArcNodeKind.Action:\n return 'shape=box, style=\"filled,rounded\", fillcolor=\"#E8F5E9\", color=\"#388E3C\"';\n case ArcNodeKind.Arc:\n return 'shape=box, style=\"filled,dashed\", fillcolor=\"#FFF3E0\", color=\"#F57C00\"';\n default:\n return \"shape=box\";\n }\n };\n\n const arcNodes = new Map<string, IArc<any>>();\n const loopEdges = new Set<string>();\n\n for (const node of nodes) {\n if (node.kind === ArcNodeKind.Arc && node.handler.arc) {\n arcNodes.set(node.id, node.handler.arc);\n }\n }\n\n for (const edge of edges) {\n if (edge.from === edge.to && arcNodes.has(edge.from)) {\n loopEdges.add(`${edge.from}->${edge.to}`);\n }\n }\n\n // Render nodes with Arc nodes as subgraphs\n let clusterIndex = 0;\n for (const node of nodes) {\n if (node.kind === ArcNodeKind.Arc && node.handler.arc) {\n const arc = node.handler.arc;\n const loopEdge = edges.find(\n (e) => e.from === node.id && e.to === node.id\n );\n const maxIterations = loopEdge?.maxIterations;\n\n lines.push(` subgraph cluster_${clusterIndex} {`);\n lines.push(\n ` label=\"${node.id}\\\\n[loop${maxIterations ? ` max: ${maxIterations}` : \"\"}]\";`\n );\n lines.push(` style=filled;`);\n lines.push(` fillcolor=\"#FFF3E0\";`);\n lines.push(` color=\"#F57C00\";`);\n lines.push(` penwidth=2;`);\n lines.push(``);\n\n // Create an entry node for the subgraph\n lines.push(\n ` \"${node.id}_entry\" [label=\"entry\", shape=circle, style=filled, fillcolor=\"#F57C00\", fontcolor=white, width=0.5, height=0.5];`\n );\n\n // Render inner arc nodes\n for (const innerNode of arc.nodes) {\n const innerStyle = getNodeStyle(innerNode.kind);\n const innerLabel = `${innerNode.id}\\\\n[${innerNode.kind}]`;\n lines.push(\n ` \"${node.id}.${innerNode.id}\" [label=\"${innerLabel}\", ${innerStyle}];`\n );\n }\n\n // Create an exit node for the subgraph\n lines.push(\n ` \"${node.id}_exit\" [label=\"exit\", shape=circle, style=filled, fillcolor=\"#F57C00\", fontcolor=white, width=0.5, height=0.5];`\n );\n lines.push(``);\n\n // Render inner arc edges\n for (const innerEdge of arc.edges) {\n const hasCondition = innerEdge.condition || innerEdge.when;\n const edgeStyle = hasCondition ? \" [style=dashed]\" : \"\";\n lines.push(\n ` \"${node.id}.${innerEdge.from}\" -> \"${node.id}.${innerEdge.to}\"${edgeStyle};`\n );\n }\n\n // Connect entry to first nodes (nodes with no incoming edges)\n const innerNodesWithIncoming = new Set(arc.edges.map((e) => e.to));\n const firstInnerNodes = arc.nodes.filter(\n (n) => !innerNodesWithIncoming.has(n.id)\n );\n for (const firstNode of firstInnerNodes) {\n lines.push(` \"${node.id}_entry\" -> \"${node.id}.${firstNode.id}\";`);\n }\n\n // Connect last nodes to exit (nodes with no outgoing edges, unless they're part of internal loops)\n const innerNodesWithOutgoing = new Set(arc.edges.map((e) => e.from));\n const lastInnerNodes = arc.nodes.filter(\n (n) => !innerNodesWithOutgoing.has(n.id)\n );\n for (const lastNode of lastInnerNodes) {\n lines.push(` \"${node.id}.${lastNode.id}\" -> \"${node.id}_exit\";`);\n }\n\n lines.push(` }`);\n lines.push(``);\n clusterIndex++;\n } else {\n // Regular node\n const style = getNodeStyle(node.kind);\n const label = `${node.id}\\\\n[${node.kind}]`;\n lines.push(` \"${node.id}\" [label=\"${label}\", ${style}];`);\n }\n }\n\n lines.push(``);\n\n // Render edges\n for (const edge of edges) {\n const isLoopEdge = loopEdges.has(`${edge.from}->${edge.to}`);\n const hasCondition = edge.condition || edge.when;\n\n if (isLoopEdge) {\n const conditionPart = hasCondition ? \"style=dashed, \" : \"\";\n const maxIterPart = edge.maxIterations\n ? `, label=\"max: ${edge.maxIterations}\"`\n : \"\";\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.from}_entry\" [${conditionPart}color=\"#F57C00\", penwidth=2${maxIterPart}, constraint=false];`\n );\n } else if (arcNodes.has(edge.from) && !arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.to}\" [${conditionLabel}ltail=cluster_${Array.from(arcNodes.keys()).indexOf(edge.from)}];`\n );\n } else if (!arcNodes.has(edge.from) && arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n lines.push(\n ` \"${edge.from}\" -> \"${edge.to}_entry\" [${conditionLabel}lhead=cluster_${Array.from(arcNodes.keys()).indexOf(edge.to)}];`\n );\n } else if (\n arcNodes.has(edge.from) &&\n arcNodes.has(edge.to) &&\n edge.from !== edge.to\n ) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n const fromIdx = Array.from(arcNodes.keys()).indexOf(edge.from);\n const toIdx = Array.from(arcNodes.keys()).indexOf(edge.to);\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.to}_entry\" [${conditionLabel}ltail=cluster_${fromIdx}, lhead=cluster_${toIdx}];`\n );\n } else if (!arcNodes.has(edge.from) && !arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \" [style=dashed]\" : \"\";\n lines.push(` \"${edge.from}\" -> \"${edge.to}\"${conditionLabel};`);\n }\n }\n\n lines.push(`}`);\n return lines.join(\"\\n\");\n};\n","import type { Arc } from \"../types/arc\";\nimport { ArcStateContext } from \"../types/state\";\nimport { renderAsDot } from \"../renderers/renderer.dot\";\nimport { ArcNode, ArcEdge, ArcNodeKind } from \"../types\";\n\nexport class ArcBuilder<\n State extends Record<string, any> = any,\n Context extends Record<string, any> = any,\n> {\n private readonly id: string;\n private readonly description?: string;\n private readonly nodes: ArcNode[] = [];\n private readonly edges: ArcEdge[] = [];\n private readonly conditions: Map<\n string,\n (stateContext: ArcStateContext<State, Context>) => boolean\n > = new Map();\n\n constructor(opts: { id: string; description?: string }) {\n this.id = opts.id;\n this.description = opts.description;\n }\n\n addNode(id: string, kind: ArcNodeKind, handler: ArcNode[\"handler\"]): void {\n this.nodes.push({ id, kind, handler });\n }\n\n addEdge(edge: ArcEdge): void {\n this.edges.push(edge);\n }\n\n addCondition(\n name: string,\n fn: (sc: ArcStateContext<any, any>) => boolean\n ): void {\n this.conditions.set(name, fn);\n }\n\n getEdges(): ArcEdge[] {\n return this.edges;\n }\n\n build(): Arc<State, Context> {\n return {\n id: this.id,\n description: this.description,\n nodes: [...this.nodes],\n edges: [...this.edges],\n conditions: this.conditions,\n toDot: () =>\n renderAsDot(this.id, this.description, this.nodes, this.edges),\n };\n }\n}\n","import { z } from \"zod\";\nimport { Map as ImmutableMap } from \"immutable\";\nimport type { Arc as IArc } from \"../types/arc\";\nimport { ArcStateContext } from \"../types/state\";\nimport { ArcNodeKind } from \"../types/node\";\nimport type { ArcBuilder } from \"./builder.arc\";\nimport { createModels, ModelId, Models } from \"@arc-dev/models\";\nimport { ArcEvent } from \"../types\";\n\nexport class NodeBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n constructor(private builder: ArcBuilder<State, Context>) {}\n\n agent<NodeId extends string, Schema extends z.ZodTypeAny>(\n id: NodeId,\n config: {\n model: ModelId;\n messages: (sc: ArcStateContext<State, Context>) => {\n role: \"system\" | \"user\";\n content: string;\n }[];\n output: Schema;\n }\n ): void {\n this.builder.addNode(id, ArcNodeKind.Agent, {\n id: `${id}-agent`,\n run: async function* (\n stateContext: ArcStateContext<State, Context>\n ): AsyncIterable<ArcEvent<State, Context>> {\n const models = createModels();\n const model = models.get(config.model);\n\n const messages = config.messages(stateContext);\n\n const jsonSchema = z.toJSONSchema(config.output);\n\n const { $schema, ...cleanSchema } = jsonSchema as any;\n\n let fullContent = \"\";\n\n for await (const streamEvent of model.stream({\n messages,\n temperature: 0,\n response_format: {\n type: \"json_schema\",\n json_schema: {\n name: `${id}_output`,\n schema: cleanSchema,\n strict: true,\n },\n },\n })) {\n if (streamEvent.done) {\n fullContent = streamEvent.fullContent || fullContent;\n } else {\n yield {\n type: \"render\" as const,\n chunk: streamEvent.chunk,\n nodeId: id,\n };\n }\n }\n\n const parsed = JSON.parse(fullContent);\n const result = config.output.parse(parsed);\n\n // Store the result for this node (will be set in nodes.ts)\n (stateContext as any).__pendingContext = {\n nodeId: id,\n result: ImmutableMap(result as Record<string, any>),\n };\n },\n });\n }\n\n action<NodeId extends string>(\n id: NodeId,\n handler: (\n sc: ArcStateContext<State, Context> & {\n render: (chunk: string) => void;\n }\n ) => Promise<ImmutableMap<string, any>> | ImmutableMap<string, any>\n ): void {\n this.builder.addNode(id, ArcNodeKind.Action, {\n id: `${id}-action`,\n run: async function* (\n stateContext: ArcStateContext<State, Context>\n ): AsyncIterable<ArcEvent<State, Context>> {\n const renderChunks: string[] = [];\n\n const render = (chunk: string) => {\n renderChunks.push(chunk);\n };\n\n const result = await handler({\n ...stateContext,\n render,\n });\n\n for (const chunk of renderChunks) {\n yield {\n type: \"render\" as const,\n chunk,\n nodeId: id,\n };\n }\n\n (stateContext as any).__pendingState = result;\n },\n });\n }\n\n arc<NodeId extends string>(id: NodeId, arc: IArc<any>): void {\n this.builder.addNode(id, ArcNodeKind.Arc, {\n id: `${id}-arc`,\n run: async function* (): AsyncIterable<ArcEvent<State, Context>> {\n // NoOp\n },\n arc,\n } as any);\n }\n}\n","import { ArcStateContext } from \"../types/state\";\nimport type { ArcBuilder } from \"./builder.arc\";\n\nexport class EdgeConditionBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n constructor(\n private builder: ArcBuilder<State, Context>,\n private from: string,\n private to: string\n ) {}\n\n when(condition: string): this;\n when(condition: (sc: ArcStateContext<State, Context>) => boolean): this;\n when(\n condition: string | ((sc: ArcStateContext<State, Context>) => boolean)\n ): this {\n const edges = this.builder.getEdges();\n const lastEdge = edges[edges.length - 1];\n if (lastEdge && lastEdge.from === this.from && lastEdge.to === this.to) {\n if (typeof condition === \"string\") {\n lastEdge.condition = condition;\n } else {\n lastEdge.when = condition as any;\n }\n }\n return this;\n }\n\n maxIterations(max: number): this {\n const edges = this.builder.getEdges();\n const lastEdge = edges[edges.length - 1];\n if (lastEdge && lastEdge.from === this.from && lastEdge.to === this.to) {\n lastEdge.maxIterations = max;\n }\n return this;\n }\n}\n","import { ArcStateContext } from \"../types/state\";\nimport { EdgeConditionBuilder } from \"./builder.edge-condition\";\nimport type { ArcBuilder } from \"./builder.arc\";\nimport { ArcEdge, EventValidator, WaitConfig } from \"../types/edge\";\n\nexport class EdgeBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n private sourceNode: string | null = null;\n\n constructor(private builder: ArcBuilder<State, Context>) {}\n\n from(nodeId: string): this {\n this.sourceNode = nodeId;\n return this;\n }\n\n waitForInput(options?: {\n message?: string;\n validator?: EventValidator<State, Context>;\n }): this & { to(nodeId: string): EdgeConditionBuilder<State, Context> } {\n if (!this.sourceNode) {\n throw new Error(\"Must call from() before waitForInput()\");\n }\n\n const waitConfig: WaitConfig<State, Context> = {\n message: options?.message,\n validator: options?.validator,\n };\n\n const sourceNode = this.sourceNode;\n const builder = this.builder;\n\n return {\n ...this,\n to: (nodeId: string): EdgeConditionBuilder<State, Context> => {\n const edge: ArcEdge = {\n from: sourceNode,\n to: nodeId,\n wait: waitConfig,\n };\n builder.addEdge(edge);\n\n const conditionBuilder = new EdgeConditionBuilder(\n builder,\n sourceNode,\n nodeId\n );\n\n this.sourceNode = null;\n\n return conditionBuilder;\n },\n };\n }\n\n to(nodeId: string): EdgeConditionBuilder<State, Context> {\n if (!this.sourceNode) {\n throw new Error(\"Must call from() before to()\");\n }\n const edge: ArcEdge = {\n from: this.sourceNode,\n to: nodeId,\n };\n this.builder.addEdge(edge);\n const conditionBuilder = new EdgeConditionBuilder(\n this.builder,\n this.sourceNode,\n nodeId\n );\n\n this.sourceNode = null;\n\n return conditionBuilder;\n }\n\n condition<ConditionName extends string>(\n name: ConditionName,\n fn: (sc: ArcStateContext<State, Context>) => boolean\n ): string {\n this.builder.addCondition(name, fn);\n return name;\n }\n}\n","import type { Arc as IArc } from \"../types/arc\";\nimport { ArcBuilder } from \"./builder.arc\";\nimport { NodeBuilder } from \"./builder.node\";\nimport { EdgeBuilder } from \"./builder.edge\";\n\nexport { ArcBuilder } from \"./builder.arc\";\nexport { NodeBuilder } from \"./builder.node\";\nexport { EdgeBuilder } from \"./builder.edge\";\nexport { EdgeConditionBuilder } from \"./builder.edge-condition\";\nexport { renderAsDot } from \"../renderers/renderer.dot\";\n\n/**\n * Creates a new Arc with the edge-centric API.\n * @param id - The Arc identifier\n * @param configurator - Function to configure nodes and edges\n * @returns A new Arc instance\n */\nexport function Arc<State extends Record<string, any>>(\n id: string,\n configurator: (helpers: {\n node: NodeBuilder<State, any>;\n edge: EdgeBuilder<State, any>;\n }) => void\n): IArc<any> {\n const builder = new ArcBuilder<State, Record<string, never>>({\n id,\n });\n\n const nodeBuilder = new NodeBuilder<State, any>(builder);\n const edgeBuilder = new EdgeBuilder<State, any>(builder);\n\n configurator({ node: nodeBuilder, edge: edgeBuilder });\n\n return builder.build();\n}\n","export type ArcRunId = `run_${string}`;\n\nexport enum ArcRunStatus {\n SUCCESS = \"success\",\n WAITING = \"waiting\",\n QUEUED = \"queued\",\n RUNNING = \"running\",\n COMPLETED = \"completed\",\n FAILED = \"failed\",\n CANCELLED = \"cancelled\",\n TIMEOUT = \"timeout\",\n}\n\nexport type ArcRunResult<Context, State = any> = {\n runId: ArcRunId;\n arcId: string;\n status: ArcRunStatus;\n startedAt: string;\n finishedAt: string;\n context: Context;\n state: State;\n error?: string;\n};\n","export enum LogVerbosity {\n Silent = 0,\n Fatal = 1,\n Error = 2,\n Warn = 3,\n Info = 4,\n Debug = 5,\n Trace = 6,\n}\n","import * as readline from \"node:readline\";\nimport { ArcRuntime, ArcEvent, LogVerbosity } from \"../types\";\n\nexport class TerminalChannel {\n private currentNode: string | undefined;\n\n constructor(private readonly verbosity?: LogVerbosity) {\n this.verbosity = verbosity ?? LogVerbosity.Silent;\n }\n\n async consume<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n runtime: ArcRuntime,\n events: AsyncIterable<ArcEvent<State, Context>>\n ): Promise<{ finalState: State; finalContext: Context }> {\n let finalState: State | undefined;\n let finalContext: Context | undefined;\n\n console.log(\"🚀 Starting Arc execution...\");\n console.log();\n\n let nodeIndex = 0;\n\n for await (const event of events) {\n switch (event.type) {\n case \"render\": {\n if (event.nodeId && event.nodeId !== this.currentNode) {\n if (nodeIndex > 0) {\n console.log();\n console.log();\n }\n this.currentNode = event.nodeId;\n this.printNodeHeader(event.nodeId);\n nodeIndex++;\n }\n\n process.stdout.write(event.chunk);\n break;\n }\n\n case \"paused\": {\n console.log();\n const answer = await this.askUser(\n event.prompt || \"Enter input: \",\n event.validator\n ? (input: string) => {\n const result = event.validator!(input, {} as any);\n if (result.valid) {\n return { valid: true };\n }\n return {\n valid: false,\n message: result.message,\n };\n }\n : undefined\n );\n const resumeKey = event.sessionId || event.nodeId;\n await runtime.resume(resumeKey, answer);\n break;\n }\n\n case \"log\": {\n this.printLog(event.level, event.message);\n break;\n }\n\n case \"done\":\n console.log();\n this.printSuccess();\n finalState = event.finalState;\n finalContext = event.finalContext;\n break;\n\n case \"error\":\n console.log();\n this.printError(event.error);\n throw event.error;\n }\n }\n\n if (!finalState || !finalContext) {\n throw new Error(\"Arc did not complete successfully\");\n }\n\n return { finalState, finalContext };\n }\n\n private printNodeHeader(id: string): void {\n console.log(`\\x1b[36m- ${id}\\x1b[0m`);\n }\n\n private printLog(level: string, message: string): void {\n if (this.verbosity === LogVerbosity.Silent) {\n return;\n }\n\n const colors = {\n debug: \"\\x1b[90m\", // gray\n info: \"\\x1b[36m\", // cyan\n warn: \"\\x1b[33m\", // yellow\n error: \"\\x1b[31m\", // red\n };\n const color = colors[level as keyof typeof colors] || \"\\x1b[0m\";\n const prefix = level.toUpperCase().padEnd(5);\n\n console.log(`${color}[${prefix}] ${message}\\x1b[0m`);\n }\n\n private printSuccess(): void {\n console.log(`\\x1b[32m✓ Arc completed successfully\\x1b[0m`);\n }\n\n private printError(error: Error): void {\n console.log(`\\x1b[31m✗ Arc failed: ${error.message}\\x1b[0m`);\n }\n\n private async askUser(\n prompt: string,\n validator?: (input: string) => { valid: boolean; message?: string }\n ): Promise<string> {\n while (true) {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n const answer = await new Promise<string>((resolve) => {\n rl.question(prompt, resolve);\n });\n\n rl.close();\n\n if (validator) {\n const validation = validator(answer);\n\n if (!validation.valid) {\n console.log(\n ` \\x1b[31m✗ ${validation.message || \"Invalid input\"}\\x1b[0m`\n );\n continue;\n }\n }\n\n return answer;\n }\n }\n}\n","import { ArcStateContext, ImmutableMap, TypedImmutableMap } from \".\";\n\nexport class ArcState<\n State extends Record<string, any>,\n Context extends Record<string, any> = Record<string, never>,\n> {\n private state: ImmutableMap<string, any>;\n private nodeContext: ImmutableMap<string, any>;\n private edgeContext: ImmutableMap<string, any>;\n\n constructor(initial: State) {\n this.state = ImmutableMap<string, any>(initial);\n this.nodeContext = ImmutableMap<string, any>();\n this.edgeContext = ImmutableMap<string, any>();\n }\n\n getState(): ImmutableMap<string, any> {\n return this.state;\n }\n\n getContext(): ImmutableMap<string, any> & Context {\n return this.nodeContext as ImmutableMap<string, any> & Context;\n }\n\n getEdgeContext(): ImmutableMap<string, any> {\n return this.edgeContext;\n }\n\n getStateContext(): ArcStateContext<State, Context> {\n return {\n state: this.state as TypedImmutableMap<State>,\n context: this.nodeContext as TypedImmutableMap<Context>,\n edgeContext: this.edgeContext,\n };\n }\n\n setState(newState: ImmutableMap<string, any>): ImmutableMap<string, any> {\n this.state = newState;\n return this.state;\n }\n\n setContext<K extends string, V>(\n key: K,\n value: V\n ): ImmutableMap<string, any> & (Context & { [P in K]: V }) {\n const immutableValue =\n value && typeof value === \"object\" && !ImmutableMap.isMap(value)\n ? ImmutableMap(value)\n : value;\n\n this.nodeContext = this.nodeContext.set(key, immutableValue);\n\n return this.nodeContext as ImmutableMap<string, any> &\n (Context & { [P in K]: V });\n }\n\n setEdgeContext(nodeId: string, value: any): void {\n this.edgeContext = this.edgeContext.set(nodeId, value);\n }\n\n clearEdgeContext(nodeId: string): void {\n this.edgeContext = this.edgeContext.delete(nodeId);\n }\n\n serialize(): {\n state: any;\n nodeContext: any;\n edgeContext: any;\n } {\n return {\n state: this.state.toJS(),\n nodeContext: this.nodeContext.toJS(),\n edgeContext: this.edgeContext.toJS(),\n };\n }\n\n static fromSerialized<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(serialized: {\n state: State;\n nodeContext?: Context;\n edgeContext?: Record<string, any>;\n }): ArcState<State, Context> {\n const arcState = new ArcState<State, Context>(serialized.state);\n\n if (serialized.nodeContext) {\n for (const [key, value] of Object.entries(serialized.nodeContext)) {\n arcState.setContext(key, value);\n }\n }\n\n if (serialized.edgeContext) {\n for (const [nodeId, value] of Object.entries(serialized.edgeContext)) {\n arcState.setEdgeContext(nodeId, value);\n }\n }\n\n return arcState;\n }\n}\n"],"names":["ArcNodeKind","models","createModels","z","ImmutableMap","ArcRunStatus","LogVerbosity","readline"],"mappings":"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"}

@@ -13,3 +13,3 @@ import { Map as Map$1 } from 'immutable';

context: TypedImmutableMap<Context>;
edgeIn: Map$1<string, string>;
edgeContext: Map$1<string, string>;
}

@@ -72,7 +72,14 @@

state: any;
context: any;
edgeIn: any;
nodeContext: any;
edgeContext: any;
};
};
type ArcEvent<State extends Record<string, any>, Context extends Record<string, any>> = RenderEvent | DoneEvent<State, Context> | ErrorEvent | LogEvent | PausedEvent<State, Context>;
type StateEvent<State extends Record<string, any>, Context extends Record<string, any>> = {
type: "state";
nodeId: string;
state: State;
context: Context;
timestamp: number;
};
type ArcEvent<State extends Record<string, any>, Context extends Record<string, any>> = RenderEvent | DoneEvent<State, Context> | ErrorEvent | LogEvent | PausedEvent<State, Context> | StateEvent<State, Context>;

@@ -228,7 +235,7 @@ declare enum ArcNodeKind {

private nodeContext;
private edgeIn;
private edgeContext;
constructor(initial: State);
getState(): Map$1<string, any>;
getContext(): Map$1<string, any> & Context;
getEdgeIn(): Map$1<string, any>;
getEdgeContext(): Map$1<string, any>;
getStateContext(): ArcStateContext<State, Context>;

@@ -239,12 +246,13 @@ setState(newState: Map$1<string, any>): Map$1<string, any>;

});
setEdgeIn(nodeId: string, value: any): void;
setEdgeContext(nodeId: string, value: any): void;
clearEdgeContext(nodeId: string): void;
serialize(): {
state: any;
context: any;
edgeIn: any;
nodeContext: any;
edgeContext: any;
};
static fromSerialized<State extends Record<string, any>, Context extends Record<string, any>>(serialized: {
state: State;
context?: Context;
edgeIn?: Record<string, any>;
nodeContext?: Context;
edgeContext?: Record<string, any>;
}): ArcState<State, Context>;

@@ -254,2 +262,2 @@ }

export { ArcNodeKind, ArcRunStatus, ArcState, LogVerbosity, TerminalChannel, Arc as createArc };
export type { Arc$1 as Arc, ArcEdge, ArcEdgeCondition, ArcEvent, ArcNode, ArcRunId, ArcRunResult, ArcRuntime, ArcStateContext, DoneEvent, ErrorEvent, EventValidator, LogEvent, LogLevel, PausedEvent, RenderEvent, TypedImmutableMap, ValidationResult, WaitConfig };
export type { Arc$1 as Arc, ArcEdge, ArcEdgeCondition, ArcEvent, ArcNode, ArcRunId, ArcRunResult, ArcRuntime, ArcStateContext, DoneEvent, ErrorEvent, EventValidator, LogEvent, LogLevel, PausedEvent, RenderEvent, StateEvent, TypedImmutableMap, ValidationResult, WaitConfig };

@@ -493,7 +493,7 @@ import { z } from 'zod';

nodeContext;
edgeIn;
edgeContext;
constructor(initial) {
this.state = Map$1(initial);
this.nodeContext = Map$1();
this.edgeIn = Map$1();
this.edgeContext = Map$1();
}

@@ -506,4 +506,4 @@ getState() {

}
getEdgeIn() {
return this.edgeIn;
getEdgeContext() {
return this.edgeContext;
}

@@ -514,3 +514,3 @@ getStateContext() {

context: this.nodeContext,
edgeIn: this.edgeIn,
edgeContext: this.edgeContext,
};

@@ -529,10 +529,13 @@ }

}
setEdgeIn(nodeId, value) {
this.edgeIn = this.edgeIn.set(nodeId, value);
setEdgeContext(nodeId, value) {
this.edgeContext = this.edgeContext.set(nodeId, value);
}
clearEdgeContext(nodeId) {
this.edgeContext = this.edgeContext.delete(nodeId);
}
serialize() {
return {
state: this.state.toJS(),
context: this.nodeContext.toJS(),
edgeIn: this.edgeIn.toJS(),
nodeContext: this.nodeContext.toJS(),
edgeContext: this.edgeContext.toJS(),
};

@@ -542,10 +545,10 @@ }

const arcState = new ArcState(serialized.state);
if (serialized.context) {
for (const [key, value] of Object.entries(serialized.context)) {
if (serialized.nodeContext) {
for (const [key, value] of Object.entries(serialized.nodeContext)) {
arcState.setContext(key, value);
}
}
if (serialized.edgeIn) {
for (const [nodeId, value] of Object.entries(serialized.edgeIn)) {
arcState.setEdgeIn(nodeId, value);
if (serialized.edgeContext) {
for (const [nodeId, value] of Object.entries(serialized.edgeContext)) {
arcState.setEdgeContext(nodeId, value);
}

@@ -552,0 +555,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sources":["../src/types/node.ts","../src/renderers/renderer.dot.ts","../src/builders/builder.arc.ts","../src/builders/builder.node.ts","../src/builders/builder.edge-condition.ts","../src/builders/builder.edge.ts","../src/builders/index.ts","../src/types/result.ts","../src/types/logging.ts","../src/channels/terminal.ts","../src/state.ts"],"sourcesContent":["import type { Arc } from \"./arc\";\nimport { ArcStateContext } from \"./state\";\nimport { ArcEvent } from \"./events\";\n\nexport enum ArcNodeKind {\n Agent = \"agent\",\n Action = \"action\",\n Arc = \"arc\",\n}\n\nexport interface ArcNode<\n State extends Record<string, any> = any,\n Context extends Record<string, any> = any,\n> {\n id: string;\n kind: ArcNodeKind;\n handler: {\n id: string;\n run: (\n sc: ArcStateContext<State, Context>,\n nodeId: string\n ) => AsyncIterable<ArcEvent<State, Context>>;\n arc?: Arc<State, Context>;\n };\n}\n","import { ArcNodeKind } from \"../types/node\";\nimport type { Arc as IArc } from \"../types/arc\";\nimport type { ArcNode } from \"../types/node\";\nimport type { ArcEdge } from \"../types/edge\";\n\nexport const renderAsDot = (\n id: string,\n description: string | undefined,\n nodes: ArcNode[],\n edges: ArcEdge[]\n): string => {\n const lines: string[] = [];\n\n lines.push(`digraph \"${id}\" {`);\n lines.push(` label=\"${description || id}\";`);\n lines.push(` rankdir=TB;`);\n lines.push(` node [fontname=\"Arial\", fontsize=12];`);\n lines.push(` compound=true;`);\n lines.push(``);\n\n const getNodeStyle = (kind: ArcNodeKind): string => {\n switch (kind) {\n case ArcNodeKind.Agent:\n return 'shape=box, style=filled, fillcolor=\"#E3F2FD\", color=\"#1976D2\"';\n case ArcNodeKind.Action:\n return 'shape=box, style=\"filled,rounded\", fillcolor=\"#E8F5E9\", color=\"#388E3C\"';\n case ArcNodeKind.Arc:\n return 'shape=box, style=\"filled,dashed\", fillcolor=\"#FFF3E0\", color=\"#F57C00\"';\n default:\n return \"shape=box\";\n }\n };\n\n const arcNodes = new Map<string, IArc<any>>();\n const loopEdges = new Set<string>();\n\n for (const node of nodes) {\n if (node.kind === ArcNodeKind.Arc && node.handler.arc) {\n arcNodes.set(node.id, node.handler.arc);\n }\n }\n\n for (const edge of edges) {\n if (edge.from === edge.to && arcNodes.has(edge.from)) {\n loopEdges.add(`${edge.from}->${edge.to}`);\n }\n }\n\n // Render nodes with Arc nodes as subgraphs\n let clusterIndex = 0;\n for (const node of nodes) {\n if (node.kind === ArcNodeKind.Arc && node.handler.arc) {\n const arc = node.handler.arc;\n const loopEdge = edges.find(\n (e) => e.from === node.id && e.to === node.id\n );\n const maxIterations = loopEdge?.maxIterations;\n\n lines.push(` subgraph cluster_${clusterIndex} {`);\n lines.push(\n ` label=\"${node.id}\\\\n[loop${maxIterations ? ` max: ${maxIterations}` : \"\"}]\";`\n );\n lines.push(` style=filled;`);\n lines.push(` fillcolor=\"#FFF3E0\";`);\n lines.push(` color=\"#F57C00\";`);\n lines.push(` penwidth=2;`);\n lines.push(``);\n\n // Create an entry node for the subgraph\n lines.push(\n ` \"${node.id}_entry\" [label=\"entry\", shape=circle, style=filled, fillcolor=\"#F57C00\", fontcolor=white, width=0.5, height=0.5];`\n );\n\n // Render inner arc nodes\n for (const innerNode of arc.nodes) {\n const innerStyle = getNodeStyle(innerNode.kind);\n const innerLabel = `${innerNode.id}\\\\n[${innerNode.kind}]`;\n lines.push(\n ` \"${node.id}.${innerNode.id}\" [label=\"${innerLabel}\", ${innerStyle}];`\n );\n }\n\n // Create an exit node for the subgraph\n lines.push(\n ` \"${node.id}_exit\" [label=\"exit\", shape=circle, style=filled, fillcolor=\"#F57C00\", fontcolor=white, width=0.5, height=0.5];`\n );\n lines.push(``);\n\n // Render inner arc edges\n for (const innerEdge of arc.edges) {\n const hasCondition = innerEdge.condition || innerEdge.when;\n const edgeStyle = hasCondition ? \" [style=dashed]\" : \"\";\n lines.push(\n ` \"${node.id}.${innerEdge.from}\" -> \"${node.id}.${innerEdge.to}\"${edgeStyle};`\n );\n }\n\n // Connect entry to first nodes (nodes with no incoming edges)\n const innerNodesWithIncoming = new Set(arc.edges.map((e) => e.to));\n const firstInnerNodes = arc.nodes.filter(\n (n) => !innerNodesWithIncoming.has(n.id)\n );\n for (const firstNode of firstInnerNodes) {\n lines.push(` \"${node.id}_entry\" -> \"${node.id}.${firstNode.id}\";`);\n }\n\n // Connect last nodes to exit (nodes with no outgoing edges, unless they're part of internal loops)\n const innerNodesWithOutgoing = new Set(arc.edges.map((e) => e.from));\n const lastInnerNodes = arc.nodes.filter(\n (n) => !innerNodesWithOutgoing.has(n.id)\n );\n for (const lastNode of lastInnerNodes) {\n lines.push(` \"${node.id}.${lastNode.id}\" -> \"${node.id}_exit\";`);\n }\n\n lines.push(` }`);\n lines.push(``);\n clusterIndex++;\n } else {\n // Regular node\n const style = getNodeStyle(node.kind);\n const label = `${node.id}\\\\n[${node.kind}]`;\n lines.push(` \"${node.id}\" [label=\"${label}\", ${style}];`);\n }\n }\n\n lines.push(``);\n\n // Render edges\n for (const edge of edges) {\n const isLoopEdge = loopEdges.has(`${edge.from}->${edge.to}`);\n const hasCondition = edge.condition || edge.when;\n\n if (isLoopEdge) {\n const conditionPart = hasCondition ? \"style=dashed, \" : \"\";\n const maxIterPart = edge.maxIterations\n ? `, label=\"max: ${edge.maxIterations}\"`\n : \"\";\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.from}_entry\" [${conditionPart}color=\"#F57C00\", penwidth=2${maxIterPart}, constraint=false];`\n );\n } else if (arcNodes.has(edge.from) && !arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.to}\" [${conditionLabel}ltail=cluster_${Array.from(arcNodes.keys()).indexOf(edge.from)}];`\n );\n } else if (!arcNodes.has(edge.from) && arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n lines.push(\n ` \"${edge.from}\" -> \"${edge.to}_entry\" [${conditionLabel}lhead=cluster_${Array.from(arcNodes.keys()).indexOf(edge.to)}];`\n );\n } else if (\n arcNodes.has(edge.from) &&\n arcNodes.has(edge.to) &&\n edge.from !== edge.to\n ) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n const fromIdx = Array.from(arcNodes.keys()).indexOf(edge.from);\n const toIdx = Array.from(arcNodes.keys()).indexOf(edge.to);\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.to}_entry\" [${conditionLabel}ltail=cluster_${fromIdx}, lhead=cluster_${toIdx}];`\n );\n } else if (!arcNodes.has(edge.from) && !arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \" [style=dashed]\" : \"\";\n lines.push(` \"${edge.from}\" -> \"${edge.to}\"${conditionLabel};`);\n }\n }\n\n lines.push(`}`);\n return lines.join(\"\\n\");\n};\n","import type { Arc } from \"../types/arc\";\nimport { ArcStateContext } from \"../types/state\";\nimport { renderAsDot } from \"../renderers/renderer.dot\";\nimport { ArcNode, ArcEdge, ArcNodeKind } from \"../types\";\n\nexport class ArcBuilder<\n State extends Record<string, any> = any,\n Context extends Record<string, any> = any,\n> {\n private readonly id: string;\n private readonly description?: string;\n private readonly nodes: ArcNode[] = [];\n private readonly edges: ArcEdge[] = [];\n private readonly conditions: Map<\n string,\n (stateContext: ArcStateContext<State, Context>) => boolean\n > = new Map();\n\n constructor(opts: { id: string; description?: string }) {\n this.id = opts.id;\n this.description = opts.description;\n }\n\n addNode(id: string, kind: ArcNodeKind, handler: ArcNode[\"handler\"]): void {\n this.nodes.push({ id, kind, handler });\n }\n\n addEdge(edge: ArcEdge): void {\n this.edges.push(edge);\n }\n\n addCondition(\n name: string,\n fn: (sc: ArcStateContext<any, any>) => boolean\n ): void {\n this.conditions.set(name, fn);\n }\n\n getEdges(): ArcEdge[] {\n return this.edges;\n }\n\n build(): Arc<State, Context> {\n return {\n id: this.id,\n description: this.description,\n nodes: [...this.nodes],\n edges: [...this.edges],\n conditions: this.conditions,\n toDot: () =>\n renderAsDot(this.id, this.description, this.nodes, this.edges),\n };\n }\n}\n","import { z } from \"zod\";\nimport { Map as ImmutableMap } from \"immutable\";\nimport type { Arc as IArc } from \"../types/arc\";\nimport { ArcStateContext } from \"../types/state\";\nimport { ArcNodeKind } from \"../types/node\";\nimport type { ArcBuilder } from \"./builder.arc\";\nimport { createModels, ModelId, Models } from \"@arc-dev/models\";\nimport { ArcEvent } from \"../types\";\n\nexport class NodeBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n constructor(private builder: ArcBuilder<State, Context>) {}\n\n agent<NodeId extends string, Schema extends z.ZodTypeAny>(\n id: NodeId,\n config: {\n model: ModelId;\n messages: (sc: ArcStateContext<State, Context>) => {\n role: \"system\" | \"user\";\n content: string;\n }[];\n output: Schema;\n }\n ): void {\n this.builder.addNode(id, ArcNodeKind.Agent, {\n id: `${id}-agent`,\n run: async function* (\n stateContext: ArcStateContext<State, Context>\n ): AsyncIterable<ArcEvent<State, Context>> {\n const models = createModels();\n const model = models.get(config.model);\n\n const messages = config.messages(stateContext);\n\n const jsonSchema = z.toJSONSchema(config.output);\n\n const { $schema, ...cleanSchema } = jsonSchema as any;\n\n let fullContent = \"\";\n\n for await (const streamEvent of model.stream({\n messages,\n temperature: 0,\n response_format: {\n type: \"json_schema\",\n json_schema: {\n name: `${id}_output`,\n schema: cleanSchema,\n strict: true,\n },\n },\n })) {\n if (streamEvent.done) {\n fullContent = streamEvent.fullContent || fullContent;\n } else {\n yield {\n type: \"render\" as const,\n chunk: streamEvent.chunk,\n nodeId: id,\n };\n }\n }\n\n const parsed = JSON.parse(fullContent);\n const result = config.output.parse(parsed);\n\n // Store the result for this node (will be set in nodes.ts)\n (stateContext as any).__pendingContext = {\n nodeId: id,\n result: ImmutableMap(result as Record<string, any>),\n };\n },\n });\n }\n\n action<NodeId extends string>(\n id: NodeId,\n handler: (\n sc: ArcStateContext<State, Context> & {\n render: (chunk: string) => void;\n }\n ) => Promise<ImmutableMap<string, any>> | ImmutableMap<string, any>\n ): void {\n this.builder.addNode(id, ArcNodeKind.Action, {\n id: `${id}-action`,\n run: async function* (\n stateContext: ArcStateContext<State, Context>\n ): AsyncIterable<ArcEvent<State, Context>> {\n const renderChunks: string[] = [];\n\n const render = (chunk: string) => {\n renderChunks.push(chunk);\n };\n\n const result = await handler({\n ...stateContext,\n render,\n });\n\n for (const chunk of renderChunks) {\n yield {\n type: \"render\" as const,\n chunk,\n nodeId: id,\n };\n }\n\n (stateContext as any).__pendingState = result;\n },\n });\n }\n\n arc<NodeId extends string>(id: NodeId, arc: IArc<any>): void {\n this.builder.addNode(id, ArcNodeKind.Arc, {\n id: `${id}-arc`,\n run: async function* (): AsyncIterable<ArcEvent<State, Context>> {\n // NoOp\n },\n arc,\n } as any);\n }\n}\n","import { ArcStateContext } from \"../types/state\";\nimport type { ArcBuilder } from \"./builder.arc\";\n\nexport class EdgeConditionBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n constructor(\n private builder: ArcBuilder<State, Context>,\n private from: string,\n private to: string\n ) {}\n\n when(condition: string): this;\n when(condition: (sc: ArcStateContext<State, Context>) => boolean): this;\n when(\n condition: string | ((sc: ArcStateContext<State, Context>) => boolean)\n ): this {\n const edges = this.builder.getEdges();\n const lastEdge = edges[edges.length - 1];\n if (lastEdge && lastEdge.from === this.from && lastEdge.to === this.to) {\n if (typeof condition === \"string\") {\n lastEdge.condition = condition;\n } else {\n lastEdge.when = condition as any;\n }\n }\n return this;\n }\n\n maxIterations(max: number): this {\n const edges = this.builder.getEdges();\n const lastEdge = edges[edges.length - 1];\n if (lastEdge && lastEdge.from === this.from && lastEdge.to === this.to) {\n lastEdge.maxIterations = max;\n }\n return this;\n }\n}\n","import { ArcStateContext } from \"../types/state\";\nimport { EdgeConditionBuilder } from \"./builder.edge-condition\";\nimport type { ArcBuilder } from \"./builder.arc\";\nimport { ArcEdge, EventValidator, WaitConfig } from \"../types/edge\";\n\nexport class EdgeBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n private sourceNode: string | null = null;\n\n constructor(private builder: ArcBuilder<State, Context>) {}\n\n from(nodeId: string): this {\n this.sourceNode = nodeId;\n return this;\n }\n\n waitForInput(options?: {\n message?: string;\n validator?: EventValidator<State, Context>;\n }): this & { to(nodeId: string): EdgeConditionBuilder<State, Context> } {\n if (!this.sourceNode) {\n throw new Error(\"Must call from() before waitForInput()\");\n }\n\n const waitConfig: WaitConfig<State, Context> = {\n message: options?.message,\n validator: options?.validator,\n };\n\n const sourceNode = this.sourceNode;\n const builder = this.builder;\n\n return {\n ...this,\n to: (nodeId: string): EdgeConditionBuilder<State, Context> => {\n const edge: ArcEdge = {\n from: sourceNode,\n to: nodeId,\n wait: waitConfig,\n };\n builder.addEdge(edge);\n\n const conditionBuilder = new EdgeConditionBuilder(\n builder,\n sourceNode,\n nodeId\n );\n\n this.sourceNode = null;\n\n return conditionBuilder;\n },\n };\n }\n\n to(nodeId: string): EdgeConditionBuilder<State, Context> {\n if (!this.sourceNode) {\n throw new Error(\"Must call from() before to()\");\n }\n const edge: ArcEdge = {\n from: this.sourceNode,\n to: nodeId,\n };\n this.builder.addEdge(edge);\n const conditionBuilder = new EdgeConditionBuilder(\n this.builder,\n this.sourceNode,\n nodeId\n );\n\n this.sourceNode = null;\n\n return conditionBuilder;\n }\n\n condition<ConditionName extends string>(\n name: ConditionName,\n fn: (sc: ArcStateContext<State, Context>) => boolean\n ): string {\n this.builder.addCondition(name, fn);\n return name;\n }\n}\n","import type { Arc as IArc } from \"../types/arc\";\nimport { ArcBuilder } from \"./builder.arc\";\nimport { NodeBuilder } from \"./builder.node\";\nimport { EdgeBuilder } from \"./builder.edge\";\n\nexport { ArcBuilder } from \"./builder.arc\";\nexport { NodeBuilder } from \"./builder.node\";\nexport { EdgeBuilder } from \"./builder.edge\";\nexport { EdgeConditionBuilder } from \"./builder.edge-condition\";\nexport { renderAsDot } from \"../renderers/renderer.dot\";\n\n/**\n * Creates a new Arc with the edge-centric API.\n * @param id - The Arc identifier\n * @param configurator - Function to configure nodes and edges\n * @returns A new Arc instance\n */\nexport function Arc<State extends Record<string, any>>(\n id: string,\n configurator: (helpers: {\n node: NodeBuilder<State, any>;\n edge: EdgeBuilder<State, any>;\n }) => void\n): IArc<any> {\n const builder = new ArcBuilder<State, Record<string, never>>({\n id,\n });\n\n const nodeBuilder = new NodeBuilder<State, any>(builder);\n const edgeBuilder = new EdgeBuilder<State, any>(builder);\n\n configurator({ node: nodeBuilder, edge: edgeBuilder });\n\n return builder.build();\n}\n","export type ArcRunId = `run_${string}`;\n\nexport enum ArcRunStatus {\n SUCCESS = \"success\",\n WAITING = \"waiting\",\n QUEUED = \"queued\",\n RUNNING = \"running\",\n COMPLETED = \"completed\",\n FAILED = \"failed\",\n CANCELLED = \"cancelled\",\n TIMEOUT = \"timeout\",\n}\n\nexport type ArcRunResult<Context, State = any> = {\n runId: ArcRunId;\n arcId: string;\n status: ArcRunStatus;\n startedAt: string;\n finishedAt: string;\n context: Context;\n state: State;\n error?: string;\n};\n","export enum LogVerbosity {\n Silent = 0,\n Fatal = 1,\n Error = 2,\n Warn = 3,\n Info = 4,\n Debug = 5,\n Trace = 6,\n}\n","import * as readline from \"node:readline\";\nimport { ArcRuntime, ArcEvent, LogVerbosity } from \"../types\";\n\nexport class TerminalChannel {\n private currentNode: string | undefined;\n\n constructor(private readonly verbosity?: LogVerbosity) {\n this.verbosity = verbosity ?? LogVerbosity.Silent;\n }\n\n async consume<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n runtime: ArcRuntime,\n events: AsyncIterable<ArcEvent<State, Context>>\n ): Promise<{ finalState: State; finalContext: Context }> {\n let finalState: State | undefined;\n let finalContext: Context | undefined;\n\n console.log(\"🚀 Starting Arc execution...\");\n console.log();\n\n let nodeIndex = 0;\n\n for await (const event of events) {\n switch (event.type) {\n case \"render\": {\n if (event.nodeId && event.nodeId !== this.currentNode) {\n if (nodeIndex > 0) {\n console.log();\n console.log();\n }\n this.currentNode = event.nodeId;\n this.printNodeHeader(event.nodeId);\n nodeIndex++;\n }\n\n process.stdout.write(event.chunk);\n break;\n }\n\n case \"paused\": {\n console.log();\n const answer = await this.askUser(\n event.prompt || \"Enter input: \",\n event.validator\n ? (input: string) => {\n const result = event.validator!(input, {} as any);\n if (result.valid) {\n return { valid: true };\n }\n return {\n valid: false,\n message: result.message,\n };\n }\n : undefined\n );\n const resumeKey = event.sessionId || event.nodeId;\n await runtime.resume(resumeKey, answer);\n break;\n }\n\n case \"log\": {\n this.printLog(event.level, event.message);\n break;\n }\n\n case \"done\":\n console.log();\n this.printSuccess();\n finalState = event.finalState;\n finalContext = event.finalContext;\n break;\n\n case \"error\":\n console.log();\n this.printError(event.error);\n throw event.error;\n }\n }\n\n if (!finalState || !finalContext) {\n throw new Error(\"Arc did not complete successfully\");\n }\n\n return { finalState, finalContext };\n }\n\n private printNodeHeader(id: string): void {\n console.log(`\\x1b[36m- ${id}\\x1b[0m`);\n }\n\n private printLog(level: string, message: string): void {\n if (this.verbosity === LogVerbosity.Silent) {\n return;\n }\n\n const colors = {\n debug: \"\\x1b[90m\", // gray\n info: \"\\x1b[36m\", // cyan\n warn: \"\\x1b[33m\", // yellow\n error: \"\\x1b[31m\", // red\n };\n const color = colors[level as keyof typeof colors] || \"\\x1b[0m\";\n const prefix = level.toUpperCase().padEnd(5);\n\n console.log(`${color}[${prefix}] ${message}\\x1b[0m`);\n }\n\n private printSuccess(): void {\n console.log(`\\x1b[32m✓ Arc completed successfully\\x1b[0m`);\n }\n\n private printError(error: Error): void {\n console.log(`\\x1b[31m✗ Arc failed: ${error.message}\\x1b[0m`);\n }\n\n private async askUser(\n prompt: string,\n validator?: (input: string) => { valid: boolean; message?: string }\n ): Promise<string> {\n while (true) {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n const answer = await new Promise<string>((resolve) => {\n rl.question(prompt, resolve);\n });\n\n rl.close();\n\n if (validator) {\n const validation = validator(answer);\n\n if (!validation.valid) {\n console.log(\n ` \\x1b[31m✗ ${validation.message || \"Invalid input\"}\\x1b[0m`\n );\n continue;\n }\n }\n\n return answer;\n }\n }\n}\n","import { ArcStateContext, ImmutableMap, TypedImmutableMap } from \".\";\n\nexport class ArcState<\n State extends Record<string, any>,\n Context extends Record<string, any> = Record<string, never>,\n> {\n private state: ImmutableMap<string, any>;\n private nodeContext: ImmutableMap<string, any>;\n private edgeIn: ImmutableMap<string, any>;\n\n constructor(initial: State) {\n this.state = ImmutableMap<string, any>(initial);\n this.nodeContext = ImmutableMap<string, any>();\n this.edgeIn = ImmutableMap<string, any>();\n }\n\n getState(): ImmutableMap<string, any> {\n return this.state;\n }\n\n getContext(): ImmutableMap<string, any> & Context {\n return this.nodeContext as ImmutableMap<string, any> & Context;\n }\n\n getEdgeIn(): ImmutableMap<string, any> {\n return this.edgeIn;\n }\n\n getStateContext(): ArcStateContext<State, Context> {\n return {\n state: this.state as TypedImmutableMap<State>,\n context: this.nodeContext as TypedImmutableMap<Context>,\n edgeIn: this.edgeIn,\n };\n }\n\n setState(newState: ImmutableMap<string, any>): ImmutableMap<string, any> {\n this.state = newState;\n return this.state;\n }\n\n setContext<K extends string, V>(\n key: K,\n value: V\n ): ImmutableMap<string, any> & (Context & { [P in K]: V }) {\n const immutableValue =\n value && typeof value === \"object\" && !ImmutableMap.isMap(value)\n ? ImmutableMap(value)\n : value;\n\n this.nodeContext = this.nodeContext.set(key, immutableValue);\n\n return this.nodeContext as ImmutableMap<string, any> &\n (Context & { [P in K]: V });\n }\n\n setEdgeIn(nodeId: string, value: any): void {\n this.edgeIn = this.edgeIn.set(nodeId, value);\n }\n\n serialize(): {\n state: any;\n context: any;\n edgeIn: any;\n } {\n return {\n state: this.state.toJS(),\n context: this.nodeContext.toJS(),\n edgeIn: this.edgeIn.toJS(),\n };\n }\n\n static fromSerialized<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(serialized: {\n state: State;\n context?: Context;\n edgeIn?: Record<string, any>;\n }): ArcState<State, Context> {\n const arcState = new ArcState<State, Context>(serialized.state);\n\n if (serialized.context) {\n for (const [key, value] of Object.entries(serialized.context)) {\n arcState.setContext(key, value);\n }\n }\n\n if (serialized.edgeIn) {\n for (const [nodeId, value] of Object.entries(serialized.edgeIn)) {\n arcState.setEdgeIn(nodeId, value);\n }\n }\n\n return arcState;\n }\n}\n"],"names":["ImmutableMap"],"mappings":"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"}
{"version":3,"file":"index.js","sources":["../src/types/node.ts","../src/renderers/renderer.dot.ts","../src/builders/builder.arc.ts","../src/builders/builder.node.ts","../src/builders/builder.edge-condition.ts","../src/builders/builder.edge.ts","../src/builders/index.ts","../src/types/result.ts","../src/types/logging.ts","../src/channels/terminal.ts","../src/state.ts"],"sourcesContent":["import type { Arc } from \"./arc\";\nimport { ArcStateContext } from \"./state\";\nimport { ArcEvent } from \"./events\";\n\nexport enum ArcNodeKind {\n Agent = \"agent\",\n Action = \"action\",\n Arc = \"arc\",\n}\n\nexport interface ArcNode<\n State extends Record<string, any> = any,\n Context extends Record<string, any> = any,\n> {\n id: string;\n kind: ArcNodeKind;\n handler: {\n id: string;\n run: (\n sc: ArcStateContext<State, Context>,\n nodeId: string\n ) => AsyncIterable<ArcEvent<State, Context>>;\n arc?: Arc<State, Context>;\n };\n}\n","import { ArcNodeKind } from \"../types/node\";\nimport type { Arc as IArc } from \"../types/arc\";\nimport type { ArcNode } from \"../types/node\";\nimport type { ArcEdge } from \"../types/edge\";\n\nexport const renderAsDot = (\n id: string,\n description: string | undefined,\n nodes: ArcNode[],\n edges: ArcEdge[]\n): string => {\n const lines: string[] = [];\n\n lines.push(`digraph \"${id}\" {`);\n lines.push(` label=\"${description || id}\";`);\n lines.push(` rankdir=TB;`);\n lines.push(` node [fontname=\"Arial\", fontsize=12];`);\n lines.push(` compound=true;`);\n lines.push(``);\n\n const getNodeStyle = (kind: ArcNodeKind): string => {\n switch (kind) {\n case ArcNodeKind.Agent:\n return 'shape=box, style=filled, fillcolor=\"#E3F2FD\", color=\"#1976D2\"';\n case ArcNodeKind.Action:\n return 'shape=box, style=\"filled,rounded\", fillcolor=\"#E8F5E9\", color=\"#388E3C\"';\n case ArcNodeKind.Arc:\n return 'shape=box, style=\"filled,dashed\", fillcolor=\"#FFF3E0\", color=\"#F57C00\"';\n default:\n return \"shape=box\";\n }\n };\n\n const arcNodes = new Map<string, IArc<any>>();\n const loopEdges = new Set<string>();\n\n for (const node of nodes) {\n if (node.kind === ArcNodeKind.Arc && node.handler.arc) {\n arcNodes.set(node.id, node.handler.arc);\n }\n }\n\n for (const edge of edges) {\n if (edge.from === edge.to && arcNodes.has(edge.from)) {\n loopEdges.add(`${edge.from}->${edge.to}`);\n }\n }\n\n // Render nodes with Arc nodes as subgraphs\n let clusterIndex = 0;\n for (const node of nodes) {\n if (node.kind === ArcNodeKind.Arc && node.handler.arc) {\n const arc = node.handler.arc;\n const loopEdge = edges.find(\n (e) => e.from === node.id && e.to === node.id\n );\n const maxIterations = loopEdge?.maxIterations;\n\n lines.push(` subgraph cluster_${clusterIndex} {`);\n lines.push(\n ` label=\"${node.id}\\\\n[loop${maxIterations ? ` max: ${maxIterations}` : \"\"}]\";`\n );\n lines.push(` style=filled;`);\n lines.push(` fillcolor=\"#FFF3E0\";`);\n lines.push(` color=\"#F57C00\";`);\n lines.push(` penwidth=2;`);\n lines.push(``);\n\n // Create an entry node for the subgraph\n lines.push(\n ` \"${node.id}_entry\" [label=\"entry\", shape=circle, style=filled, fillcolor=\"#F57C00\", fontcolor=white, width=0.5, height=0.5];`\n );\n\n // Render inner arc nodes\n for (const innerNode of arc.nodes) {\n const innerStyle = getNodeStyle(innerNode.kind);\n const innerLabel = `${innerNode.id}\\\\n[${innerNode.kind}]`;\n lines.push(\n ` \"${node.id}.${innerNode.id}\" [label=\"${innerLabel}\", ${innerStyle}];`\n );\n }\n\n // Create an exit node for the subgraph\n lines.push(\n ` \"${node.id}_exit\" [label=\"exit\", shape=circle, style=filled, fillcolor=\"#F57C00\", fontcolor=white, width=0.5, height=0.5];`\n );\n lines.push(``);\n\n // Render inner arc edges\n for (const innerEdge of arc.edges) {\n const hasCondition = innerEdge.condition || innerEdge.when;\n const edgeStyle = hasCondition ? \" [style=dashed]\" : \"\";\n lines.push(\n ` \"${node.id}.${innerEdge.from}\" -> \"${node.id}.${innerEdge.to}\"${edgeStyle};`\n );\n }\n\n // Connect entry to first nodes (nodes with no incoming edges)\n const innerNodesWithIncoming = new Set(arc.edges.map((e) => e.to));\n const firstInnerNodes = arc.nodes.filter(\n (n) => !innerNodesWithIncoming.has(n.id)\n );\n for (const firstNode of firstInnerNodes) {\n lines.push(` \"${node.id}_entry\" -> \"${node.id}.${firstNode.id}\";`);\n }\n\n // Connect last nodes to exit (nodes with no outgoing edges, unless they're part of internal loops)\n const innerNodesWithOutgoing = new Set(arc.edges.map((e) => e.from));\n const lastInnerNodes = arc.nodes.filter(\n (n) => !innerNodesWithOutgoing.has(n.id)\n );\n for (const lastNode of lastInnerNodes) {\n lines.push(` \"${node.id}.${lastNode.id}\" -> \"${node.id}_exit\";`);\n }\n\n lines.push(` }`);\n lines.push(``);\n clusterIndex++;\n } else {\n // Regular node\n const style = getNodeStyle(node.kind);\n const label = `${node.id}\\\\n[${node.kind}]`;\n lines.push(` \"${node.id}\" [label=\"${label}\", ${style}];`);\n }\n }\n\n lines.push(``);\n\n // Render edges\n for (const edge of edges) {\n const isLoopEdge = loopEdges.has(`${edge.from}->${edge.to}`);\n const hasCondition = edge.condition || edge.when;\n\n if (isLoopEdge) {\n const conditionPart = hasCondition ? \"style=dashed, \" : \"\";\n const maxIterPart = edge.maxIterations\n ? `, label=\"max: ${edge.maxIterations}\"`\n : \"\";\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.from}_entry\" [${conditionPart}color=\"#F57C00\", penwidth=2${maxIterPart}, constraint=false];`\n );\n } else if (arcNodes.has(edge.from) && !arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.to}\" [${conditionLabel}ltail=cluster_${Array.from(arcNodes.keys()).indexOf(edge.from)}];`\n );\n } else if (!arcNodes.has(edge.from) && arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n lines.push(\n ` \"${edge.from}\" -> \"${edge.to}_entry\" [${conditionLabel}lhead=cluster_${Array.from(arcNodes.keys()).indexOf(edge.to)}];`\n );\n } else if (\n arcNodes.has(edge.from) &&\n arcNodes.has(edge.to) &&\n edge.from !== edge.to\n ) {\n const conditionLabel = hasCondition ? \"style=dashed, \" : \"\";\n const fromIdx = Array.from(arcNodes.keys()).indexOf(edge.from);\n const toIdx = Array.from(arcNodes.keys()).indexOf(edge.to);\n lines.push(\n ` \"${edge.from}_exit\" -> \"${edge.to}_entry\" [${conditionLabel}ltail=cluster_${fromIdx}, lhead=cluster_${toIdx}];`\n );\n } else if (!arcNodes.has(edge.from) && !arcNodes.has(edge.to)) {\n const conditionLabel = hasCondition ? \" [style=dashed]\" : \"\";\n lines.push(` \"${edge.from}\" -> \"${edge.to}\"${conditionLabel};`);\n }\n }\n\n lines.push(`}`);\n return lines.join(\"\\n\");\n};\n","import type { Arc } from \"../types/arc\";\nimport { ArcStateContext } from \"../types/state\";\nimport { renderAsDot } from \"../renderers/renderer.dot\";\nimport { ArcNode, ArcEdge, ArcNodeKind } from \"../types\";\n\nexport class ArcBuilder<\n State extends Record<string, any> = any,\n Context extends Record<string, any> = any,\n> {\n private readonly id: string;\n private readonly description?: string;\n private readonly nodes: ArcNode[] = [];\n private readonly edges: ArcEdge[] = [];\n private readonly conditions: Map<\n string,\n (stateContext: ArcStateContext<State, Context>) => boolean\n > = new Map();\n\n constructor(opts: { id: string; description?: string }) {\n this.id = opts.id;\n this.description = opts.description;\n }\n\n addNode(id: string, kind: ArcNodeKind, handler: ArcNode[\"handler\"]): void {\n this.nodes.push({ id, kind, handler });\n }\n\n addEdge(edge: ArcEdge): void {\n this.edges.push(edge);\n }\n\n addCondition(\n name: string,\n fn: (sc: ArcStateContext<any, any>) => boolean\n ): void {\n this.conditions.set(name, fn);\n }\n\n getEdges(): ArcEdge[] {\n return this.edges;\n }\n\n build(): Arc<State, Context> {\n return {\n id: this.id,\n description: this.description,\n nodes: [...this.nodes],\n edges: [...this.edges],\n conditions: this.conditions,\n toDot: () =>\n renderAsDot(this.id, this.description, this.nodes, this.edges),\n };\n }\n}\n","import { z } from \"zod\";\nimport { Map as ImmutableMap } from \"immutable\";\nimport type { Arc as IArc } from \"../types/arc\";\nimport { ArcStateContext } from \"../types/state\";\nimport { ArcNodeKind } from \"../types/node\";\nimport type { ArcBuilder } from \"./builder.arc\";\nimport { createModels, ModelId, Models } from \"@arc-dev/models\";\nimport { ArcEvent } from \"../types\";\n\nexport class NodeBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n constructor(private builder: ArcBuilder<State, Context>) {}\n\n agent<NodeId extends string, Schema extends z.ZodTypeAny>(\n id: NodeId,\n config: {\n model: ModelId;\n messages: (sc: ArcStateContext<State, Context>) => {\n role: \"system\" | \"user\";\n content: string;\n }[];\n output: Schema;\n }\n ): void {\n this.builder.addNode(id, ArcNodeKind.Agent, {\n id: `${id}-agent`,\n run: async function* (\n stateContext: ArcStateContext<State, Context>\n ): AsyncIterable<ArcEvent<State, Context>> {\n const models = createModels();\n const model = models.get(config.model);\n\n const messages = config.messages(stateContext);\n\n const jsonSchema = z.toJSONSchema(config.output);\n\n const { $schema, ...cleanSchema } = jsonSchema as any;\n\n let fullContent = \"\";\n\n for await (const streamEvent of model.stream({\n messages,\n temperature: 0,\n response_format: {\n type: \"json_schema\",\n json_schema: {\n name: `${id}_output`,\n schema: cleanSchema,\n strict: true,\n },\n },\n })) {\n if (streamEvent.done) {\n fullContent = streamEvent.fullContent || fullContent;\n } else {\n yield {\n type: \"render\" as const,\n chunk: streamEvent.chunk,\n nodeId: id,\n };\n }\n }\n\n const parsed = JSON.parse(fullContent);\n const result = config.output.parse(parsed);\n\n // Store the result for this node (will be set in nodes.ts)\n (stateContext as any).__pendingContext = {\n nodeId: id,\n result: ImmutableMap(result as Record<string, any>),\n };\n },\n });\n }\n\n action<NodeId extends string>(\n id: NodeId,\n handler: (\n sc: ArcStateContext<State, Context> & {\n render: (chunk: string) => void;\n }\n ) => Promise<ImmutableMap<string, any>> | ImmutableMap<string, any>\n ): void {\n this.builder.addNode(id, ArcNodeKind.Action, {\n id: `${id}-action`,\n run: async function* (\n stateContext: ArcStateContext<State, Context>\n ): AsyncIterable<ArcEvent<State, Context>> {\n const renderChunks: string[] = [];\n\n const render = (chunk: string) => {\n renderChunks.push(chunk);\n };\n\n const result = await handler({\n ...stateContext,\n render,\n });\n\n for (const chunk of renderChunks) {\n yield {\n type: \"render\" as const,\n chunk,\n nodeId: id,\n };\n }\n\n (stateContext as any).__pendingState = result;\n },\n });\n }\n\n arc<NodeId extends string>(id: NodeId, arc: IArc<any>): void {\n this.builder.addNode(id, ArcNodeKind.Arc, {\n id: `${id}-arc`,\n run: async function* (): AsyncIterable<ArcEvent<State, Context>> {\n // NoOp\n },\n arc,\n } as any);\n }\n}\n","import { ArcStateContext } from \"../types/state\";\nimport type { ArcBuilder } from \"./builder.arc\";\n\nexport class EdgeConditionBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n constructor(\n private builder: ArcBuilder<State, Context>,\n private from: string,\n private to: string\n ) {}\n\n when(condition: string): this;\n when(condition: (sc: ArcStateContext<State, Context>) => boolean): this;\n when(\n condition: string | ((sc: ArcStateContext<State, Context>) => boolean)\n ): this {\n const edges = this.builder.getEdges();\n const lastEdge = edges[edges.length - 1];\n if (lastEdge && lastEdge.from === this.from && lastEdge.to === this.to) {\n if (typeof condition === \"string\") {\n lastEdge.condition = condition;\n } else {\n lastEdge.when = condition as any;\n }\n }\n return this;\n }\n\n maxIterations(max: number): this {\n const edges = this.builder.getEdges();\n const lastEdge = edges[edges.length - 1];\n if (lastEdge && lastEdge.from === this.from && lastEdge.to === this.to) {\n lastEdge.maxIterations = max;\n }\n return this;\n }\n}\n","import { ArcStateContext } from \"../types/state\";\nimport { EdgeConditionBuilder } from \"./builder.edge-condition\";\nimport type { ArcBuilder } from \"./builder.arc\";\nimport { ArcEdge, EventValidator, WaitConfig } from \"../types/edge\";\n\nexport class EdgeBuilder<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n> {\n private sourceNode: string | null = null;\n\n constructor(private builder: ArcBuilder<State, Context>) {}\n\n from(nodeId: string): this {\n this.sourceNode = nodeId;\n return this;\n }\n\n waitForInput(options?: {\n message?: string;\n validator?: EventValidator<State, Context>;\n }): this & { to(nodeId: string): EdgeConditionBuilder<State, Context> } {\n if (!this.sourceNode) {\n throw new Error(\"Must call from() before waitForInput()\");\n }\n\n const waitConfig: WaitConfig<State, Context> = {\n message: options?.message,\n validator: options?.validator,\n };\n\n const sourceNode = this.sourceNode;\n const builder = this.builder;\n\n return {\n ...this,\n to: (nodeId: string): EdgeConditionBuilder<State, Context> => {\n const edge: ArcEdge = {\n from: sourceNode,\n to: nodeId,\n wait: waitConfig,\n };\n builder.addEdge(edge);\n\n const conditionBuilder = new EdgeConditionBuilder(\n builder,\n sourceNode,\n nodeId\n );\n\n this.sourceNode = null;\n\n return conditionBuilder;\n },\n };\n }\n\n to(nodeId: string): EdgeConditionBuilder<State, Context> {\n if (!this.sourceNode) {\n throw new Error(\"Must call from() before to()\");\n }\n const edge: ArcEdge = {\n from: this.sourceNode,\n to: nodeId,\n };\n this.builder.addEdge(edge);\n const conditionBuilder = new EdgeConditionBuilder(\n this.builder,\n this.sourceNode,\n nodeId\n );\n\n this.sourceNode = null;\n\n return conditionBuilder;\n }\n\n condition<ConditionName extends string>(\n name: ConditionName,\n fn: (sc: ArcStateContext<State, Context>) => boolean\n ): string {\n this.builder.addCondition(name, fn);\n return name;\n }\n}\n","import type { Arc as IArc } from \"../types/arc\";\nimport { ArcBuilder } from \"./builder.arc\";\nimport { NodeBuilder } from \"./builder.node\";\nimport { EdgeBuilder } from \"./builder.edge\";\n\nexport { ArcBuilder } from \"./builder.arc\";\nexport { NodeBuilder } from \"./builder.node\";\nexport { EdgeBuilder } from \"./builder.edge\";\nexport { EdgeConditionBuilder } from \"./builder.edge-condition\";\nexport { renderAsDot } from \"../renderers/renderer.dot\";\n\n/**\n * Creates a new Arc with the edge-centric API.\n * @param id - The Arc identifier\n * @param configurator - Function to configure nodes and edges\n * @returns A new Arc instance\n */\nexport function Arc<State extends Record<string, any>>(\n id: string,\n configurator: (helpers: {\n node: NodeBuilder<State, any>;\n edge: EdgeBuilder<State, any>;\n }) => void\n): IArc<any> {\n const builder = new ArcBuilder<State, Record<string, never>>({\n id,\n });\n\n const nodeBuilder = new NodeBuilder<State, any>(builder);\n const edgeBuilder = new EdgeBuilder<State, any>(builder);\n\n configurator({ node: nodeBuilder, edge: edgeBuilder });\n\n return builder.build();\n}\n","export type ArcRunId = `run_${string}`;\n\nexport enum ArcRunStatus {\n SUCCESS = \"success\",\n WAITING = \"waiting\",\n QUEUED = \"queued\",\n RUNNING = \"running\",\n COMPLETED = \"completed\",\n FAILED = \"failed\",\n CANCELLED = \"cancelled\",\n TIMEOUT = \"timeout\",\n}\n\nexport type ArcRunResult<Context, State = any> = {\n runId: ArcRunId;\n arcId: string;\n status: ArcRunStatus;\n startedAt: string;\n finishedAt: string;\n context: Context;\n state: State;\n error?: string;\n};\n","export enum LogVerbosity {\n Silent = 0,\n Fatal = 1,\n Error = 2,\n Warn = 3,\n Info = 4,\n Debug = 5,\n Trace = 6,\n}\n","import * as readline from \"node:readline\";\nimport { ArcRuntime, ArcEvent, LogVerbosity } from \"../types\";\n\nexport class TerminalChannel {\n private currentNode: string | undefined;\n\n constructor(private readonly verbosity?: LogVerbosity) {\n this.verbosity = verbosity ?? LogVerbosity.Silent;\n }\n\n async consume<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(\n runtime: ArcRuntime,\n events: AsyncIterable<ArcEvent<State, Context>>\n ): Promise<{ finalState: State; finalContext: Context }> {\n let finalState: State | undefined;\n let finalContext: Context | undefined;\n\n console.log(\"🚀 Starting Arc execution...\");\n console.log();\n\n let nodeIndex = 0;\n\n for await (const event of events) {\n switch (event.type) {\n case \"render\": {\n if (event.nodeId && event.nodeId !== this.currentNode) {\n if (nodeIndex > 0) {\n console.log();\n console.log();\n }\n this.currentNode = event.nodeId;\n this.printNodeHeader(event.nodeId);\n nodeIndex++;\n }\n\n process.stdout.write(event.chunk);\n break;\n }\n\n case \"paused\": {\n console.log();\n const answer = await this.askUser(\n event.prompt || \"Enter input: \",\n event.validator\n ? (input: string) => {\n const result = event.validator!(input, {} as any);\n if (result.valid) {\n return { valid: true };\n }\n return {\n valid: false,\n message: result.message,\n };\n }\n : undefined\n );\n const resumeKey = event.sessionId || event.nodeId;\n await runtime.resume(resumeKey, answer);\n break;\n }\n\n case \"log\": {\n this.printLog(event.level, event.message);\n break;\n }\n\n case \"done\":\n console.log();\n this.printSuccess();\n finalState = event.finalState;\n finalContext = event.finalContext;\n break;\n\n case \"error\":\n console.log();\n this.printError(event.error);\n throw event.error;\n }\n }\n\n if (!finalState || !finalContext) {\n throw new Error(\"Arc did not complete successfully\");\n }\n\n return { finalState, finalContext };\n }\n\n private printNodeHeader(id: string): void {\n console.log(`\\x1b[36m- ${id}\\x1b[0m`);\n }\n\n private printLog(level: string, message: string): void {\n if (this.verbosity === LogVerbosity.Silent) {\n return;\n }\n\n const colors = {\n debug: \"\\x1b[90m\", // gray\n info: \"\\x1b[36m\", // cyan\n warn: \"\\x1b[33m\", // yellow\n error: \"\\x1b[31m\", // red\n };\n const color = colors[level as keyof typeof colors] || \"\\x1b[0m\";\n const prefix = level.toUpperCase().padEnd(5);\n\n console.log(`${color}[${prefix}] ${message}\\x1b[0m`);\n }\n\n private printSuccess(): void {\n console.log(`\\x1b[32m✓ Arc completed successfully\\x1b[0m`);\n }\n\n private printError(error: Error): void {\n console.log(`\\x1b[31m✗ Arc failed: ${error.message}\\x1b[0m`);\n }\n\n private async askUser(\n prompt: string,\n validator?: (input: string) => { valid: boolean; message?: string }\n ): Promise<string> {\n while (true) {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n const answer = await new Promise<string>((resolve) => {\n rl.question(prompt, resolve);\n });\n\n rl.close();\n\n if (validator) {\n const validation = validator(answer);\n\n if (!validation.valid) {\n console.log(\n ` \\x1b[31m✗ ${validation.message || \"Invalid input\"}\\x1b[0m`\n );\n continue;\n }\n }\n\n return answer;\n }\n }\n}\n","import { ArcStateContext, ImmutableMap, TypedImmutableMap } from \".\";\n\nexport class ArcState<\n State extends Record<string, any>,\n Context extends Record<string, any> = Record<string, never>,\n> {\n private state: ImmutableMap<string, any>;\n private nodeContext: ImmutableMap<string, any>;\n private edgeContext: ImmutableMap<string, any>;\n\n constructor(initial: State) {\n this.state = ImmutableMap<string, any>(initial);\n this.nodeContext = ImmutableMap<string, any>();\n this.edgeContext = ImmutableMap<string, any>();\n }\n\n getState(): ImmutableMap<string, any> {\n return this.state;\n }\n\n getContext(): ImmutableMap<string, any> & Context {\n return this.nodeContext as ImmutableMap<string, any> & Context;\n }\n\n getEdgeContext(): ImmutableMap<string, any> {\n return this.edgeContext;\n }\n\n getStateContext(): ArcStateContext<State, Context> {\n return {\n state: this.state as TypedImmutableMap<State>,\n context: this.nodeContext as TypedImmutableMap<Context>,\n edgeContext: this.edgeContext,\n };\n }\n\n setState(newState: ImmutableMap<string, any>): ImmutableMap<string, any> {\n this.state = newState;\n return this.state;\n }\n\n setContext<K extends string, V>(\n key: K,\n value: V\n ): ImmutableMap<string, any> & (Context & { [P in K]: V }) {\n const immutableValue =\n value && typeof value === \"object\" && !ImmutableMap.isMap(value)\n ? ImmutableMap(value)\n : value;\n\n this.nodeContext = this.nodeContext.set(key, immutableValue);\n\n return this.nodeContext as ImmutableMap<string, any> &\n (Context & { [P in K]: V });\n }\n\n setEdgeContext(nodeId: string, value: any): void {\n this.edgeContext = this.edgeContext.set(nodeId, value);\n }\n\n clearEdgeContext(nodeId: string): void {\n this.edgeContext = this.edgeContext.delete(nodeId);\n }\n\n serialize(): {\n state: any;\n nodeContext: any;\n edgeContext: any;\n } {\n return {\n state: this.state.toJS(),\n nodeContext: this.nodeContext.toJS(),\n edgeContext: this.edgeContext.toJS(),\n };\n }\n\n static fromSerialized<\n State extends Record<string, any>,\n Context extends Record<string, any>,\n >(serialized: {\n state: State;\n nodeContext?: Context;\n edgeContext?: Record<string, any>;\n }): ArcState<State, Context> {\n const arcState = new ArcState<State, Context>(serialized.state);\n\n if (serialized.nodeContext) {\n for (const [key, value] of Object.entries(serialized.nodeContext)) {\n arcState.setContext(key, value);\n }\n }\n\n if (serialized.edgeContext) {\n for (const [nodeId, value] of Object.entries(serialized.edgeContext)) {\n arcState.setEdgeContext(nodeId, value);\n }\n }\n\n return arcState;\n }\n}\n"],"names":["ImmutableMap"],"mappings":"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"}

@@ -5,7 +5,7 @@ import { ArcStateContext, ImmutableMap } from ".";

private nodeContext;
private edgeIn;
private edgeContext;
constructor(initial: State);
getState(): ImmutableMap<string, any>;
getContext(): ImmutableMap<string, any> & Context;
getEdgeIn(): ImmutableMap<string, any>;
getEdgeContext(): ImmutableMap<string, any>;
getStateContext(): ArcStateContext<State, Context>;

@@ -16,14 +16,15 @@ setState(newState: ImmutableMap<string, any>): ImmutableMap<string, any>;

});
setEdgeIn(nodeId: string, value: any): void;
setEdgeContext(nodeId: string, value: any): void;
clearEdgeContext(nodeId: string): void;
serialize(): {
state: any;
context: any;
edgeIn: any;
nodeContext: any;
edgeContext: any;
};
static fromSerialized<State extends Record<string, any>, Context extends Record<string, any>>(serialized: {
state: State;
context?: Context;
edgeIn?: Record<string, any>;
nodeContext?: Context;
edgeContext?: Record<string, any>;
}): ArcState<State, Context>;
}
//# sourceMappingURL=state.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAqB,MAAM,GAAG,CAAC;AAErE,qBAAa,QAAQ,CACnB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAE3D,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAA4B;gBAE9B,OAAO,EAAE,KAAK;IAM1B,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;IAIrC,UAAU,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IAIjD,SAAS,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;IAItC,eAAe,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;IAQlD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;IAKxE,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAC5B,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,GACP,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG;SAAG,CAAC,IAAI,CAAC,GAAG,CAAC;KAAE,CAAC;IAY1D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAI3C,SAAS,IAAI;QACX,KAAK,EAAE,GAAG,CAAC;QACX,OAAO,EAAE,GAAG,CAAC;QACb,MAAM,EAAE,GAAG,CAAC;KACb;IAQD,MAAM,CAAC,cAAc,CACnB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,UAAU,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC9B,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAiB7B"}
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAqB,MAAM,GAAG,CAAC;AAErE,qBAAa,QAAQ,CACnB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAE3D,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAA4B;gBAEnC,OAAO,EAAE,KAAK;IAM1B,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;IAIrC,UAAU,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IAIjD,cAAc,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;IAI3C,eAAe,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;IAQlD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;IAKxE,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAC5B,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,GACP,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG;SAAG,CAAC,IAAI,CAAC,GAAG,CAAC;KAAE,CAAC;IAY1D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAIhD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAItC,SAAS,IAAI;QACX,KAAK,EAAE,GAAG,CAAC;QACX,WAAW,EAAE,GAAG,CAAC;QACjB,WAAW,EAAE,GAAG,CAAC;KAClB;IAQD,MAAM,CAAC,cAAc,CACnB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,UAAU,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC;QACb,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACnC,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAiB7B"}

@@ -34,7 +34,14 @@ import { ValidationResult } from "./edge";

state: any;
context: any;
edgeIn: any;
nodeContext: any;
edgeContext: any;
};
};
export type ArcEvent<State extends Record<string, any>, Context extends Record<string, any>> = RenderEvent | DoneEvent<State, Context> | ErrorEvent | LogEvent | PausedEvent<State, Context>;
export type StateEvent<State extends Record<string, any>, Context extends Record<string, any>> = {
type: "state";
nodeId: string;
state: State;
context: Context;
timestamp: number;
};
export type ArcEvent<State extends Record<string, any>, Context extends Record<string, any>> = RenderEvent | DoneEvent<State, Context> | ErrorEvent | LogEvent | PausedEvent<State, Context> | StateEvent<State, Context>;
//# sourceMappingURL=events.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,SAAS,CACnB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACjC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,CACrB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACjC;IACF,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,CACV,KAAK,EAAE,GAAG,EACV,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAChC,gBAAgB,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,EAAE,GAAG,CAAC;QACX,OAAO,EAAE,GAAG,CAAC;QACb,MAAM,EAAE,GAAG,CAAC;KACb,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,QAAQ,CAClB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAEjC,WAAW,GACX,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,GACzB,UAAU,GACV,QAAQ,GACR,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC"}
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,SAAS,CACnB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACjC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,CACrB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACjC;IACF,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,CACV,KAAK,EAAE,GAAG,EACV,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAChC,gBAAgB,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,EAAE,GAAG,CAAC;QACX,WAAW,EAAE,GAAG,CAAC;QACjB,WAAW,EAAE,GAAG,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,UAAU,CACpB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACjC;IACF,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,QAAQ,CAClB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAEjC,WAAW,GACX,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,GACzB,UAAU,GACV,QAAQ,GACR,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,GAC3B,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC"}

@@ -9,4 +9,4 @@ import { Map as ImmutableMap } from "immutable";

context: TypedImmutableMap<Context>;
edgeIn: ImmutableMap<string, string>;
edgeContext: ImmutableMap<string, string>;
}
//# sourceMappingURL=state.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CACjE,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,CACN,GAAG;IACF,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,eAAe,CAC9B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEnC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC"}
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/types/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CACjE,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,KAAK,CACN,GAAG;IACF,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,eAAe,CAC9B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEnC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpC,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C"}
{
"name": "@arc-dev/core",
"version": "0.0.2-alpha.2",
"version": "0.0.2-alpha.3",
"description": "Core ARC runtime types utilities and builder",

@@ -5,0 +5,0 @@ "type": "module",