@marifold/core 0.73.0 → 0.74.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 (49) hide show
  1. package/dist/agent/ArtifactPreview.d.ts +4 -1
  2. package/dist/agent/ArtifactPreview.d.ts.map +1 -1
  3. package/dist/agent/ArtifactPreview.js +75 -15
  4. package/dist/agent/ArtifactPreview.js.map +1 -1
  5. package/dist/index.d.ts +2 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +7 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/workspace/ArtifactWebRtc.d.ts +36 -0
  10. package/dist/workspace/ArtifactWebRtc.d.ts.map +1 -0
  11. package/dist/workspace/ArtifactWebRtc.js +348 -0
  12. package/dist/workspace/ArtifactWebRtc.js.map +1 -0
  13. package/dist/workspace/WorkspaceExecutor.d.ts +3 -1
  14. package/dist/workspace/WorkspaceExecutor.d.ts.map +1 -1
  15. package/dist/workspace/WorkspaceExecutor.js +9 -2
  16. package/dist/workspace/WorkspaceExecutor.js.map +1 -1
  17. package/package.json +6 -5
  18. package/dist/app/AppActionResolver.d.ts +0 -15
  19. package/dist/app/AppActionResolver.d.ts.map +0 -1
  20. package/dist/app/AppActionResolver.js +0 -98
  21. package/dist/app/AppActionResolver.js.map +0 -1
  22. package/dist/app/AppSchema.d.ts +0 -83
  23. package/dist/app/AppSchema.d.ts.map +0 -1
  24. package/dist/app/AppSchema.js +0 -17
  25. package/dist/app/AppSchema.js.map +0 -1
  26. package/dist/app/AppValidator.d.ts +0 -10
  27. package/dist/app/AppValidator.d.ts.map +0 -1
  28. package/dist/app/AppValidator.js +0 -503
  29. package/dist/app/AppValidator.js.map +0 -1
  30. package/dist/skill/SkillVars.d.ts +0 -10
  31. package/dist/skill/SkillVars.d.ts.map +0 -1
  32. package/dist/skill/SkillVars.js +0 -65
  33. package/dist/skill/SkillVars.js.map +0 -1
  34. package/dist/skillapp/SkillAppActionResolver.d.ts +0 -13
  35. package/dist/skillapp/SkillAppActionResolver.d.ts.map +0 -1
  36. package/dist/skillapp/SkillAppActionResolver.js +0 -95
  37. package/dist/skillapp/SkillAppActionResolver.js.map +0 -1
  38. package/dist/skillapp/SkillAppSchema.d.ts +0 -79
  39. package/dist/skillapp/SkillAppSchema.d.ts.map +0 -1
  40. package/dist/skillapp/SkillAppSchema.js +0 -20
  41. package/dist/skillapp/SkillAppSchema.js.map +0 -1
  42. package/dist/skillapp/SkillAppStore.d.ts +0 -11
  43. package/dist/skillapp/SkillAppStore.d.ts.map +0 -1
  44. package/dist/skillapp/SkillAppStore.js +0 -98
  45. package/dist/skillapp/SkillAppStore.js.map +0 -1
  46. package/dist/skillapp/SkillAppValidator.d.ts +0 -10
  47. package/dist/skillapp/SkillAppValidator.d.ts.map +0 -1
  48. package/dist/skillapp/SkillAppValidator.js +0 -522
  49. package/dist/skillapp/SkillAppValidator.js.map +0 -1
