@nimbus-sh/sdk 0.1.3 → 0.1.5

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
@@ -72,6 +72,15 @@ export default createNimbusHandler({
72
72
  });
73
73
  ```
74
74
 
75
+ The bundled session UI includes an Agent surface in the editor workspace.
76
+ Configure it with Worker vars
77
+ `NIMBUS_CF_OAUTH_CLIENT_ID`, `NIMBUS_CF_OAUTH_SCOPES`,
78
+ `NIMBUS_AGENT_MODEL`, `NIMBUS_AGENT_GATEWAY_ID`, and the secrets
79
+ `NIMBUS_AGENT_COOKIE_SECRET` or `NIMBUS_CLOUDFLARE_API_TOKEN` when you want
80
+ Cloudflare OAuth or owner-token Workers AI access. User OAuth uses
81
+ Authorization Code + PKCE and encrypted browser cookies; Nimbus does not store
82
+ user OAuth tokens in Durable Object storage.
83
+
75
84
  ## Programmatic sandbox quickstart
76
85
 
77
86
  The same sandbox handle API works in two modes:
@@ -152,6 +161,28 @@ Worker verifies the JWT, enforces `sid` pins and `sandbox:use` scope, applies
152
161
  the configured runtime policy, and delegates to the same `NimbusSession` RPC
153
162
  methods used by `Nimbus.fromEnv()`.
154
163
 
164
+ ## Flue connector
165
+
166
+ Use `@nimbus-sh/sdk/flue` when an agent runtime expects Flue's sandbox
167
+ provider contract:
168
+
169
+ ```ts
170
+ import { Nimbus } from '@nimbus-sh/sdk/sandbox';
171
+ import { nimbusFlue } from '@nimbus-sh/sdk/flue';
172
+
173
+ const box = Nimbus.fromEnv(env, nimbusConfig).sandbox('job-123');
174
+ await box.ready();
175
+
176
+ const factory = nimbusFlue(box);
177
+ const sessionEnv = await factory.createSessionEnv({
178
+ id: 'job-123',
179
+ cwd: '/home/user',
180
+ });
181
+
182
+ await sessionEnv.writeFile('/home/user/main.py', 'print(2 + 2)\n');
183
+ const result = await sessionEnv.exec('python /home/user/main.py');
184
+ ```
185
+
155
186
  ## Sandbox handle API
156
187
 
157
188
  ```ts
@@ -174,6 +205,7 @@ await box.runCode('print(2 + 2)', { language: 'python', install: 'ifMissing' });
174
205
  await box.files.write('/home/user/app/a.txt', 'hello');
175
206
  await box.files.read('/home/user/app/a.txt');
176
207
  await box.files.list('/home/user/app');
208
+ await box.files.stat('/home/user/app/a.txt');
177
209
  await box.files.delete('/home/user/app/a.txt');
178
210
 
179
211
  await box.runtimes.available();
