@nimbus-sh/sdk 0.3.1 → 0.5.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 -33
- package/dist/sandbox.d.ts +163 -3
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +140 -10
- package/dist/worker.d.ts +1 -1
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
# @nimbus-sh/sdk
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Run code in a Nimbus sandbox from your own backend, and deploy the Worker
|
|
4
|
+
that hosts it.
|
|
5
|
+
|
|
6
|
+
A sandbox has a filesystem, a shell, real processes, and ports you can reach
|
|
7
|
+
from a browser. This package carries the Worker embedder, the programmatic
|
|
8
|
+
sandbox handles, token mint and verify, typed errors, and session URL
|
|
9
|
+
helpers.
|
|
5
10
|
|
|
6
11
|
## Install
|
|
7
12
|
|
|
@@ -9,10 +14,9 @@ token mint/verify, typed errors, and session URL helpers.
|
|
|
9
14
|
npm install @nimbus-sh/sdk @nimbus-sh/worker @nimbus-sh/config
|
|
10
15
|
```
|
|
11
16
|
|
|
12
|
-
|
|
13
|
-
`@nimbus-sh/worker`
|
|
14
|
-
|
|
15
|
-
deploy-time API through the SDK.
|
|
17
|
+
Import the deploy-time API from `@nimbus-sh/sdk/worker`. Install
|
|
18
|
+
`@nimbus-sh/worker` as well, because it carries the runtime assets and the
|
|
19
|
+
Durable Object implementation that entrypoint serves.
|
|
16
20
|
|
|
17
21
|
Create a deployable Nimbus Worker:
|
|
18
22
|
|
|
@@ -72,16 +76,17 @@ export default createNimbusHandler({
|
|
|
72
76
|
});
|
|
73
77
|
```
|
|
74
78
|
|
|
75
|
-
The bundled session UI
|
|
76
|
-
Configure it with Worker vars
|
|
77
|
-
`
|
|
78
|
-
`
|
|
79
|
-
`NIMBUS_AGENT_COOKIE_SECRET` or
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
The bundled session UI carries an agent surface in the editor workspace.
|
|
80
|
+
Configure it with the Worker vars `NIMBUS_CF_OAUTH_CLIENT_ID`,
|
|
81
|
+
`NIMBUS_CF_OAUTH_SCOPES`, `NIMBUS_AGENT_MODEL`, and
|
|
82
|
+
`NIMBUS_AGENT_GATEWAY_ID`. For Cloudflare OAuth or owner-token Workers AI
|
|
83
|
+
access, add the secret `NIMBUS_AGENT_COOKIE_SECRET` or
|
|
84
|
+
`NIMBUS_CLOUDFLARE_API_TOKEN`.
|
|
85
|
+
|
|
86
|
+
User OAuth uses Authorization Code with PKCE and encrypted browser cookies.
|
|
87
|
+
Nimbus keeps no user OAuth token in Durable Object storage.
|
|
83
88
|
|
|
84
|
-
##
|
|
89
|
+
## Sandboxes from your own code
|
|
85
90
|
|
|
86
91
|
The same sandbox handle API works in two modes:
|
|
87
92
|
|
|
@@ -157,9 +162,9 @@ export default createNimbusHandler({
|
|
|
157
162
|
```
|
|
158
163
|
|
|
159
164
|
`Nimbus.connect()` calls the versioned `/api/nimbus/v1` API internally. The
|
|
160
|
-
Worker verifies the JWT, enforces `sid` pins and `sandbox:use` scope,
|
|
161
|
-
the configured runtime policy
|
|
162
|
-
|
|
165
|
+
Worker verifies the JWT, enforces `sid` pins and `sandbox:use` scope, and
|
|
166
|
+
applies the configured runtime policy. It then delegates to the same
|
|
167
|
+
`NimbusSession` RPC methods `Nimbus.fromEnv()` uses.
|
|
163
168
|
|
|
164
169
|
Sandbox destruction is a separate lifecycle operation. Tokens that call
|
|
165
170
|
`box.destroy()` must include `session:destroy` or `session:admin` in addition
|
|
@@ -233,9 +238,9 @@ await box.ports.unexpose(3000);
|
|
|
233
238
|
```
|
|
234
239
|
|
|
235
240
|
On deployments with a preview host suffix configured (the hosted product sets
|
|
236
|
-
`NIMBUS_PREVIEW_HOST_SUFFIX=nimbus-os.dev`), `port.url`
|
|
237
|
-
`https://<port>--<session-id>.<suffix>/` instead
|
|
238
|
-
path route works on every deployment.
|
|
241
|
+
`NIMBUS_PREVIEW_HOST_SUFFIX=nimbus-os.dev`), `port.url` takes the hostname
|
|
242
|
+
form `https://<port>--<session-id>.<suffix>/` instead. The
|
|
243
|
+
`/s/<id>/port/<n>/` path route works on every deployment.
|
|
239
244
|
|
|
240
245
|
Runtime policy comes from the sandbox profile:
|
|
241
246
|
|
|
@@ -244,21 +249,23 @@ Runtime policy comes from the sandbox profile:
|
|
|
244
249
|
- `runtimes.onDemand: false` blocks installing runtimes that are not listed
|
|
245
250
|
in `preinstall`.
|
|
246
251
|
|
|
247
|
-
##
|
|
252
|
+
## Agent tool provider
|
|
248
253
|
|
|
249
254
|
`box.tools({ namespace: 'sandbox', kind: 'sandbox' })` returns a provider-like
|
|
250
|
-
object
|
|
255
|
+
object, in the shape Proteus's tool provider takes. It carries
|
|
256
|
+
`tools.exec.execute`, `runCode`, `readFile`, `writeFile`,
|
|
251
257
|
`listFiles`/`readdir`, `deleteFile`, `exists`, `startProcess`, `killProcess`,
|
|
252
258
|
`logs`, `exposePort`, `unexposePort`, `listPorts`, `installRuntime`, and
|
|
253
259
|
`listRuntimes`.
|
|
254
260
|
|
|
255
|
-
`provider.capabilities`
|
|
261
|
+
`provider.capabilities` reports what Nimbus can do. Nimbus claims shell,
|
|
256
262
|
JavaScript/TypeScript, npm, git, owned filesystem, outbound fetch, inbound
|
|
257
263
|
HTTP-like port routing, process spawn/long-running processes, Python/Ruby
|
|
258
|
-
when allowed, and clang-backed WASI/WebAssembly execution. It does not claim
|
|
259
|
-
custom Linux images, native Linux ELF execution, or raw TCP
|
|
264
|
+
when allowed, and clang-backed WASI/WebAssembly execution. It does not claim
|
|
265
|
+
Docker, apt, GPU, custom Linux images, native Linux ELF execution, or raw TCP
|
|
266
|
+
listeners.
|
|
260
267
|
|
|
261
|
-
##
|
|
268
|
+
## Mint a session token
|
|
262
269
|
|
|
263
270
|
```ts
|
|
264
271
|
import { issueNimbusToken } from '@nimbus-sh/sdk/token';
|
|
@@ -271,7 +278,7 @@ const token = await issueNimbusToken(
|
|
|
271
278
|
// → 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6Im5pbWJ1cyIsInRu...'
|
|
272
279
|
```
|
|
273
280
|
|
|
274
|
-
## Verify a token
|
|
281
|
+
## Verify a token
|
|
275
282
|
|
|
276
283
|
```ts
|
|
277
284
|
import { verifyNimbusToken } from '@nimbus-sh/sdk/token';
|
|
@@ -361,12 +368,11 @@ JWT (HS256) with these claims:
|
|
|
361
368
|
}
|
|
362
369
|
```
|
|
363
370
|
|
|
364
|
-
Both `tn` and `sub` must match `[A-Za-z0-9._-]{1,128}
|
|
365
|
-
`ID_COMPONENT_RE` if you need to validate user input.
|
|
371
|
+
Both `tn` and `sub` must match `[A-Za-z0-9._-]{1,128}`. The pattern is
|
|
372
|
+
exported as `ID_COMPONENT_RE` if you need to validate user input.
|
|
366
373
|
|
|
367
|
-
The `scope` discriminator
|
|
368
|
-
(e.g. Mossaic VFS, `scope: "vfs"`)
|
|
369
|
-
the same secret.
|
|
374
|
+
The `scope` discriminator rejects a token minted for another product
|
|
375
|
+
(e.g. Mossaic VFS, `scope: "vfs"`) even when the same secret signed it.
|
|
370
376
|
|
|
371
377
|
## Secret rotation
|
|
372
378
|
|
package/dist/sandbox.d.ts
CHANGED
|
@@ -74,6 +74,54 @@ 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
|
+
/**
|
|
88
|
+
* An application target: a port, a pid, a name, or an owner — every
|
|
89
|
+
* `apps.*` verb takes one. A bare number is a port when something listens
|
|
90
|
+
* on it or a reservation names it, else a pid; a bare string is a name
|
|
91
|
+
* first, then an owner. The object forms are unambiguous.
|
|
92
|
+
*/
|
|
93
|
+
export type NimbusAppTarget = number | string | {
|
|
94
|
+
port: number;
|
|
95
|
+
} | {
|
|
96
|
+
pid: number;
|
|
97
|
+
} | {
|
|
98
|
+
name: string;
|
|
99
|
+
} | {
|
|
100
|
+
owner: string;
|
|
101
|
+
};
|
|
102
|
+
export interface NimbusExposedApp {
|
|
103
|
+
/** The application's identity: derived (`auto:…`) for an ordinary process, explicit for a durable worker app. */
|
|
104
|
+
owner: string;
|
|
105
|
+
name: string | null;
|
|
106
|
+
port: number;
|
|
107
|
+
pid: number | null;
|
|
108
|
+
capability: string | null;
|
|
109
|
+
visibility: NimbusAppVisibility;
|
|
110
|
+
/** Browser-facing URL, built the way `ports.url` builds one; undefined when the deployment is not addressable. */
|
|
111
|
+
url: string | undefined;
|
|
112
|
+
}
|
|
113
|
+
export interface NimbusApp {
|
|
114
|
+
owner: string;
|
|
115
|
+
name: string | null;
|
|
116
|
+
port: number | null;
|
|
117
|
+
pid: number | null;
|
|
118
|
+
status: 'running' | 'starting' | 'stopped' | 'failed';
|
|
119
|
+
visibility: NimbusAppVisibility;
|
|
120
|
+
capability: string | null;
|
|
121
|
+
restart: NimbusRestartPolicy;
|
|
122
|
+
/** With status 'failed': what went wrong, e.g. `listened on 3000, owns 5173`. */
|
|
123
|
+
diagnostic: string | null;
|
|
124
|
+
url: string | undefined;
|
|
77
125
|
}
|
|
78
126
|
export interface NimbusExecResult {
|
|
79
127
|
command: string;
|
|
@@ -251,12 +299,49 @@ interface NimbusSessionStub {
|
|
|
251
299
|
}>;
|
|
252
300
|
_rpcProcessLogs(pid: number, options?: NimbusProcessLogsOptions): Promise<NimbusProcessLogsResult>;
|
|
253
301
|
_rpcListPorts(): Promise<NimbusPort[]>;
|
|
254
|
-
_rpcExposePort(port: number
|
|
302
|
+
_rpcExposePort(port: number, options?: {
|
|
303
|
+
visibility?: 'scoped' | 'public';
|
|
304
|
+
name?: string;
|
|
305
|
+
}): Promise<{
|
|
255
306
|
port: number;
|
|
256
307
|
listening: boolean;
|
|
257
308
|
pid: number | null;
|
|
258
309
|
registeredAt: number | null;
|
|
259
310
|
capability: string | null;
|
|
311
|
+
visibility?: 'scoped' | 'public';
|
|
312
|
+
owner?: string | null;
|
|
313
|
+
name?: string | null;
|
|
314
|
+
}>;
|
|
315
|
+
_rpcExposeApp(target: NimbusAppTarget, options?: {
|
|
316
|
+
visibility?: 'scoped' | 'public';
|
|
317
|
+
name?: string;
|
|
318
|
+
}): Promise<Omit<NimbusExposedApp, 'url'> & {
|
|
319
|
+
url: string | null;
|
|
320
|
+
}>;
|
|
321
|
+
_rpcListApps(): Promise<Array<Omit<NimbusApp, 'url'> & {
|
|
322
|
+
url: string | null;
|
|
323
|
+
}>>;
|
|
324
|
+
_rpcRotateLink(target: NimbusAppTarget): Promise<Omit<NimbusExposedApp, 'url'> & {
|
|
325
|
+
url: string | null;
|
|
326
|
+
}>;
|
|
327
|
+
_rpcRemoveApp(target: NimbusAppTarget): Promise<{
|
|
328
|
+
owner: string;
|
|
329
|
+
removed: boolean;
|
|
330
|
+
port: number | null;
|
|
331
|
+
}>;
|
|
332
|
+
_rpcEnsureDurableApp(input: {
|
|
333
|
+
owner: string;
|
|
334
|
+
preferredPort?: number;
|
|
335
|
+
visibility?: 'scoped' | 'public';
|
|
336
|
+
}): Promise<{
|
|
337
|
+
port: number;
|
|
338
|
+
capability: string | null;
|
|
339
|
+
visibility: 'scoped' | 'public';
|
|
340
|
+
}>;
|
|
341
|
+
_rpcRemoveDurableApp(owner: string): Promise<{
|
|
342
|
+
owner: string;
|
|
343
|
+
removed: boolean;
|
|
344
|
+
port: number | null;
|
|
260
345
|
}>;
|
|
261
346
|
_rpcUnexposePort(port: number): Promise<{
|
|
262
347
|
port: number;
|
|
@@ -386,20 +471,82 @@ export declare class NimbusSandbox {
|
|
|
386
471
|
};
|
|
387
472
|
ports: {
|
|
388
473
|
list: () => Promise<NimbusPort[]>;
|
|
389
|
-
|
|
474
|
+
/**
|
|
475
|
+
* Expose a port. When the port's occupant carries an identity (a node
|
|
476
|
+
* resident, a durable worker app) this is the same lazy reservation
|
|
477
|
+
* `apps.expose` makes and the result names the owner; a bare port —
|
|
478
|
+
* a dev server, a python resident — is written port-only as before.
|
|
479
|
+
*/
|
|
480
|
+
expose: (port: number, options?: {
|
|
481
|
+
visibility?: "scoped" | "public";
|
|
482
|
+
name?: string;
|
|
483
|
+
}) => Promise<{
|
|
390
484
|
url: string | undefined;
|
|
391
485
|
port: number;
|
|
392
486
|
listening: boolean;
|
|
393
487
|
pid: number | null;
|
|
394
488
|
registeredAt: number | null;
|
|
395
489
|
capability: string | null;
|
|
490
|
+
visibility?: "scoped" | "public";
|
|
491
|
+
owner?: string | null;
|
|
492
|
+
name?: string | null;
|
|
396
493
|
}>;
|
|
397
494
|
unexpose: (port: number) => Promise<{
|
|
398
495
|
port: number;
|
|
399
496
|
ok: boolean;
|
|
400
497
|
}>;
|
|
401
|
-
|
|
498
|
+
/**
|
|
499
|
+
* Reserve (or re-answer) a durable application's port: the capability it
|
|
500
|
+
* answers is minted here and survives every reset, so the URL it builds
|
|
501
|
+
* is the URL the application keeps.
|
|
502
|
+
*/
|
|
503
|
+
ensureDurableApp: (input: {
|
|
504
|
+
owner: string;
|
|
505
|
+
preferredPort?: number;
|
|
506
|
+
visibility?: "scoped" | "public";
|
|
507
|
+
}) => Promise<{
|
|
508
|
+
port: number;
|
|
509
|
+
capability: string | null;
|
|
510
|
+
visibility: "scoped" | "public";
|
|
511
|
+
}>;
|
|
512
|
+
/**
|
|
513
|
+
* End a durable application's contract: its launch is killed, the journal
|
|
514
|
+
* row purged, the reserved port released, the durable slot freed. Answers
|
|
515
|
+
* the owner, whether anything was removed, and the durable port that was
|
|
516
|
+
* released — null when no reservation existed.
|
|
517
|
+
*/
|
|
518
|
+
removeDurableApp: (owner: string) => Promise<{
|
|
519
|
+
owner: string;
|
|
520
|
+
removed: boolean;
|
|
521
|
+
port: number | null;
|
|
522
|
+
}>;
|
|
523
|
+
url: (port: number, options?: {
|
|
524
|
+
visibility?: "scoped" | "public";
|
|
525
|
+
capability?: string;
|
|
526
|
+
name?: string;
|
|
527
|
+
}) => string | undefined;
|
|
528
|
+
};
|
|
529
|
+
/**
|
|
530
|
+
* The application surface: every server is durable under its identity
|
|
531
|
+
* from the moment it is spawned; exposing it reserves its port for that
|
|
532
|
+
* identity, names it, and (when public) mints the capability its shared
|
|
533
|
+
* URL is built on. `ports.expose` is the port-addressed alias of
|
|
534
|
+
* `apps.expose`; the identity-addressed verbs live here.
|
|
535
|
+
*/
|
|
536
|
+
apps: {
|
|
537
|
+
list: () => Promise<NimbusApp[]>;
|
|
538
|
+
expose: (target: NimbusAppTarget, options?: {
|
|
539
|
+
visibility?: "scoped" | "public";
|
|
540
|
+
name?: string;
|
|
541
|
+
}) => Promise<NimbusExposedApp>;
|
|
542
|
+
rotateLink: (target: NimbusAppTarget) => Promise<NimbusExposedApp>;
|
|
543
|
+
remove: (target: NimbusAppTarget) => Promise<{
|
|
544
|
+
owner: string;
|
|
545
|
+
removed: boolean;
|
|
546
|
+
port: number | null;
|
|
547
|
+
}>;
|
|
402
548
|
};
|
|
549
|
+
private exposedApp;
|
|
403
550
|
tools(options?: {
|
|
404
551
|
namespace?: string;
|
|
405
552
|
kind?: string;
|
|
@@ -506,6 +653,9 @@ export declare class NimbusSandbox {
|
|
|
506
653
|
pid: number | null;
|
|
507
654
|
registeredAt: number | null;
|
|
508
655
|
capability: string | null;
|
|
656
|
+
visibility?: "scoped" | "public";
|
|
657
|
+
owner?: string | null;
|
|
658
|
+
name?: string | null;
|
|
509
659
|
}>;
|
|
510
660
|
};
|
|
511
661
|
unexposePort: {
|
|
@@ -519,6 +669,16 @@ export declare class NimbusSandbox {
|
|
|
519
669
|
listPorts: {
|
|
520
670
|
execute: () => Promise<NimbusPort[]>;
|
|
521
671
|
};
|
|
672
|
+
exposeApp: {
|
|
673
|
+
execute: (input: NimbusAppTarget | {
|
|
674
|
+
target: NimbusAppTarget;
|
|
675
|
+
visibility?: "scoped" | "public";
|
|
676
|
+
name?: string;
|
|
677
|
+
}) => Promise<NimbusExposedApp>;
|
|
678
|
+
};
|
|
679
|
+
listApps: {
|
|
680
|
+
execute: () => Promise<NimbusApp[]>;
|
|
681
|
+
};
|
|
522
682
|
installRuntime: {
|
|
523
683
|
execute: (spec: RuntimeSpec) => Promise<unknown>;
|
|
524
684
|
};
|
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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @nimbus-sh/sdk/sandbox - programmatic Nimbus sandbox handle.
|
|
3
3
|
*/
|
|
4
|
-
import { buildPreviewHost, isPreviewHostSafeSid, readPreviewHostSuffix, } from '@nimbus-sh/worker/preview-host';
|
|
4
|
+
import { buildPreviewHost, buildPublicPreviewHost, isPreviewHostSafeSid, readPreviewHostSuffix, } from '@nimbus-sh/worker/preview-host';
|
|
5
5
|
import { z } from 'zod/v4';
|
|
6
6
|
export class NimbusRemoteError extends Error {
|
|
7
7
|
status;
|
|
@@ -138,6 +138,40 @@ const ExposedPortSchema = z.object({
|
|
|
138
138
|
pid: z.number().nullable(),
|
|
139
139
|
registeredAt: z.number().nullable(),
|
|
140
140
|
capability: z.string().nullable(),
|
|
141
|
+
visibility: z.enum(['scoped', 'public']).optional(),
|
|
142
|
+
owner: z.string().nullable().optional(),
|
|
143
|
+
name: z.string().nullable().optional(),
|
|
144
|
+
});
|
|
145
|
+
const ExposedAppSchema = z.object({
|
|
146
|
+
owner: z.string(),
|
|
147
|
+
name: z.string().nullable(),
|
|
148
|
+
port: z.number(),
|
|
149
|
+
pid: z.number().nullable(),
|
|
150
|
+
capability: z.string().nullable(),
|
|
151
|
+
visibility: z.enum(['scoped', 'public']),
|
|
152
|
+
url: z.string().nullable(),
|
|
153
|
+
});
|
|
154
|
+
const AppSchema = z.object({
|
|
155
|
+
owner: z.string(),
|
|
156
|
+
name: z.string().nullable(),
|
|
157
|
+
port: z.number().nullable(),
|
|
158
|
+
pid: z.number().nullable(),
|
|
159
|
+
status: z.enum(['running', 'starting', 'stopped', 'failed']),
|
|
160
|
+
visibility: z.enum(['scoped', 'public']),
|
|
161
|
+
capability: z.string().nullable(),
|
|
162
|
+
restart: z.enum(['never', 'on-failure']),
|
|
163
|
+
diagnostic: z.string().nullable(),
|
|
164
|
+
url: z.string().nullable(),
|
|
165
|
+
});
|
|
166
|
+
const EnsureDurableAppSchema = z.object({
|
|
167
|
+
port: z.number(),
|
|
168
|
+
capability: z.string().nullable(),
|
|
169
|
+
visibility: z.enum(['scoped', 'public']),
|
|
170
|
+
});
|
|
171
|
+
const RemoveDurableAppSchema = z.object({
|
|
172
|
+
owner: z.string(),
|
|
173
|
+
removed: z.boolean(),
|
|
174
|
+
port: z.number().nullable(),
|
|
141
175
|
});
|
|
142
176
|
const UnexposedPortSchema = z.object({
|
|
143
177
|
port: z.number(),
|
|
@@ -276,7 +310,13 @@ export class NimbusSandbox {
|
|
|
276
310
|
_rpcSignalProcess: (pid, signal) => this.remoteRpc('signalProcess', [pid, signal], ProcessControlResultSchema),
|
|
277
311
|
_rpcProcessLogs: (pid, options) => this.remoteRpc('processLogs', [pid, options], ProcessLogsResultSchema),
|
|
278
312
|
_rpcListPorts: () => this.remoteRpc('listPorts', [], z.array(PortSchema)),
|
|
279
|
-
_rpcExposePort: (port) => this.remoteRpc('exposePort', [port], ExposedPortSchema),
|
|
313
|
+
_rpcExposePort: (port, options) => this.remoteRpc('exposePort', [port, options], ExposedPortSchema),
|
|
314
|
+
_rpcEnsureDurableApp: (input) => this.remoteRpc('ensureDurableApp', [input], EnsureDurableAppSchema),
|
|
315
|
+
_rpcRemoveDurableApp: (owner) => this.remoteRpc('removeDurableApp', [{ owner }], RemoveDurableAppSchema),
|
|
316
|
+
_rpcExposeApp: (target, options) => this.remoteRpc('exposeApp', [target, options], ExposedAppSchema),
|
|
317
|
+
_rpcListApps: () => this.remoteRpc('listApps', [], z.array(AppSchema)),
|
|
318
|
+
_rpcRotateLink: (target) => this.remoteRpc('rotateLink', [target], ExposedAppSchema),
|
|
319
|
+
_rpcRemoveApp: (target) => this.remoteRpc('removeApp', [target], RemoveDurableAppSchema),
|
|
280
320
|
_rpcUnexposePort: (port) => this.remoteRpc('unexposePort', [port], UnexposedPortSchema),
|
|
281
321
|
_rpcDestroy: (options) => this.remoteRpc('destroy', [options], DestroyResultSchema),
|
|
282
322
|
};
|
|
@@ -483,17 +523,94 @@ export class NimbusSandbox {
|
|
|
483
523
|
await this.ready();
|
|
484
524
|
return this.rpc(this.stub()._rpcListPorts());
|
|
485
525
|
},
|
|
486
|
-
|
|
526
|
+
/**
|
|
527
|
+
* Expose a port. When the port's occupant carries an identity (a node
|
|
528
|
+
* resident, a durable worker app) this is the same lazy reservation
|
|
529
|
+
* `apps.expose` makes and the result names the owner; a bare port —
|
|
530
|
+
* a dev server, a python resident — is written port-only as before.
|
|
531
|
+
*/
|
|
532
|
+
expose: async (port, options = {}) => {
|
|
487
533
|
await this.ready();
|
|
488
|
-
const result = await this.rpc(this.stub()._rpcExposePort(port));
|
|
489
|
-
return {
|
|
534
|
+
const result = await this.rpc(this.stub()._rpcExposePort(port, options));
|
|
535
|
+
return {
|
|
536
|
+
...result,
|
|
537
|
+
url: this.portUrl(port, {
|
|
538
|
+
visibility: result.visibility ?? 'scoped',
|
|
539
|
+
capability: result.capability ?? undefined,
|
|
540
|
+
name: result.name ?? undefined,
|
|
541
|
+
}),
|
|
542
|
+
};
|
|
490
543
|
},
|
|
491
544
|
unexpose: async (port) => {
|
|
492
545
|
await this.ready();
|
|
493
546
|
return this.rpc(this.stub()._rpcUnexposePort(port));
|
|
494
547
|
},
|
|
495
|
-
|
|
548
|
+
/**
|
|
549
|
+
* Reserve (or re-answer) a durable application's port: the capability it
|
|
550
|
+
* answers is minted here and survives every reset, so the URL it builds
|
|
551
|
+
* is the URL the application keeps.
|
|
552
|
+
*/
|
|
553
|
+
ensureDurableApp: async (input) => {
|
|
554
|
+
await this.ready();
|
|
555
|
+
return this.rpc(this.stub()._rpcEnsureDurableApp(input));
|
|
556
|
+
},
|
|
557
|
+
/**
|
|
558
|
+
* End a durable application's contract: its launch is killed, the journal
|
|
559
|
+
* row purged, the reserved port released, the durable slot freed. Answers
|
|
560
|
+
* the owner, whether anything was removed, and the durable port that was
|
|
561
|
+
* released — null when no reservation existed.
|
|
562
|
+
*/
|
|
563
|
+
removeDurableApp: async (owner) => {
|
|
564
|
+
await this.ready();
|
|
565
|
+
return this.rpc(this.stub()._rpcRemoveDurableApp(owner));
|
|
566
|
+
},
|
|
567
|
+
url: (port, options = {}) => this.portUrl(port, options),
|
|
496
568
|
};
|
|
569
|
+
/**
|
|
570
|
+
* The application surface: every server is durable under its identity
|
|
571
|
+
* from the moment it is spawned; exposing it reserves its port for that
|
|
572
|
+
* identity, names it, and (when public) mints the capability its shared
|
|
573
|
+
* URL is built on. `ports.expose` is the port-addressed alias of
|
|
574
|
+
* `apps.expose`; the identity-addressed verbs live here.
|
|
575
|
+
*/
|
|
576
|
+
apps = {
|
|
577
|
+
list: async () => {
|
|
578
|
+
await this.ready();
|
|
579
|
+
const apps = await this.rpc(this.stub()._rpcListApps());
|
|
580
|
+
return apps.map((app) => ({
|
|
581
|
+
...app,
|
|
582
|
+
url: app.port === null ? undefined : this.portUrl(app.port, {
|
|
583
|
+
visibility: app.visibility,
|
|
584
|
+
capability: app.capability ?? undefined,
|
|
585
|
+
name: app.name ?? undefined,
|
|
586
|
+
}) ?? app.url ?? undefined,
|
|
587
|
+
}));
|
|
588
|
+
},
|
|
589
|
+
expose: async (target, options = {}) => {
|
|
590
|
+
await this.ready();
|
|
591
|
+
const result = await this.rpc(this.stub()._rpcExposeApp(target, options));
|
|
592
|
+
return this.exposedApp(result);
|
|
593
|
+
},
|
|
594
|
+
rotateLink: async (target) => {
|
|
595
|
+
await this.ready();
|
|
596
|
+
const result = await this.rpc(this.stub()._rpcRotateLink(target));
|
|
597
|
+
return this.exposedApp(result);
|
|
598
|
+
},
|
|
599
|
+
remove: async (target) => {
|
|
600
|
+
await this.ready();
|
|
601
|
+
return this.rpc(this.stub()._rpcRemoveApp(target));
|
|
602
|
+
},
|
|
603
|
+
};
|
|
604
|
+
exposedApp(result) {
|
|
605
|
+
return {
|
|
606
|
+
...result,
|
|
607
|
+
url: this.portUrl(result.port, {
|
|
608
|
+
visibility: result.visibility,
|
|
609
|
+
capability: result.capability ?? undefined,
|
|
610
|
+
name: result.name ?? undefined,
|
|
611
|
+
}) ?? result.url ?? undefined,
|
|
612
|
+
};
|
|
613
|
+
}
|
|
497
614
|
tools(options = {}) {
|
|
498
615
|
const namespace = options.namespace ?? this.profile.tools?.namespace ?? 'nimbus';
|
|
499
616
|
const kind = options.kind ?? this.profile.tools?.kind ?? 'nimbus';
|
|
@@ -547,6 +664,10 @@ export class NimbusSandbox {
|
|
|
547
664
|
exposePort: { execute: (input) => this.ports.expose(typeof input === 'number' ? input : input.port) },
|
|
548
665
|
unexposePort: { execute: (input) => this.ports.unexpose(typeof input === 'number' ? input : input.port) },
|
|
549
666
|
listPorts: { execute: () => this.ports.list() },
|
|
667
|
+
exposeApp: { execute: (input) => typeof input === 'object' && input !== null && 'target' in input
|
|
668
|
+
? this.apps.expose(input.target, { visibility: input.visibility, name: input.name })
|
|
669
|
+
: this.apps.expose(input) },
|
|
670
|
+
listApps: { execute: () => this.apps.list() },
|
|
550
671
|
installRuntime: { execute: (spec) => this.runtimes.install(spec) },
|
|
551
672
|
listRuntimes: { execute: () => this.runtimes.list() },
|
|
552
673
|
},
|
|
@@ -613,20 +734,29 @@ export class NimbusSandbox {
|
|
|
613
734
|
* token for it at `GET /s/<id>/api/preview-url?port=<n>`, which is what the
|
|
614
735
|
* session shell opens and what an embedder should hand to a browser.
|
|
615
736
|
*/
|
|
616
|
-
portUrl(port) {
|
|
737
|
+
portUrl(port, options = {}) {
|
|
617
738
|
const hostSuffix = this.config.previewHostSuffix;
|
|
618
739
|
if (hostSuffix && !this.profile.preview?.pathStyle && isPreviewHostSafeSid(this.id)) {
|
|
619
|
-
|
|
740
|
+
// The name stands where the port stands when the app has one. The
|
|
741
|
+
// public form names its bearer in the label: a public port with a
|
|
742
|
+
// capability builds the unauthenticated host, anything else keeps the
|
|
743
|
+
// session-attached one.
|
|
744
|
+
const label = options.name ?? port;
|
|
745
|
+
if (options.visibility === 'public' && options.capability !== undefined) {
|
|
746
|
+
return `https://${buildPublicPreviewHost(this.id, label, options.capability, hostSuffix)}/`;
|
|
747
|
+
}
|
|
748
|
+
return `https://${buildPreviewHost(this.id, label, hostSuffix)}/`;
|
|
620
749
|
}
|
|
750
|
+
const door = options.name !== undefined ? `/app/${options.name}/` : `/port/${port}/`;
|
|
621
751
|
const explicit = this.profile.preview?.baseUrl;
|
|
622
752
|
if (explicit) {
|
|
623
753
|
const base = trimTrailingSlashes(explicit.replace('{sessionId}', encodeURIComponent(this.id)));
|
|
624
|
-
return `${base}
|
|
754
|
+
return `${base}${door}`;
|
|
625
755
|
}
|
|
626
756
|
const endpoint = this.config.endpoint ? trimTrailingSlashes(this.config.endpoint) : '';
|
|
627
757
|
if (!endpoint)
|
|
628
758
|
return undefined;
|
|
629
|
-
return `${endpoint}/s/${encodeURIComponent(this.id)}
|
|
759
|
+
return `${endpoint}/s/${encodeURIComponent(this.id)}${door}`;
|
|
630
760
|
}
|
|
631
761
|
async rpc(promise) {
|
|
632
762
|
const value = await promise;
|
package/dist/worker.d.ts
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
* should import through the SDK so the interactive app and programmatic
|
|
7
7
|
* sandbox APIs share one public package surface.
|
|
8
8
|
*/
|
|
9
|
-
export { NimbusSession, SupervisorRPC, NimbusAssetsRPC, NimbusLoaderRPC, NimbusLoadedWorker, NimbusLoadedEntrypoint, NimbusDurableObjectNamespace, NimbusDOStub, CirrusHmrRPC, base64Utf8, base64Url, base64UrlDecode, clearNimbusAgentOAuthCookie, createNimbusHandler, createNimbusAgentOAuthCookie, decodeJsonBase64Url, encodeJsonBase64Url, fetchNimbusCloudflareAccounts, fetchNimbusCloudflareUserInfo, generateSessionId, isNimbusCloudflareAccountId, isNimbusTenantSegment, isPreviewHostRequest, isValidSessionId, issueNimbusToken, loadNimbusAgentOAuthFromRequest, nimbusAgentAuthCookiePath, nimbusAgentRouteContext, NIMBUS_AGENT_AUTH_COOKIE, NIMBUS_AGENT_AUTH_COOKIE_PURPOSE, NIMBUS_AGENT_AUTH_COOKIE_TTL_SECONDS, NIMBUS_CF_OAUTH_AUTH_URL, NIMBUS_CF_OAUTH_TOKEN_URL, NIMBUS_CF_OAUTH_USERINFO_URL, NIMBUS_CLOUDFLARE_API, pkceChallenge, randomBase64Url, readNimbusAgentCookieSecret, readNimbusCookie, requestNimbusCloudflareOAuthToken, sealJson, serializeNimbusCookie, sha256Base64Url, unsealJson, verifyNimbusToken, NimbusAuthError, } from '@nimbus-sh/worker';
|
|
9
|
+
export { NimbusSession, NimbusPublicDirectory, SupervisorRPC, NimbusAssetsRPC, NimbusLoaderRPC, NimbusLoadedWorker, NimbusLoadedEntrypoint, NimbusDurableObjectNamespace, NimbusDOStub, CirrusHmrRPC, base64Utf8, base64Url, base64UrlDecode, clearNimbusAgentOAuthCookie, createNimbusHandler, createNimbusAgentOAuthCookie, decodeJsonBase64Url, encodeJsonBase64Url, fetchNimbusCloudflareAccounts, fetchNimbusCloudflareUserInfo, generateSessionId, isNimbusCloudflareAccountId, isNimbusTenantSegment, isPreviewHostRequest, isValidSessionId, issueNimbusToken, loadNimbusAgentOAuthFromRequest, nimbusAgentAuthCookiePath, nimbusAgentRouteContext, NIMBUS_AGENT_AUTH_COOKIE, NIMBUS_AGENT_AUTH_COOKIE_PURPOSE, NIMBUS_AGENT_AUTH_COOKIE_TTL_SECONDS, NIMBUS_CF_OAUTH_AUTH_URL, NIMBUS_CF_OAUTH_TOKEN_URL, NIMBUS_CF_OAUTH_USERINFO_URL, NIMBUS_CLOUDFLARE_API, pkceChallenge, randomBase64Url, readNimbusAgentCookieSecret, readNimbusCookie, requestNimbusCloudflareOAuthToken, sealJson, serializeNimbusCookie, sha256Base64Url, unsealJson, verifyNimbusToken, NimbusAuthError, } from '@nimbus-sh/worker';
|
|
10
10
|
export type { NimbusHandler, NimbusHooks, NimbusHookContext, CustomRoutes, CreateNimbusHandlerOptions, NimbusRemoteApiConfig, NimbusRuntimePolicy, NimbusSandboxProfile, NimbusSdkConfig, NimbusSdkRouterConfig, AuthMode, NimbusAuthConfig, NimbusAuthEnv, NimbusAgentOAuthCookie, NimbusCloudflareAccount, NimbusTokenClaims, VerifiedNimbusToken, } from '@nimbus-sh/worker';
|
|
11
11
|
//# sourceMappingURL=worker.d.ts.map
|
package/dist/worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,SAAS,EACT,eAAe,EACf,2BAA2B,EAC3B,mBAAmB,EACnB,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAC7B,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,gCAAgC,EAChC,oCAAoC,EACpC,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,iCAAiC,EACjC,QAAQ,EACR,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,SAAS,EACT,eAAe,EACf,2BAA2B,EAC3B,mBAAmB,EACnB,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAC7B,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,gCAAgC,EAChC,oCAAoC,EACpC,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,iCAAiC,EACjC,QAAQ,EACR,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC"}
|
package/dist/worker.js
CHANGED
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
* should import through the SDK so the interactive app and programmatic
|
|
7
7
|
* sandbox APIs share one public package surface.
|
|
8
8
|
*/
|
|
9
|
-
export { NimbusSession, SupervisorRPC, NimbusAssetsRPC, NimbusLoaderRPC, NimbusLoadedWorker, NimbusLoadedEntrypoint, NimbusDurableObjectNamespace, NimbusDOStub, CirrusHmrRPC, base64Utf8, base64Url, base64UrlDecode, clearNimbusAgentOAuthCookie, createNimbusHandler, createNimbusAgentOAuthCookie, decodeJsonBase64Url, encodeJsonBase64Url, fetchNimbusCloudflareAccounts, fetchNimbusCloudflareUserInfo, generateSessionId, isNimbusCloudflareAccountId, isNimbusTenantSegment, isPreviewHostRequest, isValidSessionId, issueNimbusToken, loadNimbusAgentOAuthFromRequest, nimbusAgentAuthCookiePath, nimbusAgentRouteContext, NIMBUS_AGENT_AUTH_COOKIE, NIMBUS_AGENT_AUTH_COOKIE_PURPOSE, NIMBUS_AGENT_AUTH_COOKIE_TTL_SECONDS, NIMBUS_CF_OAUTH_AUTH_URL, NIMBUS_CF_OAUTH_TOKEN_URL, NIMBUS_CF_OAUTH_USERINFO_URL, NIMBUS_CLOUDFLARE_API, pkceChallenge, randomBase64Url, readNimbusAgentCookieSecret, readNimbusCookie, requestNimbusCloudflareOAuthToken, sealJson, serializeNimbusCookie, sha256Base64Url, unsealJson, verifyNimbusToken, NimbusAuthError, } from '@nimbus-sh/worker';
|
|
9
|
+
export { NimbusSession, NimbusPublicDirectory, SupervisorRPC, NimbusAssetsRPC, NimbusLoaderRPC, NimbusLoadedWorker, NimbusLoadedEntrypoint, NimbusDurableObjectNamespace, NimbusDOStub, CirrusHmrRPC, base64Utf8, base64Url, base64UrlDecode, clearNimbusAgentOAuthCookie, createNimbusHandler, createNimbusAgentOAuthCookie, decodeJsonBase64Url, encodeJsonBase64Url, fetchNimbusCloudflareAccounts, fetchNimbusCloudflareUserInfo, generateSessionId, isNimbusCloudflareAccountId, isNimbusTenantSegment, isPreviewHostRequest, isValidSessionId, issueNimbusToken, loadNimbusAgentOAuthFromRequest, nimbusAgentAuthCookiePath, nimbusAgentRouteContext, NIMBUS_AGENT_AUTH_COOKIE, NIMBUS_AGENT_AUTH_COOKIE_PURPOSE, NIMBUS_AGENT_AUTH_COOKIE_TTL_SECONDS, NIMBUS_CF_OAUTH_AUTH_URL, NIMBUS_CF_OAUTH_TOKEN_URL, NIMBUS_CF_OAUTH_USERINFO_URL, NIMBUS_CLOUDFLARE_API, pkceChallenge, randomBase64Url, readNimbusAgentCookieSecret, readNimbusCookie, requestNimbusCloudflareOAuthToken, sealJson, serializeNimbusCookie, sha256Base64Url, unsealJson, verifyNimbusToken, NimbusAuthError, } from '@nimbus-sh/worker';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nimbus-sh/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.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.8.0",
|
|
76
|
+
"@nimbus-sh/worker": "^0.6.0"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"@cloudflare/workers-types": "^4.20250327.0",
|
|
80
|
-
"@nimbus-sh/worker": "^0.
|
|
80
|
+
"@nimbus-sh/worker": "^0.6.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.8.0"
|
|
89
89
|
}
|
|
90
90
|
}
|