digital-tasks 2.3.0 → 2.4.0

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,264 @@
1
+ /**
2
+ * Task Worker - provides task management via RPC
3
+ *
4
+ * This worker can be deployed to Cloudflare Workers or run locally via Miniflare.
5
+ * It exposes TaskServiceCore via Workers RPC through the TaskService WorkerEntrypoint.
6
+ *
7
+ * Uses Cloudflare Workers RPC (WorkerEntrypoint, RpcTarget) for communication.
8
+ * Uses Durable Objects for task state persistence.
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ import { WorkerEntrypoint, RpcTarget, DurableObject } from 'cloudflare:workers';
13
+ declare interface DurableObjectNamespace<T = unknown> {
14
+ idFromName(name: string): DurableObjectId;
15
+ idFromString(id: string): DurableObjectId;
16
+ newUniqueId(): DurableObjectId;
17
+ get(id: DurableObjectId): DurableObjectStub<T>;
18
+ }
19
+ declare interface DurableObjectId {
20
+ toString(): string;
21
+ equals(other: DurableObjectId): boolean;
22
+ }
23
+ type DurableObjectStub<T = unknown> = T & {
24
+ id: DurableObjectId;
25
+ name?: string;
26
+ };
27
+ declare interface DurableObjectState {
28
+ id: DurableObjectId;
29
+ storage: DurableObjectStorage;
30
+ blockConcurrencyWhile<T>(callback: () => Promise<T>): Promise<T>;
31
+ }
32
+ declare interface DurableObjectStorage {
33
+ get<T>(key: string): Promise<T | undefined>;
34
+ get<T>(keys: string[]): Promise<Map<string, T>>;
35
+ put<T>(key: string, value: T): Promise<void>;
36
+ put<T>(entries: Record<string, T>): Promise<void>;
37
+ delete(key: string): Promise<boolean>;
38
+ delete(keys: string[]): Promise<number>;
39
+ list<T>(options?: {
40
+ prefix?: string;
41
+ limit?: number;
42
+ start?: string;
43
+ end?: string;
44
+ }): Promise<Map<string, T>>;
45
+ }
46
+ declare interface Queue<T = unknown> {
47
+ send(message: T, options?: {
48
+ contentType?: string;
49
+ }): Promise<void>;
50
+ sendBatch(messages: {
51
+ body: T;
52
+ contentType?: string;
53
+ }[]): Promise<void>;
54
+ }
55
+ declare interface Ai {
56
+ run(model: string, inputs: unknown): Promise<unknown>;
57
+ }
58
+ export type TaskStatus = 'pending' | 'scheduled' | 'queued' | 'blocked' | 'in_progress' | 'completed' | 'failed' | 'cancelled';
59
+ export type TaskPriority = 'low' | 'normal' | 'high' | 'urgent' | 'critical';
60
+ export interface WorkerRef {
61
+ type: 'agent' | 'human' | 'team' | 'any';
62
+ id: string;
63
+ name?: string;
64
+ }
65
+ export interface TaskDependency {
66
+ type: 'blocked_by';
67
+ taskId: string;
68
+ satisfied: boolean;
69
+ }
70
+ export interface TaskProgress {
71
+ percent: number;
72
+ step?: string;
73
+ updatedAt: Date;
74
+ }
75
+ export interface TaskAssignment {
76
+ worker: WorkerRef;
77
+ assignedAt: Date;
78
+ }
79
+ export interface TaskData<TInput = unknown, TOutput = unknown> {
80
+ id: string;
81
+ name: string;
82
+ description: string;
83
+ status: TaskStatus;
84
+ priority: TaskPriority;
85
+ input?: TInput;
86
+ output?: TOutput;
87
+ error?: string;
88
+ scheduledFor?: Date;
89
+ deadline?: Date;
90
+ createdAt: Date;
91
+ startedAt?: Date;
92
+ completedAt?: Date;
93
+ progress?: TaskProgress;
94
+ dependencies?: TaskDependency[];
95
+ assignment?: TaskAssignment;
96
+ metadata?: Record<string, unknown>;
97
+ }
98
+ export interface CreateTaskOptions<TInput = unknown> {
99
+ id?: string;
100
+ name: string;
101
+ description: string;
102
+ priority?: TaskPriority;
103
+ input?: TInput;
104
+ scheduledFor?: Date;
105
+ deadline?: Date;
106
+ tags?: string[];
107
+ metadata?: Record<string, unknown>;
108
+ dependencies?: string[];
109
+ }
110
+ export interface ScheduleOptions {
111
+ priority?: TaskPriority;
112
+ }
113
+ export interface ExecuteOptions {
114
+ worker?: WorkerRef;
115
+ }
116
+ export interface ListOptions {
117
+ status?: TaskStatus | TaskStatus[];
118
+ priority?: TaskPriority;
119
+ tags?: string[];
120
+ search?: string;
121
+ sortBy?: 'createdAt' | 'priority';
122
+ sortOrder?: 'asc' | 'desc';
123
+ limit?: number;
124
+ offset?: number;
125
+ }
126
+ export interface EnqueueOptions {
127
+ delaySeconds?: number;
128
+ }
129
+ export interface TaskStats {
130
+ total: number;
131
+ byStatus: Record<string, number>;
132
+ byPriority: Record<string, number>;
133
+ }
134
+ export interface Env {
135
+ TASK_STATE: DurableObjectNamespace<TaskStateDO>;
136
+ TASK_QUEUE?: Queue;
137
+ AI?: Ai;
138
+ }
139
+ /**
140
+ * Durable Object for persisting task state
141
+ *
142
+ * Uses a single DO instance to store all tasks for simplicity.
143
+ * In production, you might shard by project or date.
144
+ */
145
+ export declare class TaskStateDO extends DurableObject {
146
+ ctx: DurableObjectState;
147
+ env: Env;
148
+ private tasks;
149
+ private queue;
150
+ private initialized;
151
+ constructor(state: DurableObjectState, env: Env);
152
+ private ensureInitialized;
153
+ private serializeTask;
154
+ private deserializeTask;
155
+ createTask(options: CreateTaskOptions): Promise<TaskData>;
156
+ getTask(id: string): Promise<TaskData | null>;
157
+ updateTask(id: string, updates: Partial<TaskData>): Promise<TaskData | null>;
158
+ listTasks(options?: ListOptions): Promise<TaskData[]>;
159
+ getStats(): Promise<TaskStats>;
160
+ getReadyTasks(): Promise<TaskData[]>;
161
+ getDependants(taskId: string): Promise<TaskData[]>;
162
+ satisfyDependency(completedTaskId: string): Promise<void>;
163
+ failDependants(failedTaskId: string): Promise<void>;
164
+ enqueue(taskId: string): Promise<void>;
165
+ dequeue(): Promise<TaskData | null>;
166
+ }
167
+ /**
168
+ * Core task service - extends RpcTarget so it can be passed over RPC
169
+ *
170
+ * Contains all task functionality: create, schedule, execute, complete, etc.
171
+ */
172
+ export declare class TaskServiceCore extends RpcTarget {
173
+ private env;
174
+ private doStub;
175
+ constructor(env: Env);
176
+ /**
177
+ * Create a new task
178
+ */
179
+ create(options: CreateTaskOptions): Promise<TaskData>;
180
+ /**
181
+ * Schedule a task for future execution
182
+ */
183
+ schedule(taskId: string, scheduledFor: Date, options?: ScheduleOptions): Promise<TaskData>;
184
+ /**
185
+ * Start task execution
186
+ */
187
+ execute(taskId: string, options?: ExecuteOptions): Promise<TaskData>;
188
+ /**
189
+ * Complete a task with output
190
+ */
191
+ complete(taskId: string, output: unknown): Promise<TaskData>;
192
+ /**
193
+ * Fail a task with error
194
+ */
195
+ fail(taskId: string, error: string | Error): Promise<TaskData>;
196
+ /**
197
+ * Get task status
198
+ */
199
+ getStatus(taskId: string): Promise<TaskData | null>;
200
+ /**
201
+ * Update task progress
202
+ */
203
+ updateProgress(taskId: string, percent: number, step?: string): Promise<TaskData>;
204
+ /**
205
+ * Cancel a task
206
+ */
207
+ cancel(taskId: string, reason?: string): Promise<boolean>;
208
+ /**
209
+ * List tasks with optional filtering
210
+ */
211
+ list(options?: ListOptions): Promise<TaskData[]>;
212
+ /**
213
+ * Get task statistics
214
+ */
215
+ getStats(): Promise<TaskStats>;
216
+ /**
217
+ * Retry a failed task
218
+ */
219
+ retry(taskId: string): Promise<TaskData>;
220
+ /**
221
+ * Get tasks that are ready for execution (not blocked)
222
+ */
223
+ getReadyTasks(): Promise<TaskData[]>;
224
+ /**
225
+ * Get tasks that depend on a given task
226
+ */
227
+ getDependants(taskId: string): Promise<TaskData[]>;
228
+ /**
229
+ * Enqueue a task for background processing
230
+ */
231
+ enqueue(taskId: string, options?: EnqueueOptions): Promise<TaskData>;
232
+ /**
233
+ * Dequeue and start the next task
234
+ */
235
+ dequeue(): Promise<TaskData | null>;
236
+ /**
237
+ * Execute a task with AI
238
+ */
239
+ executeWithAI(taskId: string): Promise<TaskData>;
240
+ }
241
+ /**
242
+ * Main task service exposed via RPC as WorkerEntrypoint
243
+ *
244
+ * Usage:
245
+ * const tasks = await env.TASKS.connect()
246
+ * const task = await tasks.create({ name: 'My Task', description: 'Do something' })
247
+ * await tasks.execute(task.id)
248
+ * await tasks.complete(task.id, { result: 'done' })
249
+ */
250
+ export declare class TaskService extends WorkerEntrypoint<Env> {
251
+ ctx: ExecutionContext;
252
+ env: Env;
253
+ /**
254
+ * Get a task service instance - returns an RpcTarget that can be used directly
255
+ */
256
+ connect(): TaskServiceCore;
257
+ }
258
+ declare interface ExecutionContext {
259
+ waitUntil(promise: Promise<unknown>): void;
260
+ passThroughOnException(): void;
261
+ }
262
+ export default TaskService;
263
+ export { TaskService as TaskWorker };
264
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}