@silvermoon-work/task-protocol 0.0.0-stage → 0.1.0-canary-261109-2

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.
Files changed (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +96 -2
  3. package/dist/bundle-content.d.ts +12 -0
  4. package/dist/bundle-content.d.ts.map +1 -0
  5. package/dist/bundle-content.js +78 -0
  6. package/dist/bundle-content.js.map +1 -0
  7. package/dist/bundle-files.d.ts +9 -0
  8. package/dist/bundle-files.d.ts.map +1 -0
  9. package/dist/bundle-files.js +99 -0
  10. package/dist/bundle-files.js.map +1 -0
  11. package/dist/bundle-paths.d.ts +15 -0
  12. package/dist/bundle-paths.d.ts.map +1 -0
  13. package/dist/bundle-paths.js +24 -0
  14. package/dist/bundle-paths.js.map +1 -0
  15. package/dist/bundle-reference.d.ts +9 -0
  16. package/dist/bundle-reference.d.ts.map +1 -0
  17. package/dist/bundle-reference.js +82 -0
  18. package/dist/bundle-reference.js.map +1 -0
  19. package/dist/bundle.d.ts +90 -0
  20. package/dist/bundle.d.ts.map +1 -0
  21. package/dist/bundle.js +359 -0
  22. package/dist/bundle.js.map +1 -0
  23. package/dist/index.d.ts +12 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +12 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/json.d.ts +22 -0
  28. package/dist/json.d.ts.map +1 -0
  29. package/dist/json.js +118 -0
  30. package/dist/json.js.map +1 -0
  31. package/dist/logs.d.ts +84 -0
  32. package/dist/logs.d.ts.map +1 -0
  33. package/dist/logs.js +81 -0
  34. package/dist/logs.js.map +1 -0
  35. package/dist/presentation.d.ts +11 -0
  36. package/dist/presentation.d.ts.map +1 -0
  37. package/dist/presentation.js +32 -0
  38. package/dist/presentation.js.map +1 -0
  39. package/dist/projection.d.ts +21 -0
  40. package/dist/projection.d.ts.map +1 -0
  41. package/dist/projection.js +656 -0
  42. package/dist/projection.js.map +1 -0
  43. package/dist/run.d.ts +92 -0
  44. package/dist/run.d.ts.map +1 -0
  45. package/dist/run.js +24 -0
  46. package/dist/run.js.map +1 -0
  47. package/dist/schema-runtime.d.ts +29 -0
  48. package/dist/schema-runtime.d.ts.map +1 -0
  49. package/dist/schema-runtime.js +340 -0
  50. package/dist/schema-runtime.js.map +1 -0
  51. package/dist/schema.d.ts +8 -0
  52. package/dist/schema.d.ts.map +1 -0
  53. package/dist/schema.js +69 -0
  54. package/dist/schema.js.map +1 -0
  55. package/dist/task-schema-uri.d.ts +2 -0
  56. package/dist/task-schema-uri.d.ts.map +1 -0
  57. package/dist/task-schema-uri.js +2 -0
  58. package/dist/task-schema-uri.js.map +1 -0
  59. package/dist/types.d.ts +583 -0
  60. package/dist/types.d.ts.map +1 -0
  61. package/dist/types.js +2 -0
  62. package/dist/types.js.map +1 -0
  63. package/dist/worker.d.ts +6 -0
  64. package/dist/worker.d.ts.map +1 -0
  65. package/dist/worker.js +6 -0
  66. package/dist/worker.js.map +1 -0
  67. package/package.json +58 -3
package/dist/schema.js ADDED
@@ -0,0 +1,69 @@
1
+ import { Ajv2020 } from "ajv/dist/2020.js";
2
+ import standaloneCode from "ajv/dist/standalone/index.js";
3
+ import { fail } from "./json.js";
4
+ import { createInputContract, createJsonContract, } from "./schema-runtime.js";
5
+ const record = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
6
+ function compiler(standalone) {
7
+ return (schema, nodes, locations) => {
8
+ const options = {
9
+ strict: true,
10
+ allowUnionTypes: true,
11
+ validateFormats: false,
12
+ ownProperties: true,
13
+ code: { source: true },
14
+ };
15
+ try {
16
+ let ajv = new Ajv2020(options);
17
+ let validate = ajv.compile(schema);
18
+ if ([...nodes].some((node) => typeof node !== "boolean" &&
19
+ record(node.properties) &&
20
+ Object.hasOwn(node.properties, "__proto__"))) {
21
+ const compiledSchema = structuredClone(schema);
22
+ for (const location of locations) {
23
+ let node = compiledSchema;
24
+ for (const part of location.slice(1).split("/").slice(1))
25
+ node = node[part.replaceAll("~1", "/").replaceAll("~0", "~")];
26
+ if (!record(node) ||
27
+ !record(node.properties) ||
28
+ !Object.hasOwn(node.properties, "__proto__"))
29
+ continue;
30
+ const patterns = record(node.patternProperties) ? node.patternProperties : {};
31
+ const pattern = "^__proto__(?![\\s\\S])";
32
+ const child = { $ref: `${location}/properties/__proto__` };
33
+ patterns[pattern] = Object.hasOwn(patterns, pattern)
34
+ ? { allOf: [patterns[pattern], child] }
35
+ : child;
36
+ node.patternProperties = patterns;
37
+ }
38
+ // Ajv skips properties.__proto__; validate authors' strict schema before
39
+ // adding an equivalent, potentially overlapping compiler-owned pattern.
40
+ ajv = new Ajv2020({ ...options, allowMatchingProperties: true });
41
+ validate = ajv.compile(compiledSchema);
42
+ }
43
+ standalone?.(standaloneCode.default(ajv, validate));
44
+ return validate;
45
+ }
46
+ catch (error) {
47
+ fail("invalid_schema", error instanceof Error ? error.message : "Invalid input Schema.");
48
+ }
49
+ };
50
+ }
51
+ export function compileInputSchema(value, options = {}) {
52
+ return createInputContract(value, compiler(), options);
53
+ }
54
+ export function compileJsonSchema(value, options = {}) {
55
+ return createJsonContract(value, compiler(), options);
56
+ }
57
+ /** Build-only source generation, using exactly the ordinary contract checks. */
58
+ export function precompileSchema(value, input = false) {
59
+ let source = "";
60
+ const compile = compiler((generated) => {
61
+ source = generated;
62
+ });
63
+ if (input)
64
+ createInputContract(value, compile);
65
+ else
66
+ createJsonContract(value, compile);
67
+ return source;
68
+ }
69
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const taskSchemaUri = "https://shazhou-ww.github.io/potential-guide/schemas/artifacts/task/v1.json";
2
+ //# sourceMappingURL=task-schema-uri.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-schema-uri.d.ts","sourceRoot":"","sources":["../src/task-schema-uri.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,gFACqD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const taskSchemaUri = "https://shazhou-ww.github.io/potential-guide/schemas/artifacts/task/v1.json";
2
+ //# sourceMappingURL=task-schema-uri.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-schema-uri.js","sourceRoot":"","sources":["../src/task-schema-uri.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GACxB,6EAA6E,CAAC"}
@@ -0,0 +1,583 @@
1
+ import type { BundleReference, ResolvedTaskBundle } from "./bundle.js";
2
+ import type { Json, JsonObject } from "./json.js";
3
+ import type { TypeWorkerRegistration } from "./run.js";
4
+ import type { InputSchema } from "./schema.js";
5
+ export type Stage = "initial" | "running" | "stopping" | "stopped" | "completed" | "failed";
6
+ export type RunStage = Exclude<Stage, "initial">;
7
+ export type MatchPolicy = "starts-after-eligible" | "terminates-after-eligible";
8
+ export type Revision = string;
9
+ export type CoordinatorRequest = JsonObject & {
10
+ requestId: string;
11
+ type: string;
12
+ timeoutMs: number;
13
+ eligibleAt?: string;
14
+ seriesId?: string;
15
+ matchPolicy?: MatchPolicy;
16
+ };
17
+ export type TaskRequest = JsonObject & {
18
+ requestId: string;
19
+ bundle: BundleReference;
20
+ timeoutMs: number;
21
+ eligibleAt?: string;
22
+ seriesId?: string;
23
+ matchPolicy?: MatchPolicy;
24
+ };
25
+ export type SubmissionResult = {
26
+ status: "preparing";
27
+ requestId: string;
28
+ trackingToken: string;
29
+ } | {
30
+ status: "accepted";
31
+ requestId: string;
32
+ taskId: string;
33
+ } | {
34
+ status: "rejected";
35
+ requestId: string;
36
+ error: ErrorFact;
37
+ };
38
+ export interface SubmissionRecord {
39
+ composition?: {
40
+ parentRunId: string;
41
+ rootRunId: string;
42
+ depth: number;
43
+ key: string;
44
+ path: string;
45
+ intent: Json;
46
+ deadlineAt: string;
47
+ };
48
+ bundleProtocol?: "ipfs";
49
+ request: TaskRequest;
50
+ caller: Caller;
51
+ arrivedAt: string;
52
+ qualifiedLowerBound: number;
53
+ decision: SubmissionResult;
54
+ terminalAt?: string;
55
+ resultForgotten?: boolean;
56
+ }
57
+ export interface ErrorFact {
58
+ code: string;
59
+ message: string;
60
+ }
61
+ export interface ParentTaskAssociation {
62
+ runId: string;
63
+ rootRunId: string;
64
+ depth: number;
65
+ key: string;
66
+ path: string;
67
+ }
68
+ export interface TaskSnapshot {
69
+ parent?: ParentTaskAssociation;
70
+ bundle?: BundleReference;
71
+ name?: string;
72
+ requestId: string;
73
+ taskId: string;
74
+ seriesId: string;
75
+ stage: Stage;
76
+ receivedAt: string;
77
+ eligibleAt: string;
78
+ deadlineAt: string;
79
+ timestamp: string;
80
+ revision: Revision;
81
+ dataDomain: string;
82
+ updatedAt: string;
83
+ canceled: boolean;
84
+ canceledAt?: string;
85
+ run?: {
86
+ runId: string;
87
+ startedAt: string;
88
+ matchedAt?: string;
89
+ completedAt?: string;
90
+ failedAt?: string;
91
+ stoppedAt?: string;
92
+ };
93
+ termination?: {
94
+ terminatedAt: string;
95
+ };
96
+ error?: ErrorFact;
97
+ result?: Json;
98
+ }
99
+ export interface Binding {
100
+ /** Host-owned isolation identity; absent for ordinary non-composing Tasks. */
101
+ compositionId?: string;
102
+ bundle?: BundleReference;
103
+ declaration?: ResolvedTaskBundle;
104
+ type: string;
105
+ version: string;
106
+ contractRevision: string;
107
+ inputSchema: InputSchema;
108
+ environment: string;
109
+ scope: string;
110
+ subject: string;
111
+ matchPolicy: MatchPolicy;
112
+ }
113
+ export interface TaskRecord {
114
+ taskId: string;
115
+ seriesId: string;
116
+ receivedAt: string;
117
+ eligibleAt: string;
118
+ deadlineAt: string;
119
+ receivedSequence: number;
120
+ request: CoordinatorRequest | TaskRequest;
121
+ binding: Binding;
122
+ input: Json;
123
+ canceledAt?: string;
124
+ canceledSequence?: number;
125
+ }
126
+ export type RunOutcome = {
127
+ kind: "completed";
128
+ result: Json;
129
+ occurredAt: string;
130
+ } | {
131
+ kind: "failed";
132
+ error: ErrorFact;
133
+ result?: Json;
134
+ occurredAt: string;
135
+ };
136
+ export interface RunExit {
137
+ basis: "worker" | "recovery";
138
+ occurredAt: string;
139
+ sequence: number;
140
+ code?: number;
141
+ forced?: boolean;
142
+ }
143
+ export interface RunRecord {
144
+ runId: string;
145
+ generation: string;
146
+ binding: Binding;
147
+ input: Json;
148
+ startedAt: string;
149
+ startedSequence: number;
150
+ updatedAt: string;
151
+ stopRequested?: {
152
+ occurredAt: string;
153
+ sequence: number;
154
+ reason: string;
155
+ };
156
+ stoppingAt?: string;
157
+ stoppingSequence?: number;
158
+ outcome?: RunOutcome;
159
+ exit?: RunExit;
160
+ progress?: Json;
161
+ completedAt?: string;
162
+ failedAt?: string;
163
+ result?: Json;
164
+ error?: ErrorFact;
165
+ reclaimedAt?: string;
166
+ workerGeneration?: string;
167
+ evidence?: {
168
+ kind: "checkpoint" | "late-completed" | "late-failed";
169
+ value: Json;
170
+ }[];
171
+ cleanupUnknown?: {
172
+ reason: string;
173
+ observedAt: string;
174
+ };
175
+ }
176
+ export interface Facts {
177
+ projectionVersion: 5;
178
+ dataDomain: string;
179
+ admissionLowerBound: number | null;
180
+ observations: {
181
+ sequence: number;
182
+ observedAt: string;
183
+ }[];
184
+ watermark: number;
185
+ tasks: Record<string, TaskRecord>;
186
+ runs: Record<string, RunRecord>;
187
+ messages: Record<string, TaskMessageRecord>;
188
+ requests: Record<string, {
189
+ taskId: string;
190
+ scope: string;
191
+ intent: CoordinatorRequest | TaskRequest;
192
+ }>;
193
+ submissions: Record<string, SubmissionRecord>;
194
+ }
195
+ export interface TaskMessageRecord {
196
+ taskId: string;
197
+ messageId: string;
198
+ runId: string;
199
+ generation: string;
200
+ caller: Caller;
201
+ payload: Json;
202
+ receivedAt: string;
203
+ state: "queued" | "accepted" | "rejected" | "unknown";
204
+ resolvedAt?: string;
205
+ reason?: string;
206
+ }
207
+ export interface EventData {
208
+ "submission.preparing": {
209
+ record: SubmissionRecord;
210
+ };
211
+ "submission.resolved": {
212
+ requestId: string;
213
+ decision: Exclude<SubmissionResult, {
214
+ status: "preparing";
215
+ }>;
216
+ };
217
+ "submission.results-forgotten": {
218
+ requestIds: string[];
219
+ };
220
+ "window.advanced": {
221
+ lowerBound: number;
222
+ };
223
+ "qualification-time-observed": {
224
+ observedAt: string;
225
+ };
226
+ "task.created": {
227
+ task: TaskRecord;
228
+ };
229
+ "task.canceled": Record<string, never>;
230
+ "run.started": {
231
+ run: RunRecord;
232
+ };
233
+ "run.dispatched": {
234
+ workerGeneration: string;
235
+ };
236
+ "run.evidence": {
237
+ kind: "checkpoint" | "late-completed" | "late-failed";
238
+ value: Json;
239
+ };
240
+ "run.progress": {
241
+ progress: Json;
242
+ };
243
+ "run.outcome": {
244
+ outcome: RunOutcome;
245
+ };
246
+ "run.stop.requested": {
247
+ reason: string;
248
+ };
249
+ "run.stopping": Record<string, never>;
250
+ "run.exited": {
251
+ basis: "worker" | "recovery";
252
+ code?: number;
253
+ forced?: boolean;
254
+ };
255
+ "run.reclaimed": Record<string, never>;
256
+ "run.cleanup.unknown": {
257
+ reason: string;
258
+ };
259
+ "message.received": {
260
+ message: TaskMessageRecord;
261
+ };
262
+ "message.resolved": {
263
+ messageId: string;
264
+ state: "accepted" | "rejected" | "unknown";
265
+ reason?: string;
266
+ };
267
+ "records.forgotten": {
268
+ taskIds: string[];
269
+ runIds: string[];
270
+ };
271
+ }
272
+ export type EventKind = keyof EventData;
273
+ export type FactEvent = {
274
+ [K in EventKind]: {
275
+ sequence: number;
276
+ type: K;
277
+ occurredAt: string;
278
+ scope: string;
279
+ taskId?: string;
280
+ runId?: string;
281
+ data: EventData[K];
282
+ };
283
+ }[EventKind];
284
+ export type NewEvent = FactEvent extends infer E ? E extends FactEvent ? Omit<E, "sequence"> : never : never;
285
+ export interface PublicEvent {
286
+ sequence: number;
287
+ revision: Revision;
288
+ type: string;
289
+ occurredAt: string;
290
+ scope: string;
291
+ taskId?: string;
292
+ runId?: string;
293
+ data: Json;
294
+ }
295
+ export type TaskEvent = PublicEvent;
296
+ export type RunEvent = PublicEvent;
297
+ export interface RunSnapshot {
298
+ parent?: ParentTaskAssociation;
299
+ bundle?: BundleReference;
300
+ name?: string;
301
+ runId: string;
302
+ dataDomain: string;
303
+ revision: Revision;
304
+ timestamp: string;
305
+ type: string;
306
+ version: string;
307
+ scope: string;
308
+ environment: string;
309
+ startedAt: string;
310
+ startedSequence: number;
311
+ updatedAt: string;
312
+ stage: RunStage;
313
+ stopRequested?: RunRecord["stopRequested"];
314
+ stoppingAt?: string;
315
+ outcome?: RunOutcome;
316
+ exit?: RunExit;
317
+ completedAt?: string;
318
+ failedAt?: string;
319
+ stoppedAt?: string;
320
+ result?: Json;
321
+ error?: ErrorFact;
322
+ progress?: Json;
323
+ reclaimedAt?: string;
324
+ cleanupUnknown?: RunRecord["cleanupUnknown"];
325
+ }
326
+ export interface StoreView {
327
+ storeId: string;
328
+ cursorKey: string;
329
+ floor: number;
330
+ prefix: Facts;
331
+ facts: Facts;
332
+ events: FactEvent[];
333
+ }
334
+ export interface Store {
335
+ markRunLogsUnavailable?: import("./logs.js").RunLogStorage["markRunLogsUnavailable"];
336
+ readRunLogs?: import("./logs.js").RunLogStorage["readRunLogs"];
337
+ writeRunLogs?: import("./logs.js").RunLogStorage["writeRunLogs"];
338
+ pruneRunLogs?: import("./logs.js").RunLogStorage["pruneRunLogs"];
339
+ claim(owner: string): void;
340
+ release(owner: string): void;
341
+ read(): StoreView;
342
+ append(owner: string, expectedWatermark: number, events: NewEvent[]): StoreView;
343
+ compact(owner: string, through: number): void;
344
+ close(): void;
345
+ }
346
+ export interface Clock {
347
+ now(): number;
348
+ schedule(callback: () => void, delayMs: number): () => void;
349
+ }
350
+ export interface Caller {
351
+ scope: string;
352
+ subject: string;
353
+ }
354
+ export type Operation = "submit" | "request" | "task" | "run" | "cancel" | "history" | "subscribe" | "list" | "list-runs" | "message";
355
+ export type Authorize = (caller: Caller, operation: Operation, scope: string) => boolean;
356
+ export interface PreparationOptions {
357
+ signal: AbortSignal;
358
+ deadlineAt: string;
359
+ /** Trusted Engine binding; absent only for older direct adapters. */
360
+ context?: Readonly<Pick<Binding, "type" | "version" | "environment" | "scope">>;
361
+ }
362
+ export interface StartPermit {
363
+ runId: string;
364
+ generation: string;
365
+ startedAt: string;
366
+ progress(value: unknown): void;
367
+ complete(value: unknown): void;
368
+ fail(error: ErrorFact): void;
369
+ }
370
+ export interface ExecuteOptions {
371
+ context: Readonly<Pick<Binding, "type" | "version" | "environment" | "scope">>;
372
+ signal: AbortSignal;
373
+ replaceRunId?: string;
374
+ start(): StartPermit;
375
+ authorizeReplacement(runId: string, generation: string): boolean | Promise<boolean>;
376
+ }
377
+ export interface RunTracking {
378
+ runId: string;
379
+ generation: string;
380
+ startedAt: string;
381
+ finished: Promise<void>;
382
+ reclaim(reason: string): Promise<void>;
383
+ }
384
+ export interface RegisteredType extends TypeWorkerRegistration {
385
+ }
386
+ export type HistoryFilter = {
387
+ taskId: string;
388
+ } | {
389
+ runId: string;
390
+ } | {
391
+ seriesId: string;
392
+ };
393
+ export interface HistoryPage {
394
+ events: PublicEvent[];
395
+ items: PublicEvent[];
396
+ revision: Revision;
397
+ watermark: number;
398
+ cursor: string;
399
+ next?: string;
400
+ }
401
+ export interface Observation {
402
+ snapshots: TaskSnapshot[];
403
+ events: PublicEvent[];
404
+ watermark: number;
405
+ revision: Revision;
406
+ cursor: string;
407
+ }
408
+ export interface Subscription {
409
+ initial: Observation;
410
+ pull(): Observation;
411
+ close(): void;
412
+ events: AsyncIterable<PublicEvent>;
413
+ unsubscribe(): Promise<void>;
414
+ }
415
+ export interface TaskQuery {
416
+ bundleCid?: string;
417
+ taskId?: string;
418
+ type?: string;
419
+ scope?: string;
420
+ seriesId?: string;
421
+ runId?: string;
422
+ stage?: Stage;
423
+ canceled?: boolean;
424
+ createdFrom?: string;
425
+ createdBefore?: string;
426
+ updatedFrom?: string;
427
+ updatedBefore?: string;
428
+ sort?: "created-desc" | "updated-desc";
429
+ }
430
+ export interface TaskSummary {
431
+ bundle?: BundleReference;
432
+ name?: string;
433
+ taskId: string;
434
+ requestId: string;
435
+ seriesId: string;
436
+ type: string;
437
+ version: string;
438
+ receivedAt: string;
439
+ updatedAt: string;
440
+ eligibleAt: string;
441
+ deadlineAt: string;
442
+ scope: string;
443
+ stage: Stage;
444
+ canceled: boolean;
445
+ runId?: string;
446
+ state: {
447
+ stage: Stage;
448
+ pending: boolean;
449
+ timedOut: boolean;
450
+ canceled: boolean;
451
+ completed: boolean;
452
+ runFailed: boolean;
453
+ };
454
+ }
455
+ export interface TaskPage {
456
+ tasks: TaskSummary[];
457
+ items: TaskSummary[];
458
+ revision: Revision;
459
+ /** Fixed observation time for this query's summaries, not a Task update. */
460
+ observedAt: string;
461
+ expiresAt: string;
462
+ next?: string;
463
+ }
464
+ export interface RunQuery {
465
+ bundleCid?: string;
466
+ runId?: string;
467
+ type?: string;
468
+ scope?: string;
469
+ stage?: RunStage;
470
+ updatedFrom?: string;
471
+ updatedBefore?: string;
472
+ startedFrom?: string;
473
+ startedBefore?: string;
474
+ sort?: "started-desc" | "updated-desc";
475
+ }
476
+ export interface RunSummary {
477
+ bundle?: BundleReference;
478
+ name?: string;
479
+ runId: string;
480
+ type: string;
481
+ version: string;
482
+ startedAt: string;
483
+ startedSequence: number;
484
+ updatedAt: string;
485
+ scope: string;
486
+ stage: RunStage;
487
+ stopRequested: boolean;
488
+ completedAt?: string;
489
+ failedAt?: string;
490
+ stoppedAt?: string;
491
+ reclaimedAt?: string;
492
+ state: {
493
+ running: boolean;
494
+ completed: boolean;
495
+ failed: boolean;
496
+ reclaimed: boolean;
497
+ sealed: boolean;
498
+ stopping: boolean;
499
+ stopped: boolean;
500
+ };
501
+ }
502
+ export interface RunPage {
503
+ runs: RunSummary[];
504
+ items: RunSummary[];
505
+ revision: Revision;
506
+ observedAt: string;
507
+ expiresAt: string;
508
+ next?: string;
509
+ }
510
+ export interface CollectionChange<Summary> {
511
+ kind: "joined" | "updated" | "removed";
512
+ id: string;
513
+ summary?: Summary;
514
+ }
515
+ export interface CollectionEnvelope<Summary> {
516
+ revision: Revision;
517
+ changes: CollectionChange<Summary>[];
518
+ }
519
+ export interface CollectionSubscription<Summary> {
520
+ events: AsyncIterable<CollectionEnvelope<Summary>>;
521
+ pull(): CollectionEnvelope<Summary>[];
522
+ unsubscribe(): Promise<void>;
523
+ close(): void;
524
+ }
525
+ export interface CancellationResult extends TaskSnapshot {
526
+ changed: boolean;
527
+ }
528
+ export interface CoordinatorService {
529
+ sendTaskMessage(taskId: string, messageId: string, payload: unknown, caller: Caller): TaskMessageRecord;
530
+ getTaskMessage(taskId: string, messageId: string, caller: Caller): TaskMessageRecord;
531
+ discoverTypes(caller: Caller): readonly TaskTypeDiscovery[];
532
+ submit(request: unknown, caller: Caller, options?: SubmitOptions): TaskSnapshot;
533
+ getRequest(requestId: string, caller: Caller): CoordinatorRequest;
534
+ getTask(taskId: string, caller: Caller): TaskSnapshot;
535
+ cancelTask(taskId: string, caller: Caller): CancellationResult;
536
+ getRun(runId: string, caller: Caller): RunSnapshot;
537
+ getRunLogs?(runId: string, page: import("./logs.js").RunLogQuery, caller: Caller): import("./logs.js").RunLogPage;
538
+ subscribeRunLogs?(runId: string, page: import("./logs.js").RunLogQuery, caller: Caller): import("./logs.js").RunLogSubscription;
539
+ getTaskHistory(taskId: string, page: {
540
+ cursor?: string;
541
+ limit?: number;
542
+ }, caller: Caller): HistoryPage;
543
+ getRunHistory(runId: string, page: {
544
+ cursor?: string;
545
+ limit?: number;
546
+ }, caller: Caller): HistoryPage;
547
+ subscribeTask(taskId: string, fromRevision: Revision, caller: Caller): Subscription;
548
+ subscribeRun(runId: string, fromRevision: Revision, caller: Caller): Subscription;
549
+ subscribeTasks(query: TaskQuery, fromRevision: Revision, caller: Caller): CollectionSubscription<TaskSummary>;
550
+ subscribeRuns(query: RunQuery, fromRevision: Revision, caller: Caller): CollectionSubscription<RunSummary>;
551
+ listTasks(query: TaskQuery, page: {
552
+ cursor?: string;
553
+ limit?: number;
554
+ }, caller: Caller): TaskPage;
555
+ listRuns(query: RunQuery, page: {
556
+ cursor?: string;
557
+ limit?: number;
558
+ }, caller: Caller): RunPage;
559
+ readHistory(filter: HistoryFilter, page: {
560
+ cursor?: string;
561
+ limit?: number;
562
+ }, caller: Caller): HistoryPage;
563
+ subscribe(filter: HistoryFilter, resume: string | undefined, caller: Caller): Subscription;
564
+ start(): Promise<void>;
565
+ close(): Promise<void>;
566
+ }
567
+ export interface TaskService extends Omit<CoordinatorService, "discoverTypes" | "submit" | "getRequest"> {
568
+ submit(request: unknown, caller: Caller): Promise<SubmissionResult>;
569
+ getRequest(requestId: string, caller: Caller): TaskRequest;
570
+ getRequestStatus(requestId: string, options: {
571
+ waitMs?: number;
572
+ }, caller: Caller): Promise<SubmissionResult>;
573
+ }
574
+ export interface TaskTypeDiscovery {
575
+ readonly type: string;
576
+ readonly version: string;
577
+ readonly inputSchema: InputSchema;
578
+ readonly revision: string;
579
+ }
580
+ export interface SubmitOptions {
581
+ expectedRevision?: string;
582
+ }
583
+ //# sourceMappingURL=types.d.ts.map