@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,118 @@
1
+ /**
2
+ * oom-classify.ts — discriminator for OOM-like errors at Nimbus
3
+ * boundaries. Tagged W5 (Lever 5 / J.1.1 in CF-INTERNAL-OPTIMIZATION-
4
+ * RESEARCH.md).
5
+ *
6
+ * Why this exists
7
+ * ───────────────
8
+ * Nimbus has at least four distinct "the work failed" failure modes
9
+ * that all surface today as either a thrown JS Error or a console
10
+ * line:
11
+ *
12
+ * 1. SQLITE_NOMEM at the storage layer (per-DO SQLite cap, post-
13
+ * STOR/SPEC: Address SQLITE_NOMEM issues).
14
+ * 2. Generic isolate OOM (`Durable Object's isolate exceeded its
15
+ * memory limit and was reset` per ~sha/DOGE Recommendations).
16
+ * 3. Structured-clone refusal (`Cannot deserialize cloned data`)
17
+ * between supervisor ↔ facet RPC (32 MiB cap).
18
+ * 4. RPC timeout (TimeoutError from facet-pool's per-task race).
19
+ *
20
+ * Plus a few platform-side terminations (subrequest cap, condemnation,
21
+ * hard eviction) that the user sees but Nimbus has no first-party
22
+ * signal for.
23
+ *
24
+ * Without a classifier, every recordFailure() call has to stringify-
25
+ * match its own error site. With this module, we pin the regex once
26
+ * and reuse it everywhere.
27
+ *
28
+ * Inputs we accept
29
+ * ────────────────
30
+ * The classifier accepts:
31
+ * - Error instances (read e.message)
32
+ * - plain strings (use directly — for stderr-line classification at
33
+ * facet-exit boundaries where we don't have an Error)
34
+ * - anything else (return 'unknown')
35
+ *
36
+ * Output values
37
+ * ─────────────
38
+ * Same set used by `DiagFailure.cause` in oom-discriminator.ts. Keep
39
+ * the union narrow and additive — adding a new value is fine, but
40
+ * never re-purpose an existing one.
41
+ */
42
+ /**
43
+ * Classify an error or message string into an OomCause. Returns
44
+ * 'unknown' when no signature matches — callers should still record
45
+ * the message via DiagFailure.message so a human can later widen the
46
+ * classifier rules.
47
+ */
48
+ export function classifyError(input) {
49
+ const msg = readMessage(input);
50
+ if (msg.length === 0)
51
+ return 'unknown';
52
+ return classifyMessage(msg);
53
+ }
54
+ /**
55
+ * Variant for callers that already have the message string. Prefer
56
+ * classifyError() at boundaries; this is exposed for cases where the
57
+ * message has already been extracted (e.g. truncated / sanitised).
58
+ */
59
+ export function classifyMessage(msg) {
60
+ // Use lower-case match for forgiveness; SQLITE_NOMEM is canonically
61
+ // upper but stderr can be either.
62
+ const m = msg.toLowerCase();
63
+ // SQLITE_NOMEM signals
64
+ if (m.includes('sqlite_nomem'))
65
+ return 'sqlite_nomem';
66
+ if (m.includes('out of memory'))
67
+ return 'sqlite_nomem';
68
+ if (m.includes('database or disk is full'))
69
+ return 'sqlite_nomem';
70
+ // Structured-clone refusal — a 32 MiB-cap cousin
71
+ if (m.includes('cannot deserialize cloned data'))
72
+ return 'clone_refused';
73
+ if (m.includes('could not be cloned'))
74
+ return 'clone_refused';
75
+ // RPC timeout (Nimbus's TimeoutError from facet-pool)
76
+ if (m.includes('timeouterror'))
77
+ return 'rpc_timeout';
78
+ if (/\btimed?\s*out\b/.test(m))
79
+ return 'rpc_timeout';
80
+ // Subrequest cap (Cloudflare platform)
81
+ if (m.includes('too many subrequests'))
82
+ return 'subrequest_cap';
83
+ // Generic DO isolate condemnation / eviction
84
+ if (m.includes('isolate exceeded its memory limit'))
85
+ return 'oom';
86
+ if (m.includes('memory limit') && m.includes('reset'))
87
+ return 'oom';
88
+ if (m.includes('worker exceeded memory'))
89
+ return 'oom';
90
+ if (m.includes('exceeded cpu'))
91
+ return 'oom';
92
+ // Explicit eviction (per CF research §A.1.2)
93
+ if (m.includes('condemned'))
94
+ return 'condemnation';
95
+ if (m.includes('hard evict'))
96
+ return 'hard_evict';
97
+ return 'unknown';
98
+ }
99
+ function readMessage(input) {
100
+ if (input == null)
101
+ return '';
102
+ if (typeof input === 'string')
103
+ return input;
104
+ if (input instanceof Error)
105
+ return input.message ?? '';
106
+ // Some thrown values are plain objects with .message
107
+ if (typeof input === 'object') {
108
+ const m = input.message;
109
+ if (typeof m === 'string')
110
+ return m;
111
+ }
112
+ try {
113
+ return String(input);
114
+ }
115
+ catch {
116
+ return '';
117
+ }
118
+ }
@@ -0,0 +1,192 @@
1
+ /**
2
+ * oom-discriminator.ts — singleton ring buffer for OOM / failure
3
+ * forensics + last-known-RPC-frame + last-known-facet-id +
4
+ * session-recovery-event ring, plus snapshot/rehydrate hooks for DO
5
+ * storage persistence.
6
+ *
7
+ * W5 (Lever 5 / J.1.1) — original module. Pairs with oom-classify.ts.
8
+ * C'.2 — added the recovery_event ring.
9
+ *
10
+ * Why singleton-per-isolate
11
+ * ─────────────────────────
12
+ * Same pattern as src/diag-counters.ts (q.v.). The supervisor bundle
13
+ * is the consumer; all writers (sqlite-vfs, facet-pool, facet-manager,
14
+ * supervisor-rpc, npm-installer, nimbus-session) live in the same
15
+ * isolate. globalThis-keyed storage avoids threading a handle through
16
+ * ~10 sites for what is essentially a process-local diagnostic.
17
+ *
18
+ * Two distinct rings
19
+ * ──────────────────
20
+ * - failures: things that failed (the original W5 ring).
21
+ * - recoveryEvents: lifecycle transitions of the session (C'.2). Cold
22
+ * isolate boot → 'cold' → 'hydrated' → 'active' → 'drained'. Plan §3
23
+ * Track B' makes the transitions explicit; this ring records each
24
+ * one so probes can assert "session reached 'hydrated' from SQL with
25
+ * N keys, no data loss".
26
+ *
27
+ * Bounded-size guarantees
28
+ * ───────────────────────
29
+ * - failures ring: 50 entries (RING_SIZE).
30
+ * - recoveryEvents ring: 50 entries (RECOVERY_RING_SIZE).
31
+ * - per-message cap: 200 chars (truncated at insert).
32
+ * - per-RPC-frame: single slot, one object.
33
+ * - per-facet-id: single slot, one object.
34
+ *
35
+ * Snapshot ≤40 KB even with both rings full. Verified by
36
+ * audit/probes/w5/functional/ring-persistence.mjs (failures) and
37
+ * audit/probes/c-prime/recovery-events/ (recovery — Phase 1 C'.2).
38
+ */
39
+ import type { OomCause } from './oom-classify.js';
40
+ export interface RpcFrame {
41
+ method: string;
42
+ payloadBytes: number;
43
+ atMs: number;
44
+ }
45
+ export interface FacetId {
46
+ codeId: string;
47
+ slotIndex: number;
48
+ atMs: number;
49
+ }
50
+ export interface DiagFailure {
51
+ /** ms epoch */
52
+ at: number;
53
+ /** Lifecycle stage (e.g. 'install', 'resolve', 'rpc', 'facet', 'ws'). */
54
+ phase: string;
55
+ /** Discriminated cause. See oom-classify.ts. */
56
+ cause: OomCause;
57
+ /** Best-effort RSS estimate in bytes (peak observed). */
58
+ rssEstimateBytes: number;
59
+ /** process.memoryUsage().heapUsed if available; 0 in DO contexts. */
60
+ heapUsedBytes: number;
61
+ /** SqliteVFS LRU hot bytes at time of failure. */
62
+ lruBytes: number;
63
+ /** Sum of in-flight RPC payload bytes (best-effort). */
64
+ inFlightBytes: number;
65
+ /** Snapshot of the most recent RPC frame, if any. */
66
+ lastRpcFrame: RpcFrame | null;
67
+ /** Snapshot of the most recent facet dispatch, if any. */
68
+ lastFacetId: FacetId | null;
69
+ /** Optional facet exit code (when failure represents a facet termination). */
70
+ exitCode?: number;
71
+ /** Optional facet pid. */
72
+ pid?: number;
73
+ /** Free-form message; truncated to MESSAGE_CAP characters. */
74
+ message?: string;
75
+ }
76
+ /**
77
+ * Session lifecycle states for the C'.2 recovery_event ring.
78
+ *
79
+ * The state machine is owned by Track B' (plan §3.3). This module
80
+ * records transitions; it does not enforce them.
81
+ *
82
+ * State semantics:
83
+ * - 'cold' : fresh DO instance, no in-memory session state yet.
84
+ * - 'hydrated' : Phase R completed — SQL state read into in-memory cache.
85
+ * - 'active' : Phase B+W+O completed — kernel/shell/terminal wired.
86
+ * - 'drained' : webSocketError/Close fired; in-memory caches nulled,
87
+ * SQL state freshly persisted; awaiting next reconnect.
88
+ *
89
+ * Trigger labels: human-readable event that caused the transition.
90
+ * Examples: 'first-fetch', 'ws-upgrade', 'ws-close', 'ws-error',
91
+ * 'isolate-evicted', 'manual-test'.
92
+ */
93
+ /** Session state union.
94
+ *
95
+ * The original four are the high-level lifecycle markers:
96
+ * cold — never inited
97
+ * hydrated — re-init complete (warm path; Phase O skipped)
98
+ * active — live shell processing input
99
+ * drained — webSocketError/Close fired; SQL freshly persisted
100
+ *
101
+ * The four [B'.4] additions are the fine-grained phases of
102
+ * initSession itself, recorded as the function progresses:
103
+ * rehydrate — Phase R: loading state from DO SQLite
104
+ * build — Phase B: constructing Kernel/Shell/registry
105
+ * wire — Phase W: attaching terminal, replaying scrollback
106
+ * online — Phase O: cold-start MOTD + starter hint (cold only;
107
+ * on warm re-init this phase is skipped and the
108
+ * initSession ends with 'hydrated' instead)
109
+ *
110
+ * The phase transitions are SUPPLEMENTAL to the high-level markers,
111
+ * not a replacement. Probes that look for the legacy `'hydrated'`
112
+ * marker continue to work; probes that want fine-grained debugging
113
+ * can grep for the phase states.
114
+ */
115
+ export type SessionState = 'cold' | 'hydrated' | 'active' | 'drained' | 'rehydrate' | 'build' | 'wire' | 'online';
116
+ export interface DiagRecoveryEvent {
117
+ /** ms epoch */
118
+ at: number;
119
+ /** Source state. */
120
+ fromState: SessionState;
121
+ /** Destination state. */
122
+ toState: SessionState;
123
+ /** Human-readable trigger ('ws-close', 'isolate-evicted', etc.). */
124
+ trigger: string;
125
+ /** _w9IsolateGen at the time of the event. Lets a probe detect the
126
+ * difference between an in-isolate transition and a cross-isolate one
127
+ * (the latter implies workerd recycled the DO). */
128
+ isolateGen: number;
129
+ /** True when the transition could not preserve state that should
130
+ * have survived (e.g. SQL persist threw, snapshot was missing on
131
+ * hydrate, etc.). Probes assert this stays false under non-OOM
132
+ * scenarios. */
133
+ dataLoss: boolean;
134
+ /** Number of SQL keys/rows rehydrated on a hydrated transition.
135
+ * Zero when the transition is one that doesn't read SQL. */
136
+ snapshotKeysRehydrated: number;
137
+ /** Optional free-form notes (200 char cap). */
138
+ notes?: string;
139
+ }
140
+ /** Append a failure to the ring. Newest first. Capped at RING_SIZE. */
141
+ export declare function recordFailure(f: DiagFailure): void;
142
+ /** Read a snapshot of the ring. Newest first. Caller-side mutations
143
+ * do not affect the singleton. */
144
+ export declare function getFailures(): DiagFailure[];
145
+ /** Reset everything. Used by tests; safe in production but typically
146
+ * unnecessary. */
147
+ export declare function resetFailures(): void;
148
+ /** Record the current RPC frame (called at every RPC entry). Bounded
149
+ * to a single slot — the LATEST frame wins. */
150
+ export declare function setLastRpcFrame(method: string, payloadBytes: number): void;
151
+ export declare function getLastRpcFrame(): RpcFrame | null;
152
+ /** Record the most recent facet dispatch. */
153
+ export declare function setLastFacetId(codeId: string, slotIndex: number): void;
154
+ export declare function getLastFacetId(): FacetId | null;
155
+ /** Append a recovery event to the ring. Newest first. Capped at
156
+ * RECOVERY_RING_SIZE. */
157
+ export declare function recordRecoveryEvent(e: DiagRecoveryEvent): void;
158
+ /** Read a snapshot of the recovery ring. Newest first. */
159
+ export declare function getRecoveryEvents(): DiagRecoveryEvent[];
160
+ /** Reset the recovery ring. Tests + manual operator use only. */
161
+ export declare function resetRecoveryEvents(): void;
162
+ /**
163
+ * Build a JSON-serializable snapshot suitable for ctx.storage.put.
164
+ * Bounded ≤ 40 KB even with both rings full of MESSAGE_CAP-truncated
165
+ * messages. Schema version embedded so a future shape change can
166
+ * cleanly reject old snapshots.
167
+ *
168
+ * Schema versions:
169
+ * v = 1 → {failures, lastRpcFrame, lastFacetId} (pre-C'.2)
170
+ * v = 2 → v1 + {recoveryEvents} (C'.2)
171
+ *
172
+ * Rehydrate accepts v=1 (treats recoveryEvents as empty) and v=2.
173
+ */
174
+ export interface DiagSnapshot {
175
+ /** Schema version. Bump when shape changes. */
176
+ v: number;
177
+ failures: DiagFailure[];
178
+ recoveryEvents: DiagRecoveryEvent[];
179
+ lastRpcFrame: RpcFrame | null;
180
+ lastFacetId: FacetId | null;
181
+ }
182
+ export declare function snapshotForStorage(): DiagSnapshot;
183
+ /**
184
+ * Restore from a snapshot. Garbage / null / wrong-shape input is
185
+ * silently ignored. Does NOT throw — constructor-time rehydration must
186
+ * never block DO startup.
187
+ *
188
+ * Accepts v=1 (pre-C'.2, no recoveryEvents field) and v=2. v=1
189
+ * snapshots rehydrate failures only; recoveryEvents starts empty.
190
+ */
191
+ export declare function rehydrateFromStorage(blob: unknown): void;
192
+ //# sourceMappingURL=oom-discriminator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oom-discriminator.d.ts","sourceRoot":"","sources":["../../src/observability/oom-discriminator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * oom-discriminator.ts — singleton ring buffer for OOM / failure
3
+ * forensics + last-known-RPC-frame + last-known-facet-id +
4
+ * session-recovery-event ring, plus snapshot/rehydrate hooks for DO
5
+ * storage persistence.
6
+ *
7
+ * W5 (Lever 5 / J.1.1) — original module. Pairs with oom-classify.ts.
8
+ * C'.2 — added the recovery_event ring.
9
+ *
10
+ * Why singleton-per-isolate
11
+ * ─────────────────────────
12
+ * Same pattern as src/diag-counters.ts (q.v.). The supervisor bundle
13
+ * is the consumer; all writers (sqlite-vfs, facet-pool, facet-manager,
14
+ * supervisor-rpc, npm-installer, nimbus-session) live in the same
15
+ * isolate. globalThis-keyed storage avoids threading a handle through
16
+ * ~10 sites for what is essentially a process-local diagnostic.
17
+ *
18
+ * Two distinct rings
19
+ * ──────────────────
20
+ * - failures: things that failed (the original W5 ring).
21
+ * - recoveryEvents: lifecycle transitions of the session (C'.2). Cold
22
+ * isolate boot → 'cold' → 'hydrated' → 'active' → 'drained'. Plan §3
23
+ * Track B' makes the transitions explicit; this ring records each
24
+ * one so probes can assert "session reached 'hydrated' from SQL with
25
+ * N keys, no data loss".
26
+ *
27
+ * Bounded-size guarantees
28
+ * ───────────────────────
29
+ * - failures ring: 50 entries (RING_SIZE).
30
+ * - recoveryEvents ring: 50 entries (RECOVERY_RING_SIZE).
31
+ * - per-message cap: 200 chars (truncated at insert).
32
+ * - per-RPC-frame: single slot, one object.
33
+ * - per-facet-id: single slot, one object.
34
+ *
35
+ * Snapshot ≤40 KB even with both rings full. Verified by
36
+ * audit/probes/w5/functional/ring-persistence.mjs (failures) and
37
+ * audit/probes/c-prime/recovery-events/ (recovery — Phase 1 C'.2).
38
+ */
39
+ const KEY = '__NIMBUS_W5_OOM_DISC__';
40
+ const RING_SIZE = 50;
41
+ const RECOVERY_RING_SIZE = 50;
42
+ const MESSAGE_CAP = 200;
43
+ function getState() {
44
+ const g = globalThis;
45
+ if (!g[KEY]) {
46
+ g[KEY] = {
47
+ failures: [],
48
+ recoveryEvents: [],
49
+ lastRpcFrame: null,
50
+ lastFacetId: null,
51
+ };
52
+ }
53
+ // Defensive: older snapshots predating C'.2 have no recoveryEvents
54
+ // field. The rehydrate path adds the field on read; this guard is a
55
+ // belt-and-braces second line so any legacy state object on
56
+ // globalThis (e.g. from an in-process restart that beat the new
57
+ // module load) doesn't make the ring methods crash.
58
+ const s = g[KEY];
59
+ if (!Array.isArray(s.recoveryEvents))
60
+ s.recoveryEvents = [];
61
+ return s;
62
+ }
63
+ /** Append a failure to the ring. Newest first. Capped at RING_SIZE. */
64
+ export function recordFailure(f) {
65
+ const s = getState();
66
+ // Defensive copy + message cap.
67
+ const entry = {
68
+ at: Number(f.at) || Date.now(),
69
+ phase: String(f.phase ?? 'unknown'),
70
+ cause: f.cause ?? 'unknown',
71
+ rssEstimateBytes: Number(f.rssEstimateBytes) || 0,
72
+ heapUsedBytes: Number(f.heapUsedBytes) || 0,
73
+ lruBytes: Number(f.lruBytes) || 0,
74
+ inFlightBytes: Number(f.inFlightBytes) || 0,
75
+ lastRpcFrame: f.lastRpcFrame ?? s.lastRpcFrame,
76
+ lastFacetId: f.lastFacetId ?? s.lastFacetId,
77
+ };
78
+ if (typeof f.exitCode === 'number')
79
+ entry.exitCode = f.exitCode;
80
+ if (typeof f.pid === 'number')
81
+ entry.pid = f.pid;
82
+ if (f.message) {
83
+ const m = String(f.message);
84
+ entry.message = m.length > MESSAGE_CAP ? m.slice(0, MESSAGE_CAP) : m;
85
+ }
86
+ s.failures.unshift(entry);
87
+ if (s.failures.length > RING_SIZE)
88
+ s.failures.length = RING_SIZE;
89
+ }
90
+ /** Read a snapshot of the ring. Newest first. Caller-side mutations
91
+ * do not affect the singleton. */
92
+ export function getFailures() {
93
+ return getState().failures.slice(0);
94
+ }
95
+ /** Reset everything. Used by tests; safe in production but typically
96
+ * unnecessary. */
97
+ export function resetFailures() {
98
+ const s = getState();
99
+ s.failures.length = 0;
100
+ s.lastRpcFrame = null;
101
+ s.lastFacetId = null;
102
+ }
103
+ /** Record the current RPC frame (called at every RPC entry). Bounded
104
+ * to a single slot — the LATEST frame wins. */
105
+ export function setLastRpcFrame(method, payloadBytes) {
106
+ const s = getState();
107
+ s.lastRpcFrame = {
108
+ method: String(method),
109
+ payloadBytes: Number(payloadBytes) || 0,
110
+ atMs: Date.now(),
111
+ };
112
+ }
113
+ export function getLastRpcFrame() {
114
+ return getState().lastRpcFrame;
115
+ }
116
+ /** Record the most recent facet dispatch. */
117
+ export function setLastFacetId(codeId, slotIndex) {
118
+ const s = getState();
119
+ s.lastFacetId = {
120
+ codeId: String(codeId),
121
+ slotIndex: Number(slotIndex) || 0,
122
+ atMs: Date.now(),
123
+ };
124
+ }
125
+ export function getLastFacetId() {
126
+ return getState().lastFacetId;
127
+ }
128
+ // ── C'.2 recovery_event ring ────────────────────────────────────────────
129
+ //
130
+ // Track B' transitions call recordRecoveryEvent() at every state change.
131
+ // The ring is bounded at RECOVERY_RING_SIZE; the diag endpoint reads via
132
+ // getRecoveryEvents() (newest first). Probes use this ring to assert
133
+ // that recoveries are actually transparent — a green run shows entries
134
+ // for every reconnection but every entry has dataLoss === false.
135
+ /** Append a recovery event to the ring. Newest first. Capped at
136
+ * RECOVERY_RING_SIZE. */
137
+ export function recordRecoveryEvent(e) {
138
+ const s = getState();
139
+ // Defensive copy + notes cap. We intentionally do NOT validate the
140
+ // state-machine direction here (e.g. that 'drained' only follows
141
+ // 'active') — the state machine lives in Track B'; this ring is a
142
+ // recorder, not an enforcer. If a probe sees an impossible
143
+ // transition, that's a real bug in the state machine and the
144
+ // probe must fail.
145
+ const entry = {
146
+ at: Number(e.at) || Date.now(),
147
+ fromState: e.fromState,
148
+ toState: e.toState,
149
+ trigger: String(e.trigger ?? 'unknown'),
150
+ isolateGen: Number(e.isolateGen) || 0,
151
+ dataLoss: !!e.dataLoss,
152
+ snapshotKeysRehydrated: Number(e.snapshotKeysRehydrated) || 0,
153
+ };
154
+ if (e.notes) {
155
+ const n = String(e.notes);
156
+ entry.notes = n.length > MESSAGE_CAP ? n.slice(0, MESSAGE_CAP) : n;
157
+ }
158
+ s.recoveryEvents.unshift(entry);
159
+ if (s.recoveryEvents.length > RECOVERY_RING_SIZE) {
160
+ s.recoveryEvents.length = RECOVERY_RING_SIZE;
161
+ }
162
+ }
163
+ /** Read a snapshot of the recovery ring. Newest first. */
164
+ export function getRecoveryEvents() {
165
+ return getState().recoveryEvents.slice(0);
166
+ }
167
+ /** Reset the recovery ring. Tests + manual operator use only. */
168
+ export function resetRecoveryEvents() {
169
+ getState().recoveryEvents.length = 0;
170
+ }
171
+ export function snapshotForStorage() {
172
+ const s = getState();
173
+ return {
174
+ v: 2,
175
+ failures: s.failures.slice(0),
176
+ recoveryEvents: s.recoveryEvents.slice(0),
177
+ lastRpcFrame: s.lastRpcFrame,
178
+ lastFacetId: s.lastFacetId,
179
+ };
180
+ }
181
+ /**
182
+ * Restore from a snapshot. Garbage / null / wrong-shape input is
183
+ * silently ignored. Does NOT throw — constructor-time rehydration must
184
+ * never block DO startup.
185
+ *
186
+ * Accepts v=1 (pre-C'.2, no recoveryEvents field) and v=2. v=1
187
+ * snapshots rehydrate failures only; recoveryEvents starts empty.
188
+ */
189
+ export function rehydrateFromStorage(blob) {
190
+ if (!blob || typeof blob !== 'object')
191
+ return;
192
+ const b = blob;
193
+ if (b.v !== 1 && b.v !== 2)
194
+ return;
195
+ if (!Array.isArray(b.failures))
196
+ return;
197
+ const s = getState();
198
+ s.failures.length = 0;
199
+ for (const f of b.failures) {
200
+ if (!f || typeof f !== 'object')
201
+ continue;
202
+ const entry = f;
203
+ if (typeof entry.at !== 'number' || typeof entry.phase !== 'string')
204
+ continue;
205
+ s.failures.push(entry);
206
+ if (s.failures.length >= RING_SIZE)
207
+ break;
208
+ }
209
+ // v >= 2: recoveryEvents (skipped for v=1 by the shape-check below).
210
+ s.recoveryEvents.length = 0;
211
+ if (b.v === 2 && Array.isArray(b.recoveryEvents)) {
212
+ for (const e of b.recoveryEvents) {
213
+ if (!e || typeof e !== 'object')
214
+ continue;
215
+ const entry = e;
216
+ if (typeof entry.at !== 'number'
217
+ || typeof entry.fromState !== 'string'
218
+ || typeof entry.toState !== 'string')
219
+ continue;
220
+ s.recoveryEvents.push(entry);
221
+ if (s.recoveryEvents.length >= RECOVERY_RING_SIZE)
222
+ break;
223
+ }
224
+ }
225
+ if (b.lastRpcFrame && typeof b.lastRpcFrame === 'object'
226
+ && typeof b.lastRpcFrame.method === 'string') {
227
+ s.lastRpcFrame = b.lastRpcFrame;
228
+ }
229
+ if (b.lastFacetId && typeof b.lastFacetId === 'object'
230
+ && typeof b.lastFacetId.codeId === 'string') {
231
+ s.lastFacetId = b.lastFacetId;
232
+ }
233
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * real-vite-bundle.generated.ts — AUTO-GENERATED by scripts/bundle-real-vite.mjs
3
+ * DO NOT EDIT.
4
+ *
5
+ * Bundled Vite 6.4.2 with native-binding stubs (rolldown,
6
+ * lightningcss, etc.). Consumed by src/cirrus-real.ts at facet spawn time.
7
+ *
8
+ * [sdk-phase-1] The large strings (REAL_VITE_BUNDLE, ROLLUP_WASM_BASE64)
9
+ * now ship via the ASSETS binding rather than inline. Use the async
10
+ * getters below. Constants + browser-runtime mjs files remain inline
11
+ * since they're small enough to not warrant a network round-trip.
12
+ */
13
+ import { type AssetsFetcher } from './runtime/assets-loader.js';
14
+ export declare const REAL_VITE_VERSION = "6.4.2";
15
+ /** Asset path for the bundled Vite source. Use {@link getRealViteBundle}. */
16
+ export declare const REAL_VITE_BUNDLE_PATH = "/_assets/real-vite-bundle.js";
17
+ /** Asset path for the rollup wasm bytes. Use {@link getRollupWasmBase64}. */
18
+ export declare const ROLLUP_WASM_PATH = "/_assets/rollup.wasm";
19
+ /**
20
+ * Fetch the bundled Vite JS from the ASSETS binding. Cached per-isolate.
21
+ *
22
+ * @param env Object exposing the `ASSETS` binding (Fetcher).
23
+ * @returns The Vite bundle as a UTF-8 string.
24
+ * @throws {NimbusAssetLoadError} when the binding is missing or fetch fails.
25
+ */
26
+ export declare function getRealViteBundle(env: {
27
+ ASSETS: AssetsFetcher;
28
+ }): Promise<string>;
29
+ /**
30
+ * Fetch the rollup wasm bytes + base64-encode for the synthetic-fs
31
+ * pre-seed. Cached per-isolate; the base64 string ends up the same on
32
+ * every call.
33
+ *
34
+ * @returns base64-encoded rollup wasm bytes.
35
+ */
36
+ export declare function getRollupWasmBase64(env: {
37
+ ASSETS: AssetsFetcher;
38
+ }): Promise<string>;
39
+ /**
40
+ * Vite's browser-side HMR runtime. Served to the browser at
41
+ * /@vite/client and /@vite/env during dev. Unlike the server
42
+ * bundle, these are tiny ESM files that run in-page — keep inline.
43
+ */
44
+ export declare const VITE_CLIENT_MJS: string;
45
+ export declare const VITE_ENV_MJS: string;
46
+ //# sourceMappingURL=real-vite-bundle.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"real-vite-bundle.generated.d.ts","sourceRoot":"","sources":["../src/real-vite-bundle.generated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE/F,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAEzC,6EAA6E;AAC7E,eAAO,MAAM,qBAAqB,iCAAiC,CAAC;AAEpE,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAEjF;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAazF;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,MAAwniC,CAAC;AACvpiC,eAAO,MAAM,YAAY,EAAE,MAAgrB,CAAC"}