@vertesia/tools-sdk 1.6.0-dev.20261009.095813Z → 1.6.0-dev.20261014.015055Z

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.
@@ -1 +1 @@
1
- {"version":3,"file":"scratch.d.ts","sourceRoot":"","sources":["../src/scratch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;AAEnE,MAAM,WAAW,YAAY;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IACxB,+FAA+F;IAC/F,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,+CAA+C;IAC/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1D,0CAA0C;IAC1C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAEhF,qBAAa,YAAa,SAAQ,KAAK;aAEf,IAAI,EAAE,gBAAgB;IAD1C,YACoB,IAAI,EAAE,gBAAgB,EACtC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAIhC;CACJ;AAED,8FAA8F;AAC9F,eAAO,MAAM,2BAA2B,QAAoB,CAAC;AAE7D,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CASpD;AAmDD,6GAA6G;AAC7G,wBAAgB,mBAAmB,CAAC,KAAK,SAAuB,GAAG,WAAW,CAyB7E;AAUD,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,OAAO,KAAmC,GAAG,WAAW,CAqCvG"}
1
+ {"version":3,"file":"scratch.d.ts","sourceRoot":"","sources":["../src/scratch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;AAEnE,MAAM,WAAW,YAAY;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IACxB,+FAA+F;IAC/F,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,+CAA+C;IAC/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1D,0CAA0C;IAC1C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAEhF,qBAAa,YAAa,SAAQ,KAAK;aAEf,IAAI,EAAE,gBAAgB;IAD1C,YACoB,IAAI,EAAE,gBAAgB,EACtC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAIhC;CACJ;AAED,8FAA8F;AAC9F,eAAO,MAAM,2BAA2B,QAAoB,CAAC;AAE7D,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CASpD;AAmDD,6GAA6G;AAC7G,wBAAgB,mBAAmB,CAAC,KAAK,SAAuB,GAAG,WAAW,CAyB7E;AAUD,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,OAAO,KAAmC,GAAG,WAAW,CAkDvG"}
package/lib/scratch.js CHANGED
@@ -119,8 +119,19 @@ export function createSandboxScratch(fetchImpl = (...args) => fetch(...args)) {
119
119
  return new ScratchError('invalid_key', detail || 'Invalid scratch key');
120
120
  return new ScratchError('unavailable', `Scratch ${operation} failed with status ${response.status}: ${detail}`);
121
121
  };
122
+ // An unreachable runtime, or a response cut off mid-body, is the same `unavailable` as an error status.
123
+ const run = async (operation, exchange) => {
124
+ try {
125
+ return await exchange();
126
+ }
127
+ catch (error) {
128
+ if (error instanceof ScratchError)
129
+ throw error;
130
+ throw new ScratchError('unavailable', `Scratch ${operation} failed: ${String(error)}`, { cause: error });
131
+ }
132
+ };
122
133
  return withHelpers({
123
- async put(key, bytes, contentType) {
134
+ put: (key, bytes, contentType) => run('write', async () => {
124
135
  const response = await fetchImpl(url(key), {
125
136
  method: 'PUT',
126
137
  headers: { 'content-type': contentType },
@@ -128,30 +139,30 @@ export function createSandboxScratch(fetchImpl = (...args) => fetch(...args)) {
128
139
  });
129
140
  if (!response.ok)
130
141
  throw await failure(response, 'write');
131
- },
132
- async get(key) {
142
+ }),
143
+ get: (key) => run('read', async () => {
133
144
  const response = await fetchImpl(url(key));
134
145
  if (response.status === 404)
135
146
  return undefined;
136
147
  if (!response.ok)
137
148
  throw await failure(response, 'read');
138
149
  return new Uint8Array(await response.arrayBuffer());
139
- },
140
- async delete(key) {
150
+ }),
151
+ delete: (key) => run('delete', async () => {
141
152
  const response = await fetchImpl(url(key), { method: 'DELETE' });
142
153
  if (response.status === 404)
143
154
  return false;
144
155
  if (!response.ok)
145
156
  throw await failure(response, 'delete');
146
157
  return true;
147
- },
148
- async list() {
158
+ }),
159
+ list: () => run('list', async () => {
149
160
  const response = await fetchImpl(url());
150
161
  if (!response.ok)
151
162
  throw await failure(response, 'list');
152
163
  const body = (await response.json());
153
164
  return body.entries.map(({ key, size, type }) => ({ key, size, contentType: type }));
154
- },
165
+ }),
155
166
  });
156
167
  }
157
168
  //# sourceMappingURL=scratch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scratch.js","sourceRoot":"","sources":["../src/scratch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scratch.js","sourceRoot":"","sources":["../src/scratch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertesia/tools-sdk",
3
- "version": "1.6.0-dev.20261009.095813Z",
3
+ "version": "1.6.0-dev.20261014.015055Z",
4
4
  "description": "Tools SDK - utilities for building remote tools",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -22,18 +22,18 @@
22
22
  }
23
23
  },
