@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,64 @@
1
+ /**
2
+ * dev-provider.ts — virtual /dev provider.
3
+ *
4
+ * BUG-SWEEP-R3-1 (2026-05-11): pre-fix `cmd > /dev/null` and
5
+ * `cmd 2>/dev/null` returned `ENOENT: '/dev': no such file or
6
+ * directory` because /dev wasn't mounted. Standard Unix idioms
7
+ * (`make 2>/dev/null`, `cmd > /dev/null 2>&1`, scripts piping
8
+ * to /dev/null) all failed.
9
+ *
10
+ * This provider implements the standard device-file subset:
11
+ *
12
+ * /dev/null — write: discard; read: EOF (empty)
13
+ * /dev/zero — write: discard; read: infinite zeros (capped per read)
14
+ * /dev/random — write: discard; read: crypto.getRandomValues()
15
+ * /dev/urandom — alias of /dev/random
16
+ * /dev/stdin — passthrough placeholder (not really useful here)
17
+ * /dev/stdout — passthrough placeholder
18
+ * /dev/stderr — passthrough placeholder
19
+ * /dev/full — write: ENOSPC; read: infinite zeros
20
+ *
21
+ * The provider is mounted at `/dev` (no leading slash for Kernel
22
+ * convention which already does that). All entries are virtual:
23
+ * stat returns synthesized FileType-shaped objects. The MountProvider
24
+ * surface lifo-sh expects (readFile/writeFile/exists/stat/readdir/
25
+ * unlink/mkdir/rmdir/rename/copyFile) is fully implemented — reads
26
+ * from non-existent dev nodes return ENOENT, writes to read-only
27
+ * nodes silently succeed (Unix /dev/null/zero/random semantics).
28
+ */
29
+ /**
30
+ * MountProvider impl for /dev. lifo-sh's Kernel routes any path
31
+ * under /dev/* through these methods.
32
+ */
33
+ export declare class DevProvider {
34
+ private nodes;
35
+ constructor();
36
+ /** Normalize "/foo" or "foo" to "foo". Kernel passes either shape
37
+ * depending on call site; defensive normalization. */
38
+ private norm;
39
+ readFile(sub: string): Uint8Array;
40
+ readFileString(sub: string): string;
41
+ writeFile(sub: string, content: string | Uint8Array): void;
42
+ exists(sub: string): boolean;
43
+ stat(sub: string): {
44
+ type: string;
45
+ size: number;
46
+ mtime: number;
47
+ ctime: number;
48
+ mode: number;
49
+ };
50
+ readdir(sub: string): {
51
+ name: string;
52
+ type: string;
53
+ }[];
54
+ unlink(sub: string): void;
55
+ mkdir(_sub: string, _opts?: {
56
+ recursive?: boolean;
57
+ }): void;
58
+ rmdir(_sub: string): void;
59
+ rename(_o: string, _n: string): void;
60
+ copyFile(_s: string, _d: string): void;
61
+ appendFile(_sub: string, _content: string | Uint8Array): void;
62
+ isDirectory(sub: string): boolean;
63
+ }
64
+ //# sourceMappingURL=dev-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-provider.d.ts","sourceRoot":"","sources":["../../src/vfs/dev-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AA0EH;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAuB;;IAMpC;2DACuD;IACvD,OAAO,CAAC,IAAI;IAMZ,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAQjC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAInC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAc1D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAa7F,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE;IAgBtD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKzB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAI1D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAEzB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAIpC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAItC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAK7D,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAIlC"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * dev-provider.ts — virtual /dev provider.
3
+ *
4
+ * BUG-SWEEP-R3-1 (2026-05-11): pre-fix `cmd > /dev/null` and
5
+ * `cmd 2>/dev/null` returned `ENOENT: '/dev': no such file or
6
+ * directory` because /dev wasn't mounted. Standard Unix idioms
7
+ * (`make 2>/dev/null`, `cmd > /dev/null 2>&1`, scripts piping
8
+ * to /dev/null) all failed.
9
+ *
10
+ * This provider implements the standard device-file subset:
11
+ *
12
+ * /dev/null — write: discard; read: EOF (empty)
13
+ * /dev/zero — write: discard; read: infinite zeros (capped per read)
14
+ * /dev/random — write: discard; read: crypto.getRandomValues()
15
+ * /dev/urandom — alias of /dev/random
16
+ * /dev/stdin — passthrough placeholder (not really useful here)
17
+ * /dev/stdout — passthrough placeholder
18
+ * /dev/stderr — passthrough placeholder
19
+ * /dev/full — write: ENOSPC; read: infinite zeros
20
+ *
21
+ * The provider is mounted at `/dev` (no leading slash for Kernel
22
+ * convention which already does that). All entries are virtual:
23
+ * stat returns synthesized FileType-shaped objects. The MountProvider
24
+ * surface lifo-sh expects (readFile/writeFile/exists/stat/readdir/
25
+ * unlink/mkdir/rmdir/rename/copyFile) is fully implemented — reads
26
+ * from non-existent dev nodes return ENOENT, writes to read-only
27
+ * nodes silently succeed (Unix /dev/null/zero/random semantics).
28
+ */
29
+ const enc = new TextEncoder();
30
+ function makeNode(opts) {
31
+ const now = Date.now();
32
+ return {
33
+ type: opts.type,
34
+ size: opts.size ?? 0,
35
+ mtime: opts.mtime ?? now,
36
+ mode: opts.mode ?? (opts.type === 'directory' ? 0o755 : 0o666),
37
+ read: opts.read ?? (() => new Uint8Array(0)),
38
+ write: opts.write ?? (() => { }),
39
+ };
40
+ }
41
+ // Cap any single read of /dev/zero or /dev/random to prevent OOM
42
+ // on `dd if=/dev/zero ... count=∞`. Real Unix lets you read forever;
43
+ // our model is sync + bounded, so we cap reads. 64 KiB is generous
44
+ // for any reasonable test/script.
45
+ const DEV_READ_CAP = 64 * 1024;
46
+ function makeNodes() {
47
+ const nodes = new Map();
48
+ nodes.set('', makeNode({ type: 'directory' }));
49
+ nodes.set('null', makeNode({
50
+ type: 'file',
51
+ read: () => new Uint8Array(0),
52
+ write: () => { },
53
+ }));
54
+ nodes.set('zero', makeNode({
55
+ type: 'file',
56
+ read: () => new Uint8Array(DEV_READ_CAP),
57
+ write: () => { },
58
+ }));
59
+ nodes.set('random', makeNode({
60
+ type: 'file',
61
+ read: () => {
62
+ const buf = new Uint8Array(DEV_READ_CAP);
63
+ try {
64
+ crypto.getRandomValues(buf);
65
+ }
66
+ catch { /* runtime without crypto — return zeros */ }
67
+ return buf;
68
+ },
69
+ write: () => { },
70
+ }));
71
+ nodes.set('urandom', makeNode({
72
+ type: 'file',
73
+ read: () => {
74
+ const buf = new Uint8Array(DEV_READ_CAP);
75
+ try {
76
+ crypto.getRandomValues(buf);
77
+ }
78
+ catch { /* fallthrough */ }
79
+ return buf;
80
+ },
81
+ write: () => { },
82
+ }));
83
+ nodes.set('full', makeNode({
84
+ type: 'file',
85
+ read: () => new Uint8Array(DEV_READ_CAP),
86
+ write: () => { throw new Error('ENOSPC: no space left on device'); },
87
+ }));
88
+ nodes.set('stdin', makeNode({ type: 'file' }));
89
+ nodes.set('stdout', makeNode({ type: 'file' }));
90
+ nodes.set('stderr', makeNode({ type: 'file' }));
91
+ nodes.set('tty', makeNode({ type: 'file' }));
92
+ return nodes;
93
+ }
94
+ /**
95
+ * MountProvider impl for /dev. lifo-sh's Kernel routes any path
96
+ * under /dev/* through these methods.
97
+ */
98
+ export class DevProvider {
99
+ nodes;
100
+ constructor() {
101
+ this.nodes = makeNodes();
102
+ }
103
+ /** Normalize "/foo" or "foo" to "foo". Kernel passes either shape
104
+ * depending on call site; defensive normalization. */
105
+ norm(sub) {
106
+ return sub.replace(/^\/+/, '').replace(/\/+$/, '');
107
+ }
108
+ // ── MountProvider surface ──
109
+ readFile(sub) {
110
+ const n = this.norm(sub);
111
+ const node = this.nodes.get(n);
112
+ if (!node)
113
+ throw new Error(`ENOENT: '/dev/${n}': no such file or directory`);
114
+ if (node.type === 'directory')
115
+ throw new Error(`EISDIR: '/dev/${n}': is a directory`);
116
+ return node.read();
117
+ }
118
+ readFileString(sub) {
119
+ return new TextDecoder('utf-8').decode(this.readFile(sub));
120
+ }
121
+ writeFile(sub, content) {
122
+ const n = this.norm(sub);
123
+ let node = this.nodes.get(n);
124
+ if (!node) {
125
+ // Creating new files under /dev is not supported (real Unix
126
+ // allows it as root; we don't). Silently discard the data —
127
+ // matches /dev/null semantics for anything written here.
128
+ return;
129
+ }
130
+ if (node.type === 'directory')
131
+ throw new Error(`EISDIR: '/dev/${n}': is a directory`);
132
+ const bytes = typeof content === 'string' ? enc.encode(content) : content;
133
+ node.write(bytes);
134
+ }
135
+ exists(sub) {
136
+ return this.nodes.has(this.norm(sub));
137
+ }
138
+ stat(sub) {
139
+ const n = this.norm(sub);
140
+ const node = this.nodes.get(n);
141
+ if (!node)
142
+ throw new Error(`ENOENT: '/dev/${n}': no such file or directory`);
143
+ return {
144
+ type: node.type,
145
+ size: node.size,
146
+ mtime: node.mtime,
147
+ ctime: node.mtime,
148
+ mode: node.mode,
149
+ };
150
+ }
151
+ readdir(sub) {
152
+ const n = this.norm(sub);
153
+ if (n !== '') {
154
+ const node = this.nodes.get(n);
155
+ if (!node)
156
+ throw new Error(`ENOENT: '/dev/${n}': no such file or directory`);
157
+ if (node.type !== 'directory')
158
+ throw new Error(`ENOTDIR: '/dev/${n}': not a directory`);
159
+ return [];
160
+ }
161
+ const results = [];
162
+ for (const [name, node] of this.nodes) {
163
+ if (name === '')
164
+ continue;
165
+ results.push({ name, type: node.type });
166
+ }
167
+ return results;
168
+ }
169
+ unlink(sub) {
170
+ // Real /dev nodes can't be removed by user code. Silently no-op
171
+ // (errors here break `rm -rf X && touch X` idioms).
172
+ }
173
+ mkdir(_sub, _opts) {
174
+ // No-op; /dev is read-only.
175
+ }
176
+ rmdir(_sub) { }
177
+ rename(_o, _n) {
178
+ throw new Error('EROFS: read-only filesystem');
179
+ }
180
+ copyFile(_s, _d) {
181
+ throw new Error('EROFS: read-only filesystem');
182
+ }
183
+ appendFile(_sub, _content) {
184
+ // Append to /dev/null = discard
185
+ }
186
+ // Optional methods that some MountProvider consumers expect.
187
+ isDirectory(sub) {
188
+ const node = this.nodes.get(this.norm(sub));
189
+ return !!node && node.type === 'directory';
190
+ }
191
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * VFS Event System — EventEmitter for filesystem mutations.
3
+ *
4
+ * Fires on every write/unlink/rename/mkdir. Foundation for fs.watch(),
5
+ * chokidar shim, and HMR in Phase 4.
6
+ *
7
+ * Events are debounce-batched: rapid mutations (e.g. npm install writing
8
+ * thousands of files) are coalesced into a single batch emission per
9
+ * microtask, reducing listener overhead.
10
+ */
11
+ export type VfsEventType = 'add' | 'change' | 'unlink' | 'addDir' | 'unlinkDir' | 'rename';
12
+ export interface VfsEvent {
13
+ type: VfsEventType;
14
+ path: string;
15
+ /** For rename events, the original path */
16
+ oldPath?: string;
17
+ timestamp: number;
18
+ }
19
+ export type VfsEventListener = (events: VfsEvent[]) => void;
20
+ export type VfsPathListener = (event: VfsEvent) => void;
21
+ /**
22
+ * Lightweight EventEmitter for VFS mutations.
23
+ * - Global listeners receive batched events per microtask.
24
+ * - Path listeners receive individual events for matching paths.
25
+ */
26
+ export declare class VfsEventEmitter {
27
+ private _globalListeners;
28
+ private _pathListeners;
29
+ private _pending;
30
+ private _flushScheduled;
31
+ private _totalEmitted;
32
+ private _totalBatches;
33
+ /** Register a global listener that receives batched events. */
34
+ on(listener: VfsEventListener): () => void;
35
+ /** Register a listener for a specific path (or path prefix with recursive). */
36
+ onPath(path: string, listener: VfsPathListener): () => void;
37
+ /** Emit a VFS event. Batched and flushed on the next microtask. */
38
+ emit(type: VfsEventType, path: string, oldPath?: string): void;
39
+ private _deliverToPathListeners;
40
+ private _flush;
41
+ /** Remove all listeners. */
42
+ removeAll(): void;
43
+ get stats(): {
44
+ totalEmitted: number;
45
+ totalBatches: number;
46
+ globalListeners: number;
47
+ pathListeners: number;
48
+ pending: number;
49
+ };
50
+ }
51
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/vfs/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE3F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAExD;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,eAAe,CAAS;IAGhC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAE1B,+DAA+D;IAC/D,EAAE,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAQ1C,+EAA+E;IAC/E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAiB3D,mEAAmE;IACnE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAc9D,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,MAAM;IAcd,4BAA4B;IAC5B,SAAS,IAAI,IAAI;IAOjB,IAAI,KAAK;;;;;;MAQR;CACF"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * VFS Event System — EventEmitter for filesystem mutations.
3
+ *
4
+ * Fires on every write/unlink/rename/mkdir. Foundation for fs.watch(),
5
+ * chokidar shim, and HMR in Phase 4.
6
+ *
7
+ * Events are debounce-batched: rapid mutations (e.g. npm install writing
8
+ * thousands of files) are coalesced into a single batch emission per
9
+ * microtask, reducing listener overhead.
10
+ */
11
+ /**
12
+ * Lightweight EventEmitter for VFS mutations.
13
+ * - Global listeners receive batched events per microtask.
14
+ * - Path listeners receive individual events for matching paths.
15
+ */
16
+ export class VfsEventEmitter {
17
+ _globalListeners = [];
18
+ _pathListeners = new Map();
19
+ _pending = [];
20
+ _flushScheduled = false;
21
+ // Stats
22
+ _totalEmitted = 0;
23
+ _totalBatches = 0;
24
+ /** Register a global listener that receives batched events. */
25
+ on(listener) {
26
+ this._globalListeners.push(listener);
27
+ return () => {
28
+ const idx = this._globalListeners.indexOf(listener);
29
+ if (idx >= 0)
30
+ this._globalListeners.splice(idx, 1);
31
+ };
32
+ }
33
+ /** Register a listener for a specific path (or path prefix with recursive). */
34
+ onPath(path, listener) {
35
+ let list = this._pathListeners.get(path);
36
+ if (!list) {
37
+ list = [];
38
+ this._pathListeners.set(path, list);
39
+ }
40
+ list.push(listener);
41
+ return () => {
42
+ const arr = this._pathListeners.get(path);
43
+ if (arr) {
44
+ const idx = arr.indexOf(listener);
45
+ if (idx >= 0)
46
+ arr.splice(idx, 1);
47
+ if (arr.length === 0)
48
+ this._pathListeners.delete(path);
49
+ }
50
+ };
51
+ }
52
+ /** Emit a VFS event. Batched and flushed on the next microtask. */
53
+ emit(type, path, oldPath) {
54
+ const event = { type, path, timestamp: Date.now(), oldPath };
55
+ this._pending.push(event);
56
+ // Immediately deliver to path listeners (no batching for these)
57
+ this._deliverToPathListeners(event);
58
+ // Schedule batch flush for global listeners
59
+ if (!this._flushScheduled) {
60
+ this._flushScheduled = true;
61
+ queueMicrotask(() => this._flush());
62
+ }
63
+ }
64
+ _deliverToPathListeners(event) {
65
+ // Exact match
66
+ const exact = this._pathListeners.get(event.path);
67
+ if (exact) {
68
+ for (const listener of exact) {
69
+ try {
70
+ listener(event);
71
+ }
72
+ catch (e) {
73
+ console.error('[vfs-events] path listener error:', e);
74
+ }
75
+ }
76
+ }
77
+ // Parent directory listeners (recursive watching)
78
+ let dir = event.path;
79
+ while (dir.includes('/')) {
80
+ dir = dir.substring(0, dir.lastIndexOf('/'));
81
+ const parent = this._pathListeners.get(dir);
82
+ if (parent) {
83
+ for (const listener of parent) {
84
+ try {
85
+ listener(event);
86
+ }
87
+ catch (e) {
88
+ console.error('[vfs-events] path listener error:', e);
89
+ }
90
+ }
91
+ }
92
+ }
93
+ }
94
+ _flush() {
95
+ this._flushScheduled = false;
96
+ const batch = this._pending;
97
+ this._pending = [];
98
+ if (batch.length === 0)
99
+ return;
100
+ this._totalEmitted += batch.length;
101
+ this._totalBatches++;
102
+ for (const listener of this._globalListeners) {
103
+ try {
104
+ listener(batch);
105
+ }
106
+ catch (e) {
107
+ console.error('[vfs-events] global listener error:', e);
108
+ }
109
+ }
110
+ }
111
+ /** Remove all listeners. */
112
+ removeAll() {
113
+ this._globalListeners = [];
114
+ this._pathListeners.clear();
115
+ this._pending = [];
116
+ this._flushScheduled = false;
117
+ }
118
+ get stats() {
119
+ return {
120
+ totalEmitted: this._totalEmitted,
121
+ totalBatches: this._totalBatches,
122
+ globalListeners: this._globalListeners.length,
123
+ pathListeners: this._pathListeners.size,
124
+ pending: this._pending.length,
125
+ };
126
+ }
127
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * vfs-path.ts — Canonical VFS path normalization.
3
+ *
4
+ * Replaces three near-duplicate implementations that lived in
5
+ * git-commands.ts, esbuild-service.ts, and require-resolver.ts. The
6
+ * git-commands version had a defensive bounds check (`out.length > 0`
7
+ * before pop) that the others lacked — that safer behavior is the one
8
+ * preserved here.
9
+ *
10
+ * Facet-isolate code-string copies (e.g. inside
11
+ * generateGitNetworkFacetCode in git-network-facet.ts, and inside
12
+ * node-shims.ts) cannot import this module and must keep their inline
13
+ * implementations; those copies are documented as justified.
14
+ *
15
+ * Semantics:
16
+ * - Strip empty segments (collapses `//` runs)
17
+ * - Drop `.` segments
18
+ * - Pop on `..`, but only if there's something to pop (won't escape root)
19
+ * - Returns slash-joined string with NO leading/trailing slash, suitable
20
+ * for direct VFS lookup keys
21
+ *
22
+ * Examples:
23
+ * normalizeVfsPath('/foo/./bar/../baz') -> 'foo/baz'
24
+ * normalizeVfsPath('/foo//bar/') -> 'foo/bar'
25
+ * normalizeVfsPath('../escape') -> 'escape' (bounded; doesn't go negative)
26
+ */
27
+ export declare function normalizeVfsPath(p: string): string;
28
+ /** Strip leading slashes only — does not touch internal segments. */
29
+ export declare function stripLeadingSlashes(p: string): string;
30
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/vfs/path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * vfs-path.ts — Canonical VFS path normalization.
3
+ *
4
+ * Replaces three near-duplicate implementations that lived in
5
+ * git-commands.ts, esbuild-service.ts, and require-resolver.ts. The
6
+ * git-commands version had a defensive bounds check (`out.length > 0`
7
+ * before pop) that the others lacked — that safer behavior is the one
8
+ * preserved here.
9
+ *
10
+ * Facet-isolate code-string copies (e.g. inside
11
+ * generateGitNetworkFacetCode in git-network-facet.ts, and inside
12
+ * node-shims.ts) cannot import this module and must keep their inline
13
+ * implementations; those copies are documented as justified.
14
+ *
15
+ * Semantics:
16
+ * - Strip empty segments (collapses `//` runs)
17
+ * - Drop `.` segments
18
+ * - Pop on `..`, but only if there's something to pop (won't escape root)
19
+ * - Returns slash-joined string with NO leading/trailing slash, suitable
20
+ * for direct VFS lookup keys
21
+ *
22
+ * Examples:
23
+ * normalizeVfsPath('/foo/./bar/../baz') -> 'foo/baz'
24
+ * normalizeVfsPath('/foo//bar/') -> 'foo/bar'
25
+ * normalizeVfsPath('../escape') -> 'escape' (bounded; doesn't go negative)
26
+ */
27
+ export function normalizeVfsPath(p) {
28
+ const segments = String(p ?? '').split('/');
29
+ const out = [];
30
+ for (const seg of segments) {
31
+ if (seg === '..' && out.length > 0)
32
+ out.pop();
33
+ else if (seg !== '.' && seg !== '' && seg !== undefined)
34
+ out.push(seg);
35
+ }
36
+ return out.join('/');
37
+ }
38
+ /** Strip leading slashes only — does not touch internal segments. */
39
+ export function stripLeadingSlashes(p) {
40
+ return p.replace(/^\/+/, '');
41
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * seed-project.ts — Materialize a polished Vite + React + TS + Tailwind +
3
+ * React Router starter at /home/user/app on first boot.
4
+ *
5
+ * Invariants:
6
+ * - Idempotent: won't re-seed once the sentinel (~/.nimbus-seeded) exists.
7
+ * - Atomic-ish: file bodies written in ONE writeBatch(); sentinel written
8
+ * in a SECOND writeBatch() so a crash between the two re-runs the whole
9
+ * seed on next boot (writeFile is idempotent, so retry is safe).
10
+ * - User escape hatch: `rm -rf ~/app ~/.nimbus-seeded` → next session
11
+ * regenerates from factory defaults (hard reset semantics).
12
+ *
13
+ * Design choices (see plan):
14
+ * - Root: /home/user/app (doesn't pollute the home dir)
15
+ * - Polished deps: react-router, framer-motion, lucide-react, tailwindcss
16
+ * - No pre-install of node_modules (~200MB; let the user see install run)
17
+ * - No auto-start of vite (surprising; README says `npm run dev`)
18
+ * - Basename injection (commit 2) handles the /preview/ basepath wiring.
19
+ */
20
+ import type { SqliteVFS } from './sqlite-vfs.js';
21
+ /** Sentinel: if present, seed never runs again (until user deletes it). */
22
+ export declare const SEED_SENTINEL_PATH = "home/user/.nimbus-seeded";
23
+ /** Project root. Absolute VFS path (no leading slash). */
24
+ export declare const SEED_PROJECT_DIR = "home/user/app";
25
+ export interface SeedFile {
26
+ /** VFS path, no leading slash. */
27
+ path: string;
28
+ content: string;
29
+ }
30
+ export declare const SEED_FILES: SeedFile[];
31
+ /**
32
+ * Should we run the starter-project seed?
33
+ * Returns false if:
34
+ * - Sentinel exists (already seeded; user can `rm ~/.nimbus-seeded` to opt in again)
35
+ * - Project dir already exists (user has their own ~/app we must not clobber)
36
+ */
37
+ export declare function shouldSeedProject(vfs: SqliteVFS): boolean;
38
+ /**
39
+ * Returns true if the sentinel is present (seed has completed at least once).
40
+ * Used to gate MOTD hints about the starter app.
41
+ */
42
+ export declare function hasSeededProject(vfs: SqliteVFS): boolean;
43
+ /**
44
+ * Materialize the seed project.
45
+ *
46
+ * Two-phase write for crash recovery:
47
+ * 1. Write all file bodies + directory inodes in ONE writeBatch().
48
+ * 2. Only on success, write the sentinel in a SEPARATE writeBatch().
49
+ *
50
+ * If the process dies between (1) and (2), the next boot will re-run this
51
+ * function (sentinel absent). All writes are `INSERT OR REPLACE` so retry
52
+ * is idempotent. If (1) itself fails mid-transaction, sqlite rolls back and
53
+ * we start clean next boot.
54
+ */
55
+ export declare function seedProject(vfs: SqliteVFS, opts?: {
56
+ log?: (msg: string) => void;
57
+ }): {
58
+ seeded: boolean;
59
+ files: number;
60
+ reason?: string;
61
+ };
62
+ //# sourceMappingURL=seed-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed-project.d.ts","sourceRoot":"","sources":["../../src/vfs/seed-project.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,SAAS,EAGV,MAAM,iBAAiB,CAAC;AAIzB,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAE7D,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAg3BD,eAAO,MAAM,UAAU,EAAE,QAAQ,EAehC,CAAC;AAIF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAQzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAExD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,SAAS,EACd,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA4GrD"}