@@ -0,0 +1,348 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ArtifactWebRtc = void 0;
37
+ const fs = __importStar(require("node:fs"));
38
+ const os = __importStar(require("node:os"));
39
+ const path = __importStar(require("node:path"));
40
+ const node_crypto_1 = require("node:crypto");
41
+ const MAX_FILE = 64 * 1024 * 1024;
42
+ const BLOCK = 16 * 1024;
43
+ const WINDOW = 512 * 1024;
44
+ const MAX_SESSIONS = 4;
45
+ const LABEL = 'marifold-artifact-v1';
46
+ function description(value, type) {
47
+ const d = value;
48
+ if (!d || d.type !== type || typeof d.sdp !== 'string' || d.sdp.length > 64 * 1024 ||
49
+ !d.sdp.includes('m=application ') || /^m=(audio|video) /m.test(d.sdp))
50
+ throw new Error('Invalid artifact connection description.');
51
+ return { type, sdp: d.sdp };
52
+ }
53
+ /** Experimental service-to-service transport. Signaling must use authenticated
54
+ * workspace RPC. Receive into private temporary storage and verify the complete
55
+ * file before handing it to HTTP, so any failure can safely retry via the bridge. */
56
+ class ArtifactWebRtc {
57
+ options;
58
+ enabled;
59
+ sessions = new Set();
60
+ closed = false;
61
+ activePeers = 0;
62
+ downloads = new Map();
63
+ closing = new Set();
64
+ timeout;
65
+ constructor(options = {}) {
66
+ this.options = options;
67
+ this.enabled = options.enabled ?? process.env.MARIFOLD_EXPERIMENTAL_WEBRTC === '1';
68
+ this.timeout = options.timeoutMs ?? 15_000;
69
+ }
70
+ async close() {
71
+ this.closed = true;
72
+ for (const session of [...this.sessions])
73
+ session.stop();
74
+ const streams = [...this.downloads.keys()].map(stream => new Promise(resolve => {
75
+ stream.once('close', resolve);
76
+ stream.destroy();
77
+ }));
78
+ await Promise.all([...this.closing, ...streams]);
79
+ }
80
+ closePeer(pc) {
81
+ const closing = pc.close().catch(() => undefined).finally(() => this.closing.delete(closing));
82
+ this.closing.add(closing);
83
+ }
84
+ cancelWorkspace(scope) {
85
+ for (const s of [...this.sessions])
86
+ if (s.scope === scope)
87
+ s.stop();
88
+ for (const [stream, workspace] of this.downloads)
89
+ if (workspace === scope)
90
+ stream.destroy();
91
+ }
92
+ async peer() {
93
+ if (!this.enabled || this.closed || this.activePeers + this.downloads.size >= MAX_SESSIONS)
94
+ throw new Error('Direct downloads unavailable.');
95
+ const stun = this.options.stunUrl ?? process.env.MARIFOLD_WEBRTC_STUN_URL ?? 'stun:stun.l.google.com:19302';
96
+ if (!/^stun:[a-zA-Z0-9.-]+:[0-9]{1,5}$/.test(stun) || (Number(stun.split(':')[2]) < 1 || Number(stun.split(':')[2]) > 65535))
97
+ throw new Error('Invalid local WebRTC STUN URL.');
98
+ this.activePeers++;
99
+ try {
100
+ const { RTCPeerConnection } = await import('werift');
101
+ if (this.closed)
102
+ throw new Error('Direct downloads unavailable.');
103
+ const pc = new RTCPeerConnection({ iceServers: [{ urls: stun }], ...this.options.peerConfig });
104
+ let released = false;
105
+ pc.connectionStateChange.subscribe(state => {
106
+ if (state === 'closed' && !released) {
107
+ released = true;
108
+ this.activePeers--;
109
+ }
110
+ });
111
+ return pc;
112
+ }
113
+ catch (error) {
114
+ this.activePeers--;
115
+ throw error;
116
+ }
117
+ }
118
+ async offerFile(artifact, offer, scope) {
119
+ const remote = description(offer, 'offer');
120
+ if (artifact.size > MAX_FILE)
121
+ throw new Error('File exceeds experimental direct download limit.');
122
+ const pc = await this.peer();
123
+ let fd;
124
+ let stopped = false;
125
+ let rejectStopped;
126
+ const stoppedPromise = new Promise((_, reject) => { rejectStopped = reject; });
127
+ // A rejected lifecycle is observed even after signaling has finished.
128
+ void stoppedPromise.catch(() => undefined);
129
+ const stop = () => {
130
+ if (stopped)
131
+ return;
132
+ stopped = true;
133
+ clearTimeout(timer);
134
+ clearTimeout(idle);
135
+ this.sessions.delete(session);
136
+ if (fd !== undefined) {
137
+ fs.closeSync(fd);
138
+ fd = undefined;
139
+ }
140
+ rejectStopped(new Error('Direct transfer ended.'));
141
+ this.closePeer(pc);
142
+ };
143
+ const session = { scope, stop };
144
+ this.sessions.add(session);
145
+ let idle = setTimeout(stop, this.timeout);
146
+ idle.unref();
147
+ const timer = setTimeout(stop, 120_000);
148
+ timer.unref();
149
+ pc.connectionStateChange.subscribe(state => { if (state === 'failed' || state === 'closed')
150
+ stop(); });
151
+ try {
152
+ fd = fs.openSync(artifact.path, fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW);
153
+ const before = fs.fstatSync(fd);
154
+ if (!before.isFile() || before.size !== artifact.size)
155
+ throw new Error('Artifact changed.');
156
+ let attached = false;
157
+ pc.onDataChannel.subscribe(channel => {
158
+ if (attached || channel.label !== LABEL || !channel.ordered || channel.maxRetransmits !== null || channel.maxPacketLifeTime !== null) {
159
+ stop();
160
+ return;
161
+ }
162
+ attached = true;
163
+ let sent = 0;
164
+ let acknowledged = 0;
165
+ let started = false;
166
+ let ended = false;
167
+ const hash = (0, node_crypto_1.createHash)('sha256');
168
+ channel.onclose = stop;
169
+ channel.onerror = stop;
170
+ channel.onmessage = ({ data }) => {
171
+ try {
172
+ if (stopped || typeof data !== 'string' || data.length > 128)
173
+ throw new Error('Invalid transfer credit.');
174
+ const message = JSON.parse(data);
175
+ if (message.type !== 'credit' || !Number.isSafeInteger(message.offset) || message.offset < acknowledged || message.offset > sent || (started && message.offset === acknowledged))
176
+ throw new Error('Invalid transfer credit.');
177
+ clearTimeout(idle);
178
+ idle = setTimeout(stop, this.timeout);
179
+ idle.unref();
180
+ started = true;
181
+ acknowledged = message.offset;
182
+ while (!stopped && sent < artifact.size && sent - acknowledged < WINDOW) {
183
+ const bytes = Buffer.alloc(Math.min(BLOCK, artifact.size - sent));
184
+ if (fs.readSync(fd, bytes, 0, bytes.length, sent) !== bytes.length)
185
+ throw new Error('Artifact changed.');
186
+ hash.update(bytes);
187
+ channel.send(bytes);
188
+ sent += bytes.length;
189
+ }
190
+ if (sent === artifact.size && !ended) {
191
+ const after = fs.fstatSync(fd);
192
+ if (before.size !== after.size || before.mtimeMs !== after.mtimeMs || before.ctimeMs !== after.ctimeMs)
193
+ throw new Error('Artifact changed.');
194
+ ended = true;
195
+ channel.send(JSON.stringify({ type: 'end', size: sent, sha256: hash.digest('hex') }));
196
+ }
197
+ }
198
+ catch {
199
+ stop();
200
+ }
201
+ };
202
+ });
203
+ const negotiate = async () => {
204
+ await pc.setRemoteDescription(remote);
205
+ if (stopped)
206
+ throw new Error('Direct transfer ended.');
207
+ await pc.setLocalDescription(await pc.createAnswer());
208
+ if (stopped)
209
+ throw new Error('Direct transfer ended.');
210
+ return description(pc.localDescription, 'answer');
211
+ };
212
+ return await Promise.race([negotiate(), stoppedPromise]);
213
+ }
214
+ catch (error) {
215
+ stop();
216
+ throw error;
217
+ }
218
+ }
219
+ async receive(size, signalOffer, scope, signal) {
220
+ if (!Number.isSafeInteger(size) || size < 0 || size > MAX_FILE)
221
+ throw new Error('File exceeds experimental direct download limit.');
222
+ const pc = await this.peer();
223
+ let directory;
224
+ let fd;
225
+ let stopped = false;
226
+ let succeeded = false;
227
+ let rejectDone;
228
+ let resolveDone;
229
+ const done = new Promise((resolve, reject) => { resolveDone = resolve; rejectDone = reject; });
230
+ void done.catch(() => undefined);
231
+ const stop = () => {
232
+ if (stopped)
233
+ return;
234
+ stopped = true;
235
+ clearTimeout(idle);
236
+ clearTimeout(lifetime);
237
+ signal?.removeEventListener('abort', stop);
238
+ this.sessions.delete(session);
239
+ this.closePeer(pc);
240
+ if (fd !== undefined) {
241
+ fs.closeSync(fd);
242
+ fd = undefined;
243
+ }
244
+ if (!succeeded && directory)
245
+ fs.rmSync(directory, { recursive: true, force: true });
246
+ if (!succeeded)
247
+ rejectDone(new Error('Direct download unavailable or interrupted.'));
248
+ };
249
+ const session = { scope, stop };
250
+ this.sessions.add(session);
251
+ let idle = setTimeout(stop, this.timeout);
252
+ const lifetime = setTimeout(stop, 120_000);
253
+ idle.unref();
254
+ lifetime.unref();
255
+ signal?.addEventListener('abort', stop, { once: true });
256
+ try {
257
+ if (signal?.aborted)
258
+ throw new Error('Download cancelled.');
259
+ directory = fs.mkdtempSync(path.join(os.tmpdir(), 'marifold-download-'));
260
+ fs.chmodSync(directory, 0o700);
261
+ const filename = path.join(directory, 'artifact');
262
+ fd = fs.openSync(filename, 'wx', 0o600);
263
+ const channel = pc.createDataChannel(LABEL, { ordered: true });
264
+ let received = 0;
265
+ let credited = 0;
266
+ const hash = (0, node_crypto_1.createHash)('sha256');
267
+ channel.onopen = () => {
268
+ try {
269
+ if (!stopped)
270
+ channel.send(JSON.stringify({ type: 'credit', offset: 0 }));
271
+ }
272
+ catch {
273
+ stop();
274
+ }
275
+ };
276
+ channel.onclose = stop;
277
+ channel.onerror = stop;
278
+ pc.connectionStateChange.subscribe(state => { if (state === 'failed' || state === 'closed')
279
+ stop(); });
280
+ channel.onmessage = ({ data }) => {
281
+ if (stopped)
282
+ return;
283
+ try {
284
+ clearTimeout(idle);
285
+ idle = setTimeout(stop, this.timeout);
286
+ idle.unref();
287
+ if (Buffer.isBuffer(data)) {
288
+ if (!data.length || data.length > BLOCK || received + data.length > size)
289
+ throw new Error('Invalid file bytes.');
290
+ let offset = 0;
291
+ while (offset < data.length) {
292
+ const written = fs.writeSync(fd, data, offset, data.length - offset);
293
+ if (!written)
294
+ throw new Error('Could not save direct download.');
295
+ offset += written;
296
+ }
297
+ hash.update(data);
298
+ received += data.length;
299
+ if (received - credited >= WINDOW / 2) {
300
+ credited = received;
301
+ channel.send(JSON.stringify({ type: 'credit', offset: received }));
302
+ }
303
+ }
304
+ else {
305
+ if (data.length > 256)
306
+ throw new Error('Invalid transfer result.');
307
+ const message = JSON.parse(data);
308
+ if (message.type !== 'end' || received !== size || message.size !== size || message.sha256 !== hash.digest('hex'))
309
+ throw new Error('Incomplete or corrupt direct download.');
310
+ succeeded = true;
311
+ resolveDone();
312
+ stop();
313
+ }
314
+ }
315
+ catch {
316
+ stop();
317
+ }
318
+ };
319
+ const negotiate = async () => {
320
+ await pc.setLocalDescription(await pc.createOffer());
321
+ if (stopped)
322
+ throw new Error('Download cancelled.');
323
+ const answer = await signalOffer(description(pc.localDescription, 'offer'));
324
+ if (stopped)
325
+ throw new Error('Download cancelled.');
326
+ await pc.setRemoteDescription(description(answer, 'answer'));
327
+ await done;
328
+ };
329
+ await Promise.race([negotiate(), done]);
330
+ if (!succeeded)
331
+ throw new Error('Direct download incomplete.');
332
+ const stream = fs.createReadStream(filename);
333
+ const completedDirectory = directory;
334
+ this.downloads.set(stream, scope);
335
+ stream.once('close', () => {
336
+ this.downloads.delete(stream);
337
+ fs.rmSync(completedDirectory, { recursive: true, force: true });
338
+ });
339
+ return stream;
340
+ }
341
+ catch (error) {
342
+ stop();
343
+ throw error;
344
+ }
345
+ }
346
+ }
347
+ exports.ArtifactWebRtc = ArtifactWebRtc;
348
+ //# sourceMappingURL=ArtifactWebRtc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArtifactWebRtc.js","sourceRoot":"","sources":["../../src/workspace/ArtifactWebRtc.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ArtifactWebRtc } from './ArtifactWebRtc';
1
2
  import { type AgentTool } from '../agent/ToolRegistry';
