@nimbus-sh/worker 0.1.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.
Files changed (408) hide show
  1. package/README.md +219 -0
  2. package/dist/_shared/bytes.d.ts +18 -0
  3. package/dist/_shared/bytes.d.ts.map +1 -0
  4. package/dist/_shared/bytes.js +17 -0
  5. package/dist/_shared/cache-stats.d.ts +146 -0
  6. package/dist/_shared/cache-stats.d.ts.map +1 -0
  7. package/dist/_shared/cache-stats.js +162 -0
  8. package/dist/_shared/exports-resolver.d.ts +76 -0
  9. package/dist/_shared/exports-resolver.d.ts.map +1 -0
  10. package/dist/_shared/exports-resolver.js +284 -0
  11. package/dist/_shared/install-phase.d.ts +47 -0
  12. package/dist/_shared/install-phase.d.ts.map +1 -0
  13. package/dist/_shared/install-phase.js +1 -0
  14. package/dist/_shared/real-node-imports.d.ts +38 -0
  15. package/dist/_shared/real-node-imports.d.ts.map +1 -0
  16. package/dist/_shared/real-node-imports.js +46 -0
  17. package/dist/_shared/retry.d.ts +93 -0
  18. package/dist/_shared/retry.d.ts.map +1 -0
  19. package/dist/_shared/retry.js +161 -0
  20. package/dist/_shared/session-id.d.ts +39 -0
  21. package/dist/_shared/session-id.d.ts.map +1 -0
  22. package/dist/_shared/session-id.js +127 -0
  23. package/dist/_shared/session-router.d.ts +104 -0
  24. package/dist/_shared/session-router.d.ts.map +1 -0
  25. package/dist/_shared/session-router.js +165 -0
  26. package/dist/_shared/w7-frame.d.ts +93 -0
  27. package/dist/_shared/w7-frame.d.ts.map +1 -0
  28. package/dist/_shared/w7-frame.js +402 -0
  29. package/dist/auth/index.d.ts +16 -0
  30. package/dist/auth/index.d.ts.map +1 -0
  31. package/dist/auth/index.js +15 -0
  32. package/dist/auth/middleware.d.ts +85 -0
  33. package/dist/auth/middleware.d.ts.map +1 -0
  34. package/dist/auth/middleware.js +150 -0
  35. package/dist/auth/token.d.ts +96 -0
  36. package/dist/auth/token.d.ts.map +1 -0
  37. package/dist/auth/token.js +226 -0
  38. package/dist/auth/types.d.ts +141 -0
  39. package/dist/auth/types.d.ts.map +1 -0
  40. package/dist/auth/types.js +114 -0
  41. package/dist/bindings/d1.d.ts +102 -0
  42. package/dist/bindings/d1.d.ts.map +1 -0
  43. package/dist/bindings/d1.js +549 -0
  44. package/dist/bindings/kv.d.ts +82 -0
  45. package/dist/bindings/kv.d.ts.map +1 -0
  46. package/dist/bindings/kv.js +290 -0
  47. package/dist/bindings/r2.d.ts +137 -0
  48. package/dist/bindings/r2.d.ts.map +1 -0
  49. package/dist/bindings/r2.js +379 -0
  50. package/dist/cirrus-npm-cjs.generated.d.ts +17 -0
  51. package/dist/cirrus-npm-cjs.generated.d.ts.map +1 -0
  52. package/dist/cirrus-npm-cjs.generated.js +41 -0
  53. package/dist/cirrus-plugin-react.generated.d.ts +34 -0
  54. package/dist/cirrus-plugin-react.generated.d.ts.map +1 -0
  55. package/dist/cirrus-plugin-react.generated.js +33 -0
  56. package/dist/constants.d.ts +34 -0
  57. package/dist/constants.d.ts.map +1 -0
  58. package/dist/constants.js +116 -0
  59. package/dist/esbuild-wasm-bundle.generated.d.ts +41 -0
  60. package/dist/esbuild-wasm-bundle.generated.d.ts.map +1 -0
  61. package/dist/esbuild-wasm-bundle.generated.js +40 -0
  62. package/dist/facets/cirrus-real.d.ts +147 -0
  63. package/dist/facets/cirrus-real.d.ts.map +1 -0
  64. package/dist/facets/cirrus-real.js +981 -0
  65. package/dist/facets/inner-do-registry.d.ts +41 -0
  66. package/dist/facets/inner-do-registry.d.ts.map +1 -0
  67. package/dist/facets/inner-do-registry.js +51 -0
  68. package/dist/facets/manager.d.ts +314 -0
  69. package/dist/facets/manager.d.ts.map +1 -0
  70. package/dist/facets/manager.js +2681 -0
  71. package/dist/facets/process.d.ts +318 -0
  72. package/dist/facets/process.d.ts.map +1 -0
  73. package/dist/facets/process.js +567 -0
  74. package/dist/facets/real-vite-fs-shim.d.ts +151 -0
  75. package/dist/facets/real-vite-fs-shim.d.ts.map +1 -0
  76. package/dist/facets/real-vite-fs-shim.js +1279 -0
  77. package/dist/facets/real-vite-hmr.d.ts +142 -0
  78. package/dist/facets/real-vite-hmr.d.ts.map +1 -0
  79. package/dist/facets/real-vite-hmr.js +476 -0
  80. package/dist/facets/vite-dev-server.d.ts +293 -0
  81. package/dist/facets/vite-dev-server.d.ts.map +1 -0
  82. package/dist/facets/vite-dev-server.js +2580 -0
  83. package/dist/facets/wasm-swap-registry.d.ts +261 -0
  84. package/dist/facets/wasm-swap-registry.d.ts.map +1 -0
  85. package/dist/facets/wasm-swap-registry.js +551 -0
  86. package/dist/facets/ws-terminal.d.ts +107 -0
  87. package/dist/facets/ws-terminal.d.ts.map +1 -0
  88. package/dist/facets/ws-terminal.js +207 -0
  89. package/dist/git/commands.d.ts +13 -0
  90. package/dist/git/commands.d.ts.map +1 -0
  91. package/dist/git/commands.js +633 -0
  92. package/dist/git/network-facet.d.ts +61 -0
  93. package/dist/git/network-facet.d.ts.map +1 -0
  94. package/dist/git/network-facet.js +700 -0
  95. package/dist/git-bundle.generated.d.ts +16 -0
  96. package/dist/git-bundle.generated.d.ts.map +1 -0
  97. package/dist/git-bundle.generated.js +15 -0
  98. package/dist/index.d.ts +41 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +73 -0
  101. package/dist/loaders/child-process/spawn-facet.d.ts +90 -0
  102. package/dist/loaders/child-process/spawn-facet.d.ts.map +1 -0
  103. package/dist/loaders/child-process/spawn-facet.js +103 -0
  104. package/dist/loaders/child-process/spawn-pool.d.ts +110 -0
  105. package/dist/loaders/child-process/spawn-pool.d.ts.map +1 -0
  106. package/dist/loaders/child-process/spawn-pool.js +161 -0
  107. package/dist/loaders/fanout-pool.d.ts +195 -0
  108. package/dist/loaders/fanout-pool.d.ts.map +1 -0
  109. package/dist/loaders/fanout-pool.js +326 -0
  110. package/dist/loaders/generated-workers.d.ts +26 -0
  111. package/dist/loaders/generated-workers.d.ts.map +1 -0
  112. package/dist/loaders/generated-workers.js +25 -0
  113. package/dist/loaders/index.d.ts +15 -0
  114. package/dist/loaders/index.d.ts.map +1 -0
  115. package/dist/loaders/index.js +13 -0
  116. package/dist/loaders/loader-pool.d.ts +273 -0
  117. package/dist/loaders/loader-pool.d.ts.map +1 -0
  118. package/dist/loaders/loader-pool.js +624 -0
  119. package/dist/loaders/npm-resolve-preamble.d.ts +34 -0
  120. package/dist/loaders/npm-resolve-preamble.d.ts.map +1 -0
  121. package/dist/loaders/npm-resolve-preamble.js +237 -0
  122. package/dist/loaders/pre-bundle-preamble.d.ts +41 -0
  123. package/dist/loaders/pre-bundle-preamble.d.ts.map +1 -0
  124. package/dist/loaders/pre-bundle-preamble.js +114 -0
  125. package/dist/loaders/vendor/codegen.d.ts +24 -0
  126. package/dist/loaders/vendor/codegen.d.ts.map +1 -0
  127. package/dist/loaders/vendor/codegen.js +44 -0
  128. package/dist/loaders/vendor/errors.d.ts +24 -0
  129. package/dist/loaders/vendor/errors.d.ts.map +1 -0
  130. package/dist/loaders/vendor/errors.js +46 -0
  131. package/dist/loaders/vendor/index.d.ts +16 -0
  132. package/dist/loaders/vendor/index.d.ts.map +1 -0
  133. package/dist/loaders/vendor/index.js +11 -0
  134. package/dist/loaders/vendor/pool.d.ts +88 -0
  135. package/dist/loaders/vendor/pool.d.ts.map +1 -0
  136. package/dist/loaders/vendor/pool.js +353 -0
  137. package/dist/loaders/vendor/primitives.d.ts +11 -0
  138. package/dist/loaders/vendor/primitives.d.ts.map +1 -0
  139. package/dist/loaders/vendor/primitives.js +33 -0
  140. package/dist/loaders/vendor/serialize.d.ts +3 -0
  141. package/dist/loaders/vendor/serialize.d.ts.map +1 -0
  142. package/dist/loaders/vendor/serialize.js +25 -0
  143. package/dist/loaders/vendor/types.d.ts +60 -0
  144. package/dist/loaders/vendor/types.d.ts.map +1 -0
  145. package/dist/loaders/vendor/types.js +4 -0
  146. package/dist/npm/cache.d.ts +136 -0
  147. package/dist/npm/cache.d.ts.map +1 -0
  148. package/dist/npm/cache.js +429 -0
  149. package/dist/npm/install-batch-facet.d.ts +129 -0
  150. package/dist/npm/install-batch-facet.d.ts.map +1 -0
  151. package/dist/npm/install-batch-facet.js +598 -0
  152. package/dist/npm/install-facet.d.ts +29 -0
  153. package/dist/npm/install-facet.d.ts.map +1 -0
  154. package/dist/npm/install-facet.js +9 -0
  155. package/dist/npm/installer.d.ts +239 -0
  156. package/dist/npm/installer.d.ts.map +1 -0
  157. package/dist/npm/installer.js +2022 -0
  158. package/dist/npm/npx-install.d.ts +74 -0
  159. package/dist/npm/npx-install.d.ts.map +1 -0
  160. package/dist/npm/npx-install.js +302 -0
  161. package/dist/npm/pre-bundle-facet.d.ts +168 -0
  162. package/dist/npm/pre-bundle-facet.d.ts.map +1 -0
  163. package/dist/npm/pre-bundle-facet.js +653 -0
  164. package/dist/npm/r2-cache.d.ts +286 -0
  165. package/dist/npm/r2-cache.d.ts.map +1 -0
  166. package/dist/npm/r2-cache.js +506 -0
  167. package/dist/npm/resolve-facet.d.ts +202 -0
  168. package/dist/npm/resolve-facet.d.ts.map +1 -0
  169. package/dist/npm/resolve-facet.js +833 -0
  170. package/dist/npm/resolve-one-facet.d.ts +204 -0
  171. package/dist/npm/resolve-one-facet.d.ts.map +1 -0
  172. package/dist/npm/resolve-one-facet.js +437 -0
  173. package/dist/npm/resolver.d.ts +109 -0
  174. package/dist/npm/resolver.d.ts.map +1 -0
  175. package/dist/npm/resolver.js +899 -0
  176. package/dist/npm/tarball-stream.d.ts +85 -0
  177. package/dist/npm/tarball-stream.d.ts.map +1 -0
  178. package/dist/npm/tarball-stream.js +205 -0
  179. package/dist/npm/tarball.d.ts +51 -0
  180. package/dist/npm/tarball.d.ts.map +1 -0
  181. package/dist/npm/tarball.js +185 -0
  182. package/dist/observability/diag-counters.d.ts +292 -0
  183. package/dist/observability/diag-counters.d.ts.map +1 -0
  184. package/dist/observability/diag-counters.js +302 -0
  185. package/dist/observability/heap-estimate.d.ts +166 -0
  186. package/dist/observability/heap-estimate.d.ts.map +1 -0
  187. package/dist/observability/heap-estimate.js +192 -0
  188. package/dist/observability/heavy-alloc-coord.d.ts +95 -0
  189. package/dist/observability/heavy-alloc-coord.d.ts.map +1 -0
  190. package/dist/observability/heavy-alloc-coord.js +149 -0
  191. package/dist/observability/oom-classify.d.ts +56 -0
  192. package/dist/observability/oom-classify.d.ts.map +1 -0
  193. package/dist/observability/oom-classify.js +118 -0
  194. package/dist/observability/oom-discriminator.d.ts +192 -0
  195. package/dist/observability/oom-discriminator.d.ts.map +1 -0
  196. package/dist/observability/oom-discriminator.js +233 -0
  197. package/dist/real-vite-bundle.generated.d.ts +46 -0
  198. package/dist/real-vite-bundle.generated.d.ts.map +1 -0
  199. package/dist/real-vite-bundle.generated.js +53 -0
  200. package/dist/replica/routing.d.ts +171 -0
  201. package/dist/replica/routing.d.ts.map +1 -0
  202. package/dist/replica/routing.js +288 -0
  203. package/dist/replica/suspension.d.ts +36 -0
  204. package/dist/replica/suspension.d.ts.map +1 -0
  205. package/dist/replica/suspension.js +49 -0
  206. package/dist/router/index.d.ts +156 -0
  207. package/dist/router/index.d.ts.map +1 -0
  208. package/dist/router/index.js +220 -0
  209. package/dist/runtime/assets-loader.d.ts +71 -0
  210. package/dist/runtime/assets-loader.d.ts.map +1 -0
  211. package/dist/runtime/assets-loader.js +128 -0
  212. package/dist/runtime/barrel-detect.d.ts +46 -0
  213. package/dist/runtime/barrel-detect.d.ts.map +1 -0
  214. package/dist/runtime/barrel-detect.js +73 -0
  215. package/dist/runtime/barrel-synthesizer.d.ts +181 -0
  216. package/dist/runtime/barrel-synthesizer.d.ts.map +1 -0
  217. package/dist/runtime/barrel-synthesizer.js +541 -0
  218. package/dist/runtime/bun-repl.d.ts +46 -0
  219. package/dist/runtime/bun-repl.d.ts.map +1 -0
  220. package/dist/runtime/bun-repl.js +326 -0
  221. package/dist/runtime/bun-runner.d.ts +66 -0
  222. package/dist/runtime/bun-runner.d.ts.map +1 -0
  223. package/dist/runtime/bun-runner.js +219 -0
  224. package/dist/runtime/clang-runner.d.ts +38 -0
  225. package/dist/runtime/clang-runner.d.ts.map +1 -0
  226. package/dist/runtime/clang-runner.js +1033 -0
  227. package/dist/runtime/comment-strip.d.ts +37 -0
  228. package/dist/runtime/comment-strip.d.ts.map +1 -0
  229. package/dist/runtime/comment-strip.js +74 -0
  230. package/dist/runtime/esbuild-service.d.ts +201 -0
  231. package/dist/runtime/esbuild-service.d.ts.map +1 -0
  232. package/dist/runtime/esbuild-service.js +1444 -0
  233. package/dist/runtime/esbuild-wasm-bytes.d.ts +87 -0
  234. package/dist/runtime/esbuild-wasm-bytes.d.ts.map +1 -0
  235. package/dist/runtime/esbuild-wasm-bytes.js +131 -0
  236. package/dist/runtime/framework-detect.d.ts +71 -0
  237. package/dist/runtime/framework-detect.d.ts.map +1 -0
  238. package/dist/runtime/framework-detect.js +178 -0
  239. package/dist/runtime/long-running-handle.d.ts +133 -0
  240. package/dist/runtime/long-running-handle.d.ts.map +1 -0
  241. package/dist/runtime/long-running-handle.js +192 -0
  242. package/dist/runtime/node-repl.d.ts +36 -0
  243. package/dist/runtime/node-repl.d.ts.map +1 -0
  244. package/dist/runtime/node-repl.js +293 -0
  245. package/dist/runtime/node-runner.d.ts +111 -0
  246. package/dist/runtime/node-runner.d.ts.map +1 -0
  247. package/dist/runtime/node-runner.js +194 -0
  248. package/dist/runtime/node-shims.d.ts +24 -0
  249. package/dist/runtime/node-shims.d.ts.map +1 -0
  250. package/dist/runtime/node-shims.js +3019 -0
  251. package/dist/runtime/package-manager.d.ts +118 -0
  252. package/dist/runtime/package-manager.d.ts.map +1 -0
  253. package/dist/runtime/package-manager.js +420 -0
  254. package/dist/runtime/port-registry.d.ts +80 -0
  255. package/dist/runtime/port-registry.d.ts.map +1 -0
  256. package/dist/runtime/port-registry.js +166 -0
  257. package/dist/runtime/process-logs-api.d.ts +102 -0
  258. package/dist/runtime/process-logs-api.d.ts.map +1 -0
  259. package/dist/runtime/process-logs-api.js +253 -0
  260. package/dist/runtime/process-logs.d.ts +311 -0
  261. package/dist/runtime/process-logs.d.ts.map +1 -0
  262. package/dist/runtime/process-logs.js +656 -0
  263. package/dist/runtime/process-table.d.ts +65 -0
  264. package/dist/runtime/process-table.d.ts.map +1 -0
  265. package/dist/runtime/process-table.js +107 -0
  266. package/dist/runtime/project-detect.d.ts +21 -0
  267. package/dist/runtime/project-detect.d.ts.map +1 -0
  268. package/dist/runtime/project-detect.js +46 -0
  269. package/dist/runtime/python-repl.d.ts +66 -0
  270. package/dist/runtime/python-repl.d.ts.map +1 -0
  271. package/dist/runtime/python-repl.js +563 -0
  272. package/dist/runtime/python-runner.d.ts +50 -0
  273. package/dist/runtime/python-runner.d.ts.map +1 -0
  274. package/dist/runtime/python-runner.js +870 -0
  275. package/dist/runtime/repl-session.d.ts +160 -0
  276. package/dist/runtime/repl-session.d.ts.map +1 -0
  277. package/dist/runtime/repl-session.js +393 -0
  278. package/dist/runtime/require-resolver.d.ts +52 -0
  279. package/dist/runtime/require-resolver.d.ts.map +1 -0
  280. package/dist/runtime/require-resolver.js +690 -0
  281. package/dist/runtime/router-basename.d.ts +36 -0
  282. package/dist/runtime/router-basename.d.ts.map +1 -0
  283. package/dist/runtime/router-basename.js +310 -0
  284. package/dist/runtime/ruby-repl.d.ts +43 -0
  285. package/dist/runtime/ruby-repl.d.ts.map +1 -0
  286. package/dist/runtime/ruby-repl.js +229 -0
  287. package/dist/runtime/ruby-runner.d.ts +62 -0
  288. package/dist/runtime/ruby-runner.d.ts.map +1 -0
  289. package/dist/runtime/ruby-runner.js +737 -0
  290. package/dist/runtime/runtime-catalog.d.ts +99 -0
  291. package/dist/runtime/runtime-catalog.d.ts.map +1 -0
  292. package/dist/runtime/runtime-catalog.js +183 -0
  293. package/dist/runtime/runtime-registry.d.ts +136 -0
  294. package/dist/runtime/runtime-registry.d.ts.map +1 -0
  295. package/dist/runtime/runtime-registry.js +318 -0
  296. package/dist/runtime/streams.d.ts +13 -0
  297. package/dist/runtime/streams.d.ts.map +1 -0
  298. package/dist/runtime/streams.js +402 -0
  299. package/dist/runtime/wasi-instance.d.ts +190 -0
  300. package/dist/runtime/wasi-instance.d.ts.map +1 -0
  301. package/dist/runtime/wasi-instance.js +2044 -0
  302. package/dist/runtime/wasm-runner.d.ts +117 -0
  303. package/dist/runtime/wasm-runner.d.ts.map +1 -0
  304. package/dist/runtime/wasm-runner.js +705 -0
  305. package/dist/session/bindings.d.ts +168 -0
  306. package/dist/session/bindings.d.ts.map +1 -0
  307. package/dist/session/bindings.js +524 -0
  308. package/dist/session/ctx-exports.d.ts +16 -0
  309. package/dist/session/ctx-exports.d.ts.map +1 -0
  310. package/dist/session/ctx-exports.js +22 -0
  311. package/dist/session/diag.d.ts +62 -0
  312. package/dist/session/diag.d.ts.map +1 -0
  313. package/dist/session/diag.js +118 -0
  314. package/dist/session/fs-watch.d.ts +132 -0
  315. package/dist/session/fs-watch.d.ts.map +1 -0
  316. package/dist/session/fs-watch.js +255 -0
  317. package/dist/session/helpers.d.ts +150 -0
  318. package/dist/session/helpers.d.ts.map +1 -0
  319. package/dist/session/helpers.js +472 -0
  320. package/dist/session/hibernation.d.ts +145 -0
  321. package/dist/session/hibernation.d.ts.map +1 -0
  322. package/dist/session/hibernation.js +385 -0
  323. package/dist/session/init-phases.d.ts +87 -0
  324. package/dist/session/init-phases.d.ts.map +1 -0
  325. package/dist/session/init-phases.js +137 -0
  326. package/dist/session/init.d.ts +46 -0
  327. package/dist/session/init.d.ts.map +1 -0
  328. package/dist/session/init.js +3579 -0
  329. package/dist/session/keys.d.ts +56 -0
  330. package/dist/session/keys.d.ts.map +1 -0
  331. package/dist/session/keys.js +55 -0
  332. package/dist/session/nimbus-session.d.ts +434 -0
  333. package/dist/session/nimbus-session.d.ts.map +1 -0
  334. package/dist/session/nimbus-session.js +1084 -0
  335. package/dist/session/programmatic.d.ts +105 -0
  336. package/dist/session/programmatic.d.ts.map +1 -0
  337. package/dist/session/programmatic.js +326 -0
  338. package/dist/session/replica-routes.d.ts +68 -0
  339. package/dist/session/replica-routes.d.ts.map +1 -0
  340. package/dist/session/replica-routes.js +77 -0
  341. package/dist/session/routes.d.ts +29 -0
  342. package/dist/session/routes.d.ts.map +1 -0
  343. package/dist/session/routes.js +1331 -0
  344. package/dist/session/rpc.d.ts +323 -0
  345. package/dist/session/rpc.d.ts.map +1 -0
  346. package/dist/session/rpc.js +808 -0
  347. package/dist/session/state-store.d.ts +210 -0
  348. package/dist/session/state-store.d.ts.map +1 -0
  349. package/dist/session/state-store.js +459 -0
  350. package/dist/session/supervisor-rpc.d.ts +269 -0
  351. package/dist/session/supervisor-rpc.d.ts.map +1 -0
  352. package/dist/session/supervisor-rpc.js +437 -0
  353. package/dist/session/ws-hibernation-config.d.ts +64 -0
  354. package/dist/session/ws-hibernation-config.d.ts.map +1 -0
  355. package/dist/session/ws-hibernation-config.js +89 -0
  356. package/dist/session/ws.d.ts +95 -0
  357. package/dist/session/ws.d.ts.map +1 -0
  358. package/dist/session/ws.js +395 -0
  359. package/dist/shell/features.d.ts +410 -0
  360. package/dist/shell/features.d.ts.map +1 -0
  361. package/dist/shell/features.js +1885 -0
  362. package/dist/shell/unix-commands.d.ts +15 -0
  363. package/dist/shell/unix-commands.d.ts.map +1 -0
  364. package/dist/shell/unix-commands.js +3703 -0
  365. package/dist/stubs/lifo-ui.d.ts +10 -0
  366. package/dist/stubs/lifo-ui.d.ts.map +1 -0
  367. package/dist/stubs/lifo-ui.js +1 -0
  368. package/dist/tailwind-play.generated.d.ts +19 -0
  369. package/dist/tailwind-play.generated.d.ts.map +1 -0
  370. package/dist/tailwind-play.generated.js +18 -0
  371. package/dist/vfs/dev-provider.d.ts +64 -0
  372. package/dist/vfs/dev-provider.d.ts.map +1 -0
  373. package/dist/vfs/dev-provider.js +191 -0
  374. package/dist/vfs/events.d.ts +51 -0
  375. package/dist/vfs/events.d.ts.map +1 -0
  376. package/dist/vfs/events.js +127 -0
  377. package/dist/vfs/path.d.ts +30 -0
  378. package/dist/vfs/path.d.ts.map +1 -0
  379. package/dist/vfs/path.js +41 -0
  380. package/dist/vfs/seed-project.d.ts +62 -0
  381. package/dist/vfs/seed-project.d.ts.map +1 -0
  382. package/dist/vfs/seed-project.js +1045 -0
  383. package/dist/vfs/sqlite-vfs.d.ts +435 -0
  384. package/dist/vfs/sqlite-vfs.d.ts.map +1 -0
  385. package/dist/vfs/sqlite-vfs.js +1670 -0
  386. package/dist/vfs/symlink-registry.d.ts +64 -0
  387. package/dist/vfs/symlink-registry.d.ts.map +1 -0
  388. package/dist/vfs/symlink-registry.js +137 -0
  389. package/dist/wrangler/nimbus-wrangler.d.ts +157 -0
  390. package/dist/wrangler/nimbus-wrangler.d.ts.map +1 -0
  391. package/dist/wrangler/nimbus-wrangler.js +931 -0
  392. package/package.json +77 -0
  393. package/public/_assets/cirrus-plugin-react.bundle.js +70740 -0
  394. package/public/_assets/esbuild-0.24.2.wasm +0 -0
  395. package/public/_assets/real-vite-bundle.js +101478 -0
  396. package/public/_assets/rollup.wasm +0 -0
  397. package/public/favicon.svg +8 -0
  398. package/public/index.html +565 -0
  399. package/public/s/index.html +2379 -0
  400. package/scripts/bundle-esbuild-wasm.mjs +244 -0
  401. package/scripts/bundle-facet-workers.mjs +137 -0
  402. package/scripts/bundle-git.mjs +118 -0
  403. package/scripts/bundle-npm-cjs.mjs +363 -0
  404. package/scripts/bundle-plugin-react.mjs +480 -0
  405. package/scripts/bundle-real-vite.mjs +959 -0
  406. package/scripts/bundle-runtime.mjs +600 -0
  407. package/scripts/bundle-tailwind-play.mjs +130 -0
  408. package/scripts/patch-lifo-ui.mjs +131 -0
