ts-agent-lib 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/async_queue.ts","../src/types.ts","../src/executor.ts","../src/errors.ts","../src/planning.ts","../src/observers.ts","../src/usage.ts","../src/runner.ts"],"names":["isAbortError"],"mappings":"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","file":"index.js","sourcesContent":["type GetWaiter<T> = {\n resolve: (item: T) => void;\n reject: (err: Error) => void;\n signal?: AbortSignal;\n onAbort?: () => void;\n};\n\ntype PutWaiter<T> = {\n item: T;\n resolve: () => void;\n reject: (err: Error) => void;\n};\n\nexport class AsyncQueue<T> {\n private readonly capacity: number;\n private readonly items: T[] = [];\n private readonly getWaiters: GetWaiter<T>[] = [];\n private readonly putWaiters: PutWaiter<T>[] = [];\n\n constructor(capacity: number = Infinity) {\n if (!Number.isFinite(capacity) && capacity !== Infinity) {\n throw new Error(\"capacity must be a number or Infinity\");\n }\n if (capacity <= 0) {\n throw new Error(\"capacity must be > 0\");\n }\n this.capacity = capacity;\n }\n\n get size(): number {\n return this.items.length;\n }\n\n shift(): T | undefined {\n if (this.items.length === 0) {\n return undefined;\n }\n const item = this.items.shift();\n this.drainPutWaiter();\n return item;\n }\n\n async put(item: T): Promise<void> {\n if (this.getWaiters.length > 0) {\n const waiter = this.getWaiters.shift()!;\n if (waiter.signal && waiter.onAbort) {\n waiter.signal.removeEventListener(\"abort\", waiter.onAbort);\n }\n waiter.resolve(item);\n return;\n }\n\n if (this.items.length < this.capacity) {\n this.items.push(item);\n return;\n }\n\n return new Promise((resolve, reject) => {\n this.putWaiters.push({ item, resolve, reject });\n });\n }\n\n tryPut(item: T): boolean {\n if (this.getWaiters.length > 0) {\n const waiter = this.getWaiters.shift()!;\n if (waiter.signal && waiter.onAbort) {\n waiter.signal.removeEventListener(\"abort\", waiter.onAbort);\n }\n waiter.resolve(item);\n return true;\n }\n\n if (this.items.length < this.capacity) {\n this.items.push(item);\n return true;\n }\n\n return false;\n }\n\n async get(signal?: AbortSignal): Promise<T> {\n if (this.items.length > 0) {\n const item = this.items.shift()!;\n this.drainPutWaiter();\n return item;\n }\n\n if (signal?.aborted) {\n throw abortError();\n }\n\n return new Promise((resolve, reject) => {\n const waiter: GetWaiter<T> = {\n resolve,\n reject,\n signal\n };\n\n if (signal) {\n const onAbort = () => {\n this.removeGetWaiter(waiter);\n reject(abortError());\n };\n waiter.onAbort = onAbort;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n\n this.getWaiters.push(waiter);\n });\n }\n\n private removeGetWaiter(waiter: GetWaiter<T>): void {\n const idx = this.getWaiters.indexOf(waiter);\n if (idx >= 0) {\n this.getWaiters.splice(idx, 1);\n }\n if (waiter.signal && waiter.onAbort) {\n waiter.signal.removeEventListener(\"abort\", waiter.onAbort);\n }\n }\n\n private drainPutWaiter(): void {\n if (this.items.length >= this.capacity) {\n return;\n }\n if (this.putWaiters.length === 0) {\n return;\n }\n\n const waiter = this.putWaiters.shift()!;\n this.items.push(waiter.item);\n waiter.resolve();\n }\n}\n\nfunction abortError(): Error {\n const error = new Error(\"aborted\");\n error.name = \"AbortError\";\n return error;\n}\n","import { z } from \"zod\";\n\nconst stepStatusValues = [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n \"blocked\",\n \"cancelled\"\n] as const;\n\nexport const StepStatus = {\n PENDING: \"pending\",\n RUNNING: \"running\",\n COMPLETED: \"completed\",\n FAILED: \"failed\",\n BLOCKED: \"blocked\",\n CANCELLED: \"cancelled\"\n} as const;\n\nexport type StepStatus = (typeof StepStatus)[keyof typeof StepStatus];\n\nexport const StepStatusSchema = z.enum(stepStatusValues);\n\nconst executionStatusValues = [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n \"cancelled\"\n] as const;\n\nexport const ExecutionStatus = {\n PENDING: \"pending\",\n RUNNING: \"running\",\n COMPLETED: \"completed\",\n FAILED: \"failed\",\n CANCELLED: \"cancelled\"\n} as const;\n\nexport type ExecutionStatus = (typeof ExecutionStatus)[keyof typeof ExecutionStatus];\n\nexport const ExecutionStatusSchema = z.enum(executionStatusValues);\n\nconst depsSchema = z.array(z.string()).optional().transform((val) => val ?? []);\n\nexport const StepSchema = z.object({\n id: z.string(),\n action: z.string(),\n deps: depsSchema,\n payload: z.unknown().optional()\n});\n\nexport type Step = z.infer<typeof StepSchema>;\n\nexport function utcNow(): Date {\n return new Date();\n}\n\nexport const ErrorInfoSchema = z.object({\n message: z.string(),\n type: z.string().optional(),\n traceback: z.string().optional()\n});\n\nexport type ErrorInfo = z.infer<typeof ErrorInfoSchema>;\n\nexport const StepResultSchema = z.object({\n stepId: z.string(),\n status: StepStatusSchema.default(StepStatus.PENDING),\n output: z.unknown().optional(),\n error: ErrorInfoSchema.optional(),\n startedAt: z.coerce.date().optional(),\n finishedAt: z.coerce.date().optional()\n});\n\nexport type StepResult = z.infer<typeof StepResultSchema>;\n\nconst stepResultMapSchema = z.preprocess(\n (val) => {\n if (val instanceof Map) {\n return val;\n }\n if (val && typeof val === \"object\") {\n return new Map(Object.entries(val as Record<string, unknown>));\n }\n return val;\n },\n z.map(z.string(), StepResultSchema)\n);\n\nexport const ExecutionStateSchema = z.object({\n executionId: z.string(),\n status: ExecutionStatusSchema.default(ExecutionStatus.PENDING),\n steps: stepResultMapSchema,\n startedAt: z.coerce.date().optional(),\n finishedAt: z.coerce.date().optional()\n});\n\nexport type ExecutionState = z.infer<typeof ExecutionStateSchema>;\n\nexport const ExecutionEventSchema = z.object({\n executionId: z.string(),\n ts: z.coerce.date(),\n type: z.string()\n});\n\nexport type ExecutionEvent = z.infer<typeof ExecutionEventSchema>;\n\nexport const ExecutionStartedSchema = ExecutionEventSchema.extend({\n type: z.literal(\"execution_started\"),\n startedAt: z.coerce.date()\n});\n\nexport type ExecutionStarted = z.infer<typeof ExecutionStartedSchema>;\n\nexport const ExecutionCompletedSchema = ExecutionEventSchema.extend({\n type: z.literal(\"execution_completed\"),\n status: ExecutionStatusSchema,\n finishedAt: z.coerce.date()\n});\n\nexport type ExecutionCompleted = z.infer<typeof ExecutionCompletedSchema>;\n\nexport const ExecutionCancelledSchema = ExecutionEventSchema.extend({\n type: z.literal(\"execution_cancelled\"),\n finishedAt: z.coerce.date()\n});\n\nexport type ExecutionCancelled = z.infer<typeof ExecutionCancelledSchema>;\n\nexport const StepScheduledSchema = ExecutionEventSchema.extend({\n type: z.literal(\"step_scheduled\"),\n stepId: z.string()\n});\n\nexport type StepScheduled = z.infer<typeof StepScheduledSchema>;\n\nexport const StepStartedSchema = ExecutionEventSchema.extend({\n type: z.literal(\"step_started\"),\n stepId: z.string()\n});\n\nexport type StepStarted = z.infer<typeof StepStartedSchema>;\n\nexport const StepCompletedSchema = ExecutionEventSchema.extend({\n type: z.literal(\"step_completed\"),\n stepId: z.string()\n});\n\nexport type StepCompleted = z.infer<typeof StepCompletedSchema>;\n\nexport const StepFailedSchema = ExecutionEventSchema.extend({\n type: z.literal(\"step_failed\"),\n stepId: z.string(),\n error: ErrorInfoSchema\n});\n\nexport type StepFailed = z.infer<typeof StepFailedSchema>;\n\nexport const StepBlockedSchema = ExecutionEventSchema.extend({\n type: z.literal(\"step_blocked\"),\n stepId: z.string()\n});\n\nexport type StepBlocked = z.infer<typeof StepBlockedSchema>;\n\nexport const StepCancelledSchema = ExecutionEventSchema.extend({\n type: z.literal(\"step_cancelled\"),\n stepId: z.string()\n});\n\nexport type StepCancelled = z.infer<typeof StepCancelledSchema>;\n\nexport const ExecutionEventTypeSchema = z.union([\n ExecutionStartedSchema,\n ExecutionCompletedSchema,\n ExecutionCancelledSchema,\n StepScheduledSchema,\n StepStartedSchema,\n StepCompletedSchema,\n StepFailedSchema,\n StepBlockedSchema,\n StepCancelledSchema\n]);\n\nexport type ExecutionEventType = z.infer<typeof ExecutionEventTypeSchema>;\n\nconst stepMapSchema = z.preprocess(\n (val) => {\n if (val instanceof Map) {\n return val;\n }\n if (val && typeof val === \"object\") {\n return new Map(Object.entries(val as Record<string, unknown>));\n }\n return val;\n },\n z.map(z.string(), StepSchema)\n);\n\nexport type StepsInput = Map<string, Step> | Record<string, Step>;\n\nexport const PlanSchema = z.object({\n steps: stepMapSchema\n});\n\nexport type PlanInput = z.infer<typeof PlanSchema>;\n\nexport class Plan implements Iterable<Step> {\n private readonly _steps: ReadonlyMap<string, Step>;\n\n constructor(steps: StepsInput) {\n const parsedSteps = stepMapSchema.parse(steps);\n const normalized = new Map<string, Step>();\n for (const [key, step] of parsedSteps.entries()) {\n if (key !== step.id) {\n throw new Error(`step key '${key}' does not match step.id '${step.id}'`);\n }\n normalized.set(step.id, freezeStep(step));\n }\n this._steps = normalized;\n }\n\n [Symbol.iterator](): Iterator<Step> {\n return this._steps.values();\n }\n\n get steps(): ReadonlyMap<string, Step> {\n return this._steps;\n }\n\n getStep(stepId: string): Step {\n const step = this._steps.get(stepId);\n if (!step) {\n throw new Error(`unknown step '${stepId}'`);\n }\n return step;\n }\n}\n\nfunction freezeStep(step: Step): Step {\n const deps = Array.isArray(step.deps) ? [...step.deps] : [];\n Object.freeze(deps);\n const frozen: Step = {\n id: step.id,\n action: step.action,\n deps,\n payload: step.payload\n };\n return Object.freeze(frozen);\n}\n","import { randomUUID } from \"crypto\";\nimport { AsyncQueue } from \"./internal/async_queue\";\nimport {\n ExecutionStatus,\n StepResultSchema,\n StepStatus,\n utcNow\n} from \"./types\";\nimport type {\n ErrorInfo,\n ExecutionCancelled,\n ExecutionCompleted,\n ExecutionEventType,\n ExecutionStarted,\n ExecutionState,\n Plan,\n Step,\n StepBlocked,\n StepCancelled,\n StepCompleted,\n StepFailed,\n StepResult,\n StepScheduled,\n StepStarted\n} from \"./types\";\n\nexport type StepHandler = (step: Step, ctx: StepContext) => Promise<StepResult>;\nexport type EventHandler = (event: ExecutionEventType) => void | Promise<void>;\n\nexport interface ExecuteOptions {\n onEvent?: EventHandler;\n cancelSignal?: AbortSignal;\n executionId?: string;\n}\n\nexport class StepContext {\n private readonly _executionId: string;\n private readonly _stepId: string;\n private readonly _signal?: AbortSignal;\n private readonly _plan: Plan;\n private readonly _getResult: (stepId: string) => StepResult | undefined;\n\n constructor(params: {\n executionId: string;\n stepId: string;\n signal?: AbortSignal;\n plan: Plan;\n getResult: (stepId: string) => StepResult | undefined;\n }) {\n this._executionId = params.executionId;\n this._stepId = params.stepId;\n this._signal = params.signal;\n this._plan = params.plan;\n this._getResult = params.getResult;\n }\n\n get executionId(): string {\n return this._executionId;\n }\n\n get stepId(): string {\n return this._stepId;\n }\n\n get signal(): AbortSignal | undefined {\n return this._signal;\n }\n\n isCancelled(): boolean {\n return this._signal?.aborted ?? false;\n }\n\n getStep(stepId: string): Step {\n return this._plan.getStep(stepId);\n }\n\n getResult(stepId: string): Readonly<StepResult> | undefined {\n const res = this._getResult(stepId);\n return res ? cloneStepResult(res) : undefined;\n }\n\n requireResult(stepId: string): Readonly<StepResult> {\n const res = this.getResult(stepId);\n if (!res) {\n throw new Error(`missing result for step '${stepId}'`);\n }\n return res;\n }\n\n getDependencyResults(): Readonly<Record<string, StepResult>> {\n const step = this._plan.getStep(this._stepId);\n const deps: Record<string, StepResult> = {};\n for (const depId of step.deps) {\n const res = this._getResult(depId);\n if (res && res.status === StepStatus.COMPLETED) {\n deps[depId] = cloneStepResult(res);\n }\n }\n return deps;\n }\n\n getDependencyOutputs<T = unknown>(): Readonly<Record<string, T>> {\n const results = this.getDependencyResults();\n const outputs: Record<string, T> = {};\n for (const [depId, res] of Object.entries(results)) {\n outputs[depId] = res.output as T;\n }\n return outputs;\n }\n}\n\ntype SchedulerState = {\n running: Map<Promise<void>, string>;\n failFast: boolean;\n stopScheduling: boolean;\n};\n\nexport class DagExecutor {\n private readonly maxParallelSteps: number;\n private readonly failFast: boolean;\n\n constructor(params: { maxParallelSteps?: number; failFast?: boolean } = {}) {\n const { maxParallelSteps = 8, failFast = false } = params;\n if (maxParallelSteps <= 0) {\n throw new Error(\"maxParallelSteps must be > 0\");\n }\n this.maxParallelSteps = maxParallelSteps;\n this.failFast = failFast;\n }\n\n async executeAsync(\n plan: Plan,\n handlers: Record<string, StepHandler>,\n options: ExecuteOptions = {}\n ): Promise<ExecutionState> {\n const execId = options.executionId ?? randomUUID();\n const state: ExecutionState = {\n executionId: execId,\n status: ExecutionStatus.RUNNING,\n steps: new Map(),\n startedAt: utcNow()\n };\n\n const allSteps = new Map<string, Step>();\n for (const step of plan) {\n allSteps.set(step.id, step);\n state.steps.set(step.id, {\n stepId: step.id,\n status: StepStatus.PENDING\n });\n }\n\n const emit = async (event: ExecutionEventType): Promise<void> => {\n if (options.onEvent) {\n await options.onEvent(event);\n }\n };\n\n await emit({\n type: \"execution_started\",\n executionId: execId,\n ts: state.startedAt ?? utcNow(),\n startedAt: state.startedAt ?? utcNow()\n } satisfies ExecutionStarted);\n\n const ready: string[] = [];\n const readySet = new Set<string>();\n const schedState: SchedulerState = {\n running: new Map(),\n failFast: this.failFast,\n stopScheduling: false\n };\n\n const isCancelled = (): boolean => options.cancelSignal?.aborted ?? false;\n\n const canRun = (step: Step): boolean => {\n const res = state.steps.get(step.id);\n if (!res || res.status !== StepStatus.PENDING) {\n return false;\n }\n for (const depId of step.deps) {\n const depRes = state.steps.get(depId);\n if (!depRes) {\n throw new Error(`unknown dependency '${depId}' for step '${step.id}'`);\n }\n if (depRes.status !== StepStatus.COMPLETED) {\n return false;\n }\n }\n return true;\n };\n\n const refreshReady = (): void => {\n for (const step of allSteps.values()) {\n if (readySet.has(step.id)) {\n continue;\n }\n if (canRun(step)) {\n ready.push(step.id);\n readySet.add(step.id);\n }\n }\n };\n\n const cancelStep = async (stepId: string, res: StepResult): Promise<void> => {\n res.status = StepStatus.CANCELLED;\n if (!res.finishedAt) {\n res.finishedAt = utcNow();\n }\n await emit({\n type: \"step_cancelled\",\n executionId: execId,\n ts: utcNow(),\n stepId\n } satisfies StepCancelled);\n };\n\n const failStep = async (stepId: string, res: StepResult, err: ErrorInfo): Promise<void> => {\n res.status = StepStatus.FAILED;\n res.error = err;\n if (!res.finishedAt) {\n res.finishedAt = utcNow();\n }\n await emit({\n type: \"step_failed\",\n executionId: execId,\n ts: utcNow(),\n stepId,\n error: err\n } satisfies StepFailed);\n if (schedState.failFast) {\n schedState.stopScheduling = true;\n }\n };\n\n const blockStep = async (stepId: string, res: StepResult): Promise<void> => {\n res.status = StepStatus.BLOCKED;\n if (!res.finishedAt) {\n res.finishedAt = utcNow();\n }\n await emit({\n type: \"step_blocked\",\n executionId: execId,\n ts: utcNow(),\n stepId\n } satisfies StepBlocked);\n };\n\n const runStep = async (stepId: string): Promise<void> => {\n const step = allSteps.get(stepId)!;\n const res = state.steps.get(stepId)!;\n\n if (isCancelled()) {\n await cancelStep(stepId, res);\n return;\n }\n\n res.status = StepStatus.RUNNING;\n res.startedAt = utcNow();\n await emit({\n type: \"step_started\",\n executionId: execId,\n ts: utcNow(),\n stepId\n } satisfies StepStarted);\n\n const handler = handlers[step.action];\n if (!handler) {\n await failStep(stepId, res, {\n message: `no handler for action '${step.action}'`,\n type: \"MissingHandler\"\n });\n return;\n }\n\n const ctx = new StepContext({\n executionId: execId,\n stepId,\n signal: options.cancelSignal,\n plan,\n getResult: (id) => state.steps.get(id)\n });\n\n let result: StepResult;\n try {\n result = StepResultSchema.parse(await handler(step, ctx));\n } catch (err) {\n if (isAbortError(err)) {\n await cancelStep(stepId, res);\n return;\n }\n const errorInfo: ErrorInfo = {\n message: err instanceof Error ? err.message : String(err),\n type: err instanceof Error ? err.name : \"Error\",\n traceback: err instanceof Error ? err.stack : undefined\n };\n await failStep(stepId, res, errorInfo);\n return;\n }\n\n let status = result.status;\n if (status === StepStatus.PENDING || status === StepStatus.RUNNING) {\n status = result.error ? StepStatus.FAILED : StepStatus.COMPLETED;\n } else if (status === StepStatus.COMPLETED && result.error) {\n status = StepStatus.FAILED;\n }\n\n res.status = status;\n res.output = result.output;\n res.error = result.error;\n res.startedAt = res.startedAt ?? result.startedAt ?? utcNow();\n res.finishedAt = result.finishedAt ?? utcNow();\n\n if (res.status === StepStatus.COMPLETED) {\n await emit({\n type: \"step_completed\",\n executionId: execId,\n ts: utcNow(),\n stepId\n } satisfies StepCompleted);\n } else if (res.status === StepStatus.FAILED) {\n await failStep(\n stepId,\n res,\n res.error ?? { message: \"step failed\", type: \"Unknown\" }\n );\n } else if (res.status === StepStatus.CANCELLED) {\n await cancelStep(stepId, res);\n } else if (res.status === StepStatus.BLOCKED) {\n await blockStep(stepId, res);\n }\n };\n\n refreshReady();\n\n while (true) {\n if (isCancelled()) {\n schedState.stopScheduling = true;\n }\n\n while (!schedState.stopScheduling && schedState.running.size < this.maxParallelSteps) {\n if (ready.length === 0) {\n break;\n }\n const stepId = ready.shift()!;\n readySet.delete(stepId);\n const stepRes = state.steps.get(stepId);\n if (!stepRes || stepRes.status !== StepStatus.PENDING) {\n continue;\n }\n await emit({\n type: \"step_scheduled\",\n executionId: execId,\n ts: utcNow(),\n stepId\n } satisfies StepScheduled);\n\n const task = runStep(stepId);\n schedState.running.set(task, stepId);\n }\n\n if (schedState.running.size === 0) {\n if (schedState.stopScheduling || ready.length === 0) {\n break;\n }\n }\n\n if (schedState.running.size > 0) {\n try {\n const { task: finished } = await waitForAny(schedState.running.keys());\n schedState.running.delete(finished);\n } catch (err) {\n if (isTaskError(err)) {\n schedState.running.delete(err.task);\n throw err.error;\n }\n throw err;\n }\n }\n\n refreshReady();\n }\n\n if (isCancelled()) {\n for (const [stepId, res] of state.steps.entries()) {\n if (res.status === StepStatus.PENDING) {\n await cancelStep(stepId, res);\n }\n }\n state.status = ExecutionStatus.CANCELLED;\n state.finishedAt = utcNow();\n await emit({\n type: \"execution_cancelled\",\n executionId: execId,\n ts: utcNow(),\n finishedAt: state.finishedAt\n } satisfies ExecutionCancelled);\n return state;\n }\n\n for (const [stepId, res] of state.steps.entries()) {\n if (res.status === StepStatus.PENDING) {\n await blockStep(stepId, res);\n }\n }\n\n const allCompleted = Array.from(state.steps.values()).every(\n (res) => res.status === StepStatus.COMPLETED\n );\n state.status = allCompleted ? ExecutionStatus.COMPLETED : ExecutionStatus.FAILED;\n state.finishedAt = utcNow();\n\n await emit({\n type: \"execution_completed\",\n executionId: execId,\n ts: utcNow(),\n status: state.status,\n finishedAt: state.finishedAt\n } satisfies ExecutionCompleted);\n\n return state;\n }\n\n execute(\n plan: Plan,\n handlers: Record<string, StepHandler>,\n options: ExecuteOptions = {}\n ): Promise<ExecutionState> {\n return this.executeAsync(plan, handlers, options);\n }\n\n async *streamExecute(\n plan: Plan,\n handlers: Record<string, StepHandler>,\n options: ExecuteOptions = {}\n ): AsyncIterable<ExecutionEventType> {\n const queue = new AsyncQueue<ExecutionEventType | null>(Infinity);\n const controller = new AbortController();\n const signal = mergeAbortSignals(options.cancelSignal, controller.signal);\n let execError: unknown;\n\n const task = this.executeAsync(plan, handlers, {\n ...options,\n cancelSignal: signal,\n onEvent: async (event) => {\n await queue.put(event);\n }\n })\n .catch((err) => {\n execError = err;\n })\n .finally(async () => {\n await queue.put(null);\n });\n\n try {\n while (true) {\n const event = await queue.get();\n if (event === null) {\n break;\n }\n yield event;\n }\n } finally {\n controller.abort();\n await task;\n if (execError) {\n throw execError;\n }\n }\n }\n}\n\nfunction isAbortError(err: unknown): boolean {\n if (!err || typeof err !== \"object\") {\n return false;\n }\n const name = \"name\" in err ? String((err as { name?: string }).name) : \"\";\n return name === \"AbortError\";\n}\n\ntype TaskError = { task: Promise<void>; error: unknown };\n\nfunction isTaskError(err: unknown): err is TaskError {\n return (\n typeof err === \"object\" &&\n err !== null &&\n \"task\" in err &&\n \"error\" in err\n );\n}\n\nasync function waitForAny(tasks: Iterable<Promise<void>>): Promise<{ task: Promise<void> }> {\n const list = Array.from(tasks);\n if (list.length === 0) {\n throw new Error(\"waitForAny called with no tasks\");\n }\n return Promise.race(\n list.map((task) =>\n task.then(\n () => ({ task }),\n (error) => {\n const taskError: TaskError = { task, error };\n throw taskError;\n }\n )\n )\n );\n}\n\nfunction mergeAbortSignals(...signals: Array<AbortSignal | undefined>): AbortSignal | undefined {\n const active = signals.filter(Boolean) as AbortSignal[];\n if (active.length === 0) {\n return undefined;\n }\n if (active.length === 1) {\n return active[0];\n }\n\n const controller = new AbortController();\n const onAbort = () => {\n controller.abort();\n };\n\n for (const signal of active) {\n if (signal.aborted) {\n controller.abort();\n break;\n }\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n\n return controller.signal;\n}\n\nfunction cloneStepResult(res: StepResult): StepResult {\n return {\n ...res,\n error: res.error ? { ...res.error } : undefined,\n startedAt: res.startedAt ? new Date(res.startedAt) : undefined,\n finishedAt: res.finishedAt ? new Date(res.finishedAt) : undefined\n };\n}\n","import { ErrorInfo, ExecutionState, ExecutionStatus, StepStatus } from \"./types\";\n\nexport class ExecutionError extends Error {\n readonly executionId: string;\n readonly status: ExecutionStatus;\n readonly errors: ErrorInfo[];\n\n constructor(params: { executionId: string; status: ExecutionStatus; errors: ErrorInfo[] }) {\n const { executionId, status, errors } = params;\n const prefix = `Execution ${executionId} ended with status ${status}`;\n const detail = errors.length > 0 ? `${errors[0].type ?? \"Error\"}: ${errors[0].message}` : \"\";\n super(detail ? `${prefix}: ${detail}` : prefix);\n this.executionId = executionId;\n this.status = status;\n this.errors = errors;\n }\n\n static fromState(state: ExecutionState): ExecutionError {\n const errors: ErrorInfo[] = [];\n for (const result of state.steps.values()) {\n if (result.error) {\n errors.push(result.error);\n } else if (result.status === StepStatus.BLOCKED || result.status === StepStatus.CANCELLED) {\n errors.push({\n message: `step ${result.stepId} ended with status ${result.status}`,\n type: \"ExecutionStatus\"\n });\n }\n }\n if (errors.length === 0) {\n errors.push({ message: \"execution failed without detailed errors\", type: \"ExecutionError\" });\n }\n return new ExecutionError({\n executionId: state.executionId,\n status: state.status,\n errors\n });\n }\n}\n\nexport function raiseIfFailed(state: ExecutionState): void {\n if (state.status !== ExecutionStatus.COMPLETED) {\n throw ExecutionError.fromState(state);\n }\n}\n","import { Plan, Step, StepSchema } from \"./types\";\n\nexport class PlanBuilder {\n private readonly steps = new Map<string, Step>();\n\n addStep(params: {\n id: string;\n action: string;\n deps?: Iterable<string>;\n payload?: unknown;\n }): this {\n const { id, action, deps, payload } = params;\n if (this.steps.has(id)) {\n throw new Error(`step id '${id}' already exists in plan`);\n }\n\n const depsList = deps ? Array.from(deps) : [];\n const step: Step = {\n id,\n action,\n deps: depsList,\n payload\n };\n\n this.steps.set(id, step);\n return this;\n }\n\n addStepObj(step: Step): this {\n StepSchema.parse(step);\n if (this.steps.has(step.id)) {\n throw new Error(`step id '${step.id}' already exists in plan`);\n }\n this.steps.set(step.id, step);\n return this;\n }\n\n build(): Plan {\n const stepsCopy = new Map(this.steps);\n this.validateDependencies(stepsCopy);\n this.validateAcyclic(stepsCopy);\n return new Plan(stepsCopy);\n }\n\n private validateDependencies(steps: Map<string, Step>): void {\n const ids = new Set(steps.keys());\n for (const step of steps.values()) {\n for (const dep of step.deps) {\n if (!ids.has(dep)) {\n throw new Error(`step '${step.id}' depends on unknown step '${dep}'`);\n }\n if (dep === step.id) {\n throw new Error(`step '${step.id}' cannot depend on itself`);\n }\n }\n }\n }\n\n private validateAcyclic(steps: Map<string, Step>): void {\n const cycle = findCycle(steps);\n if (cycle) {\n throw new Error(`cycle detected in plan: ${cycle.join(\" -> \")}`);\n }\n }\n}\n\nfunction findCycle(steps: Map<string, Step>): string[] | null {\n const state = new Map<string, \"visiting\" | \"visited\">();\n const stack: string[] = [];\n\n const visit = (node: string): string[] | null => {\n const current = state.get(node);\n if (current === \"visiting\") {\n const idx = stack.indexOf(node);\n return idx >= 0 ? stack.slice(idx).concat(node) : [node, node];\n }\n if (current === \"visited\") {\n return null;\n }\n\n state.set(node, \"visiting\");\n stack.push(node);\n const step = steps.get(node);\n if (step) {\n for (const dep of step.deps) {\n const cycle = visit(dep);\n if (cycle) {\n return cycle;\n }\n }\n }\n stack.pop();\n state.set(node, \"visited\");\n return null;\n };\n\n for (const id of steps.keys()) {\n if (!state.has(id)) {\n const cycle = visit(id);\n if (cycle) {\n return cycle;\n }\n }\n }\n\n return null;\n}\n","import { AsyncQueue } from \"./internal/async_queue\";\nimport type { EventHandler } from \"./executor\";\nimport type { ExecutionEventType } from \"./types\";\n\nexport interface ExecutionObserver {\n onEvent(event: ExecutionEventType): void | Promise<void>;\n}\n\nexport type ObserverErrorHandler = (\n observer: ExecutionObserver,\n event: ExecutionEventType,\n error: Error\n) => void | Promise<void>;\n\nexport const ObserverFailurePolicy = {\n LENIENT: \"lenient\",\n STRICT: \"strict\"\n} as const;\n\nexport type ObserverFailurePolicy =\n (typeof ObserverFailurePolicy)[keyof typeof ObserverFailurePolicy];\n\nasync function callObserverErrorHandler(\n handler: ObserverErrorHandler | undefined,\n observer: ExecutionObserver,\n event: ExecutionEventType,\n error: Error\n): Promise<void> {\n if (!handler) {\n return;\n }\n await handler(observer, event, error);\n}\n\nexport function composeObservers(\n observers: Iterable<ExecutionObserver>,\n options: {\n onError?: ObserverErrorHandler;\n failurePolicy?: ObserverFailurePolicy;\n } = {}\n): EventHandler {\n const list = Array.from(observers);\n const failurePolicy = options.failurePolicy ?? ObserverFailurePolicy.LENIENT;\n\n return async (event: ExecutionEventType): Promise<void> => {\n for (const obs of list) {\n try {\n await obs.onEvent(event);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n await callObserverErrorHandler(options.onError, obs, event, error);\n if (failurePolicy === ObserverFailurePolicy.STRICT) {\n throw error;\n }\n }\n }\n };\n}\n\nexport function composeObserversParallel(\n observers: Iterable<ExecutionObserver>,\n options: {\n onError?: ObserverErrorHandler;\n failurePolicy?: ObserverFailurePolicy;\n } = {}\n): EventHandler {\n const list = Array.from(observers);\n const failurePolicy = options.failurePolicy ?? ObserverFailurePolicy.LENIENT;\n\n return async (event: ExecutionEventType): Promise<void> => {\n const results = await Promise.allSettled(list.map((obs) => obs.onEvent(event)));\n const errors: Array<{ observer: ExecutionObserver; error: Error }> = [];\n\n results.forEach((result, index) => {\n if (result.status === \"rejected\") {\n const error = result.reason instanceof Error ? result.reason : new Error(String(result.reason));\n errors.push({ observer: list[index], error });\n }\n });\n\n if (errors.length === 0) {\n return;\n }\n\n for (const entry of errors) {\n await callObserverErrorHandler(options.onError, entry.observer, event, entry.error);\n }\n\n if (failurePolicy === ObserverFailurePolicy.STRICT) {\n throw errors[0].error;\n }\n };\n}\n\nexport const OverflowPolicy = {\n BLOCK: \"block\",\n DROP_NEW: \"drop_new\",\n DROP_OLDEST: \"drop_oldest\"\n} as const;\n\nexport type OverflowPolicy = (typeof OverflowPolicy)[keyof typeof OverflowPolicy];\n\nexport abstract class BufferedObserver implements ExecutionObserver {\n readonly maxQueueSize: number;\n readonly overflowPolicy: OverflowPolicy;\n readonly onError?: (event: ExecutionEventType, error: Error) => void | Promise<void>;\n\n private readonly queue: AsyncQueue<ExecutionEventType>;\n private task: Promise<void> | null = null;\n private started = false;\n private abortController: AbortController | null = null;\n\n dropped = 0;\n failed = false;\n lastError: Error | null = null;\n\n constructor(params: {\n maxQueueSize?: number;\n overflowPolicy?: OverflowPolicy;\n onError?: (event: ExecutionEventType, error: Error) => void | Promise<void>;\n } = {}) {\n this.maxQueueSize = params.maxQueueSize ?? 1000;\n this.overflowPolicy = params.overflowPolicy ?? OverflowPolicy.BLOCK;\n this.onError = params.onError;\n this.queue = new AsyncQueue<ExecutionEventType>(this.maxQueueSize);\n }\n\n async start(): Promise<void> {\n if (this.started) {\n return;\n }\n this.started = true;\n this.abortController = new AbortController();\n this.task = this.run(this.abortController.signal);\n }\n\n async stop(): Promise<void> {\n if (!this.started) {\n return;\n }\n this.started = false;\n this.abortController?.abort();\n if (this.task) {\n try {\n await this.task;\n } catch {\n // Swallow: failure is captured via failed/lastError.\n }\n }\n }\n\n async onEvent(event: ExecutionEventType): Promise<void> {\n if (this.failed) {\n if (this.lastError) {\n throw this.lastError;\n }\n throw new Error(\"buffered observer worker has failed\");\n }\n\n if (!this.started) {\n await this.process(event);\n return;\n }\n\n if (this.overflowPolicy === OverflowPolicy.BLOCK) {\n await this.queue.put(event);\n return;\n }\n\n if (this.queue.tryPut(event)) {\n return;\n }\n\n this.dropped += 1;\n if (this.overflowPolicy === OverflowPolicy.DROP_NEW) {\n return;\n }\n\n if (this.overflowPolicy === OverflowPolicy.DROP_OLDEST) {\n this.queue.shift();\n if (!this.queue.tryPut(event)) {\n return;\n }\n }\n }\n\n private async run(signal: AbortSignal): Promise<void> {\n while (!signal.aborted) {\n let event: ExecutionEventType;\n try {\n event = await this.queue.get(signal);\n } catch (err) {\n if (isAbortError(err)) {\n break;\n }\n throw err;\n }\n\n try {\n await this.process(event);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.failed = true;\n this.lastError = error;\n if (this.onError) {\n await this.onError(event, error);\n }\n break;\n }\n }\n }\n\n protected abstract process(event: ExecutionEventType): void | Promise<void>;\n}\n\nfunction isAbortError(err: unknown): boolean {\n if (!err || typeof err !== \"object\") {\n return false;\n }\n const name = \"name\" in err ? String((err as { name?: string }).name) : \"\";\n return name === \"AbortError\";\n}\n","import { ExecutionState, StepResult } from \"./types\";\n\nexport type NumberLike = number;\n\nexport class Usage {\n readonly provider?: string;\n readonly model?: string;\n readonly metrics: Record<string, NumberLike>;\n\n constructor(params: { provider?: string; model?: string; metrics?: Record<string, NumberLike> } = {}) {\n this.provider = params.provider;\n this.model = params.model;\n this.metrics = { ...(params.metrics ?? {}) };\n }\n\n add(other: Usage): Usage {\n const provider = this.provider === other.provider ? this.provider : undefined;\n const model = this.model === other.model ? this.model : undefined;\n const merged: Record<string, NumberLike> = { ...this.metrics };\n for (const [key, value] of Object.entries(other.metrics)) {\n merged[key] = (merged[key] ?? 0) + Number(value);\n }\n return new Usage({ provider, model, metrics: merged });\n }\n}\n\nexport function aggregateUsage(\n state: ExecutionState,\n extract: (result: StepResult) => Usage | undefined\n): Usage {\n let total = new Usage();\n let first = true;\n\n for (const res of state.steps.values()) {\n const usage = extract(res);\n if (!usage) {\n continue;\n }\n if (first) {\n total = usage;\n first = false;\n } else {\n total = total.add(usage);\n }\n }\n\n return total;\n}\n\nexport interface PricingRule {\n metric: string;\n perUnit: number;\n scale?: number;\n}\n\nexport interface CostBreakdown {\n byMetric: Record<string, number>;\n total: number;\n}\n\nexport function estimateCost(usage: Usage, rules: PricingRule[]): CostBreakdown {\n const costs: Record<string, number> = {};\n\n for (const rule of rules) {\n const value = Number(usage.metrics[rule.metric] ?? 0);\n if (!value) {\n continue;\n }\n const scale = rule.scale ?? 1;\n const cost = (value / scale) * rule.perUnit;\n costs[rule.metric] = (costs[rule.metric] ?? 0) + cost;\n }\n\n const total = Object.values(costs).reduce((sum, value) => sum + value, 0);\n return { byMetric: costs, total };\n}\n","import { raiseIfFailed } from \"./errors\";\nimport { DagExecutor, type StepHandler } from \"./executor\";\nimport type { ExecutionState, Plan, StepResult } from \"./types\";\nimport { CostBreakdown, PricingRule, Usage, aggregateUsage, estimateCost } from \"./usage\";\n\nexport class TaskOutput<T> {\n readonly value: T;\n readonly usage?: Usage;\n readonly meta: Record<string, unknown>;\n\n constructor(params: { value: T; usage?: Usage; meta?: Record<string, unknown> }) {\n this.value = params.value;\n this.usage = params.usage;\n this.meta = params.meta ?? {};\n }\n}\n\nexport function defaultUsageExtractor(res: StepResult): Usage | undefined {\n const out = res.output;\n if (out instanceof TaskOutput) {\n return out.usage;\n }\n return undefined;\n}\n\nexport async function runPlan(\n plan: Plan,\n handlers: Record<string, StepHandler>,\n options: {\n failOnError?: boolean;\n usageExtractor?: ((res: StepResult) => Usage | undefined) | null;\n pricingRules?: PricingRule[];\n executor?: DagExecutor;\n } = {}\n): Promise<[ExecutionState, Usage | undefined, CostBreakdown | undefined]> {\n const execImpl = options.executor ?? new DagExecutor();\n const state = await execImpl.executeAsync(plan, handlers);\n\n if (options.failOnError ?? true) {\n raiseIfFailed(state);\n }\n\n let usage: Usage | undefined;\n let costs: CostBreakdown | undefined;\n\n const extractor = options.usageExtractor === undefined ? defaultUsageExtractor : options.usageExtractor;\n if (extractor) {\n const aggregated = aggregateUsage(state, extractor);\n if (!aggregated.provider && !aggregated.model && Object.keys(aggregated.metrics).length === 0) {\n usage = undefined;\n } else {\n usage = aggregated;\n }\n }\n\n if (usage && options.pricingRules && options.pricingRules.length > 0) {\n costs = estimateCost(usage, options.pricingRules);\n }\n\n return [state, usage, costs];\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-agent-lib",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Minimal, decoupled DAG execution core for agent workflows.",
5
5
  "type": "module",
6
6
  "license": "MIT",