24
24
  "devDependencies": {
25
- "@types/node": "^24.19.0",
25
+ "@types/node": "^24.19.1",
26
26
  "@vertesia/tsconfig": "0.1.0",
27
27
  "typescript": "7.0.2",
28
- "vitest": "5.0.2"
28
+ "vitest": "5.0.3"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "hono": "^4.13.13"
32
32
  },
33
33
  "dependencies": {
34
- "@llumiverse/common": "1.6.0-dev.20261009.095504Z",
35
- "@vertesia/client": "1.6.0-dev.20261009.095813Z",
36
- "@vertesia/common": "1.6.0-dev.20261009.095813Z",
34
+ "@llumiverse/common": "1.6.0-dev.20261014.012028Z",
35
+ "@vertesia/client": "1.6.0-dev.20261014.015055Z",
36
+ "@vertesia/common": "1.6.0-dev.20261014.015055Z",
37
37
  "jose": "^6.2.12",
38
38
  "zod": "4.6.5"
39
39
  },
@@ -51,7 +51,7 @@
51
51
  "agents",
52
52
  "typescript"
53
53
  ],
54
- "gitHead": "e45bc09ecf2de4c8fe8a8d39fb52c1521980e7b9",
54
+ "gitHead": "468240ecf939f968e1324116be26386cdf5ada49",
55
55
  "scripts": {
56
56
  "lint": "biome lint src",
57
57
  "test": "vitest run",
package/src/scratch.ts CHANGED
@@ -152,32 +152,45 @@ export function createSandboxScratch(fetchImpl: typeof fetch = (...args) => fetc
152
152
  if (response.status === 400) return new ScratchError('invalid_key', detail || 'Invalid scratch key');
153
153
  return new ScratchError('unavailable', `Scratch ${operation} failed with status ${response.status}: ${detail}`);
154
154
  };
155
+ // An unreachable runtime, or a response cut off mid-body, is the same `unavailable` as an error status.
156
+ const run = async <T>(operation: string, exchange: () => Promise<T>): Promise<T> => {
157
+ try {
158
+ return await exchange();
159
+ } catch (error: unknown) {
160
+ if (error instanceof ScratchError) throw error;
161
+ throw new ScratchError('unavailable', `Scratch ${operation} failed: ${String(error)}`, { cause: error });
162
+ }
163
+ };
155
164
  return withHelpers({
156
- async put(key, bytes, contentType) {
157
- const response = await fetchImpl(url(key), {
158
- method: 'PUT',
159
- headers: { 'content-type': contentType },
160
- body: bytes,
161
- });
162
- if (!response.ok) throw await failure(response, 'write');
163
- },
164
- async get(key) {
165
- const response = await fetchImpl(url(key));
166
- if (response.status === 404) return undefined;
167
- if (!response.ok) throw await failure(response, 'read');
168
- return new Uint8Array(await response.arrayBuffer());
169
- },
170
- async delete(key) {
171
- const response = await fetchImpl(url(key), { method: 'DELETE' });
172
- if (response.status === 404) return false;
173
- if (!response.ok) throw await failure(response, 'delete');
174
- return true;
175
- },
176
- async list() {
177
- const response = await fetchImpl(url());
178
- if (!response.ok) throw await failure(response, 'list');
179
- const body = (await response.json()) as { entries: { key: string; size: number; type: string }[] };
180
- return body.entries.map(({ key, size, type }) => ({ key, size, contentType: type }));
181
- },
165
+ put: (key, bytes, contentType) =>
166
+ run('write', async () => {
167
+ const response = await fetchImpl(url(key), {
168
+ method: 'PUT',
169
+ headers: { 'content-type': contentType },
170
+ body: bytes,
171
+ });
172
+ if (!response.ok) throw await failure(response, 'write');
173
+ }),
174
+ get: (key) =>
175
+ run('read', async () => {
176
+ const response = await fetchImpl(url(key));
177
+ if (response.status === 404) return undefined;
178
+ if (!response.ok) throw await failure(response, 'read');
179
+ return new Uint8Array(await response.arrayBuffer());
180
+ }),
181
+ delete: (key) =>
182
+ run('delete', async () => {
183
+ const response = await fetchImpl(url(key), { method: 'DELETE' });
184
+ if (response.status === 404) return false;
185
+ if (!response.ok) throw await failure(response, 'delete');
186
+ return true;
187
+ }),
188
+ list: () =>
189
+ run('list', async () => {
190
+ const response = await fetchImpl(url());
191
+ if (!response.ok) throw await failure(response, 'list');
192
+ const body = (await response.json()) as { entries: { key: string; size: number; type: string }[] };
193
+ return body.entries.map(({ key, size, type }) => ({ key, size, contentType: type }));
194
+ }),
182
195
  });
183
196
  }