@nimbus-sh/worker 0.1.5 → 0.1.6
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 +37 -0
- package/dist/_shared/crypto.d.ts +15 -0
- package/dist/_shared/crypto.d.ts.map +1 -0
- package/dist/_shared/crypto.js +122 -0
- package/dist/facets/manager.d.ts +24 -0
- package/dist/facets/manager.d.ts.map +1 -1
- package/dist/facets/manager.js +279 -70
- package/dist/facets/process.d.ts +11 -2
- package/dist/facets/process.d.ts.map +1 -1
- package/dist/facets/process.js +187 -21
- package/dist/facets/vite-dev-server.d.ts +2 -0
- package/dist/facets/vite-dev-server.d.ts.map +1 -1
- package/dist/facets/vite-dev-server.js +39 -12
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/loaders/child-process/spawn-facet.d.ts +1 -3
- package/dist/loaders/child-process/spawn-facet.d.ts.map +1 -1
- package/dist/loaders/child-process/spawn-facet.js +1 -12
- package/dist/loaders/child-process/spawn-pool.d.ts +1 -1
- package/dist/loaders/child-process/spawn-pool.d.ts.map +1 -1
- package/dist/loaders/child-process/spawn-pool.js +1 -6
- package/dist/npm/installer.d.ts.map +1 -1
- package/dist/npm/installer.js +47 -27
- package/dist/npm/pre-bundle-facet.d.ts.map +1 -1
- package/dist/npm/pre-bundle-facet.js +2 -1
- package/dist/npm/resolve-one-facet.d.ts.map +1 -1
- package/dist/npm/resolve-one-facet.js +41 -13
- package/dist/npm/resolver.d.ts.map +1 -1
- package/dist/npm/resolver.js +70 -35
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +45 -21
- package/dist/router/remote-api.d.ts.map +1 -1
- package/dist/router/remote-api.js +29 -8
- package/dist/runtime/barrel-synthesizer.d.ts +7 -0
- package/dist/runtime/barrel-synthesizer.d.ts.map +1 -1
- package/dist/runtime/barrel-synthesizer.js +11 -0
- package/dist/runtime/clang-runner.d.ts.map +1 -1
- package/dist/runtime/clang-runner.js +1 -8
- package/dist/runtime/esbuild-service.d.ts +12 -5
- package/dist/runtime/esbuild-service.d.ts.map +1 -1
- package/dist/runtime/esbuild-service.js +28 -14
- package/dist/runtime/node-runner.d.ts +2 -0
- package/dist/runtime/node-runner.d.ts.map +1 -1
- package/dist/runtime/node-shims.d.ts +4 -2
- package/dist/runtime/node-shims.d.ts.map +1 -1
- package/dist/runtime/node-shims.js +404 -55
- package/dist/runtime/os-contracts.d.ts +128 -0
- package/dist/runtime/os-contracts.d.ts.map +1 -0
- package/dist/runtime/os-contracts.js +1 -0
- package/dist/runtime/package-manager.d.ts.map +1 -1
- package/dist/runtime/package-manager.js +32 -7
- package/dist/runtime/port-registry.d.ts +5 -0
- package/dist/runtime/port-registry.d.ts.map +1 -1
- package/dist/runtime/port-registry.js +22 -1
- package/dist/runtime/pyodide-runtime-assets.d.ts +19 -0
- package/dist/runtime/pyodide-runtime-assets.d.ts.map +1 -0
- package/dist/runtime/pyodide-runtime-assets.js +44 -0
- package/dist/runtime/python-repl.d.ts +3 -1
- package/dist/runtime/python-repl.d.ts.map +1 -1
- package/dist/runtime/python-repl.js +11 -29
- package/dist/runtime/python-runner.d.ts +8 -9
- package/dist/runtime/python-runner.d.ts.map +1 -1
- package/dist/runtime/python-runner.js +897 -61
- package/dist/runtime/python-socket-shim.d.ts +11 -0
- package/dist/runtime/python-socket-shim.d.ts.map +1 -0
- package/dist/runtime/python-socket-shim.js +526 -0
- package/dist/runtime/require-resolver.d.ts.map +1 -1
- package/dist/runtime/require-resolver.js +2 -11
- package/dist/runtime/ruby-gems.d.ts +25 -0
- package/dist/runtime/ruby-gems.d.ts.map +1 -0
- package/dist/runtime/ruby-gems.js +582 -0
- package/dist/runtime/ruby-runner.d.ts +2 -4
- package/dist/runtime/ruby-runner.d.ts.map +1 -1
- package/dist/runtime/ruby-runner.js +335 -34
- package/dist/runtime/runtime-catalog.d.ts +16 -4
- package/dist/runtime/runtime-catalog.d.ts.map +1 -1
- package/dist/runtime/runtime-catalog.js +21 -10
- package/dist/runtime/runtime-registry.d.ts +3 -0
- package/dist/runtime/runtime-registry.d.ts.map +1 -1
- package/dist/runtime/runtime-registry.js +4 -0
- package/dist/runtime/sqlite-runtime-fs-bridge.d.ts +43 -0
- package/dist/runtime/sqlite-runtime-fs-bridge.d.ts.map +1 -0
- package/dist/runtime/sqlite-runtime-fs-bridge.js +224 -0
- package/dist/runtime/static-server.d.ts +3 -0
- package/dist/runtime/static-server.d.ts.map +1 -0
- package/dist/runtime/static-server.js +121 -0
- package/dist/runtime/vfs-snapshot.d.ts +57 -0
- package/dist/runtime/vfs-snapshot.d.ts.map +1 -0
- package/dist/runtime/vfs-snapshot.js +141 -0
- package/dist/runtime/virtual-socket-kernel.d.ts +16 -0
- package/dist/runtime/virtual-socket-kernel.d.ts.map +1 -0
- package/dist/runtime/virtual-socket-kernel.js +360 -0
- package/dist/runtime/wasi-instance.d.ts +6 -3
- package/dist/runtime/wasi-instance.d.ts.map +1 -1
- package/dist/runtime/wasm-runner.d.ts +1 -25
- package/dist/runtime/wasm-runner.d.ts.map +1 -1
- package/dist/runtime/wasm-runner.js +1 -160
- package/dist/session/agent.d.ts +43 -0
- package/dist/session/agent.d.ts.map +1 -0
- package/dist/session/agent.js +1252 -0
- package/dist/session/init.d.ts.map +1 -1
- package/dist/session/init.js +15 -16
- package/dist/session/nimbus-session.d.ts +13 -2
- package/dist/session/nimbus-session.d.ts.map +1 -1
- package/dist/session/nimbus-session.js +55 -7
- package/dist/session/programmatic.d.ts +10 -0
- package/dist/session/programmatic.d.ts.map +1 -1
- package/dist/session/programmatic.js +121 -0
- package/dist/session/routes.d.ts.map +1 -1
- package/dist/session/routes.js +19 -1
- package/dist/session/rpc.d.ts +11 -0
- package/dist/session/rpc.d.ts.map +1 -1
- package/dist/session/rpc.js +56 -43
- package/dist/session/supervisor-rpc.d.ts +15 -0
- package/dist/session/supervisor-rpc.d.ts.map +1 -1
- package/dist/session/supervisor-rpc.js +32 -0
- package/dist/session/ws.d.ts +4 -3
- package/dist/session/ws.d.ts.map +1 -1
- package/dist/session/ws.js +11 -1
- package/dist/shell/unix-commands.js +12 -16
- package/dist/vfs/path.d.ts +8 -4
- package/dist/vfs/path.d.ts.map +1 -1
- package/dist/vfs/path.js +16 -4
- package/dist/vfs/sqlite-vfs.d.ts +2 -0
- package/dist/vfs/sqlite-vfs.d.ts.map +1 -1
- package/dist/vfs/sqlite-vfs.js +11 -0
- package/dist/vfs/symlink-registry.d.ts +7 -1
- package/dist/vfs/symlink-registry.d.ts.map +1 -1
- package/dist/vfs/symlink-registry.js +16 -11
- package/package.json +4 -1
- package/public/index.html +240 -0
- package/public/s/index.html +1172 -146
- package/runtime-contracts/pyodide-workerd-adapter.json +18 -0
- package/scripts/bundle-runtime.mjs +99 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/session/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AA+DH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;;;;;;;GAQG;AACH,KAAK,QAAQ,GAAG,eAAe,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AAG3E,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/session/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AA+DH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;;;;;;;GAQG;AACH,KAAK,QAAQ,GAAG,eAAe,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AAG3E,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,CAs+G/D"}
|
package/dist/session/init.js
CHANGED
|
@@ -470,6 +470,7 @@ export function initSession(self, ws) {
|
|
|
470
470
|
vfs: sqliteFs,
|
|
471
471
|
terminal: self.terminal,
|
|
472
472
|
installRoot,
|
|
473
|
+
manifest,
|
|
473
474
|
// REPL-R7-1: thread the shell so ReplSession can drain
|
|
474
475
|
// shell.pasteQueue on attach (multi-line WS frames like
|
|
475
476
|
// `python\nexit(7)` would otherwise drop the tail input).
|
|
@@ -557,6 +558,7 @@ export function initSession(self, ws) {
|
|
|
557
558
|
facetMgr,
|
|
558
559
|
vfs: sqliteFs,
|
|
559
560
|
installRoot: target.root,
|
|
561
|
+
manifest: target.manifest,
|
|
560
562
|
});
|
|
561
563
|
ctx.stdout.write('[python] ready\n');
|
|
562
564
|
},
|
|
@@ -1270,11 +1272,22 @@ export function initSession(self, ws) {
|
|
|
1270
1272
|
.replace(/\/+/g, '/') // collapse //
|
|
1271
1273
|
.replace(/^\/+/, '') // leading /
|
|
1272
1274
|
.replace(/\/+$/, ''); // trailing /
|
|
1275
|
+
// Argv expansion: package.json scripts commonly write
|
|
1276
|
+
// `--port ${PORT:-3000}`. Resolve it once and feed both Vite
|
|
1277
|
+
// backends so `/api/stats`, `/preview/`, and port tabs agree.
|
|
1278
|
+
const expandedArgs = expandArgvShellDefaults(args, ctx.env || {});
|
|
1279
|
+
const vitePortDefault = 5173;
|
|
1280
|
+
const resolvedPort = resolveLongRunningPort({
|
|
1281
|
+
argv: expandedArgs,
|
|
1282
|
+
env: ctx.env,
|
|
1283
|
+
configPort: viteConfig.port,
|
|
1284
|
+
fallback: vitePortDefault,
|
|
1285
|
+
});
|
|
1273
1286
|
// ── Preflight: node_modules guard ────────────────────────────────────
|
|
1274
1287
|
// Direct `vite` invocation requires installed deps. Bail loudly BEFORE
|
|
1275
1288
|
// spawning a dev server that would just serve broken modules and
|
|
1276
1289
|
// confuse the user. --force / --no-install-check bypasses the check.
|
|
1277
|
-
const bypassInstallCheck =
|
|
1290
|
+
const bypassInstallCheck = expandedArgs.includes('--force') || expandedArgs.includes('--no-install-check');
|
|
1278
1291
|
if (!bypassInstallCheck) {
|
|
1279
1292
|
const guard = checkNodeModulesGuard(self.sqliteFs, vfsRoot);
|
|
1280
1293
|
if (guard.missing) {
|
|
@@ -1309,9 +1322,7 @@ export function initSession(self, ws) {
|
|
|
1309
1322
|
if (useReal) {
|
|
1310
1323
|
if (self.cirrusReal?.isRunning)
|
|
1311
1324
|
self.cirrusReal.stop(self.ctx);
|
|
1312
|
-
|
|
1313
|
-
// a real socket, so we reuse the same number per session.
|
|
1314
|
-
const vitePort = viteConfig.port || 5173;
|
|
1325
|
+
const vitePort = resolvedPort;
|
|
1315
1326
|
const previewBasePath = self.viteBasePath;
|
|
1316
1327
|
// Acquire the heavy-alloc gate so the fire-and-forget pre-bundle
|
|
1317
1328
|
// phase (still in flight on a fresh `npm install && npm run dev`)
|
|
@@ -1516,18 +1527,6 @@ export function initSession(self, ws) {
|
|
|
1516
1527
|
// tears it down via the same primitives that handle every other
|
|
1517
1528
|
// long-running facet.
|
|
1518
1529
|
//
|
|
1519
|
-
// Argv expansion: package.json scripts commonly write
|
|
1520
|
-
// `--port ${PORT:-3000}`. Nimbus's shell doesn't expand
|
|
1521
|
-
// parameter substitution, so we do it here against ctx.env right
|
|
1522
|
-
// before argv parsing — see runtime/long-running-handle.ts.
|
|
1523
|
-
const expandedArgs = expandArgvShellDefaults(args, ctx.env || {});
|
|
1524
|
-
const vitePortDefault = 5173;
|
|
1525
|
-
const resolvedPort = resolveLongRunningPort({
|
|
1526
|
-
argv: expandedArgs,
|
|
1527
|
-
env: ctx.env,
|
|
1528
|
-
configPort: viteConfig.port,
|
|
1529
|
-
fallback: vitePortDefault,
|
|
1530
|
-
});
|
|
1531
1530
|
// Allocate PID FIRST so we can plumb it into ViteDevServer's
|
|
1532
1531
|
// process-log wiring at construction time. The PID stays valid
|
|
1533
1532
|
// for the life of this dev-server instance; subsequent log lines
|
|
@@ -78,8 +78,8 @@ export declare class NimbusSession extends CloudflareDurableObject {
|
|
|
78
78
|
/** file-tree-watch (2026-05-15): per-WS fs-watch subscriptions.
|
|
79
79
|
* Lazily created on first fs-watch-subscribe by src/session/fs-watch.ts;
|
|
80
80
|
* cleaned up unconditionally in src/session/ws.ts on wsClose / wsError.
|
|
81
|
-
* Optional (undefined) until first subscribe so
|
|
82
|
-
*
|
|
81
|
+
* Optional (undefined) until first subscribe so sessions that never
|
|
82
|
+
* open the file tree carry no watch state. */
|
|
83
83
|
_fsWatchSubs?: Map<WebSocket, import('./fs-watch.js').FsWatchSub[]>;
|
|
84
84
|
nimbusWrangler: NimbusWrangler | null;
|
|
85
85
|
npmInstaller: NpmInstaller | null;
|
|
@@ -217,6 +217,15 @@ export declare class NimbusSession extends CloudflareDurableObject {
|
|
|
217
217
|
}[]>;
|
|
218
218
|
_rpcExists(path: string): Promise<boolean>;
|
|
219
219
|
_rpcMkdir(path: string): Promise<void>;
|
|
220
|
+
_rpcRmdir(path: string): Promise<void>;
|
|
221
|
+
_rpcRename(from: string, to: string): Promise<void>;
|
|
222
|
+
_rpcReadlink(path: string): Promise<string | null>;
|
|
223
|
+
_rpcSymlink(target: string, path: string): Promise<void>;
|
|
224
|
+
_rpcFsRevision(path?: string): Promise<number>;
|
|
225
|
+
_rpcFsOpen(path: string, flags: any): Promise<any>;
|
|
226
|
+
_rpcFsRead(handleId: number, offset: number | null, length: number): Promise<Uint8Array>;
|
|
227
|
+
_rpcFsWrite(handleId: number, offset: number | null, bytes: Uint8Array | ArrayBuffer | number[]): Promise<number>;
|
|
228
|
+
_rpcFsClose(handleId: number): Promise<void>;
|
|
220
229
|
_rpcHmrRelay(clientId: string | null, msg: string): Promise<void>;
|
|
221
230
|
_rpcUnlink(path: string): Promise<void>;
|
|
222
231
|
_rpcWriteBatch(payload: any): Promise<{
|
|
@@ -263,6 +272,7 @@ export declare class NimbusSession extends CloudflareDurableObject {
|
|
|
263
272
|
ok: boolean;
|
|
264
273
|
}>;
|
|
265
274
|
_rpcCpStdinEnd(childPid: number): Promise<void>;
|
|
275
|
+
_rpcCpReadStdin(childPid: number, waitMs: number): Promise<any>;
|
|
266
276
|
_rpcCpReadOutput(childPid: number, fd: 1 | 2, sinceSeq: number, waitMs: number): Promise<any>;
|
|
267
277
|
_rpcCpDrainOutput(childPid: number): Promise<any>;
|
|
268
278
|
_rpcCpKill(childPid: number, signal: string): Promise<boolean>;
|
|
@@ -328,6 +338,7 @@ export declare class NimbusSession extends CloudflareDurableObject {
|
|
|
328
338
|
_rpcDeleteFile(path: string, options?: {
|
|
329
339
|
recursive?: boolean;
|
|
330
340
|
}): Promise<void>;
|
|
341
|
+
_rpcDestroy(options?: _programmatic.ProgrammaticDestroyOptions): Promise<_programmatic.ProgrammaticDestroyResult>;
|
|
331
342
|
vfsReadFile(path: string): ArrayBuffer | null;
|
|
332
343
|
vfsReadFileString(path: string): string | null;
|
|
333
344
|
vfsStat(path: string): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nimbus-session.d.ts","sourceRoot":"","sources":["../../src/session/nimbus-session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,IAAI,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAI7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAoCnD,OAAO,EAEL,KAAK,uBAAuB,IAAI,gBAAgB,EACjD,MAAM,uBAAuB,CAAC;AAmC/B,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"nimbus-session.d.ts","sourceRoot":"","sources":["../../src/session/nimbus-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,18 @@ import * as _diag from './diag.js';
|
|
|
70
70
|
// the supervisor-resident cache + the SUPERVISOR.getEsbuildWasm RPC.)
|
|
71
71
|
// Helpers needed by this class file's own logic (not just re-export).
|
|
72
72
|
import { _classifyCommand, } from './helpers.js';
|
|
73
|
+
function normalizeCpCommandName(name) {
|
|
74
|
+
const text = String(name || '').trim();
|
|
75
|
+
if (!text.startsWith('/'))
|
|
76
|
+
return text;
|
|
77
|
+
const slash = text.lastIndexOf('/');
|
|
78
|
+
const base = slash >= 0 ? text.slice(slash + 1) : text;
|
|
79
|
+
const dir = text.slice(0, Math.max(0, text.length - base.length));
|
|
80
|
+
if (dir === '/bin/' || dir === '/usr/bin/' || dir === '/usr/local/bin/') {
|
|
81
|
+
return base;
|
|
82
|
+
}
|
|
83
|
+
return text;
|
|
84
|
+
}
|
|
73
85
|
// Re-exports preserved for callers that import from nimbus-session
|
|
74
86
|
// directly (the historical entry point). Each one has a dedicated
|
|
75
87
|
// import site elsewhere in the codebase.
|
|
@@ -203,8 +215,8 @@ export class NimbusSession extends CloudflareDurableObject {
|
|
|
203
215
|
/** file-tree-watch (2026-05-15): per-WS fs-watch subscriptions.
|
|
204
216
|
* Lazily created on first fs-watch-subscribe by src/session/fs-watch.ts;
|
|
205
217
|
* cleaned up unconditionally in src/session/ws.ts on wsClose / wsError.
|
|
206
|
-
* Optional (undefined) until first subscribe so
|
|
207
|
-
*
|
|
218
|
+
* Optional (undefined) until first subscribe so sessions that never
|
|
219
|
+
* open the file tree carry no watch state. */
|
|
208
220
|
_fsWatchSubs;
|
|
209
221
|
nimbusWrangler = null;
|
|
210
222
|
npmInstaller = null;
|
|
@@ -460,6 +472,19 @@ export class NimbusSession extends CloudflareDurableObject {
|
|
|
460
472
|
async _rpcReaddir(path) { return _rpc._rpcReaddir(this, path); }
|
|
461
473
|
async _rpcExists(path) { return _rpc._rpcExists(this, path); }
|
|
462
474
|
async _rpcMkdir(path) { return _rpc._rpcMkdir(this, path); }
|
|
475
|
+
async _rpcRmdir(path) { return _rpc._rpcRmdir(this, path); }
|
|
476
|
+
async _rpcRename(from, to) { return _rpc._rpcRename(this, from, to); }
|
|
477
|
+
async _rpcReadlink(path) { return _rpc._rpcReadlink(this, path); }
|
|
478
|
+
async _rpcSymlink(target, path) { return _rpc._rpcSymlink(this, target, path); }
|
|
479
|
+
async _rpcFsRevision(path) { return _rpc._rpcFsRevision(this, path); }
|
|
480
|
+
async _rpcFsOpen(path, flags) { return _rpc._rpcFsOpen(this, path, flags); }
|
|
481
|
+
async _rpcFsRead(handleId, offset, length) {
|
|
482
|
+
return _rpc._rpcFsRead(this, handleId, offset, length);
|
|
483
|
+
}
|
|
484
|
+
async _rpcFsWrite(handleId, offset, bytes) {
|
|
485
|
+
return _rpc._rpcFsWrite(this, handleId, offset, bytes);
|
|
486
|
+
}
|
|
487
|
+
async _rpcFsClose(handleId) { return _rpc._rpcFsClose(this, handleId); }
|
|
463
488
|
async _rpcHmrRelay(clientId, msg) { return _rpc._rpcHmrRelay(this, clientId, msg); }
|
|
464
489
|
async _rpcUnlink(path) { return _rpc._rpcUnlink(this, path); }
|
|
465
490
|
async _rpcWriteBatch(payload) { return _rpc._rpcWriteBatch(this, payload); }
|
|
@@ -487,6 +512,7 @@ export class NimbusSession extends CloudflareDurableObject {
|
|
|
487
512
|
async _rpcCpSpawn(req) { return _rpc._rpcCpSpawn(this, req); }
|
|
488
513
|
async _rpcCpStdinWrite(childPid, data) { return _rpc._rpcCpStdinWrite(this, childPid, data); }
|
|
489
514
|
async _rpcCpStdinEnd(childPid) { return _rpc._rpcCpStdinEnd(this, childPid); }
|
|
515
|
+
async _rpcCpReadStdin(childPid, waitMs) { return _rpc._rpcCpReadStdin(this, childPid, waitMs); }
|
|
490
516
|
async _rpcCpReadOutput(childPid, fd, sinceSeq, waitMs) { return _rpc._rpcCpReadOutput(this, childPid, fd, sinceSeq, waitMs); }
|
|
491
517
|
async _rpcCpDrainOutput(childPid) { return _rpc._rpcCpDrainOutput(this, childPid); }
|
|
492
518
|
async _rpcCpKill(childPid, signal) { return _rpc._rpcCpKill(this, childPid, signal); }
|
|
@@ -510,6 +536,7 @@ export class NimbusSession extends CloudflareDurableObject {
|
|
|
510
536
|
async _rpcExposePort(port) { return _programmatic.rpcExposePort(this, port); }
|
|
511
537
|
async _rpcUnexposePort(port) { return _programmatic.rpcUnexposePort(this, port); }
|
|
512
538
|
async _rpcDeleteFile(path, options) { return _programmatic.rpcDeleteFile(this, path, options); }
|
|
539
|
+
async _rpcDestroy(options) { return _programmatic.rpcDestroy(this, options); }
|
|
513
540
|
// Legacy VFS (direct method calls)
|
|
514
541
|
vfsReadFile(path) { return _rpc.vfsReadFile(this, path); }
|
|
515
542
|
vfsReadFileString(path) { return _rpc.vfsReadFileString(this, path); }
|
|
@@ -702,7 +729,8 @@ export class NimbusSession extends CloudflareDurableObject {
|
|
|
702
729
|
hooks.onStderr('child_process: command registry unavailable\n');
|
|
703
730
|
return 127;
|
|
704
731
|
}
|
|
705
|
-
const
|
|
732
|
+
const commandName = normalizeCpCommandName(payload.command);
|
|
733
|
+
const cmd = await registry.resolve(commandName);
|
|
706
734
|
if (!cmd) {
|
|
707
735
|
hooks.onStderr(`${payload.command}: command not found\n`);
|
|
708
736
|
return 127;
|
|
@@ -724,6 +752,7 @@ export class NimbusSession extends CloudflareDurableObject {
|
|
|
724
752
|
read: async () => null,
|
|
725
753
|
readAll: async () => payload.stdin || '',
|
|
726
754
|
},
|
|
755
|
+
__nimbusCaptureOutput: true,
|
|
727
756
|
};
|
|
728
757
|
try {
|
|
729
758
|
const code = await cmd(ctx);
|
|
@@ -754,14 +783,15 @@ export class NimbusSession extends CloudflareDurableObject {
|
|
|
754
783
|
// facet-direct table for known facet-only commands. Returns null
|
|
755
784
|
// (→ exit 127) for everything unknown.
|
|
756
785
|
resolve: (name) => {
|
|
786
|
+
const commandName = normalizeCpCommandName(name);
|
|
757
787
|
const registry = this._cpRegistry;
|
|
758
|
-
if (registry && typeof registry.has === 'function' && registry.has(
|
|
788
|
+
if (registry && typeof registry.has === 'function' && registry.has(commandName)) {
|
|
759
789
|
// Registered — classify by name. Reuse the static table so
|
|
760
790
|
// facet-direct commands (node/npm/git/...) keep their kind
|
|
761
791
|
// even when they ALSO happen to be registry entries.
|
|
762
|
-
return _classifyCommand(
|
|
792
|
+
return _classifyCommand(commandName) || { kind: 'pure-builtin' };
|
|
763
793
|
}
|
|
764
|
-
return _classifyCommand(
|
|
794
|
+
return _classifyCommand(commandName);
|
|
765
795
|
},
|
|
766
796
|
runPureBuiltin: async (name, args, env, cwd, stdin, hooks) => {
|
|
767
797
|
const registry = this._cpRegistry;
|
|
@@ -769,7 +799,8 @@ export class NimbusSession extends CloudflareDurableObject {
|
|
|
769
799
|
hooks.onStderr('cp: registry unavailable\n');
|
|
770
800
|
return 127;
|
|
771
801
|
}
|
|
772
|
-
const
|
|
802
|
+
const commandName = normalizeCpCommandName(name);
|
|
803
|
+
const cmd = await registry.resolve(commandName);
|
|
773
804
|
if (!cmd) {
|
|
774
805
|
hooks.onStderr(`${name}: command not found\n`);
|
|
775
806
|
return 127;
|
|
@@ -782,6 +813,7 @@ export class NimbusSession extends CloudflareDurableObject {
|
|
|
782
813
|
stderr: { write: (d) => hooks.onStderr(String(d)) },
|
|
783
814
|
signal: ac.signal,
|
|
784
815
|
stdin: { read: async () => null, readAll: async () => stdin },
|
|
816
|
+
__nimbusCaptureOutput: true,
|
|
785
817
|
};
|
|
786
818
|
try {
|
|
787
819
|
const code = await cmd(ctx);
|
|
@@ -815,6 +847,22 @@ export class NimbusSession extends CloudflareDurableObject {
|
|
|
815
847
|
processLogs: this.processLogs,
|
|
816
848
|
vfs: this.sqliteFs,
|
|
817
849
|
commandRegistry: cmdRegistryAdapter,
|
|
850
|
+
shellExecutor: {
|
|
851
|
+
execute: async (commandLine, env, cwd, stdin, hooks) => {
|
|
852
|
+
if (!this.shell) {
|
|
853
|
+
hooks.onStderr('sh: shell unavailable\n');
|
|
854
|
+
return 127;
|
|
855
|
+
}
|
|
856
|
+
const result = await this.shell.execute(String(commandLine), {
|
|
857
|
+
cwd: cwd || '/home/user',
|
|
858
|
+
env: { ...this.shell.env, ...(env || {}) },
|
|
859
|
+
onStdout: (d) => hooks.onStdout(String(d)),
|
|
860
|
+
onStderr: (d) => hooks.onStderr(String(d)),
|
|
861
|
+
stdin,
|
|
862
|
+
});
|
|
863
|
+
return typeof result?.exitCode === 'number' ? result.exitCode : 0;
|
|
864
|
+
},
|
|
865
|
+
},
|
|
818
866
|
ctx: this.ctx,
|
|
819
867
|
spawnPool,
|
|
820
868
|
});
|
|
@@ -15,6 +15,15 @@ export interface ProgrammaticExecOptions extends ProgrammaticReadyOptions {
|
|
|
15
15
|
timeoutMs?: number;
|
|
16
16
|
stdin?: string;
|
|
17
17
|
}
|
|
18
|
+
export interface ProgrammaticDestroyOptions {
|
|
19
|
+
reason?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ProgrammaticDestroyResult {
|
|
22
|
+
ok: true;
|
|
23
|
+
killed: number;
|
|
24
|
+
destroyedAt: number;
|
|
25
|
+
reason: string | null;
|
|
26
|
+
}
|
|
18
27
|
export interface ProgrammaticExecResult {
|
|
19
28
|
command: string;
|
|
20
29
|
exitCode: number;
|
|
@@ -101,5 +110,6 @@ export declare function rpcUnexposePort(self: Host, port: number): Promise<{
|
|
|
101
110
|
export declare function rpcDeleteFile(self: Host, path: string, options?: {
|
|
102
111
|
recursive?: boolean;
|
|
103
112
|
}): Promise<void>;
|
|
113
|
+
export declare function rpcDestroy(self: Host, options?: ProgrammaticDestroyOptions): Promise<ProgrammaticDestroyResult>;
|
|
104
114
|
export {};
|
|
105
115
|
//# sourceMappingURL=programmatic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"programmatic.d.ts","sourceRoot":"","sources":["../../src/session/programmatic.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"programmatic.d.ts","sourceRoot":"","sources":["../../src/session/programmatic.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
* duplicating the interactive terminal boot path.
|
|
7
7
|
*/
|
|
8
8
|
import { ensureRuntimesProgrammatic, installRuntimeProgrammatic, listAvailableRuntimes, listInstalledRuntimes, } from '../runtime/package-manager.js';
|
|
9
|
+
import { ProcessTable } from '../runtime/process-table.js';
|
|
10
|
+
import { ProcessLogStore } from '../runtime/process-logs.js';
|
|
11
|
+
import { PortRegistry } from '../runtime/port-registry.js';
|
|
9
12
|
function makeHeadlessWebSocket() {
|
|
10
13
|
const listeners = new Map();
|
|
11
14
|
const ws = {
|
|
@@ -289,6 +292,124 @@ export async function rpcDeleteFile(self, path, options = {}) {
|
|
|
289
292
|
}
|
|
290
293
|
self.sqliteFs.unlink(p);
|
|
291
294
|
}
|
|
295
|
+
export async function rpcDestroy(self, options = {}) {
|
|
296
|
+
const reason = typeof options.reason === 'string' && options.reason.trim()
|
|
297
|
+
? options.reason.trim().slice(0, 200)
|
|
298
|
+
: null;
|
|
299
|
+
const destroyedAt = Date.now();
|
|
300
|
+
let killed = 0;
|
|
301
|
+
const running = Array.isArray(self.processTable?.getAll?.())
|
|
302
|
+
? self.processTable.getAll().filter((p) => p.state === 'running')
|
|
303
|
+
: [];
|
|
304
|
+
for (const entry of running) {
|
|
305
|
+
const pid = Number(entry.pid);
|
|
306
|
+
try {
|
|
307
|
+
if (self._viteShimPid === pid) {
|
|
308
|
+
if (self.cirrusReal?.isRunning)
|
|
309
|
+
self.cirrusReal.stop(self.ctx);
|
|
310
|
+
self.cirrusReal = null;
|
|
311
|
+
if (self.viteDevServer?.isRunning)
|
|
312
|
+
self.viteDevServer.stop();
|
|
313
|
+
self.viteDevServer = null;
|
|
314
|
+
try {
|
|
315
|
+
await self.ctx.storage.delete('vite-config');
|
|
316
|
+
}
|
|
317
|
+
catch { }
|
|
318
|
+
self._viteShimPid = null;
|
|
319
|
+
self._viteShimPort = null;
|
|
320
|
+
}
|
|
321
|
+
else if (self.facetManager?.kill?.(pid)) {
|
|
322
|
+
// facetManager.kill already marks process state and unregisters ports.
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
try {
|
|
326
|
+
self.processTable?.kill?.(pid);
|
|
327
|
+
}
|
|
328
|
+
catch { }
|
|
329
|
+
}
|
|
330
|
+
try {
|
|
331
|
+
self.portRegistry?.unregisterByPid?.(pid);
|
|
332
|
+
}
|
|
333
|
+
catch { }
|
|
334
|
+
try {
|
|
335
|
+
if (!self.processLogs?.getExit?.(pid)) {
|
|
336
|
+
self.processLogs?.markExit?.(pid, 137, reason ?? 'destroyed');
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
catch { }
|
|
340
|
+
killed++;
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
try {
|
|
344
|
+
self.processTable?.kill?.(pid);
|
|
345
|
+
}
|
|
346
|
+
catch { }
|
|
347
|
+
try {
|
|
348
|
+
self.portRegistry?.unregisterByPid?.(pid);
|
|
349
|
+
}
|
|
350
|
+
catch { }
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
try {
|
|
354
|
+
self.processLogs?.flush?.();
|
|
355
|
+
}
|
|
356
|
+
catch { }
|
|
357
|
+
try {
|
|
358
|
+
self.sqliteFs?.flushAll?.();
|
|
359
|
+
}
|
|
360
|
+
catch { }
|
|
361
|
+
try {
|
|
362
|
+
await self.ctx.storage.deleteAll();
|
|
363
|
+
}
|
|
364
|
+
catch (e) {
|
|
365
|
+
throw new Error(`Nimbus destroy failed while deleting Durable Object storage: ${e?.message || e}`);
|
|
366
|
+
}
|
|
367
|
+
resetInMemorySessionState(self);
|
|
368
|
+
return { ok: true, killed, destroyedAt, reason };
|
|
369
|
+
}
|
|
370
|
+
function resetInMemorySessionState(self) {
|
|
371
|
+
try {
|
|
372
|
+
self._cirrusHmrWsClients?.clear?.();
|
|
373
|
+
}
|
|
374
|
+
catch { }
|
|
375
|
+
try {
|
|
376
|
+
self.terminal?.write?.('\r\n[nimbus] session destroyed\r\n');
|
|
377
|
+
}
|
|
378
|
+
catch { }
|
|
379
|
+
try {
|
|
380
|
+
self.terminal?.close?.();
|
|
381
|
+
}
|
|
382
|
+
catch { }
|
|
383
|
+
self.sqliteFs = null;
|
|
384
|
+
self.kernel = null;
|
|
385
|
+
self.shell = null;
|
|
386
|
+
self.terminal = null;
|
|
387
|
+
self.facetManager = null;
|
|
388
|
+
self.facetProcessManager = null;
|
|
389
|
+
self.esbuildService = null;
|
|
390
|
+
self.viteDevServer = null;
|
|
391
|
+
self.cirrusReal = null;
|
|
392
|
+
self._cirrusHmrWsClients = null;
|
|
393
|
+
self.nimbusWrangler = null;
|
|
394
|
+
self.npmInstaller = null;
|
|
395
|
+
self.fetchProxyEntrypoint = null;
|
|
396
|
+
self.runtimeFsBridge = null;
|
|
397
|
+
self._cpRegistry = null;
|
|
398
|
+
self._viteShimPid = null;
|
|
399
|
+
self._viteShimPort = null;
|
|
400
|
+
self.sessionBasePath = '';
|
|
401
|
+
self.sessionBasePathHydrated = false;
|
|
402
|
+
self.wranglerAliasBannerShown = false;
|
|
403
|
+
self._b4Phase = 'drained';
|
|
404
|
+
self.processTable = new ProcessTable();
|
|
405
|
+
self.portRegistry = new PortRegistry();
|
|
406
|
+
self.processLogs = new ProcessLogStore();
|
|
407
|
+
self._w9PersistWired = false;
|
|
408
|
+
try {
|
|
409
|
+
self._w9WireProcessLogPersist?.();
|
|
410
|
+
}
|
|
411
|
+
catch { }
|
|
412
|
+
}
|
|
292
413
|
function rmrf(vfs, path) {
|
|
293
414
|
for (const entry of vfs.readdir(path)) {
|
|
294
415
|
const child = `${path}/${entry.name}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/session/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/session/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAgCH,KAAK,UAAU,GAAG,GAAG,CAAC;AAEtB,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAy/BvF"}
|
package/dist/session/routes.js
CHANGED
|
@@ -39,6 +39,7 @@ import { notifyTerminalEvent } from '../runtime/process-logs-api.js';
|
|
|
39
39
|
import { makeLongRunningPortStub } from '../runtime/long-running-handle.js';
|
|
40
40
|
import { getLoadedCodesStats } from './bindings.js';
|
|
41
41
|
import { renderNoDevServerHtml } from './helpers.js';
|
|
42
|
+
import { handleAgentRequest } from './agent.js';
|
|
42
43
|
// CLN-1 (2026-05-11): also import R2_CACHE_PREFIX + L2_KEY_HOST so the
|
|
43
44
|
// cache-purge helpers below don't hardcode the synthetic key shape.
|
|
44
45
|
// Bumping R2_CACHE_PREFIX 'v1' → 'v2' now invalidates the L2 cache key
|
|
@@ -95,6 +96,18 @@ export async function handleFetch(self, request) {
|
|
|
95
96
|
if (request.headers.get('Upgrade') !== 'websocket') {
|
|
96
97
|
return new Response('Expected WebSocket', { status: 426 });
|
|
97
98
|
}
|
|
99
|
+
const wsKind = url.searchParams.get('kind') || url.searchParams.get('mode');
|
|
100
|
+
if (wsKind === 'fs-watch') {
|
|
101
|
+
self.ensureSqliteFs();
|
|
102
|
+
const pair = new WebSocketPair();
|
|
103
|
+
const [client, server] = Object.values(pair);
|
|
104
|
+
self.ctx.acceptWebSocket(server);
|
|
105
|
+
try {
|
|
106
|
+
server.serializeAttachment?.({ kind: 'fs-watch' });
|
|
107
|
+
}
|
|
108
|
+
catch { }
|
|
109
|
+
return new Response(null, { status: 101, webSocket: client });
|
|
110
|
+
}
|
|
98
111
|
// [B'.5] Three-way decision on a /ws upgrade:
|
|
99
112
|
// 1. Warm rejoin: a wsClose/wsError fired earlier and left
|
|
100
113
|
// kernel/shell/terminal alive in-memory. Re-attach the
|
|
@@ -158,6 +171,9 @@ export async function handleFetch(self, request) {
|
|
|
158
171
|
if (url.pathname === '/api/processes') {
|
|
159
172
|
return handleProcessesListRequest(self.processTable, self.processLogs);
|
|
160
173
|
}
|
|
174
|
+
if (url.pathname.startsWith('/api/agent/')) {
|
|
175
|
+
return handleAgentRequest(self, request, url);
|
|
176
|
+
}
|
|
161
177
|
// runtime primitive support (P11) — kill / restart by PID for the Process tab UI.
|
|
162
178
|
//
|
|
163
179
|
// Both endpoints accept POST only. The body is empty; the PID is in the
|
|
@@ -659,10 +675,12 @@ export async function handleFetch(self, request) {
|
|
|
659
675
|
// while real-vite was happily serving on /preview/.
|
|
660
676
|
const legacyViteStats = self.viteDevServer?.stats || null;
|
|
661
677
|
const cirrusRealRunning = !!self.cirrusReal?.isRunning;
|
|
678
|
+
const cirrusRealStats = cirrusRealRunning ? self.cirrusReal?.stats : null;
|
|
662
679
|
const viteStats = cirrusRealRunning
|
|
663
680
|
? {
|
|
681
|
+
...(cirrusRealStats || {}),
|
|
664
682
|
running: true,
|
|
665
|
-
root: legacyViteStats?.root ?? 'home/user/app',
|
|
683
|
+
root: legacyViteStats?.root ?? cirrusRealStats?.root ?? 'home/user/app',
|
|
666
684
|
backend: 'real',
|
|
667
685
|
}
|
|
668
686
|
: legacyViteStats;
|
package/dist/session/rpc.d.ts
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* these ~3 sites would each need ctx threaded through; cast at boundary
|
|
22
22
|
* is acceptable per plan §IX recommendation 1.
|
|
23
23
|
*/
|
|
24
|
+
import type { RuntimeOpenFlags } from '../runtime/os-contracts.js';
|
|
24
25
|
type RpcHost = any;
|
|
25
26
|
export declare function _rpcReadFile(self: RpcHost, path: string): Promise<string | null>;
|
|
26
27
|
/**
|
|
@@ -61,6 +62,15 @@ export declare function _rpcReaddir(self: RpcHost, path: string): Promise<{
|
|
|
61
62
|
}[]>;
|
|
62
63
|
export declare function _rpcExists(self: RpcHost, path: string): Promise<boolean>;
|
|
63
64
|
export declare function _rpcMkdir(self: RpcHost, path: string): Promise<void>;
|
|
65
|
+
export declare function _rpcRmdir(self: RpcHost, path: string): Promise<void>;
|
|
66
|
+
export declare function _rpcRename(self: RpcHost, from: string, to: string): Promise<void>;
|
|
67
|
+
export declare function _rpcReadlink(self: RpcHost, path: string): Promise<string | null>;
|
|
68
|
+
export declare function _rpcSymlink(self: RpcHost, target: string, path: string): Promise<void>;
|
|
69
|
+
export declare function _rpcFsRevision(self: RpcHost, path?: string): Promise<number>;
|
|
70
|
+
export declare function _rpcFsOpen(self: RpcHost, path: string, flags: RuntimeOpenFlags): Promise<any>;
|
|
71
|
+
export declare function _rpcFsRead(self: RpcHost, handleId: number, offset: number | null, length: number): Promise<Uint8Array>;
|
|
72
|
+
export declare function _rpcFsWrite(self: RpcHost, handleId: number, offset: number | null, bytes: Uint8Array | ArrayBuffer | number[]): Promise<number>;
|
|
73
|
+
export declare function _rpcFsClose(self: RpcHost, handleId: number): Promise<void>;
|
|
64
74
|
/**
|
|
65
75
|
* Called by CirrusHmrRPC.hmrSend. Runs in the DO's own context so
|
|
66
76
|
* we can legally write to hibernatable WS sockets owned by this
|
|
@@ -214,6 +224,7 @@ export declare function _rpcCpStdinWrite(self: RpcHost, childPid: number, data:
|
|
|
214
224
|
ok: boolean;
|
|
215
225
|
}>;
|
|
216
226
|
export declare function _rpcCpStdinEnd(self: RpcHost, childPid: number): Promise<void>;
|
|
227
|
+
export declare function _rpcCpReadStdin(self: RpcHost, childPid: number, waitMs: number): Promise<any>;
|
|
217
228
|
export declare function _rpcCpReadOutput(self: RpcHost, childPid: number, fd: 1 | 2, sinceSeq: number, waitMs: number): Promise<any>;
|
|
218
229
|
export declare function _rpcCpDrainOutput(self: RpcHost, childPid: number): Promise<any>;
|
|
219
230
|
export declare function _rpcCpKill(self: RpcHost, childPid: number, signal: string): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/session/rpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/session/rpc.ts"],"names":[],"mappings":"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"}
|