package/dist/flue.d.ts ADDED
@@ -0,0 +1,93 @@
1
+ /**
2
+ * @nimbus-sh/sdk/flue - Flue sandbox connector for Nimbus sandboxes.
3
+ *
4
+ * Flue owns the agent harness. Nimbus owns the sandbox. This adapter maps a
5
+ * `NimbusSandbox` handle to Flue's `SandboxFactory`/`SandboxApi` contract
6
+ * without making `@flue/runtime` a hard dependency of the core SDK.
7
+ */
8
+ import type { NimbusSandbox } from './sandbox.js';
9
+ export interface NimbusFlueFileStat {
10
+ isFile: boolean;
11
+ isDirectory: boolean;
12
+ isSymbolicLink: boolean;
13
+ size: number;
14
+ mtime: Date;
15
+ }
16
+ export interface NimbusFlueSessionEnv {
17
+ exec(command: string, options?: NimbusFlueExecOptions): Promise<NimbusFlueShellResult>;
18
+ readFile(path: string): Promise<string>;
19
+ readFileBuffer(path: string): Promise<Uint8Array>;
20
+ writeFile(path: string, content: string | Uint8Array): Promise<void>;
21
+ stat(path: string): Promise<NimbusFlueFileStat>;
22
+ readdir(path: string): Promise<string[]>;
23
+ exists(path: string): Promise<boolean>;
24
+ mkdir(path: string, options?: {
25
+ recursive?: boolean;
26
+ }): Promise<void>;
27
+ rm(path: string, options?: {
28
+ recursive?: boolean;
29
+ force?: boolean;
30
+ }): Promise<void>;
31
+ cwd: string;
32
+ resolvePath(path: string): string;
33
+ }
34
+ export interface NimbusFlueShellResult {
35
+ stdout: string;
36
+ stderr: string;
37
+ exitCode: number;
38
+ }
39
+ export interface NimbusFlueExecOptions {
40
+ cwd?: string;
41
+ env?: Record<string, string>;
42
+ timeout?: number;
43
+ signal?: AbortSignal;
44
+ }
45
+ export interface NimbusFlueSandboxApi {
46
+ readFile(path: string): Promise<string>;
47
+ readFileBuffer(path: string): Promise<Uint8Array>;
48
+ writeFile(path: string, content: string | Uint8Array): Promise<void>;
49
+ stat(path: string): Promise<NimbusFlueFileStat>;
50
+ readdir(path: string): Promise<string[]>;
51
+ exists(path: string): Promise<boolean>;
52
+ mkdir(path: string, options?: {
53
+ recursive?: boolean;
54
+ }): Promise<void>;
55
+ rm(path: string, options?: {
56
+ recursive?: boolean;
57
+ force?: boolean;
58
+ }): Promise<void>;
59
+ exec(command: string, options?: NimbusFlueExecOptions): Promise<NimbusFlueShellResult>;
60
+ }
61
+ export interface NimbusFlueRuntime<SessionEnv = NimbusFlueSessionEnv> {
62
+ createSandboxSessionEnv(api: NimbusFlueSandboxApi, cwd: string): SessionEnv;
63
+ }
64
+ export interface NimbusFlueFactory<SessionEnv = NimbusFlueSessionEnv> {
65
+ createSessionEnv(options: {
66
+ id: string;
67
+ cwd?: string;
68
+ }): Promise<SessionEnv>;
69
+ }
70
+ export interface NimbusFlueOptions<SessionEnv = NimbusFlueSessionEnv> {
71
+ cwd?: string;
72
+ runtime?: NimbusFlueRuntime<SessionEnv>;
73
+ }
74
+ export declare function nimbusFlue<SessionEnv = NimbusFlueSessionEnv>(sandbox: NimbusSandbox, options?: NimbusFlueOptions<SessionEnv>): NimbusFlueFactory<SessionEnv>;
75
+ export declare class NimbusFlueApi implements NimbusFlueSandboxApi {
76
+ private readonly sandbox;
77
+ constructor(sandbox: NimbusSandbox);
78
+ readFile(path: string): Promise<string>;
79
+ readFileBuffer(path: string): Promise<Uint8Array>;
80
+ writeFile(path: string, content: string | Uint8Array): Promise<void>;
81
+ stat(path: string): Promise<NimbusFlueFileStat>;
82
+ readdir(path: string): Promise<string[]>;
83
+ exists(path: string): Promise<boolean>;
84
+ mkdir(path: string, _options?: {
85
+ recursive?: boolean;
86
+ }): Promise<void>;
87
+ rm(path: string, options?: {
88
+ recursive?: boolean;
89
+ force?: boolean;
90
+ }): Promise<void>;
91
+ exec(command: string, options?: NimbusFlueExecOptions): Promise<NimbusFlueShellResult>;
92
+ }
93
+ //# sourceMappingURL=flue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flue.d.ts","sourceRoot":"","sources":["../src/flue.ts"],"names":[],"mappings":"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"}
package/dist/flue.js ADDED
@@ -0,0 +1,112 @@
1
+ /**
2
+ * @nimbus-sh/sdk/flue - Flue sandbox connector for Nimbus sandboxes.
3
+ *
4
+ * Flue owns the agent harness. Nimbus owns the sandbox. This adapter maps a
5
+ * `NimbusSandbox` handle to Flue's `SandboxFactory`/`SandboxApi` contract
6
+ * without making `@flue/runtime` a hard dependency of the core SDK.
7
+ */
8
+ export function nimbusFlue(sandbox, options = {}) {
9
+ return {
10
+ async createSessionEnv({ cwd }) {
11
+ const runtime = options.runtime ?? await loadFlueRuntime();
12
+ return runtime.createSandboxSessionEnv(new NimbusFlueApi(sandbox), cwd ?? options.cwd ?? '/home/user');
13
+ },
14
+ };
15
+ }
16
+ export class NimbusFlueApi {
17
+ sandbox;
18
+ constructor(sandbox) {
19
+ this.sandbox = sandbox;
20
+ }
21
+ async readFile(path) {
22
+ const content = await this.sandbox.files.read(path);
23
+ if (content == null)
24
+ throw enoent(path);
25
+ return content;
26
+ }
27
+ async readFileBuffer(path) {
28
+ const content = await this.sandbox.files.readBytes(path);
29
+ if (content == null)
30
+ throw enoent(path);
31
+ return content;
32
+ }
33
+ async writeFile(path, content) {
34
+ await this.sandbox.files.write(path, content);
35
+ }
36
+ async stat(path) {
37
+ const stat = await this.sandbox.files.stat(path);
38
+ if (!stat)
39
+ throw enoent(path);
40
+ return toFlueStat(stat);
41
+ }
42
+ async readdir(path) {
43
+ const entries = await this.sandbox.files.list(path);
44
+ return entries.map((entry) => entry.name);
45
+ }
46
+ async exists(path) {
47
+ return this.sandbox.files.exists(path);
48
+ }
49
+ async mkdir(path, _options = {}) {
50
+ await this.sandbox.files.mkdir(path);
51
+ }
52
+ async rm(path, options = {}) {
53
+ if (options.force && !(await this.sandbox.files.exists(path)))
54
+ return;
55
+ await this.sandbox.files.delete(path, { recursive: options.recursive });
56
+ }
57
+ async exec(command, options = {}) {
58
+ const result = await this.sandbox.exec(command, {
59
+ cwd: options.cwd,
60
+ env: options.env,
61
+ timeoutMs: secondsToMilliseconds(options.timeout),
62
+ });
63
+ if (options.signal?.aborted)
64
+ throw abortError(options.signal);
65
+ return toShellResult(result);
66
+ }
67
+ }
68
+ async function loadFlueRuntime() {
69
+ try {
70
+ const specifier = '@flue/runtime';
71
+ const runtime = await import(specifier);
72
+ if (typeof runtime.createSandboxSessionEnv === 'function') {
73
+ return runtime;
74
+ }
75
+ }
76
+ catch {
77
+ // Error below gives callers the exact integration action.
78
+ }
79
+ throw new Error('nimbusFlue requires @flue/runtime. Install Flue or pass { runtime: { createSandboxSessionEnv } }.');
80
+ }
81
+ function toFlueStat(stat) {
82
+ const type = String(stat.type);
83
+ return {
84
+ isFile: type === 'file',
85
+ isDirectory: type === 'directory',
86
+ isSymbolicLink: false,
87
+ size: Number(stat.size) || 0,
88
+ mtime: new Date(Number(stat.mtime) || Date.now()),
89
+ };
90
+ }
91
+ function toShellResult(result) {
92
+ return {
93
+ stdout: result.stdout,
94
+ stderr: result.stderr,
95
+ exitCode: result.exitCode,
96
+ };
97
+ }
98
+ function secondsToMilliseconds(timeout) {
99
+ if (typeof timeout !== 'number' || !Number.isFinite(timeout) || timeout <= 0)
100
+ return undefined;
101
+ return Math.max(1, Math.round(timeout * 1000));
102
+ }
103
+ function enoent(path) {
104
+ const error = new Error(`ENOENT: no such file or directory, '${path}'`);
105
+ error.code = 'ENOENT';
106
+ return error;
107
+ }
108
+ function abortError(signal) {
109
+ return signal.reason instanceof Error
110
+ ? signal.reason
111
+ : new DOMException('The operation was aborted', 'AbortError');
112
+ }
package/dist/index.d.ts CHANGED
@@ -26,4 +26,5 @@ export * from './token.js';
26
26
  export * from './errors.js';
