@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,41 @@
1
+ /**
2
+ * index.ts — Workers entrypoint.
3
+ *
4
+ * Two responsibilities, kept here because both must execute on every
5
+ * request before any DO dispatch:
6
+ *
7
+ * 1. Re-export the DO classes + RPC service bindings so wrangler
8
+ * bundles them and `enable_ctx_exports` (compat date 2026-04-01+)
9
+ * auto-populates them under ctx.exports. NimbusSession
10
+ * (the Durable Object) and SupervisorRPC + the inner-Worker
11
+ * binding shims (NimbusAssetsRPC, NimbusLoaderRPC,
12
+ * NimbusLoadedWorker, NimbusLoadedEntrypoint,
13
+ * NimbusDurableObjectNamespace, NimbusDOStub) all need to be
14
+ * reachable as exports of the entrypoint module.
15
+ *
16
+ * 2. Route HTTP/WS requests to the right session via the session
17
+ * ID embedded in /s/<id>/* paths. URL → DO mapping is a stable
18
+ * contract delegated to {@link createNimbusHandler}.
19
+ *
20
+ * The fetch handler delegates to `createNimbusHandler({ auth: { mode:
21
+ * 'auto' } })` — same shape an external embedder uses via
22
+ * `@nimbus-sh/worker`. This file's only deploy-specific logic is the
23
+ * W6.5 registry-event sink installed at module-load time.
24
+ */
25
+ import { NimbusSession, NimbusAssetsRPC, NimbusLoaderRPC, NimbusLoadedWorker, NimbusLoadedEntrypoint, NimbusDurableObjectNamespace, NimbusDOStub } from './session/nimbus-session.js';
26
+ import { SupervisorRPC } from './session/supervisor-rpc.js';
27
+ import { CirrusHmrRPC } from './facets/real-vite-hmr.js';
28
+ export { createNimbusHandler } from './router/index.js';
29
+ export type { NimbusHandler, NimbusHooks, NimbusHookContext, CustomRoutes, CreateNimbusHandlerOptions, AuthMode, NimbusAuthConfig, } from './router/index.js';
30
+ export { issueNimbusToken, verifyNimbusToken, NimbusAuthError, } from './auth/index.js';
31
+ export type { NimbusAuthEnv, NimbusTokenClaims, VerifiedNimbusToken, } from './auth/index.js';
32
+ export { NimbusSession, SupervisorRPC, NimbusAssetsRPC, NimbusLoaderRPC, NimbusLoadedWorker, NimbusLoadedEntrypoint, NimbusDurableObjectNamespace, NimbusDOStub, CirrusHmrRPC, };
33
+ /**
34
+ * Module-level reference to ctx.exports from the fetch handler.
35
+ * Used by NimbusSession to create loopback bindings for facets.
36
+ * Set once on the first fetch() call by createNimbusHandler.
37
+ */
38
+ export declare function getCtxExports(): any;
39
+ declare const _default: import("./index.js").NimbusHandler;
40
+ export default _default;
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,YAAY,EACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAUzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,0BAA0B,EAC1B,QAAQ,EACR,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAmBzB,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,YAAY,EACZ,YAAY,GACb,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAEnC;;AAOD,wBAAqC"}
package/dist/index.js ADDED
@@ -0,0 +1,73 @@
1
+ /**
2
+ * index.ts — Workers entrypoint.
3
+ *
4
+ * Two responsibilities, kept here because both must execute on every
5
+ * request before any DO dispatch:
6
+ *
7
+ * 1. Re-export the DO classes + RPC service bindings so wrangler
8
+ * bundles them and `enable_ctx_exports` (compat date 2026-04-01+)
9
+ * auto-populates them under ctx.exports. NimbusSession
10
+ * (the Durable Object) and SupervisorRPC + the inner-Worker
11
+ * binding shims (NimbusAssetsRPC, NimbusLoaderRPC,
12
+ * NimbusLoadedWorker, NimbusLoadedEntrypoint,
13
+ * NimbusDurableObjectNamespace, NimbusDOStub) all need to be
14
+ * reachable as exports of the entrypoint module.
15
+ *
16
+ * 2. Route HTTP/WS requests to the right session via the session
17
+ * ID embedded in /s/<id>/* paths. URL → DO mapping is a stable
18
+ * contract delegated to {@link createNimbusHandler}.
19
+ *
20
+ * The fetch handler delegates to `createNimbusHandler({ auth: { mode:
21
+ * 'auto' } })` — same shape an external embedder uses via
22
+ * `@nimbus-sh/worker`. This file's only deploy-specific logic is the
23
+ * W6.5 registry-event sink installed at module-load time.
24
+ */
25
+ import { NimbusSession, NimbusAssetsRPC, NimbusLoaderRPC, NimbusLoadedWorker, NimbusLoadedEntrypoint, NimbusDurableObjectNamespace, NimbusDOStub, } from './session/nimbus-session.js';
26
+ import { SupervisorRPC } from './session/supervisor-rpc.js';
27
+ import { CirrusHmrRPC } from './facets/real-vite-hmr.js';
28
+ import { createNimbusHandler } from './router/index.js';
29
+ import { getCtxExports as _getCtxExports } from './session/ctx-exports.js';
30
+ import { setRegistryEventSink } from './facets/wasm-swap-registry.js';
31
+ // Re-export the composable factory + companion types so embedders can
32
+ // build their own default-export handlers. The thin path:
33
+ // import { createNimbusHandler, NimbusSession } from '@nimbus-sh/worker';
34
+ // export { NimbusSession };
35
+ // export default createNimbusHandler();
36
+ export { createNimbusHandler } from './router/index.js';
37
+ // Auth surface — embedders need `issueNimbusToken` / `verifyNimbusToken`
38
+ // to mint tokens from custom routes. Re-exported here for the canonical
39
+ // `@nimbus-sh/worker` entry; `@nimbus-sh/sdk/token` re-re-exports from
40
+ // the dedicated auth subpath for non-Worker callers.
41
+ export { issueNimbusToken, verifyNimbusToken, NimbusAuthError, } from './auth/index.js';
42
+ // W6.5: install the default registry-event sink at module top so events
43
+ // emitted from any code path (supervisor BFS, facet drain, applyW6Registry)
44
+ // land in `wrangler tail` as one JSON line per event. When F-observability
45
+ // lands, replace this with `env.INSTALL_METRICS.writeDataPoint(...)`.
46
+ //
47
+ // Format: `[w6.5/registry] {"type":"swap","from":"...","to":"...","ctx":"top"}`
48
+ setRegistryEventSink((e) => {
49
+ try {
50
+ console.log(`[w6.5/registry] ${JSON.stringify(e)}`);
51
+ }
52
+ catch {
53
+ // Defensive — never break the install path on telemetry serialization.
54
+ }
55
+ });
56
+ // Re-export inner-Worker binding shims so wrangler bundles them AND
57
+ // ctx.exports auto-populates Service Bindings for them (via
58
+ // enable_ctx_exports; default at compat date 2026-04-01+).
59
+ export { NimbusSession, SupervisorRPC, NimbusAssetsRPC, NimbusLoaderRPC, NimbusLoadedWorker, NimbusLoadedEntrypoint, NimbusDurableObjectNamespace, NimbusDOStub, CirrusHmrRPC, };
60
+ /**
61
+ * Module-level reference to ctx.exports from the fetch handler.
62
+ * Used by NimbusSession to create loopback bindings for facets.
63
+ * Set once on the first fetch() call by createNimbusHandler.
64
+ */
65
+ export function getCtxExports() {
66
+ return _getCtxExports();
67
+ }
68
+ // Worker default export — a `createNimbusHandler()` instance running in
69
+ // auto auth mode. The live demo and dogfood embedder are bit-identical
70
+ // from here on; the only difference is `NIMBUS_LEGACY_PUBLIC=1` env var
71
+ // (set on the live demo, unset for the dogfood) flipping auth.mode to
72
+ // 'legacy' inside the auto-resolver.
73
+ export default createNimbusHandler();
@@ -0,0 +1,90 @@
1
+ /**
2
+ * spawn-facet.ts — Per-spawn task body run inside a fresh Worker Loader
3
+ * isolate via NimbusFanoutPool.
4
+ *
5
+ * Why this exists (gap #1 from arch-gaps wave)
6
+ * ────────────────────────────────────────────
7
+ * Pre-arch-gaps, child_process.spawn from inside a node facet RPCs back
8
+ * to the supervisor's FacetProcessManager._dispatch, which directly
9
+ * invokes either commandRegistry.runPureBuiltin or facetMgr.execStream.
10
+ * Both paths execute IN THE SUPERVISOR'S V8 CONTEXT. The supervisor's
11
+ * heap thus accumulates per-spawn allocation pressure.
12
+ *
13
+ * arch-gaps target: every cp.spawn / spawnSync / exec / execFile call
14
+ * runs inside a fresh Worker Loader isolate. NimbusFanoutPool (proven
15
+ * by F-1 install-batch and F-2 resolver fan-out) provides the auto-
16
+ * routing primitive (in-DO POC C for <5, peer-DO POC B for ≥5).
17
+ *
18
+ * What this task does
19
+ * ───────────────────
20
+ * 1. Mints a per-isolate token (`globalThis.__nimbus_g3_token__`).
21
+ * The first call into a fresh isolate creates the token; warm
22
+ * slots reuse it. Distinct tokens across calls = distinct
23
+ * isolates. Probe surface: audit/probes/arch-gaps/g3-e2e/
24
+ * child-spawn-isolation.mjs.
25
+ * 2. Delegates the actual command execution to
26
+ * `env.SUPERVISOR.cpDispatchInline(req, kind)`. This RPC reuses
27
+ * the existing pure-builtin / facet-direct execution paths
28
+ * (preserves correctness) but the dispatch envelope itself ran
29
+ * in a fresh isolate.
30
+ * 3. Returns `{ exitCode, marker, stdout, stderr }`. The supervisor-
31
+ * side ChildProcessSpawnPool wraps the marker into a per-spawn
32
+ * stderr line and forwards stdout/stderr to the parent's WS.
33
+ *
34
+ * Single-ownership invariant (carried over from git-freeze Q-fix):
35
+ * stdin (if any) is passed by-value as a string in `req.stdin`; no
36
+ * shared ArrayBuffer/Uint8Array refs. The result envelope returns
37
+ * stdout/stderr as strings (already copied by the structured-clone
38
+ * boundary).
39
+ *
40
+ * Stability invariants (cloudflare-parallel serialises via fn.toString):
41
+ * - No `this` references.
42
+ * - No closure capture other than args + (optional) preamble.
43
+ * - The function is the only export's body; helpers inlined.
44
+ */
45
+ export interface SpawnInIsolateSpec {
46
+ /** The original cp.spawn payload from node-shims.ts. */
47
+ req: {
48
+ command: string;
49
+ args: string[];
50
+ env: Record<string, string>;
51
+ cwd: string;
52
+ stdio?: any;
53
+ detached?: boolean;
54
+ shell?: boolean | string;
55
+ stdin?: string;
56
+ };
57
+ /** Pre-resolved kind from FacetProcessManager._dispatch. */
58
+ kind: 'pure-builtin' | 'facet-direct' | 'unknown';
59
+ /** Stable id the parent captured for the spawn (for hooks-routing). */
60
+ parentChildId: number | string;
61
+ }
62
+ export interface SpawnInIsolateResult {
63
+ exitCode: number;
64
+ /** Per-isolate token line: `[g3-spawn-isolate] tok=<TOKEN>\n`.
65
+ * Pre-pended to stderr by the supervisor-side spawn-pool when the
66
+ * result is forwarded to the cp.spawn parent. Distinct values across
67
+ * results = distinct isolates ran the dispatch. */
68
+ marker: string;
69
+ stdout: string;
70
+ stderr: string;
71
+ }
72
+ /**
73
+ * Per-spawn task body. Serialised via fn.toString() and dispatched
74
+ * by NimbusFanoutPool.submitMany. Signature must be (spec, env) so
75
+ * NimbusFanoutPool's internal `fn(item, env)` lines up.
76
+ *
77
+ * `env.SUPERVISOR` is the supervisor-rpc binding wired automatically
78
+ * by NimbusLoaderPool (see src/loaders/loader-pool.ts:288 — bindings
79
+ * default to `{ SUPERVISOR }`).
80
+ */
81
+ export declare const runSpawnInIsolate: (spec: SpawnInIsolateSpec, env: {
82
+ SUPERVISOR: {
83
+ cpDispatchInline(req: any, kind: string): Promise<{
84
+ exitCode: number;
85
+ stdout: string;
86
+ stderr: string;
87
+ }>;
88
+ };
89
+ }) => Promise<SpawnInIsolateResult>;
90
+ //# sourceMappingURL=spawn-facet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-facet.d.ts","sourceRoot":"","sources":["../../../src/loaders/child-process/spawn-facet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,4DAA4D;IAC5D,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAAC;IAClD,uEAAuE;IACvE,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;wDAGoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,kBAAkB,EACxB,KAAK;IACH,UAAU,EAAE;QACV,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;YAChD,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;SAClD,CAAC,CAAC;KACJ,CAAC;CACH,KACA,OAAO,CAAC,oBAAoB,CAoD9B,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * spawn-facet.ts — Per-spawn task body run inside a fresh Worker Loader
3
+ * isolate via NimbusFanoutPool.
4
+ *
5
+ * Why this exists (gap #1 from arch-gaps wave)
6
+ * ────────────────────────────────────────────
7
+ * Pre-arch-gaps, child_process.spawn from inside a node facet RPCs back
8
+ * to the supervisor's FacetProcessManager._dispatch, which directly
9
+ * invokes either commandRegistry.runPureBuiltin or facetMgr.execStream.
10
+ * Both paths execute IN THE SUPERVISOR'S V8 CONTEXT. The supervisor's
11
+ * heap thus accumulates per-spawn allocation pressure.
12
+ *
13
+ * arch-gaps target: every cp.spawn / spawnSync / exec / execFile call
14
+ * runs inside a fresh Worker Loader isolate. NimbusFanoutPool (proven
15
+ * by F-1 install-batch and F-2 resolver fan-out) provides the auto-
16
+ * routing primitive (in-DO POC C for <5, peer-DO POC B for ≥5).
17
+ *
18
+ * What this task does
19
+ * ───────────────────
20
+ * 1. Mints a per-isolate token (`globalThis.__nimbus_g3_token__`).
21
+ * The first call into a fresh isolate creates the token; warm
22
+ * slots reuse it. Distinct tokens across calls = distinct
23
+ * isolates. Probe surface: audit/probes/arch-gaps/g3-e2e/
24
+ * child-spawn-isolation.mjs.
25
+ * 2. Delegates the actual command execution to
26
+ * `env.SUPERVISOR.cpDispatchInline(req, kind)`. This RPC reuses
27
+ * the existing pure-builtin / facet-direct execution paths
28
+ * (preserves correctness) but the dispatch envelope itself ran
29
+ * in a fresh isolate.
30
+ * 3. Returns `{ exitCode, marker, stdout, stderr }`. The supervisor-
31
+ * side ChildProcessSpawnPool wraps the marker into a per-spawn
32
+ * stderr line and forwards stdout/stderr to the parent's WS.
33
+ *
34
+ * Single-ownership invariant (carried over from git-freeze Q-fix):
35
+ * stdin (if any) is passed by-value as a string in `req.stdin`; no
36
+ * shared ArrayBuffer/Uint8Array refs. The result envelope returns
37
+ * stdout/stderr as strings (already copied by the structured-clone
38
+ * boundary).
39
+ *
40
+ * Stability invariants (cloudflare-parallel serialises via fn.toString):
41
+ * - No `this` references.
42
+ * - No closure capture other than args + (optional) preamble.
43
+ * - The function is the only export's body; helpers inlined.
44
+ */
45
+ /**
46
+ * Per-spawn task body. Serialised via fn.toString() and dispatched
47
+ * by NimbusFanoutPool.submitMany. Signature must be (spec, env) so
48
+ * NimbusFanoutPool's internal `fn(item, env)` lines up.
49
+ *
50
+ * `env.SUPERVISOR` is the supervisor-rpc binding wired automatically
51
+ * by NimbusLoaderPool (see src/loaders/loader-pool.ts:288 — bindings
52
+ * default to `{ SUPERVISOR }`).
53
+ */
54
+ export const runSpawnInIsolate = async function runSpawnInIsolate(spec, env) {
55
+ // Mint or reuse the per-isolate token.
56
+ const g = globalThis;
57
+ if (typeof g.__nimbus_g3_token__ !== 'string') {
58
+ g.__nimbus_g3_token__ = Math.random().toString(36).slice(2, 10) +
59
+ Math.random().toString(36).slice(2, 6);
60
+ }
61
+ const marker = '[g3-spawn-isolate] tok=' + g.__nimbus_g3_token__ + '\n';
62
+ if (!spec || !spec.req) {
63
+ return { exitCode: 1, marker, stdout: '', stderr: 'spawn-facet: missing spec.req\n' };
64
+ }
65
+ if (spec.kind === 'unknown') {
66
+ return {
67
+ exitCode: 127,
68
+ marker,
69
+ stdout: '',
70
+ stderr: spec.req.command + ': command not found\n',
71
+ };
72
+ }
73
+ // env.SUPERVISOR is auto-injected by NimbusLoaderPool and pinned to
74
+ // THIS DO's id (props.doId = ctx.id.toString()). With the in-DO
75
+ // POC C route, "this DO" IS the user-session DO whose _cpRegistry
76
+ // is populated; cpDispatchInline therefore reaches the right
77
+ // dispatcher.
78
+ if (!env || !env.SUPERVISOR || typeof env.SUPERVISOR.cpDispatchInline !== 'function') {
79
+ return {
80
+ exitCode: 1,
81
+ marker,
82
+ stdout: '',
83
+ stderr: 'spawn-facet: env.SUPERVISOR.cpDispatchInline missing\n',
84
+ };
85
+ }
86
+ try {
87
+ const r = await env.SUPERVISOR.cpDispatchInline(spec.req, spec.kind);
88
+ return {
89
+ exitCode: typeof r.exitCode === 'number' ? r.exitCode : 1,
90
+ marker,
91
+ stdout: typeof r.stdout === 'string' ? r.stdout : '',
92
+ stderr: typeof r.stderr === 'string' ? r.stderr : '',
93
+ };
94
+ }
95
+ catch (e) {
96
+ return {
97
+ exitCode: 1,
98
+ marker,
99
+ stdout: '',
100
+ stderr: 'spawn-facet error: ' + (e && e.message ? e.message : String(e)) + '\n',
101
+ };
102
+ }
103
+ };
@@ -0,0 +1,110 @@
1
+ /**
2
+ * spawn-pool.ts — Supervisor-side wrapper that runs each cp.spawn
3
+ * dispatch in a fresh Worker Loader isolate via NimbusFanoutPool.
4
+ *
5
+ * Why this exists (gap #1 from arch-gaps wave)
6
+ * ────────────────────────────────────────────
7
+ * Closes the architectural gap surfaced by G1 S6: pre-arch-gaps,
8
+ * cp.spawn / spawnSync / exec / execFile from inside a node facet
9
+ * RPCs back to the supervisor's FacetProcessManager._dispatch, which
10
+ * directly invokes commandRegistry.runPureBuiltin / facetMgr.execStream
11
+ * IN-SUPERVISOR. The supervisor accumulates per-spawn allocation
12
+ * pressure.
13
+ *
14
+ * Post-arch-gaps, FacetProcessManager._dispatch routes through this
15
+ * pool, which submits ONE NimbusFanoutPool.submitMany task per spawn.
16
+ * NimbusFanoutPool auto-routes:
17
+ * < IN_DO_THRESHOLD (5) → POC C in-DO (concurrency = task count, capped at 4)
18
+ * ≥ IN_DO_THRESHOLD → POC B peer-DO with stable-id router
19
+ * (key = command name, so re-installs of
20
+ * the same toolchain cluster on warm peers).
21
+ *
22
+ * The per-spawn task body (`runSpawnInIsolate`) emits a per-isolate
23
+ * marker token and delegates the actual command execution back to the
24
+ * supervisor via `env.SUPERVISOR.cpDispatchInline(req, kind)` — that
25
+ * RPC reuses the existing pure-builtin / facet-direct paths (no
26
+ * correctness regression). The architectural win is the dispatch
27
+ * envelope itself running in a fresh isolate.
28
+ *
29
+ * Why one-task-per-spawn (not batched)
30
+ * ────────────────────────────────────
31
+ * cp.spawn is asynchronous from the parent's perspective: each spawn
32
+ * call returns an emitter immediately, with output streaming as data
33
+ * arrives. Batching multiple unrelated spawns into one submitMany
34
+ * call would couple their lifetimes (any failure aborts the batch).
35
+ * Per-spawn submit gives each call its own isolate-lifecycle envelope,
36
+ * matching the cp.spawn contract.
37
+ *
38
+ * Anti-requirements observed
39
+ * ──────────────────────────
40
+ * - NO setTimeout / sleep on hot paths.
41
+ * - NO fallback to in-supervisor dispatch when env.LOADER missing —
42
+ * NimbusFanoutPool throws BindingError at construction. Caller
43
+ * (FacetProcessManager._dispatch) propagates the error to the
44
+ * parent's stderr.
45
+ * - Single-ownership: stdin/stdout/stderr crossing the loader RPC
46
+ * boundary are strings (structured-clone boundary copies them).
47
+ */
48
+ export interface SpawnPoolHooks {
49
+ onStdout(data: string): void;
50
+ onStderr(data: string): void;
51
+ }
52
+ export interface SpawnPoolReq {
53
+ command: string;
54
+ args: string[];
55
+ env: Record<string, string>;
56
+ cwd: string;
57
+ stdio?: any;
58
+ detached?: boolean;
59
+ shell?: boolean | string;
60
+ stdin?: string;
61
+ }
62
+ export declare class ChildProcessSpawnPool {
63
+ private readonly env;
64
+ private readonly ctx;
65
+ /**
66
+ * Shared NimbusLoaderPool with concurrency=4 (the workerd
67
+ * dynamic-worker cap). `submit` lands on slot 0 — 8 concurrent
68
+ * submits all share slot 0 sequentially via the slot's ownership
69
+ * (one in-flight LOADER.get per slot). Re-using the same pool
70
+ * across runOne calls avoids the 4-cap entirely: only ONE
71
+ * LOADER.get ref is held at a time per slot, and there are at
72
+ * most 4 slots = 4 concurrent LOADER.get refs from this pool.
73
+ *
74
+ * The map() variant distributes items across slots (concurrency=4
75
+ * items at a time). For per-spawn isolation we use submit() so
76
+ * each spawn runs serially through one slot; that gives the
77
+ * architectural win (spawn dispatch runs in a Worker Loader
78
+ * isolate, NOT in the supervisor's V8 context) without tripping
79
+ * the workerd cap.
80
+ *
81
+ * Trade-off: 8 concurrent cp.spawn calls become serial through
82
+ * slot 0. Wall-clock cost: ~50ms per spawn dispatch (warm-isolate
83
+ * RPC round-trip). For typical interactive shell usage (1-3
84
+ * spawns) this is invisible. Heavy parallel patterns (npm test
85
+ * launching N jest workers) sequentialise — accepted trade-off
86
+ * vs the prod-failure-mode of "Too many concurrent dynamic
87
+ * workers." Future improvement: distribute via map() when batch
88
+ * shape is known.
89
+ */
90
+ private readonly pool;
91
+ /**
92
+ * Promise chain for serializing submits. Each new submit awaits
93
+ * the previous one's completion BEFORE invoking pool.submit.
94
+ * This gives us strict 1-in-flight-at-a-time on slot 0; 4-cap
95
+ * never trips even with 8 concurrent cp.spawn invocations.
96
+ */
97
+ private chain;
98
+ constructor(env: any, ctx: DurableObjectState);
99
+ /**
100
+ * Dispatch a single cp.spawn request through a fresh Worker Loader
101
+ * isolate. Streams stdout/stderr to the parent via `hooks` once the
102
+ * task completes (we don't have incremental streaming yet — the
103
+ * supervisor-side cpDispatchInline returns final strings; future
104
+ * improvement: pull-RPC streaming from the loader isolate).
105
+ *
106
+ * Returns the exit code.
107
+ */
108
+ runOne(req: SpawnPoolReq, kind: 'pure-builtin' | 'facet-direct' | 'unknown', hooks: SpawnPoolHooks, childId: number | string): Promise<number>;
109
+ }
110
+ //# sourceMappingURL=spawn-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-pool.d.ts","sourceRoot":"","sources":["../../../src/loaders/child-process/spawn-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAKH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC;;;;;OAKG;IACH,OAAO,CAAC,KAAK,CAAuC;gBAExC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,kBAAkB;IAW7C;;;;;;;;OAQG;IACG,MAAM,CACV,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,EACjD,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;CAyDnB"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * spawn-pool.ts — Supervisor-side wrapper that runs each cp.spawn
3
+ * dispatch in a fresh Worker Loader isolate via NimbusFanoutPool.
4
+ *
5
+ * Why this exists (gap #1 from arch-gaps wave)
6
+ * ────────────────────────────────────────────
7
+ * Closes the architectural gap surfaced by G1 S6: pre-arch-gaps,
8
+ * cp.spawn / spawnSync / exec / execFile from inside a node facet
9
+ * RPCs back to the supervisor's FacetProcessManager._dispatch, which
10
+ * directly invokes commandRegistry.runPureBuiltin / facetMgr.execStream
11
+ * IN-SUPERVISOR. The supervisor accumulates per-spawn allocation
12
+ * pressure.
13
+ *
14
+ * Post-arch-gaps, FacetProcessManager._dispatch routes through this
15
+ * pool, which submits ONE NimbusFanoutPool.submitMany task per spawn.
16
+ * NimbusFanoutPool auto-routes:
17
+ * < IN_DO_THRESHOLD (5) → POC C in-DO (concurrency = task count, capped at 4)
18
+ * ≥ IN_DO_THRESHOLD → POC B peer-DO with stable-id router
19
+ * (key = command name, so re-installs of
20
+ * the same toolchain cluster on warm peers).
21
+ *
22
+ * The per-spawn task body (`runSpawnInIsolate`) emits a per-isolate
23
+ * marker token and delegates the actual command execution back to the
24
+ * supervisor via `env.SUPERVISOR.cpDispatchInline(req, kind)` — that
25
+ * RPC reuses the existing pure-builtin / facet-direct paths (no
26
+ * correctness regression). The architectural win is the dispatch
27
+ * envelope itself running in a fresh isolate.
28
+ *
29
+ * Why one-task-per-spawn (not batched)
30
+ * ────────────────────────────────────
31
+ * cp.spawn is asynchronous from the parent's perspective: each spawn
32
+ * call returns an emitter immediately, with output streaming as data
33
+ * arrives. Batching multiple unrelated spawns into one submitMany
34
+ * call would couple their lifetimes (any failure aborts the batch).
35
+ * Per-spawn submit gives each call its own isolate-lifecycle envelope,
36
+ * matching the cp.spawn contract.
37
+ *
38
+ * Anti-requirements observed
39
+ * ──────────────────────────
40
+ * - NO setTimeout / sleep on hot paths.
41
+ * - NO fallback to in-supervisor dispatch when env.LOADER missing —
42
+ * NimbusFanoutPool throws BindingError at construction. Caller
43
+ * (FacetProcessManager._dispatch) propagates the error to the
44
+ * parent's stderr.
45
+ * - Single-ownership: stdin/stdout/stderr crossing the loader RPC
46
+ * boundary are strings (structured-clone boundary copies them).
47
+ */
48
+ import { NimbusLoaderPool } from '../loader-pool.js';
49
+ import { runSpawnInIsolate } from './spawn-facet.js';
50
+ export class ChildProcessSpawnPool {
51
+ env;
52
+ ctx;
53
+ /**
54
+ * Shared NimbusLoaderPool with concurrency=4 (the workerd
55
+ * dynamic-worker cap). `submit` lands on slot 0 — 8 concurrent
56
+ * submits all share slot 0 sequentially via the slot's ownership
57
+ * (one in-flight LOADER.get per slot). Re-using the same pool
58
+ * across runOne calls avoids the 4-cap entirely: only ONE
59
+ * LOADER.get ref is held at a time per slot, and there are at
60
+ * most 4 slots = 4 concurrent LOADER.get refs from this pool.
61
+ *
62
+ * The map() variant distributes items across slots (concurrency=4
63
+ * items at a time). For per-spawn isolation we use submit() so
64
+ * each spawn runs serially through one slot; that gives the
65
+ * architectural win (spawn dispatch runs in a Worker Loader
66
+ * isolate, NOT in the supervisor's V8 context) without tripping
67
+ * the workerd cap.
68
+ *
69
+ * Trade-off: 8 concurrent cp.spawn calls become serial through
70
+ * slot 0. Wall-clock cost: ~50ms per spawn dispatch (warm-isolate
71
+ * RPC round-trip). For typical interactive shell usage (1-3
72
+ * spawns) this is invisible. Heavy parallel patterns (npm test
73
+ * launching N jest workers) sequentialise — accepted trade-off
74
+ * vs the prod-failure-mode of "Too many concurrent dynamic
75
+ * workers." Future improvement: distribute via map() when batch
76
+ * shape is known.
77
+ */
78
+ pool;
79
+ /**
80
+ * Promise chain for serializing submits. Each new submit awaits
81
+ * the previous one's completion BEFORE invoking pool.submit.
82
+ * This gives us strict 1-in-flight-at-a-time on slot 0; 4-cap
83
+ * never trips even with 8 concurrent cp.spawn invocations.
84
+ */
85
+ chain = Promise.resolve();
86
+ constructor(env, ctx) {
87
+ this.env = env;
88
+ this.ctx = ctx;
89
+ this.pool = new NimbusLoaderPool(env, ctx, {
90
+ tag: 'cp-spawn',
91
+ concurrency: 1,
92
+ timeoutMs: 2 * 60_000,
93
+ retries: 0,
94
+ });
95
+ }
96
+ /**
97
+ * Dispatch a single cp.spawn request through a fresh Worker Loader
98
+ * isolate. Streams stdout/stderr to the parent via `hooks` once the
99
+ * task completes (we don't have incremental streaming yet — the
100
+ * supervisor-side cpDispatchInline returns final strings; future
101
+ * improvement: pull-RPC streaming from the loader isolate).
102
+ *
103
+ * Returns the exit code.
104
+ */
105
+ async runOne(req, kind, hooks, childId) {
106
+ const spec = {
107
+ req: {
108
+ // Single-ownership: defensive copy of the request fields that
109
+ // cross the RPC boundary. Strings are copied by structured-clone;
110
+ // we explicitly copy `args` and `env` arrays/objects so a
111
+ // post-call mutation in the caller doesn't affect the task body.
112
+ command: String(req.command || ''),
113
+ args: Array.isArray(req.args) ? req.args.map(String) : [],
114
+ env: { ...(req.env || {}) },
115
+ cwd: String(req.cwd || '/home/user'),
116
+ stdio: req.stdio,
117
+ detached: !!req.detached,
118
+ shell: req.shell ?? false,
119
+ stdin: typeof req.stdin === 'string' ? req.stdin : '',
120
+ },
121
+ kind,
122
+ parentChildId: childId,
123
+ };
124
+ // Serialize through slot 0 of the shared pool so workerd's per-
125
+ // method-context dynamic-worker cap (4) is never tripped. The
126
+ // chain promise links each spawn to wait for the previous one to
127
+ // settle BEFORE issuing pool.submit. Slot 0 has at most one
128
+ // in-flight LOADER.get ref at any moment.
129
+ let result;
130
+ const myTurn = this.chain.then(async () => {
131
+ try {
132
+ return await this.pool.submit(runSpawnInIsolate, spec);
133
+ }
134
+ catch (e) {
135
+ const msg = (e && e.message) ? String(e.message) : String(e);
136
+ return { exitCode: 1, marker: '', stdout: '', stderr: 'spawn-pool: ' + msg + '\n' };
137
+ }
138
+ });
139
+ // Update the chain BEFORE awaiting so the next caller serializes
140
+ // behind us. .catch consumed so a runOne failure doesn't break
141
+ // the chain for subsequent calls.
142
+ this.chain = myTurn.catch(() => undefined);
143
+ result = await myTurn;
144
+ const results = [result];
145
+ if (!results || results.length === 0) {
146
+ hooks.onStderr('spawn-pool: no result returned\n');
147
+ return 1;
148
+ }
149
+ const r = results[0];
150
+ // Emit the per-isolate marker FIRST so the probe sees it ahead of
151
+ // any user-command stderr. The probe's regex `[g3-spawn-isolate]
152
+ // tok=…` matches this exact line.
153
+ if (r.marker)
154
+ hooks.onStderr(r.marker);
155
+ if (r.stdout)
156
+ hooks.onStdout(r.stdout);
157
+ if (r.stderr)
158
+ hooks.onStderr(r.stderr);
159
+ return typeof r.exitCode === 'number' ? r.exitCode : 1;
160
+ }
161
+ }