UNPKG

trellis

Version:

Agentic State Engine — event-sourced causal graph with branching, decision traces, and realtime sync for AI-native applications

97 lines 3.03 kB
/** * WorkerPool — Concurrent agent run execution with queue-based concurrency control. * * @module trellis/core/agents */ import type { TrellisKernel } from '../kernel/trellis-kernel.js'; import { AgentHarness } from './harness.js'; import type { RunTaskOptions } from './types.js'; export type WorkerTaskStatus = 'queued' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled'; export interface WorkerTask { id: string; agentId: string; runId: string; input: string; status: WorkerTaskStatus; queuedAt: string; startedAt?: string; completedAt?: string; error?: string; } export interface WorkerPoolConfig { /** Maximum concurrent agent runs (default 1). */ concurrency: number; /** Interval in ms to poll for ready tasks (default 500). */ pollIntervalMs: number; /** Persist queue state to the graph (survives restarts). */ persistToGraph?: boolean; /** Simulate execution — complete tasks without LLM. Useful for testing and external executors. */ simulate?: boolean; } export type WorkerPoolEvent = { type: 'task:queued'; task: WorkerTask; } | { type: 'task:started'; task: WorkerTask; } | { type: 'task:completed'; task: WorkerTask; } | { type: 'task:failed'; task: WorkerTask; error: string; } | { type: 'task:cancelled'; task: WorkerTask; } | { type: 'task:paused'; task: WorkerTask; } | { type: 'task:resumed'; task: WorkerTask; }; export type WorkerPoolListener = (event: WorkerPoolEvent) => void; export interface PoolStatus { active: number; queued: number; maxConcurrency: number; running: boolean; } export type KernelFactory = () => TrellisKernel | Promise<TrellisKernel>; export declare class WorkerPool { private kernel; private harness; private kernelFactory; private config; private queue; private active; private stopped; private pollTimer; private listeners; constructor(kernel: TrellisKernel | KernelFactory, harness?: AgentHarness, config?: Partial<WorkerPoolConfig>); /** Lazily resolve and expose the kernel (for DAGScheduler & consumers). */ ensureKernel(): Promise<TrellisKernel>; private _ensureKernel; private _ensureHarness; start(): void; stop(): void; getStatus(): PoolStatus; on(listener: WorkerPoolListener): void; off(listener: WorkerPoolListener): void; private _emit; enqueue(agentId: string, input: string, opts?: RunTaskOptions, runId?: string): Promise<string>; cancel(runId: string): Promise<void>; pause(runId: string): Promise<void>; resume(runId: string): Promise<void>; getQueue(): WorkerTask[]; getActiveJobs(): WorkerTask[]; getTask(runId: string): WorkerTask | undefined; private _tick; private _execute; /** Restore queued/paused tasks from the graph. Call after construction. */ restore(): Promise<void>; private _saveTask; private _updateTask; } //# sourceMappingURL=worker-pool.d.ts.map