@silvermoon-work/task-sdk 0.2.0-rc.1 → 0.2.0-rc.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.
package/README.md CHANGED
@@ -161,7 +161,7 @@ a stream or break directory iteration to release it early. Run cancellation
161
161
  aborts all operations. Request budgets are bounded.
162
162
 
163
163
  `context.generation`, `context.checkpoint` and `context.bundle.read` are
164
- removed. Rebuild existing Bundles: hosts explicitly require `spaceProtocol:1`
164
+ removed. Rebuild existing Bundles: hosts explicitly require `contentProtocol:1`
165
165
  in the ready handshake and reject previously compiled SDK wrappers. The schema
166
166
  identity itself is unchanged.
167
167
 
@@ -0,0 +1,3 @@
1
+ /** Split without eagerly draining the source or retaining a second unbounded queue. */
2
+ export declare function boundedBytes(source: ReadableStream<Uint8Array>, signal: AbortSignal, maxChunk: number, done?: () => void): ReadableStream<Uint8Array>;
3
+ //# sourceMappingURL=bytes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../src/bytes.ts"],"names":[],"mappings":"AAEA,uFAAuF;AACvF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAM,IAAe,GAC1B,cAAc,CAAC,UAAU,CAAC,CAsD5B"}
package/dist/bytes.js ADDED
@@ -0,0 +1,59 @@
1
+ import { TaskError } from "@silvermoon-work/task-protocol/worker";
2
+ /** Split without eagerly draining the source or retaining a second unbounded queue. */
3
+ export function boundedBytes(source, signal, maxChunk, done = () => { }) {
4
+ const reader = source.getReader();
5
+ let chunk;
6
+ let offset = 0;
7
+ let closed = false;
8
+ let abort;
9
+ const finish = () => {
10
+ if (closed)
11
+ return;
12
+ closed = true;
13
+ signal.removeEventListener("abort", abort);
14
+ done();
15
+ };
16
+ return new ReadableStream({
17
+ start(controller) {
18
+ abort = () => {
19
+ finish();
20
+ void reader.cancel(signal.reason).catch(() => { });
21
+ controller.error(signal.reason);
22
+ };
23
+ if (signal.aborted)
24
+ abort();
25
+ else
26
+ signal.addEventListener("abort", abort, { once: true });
27
+ },
28
+ async pull(controller) {
29
+ try {
30
+ signal.throwIfAborted();
31
+ while (!chunk || offset === chunk.byteLength) {
32
+ const item = await reader.read();
33
+ if (item.done) {
34
+ finish();
35
+ controller.close();
36
+ return;
37
+ }
38
+ if (!(item.value instanceof Uint8Array))
39
+ throw new TaskError("invalid_payload", "File stream must contain bytes.");
40
+ chunk = item.value;
41
+ offset = 0;
42
+ }
43
+ const end = Math.min(chunk.byteLength, offset + maxChunk);
44
+ controller.enqueue(chunk.slice(offset, end));
45
+ offset = end;
46
+ }
47
+ catch (error) {
48
+ finish();
49
+ void reader.cancel(error).catch(() => { });
50
+ controller.error(error);
51
+ }
52
+ },
53
+ async cancel(reason) {
54
+ finish();
55
+ await reader.cancel(reason);
56
+ },
57
+ }, { highWaterMark: 0 });
58
+ }
59
+ //# sourceMappingURL=bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../src/bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE,uFAAuF;AACvF,MAAM,UAAU,YAAY,CAC1B,MAAkC,EAClC,MAAmB,EACnB,QAAgB,EAChB,OAAmB,GAAG,EAAE,GAAE,CAAC;IAE3B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,IAAI,KAA6B,CAAC;IAClC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAiB,CAAC;IACtB,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,MAAM;YAAE,OAAO;QACnB,MAAM,GAAG,IAAI,CAAC;QACd,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IACF,OAAO,IAAI,cAAc,CACvB;QACE,KAAK,CAAC,UAAU;YACd,KAAK,GAAG,GAAG,EAAE;gBACX,MAAM,EAAE,CAAC;gBACT,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAClD,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC,CAAC;YACF,IAAI,MAAM,CAAC,OAAO;gBAAE,KAAK,EAAE,CAAC;;gBACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,UAAU;YACnB,IAAI,CAAC;gBACH,MAAM,CAAC,cAAc,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;oBAC7C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBACjC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACd,MAAM,EAAE,CAAC;wBACT,UAAU,CAAC,KAAK,EAAE,CAAC;wBACnB,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,UAAU,CAAC;wBACrC,MAAM,IAAI,SAAS,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,CAAC;oBAC5E,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACnB,MAAM,GAAG,CAAC,CAAC;gBACb,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;gBAC1D,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC7C,MAAM,GAAG,GAAG,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,EAAE,CAAC;gBACT,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC1C,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,MAAM,EAAE,CAAC;YACT,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;KACF,EACD,EAAE,aAAa,EAAE,CAAC,EAAE,CACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { IpfsNode } from "@silvermoon-work/ipfs-access";
2
+ import { CID } from "multiformats/cid";
3
+ export type ContentRequest = {
4
+ contentId: number;
5
+ operation: "readContent" | "resolveContent" | "putContent";
6
+ cid?: string;
7
+ path?: string;
8
+ content?: ReadableStream<Uint8Array>;
9
+ };
10
+ export declare function createContentAccess(config: {
11
+ signal: AbortSignal;
12
+ maxInFlight: number;
13
+ maxChunk: number;
14
+ send(request: ContentRequest): void;
15
+ cancel(contentId: number): void;
16
+ }): {
17
+ readContent(cid: CID | string, options?: {
18
+ signal?: AbortSignal;
19
+ }): Promise<IpfsNode>;
20
+ resolveContent(cid: CID | string, path: string, options?: {
21
+ signal?: AbortSignal;
22
+ }): Promise<CID>;
23
+ putContent(content: ReadableStream<Uint8Array>, options?: {
24
+ signal?: AbortSignal;
25
+ }): Promise<CID>;
26
+ drain(): Promise<void>;
27
+ receive(contentId: number, value: IpfsNode | string | void, error?: Error): void;
28
+ };
29
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGvC,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,aAAa,GAAG,gBAAgB,GAAG,YAAY,CAAC;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IACpC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;qBA+C0B,GAAG,GAAG,MAAM,YAAY;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;wBAUpF,GAAG,GAAG,MAAM,QACX,MAAM,YACF;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC,GAAG,CAAC;wBAaJ,cAAc,CAAC,UAAU,CAAC,YACzB;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC,GAAG,CAAC;;uBA4BI,MAAM,SAAS,QAAQ,GAAG,MAAM,GAAG,IAAI,UAAU,KAAK;EA6C5E"}
@@ -0,0 +1,132 @@
1
+ import { TaskError } from "@silvermoon-work/task-protocol/worker";
2
+ import { CID } from "multiformats/cid";
3
+ import { boundedBytes } from "./bytes.js";
4
+ export function createContentAccess(config) {
5
+ const pending = new Map();
6
+ const mutations = new Set();
7
+ let mutationError;
8
+ let sequence = 0;
9
+ let finishing = false;
10
+ function request(value, signal) {
11
+ if (finishing)
12
+ return Promise.reject(new TaskError("run_finished", "Task is finishing."));
13
+ if (pending.size >= config.maxInFlight)
14
+ return Promise.reject(new TaskError("capacity_exceeded", "Content request capacity exceeded."));
15
+ const merged = signal ? AbortSignal.any([config.signal, signal]) : config.signal;
16
+ if (merged.aborted)
17
+ return Promise.reject(merged.reason);
18
+ const contentId = ++sequence;
19
+ return new Promise((resolve, reject) => {
20
+ const abort = () => {
21
+ pending.delete(contentId);
22
+ config.cancel(contentId);
23
+ reject(merged.reason);
24
+ };
25
+ const cleanup = () => merged.removeEventListener("abort", abort);
26
+ merged.addEventListener("abort", abort, { once: true });
27
+ pending.set(contentId, { resolve, reject, cleanup, signal: merged });
28
+ try {
29
+ config.send({ ...value, contentId });
30
+ }
31
+ catch (error) {
32
+ cleanup();
33
+ pending.delete(contentId);
34
+ if (value.content && !value.content.locked)
35
+ void value.content.cancel(error).catch(() => { });
36
+ reject(error);
37
+ }
38
+ });
39
+ }
40
+ return {
41
+ async readContent(cid, options) {
42
+ const value = await request({ operation: "readContent", cid: CID.parse(cid.toString()).toV1().toString() }, options?.signal);
43
+ if (!value || value instanceof CID || (value.kind !== "file" && value.kind !== "directory"))
44
+ throw new TaskError("invalid_payload", "Invalid content read result.");
45
+ return value;
46
+ },
47
+ async resolveContent(cid, path, options) {
48
+ const value = await request({
49
+ operation: "resolveContent",
50
+ cid: CID.parse(cid.toString()).toV1().toString(),
51
+ path,
52
+ }, options?.signal);
53
+ if (!(value instanceof CID))
54
+ throw new TaskError("invalid_cid", "Expected a resolved CID.");
55
+ return value;
56
+ },
57
+ putContent(content, options) {
58
+ if (finishing)
59
+ return Promise.reject(new TaskError("run_finished", "Task is finishing."));
60
+ const signal = options?.signal
61
+ ? AbortSignal.any([config.signal, options.signal])
62
+ : config.signal;
63
+ const promise = request({
64
+ operation: "putContent",
65
+ content: boundedBytes(content, signal, config.maxChunk),
66
+ }, options?.signal).then((value) => {
67
+ if (!(value instanceof CID))
68
+ throw new TaskError("invalid_cid", "Expected a stored CID.");
69
+ return value;
70
+ });
71
+ mutations.add(promise);
72
+ void promise
73
+ .catch((error) => {
74
+ if (!options?.signal?.aborted || error !== options.signal.reason)
75
+ mutationError ??= error;
76
+ })
77
+ .finally(() => mutations.delete(promise));
78
+ return promise;
79
+ },
80
+ async drain() {
81
+ while (mutations.size)
82
+ await Promise.allSettled([...mutations]);
83
+ finishing = true;
84
+ if (mutationError !== undefined)
85
+ throw mutationError;
86
+ },
87
+ receive(contentId, value, error) {
88
+ const operation = pending.get(contentId);
89
+ if (!operation) {
90
+ if (value && typeof value !== "string" && "kind" in value) {
91
+ if (value.kind === "file")
92
+ void value.content.cancel().catch(() => { });
93
+ }
94
+ return;
95
+ }
96
+ pending.delete(contentId);
97
+ operation.cleanup();
98
+ if (error) {
99
+ operation.reject(error);
100
+ return;
101
+ }
102
+ if (typeof value === "string") {
103
+ operation.resolve(CID.parse(value));
104
+ return;
105
+ }
106
+ if (!value || (value.kind !== "file" && value.kind !== "directory")) {
107
+ operation.reject(new TaskError("invalid_payload", "Invalid content result."));
108
+ return;
109
+ }
110
+ if (value.kind === "file") {
111
+ operation.resolve({
112
+ kind: "file",
113
+ content: boundedBytes(value.content, operation.signal, config.maxChunk, () => config.cancel(contentId)),
114
+ });
115
+ return;
116
+ }
117
+ operation.resolve({
118
+ kind: "directory",
119
+ entries: (async function* () {
120
+ for await (const entry of value.entries) {
121
+ yield {
122
+ name: entry.name,
123
+ kind: entry.kind,
124
+ cid: entry.cid instanceof CID ? entry.cid : CID.parse(String(entry.cid)),
125
+ };
126
+ }
127
+ })(),
128
+ });
129
+ },
130
+ };
131
+ }
132
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,9 +2,9 @@ import { type ChildTaskInvocation, type Json, type RunContext } from "@silvermoo
2
2
  export interface TaskContext<Message extends Json = never> extends RunContext<Message> {
3
3
  invokeTask(request: ChildTaskInvocation): Promise<Json>;
4
4
  }