2
3
  import type { WorkspaceOperationContext } from './WorkspaceManager';
3
4
  import type { MarifoldAgentConfig } from '../agent/ApprovalPolicy';
@@ -8,10 +9,11 @@ export declare class WorkspaceExecutor {
8
9
  private readonly config;
9
10
  private readonly runsDir?;
10
11
  private readonly protectedPaths;
12
+ private readonly transfers?;
11
13
  private runs;
12
14
  private registry;
13
15
  private timer;
14
- constructor(config: () => MarifoldAgentConfig, runsDir?: string | undefined, protectedPaths?: string[]);
16
+ constructor(config: () => MarifoldAgentConfig, runsDir?: string | undefined, protectedPaths?: string[], transfers?: ArtifactWebRtc | undefined);
15
17
  close(): void;
16
18
  cancelWorkspace(workspaceId: string): void;
17
19
  handle(operation: string, value: unknown, context: WorkspaceOperationContext): Promise<unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceExecutor.d.ts","sourceRoot":"","sources":["../../src/workspace/WorkspaceExecutor.ts"],"names":[],"mappings":"AAQA,OAAO,EAAgB,KAAK,SAAS,EAA6B,MAAM,uBAAuB,CAAC;AAQhG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAS5C;AAQD;gFACgF;AAChF,qBAAa,iBAAiB;IAK1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IANjC,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,KAAK,CAAiC;IAC9C,YACmB,MAAM,EAAE,MAAM,mBAAmB,EACjC,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,cAAc,GAAE,MAAM,EAAO,EAW/C;IACD,KAAK,IAAI,IAAI,CAIZ;IACD,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAMzC;IACK,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuGpG;CACF"}
1
+ {"version":3,"file":"WorkspaceExecutor.d.ts","sourceRoot":"","sources":["../../src/workspace/WorkspaceExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASvD,OAAO,EAAgB,KAAK,SAAS,EAA6B,MAAM,uBAAuB,CAAC;AAQhG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAS5C;AAQD;gFACgF;AAChF,qBAAa,iBAAiB;IAK1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAP7B,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,KAAK,CAAiC;IAC9C,YACmB,MAAM,EAAE,MAAM,mBAAmB,EACjC,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,cAAc,GAAE,MAAM,EAAO,EAC7B,SAAS,CAAC,EAAE,cAAc,YAAA,EAW5C;IACD,KAAK,IAAI,IAAI,CAIZ;IACD,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAMzC;IACK,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CA2GpG;CACF"}
@@ -66,13 +66,15 @@ class WorkspaceExecutor {
66
66
  config;
67
67
  runsDir;
68
68
  protectedPaths;
69
+ transfers;
69
70
  runs = new Map();
70
71
  registry = new ToolRegistry_1.ToolRegistry();
71
72
  timer;
72
- constructor(config, runsDir, protectedPaths = []) {
73
+ constructor(config, runsDir, protectedPaths = [], transfers) {
73
74
  this.config = config;
74
75
  this.runsDir = runsDir;
75
76
  this.protectedPaths = protectedPaths;
77
+ this.transfers = transfers;
76
78
  for (const tool of executionTools())
77
79
  this.registry.register(tool);
78
80
  this.timer = setInterval(() => {
@@ -109,8 +111,13 @@ class WorkspaceExecutor {
109
111
  return { available: Boolean(artifact) };
110
112
  if (!artifact)
111
113
  throw new Error('Artifact is unavailable.');
114
+ if (b.offer !== undefined) {
115
+ if (!this.transfers)
116
+ throw new Error('Direct downloads unavailable.');
117
+ return this.transfers.offerFile(artifact, b.offer, context.workspaceId);
118
+ }
112
119
  if (b.preview === true)
113
- return { data: (await (0, ArtifactPreview_1.createArtifactPreview)(artifact)).toString('base64') };
120
+ return { data: (await (0, ArtifactPreview_1.createArtifactPreview)(artifact, (0, ArtifactPreview_1.artifactPreviewVariant)(b.variant))).toString('base64') };
114
121
  const offset = b.offset;
115
122
  if (typeof offset !== 'number' || !Number.isSafeInteger(offset) || offset < 0 || offset > artifact.size)
116
123
  throw new Error('Invalid artifact offset.');
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceExecutor.js","sourceRoot":"","sources":["../../src/workspace/WorkspaceExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkspaceExecutor.js","sourceRoot":"","sources":["../../src/workspace/WorkspaceExecutor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marifold/core",
3
- "version": "0.73.0",
3
+ "version": "0.74.2",
4
4
  "description": "Core runtime for Marifold",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,16 +17,17 @@
17
17
  "smol-toml": "^1.7.0",
18
18
  "typescript-compiler": "npm:typescript@^6.0.2",
19
19
  "undici": "^7.28.0",
20
- "yaml": "^2.9.0",
20
+ "werift": "0.24.4",
21
21
  "ws": "^8.18.3",
22
- "@marifold/workspace-protocol": "0.73.0"
22
+ "yaml": "^2.9.0",
23
+ "@marifold/workspace-protocol": "0.74.2"
23
24
  },
24
25
  "devDependencies": {
25
26
  "@types/better-sqlite3": "^7.6.13",
26
27
  "@types/node": "^24.13.3",
28
+ "@types/ws": "^8.18.1",
27
29
  "typescript": "^7.0.2",
28
- "vitest": "^4.1.10",
29
- "@types/ws": "^8.18.1"
30
+ "vitest": "^4.1.10"
30
31
  },
31
32
  "engines": {
32
33
  "node": ">=24.0.0 <25"
@@ -1,15 +0,0 @@
1
- import { MarifoldSkill } from '../skill/SkillSchema';
2
- import { ResolvedSkillInvocation } from '../skill/SkillInvocation';
3
- import { AppDefinition, AppExecution } from './AppSchema';
4
- export interface ResolvedAppAction extends ResolvedSkillInvocation {
5
- appName: string;
6
- actionName: string;
7
- actorName: string;
8
- profile: string;
9
- output: string;
10
- execution: AppExecution;
11
- }
12
- /** Validate renderer state and resolve one server-owned Skill action. Clients
13
- * send values only; they cannot replace the Skill, prompt, or execution policy. */
14
- export declare function resolveAppAction(definition: AppDefinition, actionName: string, supplied: Record<string, unknown>, skill: MarifoldSkill): ResolvedAppAction;
15
- //# sourceMappingURL=AppActionResolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppActionResolver.d.ts","sourceRoot":"","sources":["../../src/app/AppActionResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,uBAAuB,EAExB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,aAAa,EACb,YAAY,EAGb,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,YAAY,CAAC;CACzB;AAED;mFACmF;AACnF,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,aAAa,GACnB,iBAAiB,CA6CnB"}
@@ -1,98 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveAppAction = resolveAppAction;
4
- const MarifoldError_1 = require("../errors/MarifoldError");
5
- const SkillInvocation_1 = require("../skill/SkillInvocation");
6
- const PLACEHOLDER = /\{\{\s*([a-z0-9_]+)\s*\}\}/g;
7
- /** Validate renderer state and resolve one server-owned Skill action. Clients
8
- * send values only; they cannot replace the Skill, prompt, or execution policy. */
9
- function resolveAppAction(definition, actionName, supplied, skill) {
10
- const action = definition.actions.find(candidate => candidate.name === actionName);
11
- if (!action) {
12
- throw MarifoldError_1.MarifoldError.appInvalid(`App '${definition.app.name}' has no action named '${actionName}'.`);
13
- }
14
- const actor = definition.actors.find(candidate => candidate.name === action.actor);
15
- if (!actor) {
16
- throw MarifoldError_1.MarifoldError.appInvalid(`App action '${actionName}' references missing actor '${action.actor}'.`);
17
- }
18
- if (action.skill !== skill.name) {
19
- throw MarifoldError_1.MarifoldError.appInvalid(`App action '${actionName}' expected skill '${action.skill}', not '${skill.name}'.`);
20
- }
21
- const values = validateValues(definition, supplied);
22
- const skillVariables = new Set(skill.variables.map(variable => variable.name));
23
- const argumentsByName = {};
24
- for (const [name, value] of Object.entries(action.arguments)) {
25
- if (!skillVariables.has(name)) {
26
- throw MarifoldError_1.MarifoldError.appInvalid(`App action '${actionName}' supplies unknown skill variable '${name}'.`);
27
- }
28
- argumentsByName[name] = renderArgument(value, values);
29
- }
30
- const userTurn = renderUserTurn(definition, action, values);
31
- const resolved = (0, SkillInvocation_1.resolveSkillValuesInvocation)(skill, argumentsByName, userTurn);
32
- if (resolved.missing.length > 0) {
33
- throw MarifoldError_1.MarifoldError.appInvalid(`App action '${actionName}' is missing required skill values: ${resolved.missing.join(', ')}.`);
34
- }
35
- return {
36
- ...resolved,
37
- appName: definition.app.name,
38
- actionName,
39
- actorName: actor.name,
40
- profile: actor.profile,
41
- output: action.output,
42
- execution: definition.execution,
43
- };
44
- }
45
- function validateValues(definition, supplied) {
46
- const allowed = new Map(definition.variables
47
- .filter(variable => variable.role !== 'output')
48
- .map(variable => [variable.name, variable]));
49
- for (const name of Object.keys(supplied)) {
50
- if (!allowed.has(name)) {
51
- throw MarifoldError_1.MarifoldError.appInvalid(`App received unknown or read-only variable '${name}'.`);
52
- }
53
- }
54
- const values = {};
55
- for (const variable of allowed.values()) {
56
- const candidate = supplied[variable.name] ?? variable.default;
57
- if (candidate === undefined || candidate === '') {
58
- if (variable.required) {
59
- throw MarifoldError_1.MarifoldError.appInvalid(`App variable '${variable.name}' is required.`);
60
- }
61
- values[variable.name] = emptyValue(variable);
62
- continue;
63
- }
64
- if (!matchesType(variable, candidate)) {
65
- throw MarifoldError_1.MarifoldError.appInvalid(`App variable '${variable.name}' does not match type '${variable.type}'.`);
66
- }
67
- values[variable.name] = candidate;
68
- }
69
- return values;
70
- }
71
- function matchesType(variable, value) {
72
- switch (variable.type) {
73
- case 'string': return typeof value === 'string';
74
- case 'number': return typeof value === 'number' && Number.isFinite(value);
75
- case 'boolean': return typeof value === 'boolean';
76
- case 'enum': return typeof value === 'string' && (variable.options ?? []).includes(value);
77
- }
78
- }
79
- function emptyValue(variable) {
80
- if (variable.type === 'number')
81
- return 0;
82
- if (variable.type === 'boolean')
83
- return false;
84
- return '';
85
- }
86
- function renderArgument(argument, values) {
87
- if (typeof argument !== 'string')
88
- return String(argument);
89
- return argument.replace(PLACEHOLDER, (_match, name) => String(values[name] ?? ''));
90
- }
91
- function renderUserTurn(definition, action, values) {
92
- const inputs = definition.variables
93
- .filter(variable => variable.role === 'input')
94
- .map(variable => `${variable.label ?? variable.name}: ${String(values[variable.name] ?? '')}`)
95
- .join('\n');
96
- return `App · ${definition.app.title} · ${action.name}${inputs ? `\n${inputs}` : ''}`;
97
- }
98
- //# sourceMappingURL=AppActionResolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppActionResolver.js","sourceRoot":"","sources":["../../src/app/AppActionResolver.ts"],"names":[],"mappings":"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"}