@nimbus-sh/sdk 0.5.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 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
- const port = await box.ports.expose(3000);
236
- // port.url => https://my-nimbus.workers.dev/s/<session-or-job-id>/port/3000/
237
- await box.ports.unexpose(3000);
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`), `port.url` takes the hostname
242
- form `https://<port>--<session-id>.<suffix>/` instead. The
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`, `installRuntime`, and
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
@@ -84,6 +84,30 @@ export interface NimbusExecOptions {
84
84
  }
85
85
  export type NimbusRestartPolicy = 'never' | 'on-failure';
86
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
+ }
87
111
  /**
88
112
  * An application target: a port, a pid, a name, or an owner — every
89
113
  * `apps.*` verb takes one. A bare number is a port when something listens
@@ -249,23 +273,23 @@ interface NimbusSessionStub {
249
273
  _rpcExec(command: string, options?: Record<string, unknown>): Promise<NimbusExecResult>;
250
274
  _rpcStartProcess(command: string, options?: Record<string, unknown>): Promise<NimbusStartResult>;
251
275
  _rpcRunCode(code: string, options?: Record<string, unknown>): Promise<NimbusExecResult>;
252
- _rpcReadFile(path: string): Promise<string | null>;
253
- _rpcReadFileBytes(path: string): Promise<Uint8Array | null>;
254
- _rpcWriteFile(path: string, content: string | Uint8Array): Promise<void>;
255
- _rpcStat(path: string): Promise<NimbusFileStat | null>;
256
- _rpcLstat(path: string): Promise<NimbusFileStat | null>;
257
- _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<{
258
282
  name: string;
259
283
  type: string;
260
284
  }[]>;
261
- _rpcRename(from: string, to: string): Promise<void>;
262
- _rpcChmod(path: string, mode: number): Promise<void>;
263
- _rpcFsReadRange(path: string, offset: number, length: number): Promise<Uint8Array | null>;
264
- _rpcExists(path: string): Promise<boolean>;
265
- _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>;
266
290
  _rpcDeleteFile(path: string, options?: {
267
291
  recursive?: boolean;
268
- }): Promise<void>;
292
+ }, cred?: VfsCred): Promise<void>;
269
293
  _rpcInstallRuntime(spec: string, options?: {
270
294
  force?: boolean;
271
295
  }): Promise<unknown>;
@@ -409,27 +433,19 @@ export declare class NimbusSandbox {
409
433
  install?: 'never' | 'ifMissing';
410
434
  }): Promise<NimbusExecResult>;
411
435
  destroy(options?: NimbusDestroyOptions): Promise<NimbusDestroyResult>;
412
- files: {
413
- read: (path: string) => Promise<string | null>;
414
- readBytes: (path: string) => Promise<Uint8Array | null>;
415
- write: (path: string, content: string | Uint8Array) => Promise<void>;
416
- stat: (path: string) => Promise<NimbusFileStat | null>;
417
- /** stat without following a symlink leaf. */
418
- lstat: (path: string) => Promise<NimbusFileStat | null>;
419
- rename: (from: string, to: string) => Promise<void>;
420
- chmod: (path: string, mode: number) => Promise<void>;
421
- /** Read `length` bytes at `offset` without materializing the whole file. */
422
- readRange: (path: string, offset: number, length: number) => Promise<Uint8Array | null>;
423
- list: (path?: string) => Promise<{
424
- name: string;
425
- type: string;
426
- }[]>;
427
- mkdir: (path: string) => Promise<void>;
428
- exists: (path: string) => Promise<boolean>;
429
- delete: (path: string, options?: {
430
- recursive?: boolean;
431
- }) => Promise<void>;
432
- };
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;
433
449
  runtimes: {
434
450
  available: () => Promise<NimbusAvailableRuntime[]>;
435
451
  installed: () => Promise<NimbusRuntimeSummary[]>;
@@ -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;
@@ -282,23 +286,26 @@ export class NimbusSandbox {
282
286
  _rpcExec: (command, options) => this.remoteRpc('exec', [command, options], ExecResultSchema),
283
287
  _rpcStartProcess: (command, options) => this.remoteRpc('startProcess', [command, options], StartResultSchema),
284
288
  _rpcRunCode: (code, options) => this.remoteRpc('runCode', [code, options], ExecResultSchema),
285
- _rpcReadFile: (path) => this.remoteRpc('readFile', [path], StringOrNullSchema),
286
- _rpcReadFileBytes: (path) => this.remoteRpc('readFileBytes', [path], Uint8ArrayOrNullSchema),
287
- _rpcWriteFile: async (path, content) => {
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) => {
288
295
  // The byte count is the wire contract but not part of the public
289
296
  // `files.write` surface, so it is validated and dropped. Declaring
290
297
  // this `undefined` made every remote write throw after succeeding.
291
- await this.remoteRpc('writeFile', [path, content], WriteFileResultSchema);
298
+ await this.remoteRpc('writeFile', [path, content, ...fileWireOptions(cred)], WriteFileResultSchema);
292
299
  },
293
- _rpcStat: (path) => this.remoteRpc('stat', [path], FileStatSchema.nullable()),
294
- _rpcLstat: (path) => this.remoteRpc('lstat', [path], FileStatSchema.nullable()),
295
- _rpcRename: (from, to) => this.remoteRpc('rename', [from, to], UndefinedResultSchema),
296
- _rpcChmod: (path, mode) => this.remoteRpc('chmod', [path, mode], UndefinedResultSchema),
297
- _rpcFsReadRange: (path, offset, length) => this.remoteRpc('readRange', [path, offset, length], Uint8ArrayOrNullSchema),
298
- _rpcReaddir: (path) => this.remoteRpc('readdir', [path], z.array(DirectoryEntrySchema)),
299
- _rpcExists: (path) => this.remoteRpc('exists', [path], BooleanResultSchema),
300
- _rpcMkdir: (path) => this.remoteRpc('mkdir', [path], UndefinedResultSchema),
301
- _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),
302
309
  _rpcInstallRuntime: (spec, options) => this.remoteRpc('installRuntime', [spec, options], UnknownResultSchema),
303
310
  _rpcEnsureRuntimes: (specs, options) => this.remoteRpc('ensureRuntimes', [specs, options], UnknownResultSchema),
304
311
  _rpcListRuntimes: () => this.remoteRpc('listRuntimes', [], RuntimeListSchema),
@@ -407,58 +414,73 @@ export class NimbusSandbox {
407
414
  this.readyPromise = null;
408
415
  return this.rpc(this.stub()._rpcDestroy(options));
409
416
  }
410
- files = {
411
- read: async (path) => {
412
- await this.ready();
413
- return this.rpc(this.stub()._rpcReadFile(path));
414
- },
415
- readBytes: async (path) => {
416
- await this.ready();
417
- return this.rpc(this.stub()._rpcReadFileBytes(path));
418
- },
419
- write: async (path, content) => {
420
- await this.ready();
421
- return this.rpc(this.stub()._rpcWriteFile(path, content));
422
- },
423
- stat: async (path) => {
424
- await this.ready();
425
- return this.rpc(this.stub()._rpcStat(path));
426
- },
427
- /** stat without following a symlink leaf. */
428
- lstat: async (path) => {
429
- await this.ready();
430
- return this.rpc(this.stub()._rpcLstat(path));
431
- },
432
- rename: async (from, to) => {
433
- await this.ready();
434
- return this.rpc(this.stub()._rpcRename(from, to));
435
- },
436
- chmod: async (path, mode) => {
437
- await this.ready();
438
- return this.rpc(this.stub()._rpcChmod(path, mode));
439
- },
440
- /** Read `length` bytes at `offset` without materializing the whole file. */
441
- readRange: async (path, offset, length) => {
442
- await this.ready();
443
- return this.rpc(this.stub()._rpcFsReadRange(path, offset, length));
444
- },
445
- list: async (path = this.root) => {
446
- await this.ready();
447
- return this.rpc(this.stub()._rpcReaddir(path));
448
- },
449
- mkdir: async (path) => {
450
- await this.ready();
451
- return this.rpc(this.stub()._rpcMkdir(path));
452
- },
453
- exists: async (path) => {
454
- await this.ready();
455
- return this.rpc(this.stub()._rpcExists(path));
456
- },
457
- delete: async (path, options = {}) => {
458
- await this.ready();
459
- return this.rpc(this.stub()._rpcDeleteFile(path, options));
460
- },
461
- };
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
+ }
462
484
  runtimes = {
463
485
  available: async () => {
464
486
  await this.ready();
@@ -701,6 +723,13 @@ export class NimbusSandbox {
701
723
  }
702
724
  execOptions(options) {
703
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
+ }
704
733
  if (normalized.shellId) {
705
734
  // A named shell owns its cwd, so defaulting one here would reset it on
706
735
  // every call. The sandbox root is only where a NEW shell starts.
@@ -900,6 +929,30 @@ function trimTrailingSlashes(value) {
900
929
  end--;
901
930
  return value.slice(0, end);
902
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
+ }
903
956
  function disposeSdkRpcResult(value) {
904
957
  if ((typeof value !== 'object' && typeof value !== 'function') || value === null)
905
958
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nimbus-sh/sdk",
3
- "version": "0.5.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.8.0",
76
- "@nimbus-sh/worker": "^0.6.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.6.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.8.0"
88
+ "@nimbus-sh/core": "^0.9.0"
89
89
  }
90
90
  }