@workflow/world-local 4.0.1-beta.2 → 4.0.1-beta.20
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/LICENSE.md +201 -21
- package/dist/config.d.ts +14 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +29 -10
- package/dist/config.js.map +1 -1
- package/dist/fs.d.ts +13 -0
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +53 -11
- package/dist/fs.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -9
- package/dist/index.js.map +1 -1
- package/dist/queue.d.ts +2 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +92 -40
- package/dist/queue.js.map +1 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +147 -90
- package/dist/storage.js.map +1 -1
- package/dist/streamer.d.ts +1 -1
- package/dist/streamer.d.ts.map +1 -1
- package/dist/streamer.js +81 -20
- package/dist/streamer.js.map +1 -1
- package/package.json +12 -9
package/dist/streamer.js
CHANGED
|
@@ -1,51 +1,93 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { monotonicFactory } from 'ulid';
|
|
4
|
-
import {
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { listJSONFiles, readBuffer, readJSON, write, writeJSON } from './fs.js';
|
|
5
6
|
// Create a monotonic ULID factory that ensures ULIDs are always increasing
|
|
6
7
|
// even when generated within the same millisecond
|
|
7
8
|
const monotonicUlid = monotonicFactory(() => Math.random());
|
|
9
|
+
// Schema for the run-to-streams mapping file
|
|
10
|
+
const RunStreamsSchema = z.object({
|
|
11
|
+
streams: z.array(z.string()),
|
|
12
|
+
});
|
|
8
13
|
export function serializeChunk(chunk) {
|
|
9
14
|
const eofByte = Buffer.from([chunk.eof ? 1 : 0]);
|
|
10
15
|
return Buffer.concat([eofByte, chunk.chunk]);
|
|
11
16
|
}
|
|
12
17
|
export function deserializeChunk(serialized) {
|
|
13
18
|
const eof = serialized[0] === 1;
|
|
14
|
-
|
|
19
|
+
// Create a copy instead of a view to prevent ArrayBuffer detachment
|
|
20
|
+
const chunk = Buffer.from(serialized.subarray(1));
|
|
15
21
|
return { eof, chunk };
|
|
16
22
|
}
|
|
17
23
|
export function createStreamer(basedir) {
|
|
18
24
|
const streamEmitter = new EventEmitter();
|
|
25
|
+
// Track which streams have already been registered for a run (in-memory cache)
|
|
26
|
+
const registeredStreams = new Set();
|
|
27
|
+
// Helper to record the runId <> streamId association
|
|
28
|
+
async function registerStreamForRun(runId, streamName) {
|
|
29
|
+
const cacheKey = `${runId}:${streamName}`;
|
|
30
|
+
if (registeredStreams.has(cacheKey)) {
|
|
31
|
+
return; // Already registered in this session
|
|
32
|
+
}
|
|
33
|
+
const runStreamsPath = path.join(basedir, 'streams', 'runs', `${runId}.json`);
|
|
34
|
+
// Read existing streams for this run
|
|
35
|
+
const existing = await readJSON(runStreamsPath, RunStreamsSchema);
|
|
36
|
+
const streams = existing?.streams ?? [];
|
|
37
|
+
// Add stream if not already present
|
|
38
|
+
if (!streams.includes(streamName)) {
|
|
39
|
+
streams.push(streamName);
|
|
40
|
+
await writeJSON(runStreamsPath, { streams }, { overwrite: true });
|
|
41
|
+
}
|
|
42
|
+
registeredStreams.add(cacheKey);
|
|
43
|
+
}
|
|
19
44
|
return {
|
|
20
|
-
async writeToStream(name, chunk) {
|
|
21
|
-
|
|
45
|
+
async writeToStream(name, _runId, chunk) {
|
|
46
|
+
// Await runId if it's a promise to ensure proper flushing
|
|
47
|
+
const runId = await _runId;
|
|
48
|
+
// Register this stream for the run
|
|
49
|
+
await registerStreamForRun(runId, name);
|
|
50
|
+
const chunkId = `chnk_${monotonicUlid()}`;
|
|
51
|
+
// Convert chunk to buffer for serialization
|
|
52
|
+
let chunkBuffer;
|
|
22
53
|
if (typeof chunk === 'string') {
|
|
23
|
-
|
|
54
|
+
chunkBuffer = Buffer.from(new TextEncoder().encode(chunk));
|
|
55
|
+
}
|
|
56
|
+
else if (chunk instanceof Buffer) {
|
|
57
|
+
chunkBuffer = chunk;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
chunkBuffer = Buffer.from(chunk);
|
|
24
61
|
}
|
|
25
62
|
const serialized = serializeChunk({
|
|
26
|
-
chunk:
|
|
63
|
+
chunk: chunkBuffer,
|
|
27
64
|
eof: false,
|
|
28
65
|
});
|
|
29
66
|
const chunkPath = path.join(basedir, 'streams', 'chunks', `${name}-${chunkId}.json`);
|
|
30
67
|
await write(chunkPath, serialized);
|
|
31
|
-
// Emit real-time event
|
|
32
|
-
const chunkData =
|
|
33
|
-
? new TextEncoder().encode(chunk)
|
|
34
|
-
: chunk instanceof Buffer
|
|
35
|
-
? new Uint8Array(chunk)
|
|
36
|
-
: chunk;
|
|
68
|
+
// Emit real-time event with Uint8Array (create copy to prevent ArrayBuffer detachment)
|
|
69
|
+
const chunkData = Uint8Array.from(chunkBuffer);
|
|
37
70
|
streamEmitter.emit(`chunk:${name}`, {
|
|
38
71
|
streamName: name,
|
|
39
72
|
chunkData,
|
|
40
73
|
chunkId,
|
|
41
74
|
});
|
|
42
75
|
},
|
|
43
|
-
async closeStream(name) {
|
|
44
|
-
|
|
76
|
+
async closeStream(name, _runId) {
|
|
77
|
+
// Await runId if it's a promise to ensure proper flushing
|
|
78
|
+
const runId = await _runId;
|
|
79
|
+
// Register this stream for the run (in case writeToStream wasn't called)
|
|
80
|
+
await registerStreamForRun(runId, name);
|
|
81
|
+
const chunkId = `chnk_${monotonicUlid()}`;
|
|
45
82
|
const chunkPath = path.join(basedir, 'streams', 'chunks', `${name}-${chunkId}.json`);
|
|
46
83
|
await write(chunkPath, serializeChunk({ chunk: Buffer.from([]), eof: true }));
|
|
47
84
|
streamEmitter.emit(`close:${name}`, { streamName: name });
|
|
48
85
|
},
|
|
86
|
+
async listStreamsByRunId(runId) {
|
|
87
|
+
const runStreamsPath = path.join(basedir, 'streams', 'runs', `${runId}.json`);
|
|
88
|
+
const data = await readJSON(runStreamsPath, RunStreamsSchema);
|
|
89
|
+
return data?.streams ?? [];
|
|
90
|
+
},
|
|
49
91
|
async readFromStream(name, startIndex = 0) {
|
|
50
92
|
const chunksDir = path.join(basedir, 'streams', 'chunks');
|
|
51
93
|
let removeListeners = () => { };
|
|
@@ -58,23 +100,35 @@ export function createStreamer(basedir) {
|
|
|
58
100
|
let isReadingFromDisk = true;
|
|
59
101
|
const chunkListener = (event) => {
|
|
60
102
|
deliveredChunkIds.add(event.chunkId);
|
|
103
|
+
// Skip empty chunks to maintain consistency with disk reading behavior
|
|
104
|
+
// Empty chunks are not enqueued when read from disk (see line 184-186)
|
|
105
|
+
if (event.chunkData.byteLength === 0) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
61
108
|
if (isReadingFromDisk) {
|
|
62
109
|
// Buffer chunks that arrive during disk reading to maintain order
|
|
110
|
+
// Create a copy to prevent ArrayBuffer detachment when enqueued later
|
|
63
111
|
bufferedEventChunks.push({
|
|
64
112
|
chunkId: event.chunkId,
|
|
65
|
-
chunkData: event.chunkData,
|
|
113
|
+
chunkData: Uint8Array.from(event.chunkData),
|
|
66
114
|
});
|
|
67
115
|
}
|
|
68
116
|
else {
|
|
69
117
|
// After disk reading is complete, deliver chunks immediately
|
|
70
|
-
|
|
118
|
+
// Create a copy to prevent ArrayBuffer detachment
|
|
119
|
+
controller.enqueue(Uint8Array.from(event.chunkData));
|
|
71
120
|
}
|
|
72
121
|
};
|
|
73
122
|
const closeListener = () => {
|
|
74
123
|
// Remove listeners before closing
|
|
75
124
|
streamEmitter.off(`chunk:${name}`, chunkListener);
|
|
76
125
|
streamEmitter.off(`close:${name}`, closeListener);
|
|
77
|
-
|
|
126
|
+
try {
|
|
127
|
+
controller.close();
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// Ignore if controller is already closed (e.g., from cancel() or EOF)
|
|
131
|
+
}
|
|
78
132
|
};
|
|
79
133
|
removeListeners = closeListener;
|
|
80
134
|
// Set up listeners FIRST to avoid missing events
|
|
@@ -101,7 +155,8 @@ export function createStreamer(basedir) {
|
|
|
101
155
|
break;
|
|
102
156
|
}
|
|
103
157
|
if (chunk.chunk.byteLength) {
|
|
104
|
-
|
|
158
|
+
// Create a copy to prevent ArrayBuffer detachment
|
|
159
|
+
controller.enqueue(Uint8Array.from(chunk.chunk));
|
|
105
160
|
}
|
|
106
161
|
}
|
|
107
162
|
// Finished reading from disk - now deliver buffered event chunks in chronological order
|
|
@@ -109,11 +164,17 @@ export function createStreamer(basedir) {
|
|
|
109
164
|
// Sort buffered chunks by ULID (chronological order)
|
|
110
165
|
bufferedEventChunks.sort((a, b) => a.chunkId.localeCompare(b.chunkId));
|
|
111
166
|
for (const buffered of bufferedEventChunks) {
|
|
112
|
-
|
|
167
|
+
// Create a copy for defense in depth (already copied at storage, but be extra safe)
|
|
168
|
+
controller.enqueue(Uint8Array.from(buffered.chunkData));
|
|
113
169
|
}
|
|
114
170
|
if (isComplete) {
|
|
115
171
|
removeListeners();
|
|
116
|
-
|
|
172
|
+
try {
|
|
173
|
+
controller.close();
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// Ignore if controller is already closed (e.g., from closeListener event)
|
|
177
|
+
}
|
|
117
178
|
return;
|
|
118
179
|
}
|
|
119
180
|
},
|
package/dist/streamer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamer.js","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"streamer.js","sourceRoot":"","sources":["../src/streamer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/world-local",
|
|
3
|
-
"version": "4.0.1-beta.
|
|
3
|
+
"version": "4.0.1-beta.20",
|
|
4
4
|
"description": "Local development World implementation for Workflow DevKit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
12
12
|
},
|
|
13
|
-
"license": "
|
|
13
|
+
"license": "Apache-2.0",
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
16
16
|
"url": "https://github.com/vercel/workflow.git",
|
|
@@ -23,18 +23,21 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@vercel/queue": "0.0.0-alpha.
|
|
27
|
-
"
|
|
26
|
+
"@vercel/queue": "0.0.0-alpha.33",
|
|
27
|
+
"async-sema": "3.1.1",
|
|
28
|
+
"ulid": "3.0.1",
|
|
29
|
+
"undici": "6.22.0",
|
|
28
30
|
"zod": "4.1.11",
|
|
29
|
-
"@workflow/
|
|
31
|
+
"@workflow/errors": "4.0.1-beta.10",
|
|
32
|
+
"@workflow/utils": "4.0.1-beta.7",
|
|
33
|
+
"@workflow/world": "4.0.1-beta.10"
|
|
30
34
|
},
|
|
31
35
|
"devDependencies": {
|
|
32
|
-
"@opentelemetry/api": "
|
|
33
|
-
"@types/ms": "
|
|
34
|
-
"@types/node": "
|
|
36
|
+
"@opentelemetry/api": "1.9.0",
|
|
37
|
+
"@types/ms": "0.7.34",
|
|
38
|
+
"@types/node": "22.19.0",
|
|
35
39
|
"ms": "2.1.3",
|
|
36
40
|
"vitest": "^3.2.4",
|
|
37
|
-
"@workflow/errors": "4.0.1-beta.1",
|
|
38
41
|
"@workflow/tsconfig": "4.0.1-beta.0"
|
|
39
42
|
},
|
|
40
43
|
"peerDependencies": {
|