@@ -0,0 +1,192 @@
1
+ /**
2
+ * long-running-handle.ts — generic adapter (primitive #3 + #4).
3
+ *
4
+ * Goal: any long-running thing in a Nimbus session that *behaves* like
5
+ * an HTTP server should plug into the supervisor's port registry the
6
+ * same way, so:
7
+ *
8
+ * - `ps` shows it (via `processTable.spawn` + `setLongRunning`)
9
+ * - `/preview/?port=N` routes to it
10
+ * - `/preview/` routes to the default-target one
11
+ * - `vite stop` / `kill <pid>` tears it down
12
+ *
13
+ * Today, two "long-running things" exist in-process:
14
+ *
15
+ * 1. ViteDevServer (the built-in Cirrus shim)
16
+ * 2. CirrusReal (the experimental real-vite facet)
17
+ *
18
+ * Both already expose a `handleRequest(request, pathname)` method.
19
+ * `PortRegistry` expects facets exposing `handleHttpRequest(request)`
20
+ * (single-arg, full request, with the inner path baked into the URL).
21
+ *
22
+ * `makeLongRunningPortStub` adapts the (request, pathname) shape into
23
+ * the (request) shape, by stripping a configurable `basePath` prefix
24
+ * from `request.url.pathname` and forwarding the rest. It is the ONE
25
+ * hook every future long-running thing will use; we do not write a new
26
+ * adapter per framework.
27
+ *
28
+ * NOTE: this is a SUPERVISOR-LOCAL stub, NOT a `WorkerEntrypoint`
29
+ * RPC stub. The port-registry handler at `routeRequest` happily
30
+ * accepts any object exposing `handleHttpRequest`, including in-DO
31
+ * wrappers. That is by design — a long-running facet is NOT required
32
+ * to live in a separate isolate; the routing primitive is the same
33
+ * either way.
34
+ */
35
+ /**
36
+ * Build a port-registry-compatible stub that forwards into the given
37
+ * handler.
38
+ *
39
+ * The supervisor calls `stub.handleHttpRequest(request)` with a request
40
+ * whose URL pathname is the path relative to the port (`PortRegistry`
41
+ * already strips the `/port/<n>` prefix). We pass that pathname to the
42
+ * underlying handler unchanged.
43
+ *
44
+ * Concretely: `GET /port/3000/api/users?id=42`
45
+ * → port-registry rewrites url to `/api/users?id=42`
46
+ * → stub.handleHttpRequest(req) // req.url has /api/users?id=42
47
+ * → handler.handleRequest(req, "/api/users?id=42")
48
+ */
49
+ export function makeLongRunningPortStub(handler) {
50
+ return {
51
+ async handleHttpRequest(request) {
52
+ const url = new URL(request.url);
53
+ const innerPath = (url.pathname || '/') + url.search;
54
+ return handler.handleRequest(request, innerPath);
55
+ },
56
+ };
57
+ }
58
+ /**
59
+ * Parse `--port N`, `--port=N`, `-p N`, `-p=N` from argv. Returns the
60
+ * parsed integer, or null. Last-wins (so `--port 3000 --port 4000` →
61
+ * 4000), matching POSIX convention.
62
+ *
63
+ * Out-of-range or non-numeric values are returned as null without
64
+ * throwing — callers fall back to the next source (env, config, default).
65
+ */
66
+ export function parsePortFromArgv(argv) {
67
+ let result = null;
68
+ for (let i = 0; i < argv.length; i++) {
69
+ const a = argv[i];
70
+ let candidate;
71
+ if (a === '--port' || a === '-p') {
72
+ candidate = argv[i + 1];
73
+ i++;
74
+ }
75
+ else if (a.startsWith('--port=')) {
76
+ candidate = a.slice('--port='.length);
77
+ }
78
+ else if (a.startsWith('-p=')) {
79
+ candidate = a.slice('-p='.length);
80
+ }
81
+ if (!candidate)
82
+ continue;
83
+ const n = parseInt(candidate, 10);
84
+ if (Number.isFinite(n) && n > 0 && n < 65536)
85
+ result = n;
86
+ }
87
+ return result;
88
+ }
89
+ /**
90
+ * Resolve a final port to bind to, given the various sources in
91
+ * priority order. Returns the first finite source.
92
+ *
93
+ * 1. argv flags (--port / -p)
94
+ * 2. env.PORT (post-shell-expansion; Markflow's `${PORT:-3000}` → 3000)
95
+ * 3. viteConfig.port (explicit `port: NNNN` in vite.config.ts)
96
+ * 4. fallback (caller-provided default, e.g. 5173 for vite, 3000 for express)
97
+ */
98
+ export function resolveLongRunningPort(opts) {
99
+ const argvPort = opts.argv ? parsePortFromArgv(opts.argv) : null;
100
+ if (argvPort)
101
+ return argvPort;
102
+ const envPortStr = opts.env?.PORT;
103
+ if (envPortStr !== undefined && envPortStr !== null && envPortStr !== '') {
104
+ const n = parseInt(String(envPortStr), 10);
105
+ if (Number.isFinite(n) && n > 0 && n < 65536)
106
+ return n;
107
+ }
108
+ if (opts.configPort && opts.configPort > 0 && opts.configPort < 65536) {
109
+ return opts.configPort;
110
+ }
111
+ return opts.fallback;
112
+ }
113
+ /**
114
+ * Expand shell-style `${VAR}` and `${VAR:-default}` references in a
115
+ * single argv token, against the supplied env map.
116
+ *
117
+ * Nimbus's shell does not expand parameter substitution, so a
118
+ * package.json script line like
119
+ *
120
+ * "dev": "vite --host 0.0.0.0 --port ${PORT:-3000}"
121
+ *
122
+ * arrives at the vite handler as the literal token `${PORT:-3000}`.
123
+ * Without expansion, `--port ${PORT:-3000}` is parsed as a non-numeric
124
+ * port and discarded. With expansion (against `env.PORT` falling back
125
+ * to `3000`), the user gets the port they asked for.
126
+ *
127
+ * Supports the two forms commonly seen in `package.json` scripts:
128
+ *
129
+ * - ${VAR} → env[VAR] || ''
130
+ * - ${VAR:-default} → env[VAR] || default
131
+ * - ${VAR:-other_var} → recursive (one level), so the default may
132
+ * itself reference an env var
133
+ *
134
+ * Does NOT support: command substitution, arithmetic substitution,
135
+ * pattern operators (`${VAR##pat}` etc.), positional params, glob.
136
+ * That is intentional — full shell semantics belong in the shell, not
137
+ * the argv expander; this helper covers ~95% of dev-script usage.
138
+ */
139
+ export function expandShellDefaults(token, env) {
140
+ if (!token || token.indexOf('${') < 0)
141
+ return token;
142
+ const lookup = (name) => {
143
+ const v = env?.[name];
144
+ if (v === undefined || v === null || v === '')
145
+ return undefined;
146
+ return String(v);
147
+ };
148
+ // ${VAR:-default}, ${VAR}. One pass; default value is itself
149
+ // recursively expanded once.
150
+ return token.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)(?::-([^}]*))?\}/g, (_m, name, def) => {
151
+ const v = lookup(name);
152
+ if (v !== undefined)
153
+ return v;
154
+ if (def === undefined)
155
+ return '';
156
+ // One recursion level so `${PORT:-${PORT_FALLBACK:-3000}}` works.
157
+ if (def.indexOf('${') >= 0)
158
+ return expandShellDefaults(def, env);
159
+ return def;
160
+ });
161
+ }
162
+ /**
163
+ * Apply `expandShellDefaults` to every argv token. Used at the top of
164
+ * a long-running handler before argv parsing so flag values are
165
+ * fully resolved.
166
+ */
167
+ export function expandArgvShellDefaults(argv, env) {
168
+ return argv.map((t) => expandShellDefaults(t, env));
169
+ }
170
+ /**
171
+ * Pick the default `/preview/` target when no `?port=N` is supplied
172
+ * AND no in-process `viteDevServer` is currently running. The strategy
173
+ * is "first PortRegistry entry, ordered by registration time" — so if
174
+ * a session has only one long-running thing (Markflow's vite on :3000),
175
+ * `/preview/` lands on it without the user supplying a port.
176
+ *
177
+ * Returns null if the registry is empty, in which case the caller
178
+ * surfaces the existing "no dev server running" placeholder.
179
+ */
180
+ export function pickDefaultPreviewPort(ports) {
181
+ if (ports.length === 0)
182
+ return null;
183
+ // Stable order: oldest registration first. A session that legitimately
184
+ // runs two servers (e.g. vite + express API) should put the FRONTEND
185
+ // (registered first) on the default `/preview/` route; the API is
186
+ // accessed via `/preview/?port=8000`.
187
+ let oldest = ports[0];
188
+ for (const p of ports)
189
+ if (p.registeredAt < oldest.registeredAt)
190
+ oldest = p;
191
+ return oldest.port;
192
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * node-repl.ts — Node REPL adapter.
3
+ *
4
+ * Node is native (workerd nodejs_compat). Pattern mirrors bun-repl.ts:
5
+ * a long-lived child-facet holds a vm.Context across submits.
6
+ *
7
+ * We do NOT use `node:repl` directly. Although workerd's nodejs_compat
8
+ * exposes node:repl, it expects a terminal stream interface (stdin/
9
+ * stdout) that the facet doesn't have — and trying to attach a
10
+ * Duplex stream to a Worker isolate is a bigger surgery than worth.
11
+ * Instead we replicate the core repl behaviours:
12
+ * - `> ` primary prompt, `... ` continuation
13
+ * - util.inspect of expression values (displayhook)
14
+ * - SyntaxError recoverable-detection for multi-line input
15
+ * - process.exit(code) propagation
16
+ * - .exit / .help / .clear dotted commands
17
+ *
18
+ * NOT supported in v1 (deferred):
19
+ * - REPL_MODE_STRICT switch
20
+ * - Top-level await at the prompt
21
+ * - Tab-completion
22
+ * - History pickling
23
+ */
24
+ import type { FacetManager } from '../facets/manager.js';
25
+ import type { WebSocketTerminal } from '../facets/ws-terminal.js';
26
+ export interface NodeReplDeps {
27
+ facetMgr: FacetManager;
28
+ terminal: WebSocketTerminal;
29
+ }
30
+ /**
31
+ * Top-level wrapper: builds a Node REPL adapter, drives a ReplSession
32
+ * to completion, returns the exit code. Called from the node factory's
33
+ * wrapper in init.ts when `node` is invoked with no args.
34
+ */
35
+ export declare function runNodeRepl(deps: NodeReplDeps): Promise<number>;
36
+ //# sourceMappingURL=node-repl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-repl.d.ts","sourceRoot":"","sources":["../../src/runtime/node-repl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAKlE,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AA2RD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAIrE"}
@@ -0,0 +1,293 @@
1
+ /**
2
+ * node-repl.ts — Node REPL adapter.
3
+ *
4
+ * Node is native (workerd nodejs_compat). Pattern mirrors bun-repl.ts:
5
+ * a long-lived child-facet holds a vm.Context across submits.
6
+ *
7
+ * We do NOT use `node:repl` directly. Although workerd's nodejs_compat
8
+ * exposes node:repl, it expects a terminal stream interface (stdin/
9
+ * stdout) that the facet doesn't have — and trying to attach a
10
+ * Duplex stream to a Worker isolate is a bigger surgery than worth.
11
+ * Instead we replicate the core repl behaviours:
12
+ * - `> ` primary prompt, `... ` continuation
13
+ * - util.inspect of expression values (displayhook)
14
+ * - SyntaxError recoverable-detection for multi-line input
15
+ * - process.exit(code) propagation
16
+ * - .exit / .help / .clear dotted commands
17
+ *
18
+ * NOT supported in v1 (deferred):
19
+ * - REPL_MODE_STRICT switch
20
+ * - Top-level await at the prompt
21
+ * - Tab-completion
22
+ * - History pickling
23
+ */
24
+ import { ReplSession } from './repl-session.js';
25
+ import { NODE_VERSION } from '../constants.js';
26
+ class NodeReplAdapter {
27
+ pool = null;
28
+ initDone = false;
29
+ deps;
30
+ ps1 = '> ';
31
+ ps2 = '... ';
32
+ constructor(deps) {
33
+ this.deps = deps;
34
+ }
35
+ banner() {
36
+ return (`Node.js ${NODE_VERSION} compatibility layer (Nimbus, over Cloudflare workerd)\r\n` +
37
+ 'This is not Node.js itself. It is the workerd `nodejs_compat` API\r\n' +
38
+ "surface on top of V8. workerd's CSP blocks runtime eval/new-Function,\r\n" +
39
+ 'so the REPL cannot persist `var`/`let`/`const` across lines.\r\n' +
40
+ '`console.log` and side-effect calls work per line. For stateful work,\r\n' +
41
+ 'run a script: `node -e "<code>"` or `node script.js`\r\n' +
42
+ 'Type ".help" for more information.\r\n');
43
+ }
44
+ async push(source) {
45
+ const trimmed = source.trim();
46
+ if (trimmed === '.exit') {
47
+ return { kind: 'exit', exitCode: 0 };
48
+ }
49
+ if (trimmed === '.help') {
50
+ return {
51
+ kind: 'output',
52
+ stdout: '.exit Exit the REPL\r\n' +
53
+ '.help Print this help\r\n' +
54
+ '.clear Reset context\r\n',
55
+ stderr: '',
56
+ };
57
+ }
58
+ if (trimmed === '.clear') {
59
+ this.initDone = false;
60
+ return { kind: 'output', stdout: 'Clearing context...\r\n', stderr: '' };
61
+ }
62
+ try {
63
+ await this.ensurePool();
64
+ }
65
+ catch (e) {
66
+ return { kind: 'error', stderr: `[node-repl] bootstrap failed: ${e?.message || e}\n` };
67
+ }
68
+ if (!this.initDone) {
69
+ try {
70
+ const initResult = await this.submitFacetFn({ mode: 'init' });
71
+ if (initResult.error) {
72
+ return { kind: 'error', stderr: `[node-repl] init failed: ${initResult.error}\n` };
73
+ }
74
+ this.initDone = true;
75
+ }
76
+ catch (e) {
77
+ return { kind: 'error', stderr: `[node-repl] init dispatch failed: ${e?.message || e}\n` };
78
+ }
79
+ }
80
+ let result;
81
+ try {
82
+ result = await this.submitFacetFn({ mode: 'push', source });
83
+ }
84
+ catch (e) {
85
+ return { kind: 'error', stderr: `[node-repl] push dispatch failed: ${e?.message || e}\n` };
86
+ }
87
+ if (result.exit) {
88
+ return {
89
+ kind: 'exit',
90
+ exitCode: result.exitCode || 0,
91
+ stdout: result.stdout,
92
+ stderr: result.stderr,
93
+ };
94
+ }
95
+ if (result.incomplete) {
96
+ return { kind: 'incomplete' };
97
+ }
98
+ return { kind: 'output', stdout: result.stdout || '', stderr: result.stderr || '' };
99
+ }
100
+ async close() {
101
+ if (this.pool) {
102
+ try {
103
+ this.pool.dispose?.();
104
+ }
105
+ catch { /* fail-soft */ }
106
+ this.pool = null;
107
+ }
108
+ this.initDone = false;
109
+ }
110
+ async ensurePool() {
111
+ if (this.pool)
112
+ return;
113
+ const { facetMgr } = this.deps;
114
+ const env = facetMgr.env;
115
+ const ctx = facetMgr.ctx;
116
+ const { NimbusLoaderPool } = await import('../loaders/loader-pool.js');
117
+ this.pool = new NimbusLoaderPool(env, ctx, {
118
+ tag: 'node-repl',
119
+ concurrency: 1,
120
+ omitSupervisor: true,
121
+ preamble: '', // node is native — no preamble shim needed
122
+ });
123
+ }
124
+ async submitFacetFn(args) {
125
+ return await this.pool.submit(nodeReplStepFacetFn, args, {
126
+ timeoutMs: 60_000,
127
+ });
128
+ }
129
+ }
130
+ /**
131
+ * Facet-side function. Self-contained — serialized via fn.toString()
132
+ * across the LOADER boundary; no closure captures, no class refs,
133
+ * no bare 'this' word (the serializer rejects /\bthis\b/).
134
+ *
135
+ * Modes:
136
+ * - 'init': create vm.createContext(), expose curated globals,
137
+ * stash on globalThis.__nimbus_node_ctx.
138
+ * - 'push': try expression-mode eval; fall back to statement-mode;
139
+ * util.inspect non-undefined result; surface process.exit sentinel.
140
+ */
141
+ function nodeReplStepFacetFn(args) {
142
+ const g = globalThis;
143
+ return (async function () {
144
+ if (args.mode === 'init') {
145
+ // workerd's node:vm is a stub (non-functional in nodejs_compat).
146
+ // Use direct eval against the facet's globalThis with console
147
+ // overrides for output capture + process.exit sentinel.
148
+ // @ts-ignore — node:util via workerd nodejs_compat at runtime.
149
+ const utilMod = await import('node:util');
150
+ g.__nimbus_node_util = utilMod;
151
+ g.__nimbus_node_stdout = [];
152
+ g.__nimbus_node_stderr = [];
153
+ const stdoutPush = (xs) => g.__nimbus_node_stdout.push(xs.map((x) => typeof x === 'string' ? x : utilMod.inspect(x, { colors: false })).join(' ') + '\n');
154
+ const stderrPush = (xs) => g.__nimbus_node_stderr.push(xs.map((x) => typeof x === 'string' ? x : utilMod.inspect(x, { colors: false })).join(' ') + '\n');
155
+ g.__nimbus_node_orig_console = g.console;
156
+ g.console = {
157
+ log: (...xs) => stdoutPush(xs),
158
+ error: (...xs) => stderrPush(xs),
159
+ warn: (...xs) => stderrPush(xs),
160
+ info: (...xs) => stdoutPush(xs),
161
+ debug: (...xs) => stdoutPush(xs),
162
+ };
163
+ if (g.process && typeof g.process === 'object') {
164
+ g.__nimbus_node_orig_exit = g.process.exit;
165
+ g.process.exit = function (code) {
166
+ const err = new Error('__nimbus_node_exit__');
167
+ err.__nimbus_exit_code = typeof code === 'number' ? code : 0;
168
+ throw err;
169
+ };
170
+ }
171
+ return { stdout: '', stderr: '' };
172
+ }
173
+ const source = args.source || '';
174
+ const utilMod = g.__nimbus_node_util;
175
+ if (!utilMod) {
176
+ return { stdout: '', stderr: '', error: 'node repl not initialised' };
177
+ }
178
+ const stdoutStart = g.__nimbus_node_stdout.length;
179
+ const stderrStart = g.__nimbus_node_stderr.length;
180
+ try {
181
+ new Function('(function(){\n' + source + '\n})');
182
+ }
183
+ catch (parseErr) {
184
+ const msg = parseErr?.message || '';
185
+ const incompletePatterns = [
186
+ /Unexpected end of input/i,
187
+ /Unterminated template literal/i,
188
+ /Unterminated string constant/i,
189
+ /missing \) after argument list/i,
190
+ /Unexpected token \}/i,
191
+ ];
192
+ if (incompletePatterns.some((re) => re.test(msg))) {
193
+ return {
194
+ stdout: g.__nimbus_node_stdout.slice(stdoutStart).join(''),
195
+ stderr: g.__nimbus_node_stderr.slice(stderrStart).join(''),
196
+ incomplete: true,
197
+ };
198
+ }
199
+ }
200
+ // workerd's CSP blocks eval() at request-time. `new Function` is
201
+ // permitted. var/let/const bindings inside the Function body don't
202
+ // persist on globalThis, so we use accumulate-and-replay: each push
203
+ // re-runs the full session history with the new line appended,
204
+ // returning the value of the current line's expression for
205
+ // displayhook.
206
+ if (!g.__nimbus_node_history)
207
+ g.__nimbus_node_history = [];
208
+ let result;
209
+ let evaluatedAs = 'stmt';
210
+ try {
211
+ const histBody = g.__nimbus_node_history.join('\n');
212
+ const exprFn = new Function(histBody + '\nreturn (' + source + '\n);');
213
+ result = exprFn.call(globalThis);
214
+ evaluatedAs = 'expr';
215
+ g.__nimbus_node_history.push(source);
216
+ }
217
+ catch (exprErr) {
218
+ if (exprErr && exprErr.__nimbus_exit_code !== undefined) {
219
+ return {
220
+ stdout: g.__nimbus_node_stdout.slice(stdoutStart).join(''),
221
+ stderr: g.__nimbus_node_stderr.slice(stderrStart).join(''),
222
+ exit: true,
223
+ exitCode: exprErr.__nimbus_exit_code,
224
+ };
225
+ }
226
+ if (exprErr && /EvalError|Code generation from strings disallowed/i.test(exprErr.message || '')) {
227
+ return {
228
+ stdout: g.__nimbus_node_stdout.slice(stdoutStart).join(''),
229
+ stderr: g.__nimbus_node_stderr.slice(stderrStart).join('') +
230
+ 'workerd CSP: cannot evaluate JS at request time. Use `node -e "<code>"` instead.\n',
231
+ };
232
+ }
233
+ try {
234
+ const histBody = g.__nimbus_node_history.join('\n');
235
+ const stmtFn = new Function(histBody + '\n' + source);
236
+ result = stmtFn.call(globalThis);
237
+ evaluatedAs = 'stmt';
238
+ g.__nimbus_node_history.push(source);
239
+ }
240
+ catch (stmtErr) {
241
+ if (stmtErr && stmtErr.__nimbus_exit_code !== undefined) {
242
+ return {
243
+ stdout: g.__nimbus_node_stdout.slice(stdoutStart).join(''),
244
+ stderr: g.__nimbus_node_stderr.slice(stderrStart).join(''),
245
+ exit: true,
246
+ exitCode: stmtErr.__nimbus_exit_code,
247
+ };
248
+ }
249
+ const errStr = (stmtErr && stmtErr.stack) || String(stmtErr);
250
+ return {
251
+ stdout: g.__nimbus_node_stdout.slice(stdoutStart).join(''),
252
+ stderr: g.__nimbus_node_stderr.slice(stderrStart).join('') + errStr + '\n',
253
+ };
254
+ }
255
+ }
256
+ if (result && typeof result.then === 'function') {
257
+ try {
258
+ result = await result;
259
+ }
260
+ catch (awaitErr) {
261
+ const errStr = (awaitErr && awaitErr.stack) || String(awaitErr);
262
+ return {
263
+ stdout: g.__nimbus_node_stdout.slice(stdoutStart).join(''),
264
+ stderr: g.__nimbus_node_stderr.slice(stderrStart).join('') + errStr + '\n',
265
+ };
266
+ }
267
+ }
268
+ if (evaluatedAs === 'expr' && result !== undefined) {
269
+ let rendered;
270
+ try {
271
+ rendered = utilMod.inspect(result, { colors: false, depth: 4 });
272
+ }
273
+ catch (_e) {
274
+ rendered = '<inspect failed>';
275
+ }
276
+ g.__nimbus_node_stdout.push(rendered + '\n');
277
+ }
278
+ return {
279
+ stdout: g.__nimbus_node_stdout.slice(stdoutStart).join(''),
280
+ stderr: g.__nimbus_node_stderr.slice(stderrStart).join(''),
281
+ };
282
+ })();
283
+ }
284
+ /**
285
+ * Top-level wrapper: builds a Node REPL adapter, drives a ReplSession
286
+ * to completion, returns the exit code. Called from the node factory's
287
+ * wrapper in init.ts when `node` is invoked with no args.
288
+ */
289
+ export async function runNodeRepl(deps) {
290
+ const adapter = new NodeReplAdapter(deps);
291
+ const session = new ReplSession(adapter, deps.terminal);
292
+ return await session.run();
293
+ }
@@ -0,0 +1,111 @@
1
+ /**
2
+ * node-runner.ts — Always-fresh-isolate dispatch for `node` and `bun`.
3
+ *
4
+ * Architectural promise (post fresh-isolate-bun-behavioral wave)
5
+ * ─────────────────────────────────────────────────────────────
6
+ * Every external runtime invocation (`node script`, `node -e`,
7
+ * `node --version`, `bun X`, `npx X`) is dispatched into a FRESH
8
+ * Worker Loader isolate. There is NO content-sniffing heuristic; the
9
+ * only routing signal is argv flags that explicitly mean "this is
10
+ * supposed to be long-lived" (`--watch`, `--inspect`, `--inspect-brk`).
11
+ *
12
+ * Two execution modes
13
+ * ───────────────────
14
+ * short — `facetMgr.exec(code, opts)`. Per-call LOADER.get(codeId)
15
+ * creates a fresh isolate keyed on hash(code+bundle+manifest).
16
+ * Output is streamed back via per-pid child DO Facet's
17
+ * supervisor RPC (`_rpcStdout` / `_rpcStderr`); supervisor
18
+ * awaits and returns the consolidated {exitCode, stdout,
19
+ * stderr}. The facet is deleted at completion.
20
+ *
21
+ * long — `facetMgr.spawn(workerCode, command, cwd)`. Fire-and-
22
+ * forget LOADER.load(). Returns {pid, facetStub} immediately;
23
+ * the shell prints a `[started (long-running): pid=N
24
+ * cmd=...]` notice and returns. The facet outlives the
25
+ * supervisor RPC until killed or evicted.
26
+ *
27
+ * Routing
28
+ * ───────
29
+ * args.includes('--watch' | '--inspect' | '--inspect-brk') → long
30
+ * default → short
31
+ *
32
+ * The previous `detectLongRunning(code, args)` content-regex sniff
33
+ * (deprecated) is removed. False-positives (a script that *imports*
34
+ * http but exits quickly) used to fork unnecessarily; with
35
+ * argv-only routing, the user gets the inline behaviour they expect
36
+ * unless they explicitly opted into long-running with a flag.
37
+ *
38
+ * For scripts that don't terminate but also don't carry one of the
39
+ * argv flags (e.g. an http.listen with no --watch), `facetMgr.exec`'s
40
+ * 5-minute timeout caps the worst case. The supervisor returns the
41
+ * timeout exit code; the facet is torn down. Documented trade-off.
42
+ *
43
+ * Anti-requirements observed
44
+ * ──────────────────────────
45
+ * - NO setTimeout / sleep on hot paths.
46
+ * - NO fallback to in-supervisor execution. facetMgr.exec /
47
+ * facetMgr.spawn throw if env.LOADER is missing.
48
+ * - NO content-sniffing heuristic. argv-only routing.
49
+ *
50
+ * Cold-start (measured against prod 9d30dc95):
51
+ * first-run `node -e` : 152–608 ms (warm-isolate cold case)
52
+ * warm `node -e` (median) : 102 ms
53
+ * warm `node script.js` : ~50–100 ms
54
+ * All under the 250ms warm-pool gate; no warm-pool needed.
55
+ */
56
+ import type { FacetManager } from '../facets/manager.js';
57
+ /**
58
+ * Argv-only long-running detection. The ONLY signals we honour:
59
+ * --watch (node --watch / bun --watch)
60
+ * --inspect (node --inspect)
61
+ * --inspect-brk (node --inspect-brk)
62
+ *
63
+ * No content sniff; no heuristic over the script source. False-positive
64
+ * class is gone. False-negative class is "user runs a server without
65
+ * --watch and the supervisor RPC blocks for 5 min" — accepted; users
66
+ * are guided in docs to add `--watch` for keep-alive servers OR rely
67
+ * on the 5-min timeout to recover.
68
+ */
69
+ export declare function isLongRunningInvocation(args: string[]): boolean;
70
+ /** Result of a `runFresh` call. */
71
+ export interface RunFreshResult {
72
+ exitCode: number;
73
+ stdout: string;
74
+ stderr: string;
75
+ spawnedPid?: number;
76
+ longRunning: boolean;
77
+ }
78
+ export interface RunFreshOpts {
79
+ argv?: string[];
80
+ env?: Record<string, string>;
81
+ cwd?: string;
82
+ filename?: string;
83
+ dirname?: string;
84
+ /** Display label for the long-running spawn. Defaults to the
85
+ * command + filename. Surfaced in the [started (long-running)]
86
+ * notice + /api/processes listing. */
87
+ command?: string;
88
+ /**
89
+ * G4 (runtime-pkg wave): caller has already allocated a
90
+ * processTable PID for this invocation; runFresh / facetMgr.exec
91
+ * should reuse it instead of spawning a duplicate. Used by the
92
+ * .bin handler in src/session/init.ts to keep `ps` showing ONE
93
+ * row per bin invocation instead of two (the wrapper + the inner
94
+ * node script).
95
+ */
96
+ skipSpawn?: boolean;
97
+ callerPid?: number;
98
+ }
99
+ /**
100
+ * Always-fresh-isolate dispatcher. Replaces the previous
101
+ * `runNodeScript` content-sniff variant. Used by both `node` and
102
+ * `bun` shell handlers.
103
+ */
104
+ export declare function runFresh(facetMgr: FacetManager, code: string, opts: RunFreshOpts): Promise<RunFreshResult>;
105
+ /**
106
+ * BACKWARD-COMPAT shim. The arch-gaps wave's `runNodeScript` is now an
107
+ * alias for `runFresh` so the call sites in src/session/init.ts don't
108
+ * need to change in this commit.
109
+ */
110
+ export declare const runNodeScript: typeof runFresh;
111
+ //# sourceMappingURL=node-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-runner.d.ts","sourceRoot":"","sources":["../../src/runtime/node-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AAG1E;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAO/D;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;2CAEuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6CD;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,cAAc,CAAC,CA8DzB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,iBAAW,CAAC"}