5
- export type TaskCallback<Input = Json, Result = Json, Message extends Json = never> = (input: Input, context: TaskContext<Message>) => Promise<Result>;
6
- export type { BaseSpace, ChildTaskInvocation, ReadonlySpace, ReadWriteSpace, RunContext, RunLogInput, RunLogReceipt, RunMessage, RunProgress, SpaceEntry, SpaceNode, SpaceOptions, SpaceRef, SpaceRefJSON, } from "@silvermoon-work/task-protocol/worker";
7
- export { RunFailure } from "@silvermoon-work/task-protocol/worker";
5
+ export type TaskCallback<Parameters = Json, Result = Json, Message extends Json = never> = (parameters: Parameters, context: TaskContext<Message>) => Promise<Result>;
6
+ export type { ChildTaskInvocation, RunContext, RunLogInput, RunLogReceipt, RunMessage, RunProgress, } from "@silvermoon-work/task-protocol/worker";
7
+ export { ContentRef, RunFailure } from "@silvermoon-work/task-protocol/worker";
8
8
  /** Authors explicitly select this wrapper; the builder binds contracts, not startup. */
9
- export declare function runTask<Input = Json, Result = Json, Message extends Json = never>(callback: TaskCallback<Input, Result, Message>): void;
9
+ export declare function runTask<Parameters = Json, Result = Json, Message extends Json = never>(callback: TaskCallback<Parameters, Result, Message>): void;
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,mBAAmB,EAGxB,KAAK,IAAI,EAGT,KAAK,UAAU,EAQhB,MAAM,uCAAuC,CAAC;AAI/C,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,IAAI,GAAG,KAAK,CAAE,SAAQ,UAAU,CAAC,OAAO,CAAC;IACpF,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AACD,MAAM,MAAM,YAAY,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,SAAS,IAAI,GAAG,KAAK,IAAI,CACpF,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;AACrB,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,YAAY,GACb,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAoCnE,wFAAwF;AACxF,wBAAgB,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,SAAS,IAAI,GAAG,KAAK,EAC/E,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,GAC7C,IAAI,CA2cN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,IAAI,EAGT,KAAK,UAAU,EAQhB,MAAM,uCAAuC,CAAC;AAI/C,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,IAAI,GAAG,KAAK,CAAE,SAAQ,UAAU,CAAC,OAAO,CAAC;IACpF,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AACD,MAAM,MAAM,YAAY,CAAC,UAAU,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,SAAS,IAAI,GAAG,KAAK,IAAI,CACzF,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;AACrB,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,GACZ,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAoC/E,wFAAwF;AACxF,wBAAgB,OAAO,CAAC,UAAU,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,SAAS,IAAI,GAAG,KAAK,EACpF,QAAQ,EAAE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,GAClD,IAAI,CAwfN"}
package/dist/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { parentPort, workerData } from "node:worker_threads";
2
+ import { compileTrustedContract, decodePayload, encodeReferences, } from "@silvermoon-work/ipfs-payload";
2
3
  import { canonical, json, RunFailure, TaskError, taskSchemaUri, } from "@silvermoon-work/task-protocol/worker";
