@nimbus-sh/sdk 0.4.0 → 0.6.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/README.md +39 -19
- package/dist/sandbox.d.ts +160 -33
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +209 -70
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -120,9 +120,9 @@ export default {
|
|
|
120
120
|
subject: 'agent',
|
|
121
121
|
});
|
|
122
122
|
|
|
123
|
-
await box.files.write('/home/user/app/main.py', 'print(2 + 2)\n');
|
|
123
|
+
await box.files.write('/home/user/example-app/main.py', 'print(2 + 2)\n');
|
|
124
124
|
await box.runtimes.ensure('python');
|
|
125
|
-
const result = await box.exec('python /home/user/app/main.py');
|
|
125
|
+
const result = await box.exec('python /home/user/example-app/main.py');
|
|
126
126
|
|
|
127
127
|
return Response.json(result);
|
|
128
128
|
},
|
|
@@ -208,20 +208,20 @@ const box = nimbus.sandbox('session-or-job-id', {
|
|
|
208
208
|
|
|
209
209
|
await box.ready();
|
|
210
210
|
await box.exec('node -e "console.log(2 + 2)"');
|
|
211
|
-
const proc = await box.startProcess('node --watch /home/user/app/server.js');
|
|
211
|
+
const proc = await box.startProcess('node --watch /home/user/example-app/server.js');
|
|
212
212
|
// returns immediately with proc.pid; poll box.processes.logs(proc.pid) for
|
|
213
213
|
// output and the exit record, or box.processes.kill(proc.pid) to stop it
|
|
214
214
|
await box.runCode('print(2 + 2)', { language: 'python', install: 'ifMissing' });
|
|
215
215
|
|
|
216
|
-
await box.files.write('/home/user/app/a.txt', 'hello');
|
|
217
|
-
await box.files.read('/home/user/app/a.txt');
|
|
218
|
-
await box.files.list('/home/user/app');
|
|
219
|
-
await box.files.stat('/home/user/app/a.txt');
|
|
220
|
-
await box.files.lstat('/home/user/app/link');
|
|
221
|
-
await box.files.rename('/home/user/app/a.txt', '/home/user/app/b.txt');
|
|
222
|
-
await box.files.chmod('/home/user/app/b.txt', 0o755);
|
|
223
|
-
await box.files.readRange('/home/user/app/b.txt', 0, 64);
|
|
224
|
-
await box.files.delete('/home/user/app/b.txt');
|
|
216
|
+
await box.files.write('/home/user/example-app/a.txt', 'hello');
|
|
217
|
+
await box.files.read('/home/user/example-app/a.txt');
|
|
218
|
+
await box.files.list('/home/user/example-app');
|
|
219
|
+
await box.files.stat('/home/user/example-app/a.txt');
|
|
220
|
+
await box.files.lstat('/home/user/example-app/link');
|
|
221
|
+
await box.files.rename('/home/user/example-app/a.txt', '/home/user/example-app/b.txt');
|
|
222
|
+
await box.files.chmod('/home/user/example-app/b.txt', 0o755);
|
|
223
|
+
await box.files.readRange('/home/user/example-app/b.txt', 0, 64);
|
|
224
|
+
await box.files.delete('/home/user/example-app/b.txt');
|
|
225
225
|
|
|
226
226
|
await box.runtimes.available();
|
|
227
227
|
await box.runtimes.installed();
|
|
@@ -232,14 +232,34 @@ await box.processes.list();
|
|
|
232
232
|
await box.processes.logs(7);
|
|
233
233
|
await box.processes.kill(7);
|
|
234
234
|
|
|
235
|
-
|
|
236
|
-
//
|
|
237
|
-
await box.ports.
|
|
235
|
+
box.ports.url(3000);
|
|
236
|
+
// https://my-nimbus.workers.dev/s/<session-or-job-id>/port/3000/ (owner only)
|
|
237
|
+
await box.ports.list();
|
|
238
|
+
|
|
239
|
+
// Share a running server with anyone who has the link.
|
|
240
|
+
const web = await box.apps.expose(3000, { visibility: 'public', name: 'web' });
|
|
241
|
+
// web.url, web.capability, web.owner, web.port, web.pid
|
|
242
|
+
await box.apps.list(); // adds status and restart policy per app
|
|
243
|
+
await box.apps.rotateLink('web'); // new link, old one revoked
|
|
244
|
+
await box.apps.expose('web', { visibility: 'scoped' }); // back to owner only
|
|
245
|
+
await box.apps.remove('web'); // stop it, release the port and its storage
|
|
238
246
|
```
|
|
239
247
|
|
|
248
|
+
Every server is durable: its journal row is restarted after a platform reset,
|
|
249
|
+
on the next request to its URL. Identity is derived from the command and its
|
|
250
|
+
working directory, so re-running the same command in the same directory is the
|
|
251
|
+
same app, and a shared link is bound to that program rather than to the port.
|
|
252
|
+
`startProcess(cmd, { restart: 'on-failure' })` also restarts it after a crash;
|
|
253
|
+
the default restarts only after a reset. An app target can be a port, a pid, a
|
|
254
|
+
name, or an owner.
|
|
255
|
+
|
|
240
256
|
On deployments with a preview host suffix configured (the hosted product sets
|
|
241
|
-
`NIMBUS_PREVIEW_HOST_SUFFIX=nimbus-os.dev`),
|
|
242
|
-
|
|
257
|
+
`NIMBUS_PREVIEW_HOST_SUFFIX=nimbus-os.dev`), URLs take the hostname form:
|
|
258
|
+
`https://<port>--<session-id>.<suffix>/` for the private preview,
|
|
259
|
+
`https://<name>--<session-id>.<suffix>/` for a named app, and
|
|
260
|
+
`https://<capability>--<name>--<session-id>.<suffix>/` for a public link.
|
|
261
|
+
Public links need the `NIMBUS_PUBLIC_DIRECTORY` Durable Object binding, which
|
|
262
|
+
`@nimbus-sh/config` emits with `nimbusPublicDirectory: true`. The
|
|
243
263
|
`/s/<id>/port/<n>/` path route works on every deployment.
|
|
244
264
|
|
|
245
265
|
Runtime policy comes from the sandbox profile:
|
|
@@ -255,8 +275,8 @@ Runtime policy comes from the sandbox profile:
|
|
|
255
275
|
object, in the shape Proteus's tool provider takes. It carries
|
|
256
276
|
`tools.exec.execute`, `runCode`, `readFile`, `writeFile`,
|
|
257
277
|
`listFiles`/`readdir`, `deleteFile`, `exists`, `startProcess`, `killProcess`,
|
|
258
|
-
`logs`, `exposePort`, `unexposePort`, `listPorts`, `
|
|
259
|
-
`listRuntimes`.
|
|
278
|
+
`logs`, `exposePort`, `unexposePort`, `listPorts`, `exposeApp`, `listApps`,
|
|
279
|
+
`installRuntime`, and `listRuntimes`.
|
|
260
280
|
|
|
261
281
|
`provider.capabilities` reports what Nimbus can do. Nimbus claims shell,
|
|
262
282
|
JavaScript/TypeScript, npm, git, owned filesystem, outbound fetch, inbound
|
package/dist/sandbox.d.ts
CHANGED
|
@@ -74,6 +74,78 @@ export interface NimbusExecOptions {
|
|
|
74
74
|
* user, which is what every programmatic exec has always run as.
|
|
75
75
|
*/
|
|
76
76
|
cred?: VfsCred;
|
|
77
|
+
/**
|
|
78
|
+
* `startProcess` only: what to do when the process exits on its own with
|
|
79
|
+
* a non-zero code. 'never' (default) leaves it stopped; 'on-failure'
|
|
80
|
+
* restarts it under the session's restart budget with backoff. A platform
|
|
81
|
+
* reset re-drives the process either way.
|
|
82
|
+
*/
|
|
83
|
+
restart?: NimbusRestartPolicy;
|
|
84
|
+
}
|
|
85
|
+
export type NimbusRestartPolicy = 'never' | 'on-failure';
|
|
86
|
+
export type NimbusAppVisibility = 'scoped' | 'public';
|
|
87
|
+
/** The sandbox file plane; see `NimbusSandbox.files`. */
|
|
88
|
+
export interface NimbusSandboxFiles {
|
|
89
|
+
/** The same API bound to `cred` — the view `SqliteVFS.as(cred)` gives in-process. */
|
|
90
|
+
as(cred: VfsCred): NimbusSandboxFiles;
|
|
91
|
+
read(path: string): Promise<string | null>;
|
|
92
|
+
readBytes(path: string): Promise<Uint8Array | null>;
|
|
93
|
+
write(path: string, content: string | Uint8Array): Promise<void>;
|
|
94
|
+
stat(path: string): Promise<NimbusFileStat | null>;
|
|
95
|
+
/** stat without following a symlink leaf. */
|
|
96
|
+
lstat(path: string): Promise<NimbusFileStat | null>;
|
|
97
|
+
rename(from: string, to: string): Promise<void>;
|
|
98
|
+
chmod(path: string, mode: number): Promise<void>;
|
|
99
|
+
/** Read `length` bytes at `offset` without materializing the whole file. */
|
|
100
|
+
readRange(path: string, offset: number, length: number): Promise<Uint8Array | null>;
|
|
101
|
+
list(path?: string): Promise<{
|
|
102
|
+
name: string;
|
|
103
|
+
type: string;
|
|
104
|
+
}[]>;
|
|
105
|
+
mkdir(path: string): Promise<void>;
|
|
106
|
+
exists(path: string): Promise<boolean>;
|
|
107
|
+
delete(path: string, options?: {
|
|
108
|
+
recursive?: boolean;
|
|
109
|
+
}): Promise<void>;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* An application target: a port, a pid, a name, or an owner — every
|
|
113
|
+
* `apps.*` verb takes one. A bare number is a port when something listens
|
|
114
|
+
* on it or a reservation names it, else a pid; a bare string is a name
|
|
115
|
+
* first, then an owner. The object forms are unambiguous.
|
|
116
|
+
*/
|
|
117
|
+
export type NimbusAppTarget = number | string | {
|
|
118
|
+
port: number;
|
|
119
|
+
} | {
|
|
120
|
+
pid: number;
|
|
121
|
+
} | {
|
|
122
|
+
name: string;
|
|
123
|
+
} | {
|
|
124
|
+
owner: string;
|
|
125
|
+
};
|
|
126
|
+
export interface NimbusExposedApp {
|
|
127
|
+
/** The application's identity: derived (`auto:…`) for an ordinary process, explicit for a durable worker app. */
|
|
128
|
+
owner: string;
|
|
129
|
+
name: string | null;
|
|
130
|
+
port: number;
|
|
131
|
+
pid: number | null;
|
|
132
|
+
capability: string | null;
|
|
133
|
+
visibility: NimbusAppVisibility;
|
|
134
|
+
/** Browser-facing URL, built the way `ports.url` builds one; undefined when the deployment is not addressable. */
|
|
135
|
+
url: string | undefined;
|
|
136
|
+
}
|
|
137
|
+
export interface NimbusApp {
|
|
138
|
+
owner: string;
|
|
139
|
+
name: string | null;
|
|
140
|
+
port: number | null;
|
|
141
|
+
pid: number | null;
|
|
142
|
+
status: 'running' | 'starting' | 'stopped' | 'failed';
|
|
143
|
+
visibility: NimbusAppVisibility;
|
|
144
|
+
capability: string | null;
|
|
145
|
+
restart: NimbusRestartPolicy;
|
|
146
|
+
/** With status 'failed': what went wrong, e.g. `listened on 3000, owns 5173`. */
|
|
147
|
+
diagnostic: string | null;
|
|
148
|
+
url: string | undefined;
|
|
77
149
|
}
|
|
78
150
|
export interface NimbusExecResult {
|
|
79
151
|
command: string;
|
|
@@ -201,23 +273,23 @@ interface NimbusSessionStub {
|
|
|
201
273
|
_rpcExec(command: string, options?: Record<string, unknown>): Promise<NimbusExecResult>;
|
|
202
274
|
_rpcStartProcess(command: string, options?: Record<string, unknown>): Promise<NimbusStartResult>;
|
|
203
275
|
_rpcRunCode(code: string, options?: Record<string, unknown>): Promise<NimbusExecResult>;
|
|
204
|
-
_rpcReadFile(path: string): Promise<string | null>;
|
|
205
|
-
_rpcReadFileBytes(path: string): Promise<Uint8Array | null>;
|
|
206
|
-
_rpcWriteFile(path: string, content: string | Uint8Array): Promise<void>;
|
|
207
|
-
_rpcStat(path: string): Promise<NimbusFileStat | null>;
|
|
208
|
-
_rpcLstat(path: string): Promise<NimbusFileStat | null>;
|
|
209
|
-
_rpcReaddir(path: string): Promise<{
|
|
276
|
+
_rpcReadFile(path: string, pid?: undefined, cred?: VfsCred): Promise<string | null>;
|
|
277
|
+
_rpcReadFileBytes(path: string, pid?: undefined, cred?: VfsCred): Promise<Uint8Array | null>;
|
|
278
|
+
_rpcWriteFile(path: string, content: string | Uint8Array, pid?: undefined, cred?: VfsCred): Promise<void>;
|
|
279
|
+
_rpcStat(path: string, pid?: undefined, cred?: VfsCred): Promise<NimbusFileStat | null>;
|
|
280
|
+
_rpcLstat(path: string, pid?: undefined, cred?: VfsCred): Promise<NimbusFileStat | null>;
|
|
281
|
+
_rpcReaddir(path: string, pid?: undefined, cred?: VfsCred): Promise<{
|
|
210
282
|
name: string;
|
|
211
283
|
type: string;
|
|
212
284
|
}[]>;
|
|
213
|
-
_rpcRename(from: string, to: string): Promise<void>;
|
|
214
|
-
_rpcChmod(path: string, mode: number): Promise<void>;
|
|
215
|
-
_rpcFsReadRange(path: string, offset: number, length: number): Promise<Uint8Array | null>;
|
|
216
|
-
_rpcExists(path: string): Promise<boolean>;
|
|
217
|
-
_rpcMkdir(path: string): Promise<void>;
|
|
285
|
+
_rpcRename(from: string, to: string, pid?: undefined, cred?: VfsCred): Promise<void>;
|
|
286
|
+
_rpcChmod(path: string, mode: number, pid?: undefined, cred?: VfsCred): Promise<void>;
|
|
287
|
+
_rpcFsReadRange(path: string, offset: number, length: number, pid?: undefined, cred?: VfsCred): Promise<Uint8Array | null>;
|
|
288
|
+
_rpcExists(path: string, pid?: undefined, cred?: VfsCred): Promise<boolean>;
|
|
289
|
+
_rpcMkdir(path: string, pid?: undefined, cred?: VfsCred): Promise<void>;
|
|
218
290
|
_rpcDeleteFile(path: string, options?: {
|
|
219
291
|
recursive?: boolean;
|
|
220
|
-
}): Promise<void>;
|
|
292
|
+
}, cred?: VfsCred): Promise<void>;
|
|
221
293
|
_rpcInstallRuntime(spec: string, options?: {
|
|
222
294
|
force?: boolean;
|
|
223
295
|
}): Promise<unknown>;
|
|
@@ -253,6 +325,7 @@ interface NimbusSessionStub {
|
|
|
253
325
|
_rpcListPorts(): Promise<NimbusPort[]>;
|
|
254
326
|
_rpcExposePort(port: number, options?: {
|
|
255
327
|
visibility?: 'scoped' | 'public';
|
|
328
|
+
name?: string;
|
|
256
329
|
}): Promise<{
|
|
257
330
|
port: number;
|
|
258
331
|
listening: boolean;
|
|
@@ -260,6 +333,25 @@ interface NimbusSessionStub {
|
|
|
260
333
|
registeredAt: number | null;
|
|
261
334
|
capability: string | null;
|
|
262
335
|
visibility?: 'scoped' | 'public';
|
|
336
|
+
owner?: string | null;
|
|
337
|
+
name?: string | null;
|
|
338
|
+
}>;
|
|
339
|
+
_rpcExposeApp(target: NimbusAppTarget, options?: {
|
|
340
|
+
visibility?: 'scoped' | 'public';
|
|
341
|
+
name?: string;
|
|
342
|
+
}): Promise<Omit<NimbusExposedApp, 'url'> & {
|
|
343
|
+
url: string | null;
|
|
344
|
+
}>;
|
|
345
|
+
_rpcListApps(): Promise<Array<Omit<NimbusApp, 'url'> & {
|
|
346
|
+
url: string | null;
|
|
347
|
+
}>>;
|
|
348
|
+
_rpcRotateLink(target: NimbusAppTarget): Promise<Omit<NimbusExposedApp, 'url'> & {
|
|
349
|
+
url: string | null;
|
|
350
|
+
}>;
|
|
351
|
+
_rpcRemoveApp(target: NimbusAppTarget): Promise<{
|
|
352
|
+
owner: string;
|
|
353
|
+
removed: boolean;
|
|
354
|
+
port: number | null;
|
|
263
355
|
}>;
|
|
264
356
|
_rpcEnsureDurableApp(input: {
|
|
265
357
|
owner: string;
|
|
@@ -341,27 +433,19 @@ export declare class NimbusSandbox {
|
|
|
341
433
|
install?: 'never' | 'ifMissing';
|
|
342
434
|
}): Promise<NimbusExecResult>;
|
|
343
435
|
destroy(options?: NimbusDestroyOptions): Promise<NimbusDestroyResult>;
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
type: string;
|
|
358
|
-
}[]>;
|
|
359
|
-
mkdir: (path: string) => Promise<void>;
|
|
360
|
-
exists: (path: string) => Promise<boolean>;
|
|
361
|
-
delete: (path: string, options?: {
|
|
362
|
-
recursive?: boolean;
|
|
363
|
-
}) => Promise<void>;
|
|
364
|
-
};
|
|
436
|
+
/**
|
|
437
|
+
* The session file plane. Every method acts as the session's default
|
|
438
|
+
* identity for a pid-less caller — the session user for reads, writes,
|
|
439
|
+
* stat, list, mkdir, rename and chmod; the kernel for `delete` — which is
|
|
440
|
+
* the embedder's trusted surface, reached only by a caller holding the DO
|
|
441
|
+
* binding or a remote token. `files.as(cred)` returns the same API bound
|
|
442
|
+
* to `cred` instead, the view `SqliteVFS.as(cred)` gives in-process: a
|
|
443
|
+
* file the identity cannot read answers EACCES, one it owns answers.
|
|
444
|
+
* Over the remote endpoint a `cred` is refused by the dispatcher, as it is
|
|
445
|
+
* on `exec` — a token authenticates a session, not a user inside it.
|
|
446
|
+
*/
|
|
447
|
+
files: NimbusSandboxFiles;
|
|
448
|
+
private filesAs;
|
|
365
449
|
runtimes: {
|
|
366
450
|
available: () => Promise<NimbusAvailableRuntime[]>;
|
|
367
451
|
installed: () => Promise<NimbusRuntimeSummary[]>;
|
|
@@ -403,8 +487,15 @@ export declare class NimbusSandbox {
|
|
|
403
487
|
};
|
|
404
488
|
ports: {
|
|
405
489
|
list: () => Promise<NimbusPort[]>;
|
|
490
|
+
/**
|
|
491
|
+
* Expose a port. When the port's occupant carries an identity (a node
|
|
492
|
+
* resident, a durable worker app) this is the same lazy reservation
|
|
493
|
+
* `apps.expose` makes and the result names the owner; a bare port —
|
|
494
|
+
* a dev server, a python resident — is written port-only as before.
|
|
495
|
+
*/
|
|
406
496
|
expose: (port: number, options?: {
|
|
407
497
|
visibility?: "scoped" | "public";
|
|
498
|
+
name?: string;
|
|
408
499
|
}) => Promise<{
|
|
409
500
|
url: string | undefined;
|
|
410
501
|
port: number;
|
|
@@ -413,6 +504,8 @@ export declare class NimbusSandbox {
|
|
|
413
504
|
registeredAt: number | null;
|
|
414
505
|
capability: string | null;
|
|
415
506
|
visibility?: "scoped" | "public";
|
|
507
|
+
owner?: string | null;
|
|
508
|
+
name?: string | null;
|
|
416
509
|
}>;
|
|
417
510
|
unexpose: (port: number) => Promise<{
|
|
418
511
|
port: number;
|
|
@@ -446,8 +539,30 @@ export declare class NimbusSandbox {
|
|
|
446
539
|
url: (port: number, options?: {
|
|
447
540
|
visibility?: "scoped" | "public";
|
|
448
541
|
capability?: string;
|
|
542
|
+
name?: string;
|
|
449
543
|
}) => string | undefined;
|
|
450
544
|
};
|
|
545
|
+
/**
|
|
546
|
+
* The application surface: every server is durable under its identity
|
|
547
|
+
* from the moment it is spawned; exposing it reserves its port for that
|
|
548
|
+
* identity, names it, and (when public) mints the capability its shared
|
|
549
|
+
* URL is built on. `ports.expose` is the port-addressed alias of
|
|
550
|
+
* `apps.expose`; the identity-addressed verbs live here.
|
|
551
|
+
*/
|
|
552
|
+
apps: {
|
|
553
|
+
list: () => Promise<NimbusApp[]>;
|
|
554
|
+
expose: (target: NimbusAppTarget, options?: {
|
|
555
|
+
visibility?: "scoped" | "public";
|
|
556
|
+
name?: string;
|
|
557
|
+
}) => Promise<NimbusExposedApp>;
|
|
558
|
+
rotateLink: (target: NimbusAppTarget) => Promise<NimbusExposedApp>;
|
|
559
|
+
remove: (target: NimbusAppTarget) => Promise<{
|
|
560
|
+
owner: string;
|
|
561
|
+
removed: boolean;
|
|
562
|
+
port: number | null;
|
|
563
|
+
}>;
|
|
564
|
+
};
|
|
565
|
+
private exposedApp;
|
|
451
566
|
tools(options?: {
|
|
452
567
|
namespace?: string;
|
|
453
568
|
kind?: string;
|
|
@@ -555,6 +670,8 @@ export declare class NimbusSandbox {
|
|
|
555
670
|
registeredAt: number | null;
|
|
556
671
|
capability: string | null;
|
|
557
672
|
visibility?: "scoped" | "public";
|
|
673
|
+
owner?: string | null;
|
|
674
|
+
name?: string | null;
|
|
558
675
|
}>;
|
|
559
676
|
};
|
|
560
677
|
unexposePort: {
|
|
@@ -568,6 +685,16 @@ export declare class NimbusSandbox {
|
|
|
568
685
|
listPorts: {
|
|
569
686
|
execute: () => Promise<NimbusPort[]>;
|
|
570
687
|
};
|
|
688
|
+
exposeApp: {
|
|
689
|
+
execute: (input: NimbusAppTarget | {
|
|
690
|
+
target: NimbusAppTarget;
|
|
691
|
+
visibility?: "scoped" | "public";
|
|
692
|
+
name?: string;
|
|
693
|
+
}) => Promise<NimbusExposedApp>;
|
|
694
|
+
};
|
|
695
|
+
listApps: {
|
|
696
|
+
execute: () => Promise<NimbusApp[]>;
|
|
697
|
+
};
|
|
571
698
|
installRuntime: {
|
|
572
699
|
execute: (spec: RuntimeSpec) => Promise<unknown>;
|
|
573
700
|
};
|
package/dist/sandbox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"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"}
|
package/dist/sandbox.js
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { buildPreviewHost, buildPublicPreviewHost, isPreviewHostSafeSid, readPreviewHostSuffix, } from '@nimbus-sh/worker/preview-host';
|
|
5
5
|
import { z } from 'zod/v4';
|
|
6
|
+
/** The trailing wire argument a credentialed file op carries, or nothing. */
|
|
7
|
+
function fileWireOptions(cred) {
|
|
8
|
+
return cred === undefined ? [] : [{ cred }];
|
|
9
|
+
}
|
|
6
10
|
export class NimbusRemoteError extends Error {
|
|
7
11
|
status;
|
|
8
12
|
code;
|
|
@@ -139,6 +143,29 @@ const ExposedPortSchema = z.object({
|
|
|
139
143
|
registeredAt: z.number().nullable(),
|
|
140
144
|
capability: z.string().nullable(),
|
|
141
145
|
visibility: z.enum(['scoped', 'public']).optional(),
|
|
146
|
+
owner: z.string().nullable().optional(),
|
|
147
|
+
name: z.string().nullable().optional(),
|
|
148
|
+
});
|
|
149
|
+
const ExposedAppSchema = z.object({
|
|
150
|
+
owner: z.string(),
|
|
151
|
+
name: z.string().nullable(),
|
|
152
|
+
port: z.number(),
|
|
153
|
+
pid: z.number().nullable(),
|
|
154
|
+
capability: z.string().nullable(),
|
|
155
|
+
visibility: z.enum(['scoped', 'public']),
|
|
156
|
+
url: z.string().nullable(),
|
|
157
|
+
});
|
|
158
|
+
const AppSchema = z.object({
|
|
159
|
+
owner: z.string(),
|
|
160
|
+
name: z.string().nullable(),
|
|
161
|
+
port: z.number().nullable(),
|
|
162
|
+
pid: z.number().nullable(),
|
|
163
|
+
status: z.enum(['running', 'starting', 'stopped', 'failed']),
|
|
164
|
+
visibility: z.enum(['scoped', 'public']),
|
|
165
|
+
capability: z.string().nullable(),
|
|
166
|
+
restart: z.enum(['never', 'on-failure']),
|
|
167
|
+
diagnostic: z.string().nullable(),
|
|
168
|
+
url: z.string().nullable(),
|
|
142
169
|
});
|
|
143
170
|
const EnsureDurableAppSchema = z.object({
|
|
144
171
|
port: z.number(),
|
|
@@ -259,23 +286,26 @@ export class NimbusSandbox {
|
|
|
259
286
|
_rpcExec: (command, options) => this.remoteRpc('exec', [command, options], ExecResultSchema),
|
|
260
287
|
_rpcStartProcess: (command, options) => this.remoteRpc('startProcess', [command, options], StartResultSchema),
|
|
261
288
|
_rpcRunCode: (code, options) => this.remoteRpc('runCode', [code, options], ExecResultSchema),
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
289
|
+
// A credential rides the wire as a trailing `{ cred }` options object
|
|
290
|
+
// so the payload names it explicitly; the remote dispatcher decides
|
|
291
|
+
// what to do with it (today: refuse, as it refuses `cred` on exec).
|
|
292
|
+
_rpcReadFile: (path, _pid, cred) => this.remoteRpc('readFile', [path, ...fileWireOptions(cred)], StringOrNullSchema),
|
|
293
|
+
_rpcReadFileBytes: (path, _pid, cred) => this.remoteRpc('readFileBytes', [path, ...fileWireOptions(cred)], Uint8ArrayOrNullSchema),
|
|
294
|
+
_rpcWriteFile: async (path, content, _pid, cred) => {
|
|
265
295
|
// The byte count is the wire contract but not part of the public
|
|
266
296
|
// `files.write` surface, so it is validated and dropped. Declaring
|
|
267
297
|
// this `undefined` made every remote write throw after succeeding.
|
|
268
|
-
await this.remoteRpc('writeFile', [path, content], WriteFileResultSchema);
|
|
298
|
+
await this.remoteRpc('writeFile', [path, content, ...fileWireOptions(cred)], WriteFileResultSchema);
|
|
269
299
|
},
|
|
270
|
-
_rpcStat: (path) => this.remoteRpc('stat', [path], FileStatSchema.nullable()),
|
|
271
|
-
_rpcLstat: (path) => this.remoteRpc('lstat', [path], FileStatSchema.nullable()),
|
|
272
|
-
_rpcRename: (from, to) => this.remoteRpc('rename', [from, to], UndefinedResultSchema),
|
|
273
|
-
_rpcChmod: (path, mode) => this.remoteRpc('chmod', [path, mode], UndefinedResultSchema),
|
|
274
|
-
_rpcFsReadRange: (path, offset, length) => this.remoteRpc('readRange', [path, offset, length], Uint8ArrayOrNullSchema),
|
|
275
|
-
_rpcReaddir: (path) => this.remoteRpc('readdir', [path], z.array(DirectoryEntrySchema)),
|
|
276
|
-
_rpcExists: (path) => this.remoteRpc('exists', [path], BooleanResultSchema),
|
|
277
|
-
_rpcMkdir: (path) => this.remoteRpc('mkdir', [path], UndefinedResultSchema),
|
|
278
|
-
_rpcDeleteFile: (path, options) => this.remoteRpc('deleteFile', [path, options], UndefinedResultSchema),
|
|
300
|
+
_rpcStat: (path, _pid, cred) => this.remoteRpc('stat', [path, ...fileWireOptions(cred)], FileStatSchema.nullable()),
|
|
301
|
+
_rpcLstat: (path, _pid, cred) => this.remoteRpc('lstat', [path, ...fileWireOptions(cred)], FileStatSchema.nullable()),
|
|
302
|
+
_rpcRename: (from, to, _pid, cred) => this.remoteRpc('rename', [from, to, ...fileWireOptions(cred)], UndefinedResultSchema),
|
|
303
|
+
_rpcChmod: (path, mode, _pid, cred) => this.remoteRpc('chmod', [path, mode, ...fileWireOptions(cred)], UndefinedResultSchema),
|
|
304
|
+
_rpcFsReadRange: (path, offset, length, _pid, cred) => this.remoteRpc('readRange', [path, offset, length, ...fileWireOptions(cred)], Uint8ArrayOrNullSchema),
|
|
305
|
+
_rpcReaddir: (path, _pid, cred) => this.remoteRpc('readdir', [path, ...fileWireOptions(cred)], z.array(DirectoryEntrySchema)),
|
|
306
|
+
_rpcExists: (path, _pid, cred) => this.remoteRpc('exists', [path, ...fileWireOptions(cred)], BooleanResultSchema),
|
|
307
|
+
_rpcMkdir: (path, _pid, cred) => this.remoteRpc('mkdir', [path, ...fileWireOptions(cred)], UndefinedResultSchema),
|
|
308
|
+
_rpcDeleteFile: (path, options, cred) => this.remoteRpc('deleteFile', [path, { ...(options ?? {}), ...(cred !== undefined ? { cred } : {}) }], UndefinedResultSchema),
|
|
279
309
|
_rpcInstallRuntime: (spec, options) => this.remoteRpc('installRuntime', [spec, options], UnknownResultSchema),
|
|
280
310
|
_rpcEnsureRuntimes: (specs, options) => this.remoteRpc('ensureRuntimes', [specs, options], UnknownResultSchema),
|
|
281
311
|
_rpcListRuntimes: () => this.remoteRpc('listRuntimes', [], RuntimeListSchema),
|
|
@@ -290,6 +320,10 @@ export class NimbusSandbox {
|
|
|
290
320
|
_rpcExposePort: (port, options) => this.remoteRpc('exposePort', [port, options], ExposedPortSchema),
|
|
291
321
|
_rpcEnsureDurableApp: (input) => this.remoteRpc('ensureDurableApp', [input], EnsureDurableAppSchema),
|
|
292
322
|
_rpcRemoveDurableApp: (owner) => this.remoteRpc('removeDurableApp', [{ owner }], RemoveDurableAppSchema),
|
|
323
|
+
_rpcExposeApp: (target, options) => this.remoteRpc('exposeApp', [target, options], ExposedAppSchema),
|
|
324
|
+
_rpcListApps: () => this.remoteRpc('listApps', [], z.array(AppSchema)),
|
|
325
|
+
_rpcRotateLink: (target) => this.remoteRpc('rotateLink', [target], ExposedAppSchema),
|
|
326
|
+
_rpcRemoveApp: (target) => this.remoteRpc('removeApp', [target], RemoveDurableAppSchema),
|
|
293
327
|
_rpcUnexposePort: (port) => this.remoteRpc('unexposePort', [port], UnexposedPortSchema),
|
|
294
328
|
_rpcDestroy: (options) => this.remoteRpc('destroy', [options], DestroyResultSchema),
|
|
295
329
|
};
|
|
@@ -380,58 +414,73 @@ export class NimbusSandbox {
|
|
|
380
414
|
this.readyPromise = null;
|
|
381
415
|
return this.rpc(this.stub()._rpcDestroy(options));
|
|
382
416
|
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
417
|
+
/**
|
|
418
|
+
* The session file plane. Every method acts as the session's default
|
|
419
|
+
* identity for a pid-less caller — the session user for reads, writes,
|
|
420
|
+
* stat, list, mkdir, rename and chmod; the kernel for `delete` — which is
|
|
421
|
+
* the embedder's trusted surface, reached only by a caller holding the DO
|
|
422
|
+
* binding or a remote token. `files.as(cred)` returns the same API bound
|
|
423
|
+
* to `cred` instead, the view `SqliteVFS.as(cred)` gives in-process: a
|
|
424
|
+
* file the identity cannot read answers EACCES, one it owns answers.
|
|
425
|
+
* Over the remote endpoint a `cred` is refused by the dispatcher, as it is
|
|
426
|
+
* on `exec` — a token authenticates a session, not a user inside it.
|
|
427
|
+
*/
|
|
428
|
+
files = this.filesAs(undefined);
|
|
429
|
+
filesAs(cred) {
|
|
430
|
+
return {
|
|
431
|
+
as: (bound) => this.filesAs(bound),
|
|
432
|
+
read: async (path) => {
|
|
433
|
+
await this.ready();
|
|
434
|
+
return this.rpc(this.stub()._rpcReadFile(path, undefined, cred));
|
|
435
|
+
},
|
|
436
|
+
readBytes: async (path) => {
|
|
437
|
+
await this.ready();
|
|
438
|
+
return this.rpc(this.stub()._rpcReadFileBytes(path, undefined, cred));
|
|
439
|
+
},
|
|
440
|
+
write: async (path, content) => {
|
|
441
|
+
await this.ready();
|
|
442
|
+
return this.rpc(this.stub()._rpcWriteFile(path, content, undefined, cred));
|
|
443
|
+
},
|
|
444
|
+
stat: async (path) => {
|
|
445
|
+
await this.ready();
|
|
446
|
+
return this.rpc(this.stub()._rpcStat(path, undefined, cred));
|
|
447
|
+
},
|
|
448
|
+
/** stat without following a symlink leaf. */
|
|
449
|
+
lstat: async (path) => {
|
|
450
|
+
await this.ready();
|
|
451
|
+
return this.rpc(this.stub()._rpcLstat(path, undefined, cred));
|
|
452
|
+
},
|
|
453
|
+
rename: async (from, to) => {
|
|
454
|
+
await this.ready();
|
|
455
|
+
return this.rpc(this.stub()._rpcRename(from, to, undefined, cred));
|
|
456
|
+
},
|
|
457
|
+
chmod: async (path, mode) => {
|
|
458
|
+
await this.ready();
|
|
459
|
+
return this.rpc(this.stub()._rpcChmod(path, mode, undefined, cred));
|
|
460
|
+
},
|
|
461
|
+
/** Read `length` bytes at `offset` without materializing the whole file. */
|
|
462
|
+
readRange: async (path, offset, length) => {
|
|
463
|
+
await this.ready();
|
|
464
|
+
return this.rpc(this.stub()._rpcFsReadRange(path, offset, length, undefined, cred));
|
|
465
|
+
},
|
|
466
|
+
list: async (path = this.root) => {
|
|
467
|
+
await this.ready();
|
|
468
|
+
return this.rpc(this.stub()._rpcReaddir(path, undefined, cred));
|
|
469
|
+
},
|
|
470
|
+
mkdir: async (path) => {
|
|
471
|
+
await this.ready();
|
|
472
|
+
return this.rpc(this.stub()._rpcMkdir(path, undefined, cred));
|
|
473
|
+
},
|
|
474
|
+
exists: async (path) => {
|
|
475
|
+
await this.ready();
|
|
476
|
+
return this.rpc(this.stub()._rpcExists(path, undefined, cred));
|
|
477
|
+
},
|
|
478
|
+
delete: async (path, options = {}) => {
|
|
479
|
+
await this.ready();
|
|
480
|
+
return this.rpc(this.stub()._rpcDeleteFile(path, options, cred));
|
|
481
|
+
},
|
|
482
|
+
};
|
|
483
|
+
}
|
|
435
484
|
runtimes = {
|
|
436
485
|
available: async () => {
|
|
437
486
|
await this.ready();
|
|
@@ -496,6 +545,12 @@ export class NimbusSandbox {
|
|
|
496
545
|
await this.ready();
|
|
497
546
|
return this.rpc(this.stub()._rpcListPorts());
|
|
498
547
|
},
|
|
548
|
+
/**
|
|
549
|
+
* Expose a port. When the port's occupant carries an identity (a node
|
|
550
|
+
* resident, a durable worker app) this is the same lazy reservation
|
|
551
|
+
* `apps.expose` makes and the result names the owner; a bare port —
|
|
552
|
+
* a dev server, a python resident — is written port-only as before.
|
|
553
|
+
*/
|
|
499
554
|
expose: async (port, options = {}) => {
|
|
500
555
|
await this.ready();
|
|
501
556
|
const result = await this.rpc(this.stub()._rpcExposePort(port, options));
|
|
@@ -504,6 +559,7 @@ export class NimbusSandbox {
|
|
|
504
559
|
url: this.portUrl(port, {
|
|
505
560
|
visibility: result.visibility ?? 'scoped',
|
|
506
561
|
capability: result.capability ?? undefined,
|
|
562
|
+
name: result.name ?? undefined,
|
|
507
563
|
}),
|
|
508
564
|
};
|
|
509
565
|
},
|
|
@@ -532,6 +588,51 @@ export class NimbusSandbox {
|
|
|
532
588
|
},
|
|
533
589
|
url: (port, options = {}) => this.portUrl(port, options),
|
|
534
590
|
};
|
|
591
|
+
/**
|
|
592
|
+
* The application surface: every server is durable under its identity
|
|
593
|
+
* from the moment it is spawned; exposing it reserves its port for that
|
|
594
|
+
* identity, names it, and (when public) mints the capability its shared
|
|
595
|
+
* URL is built on. `ports.expose` is the port-addressed alias of
|
|
596
|
+
* `apps.expose`; the identity-addressed verbs live here.
|
|
597
|
+
*/
|
|
598
|
+
apps = {
|
|
599
|
+
list: async () => {
|
|
600
|
+
await this.ready();
|
|
601
|
+
const apps = await this.rpc(this.stub()._rpcListApps());
|
|
602
|
+
return apps.map((app) => ({
|
|
603
|
+
...app,
|
|
604
|
+
url: app.port === null ? undefined : this.portUrl(app.port, {
|
|
605
|
+
visibility: app.visibility,
|
|
606
|
+
capability: app.capability ?? undefined,
|
|
607
|
+
name: app.name ?? undefined,
|
|
608
|
+
}) ?? app.url ?? undefined,
|
|
609
|
+
}));
|
|
610
|
+
},
|
|
611
|
+
expose: async (target, options = {}) => {
|
|
612
|
+
await this.ready();
|
|
613
|
+
const result = await this.rpc(this.stub()._rpcExposeApp(target, options));
|
|
614
|
+
return this.exposedApp(result);
|
|
615
|
+
},
|
|
616
|
+
rotateLink: async (target) => {
|
|
617
|
+
await this.ready();
|
|
618
|
+
const result = await this.rpc(this.stub()._rpcRotateLink(target));
|
|
619
|
+
return this.exposedApp(result);
|
|
620
|
+
},
|
|
621
|
+
remove: async (target) => {
|
|
622
|
+
await this.ready();
|
|
623
|
+
return this.rpc(this.stub()._rpcRemoveApp(target));
|
|
624
|
+
},
|
|
625
|
+
};
|
|
626
|
+
exposedApp(result) {
|
|
627
|
+
return {
|
|
628
|
+
...result,
|
|
629
|
+
url: this.portUrl(result.port, {
|
|
630
|
+
visibility: result.visibility,
|
|
631
|
+
capability: result.capability ?? undefined,
|
|
632
|
+
name: result.name ?? undefined,
|
|
633
|
+
}) ?? result.url ?? undefined,
|
|
634
|
+
};
|
|
635
|
+
}
|
|
535
636
|
tools(options = {}) {
|
|
536
637
|
const namespace = options.namespace ?? this.profile.tools?.namespace ?? 'nimbus';
|
|
537
638
|
const kind = options.kind ?? this.profile.tools?.kind ?? 'nimbus';
|
|
@@ -585,6 +686,10 @@ export class NimbusSandbox {
|
|
|
585
686
|
exposePort: { execute: (input) => this.ports.expose(typeof input === 'number' ? input : input.port) },
|
|
586
687
|
unexposePort: { execute: (input) => this.ports.unexpose(typeof input === 'number' ? input : input.port) },
|
|
587
688
|
listPorts: { execute: () => this.ports.list() },
|
|
689
|
+
exposeApp: { execute: (input) => typeof input === 'object' && input !== null && 'target' in input
|
|
690
|
+
? this.apps.expose(input.target, { visibility: input.visibility, name: input.name })
|
|
691
|
+
: this.apps.expose(input) },
|
|
692
|
+
listApps: { execute: () => this.apps.list() },
|
|
588
693
|
installRuntime: { execute: (spec) => this.runtimes.install(spec) },
|
|
589
694
|
listRuntimes: { execute: () => this.runtimes.list() },
|
|
590
695
|
},
|
|
@@ -618,6 +723,13 @@ export class NimbusSandbox {
|
|
|
618
723
|
}
|
|
619
724
|
execOptions(options) {
|
|
620
725
|
const normalized = { ...options };
|
|
726
|
+
if (typeof normalized.cwd === 'string') {
|
|
727
|
+
// The session shell only understands absolute paths; a relative cwd
|
|
728
|
+
// forwarded verbatim used to reach it anyway — `pwd` echoed the
|
|
729
|
+
// literal string and every write beneath it landed ENOENT. Resolve
|
|
730
|
+
// against the sandbox root here, at the SDK boundary.
|
|
731
|
+
normalized.cwd = resolveSandboxCwd(this.root, normalized.cwd);
|
|
732
|
+
}
|
|
621
733
|
if (normalized.shellId) {
|
|
622
734
|
// A named shell owns its cwd, so defaulting one here would reset it on
|
|
623
735
|
// every call. The sandbox root is only where a NEW shell starts.
|
|
@@ -654,23 +766,26 @@ export class NimbusSandbox {
|
|
|
654
766
|
portUrl(port, options = {}) {
|
|
655
767
|
const hostSuffix = this.config.previewHostSuffix;
|
|
656
768
|
if (hostSuffix && !this.profile.preview?.pathStyle && isPreviewHostSafeSid(this.id)) {
|
|
657
|
-
// The
|
|
769
|
+
// The name stands where the port stands when the app has one. The
|
|
770
|
+
// public form names its bearer in the label: a public port with a
|
|
658
771
|
// capability builds the unauthenticated host, anything else keeps the
|
|
659
772
|
// session-attached one.
|
|
773
|
+
const label = options.name ?? port;
|
|
660
774
|
if (options.visibility === 'public' && options.capability !== undefined) {
|
|
661
|
-
return `https://${buildPublicPreviewHost(this.id,
|
|
775
|
+
return `https://${buildPublicPreviewHost(this.id, label, options.capability, hostSuffix)}/`;
|
|
662
776
|
}
|
|
663
|
-
return `https://${buildPreviewHost(this.id,
|
|
777
|
+
return `https://${buildPreviewHost(this.id, label, hostSuffix)}/`;
|
|
664
778
|
}
|
|
779
|
+
const door = options.name !== undefined ? `/app/${options.name}/` : `/port/${port}/`;
|
|
665
780
|
const explicit = this.profile.preview?.baseUrl;
|
|
666
781
|
if (explicit) {
|
|
667
782
|
const base = trimTrailingSlashes(explicit.replace('{sessionId}', encodeURIComponent(this.id)));
|
|
668
|
-
return `${base}
|
|
783
|
+
return `${base}${door}`;
|
|
669
784
|
}
|
|
670
785
|
const endpoint = this.config.endpoint ? trimTrailingSlashes(this.config.endpoint) : '';
|
|
671
786
|
if (!endpoint)
|
|
672
787
|
return undefined;
|
|
673
|
-
return `${endpoint}/s/${encodeURIComponent(this.id)}
|
|
788
|
+
return `${endpoint}/s/${encodeURIComponent(this.id)}${door}`;
|
|
674
789
|
}
|
|
675
790
|
async rpc(promise) {
|
|
676
791
|
const value = await promise;
|
|
@@ -814,6 +929,30 @@ function trimTrailingSlashes(value) {
|
|
|
814
929
|
end--;
|
|
815
930
|
return value.slice(0, end);
|
|
816
931
|
}
|
|
932
|
+
/**
|
|
933
|
+
* Resolve an exec `cwd` to the absolute POSIX path the session shell needs.
|
|
934
|
+
* Absolute inputs pass through untouched; relative ones resolve against the
|
|
935
|
+
* sandbox root, collapsing `.`/`..` segments (`rel` → `<root>/rel`,
|
|
936
|
+
* `../x` → the sibling of root). The session filesystem is always POSIX —
|
|
937
|
+
* `node:path` is not portable across every SDK host, so this resolves by
|
|
938
|
+
* segment instead of importing it.
|
|
939
|
+
*/
|
|
940
|
+
function resolveSandboxCwd(root, cwd) {
|
|
941
|
+
if (cwd.startsWith('/'))
|
|
942
|
+
return cwd;
|
|
943
|
+
const segments = [];
|
|
944
|
+
for (const seg of `${root}/${cwd}`.split('/')) {
|
|
945
|
+
if (seg === '..') {
|
|
946
|
+
// A '..' at the filesystem root stays at the root, POSIX-style.
|
|
947
|
+
if (segments.length > 0)
|
|
948
|
+
segments.pop();
|
|
949
|
+
}
|
|
950
|
+
else if (seg !== '' && seg !== '.') {
|
|
951
|
+
segments.push(seg);
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
return '/' + segments.join('/');
|
|
955
|
+
}
|
|
817
956
|
function disposeSdkRpcResult(value) {
|
|
818
957
|
if ((typeof value !== 'object' && typeof value !== 'function') || value === null)
|
|
819
958
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nimbus-sh/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Nimbus SDK — Worker embedder, programmatic sandboxes, token mint, and client helpers.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare",
|
|
@@ -72,12 +72,12 @@
|
|
|
72
72
|
"typecheck": "tsc --noEmit"
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
|
-
"@nimbus-sh/core": "^0.
|
|
76
|
-
"@nimbus-sh/worker": "^0.
|
|
75
|
+
"@nimbus-sh/core": "^0.9.0",
|
|
76
|
+
"@nimbus-sh/worker": "^0.7.0"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"@cloudflare/workers-types": "^4.20250327.0",
|
|
80
|
-
"@nimbus-sh/worker": "^0.
|
|
80
|
+
"@nimbus-sh/worker": "^0.7.0",
|
|
81
81
|
"typescript": "^5.7.0"
|
|
82
82
|
},
|
|
83
83
|
"publishConfig": {
|
|
@@ -85,6 +85,6 @@
|
|
|
85
85
|
},
|
|
86
86
|
"dependencies": {
|
|
87
87
|
"zod": "^4.4.3",
|
|
88
|
-
"@nimbus-sh/core": "^0.
|
|
88
|
+
"@nimbus-sh/core": "^0.9.0"
|
|
89
89
|
}
|
|
90
90
|
}
|