@opendatalabs/personal-server-ts-server 1.16.0 → 1.17.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.
- package/dist/app.d.ts +12 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +54 -2
- package/dist/app.js.map +1 -1
- package/dist/bootstrap.d.ts +6 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +65 -21
- package/dist/bootstrap.js.map +1 -1
- package/dist/enclave-main.d.ts +11 -0
- package/dist/enclave-main.d.ts.map +1 -0
- package/dist/enclave-main.js +188 -0
- package/dist/enclave-main.js.map +1 -0
- package/dist/index.js +11 -23
- package/dist/index.js.map +1 -1
- package/dist/jobs/access-reporter.d.ts +36 -0
- package/dist/jobs/access-reporter.d.ts.map +1 -0
- package/dist/jobs/access-reporter.js +272 -0
- package/dist/jobs/access-reporter.js.map +1 -0
- package/dist/jobs/raw-envelope-stream.d.ts +3 -0
- package/dist/jobs/raw-envelope-stream.d.ts.map +1 -0
- package/dist/jobs/raw-envelope-stream.js +371 -0
- package/dist/jobs/raw-envelope-stream.js.map +1 -0
- package/dist/jobs/types.d.ts +17 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +3 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/jobs/worker.d.ts +43 -0
- package/dist/jobs/worker.d.ts.map +1 -0
- package/dist/jobs/worker.js +491 -0
- package/dist/jobs/worker.js.map +1 -0
- package/dist/listen.d.ts +11 -0
- package/dist/listen.d.ts.map +1 -0
- package/dist/listen.js +23 -0
- package/dist/listen.js.map +1 -0
- package/dist/mcp/durable-state.d.ts +75 -0
- package/dist/mcp/durable-state.d.ts.map +1 -0
- package/dist/mcp/durable-state.js +418 -0
- package/dist/mcp/durable-state.js.map +1 -0
- package/dist/mcp/grants.d.ts +12 -0
- package/dist/mcp/grants.d.ts.map +1 -0
- package/dist/mcp/grants.js +33 -0
- package/dist/mcp/grants.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +4 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tee-ingress.d.ts +29 -0
- package/dist/mcp/tee-ingress.d.ts.map +1 -0
- package/dist/mcp/tee-ingress.js +203 -0
- package/dist/mcp/tee-ingress.js.map +1 -0
- package/dist/middleware/local-listener.d.ts +33 -0
- package/dist/middleware/local-listener.d.ts.map +1 -0
- package/dist/middleware/local-listener.js +103 -0
- package/dist/middleware/local-listener.js.map +1 -0
- package/dist/package.json +67 -0
- package/dist/routes/enclave-fleet.d.ts +14 -0
- package/dist/routes/enclave-fleet.d.ts.map +1 -0
- package/dist/routes/enclave-fleet.js +43 -0
- package/dist/routes/enclave-fleet.js.map +1 -0
- package/dist/routes/enclave-jobs.d.ts +9 -0
- package/dist/routes/enclave-jobs.d.ts.map +1 -0
- package/dist/routes/enclave-jobs.js +106 -0
- package/dist/routes/enclave-jobs.js.map +1 -0
- package/dist/routes/enclave-mcp.d.ts +9 -0
- package/dist/routes/enclave-mcp.d.ts.map +1 -0
- package/dist/routes/enclave-mcp.js +46 -0
- package/dist/routes/enclave-mcp.js.map +1 -0
- package/dist/routes/mcp.d.ts +5 -2
- package/dist/routes/mcp.d.ts.map +1 -1
- package/dist/routes/mcp.js +49 -17
- package/dist/routes/mcp.js.map +1 -1
- package/dist/routes/ui.d.ts +7 -0
- package/dist/routes/ui.d.ts.map +1 -1
- package/dist/routes/ui.js +32 -3
- package/dist/routes/ui.js.map +1 -1
- package/dist/scripts/bundle-verification.d.ts +2 -0
- package/dist/scripts/bundle-verification.d.ts.map +1 -0
- package/dist/scripts/bundle-verification.js +32 -0
- package/dist/scripts/bundle-verification.js.map +1 -0
- package/dist/scripts/verify-bundle.d.ts +2 -0
- package/dist/scripts/verify-bundle.d.ts.map +1 -0
- package/dist/scripts/verify-bundle.js +44 -0
- package/dist/scripts/verify-bundle.js.map +1 -0
- package/dist/storage/hierarchy.d.ts +4 -0
- package/dist/storage/hierarchy.d.ts.map +1 -1
- package/dist/storage/hierarchy.js +10 -0
- package/dist/storage/hierarchy.js.map +1 -1
- package/dist/storage/node-data-storage.d.ts.map +1 -1
- package/dist/storage/node-data-storage.js +7 -1
- package/dist/storage/node-data-storage.js.map +1 -1
- package/dist/ui/index.html +13 -0
- package/dist/ui/ps-lite-debug.js +3205 -5575
- package/package.json +15 -7
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
import { Readable, Transform } from "node:stream";
|
|
2
|
+
import { DataFileEnvelopeSchema } from "@opendatalabs/vana-sdk/browser";
|
|
3
|
+
const decoder = new TextDecoder();
|
|
4
|
+
const encoder = new TextEncoder();
|
|
5
|
+
const QUOTE = 0x22;
|
|
6
|
+
const BACKSLASH = 0x5c;
|
|
7
|
+
const MAX_METADATA_TOKEN_BYTES = 64 * 1024;
|
|
8
|
+
const OUTPUT_CHUNK_BYTES = 64 * 1024;
|
|
9
|
+
/** Open twice: once for bounded metadata inspection, then for streamed output. */
|
|
10
|
+
export async function openRedactedEnvelopeStream(open) {
|
|
11
|
+
const plan = await scanEnvelope(await open());
|
|
12
|
+
const input = Readable.fromWeb((await open()));
|
|
13
|
+
const redactor = new EnvelopeRedactor(plan);
|
|
14
|
+
input.on("error", (error) => redactor.destroy(error));
|
|
15
|
+
redactor.on("close", () => input.destroy());
|
|
16
|
+
input.pipe(redactor);
|
|
17
|
+
return Readable.toWeb(redactor);
|
|
18
|
+
}
|
|
19
|
+
async function scanEnvelope(stream) {
|
|
20
|
+
const scanner = new EnvelopeScanner();
|
|
21
|
+
for await (const chunk of Readable.fromWeb(stream)) {
|
|
22
|
+
scanner.write(chunk);
|
|
23
|
+
}
|
|
24
|
+
return scanner.finish();
|
|
25
|
+
}
|
|
26
|
+
class EnvelopeScanner {
|
|
27
|
+
stack = [];
|
|
28
|
+
inString = false;
|
|
29
|
+
escaped = false;
|
|
30
|
+
stringIsKey = false;
|
|
31
|
+
stringBytes = [];
|
|
32
|
+
captureHeaderValue = false;
|
|
33
|
+
headerValueBytes = [];
|
|
34
|
+
metadata = {};
|
|
35
|
+
sawData = false;
|
|
36
|
+
storedLineage = false;
|
|
37
|
+
binary = false;
|
|
38
|
+
metadataIsObject = false;
|
|
39
|
+
metadataHasKeptProperty = false;
|
|
40
|
+
write(chunk) {
|
|
41
|
+
for (const byte of chunk)
|
|
42
|
+
this.writeByte(byte);
|
|
43
|
+
}
|
|
44
|
+
finish() {
|
|
45
|
+
if (this.inString || this.stack.length !== 0 || !this.sawData) {
|
|
46
|
+
throw new Error("Stored data envelope is not complete JSON");
|
|
47
|
+
}
|
|
48
|
+
const envelope = DataFileEnvelopeSchema.parse({
|
|
49
|
+
...this.metadata,
|
|
50
|
+
data: {},
|
|
51
|
+
});
|
|
52
|
+
const { data: _data, ...header } = envelope;
|
|
53
|
+
const headerJson = JSON.stringify(header);
|
|
54
|
+
return {
|
|
55
|
+
prefix: encoder.encode(`${headerJson.slice(0, -1)},"data":`),
|
|
56
|
+
storedLineage: this.storedLineage,
|
|
57
|
+
binary: this.binary,
|
|
58
|
+
metadataIsObject: this.metadataIsObject,
|
|
59
|
+
metadataHasKeptProperty: this.metadataHasKeptProperty,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
writeByte(byte) {
|
|
63
|
+
if (this.inString) {
|
|
64
|
+
if (this.stringIsKey || this.captureHeaderValue) {
|
|
65
|
+
const target = this.stringIsKey
|
|
66
|
+
? this.stringBytes
|
|
67
|
+
: this.headerValueBytes;
|
|
68
|
+
target.push(byte);
|
|
69
|
+
if (target.length > MAX_METADATA_TOKEN_BYTES) {
|
|
70
|
+
throw new Error("Stored data envelope metadata token is too large");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (this.escaped) {
|
|
74
|
+
this.escaped = false;
|
|
75
|
+
}
|
|
76
|
+
else if (byte === BACKSLASH) {
|
|
77
|
+
this.escaped = true;
|
|
78
|
+
}
|
|
79
|
+
else if (byte === QUOTE) {
|
|
80
|
+
this.endString();
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (isWhitespace(byte))
|
|
85
|
+
return;
|
|
86
|
+
const frame = this.stack.at(-1);
|
|
87
|
+
if (byte === QUOTE) {
|
|
88
|
+
this.inString = true;
|
|
89
|
+
this.stringIsKey = frame?.type === "object" && frame.expectKey;
|
|
90
|
+
this.stringBytes.length = 0;
|
|
91
|
+
this.headerValueBytes.length = 0;
|
|
92
|
+
if (this.stringIsKey)
|
|
93
|
+
this.stringBytes.push(byte);
|
|
94
|
+
this.captureHeaderValue =
|
|
95
|
+
!this.stringIsKey &&
|
|
96
|
+
frame?.type === "object" &&
|
|
97
|
+
frame.path === "root" &&
|
|
98
|
+
isHeaderKey(frame.currentKey);
|
|
99
|
+
if (this.captureHeaderValue)
|
|
100
|
+
this.headerValueBytes.push(byte);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (byte === 0x7b) {
|
|
104
|
+
const path = childObjectPath(frame);
|
|
105
|
+
if (path === "data")
|
|
106
|
+
this.sawData = true;
|
|
107
|
+
if (path === "metadata")
|
|
108
|
+
this.metadataIsObject = true;
|
|
109
|
+
this.stack.push({
|
|
110
|
+
type: "object",
|
|
111
|
+
path,
|
|
112
|
+
suppress: false,
|
|
113
|
+
expectKey: true,
|
|
114
|
+
keepCurrent: true,
|
|
115
|
+
wroteProperty: false,
|
|
116
|
+
});
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (byte === 0x5b) {
|
|
120
|
+
this.stack.push({ type: "array", path: "other", suppress: false });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (byte === 0x7d || byte === 0x5d) {
|
|
124
|
+
this.stack.pop();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (byte === 0x2c) {
|
|
128
|
+
if (frame?.type === "object") {
|
|
129
|
+
frame.expectKey = true;
|
|
130
|
+
frame.currentKey = undefined;
|
|
131
|
+
}
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (frame?.type === "object" &&
|
|
135
|
+
frame.path === "data" &&
|
|
136
|
+
frame.currentKey === "$binary" &&
|
|
137
|
+
byte === 0x74) {
|
|
138
|
+
this.binary = true;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
endString() {
|
|
142
|
+
const frame = this.stack.at(-1);
|
|
143
|
+
if (this.stringIsKey && frame?.type === "object") {
|
|
144
|
+
const key = JSON.parse(decoder.decode(Uint8Array.from(this.stringBytes)));
|
|
145
|
+
frame.currentKey = key;
|
|
146
|
+
frame.expectKey = false;
|
|
147
|
+
if (frame.path === "data" && key === "$lineage")
|
|
148
|
+
this.storedLineage = true;
|
|
149
|
+
if (frame.path === "metadata" && key !== "lineage") {
|
|
150
|
+
this.metadataHasKeptProperty = true;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else if (this.captureHeaderValue &&
|
|
154
|
+
frame?.type === "object" &&
|
|
155
|
+
frame.currentKey) {
|
|
156
|
+
this.metadata[frame.currentKey] = JSON.parse(decoder.decode(Uint8Array.from(this.headerValueBytes)));
|
|
157
|
+
}
|
|
158
|
+
this.inString = false;
|
|
159
|
+
this.stringIsKey = false;
|
|
160
|
+
this.captureHeaderValue = false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
class EnvelopeRedactor extends Transform {
|
|
164
|
+
plan;
|
|
165
|
+
stack = [];
|
|
166
|
+
inString = false;
|
|
167
|
+
escaped = false;
|
|
168
|
+
stringIsKey = false;
|
|
169
|
+
stringSuppressed = false;
|
|
170
|
+
stringBytes = [];
|
|
171
|
+
pending = [];
|
|
172
|
+
constructor(plan) {
|
|
173
|
+
super();
|
|
174
|
+
this.plan = plan;
|
|
175
|
+
}
|
|
176
|
+
_transform(chunk, _encoding, callback) {
|
|
177
|
+
try {
|
|
178
|
+
for (const byte of chunk)
|
|
179
|
+
this.writeByte(byte);
|
|
180
|
+
this.flushPending();
|
|
181
|
+
callback();
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
callback(error);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
writeByte(byte) {
|
|
188
|
+
if (this.inString) {
|
|
189
|
+
if (this.stringIsKey) {
|
|
190
|
+
this.stringBytes.push(byte);
|
|
191
|
+
if (this.stringBytes.length > MAX_METADATA_TOKEN_BYTES) {
|
|
192
|
+
throw new Error("Stored data envelope property name is too large");
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (!this.stringSuppressed && !this.stringIsKey)
|
|
196
|
+
this.pushByte(byte);
|
|
197
|
+
if (this.escaped) {
|
|
198
|
+
this.escaped = false;
|
|
199
|
+
}
|
|
200
|
+
else if (byte === BACKSLASH) {
|
|
201
|
+
this.escaped = true;
|
|
202
|
+
}
|
|
203
|
+
else if (byte === QUOTE) {
|
|
204
|
+
if (this.stringIsKey)
|
|
205
|
+
this.endKey();
|
|
206
|
+
this.inString = false;
|
|
207
|
+
}
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
if (isWhitespace(byte))
|
|
211
|
+
return;
|
|
212
|
+
const frame = this.stack.at(-1);
|
|
213
|
+
if (byte === QUOTE) {
|
|
214
|
+
this.inString = true;
|
|
215
|
+
this.stringIsKey = frame?.type === "object" && frame.expectKey;
|
|
216
|
+
this.stringBytes.length = 0;
|
|
217
|
+
if (this.stringIsKey)
|
|
218
|
+
this.stringBytes.push(byte);
|
|
219
|
+
this.stringSuppressed = this.stringIsKey || isSuppressed(frame);
|
|
220
|
+
if (!this.stringSuppressed)
|
|
221
|
+
this.pushByte(byte);
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
if (byte === 0x7b) {
|
|
225
|
+
const path = childObjectPath(frame);
|
|
226
|
+
const suppress = isSuppressed(frame);
|
|
227
|
+
if (path === "root") {
|
|
228
|
+
// The validated canonical prefix is emitted when the data value starts.
|
|
229
|
+
}
|
|
230
|
+
else if (path === "data") {
|
|
231
|
+
this.pushBytes(this.plan.prefix);
|
|
232
|
+
this.pushByte(byte);
|
|
233
|
+
}
|
|
234
|
+
else if (!suppress) {
|
|
235
|
+
this.pushByte(byte);
|
|
236
|
+
}
|
|
237
|
+
this.stack.push({
|
|
238
|
+
type: "object",
|
|
239
|
+
path,
|
|
240
|
+
suppress,
|
|
241
|
+
expectKey: true,
|
|
242
|
+
keepCurrent: true,
|
|
243
|
+
wroteProperty: false,
|
|
244
|
+
});
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
if (byte === 0x5b) {
|
|
248
|
+
const suppress = isSuppressed(frame);
|
|
249
|
+
if (!suppress)
|
|
250
|
+
this.pushByte(byte);
|
|
251
|
+
this.stack.push({ type: "array", path: "other", suppress });
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
if (byte === 0x7d || byte === 0x5d) {
|
|
255
|
+
const closing = this.stack.pop();
|
|
256
|
+
if (closing?.type === "object" && closing.path === "root") {
|
|
257
|
+
this.pushByte(byte);
|
|
258
|
+
}
|
|
259
|
+
else if (closing && !closing.suppress) {
|
|
260
|
+
this.pushByte(byte);
|
|
261
|
+
}
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
if (byte === 0x2c) {
|
|
265
|
+
if (frame?.type === "object") {
|
|
266
|
+
frame.expectKey = true;
|
|
267
|
+
frame.currentKey = undefined;
|
|
268
|
+
frame.keepCurrent = true;
|
|
269
|
+
}
|
|
270
|
+
else if (!isSuppressed(frame)) {
|
|
271
|
+
this.pushByte(byte);
|
|
272
|
+
}
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
if (byte === 0x3a) {
|
|
276
|
+
if (frame?.type === "object" &&
|
|
277
|
+
frame.path !== "root" &&
|
|
278
|
+
frame.keepCurrent &&
|
|
279
|
+
!frame.suppress) {
|
|
280
|
+
this.pushByte(byte);
|
|
281
|
+
}
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
if (!isSuppressed(frame))
|
|
285
|
+
this.pushByte(byte);
|
|
286
|
+
}
|
|
287
|
+
endKey() {
|
|
288
|
+
const frame = this.stack.at(-1);
|
|
289
|
+
if (frame?.type !== "object")
|
|
290
|
+
return;
|
|
291
|
+
const keyBytes = Uint8Array.from(this.stringBytes);
|
|
292
|
+
const key = JSON.parse(decoder.decode(keyBytes));
|
|
293
|
+
frame.currentKey = key;
|
|
294
|
+
frame.expectKey = false;
|
|
295
|
+
frame.keepCurrent = shouldKeepProperty(frame.path, key, this.plan);
|
|
296
|
+
if (frame.path === "root")
|
|
297
|
+
return;
|
|
298
|
+
if (frame.keepCurrent && !frame.suppress) {
|
|
299
|
+
if (frame.wroteProperty)
|
|
300
|
+
this.pushByte(0x2c);
|
|
301
|
+
this.pushBytes(keyBytes);
|
|
302
|
+
frame.wroteProperty = true;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
pushByte(byte) {
|
|
306
|
+
this.pending.push(byte);
|
|
307
|
+
if (this.pending.length === OUTPUT_CHUNK_BYTES)
|
|
308
|
+
this.flushPending();
|
|
309
|
+
}
|
|
310
|
+
pushBytes(bytes) {
|
|
311
|
+
for (const byte of bytes)
|
|
312
|
+
this.pushByte(byte);
|
|
313
|
+
}
|
|
314
|
+
flushPending() {
|
|
315
|
+
if (this.pending.length === 0)
|
|
316
|
+
return;
|
|
317
|
+
this.push(Buffer.from(this.pending));
|
|
318
|
+
this.pending.length = 0;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
function childObjectPath(frame) {
|
|
322
|
+
if (!frame)
|
|
323
|
+
return "root";
|
|
324
|
+
if (frame.type !== "object")
|
|
325
|
+
return "other";
|
|
326
|
+
if (frame.path === "root" && frame.currentKey === "data")
|
|
327
|
+
return "data";
|
|
328
|
+
if (frame.path === "data" && frame.currentKey === "metadata") {
|
|
329
|
+
return "metadata";
|
|
330
|
+
}
|
|
331
|
+
return "other";
|
|
332
|
+
}
|
|
333
|
+
function shouldKeepProperty(path, key, plan) {
|
|
334
|
+
if (path === "root")
|
|
335
|
+
return key === "data";
|
|
336
|
+
if (path === "metadata") {
|
|
337
|
+
return !(plan.storedLineage && plan.binary && key === "lineage");
|
|
338
|
+
}
|
|
339
|
+
if (path !== "data")
|
|
340
|
+
return true;
|
|
341
|
+
if (key === "$writtenBy" || key === "$lineage")
|
|
342
|
+
return false;
|
|
343
|
+
if (plan.storedLineage && !plan.binary && key === "lineage")
|
|
344
|
+
return false;
|
|
345
|
+
if (plan.storedLineage &&
|
|
346
|
+
plan.binary &&
|
|
347
|
+
key === "metadata" &&
|
|
348
|
+
plan.metadataIsObject &&
|
|
349
|
+
!plan.metadataHasKeptProperty) {
|
|
350
|
+
return false;
|
|
351
|
+
}
|
|
352
|
+
return true;
|
|
353
|
+
}
|
|
354
|
+
function isSuppressed(frame) {
|
|
355
|
+
if (!frame)
|
|
356
|
+
return false;
|
|
357
|
+
if (frame.suppress)
|
|
358
|
+
return true;
|
|
359
|
+
return frame.type === "object" && !frame.keepCurrent;
|
|
360
|
+
}
|
|
361
|
+
function isHeaderKey(key) {
|
|
362
|
+
return (key === "$schema" ||
|
|
363
|
+
key === "version" ||
|
|
364
|
+
key === "scope" ||
|
|
365
|
+
key === "schemaId" ||
|
|
366
|
+
key === "collectedAt");
|
|
367
|
+
}
|
|
368
|
+
function isWhitespace(byte) {
|
|
369
|
+
return byte === 0x20 || byte === 0x09 || byte === 0x0a || byte === 0x0d;
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=raw-envelope-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw-envelope-stream.js","sourceRoot":"","sources":["../../src/jobs/raw-envelope-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Hex } from "viem";
|
|
2
|
+
export type JobFailureCode = "AUTH_INVALID" | "BUILDER_MISMATCH" | "OWNER_MISMATCH" | "GRANT_REVOKED" | "GRANT_INVALID" | "SIGNED_ARTIFACT_MISSING" | "SIGNED_ARTIFACT_INVALID" | "SERVER_NOT_REGISTERED" | "SCOPE_NOT_FOUND" | "VERSION_MISMATCH" | "DEADLINE_PASSED" | "RESULT_SIGNING_REFUSED" | "RESULT_UPLOAD_FAILED" | "RESULT_TOO_LARGE" | "INTERNAL";
|
|
3
|
+
export interface JobExecuteResponse {
|
|
4
|
+
/** Object key in vana-storage: `jobresults/{chainId}/{jobId}`. */
|
|
5
|
+
resultObjectKey: string;
|
|
6
|
+
/** SHA-256 of ciphertext bytes. */
|
|
7
|
+
resultHash: Hex;
|
|
8
|
+
resultSize: number;
|
|
9
|
+
}
|
|
10
|
+
export interface JobExecuteError {
|
|
11
|
+
error: {
|
|
12
|
+
code: JobFailureCode;
|
|
13
|
+
message: string;
|
|
14
|
+
retryable: boolean;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAGhC,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,kBAAkB,GAClB,gBAAgB,GAChB,eAAe,GACf,eAAe,GACf,yBAAyB,GACzB,yBAAyB,GACzB,uBAAuB,GACvB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,wBAAwB,GACxB,sBAAsB,GACtB,kBAAkB,GAClB,UAAU,CAAC;AAEf,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,UAAU,EAAE,GAAG,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE;QACL,IAAI,EAAE,cAAc,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":";AAmCA,uBAAuB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { AccessLogWriter } from "@opendatalabs/personal-server-ts-core/logging/access-log";
|
|
2
|
+
import type { DataStoragePort, ProtocolGatewayPort } from "@opendatalabs/personal-server-ts-core/ports";
|
|
3
|
+
import type { ScopeDeletionTracker } from "@opendatalabs/personal-server-ts-core/sync";
|
|
4
|
+
import { type DataPortabilityGatewayConfig } from "@opendatalabs/vana-sdk/node";
|
|
5
|
+
import { type JobRequestEnvelope } from "@opendatalabs/vana-sdk/protocol/jobs";
|
|
6
|
+
import type { ECIESProvider } from "@opendatalabs/vana-sdk/crypto/ecies/interface";
|
|
7
|
+
import type { Logger } from "pino";
|
|
8
|
+
import { type Address, type Hex } from "viem";
|
|
9
|
+
import type { JobExecuteResponse, JobFailureCode } from "./types.js";
|
|
10
|
+
export declare const DEFAULT_JOB_RESULT_MAX_BYTES: number;
|
|
11
|
+
export interface JobWorkerDeps {
|
|
12
|
+
serverOwner: Address;
|
|
13
|
+
serverAddress: Address;
|
|
14
|
+
serverPublicKey: Hex;
|
|
15
|
+
authAudience: string;
|
|
16
|
+
gateway: ProtocolGatewayPort;
|
|
17
|
+
gatewayConfig: DataPortabilityGatewayConfig;
|
|
18
|
+
storage: DataStoragePort;
|
|
19
|
+
ecies: ECIESProvider;
|
|
20
|
+
now?: () => Date;
|
|
21
|
+
logger: Logger;
|
|
22
|
+
accessLogWriter: AccessLogWriter;
|
|
23
|
+
scopeDeletions?: ScopeDeletionTracker;
|
|
24
|
+
/** Refresh one exact scope before retrying a local read selection. */
|
|
25
|
+
hydrateScope?: (scope: string) => Promise<void>;
|
|
26
|
+
resultMaxBytes?: number;
|
|
27
|
+
resultTempDir?: string;
|
|
28
|
+
resultUpload: {
|
|
29
|
+
storageEndpoint: string;
|
|
30
|
+
agentEndpoint: string;
|
|
31
|
+
accessToken: string;
|
|
32
|
+
chainId: number;
|
|
33
|
+
fetch?: typeof fetch;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export declare class JobFailure extends Error {
|
|
37
|
+
readonly code: JobFailureCode;
|
|
38
|
+
readonly retryable: boolean;
|
|
39
|
+
constructor(code: JobFailureCode, message: string, retryable: boolean);
|
|
40
|
+
}
|
|
41
|
+
export declare function executeJob(envelope: JobRequestEnvelope, deps: JobWorkerDeps): Promise<JobExecuteResponse>;
|
|
42
|
+
export declare function readJobResultMaxBytes(value: string | undefined): number;
|
|
43
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/jobs/worker.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,6CAA6C,CAAC;AAMrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAkB,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAmBrE,eAAO,MAAM,4BAA4B,QAAqB,CAAC;AAK/D,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,GAAG,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,EAAE,4BAA4B,CAAC;IAC5C,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE;QACZ,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;KACtB,CAAC;CACH;AAED,qBAAa,UAAW,SAAQ,KAAK;aAEjB,IAAI,EAAE,cAAc;aAEpB,SAAS,EAAE,OAAO;gBAFlB,IAAI,EAAE,cAAc,EACpC,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,OAAO;CAKrC;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAc7B;AA8RD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAOvE"}
|