27
27
  export * from './session.js';
28
28
  export * from './sandbox.js';
29
+ export * from './flue.js';
29
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -26,3 +26,4 @@ export * from './token.js';
26
26
  export * from './errors.js';
27
27
  export * from './session.js';
28
28
  export * from './sandbox.js';
29
+ export * from './flue.js';
package/dist/sandbox.d.ts CHANGED
@@ -64,6 +64,15 @@ export interface NimbusExecResult {
64
64
  duration: number;
65
65
  timestamp: number;
66
66
  }
67
+ export interface NimbusDestroyOptions {
68
+ reason?: string;
69
+ }
70
+ export interface NimbusDestroyResult {
71
+ ok: true;
72
+ killed: number;
73
+ destroyedAt: number;
74
+ reason: string | null;
75
+ }
67
76
  export interface NimbusStartResult extends NimbusExecResult {
68
77
  pid: number | null;
69
78
  process: NimbusProcess | null;
@@ -85,6 +94,13 @@ export interface NimbusPort {
85
94
  pid: number;
86
95
  registeredAt: number;
87
96
  }
97
+ export interface NimbusFileStat {
98
+ type: 'file' | 'directory' | string;
99
+ size: number;
100
+ ctime?: number;
101
+ mtime: number;
102
+ mode: number;
103
+ }
88
104
  export interface NimbusRuntimeSummary {
89
105
  name: string;
90
106
  version: string;
@@ -154,10 +170,12 @@ export declare class NimbusSandbox {
154
170
  language?: 'javascript' | 'typescript' | 'python' | 'ruby' | 'shell';
155
171
  install?: 'never' | 'ifMissing';
156
172
  }): Promise<NimbusExecResult>;
173
+ destroy(options?: NimbusDestroyOptions): Promise<NimbusDestroyResult>;
157
174
  files: {
158
175
  read: (path: string) => Promise<string | null>;
159
176
  readBytes: (path: string) => Promise<Uint8Array | null>;
160
177
  write: (path: string, content: string | Uint8Array) => Promise<void>;
178
+ stat: (path: string) => Promise<NimbusFileStat | null>;
161
179
  list: (path?: string) => Promise<{
162
180
  name: string;
163
181
  type: string;
@@ -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
@@ -101,6 +101,7 @@ export class NimbusSandbox {
101
101
  _rpcReadFile: (path) => this.remoteRpc('readFile', [path]),
102
102
  _rpcReadFileBytes: (path) => this.remoteRpc('readFileBytes', [path]),
103
103
  _rpcWriteFile: (path, content) => this.remoteRpc('writeFile', [path, content]),
104
+ _rpcStat: (path) => this.remoteRpc('stat', [path]),
104
105
  _rpcReaddir: (path) => this.remoteRpc('readdir', [path]),
105
106
  _rpcExists: (path) => this.remoteRpc('exists', [path]),
106
107
  _rpcMkdir: (path) => this.remoteRpc('mkdir', [path]),
@@ -114,6 +115,7 @@ export class NimbusSandbox {
114
115
  _rpcListPorts: () => this.remoteRpc('listPorts', []),
115
116
  _rpcExposePort: (port) => this.remoteRpc('exposePort', [port]),
116
117
  _rpcUnexposePort: (port) => this.remoteRpc('unexposePort', [port]),
118
+ _rpcDestroy: (options) => this.remoteRpc('destroy', [options]),
117
119
  };
118
120
  }
119
121
  async remoteRpc(op, args) {
@@ -190,6 +192,10 @@ export class NimbusSandbox {
190
192
  install: options.install ?? 'never',
191
193
  });
192
194
  }
195
+ async destroy(options = {}) {
196
+ this.readyPromise = null;
197
+ return this.stub()._rpcDestroy(options);
198
+ }
193
199
  files = {
194
200
  read: async (path) => {
195
201
  await this.ready();
@@ -203,6 +209,10 @@ export class NimbusSandbox {
203
209
  await this.ready();
204
210
  return this.stub()._rpcWriteFile(path, content);
205
211
  },
212
+ stat: async (path) => {
213
+ await this.ready();
214
+ return this.stub()._rpcStat(path);
215
+ },
206
216
  list: async (path = this.root) => {
207
217
  await this.ready();
208
218
  return this.stub()._rpcReaddir(path);
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, createNimbusHandler, issueNimbusToken, verifyNimbusToken, NimbusAuthError, } from '@nimbus-sh/worker';
9
+ export { NimbusSession, SupervisorRPC, NimbusAssetsRPC, NimbusLoaderRPC, NimbusLoadedWorker, NimbusLoadedEntrypoint, NimbusDurableObjectNamespace, NimbusDOStub, CirrusHmrRPC, base64Utf8, base64Url, base64UrlDecode, createNimbusHandler, decodeJsonBase64Url, encodeJsonBase64Url, generateSessionId, isValidSessionId, issueNimbusToken, pkceChallenge, randomBase64Url, sealJson, 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, NimbusTokenClaims, VerifiedNimbusToken, } from '@nimbus-sh/worker';
11
11
  //# sourceMappingURL=worker.d.ts.map
@@ -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,mBAAmB,EACnB,gBAAgB,EAChB,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,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,aAAa,EACb,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,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,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, createNimbusHandler, issueNimbusToken, verifyNimbusToken, NimbusAuthError, } from '@nimbus-sh/worker';
9
+ export { NimbusSession, SupervisorRPC, NimbusAssetsRPC, NimbusLoaderRPC, NimbusLoadedWorker, NimbusLoadedEntrypoint, NimbusDurableObjectNamespace, NimbusDOStub, CirrusHmrRPC, base64Utf8, base64Url, base64UrlDecode, createNimbusHandler, decodeJsonBase64Url, encodeJsonBase64Url, generateSessionId, isValidSessionId, issueNimbusToken, pkceChallenge, randomBase64Url, sealJson, 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.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Nimbus SDK — Worker embedder, programmatic sandboxes, token mint, and client helpers.",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -43,6 +43,11 @@
43
43
  "types": "./dist/sandbox.d.ts",
44
44
  "import": "./dist/sandbox.js"
45
45
  },
46
+ "./flue": {
47
+ "workspace": "./src/flue.ts",
48
+ "types": "./dist/flue.d.ts",
49
+ "import": "./dist/flue.js"
50
+ },
46
51
  "./worker": {
47
52
  "workspace": "./src/worker.ts",
48
53
  "types": "./dist/worker.d.ts",
@@ -67,11 +72,11 @@
67
72
  "typecheck": "tsc --noEmit"
68
73
  },
69
74
  "peerDependencies": {
70
- "@nimbus-sh/worker": "^0.1.3"
75
+ "@nimbus-sh/worker": "^0.1.6"
71
76
  },
72
77
  "devDependencies": {
73
78
  "@cloudflare/workers-types": "^4.20250327.0",
74
- "@nimbus-sh/worker": "^0.1.3",
79
+ "@nimbus-sh/worker": "^0.1.6",
75
80
  "typescript": "^5.7.0"
76
81
  },
77
82
  "publishConfig": {