3
4
  import { binding } from "./binding.js";
4
- import { createSpaces } from "./spaces.js";
5
- export { RunFailure } from "@silvermoon-work/task-protocol/worker";
5
+ import { createContentAccess } from "./content.js";
6
+ export { ContentRef, RunFailure } from "@silvermoon-work/task-protocol/worker";
6
7
  class Inbox {
7
8
  capacity;
8
9
  queue = [];
@@ -78,7 +79,25 @@ export function runTask(callback) {
78
79
  let cleanupUncertain = false;
79
80
  let output = Promise.resolve();
80
81
  let outputError;
81
- let spaces;
82
+ let content;
83
+ const hostContract = (schema) => compileTrustedContract(schema, {
84
+ validate() {
85
+ // Host Task dialect validation stays on Engine; workers only convert cidPaths.
86
+ },
87
+ });
88
+ const parametersContract = hostContract(declaration.parametersSchema);
89
+ const resultContract = hostContract(declaration.resultSchema);
90
+ const messageContract = hostContract(declaration.messageSchema);
91
+ function encodeResult(value) {
92
+ try {
93
+ return resultContract.encode(value);
94
+ }
95
+ catch (error) {
96
+ if (error instanceof TaskError)
97
+ throw error;
98
+ throw new TaskError("invalid_payload", error instanceof Error ? error.message : "Invalid payload.");
99
+ }
100
+ }
82
101
  let logSequence = 0;
83
102
  const logPending = new Map();
84
103
  let droppedLogs = 0;
@@ -253,9 +272,9 @@ export function runTask(callback) {
253
272
  kind: "ready",
254
273
  value: {
255
274
  $schema: declaration.$schema,
256
- spaceProtocol: 1,
275
+ contentProtocol: 1,
257
276
  cid: config.bundle.cid,
258
- inputSchema: declaration.inputSchema,
277
+ parametersSchema: declaration.parametersSchema,
259
278
  resultSchema: declaration.resultSchema,
260
279
  messageSchema: declaration.messageSchema,
261
280
  },
@@ -263,10 +282,10 @@ export function runTask(callback) {
263
282
  port.on("message", (envelope) => {
264
283
  if (!envelope || envelope.generation !== config.generation)
265
284
  return;
266
- if (envelope.kind === "space-result") {
285
+ if (envelope.kind === "content-result") {
267
286
  if (envelope.runId !== runId)
268
287
  return;
269
- spaces?.receive(envelope.spaceId, envelope.value, envelope.error ? new TaskError(envelope.error.code, envelope.error.message) : undefined);
288
+ content?.receive(envelope.contentId, envelope.value, envelope.error ? new TaskError(envelope.error.code, envelope.error.message) : undefined);
270
289
  return;
271
290
  }
272
291
  if (envelope.kind === "log-drop-ack") {
@@ -352,7 +371,7 @@ export function runTask(callback) {
352
371
  taskId: message.taskId,
353
372
  caller: Object.freeze(message.caller),
354
373
  signal: task.signal,
355
- payload: message.payload,
374
+ payload: messageContract.decode(message.payload),
356
375
  accept: () => confirm("accepted"),
357
376
  reject: (reason) => confirm("rejected", reason),
358
377
  }));
@@ -361,25 +380,23 @@ export function runTask(callback) {
361
380
  if (envelope.kind !== "run" || runId !== undefined)
362
381
  return;
363
382
  runId = envelope.runId;
364
- spaces = createSpaces({
365
- runId: envelope.runId,
366
- cid: config.bundle.cid,
383
+ content = createContentAccess({
367
384
  signal: controller.signal,
368
385
  maxInFlight: config.maxInFlight,
369
386
  maxChunk: Math.max(1, Math.min(config.maxPayloadBytes, 65_536)),
370
387
  send: (request) => port.postMessage({
371
388
  generation: config.generation,
372
389
  runId,
373
- kind: "space-request",
390
+ kind: "content-request",
374
391
  ...request,
375
392
  }, request.content
376
393
  ? [request.content]
377
394
  : []),
378
- cancel: (spaceId) => port.postMessage({
395
+ cancel: (contentId) => port.postMessage({
379
396
  generation: config.generation,
380
397
  runId,
381
- kind: "space-cancel",
382
- spaceId,
398
+ kind: "content-cancel",
399
+ contentId,
383
400
  }),
384
401
  });
385
402
  const context = Object.freeze({
@@ -388,9 +405,10 @@ export function runTask(callback) {
388
405
  scope: envelope.scope,
389
406
  signal: controller.signal,
390
407
  messages: inbox,
391
- bundle: spaces.bundle,
392
- output: spaces.output,
393
- space: spaces.space,
408
+ bundle: config.bundle.cid,
409
+ readContent: content.readContent,
410
+ resolveContent: content.resolveContent,
411
+ putContent: content.putContent,
394
412
  progress: (value) => enqueue("progress", value),
395
413
  log,
396
414
  invokeTask: (value) => {
@@ -398,24 +416,48 @@ export function runTask(callback) {
398
416
  return Promise.reject(new TaskError("run_finished", "Task is finishing."));
399
417
  controller.signal.throwIfAborted();
400
418
  if (!value ||
401
- Object.keys(value).some((key) => !["key", "bundle", "input", "timeoutMs"].includes(key)))
402
- return Promise.reject(new TaskError("invalid_request", "invokeTask requires bundle: SpaceRef; migrate and rebuild legacy CID/path calls."));
403
- return request("task-invoke", { ...value, bundle: spaces.serialize(value.bundle) });
419
+ Object.keys(value).some((key) => !["key", "bundle", "path", "parameters", "timeoutMs"].includes(key)))
420
+ return Promise.reject(new TaskError("invalid_request", "invokeTask requires bundle CID and parameters."));
421
+ const parameters = value.parameters &&
422
+ typeof value.parameters === "object" &&
423
+ !Array.isArray(value.parameters) &&
424
+ Object.keys(value.parameters).length === 2 &&
425
+ Object.hasOwn(value.parameters, "data") &&
426
+ Object.hasOwn(value.parameters, "cidPaths")
427
+ ? value.parameters
428
+ : encodeReferences(value.parameters);
429
+ return request("task-invoke", {
430
+ key: value.key,
431
+ bundle: value.bundle,
432
+ ...(value.path ? { path: value.path } : {}),
433
+ parameters,
434
+ timeoutMs: value.timeoutMs,
435
+ }).then((result) => decodePayload(result));
404
436
  },
405
437
  });
406
438
  const reportFailure = async (reason) => {
407
- const error = reason;
439
+ let error = reason;
408
440
  cleanupUncertain ||=
409
441
  error instanceof TaskError &&
410
442
  ["reclamation_failed", "reclamation_unknown"].includes(error.code);
411
443
  const evidence = error instanceof RunFailure ? error.result : undefined;
444
+ let encodedEvidence;
445
+ if (evidence !== undefined) {
446
+ try {
447
+ encodedEvidence = encodeResult(evidence);
448
+ }
449
+ catch (rejected) {
450
+ error = rejected;
451
+ encodedEvidence = undefined;
452
+ }
453
+ }
412
454
  const failure = (reason, result) => ({
413
455
  code: reason instanceof TaskError ? reason.code.slice(0, 128) : "run_failed",
414
456
  message: reason instanceof Error ? reason.message.slice(0, 512) : "Task callback failed.",
415
457
  ...(result === undefined ? {} : { result }),
416
458
  });
417
459
  try {
418
- await request("failed", failure(error, evidence));
460
+ await request("failed", failure(error, encodedEvidence));
419
461
  }
420
462
  catch (rejected) {
421
463
  // A rejected evidence frame is not a terminal fact. Report the host's
@@ -425,8 +467,8 @@ export function runTask(callback) {
425
467
  };
426
468
  void (async () => {
427
469
  try {
428
- const value = await callback(envelope.input, context);
429
- await spaces.drain();
470
+ const value = await callback(parametersContract.decode(envelope.parameters), context);
471
+ await content.drain();
430
472
  if (config.durableLogs)
431
473
  await durableLogOutput;
432
474
  finishing = true;
@@ -434,10 +476,10 @@ export function runTask(callback) {
434
476
  await output;
435
477
  if (outputError !== undefined)
436
478
  throw outputError;
437
- await request("complete", value);
479
+ await request("complete", encodeResult(value));
438
480
  }
439
481
  catch (caught) {
440
- await spaces.drain().catch(() => { });
482
+ await content?.drain().catch(() => { });
441
483
  if (config.durableLogs)
442
484
  await durableLogOutput.catch(() => { });
443
485
  finishing = true;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@silvermoon-work/task-sdk",
3
- "version": "0.2.0-rc.1",
3
+ "version": "0.2.0-rc.2",
4
4
  "description": "Generation-scoped Task Worker runtime and author callback types.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -22,7 +22,9 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "multiformats": "14.0.5",
25
- "@silvermoon-work/task-protocol": "0.2.0-rc.1"
25
+ "@silvermoon-work/ipfs-access": "0.1.0-rc.0",
26
+ "@silvermoon-work/ipfs-payload": "0.1.0-rc.0",
27
+ "@silvermoon-work/task-protocol": "0.2.0-rc.2"
26
28
  },
27
29
  "publishConfig": {
28
30
  "access": "public"
package/dist/spaces.d.ts DELETED
@@ -1,27 +0,0 @@
1
- import { type ReadonlySpace, type ReadWriteSpace, type SpaceHostNode, type SpaceRef, type SpaceRefJSON } from "@silvermoon-work/task-protocol/worker";
2
- export type SpaceRequest = {
3
- spaceId: number;
4
- operation: "read" | "write" | "link" | "getCid";
5
- ref?: SpaceRefJSON;
6
- path?: string;
7
- content?: ReadableStream<Uint8Array>;
8
- };
9
- /** Split without eagerly draining the source or retaining a second unbounded queue. */
10
- export declare function boundedBytes(source: ReadableStream<Uint8Array>, signal: AbortSignal, maxChunk: number, done?: () => void): ReadableStream<Uint8Array>;
11
- export declare function createSpaces(config: {
12
- runId: string;
13
- cid: string;
14
- signal: AbortSignal;
15
- maxInFlight: number;
16
- maxChunk: number;
17
- send(request: SpaceRequest): void;
18
- cancel(spaceId: number): void;
19
- }): {
20
- bundle: ReadonlySpace;
21
- output: ReadWriteSpace;
22
- space: (cid: string) => ReadonlySpace;
23
- serialize(ref: SpaceRef): SpaceRefJSON;
24
- drain(): Promise<void>;
25
- receive(spaceId: number, value: SpaceHostNode | string | void, error?: Error): void;
26
- };
27
- //# sourceMappingURL=spaces.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../src/spaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,cAAc,EAGnB,KAAK,aAAa,EAGlB,KAAK,QAAQ,EACb,KAAK,YAAY,EAElB,MAAM,uCAAuC,CAAC;AAG/C,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChD,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CACtC,CAAC;AAEF,uFAAuF;AACvF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAM,IAAe,GAC1B,cAAc,CAAC,UAAU,CAAC,CAsD5B;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;;;iBAyFqB,MAAM,KAAG,aAAa;mBA+EzB,QAAQ,GAAG,YAAY;;qBAUrB,MAAM,SAAS,aAAa,GAAG,MAAM,GAAG,IAAI,UAAU,KAAK;EAoE/E"}
package/dist/spaces.js DELETED
@@ -1,308 +0,0 @@
1
- import { normalizeSpacePath, TaskError, } from "@silvermoon-work/task-protocol/worker";
2
- import { CID } from "multiformats/cid";
3
- /** Split without eagerly draining the source or retaining a second unbounded queue. */
4
- export function boundedBytes(source, signal, maxChunk, done = () => { }) {
5
- const reader = source.getReader();
6
- let chunk;
7
- let offset = 0;
8
- let closed = false;
9
- let abort;
10
- const finish = () => {
11
- if (closed)
12
- return;
13
- closed = true;
14
- signal.removeEventListener("abort", abort);
15
- done();
16
- };
17
- return new ReadableStream({
18
- start(controller) {
19
- abort = () => {
20
- finish();
21
- void reader.cancel(signal.reason).catch(() => { });
22
- controller.error(signal.reason);
23
- };
24
- if (signal.aborted)
25
- abort();
26
- else
27
- signal.addEventListener("abort", abort, { once: true });
28
- },
29
- async pull(controller) {
30
- try {
31
- signal.throwIfAborted();
32
- while (!chunk || offset === chunk.byteLength) {
33
- const item = await reader.read();
34
- if (item.done) {
35
- finish();
36
- controller.close();
37
- return;
38
- }
39
- if (!(item.value instanceof Uint8Array))
40
- throw new TaskError("invalid_space", "File stream must contain bytes.");
41
- chunk = item.value;
42
- offset = 0;
43
- }
44
- const end = Math.min(chunk.byteLength, offset + maxChunk);
45
- controller.enqueue(chunk.slice(offset, end));
46
- offset = end;
47
- }
48
- catch (error) {
49
- finish();
50
- void reader.cancel(error).catch(() => { });
51
- controller.error(error);
52
- }
53
- },
54
- async cancel(reason) {
55
- finish();
56
- await reader.cancel(reason);
57
- },
58
- }, { highWaterMark: 0 });
59
- }
60
- export function createSpaces(config) {
61
- const pending = new Map();
62
- const mutations = new Set();
63
- let mutationError;
64
- let sequence = 0;
65
- let finishing = false;
66
- const spaces = new Map();
67
- const refs = new WeakSet();
68
- function request(value, options = {}) {
69
- if (finishing)
70
- return Promise.reject(new TaskError("run_finished", "Task is finishing."));
71
- if (pending.size >= config.maxInFlight)
72
- return Promise.reject(new TaskError("space_capacity", "Space request capacity exceeded."));
73
- const signal = options.signal
74
- ? AbortSignal.any([config.signal, options.signal])
75
- : config.signal;
76
- if (signal.aborted)
77
- return Promise.reject(signal.reason);
78
- const spaceId = ++sequence;
79
- return new Promise((resolve, reject) => {
80
- const abort = () => {
81
- pending.delete(spaceId);
82
- config.cancel(spaceId);
83
- reject(signal.reason);
84
- };
85
- const cleanup = () => signal.removeEventListener("abort", abort);
86
- signal.addEventListener("abort", abort, { once: true });
87
- pending.set(spaceId, { resolve, reject, cleanup, signal });
88
- try {
89
- config.send({ ...value, spaceId });
90
- }
91
- catch (error) {
92
- cleanup();
93
- pending.delete(spaceId);
94
- if (value.content && !value.content.locked)
95
- void value.content.cancel(error).catch(() => { });
96
- reject(error);
97
- }
98
- });
99
- }
100
- function reference(space, path) {
101
- const ref = Object.freeze({
102
- space,
103
- path,
104
- resolve: (relativePath) => reference(space, normalizeSpacePath(relativePath, path)),
105
- toJSON: () => ({ sid: space.sid, path }),
106
- async read(options) {
107
- const result = await request({ operation: "read", ref: { sid: space.sid, path } }, options);
108
- if (!result || typeof result === "string")
109
- throw new TaskError("invalid_space", "Invalid Space read result.");
110
- if (result.kind === "file")
111
- return Object.freeze(result);
112
- const entries = result.entries;
113
- return Object.freeze({
114
- kind: "directory",
115
- entries: {
116
- async *[Symbol.asyncIterator]() {
117
- const reader = entries.getReader();
118
- try {
119
- while (true) {
120
- const item = await reader.read();
121
- if (item.done)
122
- return;
123
- const data = item.value;
124
- const owner = ownerOf(data.ref.sid);
125
- yield Object.freeze({
126
- name: data.name,
127
- kind: data.kind,
128
- ref: reference(owner, normalizeSpacePath(data.ref.path)),
129
- });
130
- }
131
- }
132
- finally {
133
- await reader.cancel();
134
- reader.releaseLock();
135
- }
136
- },
137
- },
138
- });
139
- },
140
- });
141
- refs.add(ref);
142
- return ref;
143
- }
144
- function space(cid) {
145
- if (typeof cid !== "string" || cid.length > 256)
146
- throw new TaskError("invalid_cid", "Expected a canonical CID.");
147
- try {
148
- cid = CID.parse(cid).toV1().toString();
149
- }
150
- catch {
151
- throw new TaskError("invalid_cid", "Expected a valid CID.");
152
- }
153
- const sid = `ipfs:${cid}`;
154
- let value = spaces.get(sid);
155
- if (!value) {
156
- value = {
157
- sid,
158
- cid,
159
- get root() {
160
- return reference(value, "/");
161
- },
162
- };
163
- Object.freeze(value);
164
- spaces.set(sid, value);
165
- }
166
- return value;
167
- }
168
- function ownerOf(sid) {
169
- if (sid === output.sid)
170
- return output;
171
- if (sid.startsWith("ipfs:"))
172
- return space(sid.slice(5));
173
- throw new TaskError("invalid_space", "Host returned an unknown Space identity.");
174
- }
175
- function mutate(operation, options) {
176
- if (finishing)
177
- return Promise.reject(new TaskError("run_finished", "Task is finishing."));
178
- const promise = new Promise((resolve) => resolve(operation())).then(() => { });
179
- mutations.add(promise);
180
- void promise
181
- .catch((error) => {
182
- if (!options?.signal?.aborted || error !== options.signal.reason)
183
- mutationError ??= error;
184
- })
185
- .finally(() => mutations.delete(promise));
186
- return promise;
187
- }
188
- const output = Object.freeze({
189
- sid: `run:${config.runId}:output`,
190
- get root() {
191
- return reference(output, "/");
192
- },
193
- async getCid(options) {
194
- const value = await request({ operation: "getCid" }, options);
195
- if (typeof value !== "string")
196
- throw new TaskError("invalid_space", "Invalid Space CID.");
197
- return value;
198
- },
199
- write(path, content, options) {
200
- return mutate(() => {
201
- const signal = options?.signal
202
- ? AbortSignal.any([config.signal, options.signal])
203
- : config.signal;
204
- signal.throwIfAborted();
205
- return request({
206
- operation: "write",
207
- path: normalizeSpacePath(path),
208
- content: boundedBytes(content, signal, config.maxChunk),
209
- }, options);
210
- }, options);
211
- },
212
- link(path, ref, options) {
213
- return mutate(() => {
214
- if (!refs.has(ref))
215
- throw new TaskError("invalid_space", "Expected a Space reference.");
216
- return request({ operation: "link", path: normalizeSpacePath(path), ref: ref.toJSON() }, options);
217
- }, options);
218
- },
219
- });
220
- return {
221
- bundle: space(config.cid),
222
- output,
223
- space,
224
- serialize(ref) {
225
- if (!ref || !refs.has(ref))
226
- throw new TaskError("invalid_space", "Expected this Context's SpaceRef.");
227
- return ref.toJSON();
228
- },
229
- async drain() {
230
- while (mutations.size)
231
- await Promise.allSettled([...mutations]);
232
- finishing = true;
233
- if (mutationError !== undefined)
234
- throw mutationError;
235
- },
236
- receive(spaceId, value, error) {
237
- const operation = pending.get(spaceId);
238
- if (!operation) {
239
- if (value && typeof value !== "string") {
240
- const stream = value.kind === "file" ? value.content : value.entries;
241
- void stream.cancel().catch(() => { });
242
- }
243
- return;
244
- }
245
- pending.delete(spaceId);
246
- operation.cleanup();
247
- if (error) {
248
- operation.reject(error);
249
- return;
250
- }
251
- if (value && typeof value !== "string") {
252
- const signal = operation.signal;
253
- const cancel = () => config.cancel(spaceId);
254
- if (value.kind === "file") {
255
- value = {
256
- kind: "file",
257
- content: boundedBytes(value.content, signal, config.maxChunk, cancel),
258
- };
259
- }
260
- else {
261
- const reader = value.entries.getReader();
262
- let abort;
263
- const finish = () => {
264
- signal.removeEventListener("abort", abort);
265
- cancel();
266
- };
267
- value = {
268
- kind: "directory",
269
- entries: new ReadableStream({
270
- start(controller) {
271
- abort = () => {
272
- finish();
273
- void reader.cancel(signal.reason).catch(() => { });
274
- controller.error(signal.reason);
275
- };
276
- if (signal.aborted)
277
- abort();
278
- else
279
- signal.addEventListener("abort", abort, { once: true });
280
- },
281
- async pull(controller) {
282
- try {
283
- const item = await reader.read();
284
- if (item.done) {
285
- finish();
286
- controller.close();
287
- }
288
- else
289
- controller.enqueue(item.value);
290
- }
291
- catch (error) {
292
- finish();
293
- controller.error(error);
294
- }
295
- },
296
- async cancel(reason) {
297
- finish();
298
- await reader.cancel(reason);
299
- },
300
- }, { highWaterMark: 0 }),
301
- };
302
- }
303
- }
304
- operation.resolve(value);
305
- },
306
- };
307
- }
308
- //# sourceMappingURL=spaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spaces.js","sourceRoot":"","sources":["../src/spaces.ts"],"names":[],"mappings":"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"}