Complete API documentation for the ReliableScheduler class.
new ReliableScheduler(()
Creates a new scheduler instance with the provided Durable Object storage. @param storage - Durable Object storage instance @param options - Optional configuration @param options.maxConcurrentTasks - Maximum number of tasks to process concurrently (default: 10)
static generateTaskId(prefix: string = "task"): string
Generate a unique task ID. Default prefix is 'task'.
runNow((): void
Start a task immediately with eviction safety. Sets a 30s safety alarm for automatic retry. @param options.maxRetries - Override default retry count (default: 3, use Infinity for infinite loop tasks) @param options.priority - Task priority: 0=high, 1=medium, 2=low (default: 1)
schedule((): void
Schedule a task to run at a future time (Unix timestamp or Date). @param options.priority - Task priority: 0=high, 1=medium, 2=low (default: 1)
alarm(): Effect.Effect<void, never, never>
Call this from your Durable Object's alarm handler to process scheduled tasks.
register(taskName: string, handler: TaskHandler): void
Register a named task handler. The handler receives taskId and params, and can access SchedulerService via yield* SchedulerService in Effect context.
getTask(taskId: string): Effect.Effect<Task | undefined, never, never>
Get a single task by ID. Returns undefined if not found.
getTasks(status?: TaskStatus): Effect.Effect<Task[], never, never>
Get all tasks, optionally filtered by status.
cancelTask(taskId: string): Effect.Effect<boolean, never, never>
Cancel and delete a task. Returns true if successful, false if task not found.
pauseTask(taskId: string): Effect.Effect<boolean, never, never>
Pause a running task. Returns true if successful, false if task not found or cannot be paused.
resumeTask(taskId: string): Effect.Effect<boolean, never, never>
Resume a paused task. Returns true if successful, false if task not found or not paused.
completeTask(taskId: string): Effect.Effect<void, never, never>
Mark a task as complete and clean up its state.
checkpoint(taskId: string, key: string, value: unknown): Effect.Effect<void, never, never>
Save progress for a task. Use this to mark completion of expensive operations.
getCheckpoint(taskId: string, key: string): Effect.Effect<unknown, never, never>
Retrieve saved progress for a task. Returns undefined if not found.
runSteps((): void
Execute a multi-step task with automatic progress tracking, pause/resume support, checkpointing, and optional auto-completion.
runSubSteps(taskId: string, stepName: string, stepIndex: number, totalSteps: number, subStepCount: number, subStepDuration: number, onSubStep?: (subStepIndex: number) => Promise<void> | Effect.Effect<void>): Effect.Effect<void, never, never>
Helper for sub-step execution within a step. Handles pause checks and progress tracking automatically.
clearCompleted(): Effect.Effect<number, never, never>
Delete all completed tasks. Returns the count of deleted tasks.
clearAll(): Effect.Effect<number, never, never>
Delete all tasks regardless of status. Returns the count of deleted tasks.
formatTaskForUI(task: Task): any
Format a task object for UI consumption with standardized fields.
getHandler(taskName: string): TaskHandler | undefined
Get a registered handler by name. Returns undefined if not found.
type TaskStatus = "pending" | "running" | "paused" | "completed" | "failed"
interface Task {
taskId: string;
taskName: string;
params: unknown;
scheduledAt: number;
startedAt: number;
status: TaskStatus;
safetyAlarmAt?: number;
progress: Record<string, unknown>;
retryCount?: number;
maxRetries?: number;
pausedAt?: number;
}
type TaskHandler = (
scheduler: ReliableScheduler,
taskId: string,
params: unknown
) => Effect.Effect<void>