@nimbus-sh/core 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 (1056) hide show
  1. package/dist/_shared/ai-egress.d.ts +73 -0
  2. package/dist/_shared/ai-egress.d.ts.map +1 -0
  3. package/dist/_shared/ai-egress.js +88 -0
  4. package/dist/_shared/byte-stream.d.ts +59 -0
  5. package/dist/_shared/byte-stream.d.ts.map +1 -0
  6. package/dist/_shared/byte-stream.js +77 -0
  7. package/dist/_shared/bytes.d.ts +18 -0
  8. package/dist/_shared/bytes.d.ts.map +1 -0
  9. package/dist/_shared/bytes.js +17 -0
  10. package/dist/_shared/cache-stats.d.ts +145 -0
  11. package/dist/_shared/cache-stats.d.ts.map +1 -0
  12. package/dist/_shared/cache-stats.js +161 -0
  13. package/dist/_shared/crypto.d.ts +17 -0
  14. package/dist/_shared/crypto.d.ts.map +1 -0
  15. package/dist/_shared/crypto.js +131 -0
  16. package/dist/_shared/esbuild-facet-shim.d.ts +21 -0
  17. package/dist/_shared/esbuild-facet-shim.d.ts.map +1 -0
  18. package/dist/_shared/esbuild-facet-shim.js +22 -0
  19. package/dist/_shared/exports-resolver.d.ts +74 -0
  20. package/dist/_shared/exports-resolver.d.ts.map +1 -0
  21. package/dist/_shared/exports-resolver.js +284 -0
  22. package/dist/_shared/facet-vfs-cursor.d.ts +48 -0
  23. package/dist/_shared/facet-vfs-cursor.d.ts.map +1 -0
  24. package/dist/_shared/facet-vfs-cursor.js +51 -0
  25. package/dist/_shared/install-phase.d.ts +47 -0
  26. package/dist/_shared/install-phase.d.ts.map +1 -0
  27. package/dist/_shared/install-phase.js +1 -0
  28. package/dist/_shared/lru-map.d.ts +25 -0
  29. package/dist/_shared/lru-map.d.ts.map +1 -0
  30. package/dist/_shared/lru-map.js +57 -0
  31. package/dist/_shared/real-node-imports.d.ts +43 -0
  32. package/dist/_shared/real-node-imports.d.ts.map +1 -0
  33. package/dist/_shared/real-node-imports.js +52 -0
  34. package/dist/_shared/retry.d.ts +92 -0
  35. package/dist/_shared/retry.d.ts.map +1 -0
  36. package/dist/_shared/retry.js +155 -0
  37. package/dist/_shared/rpc-dispose.d.ts +4 -0
  38. package/dist/_shared/rpc-dispose.d.ts.map +1 -0
  39. package/dist/_shared/rpc-dispose.js +30 -0
  40. package/dist/_shared/terminal.d.ts +2 -0
  41. package/dist/_shared/terminal.d.ts.map +1 -0
  42. package/dist/_shared/terminal.js +3 -0
  43. package/dist/_shared/typescript-specifiers.d.ts +58 -0
  44. package/dist/_shared/typescript-specifiers.d.ts.map +1 -0
  45. package/dist/_shared/typescript-specifiers.js +84 -0
  46. package/dist/_shared/untrusted-request.d.ts +34 -0
  47. package/dist/_shared/untrusted-request.d.ts.map +1 -0
  48. package/dist/_shared/untrusted-request.js +74 -0
  49. package/dist/_shared/vfs-write-ledger.d.ts +3 -0
  50. package/dist/_shared/vfs-write-ledger.d.ts.map +1 -0
  51. package/dist/_shared/vfs-write-ledger.js +439 -0
  52. package/dist/_shared/w7-frame.d.ts +79 -0
  53. package/dist/_shared/w7-frame.d.ts.map +1 -0
  54. package/dist/_shared/w7-frame.js +839 -0
  55. package/dist/_shared/weighted-credit-pool.d.ts +61 -0
  56. package/dist/_shared/weighted-credit-pool.d.ts.map +1 -0
  57. package/dist/_shared/weighted-credit-pool.js +196 -0
  58. package/dist/constants.d.ts +64 -0
  59. package/dist/constants.d.ts.map +1 -0
  60. package/dist/constants.js +264 -0
  61. package/dist/index.d.ts +16 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +13 -0
  64. package/dist/observability/diag-counters.d.ts +236 -0
  65. package/dist/observability/diag-counters.d.ts.map +1 -0
  66. package/dist/observability/diag-counters.js +195 -0
  67. package/dist/observability/heap-estimate.d.ts +225 -0
  68. package/dist/observability/heap-estimate.d.ts.map +1 -0
  69. package/dist/observability/heap-estimate.js +185 -0
  70. package/dist/observability/heavy-alloc-coord.d.ts +93 -0
  71. package/dist/observability/heavy-alloc-coord.d.ts.map +1 -0
  72. package/dist/observability/heavy-alloc-coord.js +181 -0
  73. package/dist/observability/oom-classify.d.ts +138 -0
  74. package/dist/observability/oom-classify.d.ts.map +1 -0
  75. package/dist/observability/oom-classify.js +261 -0
  76. package/dist/observability/oom-discriminator.d.ts +176 -0
  77. package/dist/observability/oom-discriminator.d.ts.map +1 -0
  78. package/dist/observability/oom-discriminator.js +272 -0
  79. package/dist/runtime/assets-loader.d.ts +71 -0
  80. package/dist/runtime/assets-loader.d.ts.map +1 -0
  81. package/dist/runtime/assets-loader.js +139 -0
  82. package/dist/runtime/barrel-detect.d.ts +46 -0
  83. package/dist/runtime/barrel-detect.d.ts.map +1 -0
  84. package/dist/runtime/barrel-detect.js +73 -0
  85. package/dist/runtime/bash/preamble.d.ts +2 -0
  86. package/dist/runtime/bash/preamble.d.ts.map +1 -0
  87. package/dist/runtime/bash/preamble.js +1849 -0
  88. package/dist/runtime/bash/types.d.ts +433 -0
  89. package/dist/runtime/bash/types.d.ts.map +1 -0
  90. package/dist/runtime/bash/types.js +1 -0
  91. package/dist/runtime/bundle-profile.d.ts +14 -0
  92. package/dist/runtime/bundle-profile.d.ts.map +1 -0
  93. package/dist/runtime/bundle-profile.js +20 -0
  94. package/dist/runtime/cirrus-vite-config-rewriter.d.ts +2 -0
  95. package/dist/runtime/cirrus-vite-config-rewriter.d.ts.map +1 -0
  96. package/dist/runtime/cirrus-vite-config-rewriter.js +28 -0
  97. package/dist/runtime/cli-flags.d.ts +2 -0
  98. package/dist/runtime/cli-flags.d.ts.map +1 -0
  99. package/dist/runtime/cli-flags.js +11 -0
  100. package/dist/runtime/comment-strip.d.ts +37 -0
  101. package/dist/runtime/comment-strip.d.ts.map +1 -0
  102. package/dist/runtime/comment-strip.js +74 -0
  103. package/dist/runtime/cpython-preamble.d.ts +32 -0
  104. package/dist/runtime/cpython-preamble.d.ts.map +1 -0
  105. package/dist/runtime/cpython-preamble.js +296 -0
  106. package/dist/runtime/esbuild-service.d.ts +242 -0
  107. package/dist/runtime/esbuild-service.d.ts.map +1 -0
  108. package/dist/runtime/esbuild-service.js +1452 -0
  109. package/dist/runtime/framework-detect.d.ts +70 -0
  110. package/dist/runtime/framework-detect.d.ts.map +1 -0
  111. package/dist/runtime/framework-detect.js +177 -0
  112. package/dist/runtime/import-meta-transform.d.ts +3 -0
  113. package/dist/runtime/import-meta-transform.d.ts.map +1 -0
  114. package/dist/runtime/import-meta-transform.js +15 -0
  115. package/dist/runtime/javascript-ast.d.ts +13 -0
  116. package/dist/runtime/javascript-ast.d.ts.map +1 -0
  117. package/dist/runtime/javascript-ast.js +57 -0
  118. package/dist/runtime/long-running-handle.d.ts +119 -0
  119. package/dist/runtime/long-running-handle.d.ts.map +1 -0
  120. package/dist/runtime/long-running-handle.js +169 -0
  121. package/dist/runtime/module-source-rewriter.d.ts +11 -0
  122. package/dist/runtime/module-source-rewriter.d.ts.map +1 -0
  123. package/dist/runtime/module-source-rewriter.js +61 -0
  124. package/dist/runtime/opentui-wasm-backend.d.ts +160 -0
  125. package/dist/runtime/opentui-wasm-backend.d.ts.map +1 -0
  126. package/dist/runtime/opentui-wasm-backend.js +416 -0
  127. package/dist/runtime/os-contracts.d.ts +436 -0
  128. package/dist/runtime/os-contracts.d.ts.map +1 -0
  129. package/dist/runtime/os-contracts.js +101 -0
  130. package/dist/runtime/port-registry.d.ts +100 -0
  131. package/dist/runtime/port-registry.d.ts.map +1 -0
  132. package/dist/runtime/port-registry.js +265 -0
  133. package/dist/runtime/process-input-routing.d.ts +33 -0
  134. package/dist/runtime/process-input-routing.d.ts.map +1 -0
  135. package/dist/runtime/process-input-routing.js +59 -0
  136. package/dist/runtime/process-input.d.ts +39 -0
  137. package/dist/runtime/process-input.d.ts.map +1 -0
  138. package/dist/runtime/process-input.js +117 -0
  139. package/dist/runtime/process-io-protocol.d.ts +90 -0
  140. package/dist/runtime/process-io-protocol.d.ts.map +1 -0
  141. package/dist/runtime/process-io-protocol.js +81 -0
  142. package/dist/runtime/process-logs.d.ts +352 -0
  143. package/dist/runtime/process-logs.d.ts.map +1 -0
  144. package/dist/runtime/process-logs.js +750 -0
  145. package/dist/runtime/process-table.d.ts +101 -0
  146. package/dist/runtime/process-table.d.ts.map +1 -0
  147. package/dist/runtime/process-table.js +175 -0
  148. package/dist/runtime/project-detect.d.ts +21 -0
  149. package/dist/runtime/project-detect.d.ts.map +1 -0
  150. package/dist/runtime/project-detect.js +46 -0
  151. package/dist/runtime/python-server-adapter.d.ts +33 -0
  152. package/dist/runtime/python-server-adapter.d.ts.map +1 -0
  153. package/dist/runtime/python-server-adapter.js +132 -0
  154. package/dist/runtime/require-resolver.d.ts +44 -0
  155. package/dist/runtime/require-resolver.d.ts.map +1 -0
  156. package/dist/runtime/require-resolver.js +698 -0
  157. package/dist/runtime/router-basename.d.ts +36 -0
  158. package/dist/runtime/router-basename.d.ts.map +1 -0
  159. package/dist/runtime/router-basename.js +310 -0
  160. package/dist/runtime/ruby-green-threads.d.ts +136 -0
  161. package/dist/runtime/ruby-green-threads.d.ts.map +1 -0
  162. package/dist/runtime/ruby-green-threads.js +904 -0
  163. package/dist/runtime/ruby-socket-shim.d.ts +2 -0
  164. package/dist/runtime/ruby-socket-shim.d.ts.map +1 -0
  165. package/dist/runtime/ruby-socket-shim.js +548 -0
  166. package/dist/runtime/session-process-supervisor.d.ts +156 -0
  167. package/dist/runtime/session-process-supervisor.d.ts.map +1 -0
  168. package/dist/runtime/session-process-supervisor.js +238 -0
  169. package/dist/runtime/sqlite-runtime-fs-bridge.d.ts +70 -0
  170. package/dist/runtime/sqlite-runtime-fs-bridge.d.ts.map +1 -0
  171. package/dist/runtime/sqlite-runtime-fs-bridge.js +425 -0
  172. package/dist/runtime/streams.d.ts +13 -0
  173. package/dist/runtime/streams.d.ts.map +1 -0
  174. package/dist/runtime/streams.js +546 -0
  175. package/dist/runtime/undici-shim.d.ts +62 -0
  176. package/dist/runtime/undici-shim.d.ts.map +1 -0
  177. package/dist/runtime/undici-shim.js +516 -0
  178. package/dist/runtime/vfs-manifest.d.ts +63 -0
  179. package/dist/runtime/vfs-manifest.d.ts.map +1 -0
  180. package/dist/runtime/vfs-manifest.js +141 -0
  181. package/dist/runtime/vfs-snapshot.d.ts +75 -0
  182. package/dist/runtime/vfs-snapshot.d.ts.map +1 -0
  183. package/dist/runtime/vfs-snapshot.js +220 -0
  184. package/dist/runtime/virtual-socket-kernel.d.ts +252 -0
  185. package/dist/runtime/virtual-socket-kernel.d.ts.map +1 -0
  186. package/dist/runtime/virtual-socket-kernel.js +1143 -0
  187. package/dist/runtime/vite-config-parser.d.ts +13 -0
  188. package/dist/runtime/vite-config-parser.d.ts.map +1 -0
  189. package/dist/runtime/vite-config-parser.js +258 -0
  190. package/dist/runtime/wasi/types.d.ts +347 -0
  191. package/dist/runtime/wasi/types.d.ts.map +1 -0
  192. package/dist/runtime/wasi/types.js +1 -0
  193. package/dist/runtime/wasi-instance.d.ts +215 -0
  194. package/dist/runtime/wasi-instance.d.ts.map +1 -0
  195. package/dist/runtime/wasi-instance.generated.d.ts +14 -0
  196. package/dist/runtime/wasi-instance.generated.d.ts.map +1 -0
  197. package/dist/runtime/wasi-instance.generated.js +13 -0
  198. package/dist/runtime/wasi-instance.js +179 -0
  199. package/dist/runtime/wasi-threads.d.ts +169 -0
  200. package/dist/runtime/wasi-threads.d.ts.map +1 -0
  201. package/dist/runtime/wasi-threads.js +669 -0
  202. package/dist/runtime/wasm-memory.d.ts +84 -0
  203. package/dist/runtime/wasm-memory.d.ts.map +1 -0
  204. package/dist/runtime/wasm-memory.js +235 -0
  205. package/dist/shell/elevation-commands.d.ts +5 -0
  206. package/dist/shell/elevation-commands.d.ts.map +1 -0
  207. package/dist/shell/elevation-commands.js +109 -0
  208. package/dist/shell/exec-dispatch.d.ts +57 -0
  209. package/dist/shell/exec-dispatch.d.ts.map +1 -0
  210. package/dist/shell/exec-dispatch.js +181 -0
  211. package/dist/shell/features.d.ts +154 -0
  212. package/dist/shell/features.d.ts.map +1 -0
  213. package/dist/shell/features.js +792 -0
  214. package/dist/shell/shell-entrypoints.d.ts +55 -0
  215. package/dist/shell/shell-entrypoints.d.ts.map +1 -0
  216. package/dist/shell/shell-entrypoints.js +230 -0
  217. package/dist/shell/shell-invocation.d.ts +36 -0
  218. package/dist/shell/shell-invocation.d.ts.map +1 -0
  219. package/dist/shell/shell-invocation.js +148 -0
  220. package/dist/shell/unix-accounts.d.ts +27 -0
  221. package/dist/shell/unix-accounts.d.ts.map +1 -0
  222. package/dist/shell/unix-accounts.js +105 -0
  223. package/dist/shell/unix-commands.d.ts +15 -0
  224. package/dist/shell/unix-commands.d.ts.map +1 -0
  225. package/dist/shell/unix-commands.js +4702 -0
  226. package/dist/substrate/lifo/commands/archive/gunzip.d.ts +4 -0
  227. package/dist/substrate/lifo/commands/archive/gunzip.d.ts.map +1 -0
  228. package/dist/substrate/lifo/commands/archive/gunzip.js +58 -0
  229. package/dist/substrate/lifo/commands/archive/gzip.d.ts +4 -0
  230. package/dist/substrate/lifo/commands/archive/gzip.d.ts.map +1 -0
  231. package/dist/substrate/lifo/commands/archive/gzip.js +73 -0
  232. package/dist/substrate/lifo/commands/archive/tar.d.ts +4 -0
  233. package/dist/substrate/lifo/commands/archive/tar.d.ts.map +1 -0
  234. package/dist/substrate/lifo/commands/archive/tar.js +158 -0
  235. package/dist/substrate/lifo/commands/archive/unzip.d.ts +4 -0
  236. package/dist/substrate/lifo/commands/archive/unzip.d.ts.map +1 -0
  237. package/dist/substrate/lifo/commands/archive/unzip.js +114 -0
  238. package/dist/substrate/lifo/commands/archive/zip.d.ts +4 -0
  239. package/dist/substrate/lifo/commands/archive/zip.d.ts.map +1 -0
  240. package/dist/substrate/lifo/commands/archive/zip.js +58 -0
  241. package/dist/substrate/lifo/commands/fs/basename.d.ts +4 -0
  242. package/dist/substrate/lifo/commands/fs/basename.d.ts.map +1 -0
  243. package/dist/substrate/lifo/commands/fs/basename.js +12 -0
  244. package/dist/substrate/lifo/commands/fs/cat.d.ts +4 -0
  245. package/dist/substrate/lifo/commands/fs/cat.d.ts.map +1 -0
  246. package/dist/substrate/lifo/commands/fs/cat.js +52 -0
  247. package/dist/substrate/lifo/commands/fs/chmod.d.ts +25 -0
  248. package/dist/substrate/lifo/commands/fs/chmod.d.ts.map +1 -0
  249. package/dist/substrate/lifo/commands/fs/chmod.js +97 -0
  250. package/dist/substrate/lifo/commands/fs/chown.d.ts +4 -0
  251. package/dist/substrate/lifo/commands/fs/chown.d.ts.map +1 -0
  252. package/dist/substrate/lifo/commands/fs/chown.js +41 -0
  253. package/dist/substrate/lifo/commands/fs/cp.d.ts +4 -0
  254. package/dist/substrate/lifo/commands/fs/cp.d.ts.map +1 -0
  255. package/dist/substrate/lifo/commands/fs/cp.js +29 -0
  256. package/dist/substrate/lifo/commands/fs/df.d.ts +4 -0
  257. package/dist/substrate/lifo/commands/fs/df.d.ts.map +1 -0
  258. package/dist/substrate/lifo/commands/fs/df.js +52 -0
  259. package/dist/substrate/lifo/commands/fs/dirname.d.ts +4 -0
  260. package/dist/substrate/lifo/commands/fs/dirname.d.ts.map +1 -0
  261. package/dist/substrate/lifo/commands/fs/dirname.js +12 -0
  262. package/dist/substrate/lifo/commands/fs/du.d.ts +4 -0
  263. package/dist/substrate/lifo/commands/fs/du.d.ts.map +1 -0
  264. package/dist/substrate/lifo/commands/fs/du.js +104 -0
  265. package/dist/substrate/lifo/commands/fs/file.d.ts +4 -0
  266. package/dist/substrate/lifo/commands/fs/file.d.ts.map +1 -0
  267. package/dist/substrate/lifo/commands/fs/file.js +84 -0
  268. package/dist/substrate/lifo/commands/fs/find.d.ts +4 -0
  269. package/dist/substrate/lifo/commands/fs/find.d.ts.map +1 -0
  270. package/dist/substrate/lifo/commands/fs/find.js +72 -0
  271. package/dist/substrate/lifo/commands/fs/ln.d.ts +4 -0
  272. package/dist/substrate/lifo/commands/fs/ln.d.ts.map +1 -0
  273. package/dist/substrate/lifo/commands/fs/ln.js +15 -0
  274. package/dist/substrate/lifo/commands/fs/ls.d.ts +4 -0
  275. package/dist/substrate/lifo/commands/fs/ls.d.ts.map +1 -0
  276. package/dist/substrate/lifo/commands/fs/ls.js +146 -0
  277. package/dist/substrate/lifo/commands/fs/mkdir.d.ts +4 -0
  278. package/dist/substrate/lifo/commands/fs/mkdir.d.ts.map +1 -0
  279. package/dist/substrate/lifo/commands/fs/mkdir.js +31 -0
  280. package/dist/substrate/lifo/commands/fs/mktemp.d.ts +4 -0
  281. package/dist/substrate/lifo/commands/fs/mktemp.d.ts.map +1 -0
  282. package/dist/substrate/lifo/commands/fs/mktemp.js +48 -0
  283. package/dist/substrate/lifo/commands/fs/mv.d.ts +4 -0
  284. package/dist/substrate/lifo/commands/fs/mv.d.ts.map +1 -0
  285. package/dist/substrate/lifo/commands/fs/mv.js +113 -0
  286. package/dist/substrate/lifo/commands/fs/realpath.d.ts +4 -0
  287. package/dist/substrate/lifo/commands/fs/realpath.d.ts.map +1 -0
  288. package/dist/substrate/lifo/commands/fs/realpath.js +27 -0
  289. package/dist/substrate/lifo/commands/fs/rm.d.ts +4 -0
  290. package/dist/substrate/lifo/commands/fs/rm.d.ts.map +1 -0
  291. package/dist/substrate/lifo/commands/fs/rm.js +48 -0
  292. package/dist/substrate/lifo/commands/fs/rmdir.d.ts +4 -0
  293. package/dist/substrate/lifo/commands/fs/rmdir.d.ts.map +1 -0
  294. package/dist/substrate/lifo/commands/fs/rmdir.js +44 -0
  295. package/dist/substrate/lifo/commands/fs/stat.d.ts +4 -0
  296. package/dist/substrate/lifo/commands/fs/stat.d.ts.map +1 -0
  297. package/dist/substrate/lifo/commands/fs/stat.js +35 -0
  298. package/dist/substrate/lifo/commands/fs/touch.d.ts +4 -0
  299. package/dist/substrate/lifo/commands/fs/touch.d.ts.map +1 -0
  300. package/dist/substrate/lifo/commands/fs/touch.js +26 -0
  301. package/dist/substrate/lifo/commands/fs/tree.d.ts +4 -0
  302. package/dist/substrate/lifo/commands/fs/tree.d.ts.map +1 -0
  303. package/dist/substrate/lifo/commands/fs/tree.js +69 -0
  304. package/dist/substrate/lifo/commands/index.d.ts +3 -0
  305. package/dist/substrate/lifo/commands/index.d.ts.map +1 -0
  306. package/dist/substrate/lifo/commands/index.js +1 -0
  307. package/dist/substrate/lifo/commands/io/dd.d.ts +4 -0
  308. package/dist/substrate/lifo/commands/io/dd.d.ts.map +1 -0
  309. package/dist/substrate/lifo/commands/io/dd.js +256 -0
  310. package/dist/substrate/lifo/commands/io/printf.d.ts +4 -0
  311. package/dist/substrate/lifo/commands/io/printf.d.ts.map +1 -0
  312. package/dist/substrate/lifo/commands/io/printf.js +82 -0
  313. package/dist/substrate/lifo/commands/io/tee.d.ts +4 -0
  314. package/dist/substrate/lifo/commands/io/tee.d.ts.map +1 -0
  315. package/dist/substrate/lifo/commands/io/tee.js +31 -0
  316. package/dist/substrate/lifo/commands/io/xargs.d.ts +4 -0
  317. package/dist/substrate/lifo/commands/io/xargs.d.ts.map +1 -0
  318. package/dist/substrate/lifo/commands/io/xargs.js +44 -0
  319. package/dist/substrate/lifo/commands/io/yes.d.ts +4 -0
  320. package/dist/substrate/lifo/commands/io/yes.d.ts.map +1 -0
  321. package/dist/substrate/lifo/commands/io/yes.js +10 -0
  322. package/dist/substrate/lifo/commands/net/curl.d.ts +6 -0
  323. package/dist/substrate/lifo/commands/net/curl.d.ts.map +1 -0
  324. package/dist/substrate/lifo/commands/net/curl.js +617 -0
  325. package/dist/substrate/lifo/commands/net/dig.d.ts +4 -0
  326. package/dist/substrate/lifo/commands/net/dig.d.ts.map +1 -0
  327. package/dist/substrate/lifo/commands/net/dig.js +77 -0
  328. package/dist/substrate/lifo/commands/net/forward.d.ts +14 -0
  329. package/dist/substrate/lifo/commands/net/forward.d.ts.map +1 -0
  330. package/dist/substrate/lifo/commands/net/forward.js +80 -0
  331. package/dist/substrate/lifo/commands/net/host.d.ts +14 -0
  332. package/dist/substrate/lifo/commands/net/host.d.ts.map +1 -0
  333. package/dist/substrate/lifo/commands/net/host.js +160 -0
  334. package/dist/substrate/lifo/commands/net/ifconfig.d.ts +8 -0
  335. package/dist/substrate/lifo/commands/net/ifconfig.d.ts.map +1 -0
  336. package/dist/substrate/lifo/commands/net/ifconfig.js +120 -0
  337. package/dist/substrate/lifo/commands/net/ip.d.ts +14 -0
  338. package/dist/substrate/lifo/commands/net/ip.d.ts.map +1 -0
  339. package/dist/substrate/lifo/commands/net/ip.js +508 -0
  340. package/dist/substrate/lifo/commands/net/netstat.d.ts +8 -0
  341. package/dist/substrate/lifo/commands/net/netstat.d.ts.map +1 -0
  342. package/dist/substrate/lifo/commands/net/netstat.js +94 -0
  343. package/dist/substrate/lifo/commands/net/ping.d.ts +4 -0
  344. package/dist/substrate/lifo/commands/net/ping.d.ts.map +1 -0
  345. package/dist/substrate/lifo/commands/net/ping.js +64 -0
  346. package/dist/substrate/lifo/commands/net/ports.d.ts +8 -0
  347. package/dist/substrate/lifo/commands/net/ports.d.ts.map +1 -0
  348. package/dist/substrate/lifo/commands/net/ports.js +36 -0
  349. package/dist/substrate/lifo/commands/net/route.d.ts +8 -0
  350. package/dist/substrate/lifo/commands/net/route.d.ts.map +1 -0
  351. package/dist/substrate/lifo/commands/net/route.js +128 -0
  352. package/dist/substrate/lifo/commands/net/tunnel-v2.d.ts +4 -0
  353. package/dist/substrate/lifo/commands/net/tunnel-v2.d.ts.map +1 -0
  354. package/dist/substrate/lifo/commands/net/tunnel-v2.js +141 -0
  355. package/dist/substrate/lifo/commands/net/tunnel.d.ts +6 -0
  356. package/dist/substrate/lifo/commands/net/tunnel.d.ts.map +1 -0
  357. package/dist/substrate/lifo/commands/net/tunnel.js +232 -0
  358. package/dist/substrate/lifo/commands/net/wget.d.ts +4 -0
  359. package/dist/substrate/lifo/commands/net/wget.d.ts.map +1 -0
  360. package/dist/substrate/lifo/commands/net/wget.js +78 -0
  361. package/dist/substrate/lifo/commands/registry.d.ts +15 -0
  362. package/dist/substrate/lifo/commands/registry.d.ts.map +1 -0
  363. package/dist/substrate/lifo/commands/registry.js +120 -0
  364. package/dist/substrate/lifo/commands/signal.d.ts +12 -0
  365. package/dist/substrate/lifo/commands/signal.d.ts.map +1 -0
  366. package/dist/substrate/lifo/commands/signal.js +47 -0
  367. package/dist/substrate/lifo/commands/system/bc.d.ts +4 -0
  368. package/dist/substrate/lifo/commands/system/bc.d.ts.map +1 -0
  369. package/dist/substrate/lifo/commands/system/bc.js +243 -0
  370. package/dist/substrate/lifo/commands/system/cal.d.ts +4 -0
  371. package/dist/substrate/lifo/commands/system/cal.d.ts.map +1 -0
  372. package/dist/substrate/lifo/commands/system/cal.js +81 -0
  373. package/dist/substrate/lifo/commands/system/date.d.ts +4 -0
  374. package/dist/substrate/lifo/commands/system/date.d.ts.map +1 -0
  375. package/dist/substrate/lifo/commands/system/date.js +79 -0
  376. package/dist/substrate/lifo/commands/system/env.d.ts +4 -0
  377. package/dist/substrate/lifo/commands/system/env.d.ts.map +1 -0
  378. package/dist/substrate/lifo/commands/system/env.js +7 -0
  379. package/dist/substrate/lifo/commands/system/fastfetch.d.ts +4 -0
  380. package/dist/substrate/lifo/commands/system/fastfetch.d.ts.map +1 -0
  381. package/dist/substrate/lifo/commands/system/fastfetch.js +385 -0
  382. package/dist/substrate/lifo/commands/system/free.d.ts +4 -0
  383. package/dist/substrate/lifo/commands/system/free.d.ts.map +1 -0
  384. package/dist/substrate/lifo/commands/system/free.js +36 -0
  385. package/dist/substrate/lifo/commands/system/help.d.ts +4 -0
  386. package/dist/substrate/lifo/commands/system/help.d.ts.map +1 -0
  387. package/dist/substrate/lifo/commands/system/help.js +46 -0
  388. package/dist/substrate/lifo/commands/system/hostname.d.ts +4 -0
  389. package/dist/substrate/lifo/commands/system/hostname.d.ts.map +1 -0
  390. package/dist/substrate/lifo/commands/system/hostname.js +6 -0
  391. package/dist/substrate/lifo/commands/system/kill.d.ts +4 -0
  392. package/dist/substrate/lifo/commands/system/kill.d.ts.map +1 -0
  393. package/dist/substrate/lifo/commands/system/kill.js +76 -0
  394. package/dist/substrate/lifo/commands/system/lifo.d.ts +41 -0
  395. package/dist/substrate/lifo/commands/system/lifo.d.ts.map +1 -0
  396. package/dist/substrate/lifo/commands/system/lifo.js +446 -0
  397. package/dist/substrate/lifo/commands/system/logout.d.ts +5 -0
  398. package/dist/substrate/lifo/commands/system/logout.d.ts.map +1 -0
  399. package/dist/substrate/lifo/commands/system/logout.js +15 -0
  400. package/dist/substrate/lifo/commands/system/man.d.ts +4 -0
  401. package/dist/substrate/lifo/commands/system/man.d.ts.map +1 -0
  402. package/dist/substrate/lifo/commands/system/man.js +144 -0
  403. package/dist/substrate/lifo/commands/system/node.d.ts +6 -0
  404. package/dist/substrate/lifo/commands/system/node.d.ts.map +1 -0
  405. package/dist/substrate/lifo/commands/system/node.js +1241 -0
  406. package/dist/substrate/lifo/commands/system/npm.d.ts +26 -0
  407. package/dist/substrate/lifo/commands/system/npm.d.ts.map +1 -0
  408. package/dist/substrate/lifo/commands/system/npm.js +934 -0
  409. package/dist/substrate/lifo/commands/system/pkg.d.ts +4 -0
  410. package/dist/substrate/lifo/commands/system/pkg.d.ts.map +1 -0
  411. package/dist/substrate/lifo/commands/system/pkg.js +97 -0
  412. package/dist/substrate/lifo/commands/system/ps.d.ts +5 -0
  413. package/dist/substrate/lifo/commands/system/ps.d.ts.map +1 -0
  414. package/dist/substrate/lifo/commands/system/ps.js +35 -0
  415. package/dist/substrate/lifo/commands/system/registry-schemas.d.ts +44 -0
  416. package/dist/substrate/lifo/commands/system/registry-schemas.d.ts.map +1 -0
  417. package/dist/substrate/lifo/commands/system/registry-schemas.js +28 -0
  418. package/dist/substrate/lifo/commands/system/sha256sum.d.ts +4 -0
  419. package/dist/substrate/lifo/commands/system/sha256sum.d.ts.map +1 -0
  420. package/dist/substrate/lifo/commands/system/sha256sum.js +86 -0
  421. package/dist/substrate/lifo/commands/system/sl.d.ts +4 -0
  422. package/dist/substrate/lifo/commands/system/sl.d.ts.map +1 -0
  423. package/dist/substrate/lifo/commands/system/sl.js +204 -0
  424. package/dist/substrate/lifo/commands/system/sleep.d.ts +4 -0
  425. package/dist/substrate/lifo/commands/system/sleep.d.ts.map +1 -0
  426. package/dist/substrate/lifo/commands/system/sleep.js +27 -0
  427. package/dist/substrate/lifo/commands/system/stty.d.ts +4 -0
  428. package/dist/substrate/lifo/commands/system/stty.d.ts.map +1 -0
  429. package/dist/substrate/lifo/commands/system/stty.js +61 -0
  430. package/dist/substrate/lifo/commands/system/systemctl.d.ts +4 -0
  431. package/dist/substrate/lifo/commands/system/systemctl.d.ts.map +1 -0
  432. package/dist/substrate/lifo/commands/system/systemctl.js +164 -0
  433. package/dist/substrate/lifo/commands/system/top.d.ts +4 -0
  434. package/dist/substrate/lifo/commands/system/top.d.ts.map +1 -0
  435. package/dist/substrate/lifo/commands/system/top.js +38 -0
  436. package/dist/substrate/lifo/commands/system/uname.d.ts +4 -0
  437. package/dist/substrate/lifo/commands/system/uname.d.ts.map +1 -0
  438. package/dist/substrate/lifo/commands/system/uname.js +55 -0
  439. package/dist/substrate/lifo/commands/system/uptime.d.ts +4 -0
  440. package/dist/substrate/lifo/commands/system/uptime.d.ts.map +1 -0
  441. package/dist/substrate/lifo/commands/system/uptime.js +16 -0
  442. package/dist/substrate/lifo/commands/system/watch.d.ts +4 -0
  443. package/dist/substrate/lifo/commands/system/watch.d.ts.map +1 -0
  444. package/dist/substrate/lifo/commands/system/watch.js +53 -0
  445. package/dist/substrate/lifo/commands/system/which.d.ts +4 -0
  446. package/dist/substrate/lifo/commands/system/which.d.ts.map +1 -0
  447. package/dist/substrate/lifo/commands/system/which.js +45 -0
  448. package/dist/substrate/lifo/commands/system/whoami.d.ts +4 -0
  449. package/dist/substrate/lifo/commands/system/whoami.d.ts.map +1 -0
  450. package/dist/substrate/lifo/commands/system/whoami.js +6 -0
  451. package/dist/substrate/lifo/commands/text/awk.d.ts +4 -0
  452. package/dist/substrate/lifo/commands/text/awk.d.ts.map +1 -0
  453. package/dist/substrate/lifo/commands/text/awk.js +200 -0
  454. package/dist/substrate/lifo/commands/text/base64.d.ts +4 -0
  455. package/dist/substrate/lifo/commands/text/base64.d.ts.map +1 -0
  456. package/dist/substrate/lifo/commands/text/base64.js +102 -0
  457. package/dist/substrate/lifo/commands/text/cut.d.ts +4 -0
  458. package/dist/substrate/lifo/commands/text/cut.d.ts.map +1 -0
  459. package/dist/substrate/lifo/commands/text/cut.js +91 -0
  460. package/dist/substrate/lifo/commands/text/diff.d.ts +4 -0
  461. package/dist/substrate/lifo/commands/text/diff.d.ts.map +1 -0
  462. package/dist/substrate/lifo/commands/text/diff.js +292 -0
  463. package/dist/substrate/lifo/commands/text/grep.d.ts +4 -0
  464. package/dist/substrate/lifo/commands/text/grep.d.ts.map +1 -0
  465. package/dist/substrate/lifo/commands/text/grep.js +189 -0
  466. package/dist/substrate/lifo/commands/text/head.d.ts +4 -0
  467. package/dist/substrate/lifo/commands/text/head.d.ts.map +1 -0
  468. package/dist/substrate/lifo/commands/text/head.js +111 -0
  469. package/dist/substrate/lifo/commands/text/less.d.ts +4 -0
  470. package/dist/substrate/lifo/commands/text/less.d.ts.map +1 -0
  471. package/dist/substrate/lifo/commands/text/less.js +335 -0
  472. package/dist/substrate/lifo/commands/text/nano.d.ts +4 -0
  473. package/dist/substrate/lifo/commands/text/nano.d.ts.map +1 -0
  474. package/dist/substrate/lifo/commands/text/nano.js +510 -0
  475. package/dist/substrate/lifo/commands/text/nl.d.ts +4 -0
  476. package/dist/substrate/lifo/commands/text/nl.d.ts.map +1 -0
  477. package/dist/substrate/lifo/commands/text/nl.js +64 -0
  478. package/dist/substrate/lifo/commands/text/rev.d.ts +4 -0
  479. package/dist/substrate/lifo/commands/text/rev.d.ts.map +1 -0
  480. package/dist/substrate/lifo/commands/text/rev.js +41 -0
  481. package/dist/substrate/lifo/commands/text/sed.d.ts +21 -0
  482. package/dist/substrate/lifo/commands/text/sed.d.ts.map +1 -0
  483. package/dist/substrate/lifo/commands/text/sed.js +248 -0
  484. package/dist/substrate/lifo/commands/text/seq.d.ts +4 -0
  485. package/dist/substrate/lifo/commands/text/seq.d.ts.map +1 -0
  486. package/dist/substrate/lifo/commands/text/seq.js +69 -0
  487. package/dist/substrate/lifo/commands/text/sort.d.ts +4 -0
  488. package/dist/substrate/lifo/commands/text/sort.d.ts.map +1 -0
  489. package/dist/substrate/lifo/commands/text/sort.js +90 -0
  490. package/dist/substrate/lifo/commands/text/strings.d.ts +4 -0
  491. package/dist/substrate/lifo/commands/text/strings.d.ts.map +1 -0
  492. package/dist/substrate/lifo/commands/text/strings.js +69 -0
  493. package/dist/substrate/lifo/commands/text/tac.d.ts +4 -0
  494. package/dist/substrate/lifo/commands/text/tac.d.ts.map +1 -0
  495. package/dist/substrate/lifo/commands/text/tac.js +32 -0
  496. package/dist/substrate/lifo/commands/text/tail.d.ts +4 -0
  497. package/dist/substrate/lifo/commands/text/tail.d.ts.map +1 -0
  498. package/dist/substrate/lifo/commands/text/tail.js +64 -0
  499. package/dist/substrate/lifo/commands/text/tr.d.ts +4 -0
  500. package/dist/substrate/lifo/commands/text/tr.d.ts.map +1 -0
  501. package/dist/substrate/lifo/commands/text/tr.js +180 -0
  502. package/dist/substrate/lifo/commands/text/uniq.d.ts +4 -0
  503. package/dist/substrate/lifo/commands/text/uniq.d.ts.map +1 -0
  504. package/dist/substrate/lifo/commands/text/uniq.js +82 -0
  505. package/dist/substrate/lifo/commands/text/wc.d.ts +4 -0
  506. package/dist/substrate/lifo/commands/text/wc.d.ts.map +1 -0
  507. package/dist/substrate/lifo/commands/text/wc.js +107 -0
  508. package/dist/substrate/lifo/commands/types.d.ts +49 -0
  509. package/dist/substrate/lifo/commands/types.d.ts.map +1 -0
  510. package/dist/substrate/lifo/commands/types.js +1 -0
  511. package/dist/substrate/lifo/index.d.ts +67 -0
  512. package/dist/substrate/lifo/index.d.ts.map +1 -0
  513. package/dist/substrate/lifo/index.js +66 -0
  514. package/dist/substrate/lifo/kernel/ServiceManager.d.ts +51 -0
  515. package/dist/substrate/lifo/kernel/ServiceManager.d.ts.map +1 -0
  516. package/dist/substrate/lifo/kernel/ServiceManager.js +302 -0
  517. package/dist/substrate/lifo/kernel/index.d.ts +40 -0
  518. package/dist/substrate/lifo/kernel/index.d.ts.map +1 -0
  519. package/dist/substrate/lifo/kernel/index.js +170 -0
  520. package/dist/substrate/lifo/kernel/network/Bridge.d.ts +110 -0
  521. package/dist/substrate/lifo/kernel/network/Bridge.d.ts.map +1 -0
  522. package/dist/substrate/lifo/kernel/network/Bridge.js +278 -0
  523. package/dist/substrate/lifo/kernel/network/DNSResolver.d.ts +50 -0
  524. package/dist/substrate/lifo/kernel/network/DNSResolver.d.ts.map +1 -0
  525. package/dist/substrate/lifo/kernel/network/DNSResolver.js +135 -0
  526. package/dist/substrate/lifo/kernel/network/NetworkInterface.d.ts +83 -0
  527. package/dist/substrate/lifo/kernel/network/NetworkInterface.d.ts.map +1 -0
  528. package/dist/substrate/lifo/kernel/network/NetworkInterface.js +183 -0
  529. package/dist/substrate/lifo/kernel/network/NetworkNamespace.d.ts +98 -0
  530. package/dist/substrate/lifo/kernel/network/NetworkNamespace.d.ts.map +1 -0
  531. package/dist/substrate/lifo/kernel/network/NetworkNamespace.js +149 -0
  532. package/dist/substrate/lifo/kernel/network/NetworkStack.d.ts +178 -0
  533. package/dist/substrate/lifo/kernel/network/NetworkStack.d.ts.map +1 -0
  534. package/dist/substrate/lifo/kernel/network/NetworkStack.js +460 -0
  535. package/dist/substrate/lifo/kernel/network/PortBridge.d.ts +44 -0
  536. package/dist/substrate/lifo/kernel/network/PortBridge.d.ts.map +1 -0
  537. package/dist/substrate/lifo/kernel/network/PortBridge.js +158 -0
  538. package/dist/substrate/lifo/kernel/network/RoutingTable.d.ts +55 -0
  539. package/dist/substrate/lifo/kernel/network/RoutingTable.d.ts.map +1 -0
  540. package/dist/substrate/lifo/kernel/network/RoutingTable.js +167 -0
  541. package/dist/substrate/lifo/kernel/network/Socket.d.ts +65 -0
  542. package/dist/substrate/lifo/kernel/network/Socket.d.ts.map +1 -0
  543. package/dist/substrate/lifo/kernel/network/Socket.js +201 -0
  544. package/dist/substrate/lifo/kernel/network/index.d.ts +11 -0
  545. package/dist/substrate/lifo/kernel/network/index.d.ts.map +1 -0
  546. package/dist/substrate/lifo/kernel/network/index.js +9 -0
  547. package/dist/substrate/lifo/kernel/network/tunnel/BaseTunnel.d.ts +55 -0
  548. package/dist/substrate/lifo/kernel/network/tunnel/BaseTunnel.d.ts.map +1 -0
  549. package/dist/substrate/lifo/kernel/network/tunnel/BaseTunnel.js +88 -0
  550. package/dist/substrate/lifo/kernel/network/tunnel/VETHPair.d.ts +71 -0
  551. package/dist/substrate/lifo/kernel/network/tunnel/VETHPair.d.ts.map +1 -0
  552. package/dist/substrate/lifo/kernel/network/tunnel/VETHPair.js +191 -0
  553. package/dist/substrate/lifo/kernel/network/tunnel/WebSocketTunnel.d.ts +89 -0
  554. package/dist/substrate/lifo/kernel/network/tunnel/WebSocketTunnel.d.ts.map +1 -0
  555. package/dist/substrate/lifo/kernel/network/tunnel/WebSocketTunnel.js +324 -0
  556. package/dist/substrate/lifo/kernel/network/types.d.ts +159 -0
  557. package/dist/substrate/lifo/kernel/network/types.d.ts.map +1 -0
  558. package/dist/substrate/lifo/kernel/network/types.js +5 -0
  559. package/dist/substrate/lifo/kernel/persistence/PersistenceManager.d.ts +12 -0
  560. package/dist/substrate/lifo/kernel/persistence/PersistenceManager.d.ts.map +1 -0
  561. package/dist/substrate/lifo/kernel/persistence/PersistenceManager.js +47 -0
  562. package/dist/substrate/lifo/kernel/persistence/backends.d.ts +15 -0
  563. package/dist/substrate/lifo/kernel/persistence/backends.d.ts.map +1 -0
  564. package/dist/substrate/lifo/kernel/persistence/backends.js +18 -0
  565. package/dist/substrate/lifo/kernel/persistence/index.d.ts +6 -0
  566. package/dist/substrate/lifo/kernel/persistence/index.d.ts.map +1 -0
  567. package/dist/substrate/lifo/kernel/persistence/index.js +3 -0
  568. package/dist/substrate/lifo/kernel/persistence/serializer.d.ts +21 -0
  569. package/dist/substrate/lifo/kernel/persistence/serializer.d.ts.map +1 -0
  570. package/dist/substrate/lifo/kernel/persistence/serializer.js +99 -0
  571. package/dist/substrate/lifo/kernel/samples.d.ts +3 -0
  572. package/dist/substrate/lifo/kernel/samples.d.ts.map +1 -0
  573. package/dist/substrate/lifo/kernel/samples.js +930 -0
  574. package/dist/substrate/lifo/kernel/storage/BlobStore.d.ts +22 -0
  575. package/dist/substrate/lifo/kernel/storage/BlobStore.d.ts.map +1 -0
  576. package/dist/substrate/lifo/kernel/storage/BlobStore.js +84 -0
  577. package/dist/substrate/lifo/kernel/storage/ContentStore.d.ts +54 -0
  578. package/dist/substrate/lifo/kernel/storage/ContentStore.d.ts.map +1 -0
  579. package/dist/substrate/lifo/kernel/storage/ContentStore.js +120 -0
  580. package/dist/substrate/lifo/kernel/storage/index.d.ts +6 -0
  581. package/dist/substrate/lifo/kernel/storage/index.d.ts.map +1 -0
  582. package/dist/substrate/lifo/kernel/storage/index.js +3 -0
  583. package/dist/substrate/lifo/kernel/unit-parser.d.ts +22 -0
  584. package/dist/substrate/lifo/kernel/unit-parser.d.ts.map +1 -0
  585. package/dist/substrate/lifo/kernel/unit-parser.js +80 -0
  586. package/dist/substrate/lifo/kernel/vfs/VFS.d.ts +99 -0
  587. package/dist/substrate/lifo/kernel/vfs/VFS.d.ts.map +1 -0
  588. package/dist/substrate/lifo/kernel/vfs/VFS.js +679 -0
  589. package/dist/substrate/lifo/kernel/vfs/index.d.ts +8 -0
  590. package/dist/substrate/lifo/kernel/vfs/index.d.ts.map +1 -0
  591. package/dist/substrate/lifo/kernel/vfs/index.js +5 -0
  592. package/dist/substrate/lifo/kernel/vfs/providers/DevProvider.d.ts +21 -0
  593. package/dist/substrate/lifo/kernel/vfs/providers/DevProvider.d.ts.map +1 -0
  594. package/dist/substrate/lifo/kernel/vfs/providers/DevProvider.js +137 -0
  595. package/dist/substrate/lifo/kernel/vfs/providers/NativeFsProvider.d.ts +63 -0
  596. package/dist/substrate/lifo/kernel/vfs/providers/NativeFsProvider.d.ts.map +1 -0
  597. package/dist/substrate/lifo/kernel/vfs/providers/NativeFsProvider.js +175 -0
  598. package/dist/substrate/lifo/kernel/vfs/providers/ProcProvider.d.ts +14 -0
  599. package/dist/substrate/lifo/kernel/vfs/providers/ProcProvider.d.ts.map +1 -0
  600. package/dist/substrate/lifo/kernel/vfs/providers/ProcProvider.js +126 -0
  601. package/dist/substrate/lifo/kernel/vfs/types.d.ts +117 -0
  602. package/dist/substrate/lifo/kernel/vfs/types.d.ts.map +1 -0
  603. package/dist/substrate/lifo/kernel/vfs/types.js +42 -0
  604. package/dist/substrate/lifo/node-compat/buffer.d.ts +44 -0
  605. package/dist/substrate/lifo/node-compat/buffer.d.ts.map +1 -0
  606. package/dist/substrate/lifo/node-compat/buffer.js +331 -0
  607. package/dist/substrate/lifo/node-compat/child_process.d.ts +10 -0
  608. package/dist/substrate/lifo/node-compat/child_process.d.ts.map +1 -0
  609. package/dist/substrate/lifo/node-compat/child_process.js +42 -0
  610. package/dist/substrate/lifo/node-compat/console.d.ts +21 -0
  611. package/dist/substrate/lifo/node-compat/console.d.ts.map +1 -0
  612. package/dist/substrate/lifo/node-compat/console.js +68 -0
  613. package/dist/substrate/lifo/node-compat/crypto.d.ts +24 -0
  614. package/dist/substrate/lifo/node-compat/crypto.d.ts.map +1 -0
  615. package/dist/substrate/lifo/node-compat/crypto.js +216 -0
  616. package/dist/substrate/lifo/node-compat/dns.d.ts +117 -0
  617. package/dist/substrate/lifo/node-compat/dns.d.ts.map +1 -0
  618. package/dist/substrate/lifo/node-compat/dns.js +144 -0
  619. package/dist/substrate/lifo/node-compat/esbuild.d.ts +10 -0
  620. package/dist/substrate/lifo/node-compat/esbuild.d.ts.map +1 -0
  621. package/dist/substrate/lifo/node-compat/esbuild.js +70 -0
  622. package/dist/substrate/lifo/node-compat/events.d.ts +19 -0
  623. package/dist/substrate/lifo/node-compat/events.d.ts.map +1 -0
  624. package/dist/substrate/lifo/node-compat/events.js +83 -0
  625. package/dist/substrate/lifo/node-compat/fs.d.ts +195 -0
  626. package/dist/substrate/lifo/node-compat/fs.d.ts.map +1 -0
  627. package/dist/substrate/lifo/node-compat/fs.js +624 -0
  628. package/dist/substrate/lifo/node-compat/http.d.ts +133 -0
  629. package/dist/substrate/lifo/node-compat/http.d.ts.map +1 -0
  630. package/dist/substrate/lifo/node-compat/http.js +452 -0
  631. package/dist/substrate/lifo/node-compat/index.d.ts +20 -0
  632. package/dist/substrate/lifo/node-compat/index.d.ts.map +1 -0
  633. package/dist/substrate/lifo/node-compat/index.js +291 -0
  634. package/dist/substrate/lifo/node-compat/module.d.ts +55 -0
  635. package/dist/substrate/lifo/node-compat/module.d.ts.map +1 -0
  636. package/dist/substrate/lifo/node-compat/module.js +124 -0
  637. package/dist/substrate/lifo/node-compat/os.d.ts +39 -0
  638. package/dist/substrate/lifo/node-compat/os.d.ts.map +1 -0
  639. package/dist/substrate/lifo/node-compat/os.js +45 -0
  640. package/dist/substrate/lifo/node-compat/path.d.ts +86 -0
  641. package/dist/substrate/lifo/node-compat/path.d.ts.map +1 -0
  642. package/dist/substrate/lifo/node-compat/path.js +49 -0
  643. package/dist/substrate/lifo/node-compat/process.d.ts +127 -0
  644. package/dist/substrate/lifo/node-compat/process.d.ts.map +1 -0
  645. package/dist/substrate/lifo/node-compat/process.js +173 -0
  646. package/dist/substrate/lifo/node-compat/readline.d.ts +85 -0
  647. package/dist/substrate/lifo/node-compat/readline.d.ts.map +1 -0
  648. package/dist/substrate/lifo/node-compat/readline.js +205 -0
  649. package/dist/substrate/lifo/node-compat/rimraf.d.ts +30 -0
  650. package/dist/substrate/lifo/node-compat/rimraf.d.ts.map +1 -0
  651. package/dist/substrate/lifo/node-compat/rimraf.js +63 -0
  652. package/dist/substrate/lifo/node-compat/stream.d.ts +36 -0
  653. package/dist/substrate/lifo/node-compat/stream.d.ts.map +1 -0
  654. package/dist/substrate/lifo/node-compat/stream.js +90 -0
  655. package/dist/substrate/lifo/node-compat/string_decoder.d.ts +11 -0
  656. package/dist/substrate/lifo/node-compat/string_decoder.d.ts.map +1 -0
  657. package/dist/substrate/lifo/node-compat/string_decoder.js +23 -0
  658. package/dist/substrate/lifo/node-compat/timers.d.ts +16 -0
  659. package/dist/substrate/lifo/node-compat/timers.d.ts.map +1 -0
  660. package/dist/substrate/lifo/node-compat/timers.js +18 -0
  661. package/dist/substrate/lifo/node-compat/tty.d.ts +32 -0
  662. package/dist/substrate/lifo/node-compat/tty.d.ts.map +1 -0
  663. package/dist/substrate/lifo/node-compat/tty.js +76 -0
  664. package/dist/substrate/lifo/node-compat/url.d.ts +37 -0
  665. package/dist/substrate/lifo/node-compat/url.d.ts.map +1 -0
  666. package/dist/substrate/lifo/node-compat/url.js +65 -0
  667. package/dist/substrate/lifo/node-compat/util.d.ts +42 -0
  668. package/dist/substrate/lifo/node-compat/util.d.ts.map +1 -0
  669. package/dist/substrate/lifo/node-compat/util.js +132 -0
  670. package/dist/substrate/lifo/node-compat/zlib.d.ts +66 -0
  671. package/dist/substrate/lifo/node-compat/zlib.d.ts.map +1 -0
  672. package/dist/substrate/lifo/node-compat/zlib.js +80 -0
  673. package/dist/substrate/lifo/pkg/PackageManager.d.ts +19 -0
  674. package/dist/substrate/lifo/pkg/PackageManager.d.ts.map +1 -0
  675. package/dist/substrate/lifo/pkg/PackageManager.js +97 -0
  676. package/dist/substrate/lifo/pkg/lifo-dev.d.ts +38 -0
  677. package/dist/substrate/lifo/pkg/lifo-dev.d.ts.map +1 -0
  678. package/dist/substrate/lifo/pkg/lifo-dev.js +98 -0
  679. package/dist/substrate/lifo/pkg/lifo-runtime.d.ts +44 -0
  680. package/dist/substrate/lifo/pkg/lifo-runtime.d.ts.map +1 -0
  681. package/dist/substrate/lifo/pkg/lifo-runtime.js +372 -0
  682. package/dist/substrate/lifo/pkg/loader.d.ts +4 -0
  683. package/dist/substrate/lifo/pkg/loader.d.ts.map +1 -0
  684. package/dist/substrate/lifo/pkg/loader.js +24 -0
  685. package/dist/substrate/lifo/sandbox/HeadlessTerminal.d.ts +18 -0
  686. package/dist/substrate/lifo/sandbox/HeadlessTerminal.d.ts.map +1 -0
  687. package/dist/substrate/lifo/sandbox/HeadlessTerminal.js +28 -0
  688. package/dist/substrate/lifo/sandbox/Sandbox.d.ts +59 -0
  689. package/dist/substrate/lifo/sandbox/Sandbox.d.ts.map +1 -0
  690. package/dist/substrate/lifo/sandbox/Sandbox.js +234 -0
  691. package/dist/substrate/lifo/sandbox/SandboxCommands.d.ts +18 -0
  692. package/dist/substrate/lifo/sandbox/SandboxCommands.d.ts.map +1 -0
  693. package/dist/substrate/lifo/sandbox/SandboxCommands.js +64 -0
  694. package/dist/substrate/lifo/sandbox/SandboxFs.d.ts +43 -0
  695. package/dist/substrate/lifo/sandbox/SandboxFs.d.ts.map +1 -0
  696. package/dist/substrate/lifo/sandbox/SandboxFs.js +136 -0
  697. package/dist/substrate/lifo/sandbox/index.d.ts +3 -0
  698. package/dist/substrate/lifo/sandbox/index.d.ts.map +1 -0
  699. package/dist/substrate/lifo/sandbox/index.js +1 -0
  700. package/dist/substrate/lifo/sandbox/types.d.ts +116 -0
  701. package/dist/substrate/lifo/sandbox/types.d.ts.map +1 -0
  702. package/dist/substrate/lifo/sandbox/types.js +1 -0
  703. package/dist/substrate/lifo/shell/ProcessRegistry.d.ts +142 -0
  704. package/dist/substrate/lifo/shell/ProcessRegistry.d.ts.map +1 -0
  705. package/dist/substrate/lifo/shell/ProcessRegistry.js +256 -0
  706. package/dist/substrate/lifo/shell/Shell.d.ts +170 -0
  707. package/dist/substrate/lifo/shell/Shell.d.ts.map +1 -0
  708. package/dist/substrate/lifo/shell/Shell.js +1863 -0
  709. package/dist/substrate/lifo/shell/completer.d.ts +19 -0
  710. package/dist/substrate/lifo/shell/completer.d.ts.map +1 -0
  711. package/dist/substrate/lifo/shell/completer.js +164 -0
  712. package/dist/substrate/lifo/shell/default-shell.d.ts +9 -0
  713. package/dist/substrate/lifo/shell/default-shell.d.ts.map +1 -0
  714. package/dist/substrate/lifo/shell/default-shell.js +53 -0
  715. package/dist/substrate/lifo/shell/expander.d.ts +48 -0
  716. package/dist/substrate/lifo/shell/expander.d.ts.map +1 -0
  717. package/dist/substrate/lifo/shell/expander.js +1204 -0
  718. package/dist/substrate/lifo/shell/history.d.ts +22 -0
  719. package/dist/substrate/lifo/shell/history.d.ts.map +1 -0
  720. package/dist/substrate/lifo/shell/history.js +121 -0
  721. package/dist/substrate/lifo/shell/interpreter.d.ts +257 -0
  722. package/dist/substrate/lifo/shell/interpreter.d.ts.map +1 -0
  723. package/dist/substrate/lifo/shell/interpreter.js +1490 -0
  724. package/dist/substrate/lifo/shell/jobs.d.ts +21 -0
  725. package/dist/substrate/lifo/shell/jobs.d.ts.map +1 -0
  726. package/dist/substrate/lifo/shell/jobs.js +48 -0
  727. package/dist/substrate/lifo/shell/lexer.d.ts +13 -0
  728. package/dist/substrate/lifo/shell/lexer.d.ts.map +1 -0
  729. package/dist/substrate/lifo/shell/lexer.js +614 -0
  730. package/dist/substrate/lifo/shell/parser.d.ts +7 -0
  731. package/dist/substrate/lifo/shell/parser.d.ts.map +1 -0
  732. package/dist/substrate/lifo/shell/parser.js +573 -0
  733. package/dist/substrate/lifo/shell/pipe.d.ts +15 -0
  734. package/dist/substrate/lifo/shell/pipe.d.ts.map +1 -0
  735. package/dist/substrate/lifo/shell/pipe.js +86 -0
  736. package/dist/substrate/lifo/shell/signals.d.ts +11 -0
  737. package/dist/substrate/lifo/shell/signals.d.ts.map +1 -0
  738. package/dist/substrate/lifo/shell/signals.js +57 -0
  739. package/dist/substrate/lifo/shell/terminal-stdin.d.ts +28 -0
  740. package/dist/substrate/lifo/shell/terminal-stdin.d.ts.map +1 -0
  741. package/dist/substrate/lifo/shell/terminal-stdin.js +100 -0
  742. package/dist/substrate/lifo/shell/test-builtin.d.ts +16 -0
  743. package/dist/substrate/lifo/shell/test-builtin.d.ts.map +1 -0
  744. package/dist/substrate/lifo/shell/test-builtin.js +237 -0
  745. package/dist/substrate/lifo/shell/types.d.ts +140 -0
  746. package/dist/substrate/lifo/shell/types.d.ts.map +1 -0
  747. package/dist/substrate/lifo/shell/types.js +25 -0
  748. package/dist/substrate/lifo/terminal/ITerminal.d.ts +10 -0
  749. package/dist/substrate/lifo/terminal/ITerminal.d.ts.map +1 -0
  750. package/dist/substrate/lifo/terminal/ITerminal.js +1 -0
  751. package/dist/substrate/lifo/utils/archive.d.ts +28 -0
  752. package/dist/substrate/lifo/utils/archive.d.ts.map +1 -0
  753. package/dist/substrate/lifo/utils/archive.js +323 -0
  754. package/dist/substrate/lifo/utils/args.d.ts +18 -0
  755. package/dist/substrate/lifo/utils/args.d.ts.map +1 -0
  756. package/dist/substrate/lifo/utils/args.js +73 -0
  757. package/dist/substrate/lifo/utils/colors.d.ts +27 -0
  758. package/dist/substrate/lifo/utils/colors.d.ts.map +1 -0
  759. package/dist/substrate/lifo/utils/colors.js +26 -0
  760. package/dist/substrate/lifo/utils/encoding.d.ts +4 -0
  761. package/dist/substrate/lifo/utils/encoding.d.ts.map +1 -0
  762. package/dist/substrate/lifo/utils/encoding.js +18 -0
  763. package/dist/substrate/lifo/utils/glob.d.ts +12 -0
  764. package/dist/substrate/lifo/utils/glob.d.ts.map +1 -0
  765. package/dist/substrate/lifo/utils/glob.js +150 -0
  766. package/dist/substrate/lifo/utils/mime.d.ts +4 -0
  767. package/dist/substrate/lifo/utils/mime.d.ts.map +1 -0
  768. package/dist/substrate/lifo/utils/mime.js +107 -0
  769. package/dist/substrate/lifo/utils/path.d.ts +12 -0
  770. package/dist/substrate/lifo/utils/path.d.ts.map +1 -0
  771. package/dist/substrate/lifo/utils/path.js +82 -0
  772. package/dist/vfs/events.d.ts +51 -0
  773. package/dist/vfs/events.d.ts.map +1 -0
  774. package/dist/vfs/events.js +127 -0
  775. package/dist/vfs/path.d.ts +46 -0
  776. package/dist/vfs/path.d.ts.map +1 -0
  777. package/dist/vfs/path.js +69 -0
  778. package/dist/vfs/seed-project.d.ts +62 -0
  779. package/dist/vfs/seed-project.d.ts.map +1 -0
  780. package/dist/vfs/seed-project.js +1054 -0
  781. package/dist/vfs/sqlite-vfs.d.ts +821 -0
  782. package/dist/vfs/sqlite-vfs.d.ts.map +1 -0
  783. package/dist/vfs/sqlite-vfs.js +4135 -0
  784. package/dist/vfs/symlink-registry.d.ts +60 -0
  785. package/dist/vfs/symlink-registry.d.ts.map +1 -0
  786. package/dist/vfs/symlink-registry.js +162 -0
  787. package/dist/workspace/nimbus-workspace.d.ts +94 -0
  788. package/dist/workspace/nimbus-workspace.d.ts.map +1 -0
  789. package/dist/workspace/nimbus-workspace.js +167 -0
  790. package/package.json +69 -0
  791. package/src/_shared/ai-egress.ts +91 -0
  792. package/src/_shared/byte-stream.ts +97 -0
  793. package/src/_shared/bytes.ts +19 -0
  794. package/src/_shared/cache-stats.ts +231 -0
  795. package/src/_shared/crypto.ts +184 -0
  796. package/src/_shared/esbuild-facet-shim.ts +22 -0
  797. package/src/_shared/exports-resolver.ts +308 -0
  798. package/src/_shared/facet-vfs-cursor.ts +58 -0
  799. package/src/_shared/install-phase.ts +56 -0
  800. package/src/_shared/lru-map.ts +59 -0
  801. package/src/_shared/real-node-imports.ts +53 -0
  802. package/src/_shared/retry.ts +202 -0
  803. package/src/_shared/rpc-dispose.ts +31 -0
  804. package/src/_shared/terminal.ts +3 -0
  805. package/src/_shared/typescript-specifiers.ts +86 -0
  806. package/src/_shared/untrusted-request.ts +75 -0
  807. package/src/_shared/vfs-write-ledger.ts +440 -0
  808. package/src/_shared/w7-frame.ts +1012 -0
  809. package/src/_shared/weighted-credit-pool.ts +244 -0
  810. package/src/constants.ts +285 -0
  811. package/src/index.ts +22 -0
  812. package/src/observability/diag-counters.ts +343 -0
  813. package/src/observability/heap-estimate.ts +331 -0
  814. package/src/observability/heavy-alloc-coord.ts +241 -0
  815. package/src/observability/oom-classify.ts +253 -0
  816. package/src/observability/oom-discriminator.ts +405 -0
  817. package/src/runtime/assets-loader.ts +189 -0
  818. package/src/runtime/barrel-detect.ts +69 -0
  819. package/src/runtime/bash/preamble.ts +1519 -0
  820. package/src/runtime/bash/types.ts +497 -0
  821. package/src/runtime/bundle-profile.ts +32 -0
  822. package/src/runtime/cirrus-vite-config-rewriter.ts +28 -0
  823. package/src/runtime/cli-flags.ts +11 -0
  824. package/src/runtime/comment-strip.ts +73 -0
  825. package/src/runtime/cpython-preamble.ts +298 -0
  826. package/src/runtime/esbuild-service.ts +1470 -0
  827. package/src/runtime/framework-detect.ts +245 -0
  828. package/src/runtime/import-meta-transform.ts +16 -0
  829. package/src/runtime/javascript-ast.ts +66 -0
  830. package/src/runtime/long-running-handle.ts +185 -0
  831. package/src/runtime/module-source-rewriter.ts +95 -0
  832. package/src/runtime/opentui-wasm-backend.ts +608 -0
  833. package/src/runtime/os-contracts.ts +529 -0
  834. package/src/runtime/port-registry.ts +298 -0
  835. package/src/runtime/process-input-routing.ts +92 -0
  836. package/src/runtime/process-input.ts +148 -0
  837. package/src/runtime/process-io-protocol.ts +97 -0
  838. package/src/runtime/process-logs.ts +882 -0
  839. package/src/runtime/process-table.ts +225 -0
  840. package/src/runtime/project-detect.ts +42 -0
  841. package/src/runtime/python-server-adapter.ts +133 -0
  842. package/src/runtime/require-resolver.ts +760 -0
  843. package/src/runtime/router-basename.ts +279 -0
  844. package/src/runtime/ruby-green-threads.ts +904 -0
  845. package/src/runtime/ruby-socket-shim.ts +548 -0
  846. package/src/runtime/session-process-supervisor.ts +323 -0
  847. package/src/runtime/sqlite-runtime-fs-bridge.ts +468 -0
  848. package/src/runtime/streams.ts +547 -0
  849. package/src/runtime/undici-shim.ts +517 -0
  850. package/src/runtime/vfs-manifest.ts +170 -0
  851. package/src/runtime/vfs-snapshot.ts +273 -0
  852. package/src/runtime/virtual-socket-kernel.ts +1370 -0
  853. package/src/runtime/vite-config-parser.ts +273 -0
  854. package/src/runtime/wasi/types.ts +448 -0
  855. package/src/runtime/wasi-instance.generated.ts +14 -0
  856. package/src/runtime/wasi-instance.ts +259 -0
  857. package/src/runtime/wasi-threads.ts +682 -0
  858. package/src/runtime/wasm-memory.ts +261 -0
  859. package/src/shell/elevation-commands.ts +117 -0
  860. package/src/shell/exec-dispatch.ts +201 -0
  861. package/src/shell/features.ts +870 -0
  862. package/src/shell/shell-entrypoints.ts +323 -0
  863. package/src/shell/shell-invocation.ts +181 -0
  864. package/src/shell/unix-accounts.ts +128 -0
  865. package/src/shell/unix-commands.ts +4335 -0
  866. package/src/substrate/lifo/UPSTREAM.md +14 -0
  867. package/src/substrate/lifo/commands/archive/gunzip.ts +63 -0
  868. package/src/substrate/lifo/commands/archive/gzip.ts +76 -0
  869. package/src/substrate/lifo/commands/archive/tar.ts +157 -0
  870. package/src/substrate/lifo/commands/archive/unzip.ts +112 -0
  871. package/src/substrate/lifo/commands/archive/zip.ts +70 -0
  872. package/src/substrate/lifo/commands/fs/basename.ts +16 -0
  873. package/src/substrate/lifo/commands/fs/cat.ts +54 -0
  874. package/src/substrate/lifo/commands/fs/chmod.ts +110 -0
  875. package/src/substrate/lifo/commands/fs/chown.ts +45 -0
  876. package/src/substrate/lifo/commands/fs/cp.ts +33 -0
  877. package/src/substrate/lifo/commands/fs/df.ts +56 -0
  878. package/src/substrate/lifo/commands/fs/dirname.ts +16 -0
  879. package/src/substrate/lifo/commands/fs/du.ts +100 -0
  880. package/src/substrate/lifo/commands/fs/file.ts +90 -0
  881. package/src/substrate/lifo/commands/fs/find.ts +76 -0
  882. package/src/substrate/lifo/commands/fs/ln.ts +19 -0
  883. package/src/substrate/lifo/commands/fs/ls.ts +164 -0
  884. package/src/substrate/lifo/commands/fs/mkdir.ts +37 -0
  885. package/src/substrate/lifo/commands/fs/mktemp.ts +56 -0
  886. package/src/substrate/lifo/commands/fs/mv.ts +111 -0
  887. package/src/substrate/lifo/commands/fs/realpath.ts +31 -0
  888. package/src/substrate/lifo/commands/fs/rm.ts +53 -0
  889. package/src/substrate/lifo/commands/fs/rmdir.ts +50 -0
  890. package/src/substrate/lifo/commands/fs/stat.ts +39 -0
  891. package/src/substrate/lifo/commands/fs/touch.ts +30 -0
  892. package/src/substrate/lifo/commands/fs/tree.ts +76 -0
  893. package/src/substrate/lifo/commands/index.ts +2 -0
  894. package/src/substrate/lifo/commands/io/dd.ts +289 -0
  895. package/src/substrate/lifo/commands/io/printf.ts +78 -0
  896. package/src/substrate/lifo/commands/io/tee.ts +37 -0
  897. package/src/substrate/lifo/commands/io/xargs.ts +49 -0
  898. package/src/substrate/lifo/commands/io/yes.ts +15 -0
  899. package/src/substrate/lifo/commands/net/curl.ts +739 -0
  900. package/src/substrate/lifo/commands/net/dig.ts +99 -0
  901. package/src/substrate/lifo/commands/net/forward.ts +90 -0
  902. package/src/substrate/lifo/commands/net/host.ts +182 -0
  903. package/src/substrate/lifo/commands/net/ifconfig.ts +139 -0
  904. package/src/substrate/lifo/commands/net/ip.ts +633 -0
  905. package/src/substrate/lifo/commands/net/netstat.ts +106 -0
  906. package/src/substrate/lifo/commands/net/ping.ts +74 -0
  907. package/src/substrate/lifo/commands/net/ports.ts +45 -0
  908. package/src/substrate/lifo/commands/net/route.ts +153 -0
  909. package/src/substrate/lifo/commands/net/tunnel-v2.ts +183 -0
  910. package/src/substrate/lifo/commands/net/tunnel.ts +272 -0
  911. package/src/substrate/lifo/commands/net/wget.ts +88 -0
  912. package/src/substrate/lifo/commands/registry.ts +141 -0
  913. package/src/substrate/lifo/commands/signal.ts +65 -0
  914. package/src/substrate/lifo/commands/system/bc.ts +265 -0
  915. package/src/substrate/lifo/commands/system/cal.ts +90 -0
  916. package/src/substrate/lifo/commands/system/date.ts +59 -0
  917. package/src/substrate/lifo/commands/system/env.ts +10 -0
  918. package/src/substrate/lifo/commands/system/fastfetch.ts +428 -0
  919. package/src/substrate/lifo/commands/system/free.ts +38 -0
  920. package/src/substrate/lifo/commands/system/help.ts +53 -0
  921. package/src/substrate/lifo/commands/system/hostname.ts +9 -0
  922. package/src/substrate/lifo/commands/system/kill.ts +89 -0
  923. package/src/substrate/lifo/commands/system/lifo.ts +525 -0
  924. package/src/substrate/lifo/commands/system/logout.ts +17 -0
  925. package/src/substrate/lifo/commands/system/man.ts +167 -0
  926. package/src/substrate/lifo/commands/system/node.ts +1305 -0
  927. package/src/substrate/lifo/commands/system/npm.ts +1078 -0
  928. package/src/substrate/lifo/commands/system/pkg.ts +111 -0
  929. package/src/substrate/lifo/commands/system/ps.ts +46 -0
  930. package/src/substrate/lifo/commands/system/registry-schemas.ts +33 -0
  931. package/src/substrate/lifo/commands/system/sha256sum.ts +89 -0
  932. package/src/substrate/lifo/commands/system/sl.ts +249 -0
  933. package/src/substrate/lifo/commands/system/sleep.ts +36 -0
  934. package/src/substrate/lifo/commands/system/stty.ts +69 -0
  935. package/src/substrate/lifo/commands/system/systemctl.ts +184 -0
  936. package/src/substrate/lifo/commands/system/top.ts +53 -0
  937. package/src/substrate/lifo/commands/system/uname.ts +59 -0
  938. package/src/substrate/lifo/commands/system/uptime.ts +19 -0
  939. package/src/substrate/lifo/commands/system/watch.ts +67 -0
  940. package/src/substrate/lifo/commands/system/which.ts +51 -0
  941. package/src/substrate/lifo/commands/system/whoami.ts +9 -0
  942. package/src/substrate/lifo/commands/text/awk.ts +210 -0
  943. package/src/substrate/lifo/commands/text/base64.ts +102 -0
  944. package/src/substrate/lifo/commands/text/cut.ts +92 -0
  945. package/src/substrate/lifo/commands/text/diff.ts +314 -0
  946. package/src/substrate/lifo/commands/text/grep.ts +170 -0
  947. package/src/substrate/lifo/commands/text/head.ts +95 -0
  948. package/src/substrate/lifo/commands/text/less.ts +335 -0
  949. package/src/substrate/lifo/commands/text/nano.ts +513 -0
  950. package/src/substrate/lifo/commands/text/nl.ts +74 -0
  951. package/src/substrate/lifo/commands/text/rev.ts +46 -0
  952. package/src/substrate/lifo/commands/text/sed.ts +297 -0
  953. package/src/substrate/lifo/commands/text/seq.ts +76 -0
  954. package/src/substrate/lifo/commands/text/sort.ts +88 -0
  955. package/src/substrate/lifo/commands/text/strings.ts +73 -0
  956. package/src/substrate/lifo/commands/text/tac.ts +37 -0
  957. package/src/substrate/lifo/commands/text/tail.ts +63 -0
  958. package/src/substrate/lifo/commands/text/tr.ts +192 -0
  959. package/src/substrate/lifo/commands/text/uniq.ts +77 -0
  960. package/src/substrate/lifo/commands/text/wc.ts +104 -0
  961. package/src/substrate/lifo/commands/types.ts +58 -0
  962. package/src/substrate/lifo/index.ts +173 -0
  963. package/src/substrate/lifo/kernel/ServiceManager.ts +371 -0
  964. package/src/substrate/lifo/kernel/index.ts +209 -0
  965. package/src/substrate/lifo/kernel/network/Bridge.ts +336 -0
  966. package/src/substrate/lifo/kernel/network/DNSResolver.ts +158 -0
  967. package/src/substrate/lifo/kernel/network/NetworkInterface.ts +235 -0
  968. package/src/substrate/lifo/kernel/network/NetworkNamespace.ts +182 -0
  969. package/src/substrate/lifo/kernel/network/NetworkStack.ts +590 -0
  970. package/src/substrate/lifo/kernel/network/PortBridge.ts +182 -0
  971. package/src/substrate/lifo/kernel/network/RoutingTable.ts +209 -0
  972. package/src/substrate/lifo/kernel/network/Socket.ts +245 -0
  973. package/src/substrate/lifo/kernel/network/index.ts +29 -0
  974. package/src/substrate/lifo/kernel/network/tunnel/BaseTunnel.ts +124 -0
  975. package/src/substrate/lifo/kernel/network/tunnel/VETHPair.ts +227 -0
  976. package/src/substrate/lifo/kernel/network/tunnel/WebSocketTunnel.ts +387 -0
  977. package/src/substrate/lifo/kernel/network/types.ts +178 -0
  978. package/src/substrate/lifo/kernel/persistence/PersistenceManager.ts +50 -0
  979. package/src/substrate/lifo/kernel/persistence/backends.ts +36 -0
  980. package/src/substrate/lifo/kernel/persistence/index.ts +5 -0
  981. package/src/substrate/lifo/kernel/persistence/serializer.ts +127 -0
  982. package/src/substrate/lifo/kernel/samples.ts +966 -0
  983. package/src/substrate/lifo/kernel/storage/BlobStore.ts +114 -0
  984. package/src/substrate/lifo/kernel/storage/ContentStore.ts +150 -0
  985. package/src/substrate/lifo/kernel/storage/index.ts +5 -0
  986. package/src/substrate/lifo/kernel/unit-parser.ts +95 -0
  987. package/src/substrate/lifo/kernel/vfs/VFS.ts +768 -0
  988. package/src/substrate/lifo/kernel/vfs/index.ts +9 -0
  989. package/src/substrate/lifo/kernel/vfs/providers/DevProvider.ts +172 -0
  990. package/src/substrate/lifo/kernel/vfs/providers/NativeFsProvider.ts +198 -0
  991. package/src/substrate/lifo/kernel/vfs/providers/ProcProvider.ts +144 -0
  992. package/src/substrate/lifo/kernel/vfs/types.ts +145 -0
  993. package/src/substrate/lifo/node-compat/buffer.ts +357 -0
  994. package/src/substrate/lifo/node-compat/child_process.ts +52 -0
  995. package/src/substrate/lifo/node-compat/console.ts +70 -0
  996. package/src/substrate/lifo/node-compat/crypto.ts +186 -0
  997. package/src/substrate/lifo/node-compat/dns.ts +214 -0
  998. package/src/substrate/lifo/node-compat/esbuild.ts +85 -0
  999. package/src/substrate/lifo/node-compat/events.ts +94 -0
  1000. package/src/substrate/lifo/node-compat/fs.ts +762 -0
  1001. package/src/substrate/lifo/node-compat/http.ts +561 -0
  1002. package/src/substrate/lifo/node-compat/index.ts +300 -0
  1003. package/src/substrate/lifo/node-compat/module.ts +148 -0
  1004. package/src/substrate/lifo/node-compat/os.ts +44 -0
  1005. package/src/substrate/lifo/node-compat/path.ts +74 -0
  1006. package/src/substrate/lifo/node-compat/process.ts +178 -0
  1007. package/src/substrate/lifo/node-compat/readline.ts +244 -0
  1008. package/src/substrate/lifo/node-compat/rimraf.ts +80 -0
  1009. package/src/substrate/lifo/node-compat/stream.ts +98 -0
  1010. package/src/substrate/lifo/node-compat/string_decoder.ts +26 -0
  1011. package/src/substrate/lifo/node-compat/timers.ts +21 -0
  1012. package/src/substrate/lifo/node-compat/tty.ts +83 -0
  1013. package/src/substrate/lifo/node-compat/url.ts +76 -0
  1014. package/src/substrate/lifo/node-compat/util.ts +133 -0
  1015. package/src/substrate/lifo/node-compat/zlib.ts +94 -0
  1016. package/src/substrate/lifo/pkg/PackageManager.ts +105 -0
  1017. package/src/substrate/lifo/pkg/lifo-dev.ts +130 -0
  1018. package/src/substrate/lifo/pkg/lifo-runtime.ts +473 -0
  1019. package/src/substrate/lifo/pkg/loader.ts +33 -0
  1020. package/src/substrate/lifo/platform-globals.d.ts +41 -0
  1021. package/src/substrate/lifo/sandbox/HeadlessTerminal.ts +38 -0
  1022. package/src/substrate/lifo/sandbox/Sandbox.ts +279 -0
  1023. package/src/substrate/lifo/sandbox/SandboxCommands.ts +74 -0
  1024. package/src/substrate/lifo/sandbox/SandboxFs.ts +160 -0
  1025. package/src/substrate/lifo/sandbox/index.ts +8 -0
  1026. package/src/substrate/lifo/sandbox/types.ts +117 -0
  1027. package/src/substrate/lifo/shell/ProcessRegistry.ts +379 -0
  1028. package/src/substrate/lifo/shell/Shell.ts +2048 -0
  1029. package/src/substrate/lifo/shell/completer.ts +212 -0
  1030. package/src/substrate/lifo/shell/default-shell.ts +63 -0
  1031. package/src/substrate/lifo/shell/expander.ts +1349 -0
  1032. package/src/substrate/lifo/shell/history.ts +138 -0
  1033. package/src/substrate/lifo/shell/interpreter.ts +1754 -0
  1034. package/src/substrate/lifo/shell/jobs.ts +64 -0
  1035. package/src/substrate/lifo/shell/lexer.ts +698 -0
  1036. package/src/substrate/lifo/shell/parser.ts +711 -0
  1037. package/src/substrate/lifo/shell/pipe.ts +92 -0
  1038. package/src/substrate/lifo/shell/signals.ts +70 -0
  1039. package/src/substrate/lifo/shell/terminal-stdin.ts +109 -0
  1040. package/src/substrate/lifo/shell/test-builtin.ts +316 -0
  1041. package/src/substrate/lifo/shell/types.ts +166 -0
  1042. package/src/substrate/lifo/terminal/ITerminal.ts +9 -0
  1043. package/src/substrate/lifo/utils/archive.ts +389 -0
  1044. package/src/substrate/lifo/utils/args.ts +89 -0
  1045. package/src/substrate/lifo/utils/colors.ts +29 -0
  1046. package/src/substrate/lifo/utils/encoding.ts +21 -0
  1047. package/src/substrate/lifo/utils/glob.ts +172 -0
  1048. package/src/substrate/lifo/utils/mime.ts +114 -0
  1049. package/src/substrate/lifo/utils/path.ts +83 -0
  1050. package/src/types/assets.d.ts +4 -0
  1051. package/src/vfs/events.ts +134 -0
  1052. package/src/vfs/path.ts +71 -0
  1053. package/src/vfs/seed-project.ts +1094 -0
  1054. package/src/vfs/sqlite-vfs.ts +5035 -0
  1055. package/src/vfs/symlink-registry.ts +172 -0
  1056. package/src/workspace/nimbus-workspace.ts +213 -0
@@ -0,0 +1,1094 @@
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
+
21
+ import type {
22
+ SqliteVFS,
23
+ BatchInodeEntry,
24
+ BatchChunkEntry,
25
+ } from './sqlite-vfs.js';
26
+ import { CHUNK_SIZE } from '../constants.js';
27
+ import { enc } from '../_shared/bytes.js';
28
+ import { CRED_KERNEL } from '../runtime/os-contracts.js';
29
+
30
+ /** Sentinel: if present, seed never runs again (until user deletes it). */
31
+ export const SEED_SENTINEL_PATH = 'home/user/.nimbus-seeded';
32
+
33
+ /** Project root. Absolute VFS path (no leading slash). */
34
+ export const SEED_PROJECT_DIR = 'home/user/app';
35
+
36
+ export interface SeedFile {
37
+ /** VFS path, no leading slash. */
38
+ path: string;
39
+ content: string;
40
+ }
41
+
42
+ // ── File bodies ─────────────────────────────────────────────────────────
43
+
44
+ const PACKAGE_JSON = `{
45
+ "name": "nimbus-starter",
46
+ "private": true,
47
+ "version": "0.1.0",
48
+ "type": "module",
49
+ "scripts": {
50
+ "dev": "vite",
51
+ "build": "vite build",
52
+ "preview": "vite preview"
53
+ },
54
+ "dependencies": {
55
+ "react": "^18.3.1",
56
+ "react-dom": "^18.3.1",
57
+ "react-router-dom": "^6.26.0",
58
+ "framer-motion": "^11.11.0",
59
+ "lucide-react": "^0.460.0"
60
+ },
61
+ "devDependencies": {
62
+ "@types/react": "^18.3.0",
63
+ "@types/react-dom": "^18.3.0",
64
+ "tailwindcss": "^3.4.17",
65
+ "typescript": "^5.5.0",
66
+ "vite": "^5.4.0"
67
+ }
68
+ }
69
+ `;
70
+
71
+ const INDEX_HTML = `<!DOCTYPE html>
72
+ <html lang="en">
73
+ <head>
74
+ <meta charset="UTF-8" />
75
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
76
+ <title>Nimbus Starter</title>
77
+ <link rel="stylesheet" href="/src/index.css" />
78
+ </head>
79
+ <body class="bg-slate-950 text-slate-100 antialiased">
80
+ <div id="root"></div>
81
+ <script type="module" src="/src/main.tsx"></script>
82
+ </body>
83
+ </html>
84
+ `;
85
+
86
+ const VITE_CONFIG = `import { defineConfig } from 'vite';
87
+
88
+ export default defineConfig({
89
+ server: {
90
+ host: '0.0.0.0',
91
+ port: 5173,
92
+ },
93
+ });
94
+ `;
95
+
96
+ const TAILWIND_CONFIG = `/** @type {import('tailwindcss').Config} */
97
+ export default {
98
+ content: ['./index.html', './src/**/*.{ts,tsx,js,jsx}'],
99
+ theme: {
100
+ extend: {
101
+ fontFamily: {
102
+ sans: ['ui-sans-serif', 'system-ui', '-apple-system', 'sans-serif'],
103
+ mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'monospace'],
104
+ },
105
+ },
106
+ },
107
+ plugins: [],
108
+ };
109
+ `;
110
+
111
+ const TSCONFIG_JSON = `{
112
+ "compilerOptions": {
113
+ "target": "ES2022",
114
+ "useDefineForClassFields": true,
115
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
116
+ "module": "ESNext",
117
+ "skipLibCheck": true,
118
+ "moduleResolution": "bundler",
119
+ "allowImportingTsExtensions": true,
120
+ "resolveJsonModule": true,
121
+ "isolatedModules": true,
122
+ "noEmit": true,
123
+ "jsx": "react-jsx",
124
+ "strict": true,
125
+ "noUnusedLocals": false,
126
+ "noUnusedParameters": false,
127
+ "noFallthroughCasesInSwitch": true
128
+ },
129
+ "include": ["src"]
130
+ }
131
+ `;
132
+
133
+ const INDEX_CSS = `@tailwind base;
134
+ @tailwind components;
135
+ @tailwind utilities;
136
+
137
+ html,
138
+ body,
139
+ #root {
140
+ height: 100%;
141
+ }
142
+
143
+ body {
144
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
145
+ 'Segoe UI', sans-serif;
146
+ font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11';
147
+ }
148
+
149
+ /* Layered background:
150
+ * 1. Warm orange spotlight from the top
151
+ * 2. Cool violet rim light from the right (depth, not color)
152
+ * 3. Faint grid pattern (Linear / Vercel-style)
153
+ * 4. Deep slate base
154
+ */
155
+ body {
156
+ background-color: #020617;
157
+ background-image:
158
+ radial-gradient(1100px 520px at 18% -8%, rgba(243, 128, 32, 0.18), transparent 60%),
159
+ radial-gradient(900px 600px at 95% 10%, rgba(99, 102, 241, 0.08), transparent 60%),
160
+ linear-gradient(rgba(148, 163, 184, 0.04) 1px, transparent 1px),
161
+ linear-gradient(90deg, rgba(148, 163, 184, 0.04) 1px, transparent 1px);
162
+ background-size: auto, auto, 40px 40px, 40px 40px;
163
+ background-position: 0 0, 0 0, -1px -1px, -1px -1px;
164
+ background-attachment: fixed;
165
+ }
166
+
167
+ /* Selection */
168
+ ::selection { background: rgba(243, 128, 32, 0.35); color: #fff7ed; }
169
+
170
+ /* Custom scrollbar */
171
+ ::-webkit-scrollbar { width: 10px; height: 10px; }
172
+ ::-webkit-scrollbar-track { background: transparent; }
173
+ ::-webkit-scrollbar-thumb { background: #1e293b; border-radius: 8px; }
174
+ ::-webkit-scrollbar-thumb:hover { background: #334155; }
175
+
176
+ /* Hero gradient text — sized so the bg-clip mask doesn't crop descenders */
177
+ .hero-gradient {
178
+ background: linear-gradient(135deg, #fdba74 0%, #f97316 35%, #f38020 60%, #fb7185 100%);
179
+ -webkit-background-clip: text;
180
+ background-clip: text;
181
+ color: transparent;
182
+ background-size: 200% 200%;
183
+ animation: hero-shift 12s ease-in-out infinite;
184
+ }
185
+ @keyframes hero-shift {
186
+ 0%, 100% { background-position: 0% 50%; }
187
+ 50% { background-position: 100% 50%; }
188
+ }
189
+
190
+ /* Soft glow ring on hover for feature cards */
191
+ .card-glow {
192
+ position: relative;
193
+ isolation: isolate;
194
+ }
195
+ .card-glow::before {
196
+ content: '';
197
+ position: absolute;
198
+ inset: -1px;
199
+ border-radius: inherit;
200
+ padding: 1px;
201
+ background: linear-gradient(135deg, rgba(243, 128, 32, 0.0), rgba(243, 128, 32, 0.0));
202
+ -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
203
+ -webkit-mask-composite: xor;
204
+ mask-composite: exclude;
205
+ pointer-events: none;
206
+ transition: background 280ms ease;
207
+ z-index: -1;
208
+ }
209
+ .card-glow:hover::before {
210
+ background: linear-gradient(135deg, rgba(243, 128, 32, 0.55), rgba(251, 113, 133, 0.25));
211
+ }
212
+
213
+ /* Terminal block */
214
+ .terminal {
215
+ background: linear-gradient(180deg, rgba(15, 23, 42, 0.85), rgba(2, 6, 23, 0.85));
216
+ border: 1px solid rgba(148, 163, 184, 0.12);
217
+ box-shadow:
218
+ inset 0 1px 0 rgba(255, 255, 255, 0.04),
219
+ 0 20px 60px -20px rgba(243, 128, 32, 0.18);
220
+ }
221
+ `;
222
+
223
+ const MAIN_TSX = `import { StrictMode } from 'react';
224
+ import { createRoot } from 'react-dom/client';
225
+ import { RouterProvider, createBrowserRouter } from 'react-router-dom';
226
+ import App from './App';
227
+ import Home from './pages/Home';
228
+ import Docs from './pages/Docs';
229
+ import Playground from './pages/Playground';
230
+ import './index.css';
231
+
232
+ // Note: Nimbus automatically injects a \`basename\` matching this session's
233
+ // preview URL (e.g. "/s/<id>/preview") so links like <NavLink to="/docs">
234
+ // resolve correctly. To opt out, add the comment "// nimbus-no-basename"
235
+ // anywhere in this file, or set an explicit basename yourself — Nimbus
236
+ // will not override user-supplied values.
237
+ const router = createBrowserRouter([
238
+ {
239
+ path: '/',
240
+ element: <App />,
241
+ children: [
242
+ { index: true, element: <Home /> },
243
+ { path: 'docs', element: <Docs /> },
244
+ { path: 'playground', element: <Playground /> },
245
+ ],
246
+ },
247
+ ]);
248
+
249
+ createRoot(document.getElementById('root')!).render(
250
+ <StrictMode>
251
+ <RouterProvider router={router} />
252
+ </StrictMode>,
253
+ );
254
+ `;
255
+
256
+ const APP_TSX = `import { NavLink, Outlet, useLocation } from 'react-router-dom';
257
+ import { motion, AnimatePresence } from 'framer-motion';
258
+ import { Home, FileText, Zap } from 'lucide-react';
259
+
260
+ const nav = [
261
+ { to: '/', label: 'Home', icon: Home, end: true },
262
+ { to: '/docs', label: 'Docs', icon: FileText, end: false },
263
+ { to: '/playground', label: 'Playground', icon: Zap, end: false },
264
+ ];
265
+
266
+ function Logo() {
267
+ return (
268
+ <div className="flex items-center gap-2.5 mb-10">
269
+ <div className="relative w-8 h-8 rounded-lg bg-gradient-to-br from-orange-400 via-orange-500 to-rose-500 shadow-lg shadow-orange-500/20 flex items-center justify-center">
270
+ <div className="absolute inset-0 rounded-lg bg-gradient-to-br from-white/20 to-transparent" />
271
+ <svg viewBox="0 0 24 24" className="relative w-4 h-4 text-white" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
272
+ <path d="M17.5 19a4.5 4.5 0 1 0-1.4-8.78A6 6 0 0 0 4 13a4 4 0 0 0 .5 7.95"/>
273
+ </svg>
274
+ </div>
275
+ <div className="flex flex-col leading-none">
276
+ <div className="font-semibold tracking-tight text-slate-100">Nimbus</div>
277
+ <div className="text-[10px] text-slate-500 mt-0.5 tracking-wider uppercase">Edge OS</div>
278
+ </div>
279
+ </div>
280
+ );
281
+ }
282
+
283
+ export default function App() {
284
+ const loc = useLocation();
285
+ return (
286
+ <div className="min-h-full flex">
287
+ <aside className="w-60 shrink-0 border-r border-slate-800/60 p-6 flex flex-col gap-1 bg-slate-950/30 backdrop-blur-xl">
288
+ <Logo />
289
+ <div className="text-[10px] font-semibold uppercase tracking-wider text-slate-500 px-3 mb-2">
290
+ Navigation
291
+ </div>
292
+ {nav.map((n) => (
293
+ <NavLink
294
+ key={n.to}
295
+ to={n.to}
296
+ end={n.end}
297
+ className={({ isActive }) =>
298
+ \`group relative flex items-center gap-3 px-3 py-2 rounded-lg text-sm transition-all duration-200 \${
299
+ isActive
300
+ ? 'bg-orange-500/10 text-orange-200 ring-1 ring-orange-500/25 shadow-[inset_0_1px_0_rgba(255,255,255,0.04)]'
301
+ : 'text-slate-400 hover:bg-slate-800/50 hover:text-slate-100'
302
+ }\`
303
+ }
304
+ >
305
+ {({ isActive }) => (
306
+ <>
307
+ {isActive && (
308
+ <motion.span
309
+ layoutId="nav-indicator"
310
+ className="absolute left-0 top-1/2 -translate-y-1/2 w-1 h-5 rounded-r-full bg-orange-400"
311
+ transition={{ type: 'spring', stiffness: 380, damping: 30 }}
312
+ />
313
+ )}
314
+ <n.icon className={\`w-4 h-4 transition \${isActive ? 'text-orange-300' : 'text-slate-500 group-hover:text-slate-300'}\`} />
315
+ <span className="font-medium">{n.label}</span>
316
+ </>
317
+ )}
318
+ </NavLink>
319
+ ))}
320
+ <div className="mt-auto pt-6 border-t border-slate-800/60">
321
+ <div className="flex items-center gap-2 mb-2">
322
+ <span className="relative flex h-2 w-2">
323
+ <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-60"></span>
324
+ <span className="relative inline-flex rounded-full h-2 w-2 bg-emerald-500"></span>
325
+ </span>
326
+ <span className="text-[11px] font-medium text-slate-300">Live in a Durable Object</span>
327
+ </div>
328
+ <div className="text-[11px] text-slate-500 leading-relaxed">
329
+ Edit <code className="text-slate-300 font-mono text-[10px] px-1 py-0.5 bg-slate-800/60 rounded">src/pages/Home.tsx</code> and save \u2014 HMR reloads instantly.
330
+ </div>
331
+ </div>
332
+ </aside>
333
+ <main className="flex-1 overflow-auto">
334
+ <AnimatePresence mode="wait">
335
+ <motion.div
336
+ key={loc.pathname}
337
+ initial={{ opacity: 0, y: 12 }}
338
+ animate={{ opacity: 1, y: 0 }}
339
+ exit={{ opacity: 0, y: -8 }}
340
+ transition={{ duration: 0.25, ease: [0.22, 1, 0.36, 1] }}
341
+ className="p-10 lg:p-14 max-w-6xl mx-auto"
342
+ >
343
+ <Outlet />
344
+ </motion.div>
345
+ </AnimatePresence>
346
+ </main>
347
+ </div>
348
+ );
349
+ }
350
+ `;
351
+
352
+ const HOME_TSX = `import { motion } from 'framer-motion';
353
+ import { Zap, HardDrive, Languages, ArrowRight, BookOpen } from 'lucide-react';
354
+ import { Link } from 'react-router-dom';
355
+ import SystemStats from '../components/SystemStats';
356
+ import Card from '../components/Card';
357
+
358
+ const features = [
359
+ {
360
+ icon: Languages,
361
+ title: 'Multi-language',
362
+ desc: 'Node + npm + git out of the box. nimbus install clang | python | ruby adds LLVM, Pyodide CPython 3.13, and ruby.wasm 3.3 \u2014 each with REPLs and persistent state.',
363
+ accent: 'from-orange-400/20 to-orange-600/5',
364
+ iconBg: 'from-orange-500/20 to-orange-600/10',
365
+ iconColor: 'text-orange-300',
366
+ },
367
+ {
368
+ icon: Zap,
369
+ title: 'Sub-second HMR',
370
+ desc: 'esbuild + Vite serve straight from the VFS. Edit a file, save, and your preview reflects it before your eye reaches the tab.',
371
+ accent: 'from-amber-400/20 to-amber-600/5',
372
+ iconBg: 'from-amber-500/20 to-amber-600/10',
373
+ iconColor: 'text-amber-300',
374
+ },
375
+ {
376
+ icon: HardDrive,
377
+ title: '10 GB Persistent VFS',
378
+ desc: 'A SQLite-backed filesystem that survives restarts. Clone real repos, install real packages, never lose a thing.',
379
+ accent: 'from-rose-400/20 to-rose-600/5',
380
+ iconBg: 'from-rose-500/20 to-rose-600/10',
381
+ iconColor: 'text-rose-300',
382
+ },
383
+ ];
384
+
385
+ const fadeUp = {
386
+ initial: { opacity: 0, y: 16 },
387
+ animate: { opacity: 1, y: 0 },
388
+ };
389
+
390
+ export default function Home() {
391
+ return (
392
+ <div className="space-y-20">
393
+ {/* HERO */}
394
+ <header className="relative pt-4">
395
+ <motion.div
396
+ {...fadeUp}
397
+ transition={{ duration: 0.4, ease: [0.22, 1, 0.36, 1] }}
398
+ >
399
+ <div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-orange-500/10 ring-1 ring-orange-500/30 text-orange-200 text-xs font-medium backdrop-blur">
400
+ <span className="relative flex h-1.5 w-1.5">
401
+ <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-orange-400 opacity-75"></span>
402
+ <span className="relative inline-flex rounded-full h-1.5 w-1.5 bg-orange-400"></span>
403
+ </span>
404
+ <span className="tracking-wide">Running on Cloudflare\u2019s edge \u00b7 v0.1</span>
405
+ </div>
406
+ </motion.div>
407
+
408
+ <motion.h1
409
+ {...fadeUp}
410
+ transition={{ duration: 0.5, ease: [0.22, 1, 0.36, 1], delay: 0.06 }}
411
+ className="mt-6 text-6xl md:text-7xl font-bold tracking-tight leading-[1.05] hero-gradient max-w-4xl pb-2"
412
+ >
413
+ A dev environment<br />that lives at the edge.
414
+ </motion.h1>
415
+
416
+ <motion.p
417
+ {...fadeUp}
418
+ transition={{ duration: 0.5, delay: 0.14 }}
419
+ className="mt-6 text-xl text-slate-400 max-w-2xl leading-relaxed"
420
+ >
421
+ Nimbus is a full Linux-like workspace \u2014 node, npm, git, vite \u2014
422
+ running entirely inside a single Cloudflare Durable Object. No VMs.
423
+ No cold starts. Just code.
424
+ </motion.p>
425
+
426
+ <motion.div
427
+ {...fadeUp}
428
+ transition={{ duration: 0.5, delay: 0.22 }}
429
+ className="mt-8 flex flex-wrap items-center gap-3"
430
+ >
431
+ <Link
432
+ to="/playground"
433
+ className="group inline-flex items-center gap-2 px-5 py-2.5 rounded-lg bg-orange-500 hover:bg-orange-400 text-white font-medium text-sm shadow-lg shadow-orange-500/25 hover:shadow-orange-500/40 transition-all hover:-translate-y-0.5"
434
+ >
435
+ Try the Playground
436
+ <ArrowRight className="w-4 h-4 transition-transform group-hover:translate-x-0.5" />
437
+ </Link>
438
+ <Link
439
+ to="/docs"
440
+ className="inline-flex items-center gap-2 px-5 py-2.5 rounded-lg bg-slate-900/60 hover:bg-slate-800/80 text-slate-200 font-medium text-sm ring-1 ring-slate-700/60 hover:ring-slate-600 transition"
441
+ >
442
+ <BookOpen className="w-4 h-4" />
443
+ Read the docs
444
+ </Link>
445
+ </motion.div>
446
+
447
+ {/* Terminal block */}
448
+ <motion.div
449
+ initial={{ opacity: 0, y: 24 }}
450
+ animate={{ opacity: 1, y: 0 }}
451
+ transition={{ duration: 0.6, delay: 0.32, ease: [0.22, 1, 0.36, 1] }}
452
+ className="mt-12 terminal rounded-xl overflow-hidden max-w-2xl"
453
+ >
454
+ <div className="flex items-center gap-2 px-4 py-2.5 border-b border-slate-800/60 bg-slate-950/40">
455
+ <div className="flex gap-1.5">
456
+ <span className="w-3 h-3 rounded-full bg-rose-500/70"></span>
457
+ <span className="w-3 h-3 rounded-full bg-amber-500/70"></span>
458
+ <span className="w-3 h-3 rounded-full bg-emerald-500/70"></span>
459
+ </div>
460
+ <span className="ml-2 text-[11px] text-slate-500 font-mono">~/app</span>
461
+ </div>
462
+ <pre className="px-5 py-4 text-[13px] font-mono leading-relaxed overflow-x-auto">
463
+ <span className="text-slate-600">$</span> <span className="text-slate-300">npm install</span>
464
+ <span className="text-slate-500"> added 184 packages in 8.9s</span>
465
+ <span className="text-slate-600">$</span> <span className="text-slate-300">npm run dev</span>
466
+ <span className="text-slate-500"> </span><span className="text-orange-300">VITE</span><span className="text-slate-500"> v5.4.0 ready in </span><span className="text-emerald-300">312 ms</span>
467
+ <span className="text-slate-500"> \u279c</span> <span className="text-slate-300">Local: </span><span className="text-orange-300 underline decoration-orange-500/40">http://localhost:5173/</span>
468
+ </pre>
469
+ </motion.div>
470
+ </header>
471
+
472
+ {/* FEATURES */}
473
+ <section>
474
+ <motion.div
475
+ {...fadeUp}
476
+ transition={{ duration: 0.4, delay: 0.4 }}
477
+ viewport={{ once: true }}
478
+ whileInView={{ opacity: 1, y: 0 }}
479
+ className="mb-8"
480
+ >
481
+ <h2 className="text-sm font-semibold uppercase tracking-wider text-slate-500">
482
+ Why Nimbus
483
+ </h2>
484
+ <p className="mt-1 text-2xl font-semibold tracking-tight text-slate-100">
485
+ The full stack. None of the weight.
486
+ </p>
487
+ </motion.div>
488
+ <div className="grid grid-cols-1 md:grid-cols-3 gap-5">
489
+ {features.map((f, i) => (
490
+ <motion.div
491
+ key={f.title}
492
+ initial={{ opacity: 0, y: 16 }}
493
+ whileInView={{ opacity: 1, y: 0 }}
494
+ viewport={{ once: true, margin: '-50px' }}
495
+ transition={{ delay: 0.05 + i * 0.08, duration: 0.5, ease: [0.22, 1, 0.36, 1] }}
496
+ >
497
+ <Card className="card-glow group h-full transition-all duration-300 hover:-translate-y-1">
498
+ <div className={\`w-11 h-11 rounded-xl bg-gradient-to-br \${f.iconBg} ring-1 ring-white/5 flex items-center justify-center mb-5 group-hover:scale-110 transition-transform duration-300\`}>
499
+ <f.icon className={\`w-5 h-5 \${f.iconColor}\`} />
500
+ </div>
501
+ <h3 className="font-semibold text-slate-100 text-base">{f.title}</h3>
502
+ <p className="text-sm text-slate-400 mt-2 leading-relaxed">{f.desc}</p>
503
+ </Card>
504
+ </motion.div>
505
+ ))}
506
+ </div>
507
+ </section>
508
+
509
+ {/* LIVE STATS */}
510
+ <section>
511
+ <div className="mb-6">
512
+ <h2 className="text-sm font-semibold uppercase tracking-wider text-slate-500">
513
+ Live system stats
514
+ </h2>
515
+ <p className="mt-1 text-sm text-slate-500">
516
+ Polled from <code className="text-slate-400 font-mono">/api/stats</code> every 3s \u2014 your real Durable Object talking back.
517
+ </p>
518
+ </div>
519
+ <SystemStats />
520
+ </section>
521
+
522
+ <footer className="text-sm text-slate-500 pt-8 border-t border-slate-800/60 flex flex-wrap items-center justify-between gap-4">
523
+ <div>
524
+ Hack on this page: <code className="text-slate-300 font-mono">src/pages/Home.tsx</code>
525
+ </div>
526
+ <div className="flex items-center gap-1 text-xs">
527
+ <span className="w-1.5 h-1.5 rounded-full bg-orange-400 animate-pulse"></span>
528
+ <span className="text-slate-400">HMR connected</span>
529
+ </div>
530
+ </footer>
531
+ </div>
532
+ );
533
+ }
534
+ `;
535
+
536
+ const DOCS_TSX = `import Card from '../components/Card';
537
+ import { Terminal, GitBranch, Package, Rocket, Cpu, Code2, Boxes } from 'lucide-react';
538
+
539
+ const sections = [
540
+ {
541
+ icon: Terminal,
542
+ title: 'Open the terminal',
543
+ body: 'Connect via WebSocket to /ws. You get a full shell with node, npm, git, vite, esbuild and about 60 Unix utilities.',
544
+ },
545
+ {
546
+ icon: Package,
547
+ title: 'Install npm packages',
548
+ body: 'npm install works against the real registry. Nimbus uses a batched VFS + content-addressed cache so 500-package installs land in ~80 seconds.',
549
+ },
550
+ {
551
+ icon: GitBranch,
552
+ title: 'Clone a real repo',
553
+ body: 'git clone https://github.com/you/your-repo. Network and packfile processing run in a facet worker to keep the supervisor DO unblocked.',
554
+ },
555
+ {
556
+ icon: Boxes,
557
+ title: 'Install more runtimes',
558
+ body: 'nimbus install clang | python | ruby. Per-user wasm bundles streamed from R2 into the VFS. nimbus install --list shows what is installed; --available shows the catalog.',
559
+ },
560
+ {
561
+ icon: Cpu,
562
+ title: 'Compile native code',
563
+ body: 'nimbus install clang, then clang hello.c -o hello && ./hello. LLVM 8 to wasm32-wasi-nimbus, multi-translation-unit + user headers + fopen. A starter hello.c is already in your home directory.',
564
+ },
565
+ {
566
+ icon: Code2,
567
+ title: 'Run Python and Ruby',
568
+ body: "After nimbus install python (Pyodide 3.13) or ruby (ruby.wasm 3.3): python -c 'print(1+1)' / ruby -e 'puts 1+1', or just type python / ruby for an interactive REPL with persistent state.",
569
+ },
570
+ {
571
+ icon: Rocket,
572
+ title: 'Ship',
573
+ body: 'vite build emits to dist/. Preview via this session\\'s preview URL, or wire it up to serve from the Worker itself.',
574
+ },
575
+ ];
576
+
577
+ export default function Docs() {
578
+ return (
579
+ <div className="space-y-10">
580
+ <header>
581
+ <div className="text-xs font-semibold uppercase tracking-wider text-orange-400/80">Documentation</div>
582
+ <h1 className="mt-2 text-5xl font-bold tracking-tight text-slate-100">Get started</h1>
583
+ <p className="text-slate-400 mt-3 text-lg max-w-2xl">
584
+ Seven things worth knowing about Nimbus before you ship something with it.
585
+ </p>
586
+ </header>
587
+ <div className="space-y-4">
588
+ {sections.map((s, i) => (
589
+ <Card key={s.title} className="hover:border-orange-500/20 transition-colors">
590
+ <div className="flex gap-5">
591
+ <div className="shrink-0 w-11 h-11 rounded-xl bg-gradient-to-br from-orange-500/15 to-rose-500/5 ring-1 ring-orange-500/20 flex items-center justify-center">
592
+ <s.icon className="w-5 h-5 text-orange-300" />
593
+ </div>
594
+ <div className="flex-1">
595
+ <div className="flex items-center gap-3">
596
+ <span className="text-xs font-mono text-slate-500">0{i + 1}</span>
597
+ <h3 className="font-semibold text-slate-100 text-lg">{s.title}</h3>
598
+ </div>
599
+ <p className="text-sm text-slate-400 mt-2 leading-relaxed">{s.body}</p>
600
+ </div>
601
+ </div>
602
+ </Card>
603
+ ))}
604
+ </div>
605
+ <div className="text-sm text-slate-500 pt-6 border-t border-slate-800/60">
606
+ Full source at <code className="text-slate-300 font-mono">src/pages/Docs.tsx</code>.
607
+ </div>
608
+ </div>
609
+ );
610
+ }
611
+ `;
612
+
613
+ const PLAYGROUND_TSX = `import { useState } from 'react';
614
+ import { motion } from 'framer-motion';
615
+ import { Heart, Star, Sparkles, Zap, RefreshCcw } from 'lucide-react';
616
+ import Card from '../components/Card';
617
+
618
+ export default function Playground() {
619
+ const [count, setCount] = useState(0);
620
+ const [liked, setLiked] = useState(false);
621
+ return (
622
+ <div className="space-y-10">
623
+ <header>
624
+ <div className="text-xs font-semibold uppercase tracking-wider text-orange-400/80">Playground</div>
625
+ <h1 className="mt-2 text-5xl font-bold tracking-tight text-slate-100">
626
+ Press buttons. Watch state.
627
+ </h1>
628
+ <p className="text-slate-400 mt-3 text-lg max-w-2xl">
629
+ Minimal React state demo. Edit this file and save \u2014 HMR keeps the counter value.
630
+ </p>
631
+ </header>
632
+
633
+ <Card>
634
+ <div className="flex items-center gap-6">
635
+ <div className="flex flex-col gap-4">
636
+ <div className="text-7xl font-bold tabular-nums bg-gradient-to-br from-orange-300 to-rose-400 bg-clip-text text-transparent">
637
+ {count}
638
+ </div>
639
+ <div className="flex gap-2">
640
+ <button
641
+ onClick={() => setCount((c) => c + 1)}
642
+ className="px-4 py-2 text-sm font-medium rounded-lg bg-orange-500 hover:bg-orange-400 text-white transition flex items-center gap-2 shadow-lg shadow-orange-500/20 hover:shadow-orange-500/30 hover:-translate-y-0.5"
643
+ >
644
+ <Zap className="w-4 h-4" />
645
+ Increment
646
+ </button>
647
+ <button
648
+ onClick={() => setCount(0)}
649
+ className="px-4 py-2 text-sm font-medium rounded-lg bg-slate-800/80 hover:bg-slate-700 text-slate-200 transition flex items-center gap-2 ring-1 ring-slate-700/60"
650
+ >
651
+ <RefreshCcw className="w-4 h-4" />
652
+ Reset
653
+ </button>
654
+ </div>
655
+ </div>
656
+ <div className="ml-auto">
657
+ <motion.button
658
+ onClick={() => setLiked((v) => !v)}
659
+ whileHover={{ scale: 1.08 }}
660
+ whileTap={{ scale: 0.92 }}
661
+ className={\`w-16 h-16 rounded-full flex items-center justify-center transition \${
662
+ liked
663
+ ? 'bg-rose-500/20 ring-2 ring-rose-500/50 text-rose-400 shadow-lg shadow-rose-500/20'
664
+ : 'bg-slate-800/80 text-slate-400 hover:bg-slate-700 ring-1 ring-slate-700/60'
665
+ }\`}
666
+ >
667
+ <Heart className={\`w-6 h-6 \${liked ? 'fill-rose-400' : ''}\`} />
668
+ </motion.button>
669
+ </div>
670
+ </div>
671
+ </Card>
672
+
673
+ <Card>
674
+ <div className="flex items-center gap-3 mb-3">
675
+ <Sparkles className="w-5 h-5 text-amber-400" />
676
+ <h3 className="font-semibold">Try this</h3>
677
+ </div>
678
+ <ul className="space-y-2 text-sm text-slate-400 list-disc list-inside">
679
+ <li>Open the terminal and run <code className="text-slate-300">ls src/pages</code></li>
680
+ <li>Edit <code className="text-slate-300">src/pages/Playground.tsx</code> — save — HMR keeps state</li>
681
+ <li>Click <Star className="inline w-3.5 h-3.5 text-yellow-400 -mt-0.5" /> on <code className="text-slate-300">lucide-react</code> when you're done</li>
682
+ </ul>
683
+ </Card>
684
+ </div>
685
+ );
686
+ }
687
+ `;
688
+
689
+ const CARD_TSX = `import type { ReactNode } from 'react';
690
+
691
+ interface CardProps {
692
+ children: ReactNode;
693
+ className?: string;
694
+ }
695
+
696
+ export default function Card({ children, className = '' }: CardProps) {
697
+ return (
698
+ <div
699
+ className={
700
+ 'p-6 rounded-xl bg-slate-900/50 border border-slate-800/70 backdrop-blur-sm ' +
701
+ 'shadow-[inset_0_1px_0_rgba(255,255,255,0.03)] ' +
702
+ 'hover:border-slate-700/80 transition-colors ' +
703
+ className
704
+ }
705
+ >
706
+ {children}
707
+ </div>
708
+ );
709
+ }
710
+ `;
711
+
712
+ const SYSTEM_STATS_TSX = `import { useEffect, useState } from 'react';
713
+ import { motion } from 'framer-motion';
714
+ import Card from './Card';
715
+
716
+ interface Stats {
717
+ files: number;
718
+ directories: number;
719
+ usedBytes: number;
720
+ capacityBytes: number;
721
+ inodes?: { total: number; files: number; directories: number };
722
+ cache?: { entries: number; hits: number; misses: number; hitRate: number };
723
+ }
724
+
725
+ export default function SystemStats() {
726
+ const [stats, setStats] = useState<Stats | null>(null);
727
+ const [error, setError] = useState<string | null>(null);
728
+
729
+ useEffect(() => {
730
+ let cancelled = false;
731
+ const load = () => {
732
+ // The preview is served at <session>/preview/... where <session> is
733
+ // either "" (legacy, single-DO mode) or "/s/<id>" (multi-session mode).
734
+ // Strip the /preview tail from the current URL to get the API root.
735
+ // Using location.pathname avoids hardcoding a session ID at build time.
736
+ const apiRoot = location.pathname.replace(/\\/preview(\\/.*)?$/, '');
737
+ fetch(apiRoot + '/api/stats')
738
+ .then((r) => {
739
+ if (!r.ok) throw new Error('HTTP ' + r.status);
740
+ return r.json();
741
+ })
742
+ .then((s) => { if (!cancelled) setStats(s); })
743
+ .catch((e) => { if (!cancelled) setError(String(e.message || e)); });
744
+ };
745
+ load();
746
+ const t = setInterval(load, 3000);
747
+ return () => { cancelled = true; clearInterval(t); };
748
+ }, []);
749
+
750
+ if (error) {
751
+ return (
752
+ <Card>
753
+ <div className="text-sm text-rose-300">Could not load /api/stats: {error}</div>
754
+ </Card>
755
+ );
756
+ }
757
+ if (!stats) {
758
+ return (
759
+ <Card>
760
+ <div className="text-sm text-slate-500">Loading stats…</div>
761
+ </Card>
762
+ );
763
+ }
764
+
765
+ const mb = (stats.usedBytes / 1_000_000).toFixed(1);
766
+ const cap = (stats.capacityBytes / 1_000_000_000).toFixed(1);
767
+ const pct = (stats.usedBytes / stats.capacityBytes) * 100;
768
+
769
+ return (
770
+ <div className="grid grid-cols-2 md:grid-cols-4 gap-3">
771
+ <StatTile label="Files" value={stats.files.toLocaleString()} />
772
+ <StatTile label="Directories" value={stats.directories.toLocaleString()} />
773
+ <StatTile label="Used" value={\`\${mb} MB\`} sub={\`of \${cap} GB\`} />
774
+ <StatTile
775
+ label="Used %"
776
+ value={pct.toFixed(2) + '%'}
777
+ sub={<ProgressBar value={pct} />}
778
+ />
779
+ </div>
780
+ );
781
+ }
782
+
783
+ function StatTile({
784
+ label,
785
+ value,
786
+ sub,
787
+ }: {
788
+ label: string;
789
+ value: string;
790
+ sub?: React.ReactNode;
791
+ }) {
792
+ return (
793
+ <motion.div
794
+ initial={{ opacity: 0, scale: 0.98 }}
795
+ animate={{ opacity: 1, scale: 1 }}
796
+ transition={{ duration: 0.25 }}
797
+ className="p-4 rounded-xl bg-slate-900/60 border border-slate-800/80"
798
+ >
799
+ <div className="text-[11px] uppercase tracking-wider text-slate-500 font-semibold">
800
+ {label}
801
+ </div>
802
+ <div className="mt-2 text-2xl font-bold tabular-nums text-slate-100">
803
+ {value}
804
+ </div>
805
+ {sub ? <div className="mt-1 text-xs text-slate-500">{sub}</div> : null}
806
+ </motion.div>
807
+ );
808
+ }
809
+
810
+ function ProgressBar({ value }: { value: number }) {
811
+ return (
812
+ <div className="mt-1 h-1.5 rounded-full bg-slate-800 overflow-hidden">
813
+ <div
814
+ className="h-full bg-gradient-to-r from-orange-500 to-rose-500"
815
+ style={{ width: \`\${Math.min(100, Math.max(0.5, value))}%\` }}
816
+ />
817
+ </div>
818
+ );
819
+ }
820
+ `;
821
+
822
+ const README_MD = `# Nimbus Starter
823
+
824
+ A polished Vite + React + TypeScript + Tailwind + React Router starter,
825
+ pre-seeded on first boot inside a Cloudflare Durable Object.
826
+
827
+ ## Quickstart
828
+
829
+ cd app # you're probably already here
830
+ npm install # ~450 packages, ~80 seconds on first run
831
+ npm run dev # starts vite; preview opens in the sidebar
832
+
833
+ ## What's inside
834
+
835
+ - **React 18** with automatic JSX runtime
836
+ - **React Router 6** — routes at \`/\`, \`/docs\`, \`/playground\`
837
+ - **Tailwind CSS** via the edge-vendored Play CDN (auto-injected by
838
+ Nimbus when it sees a \`tailwind.config.*\` file in the project root —
839
+ served from \`/__nimbus_assets/tailwind-play.js\`, no third-party CDN)
840
+ - **Framer Motion** for page transitions and micro-interactions
841
+ - **Lucide icons**
842
+ - **Live system stats** — \`src/components/SystemStats.tsx\` polls the
843
+ session-relative \`/api/stats\` endpoint so you can verify the whole stack
844
+ is wired end-to-end.
845
+
846
+ ## Routing under the preview path
847
+
848
+ Your session has a shareable URL of the form
849
+ \`https://<host>/s/<session-id>/\`, and the preview is served at
850
+ \`https://<host>/s/<session-id>/preview/\`. Nimbus automatically injects the
851
+ matching \`basename\` into your \`createBrowserRouter\` / \`<BrowserRouter>\`
852
+ so \`<NavLink to="/docs">\` lands at the right path with no extra config.
853
+
854
+ To opt out:
855
+
856
+ - Set an explicit \`basename\` yourself — Nimbus never overrides user values, OR
857
+ - Add the comment \`// nimbus-no-basename\` anywhere in your entry file, OR
858
+ - Add \`nimbusInjectBasename: false\` to your \`vite.config.ts\`.
859
+
860
+ ## Start fresh
861
+
862
+ rm -rf ~/app ~/.nimbus-seeded
863
+
864
+ Then restart the session. A factory-fresh copy of this starter will be
865
+ regenerated. (The sentinel file \`~/.nimbus-seeded\` is what prevents
866
+ re-seeding on normal boots; deleting it opts back in.)
867
+
868
+ ## Customize
869
+
870
+ Delete anything you don't want. The seed never runs again once
871
+ \`~/.nimbus-seeded\` exists, so your edits are safe.
872
+
873
+ ## Beyond JS
874
+
875
+ Nimbus ships a package manager (\`nimbus install\`) that streams
876
+ additional runtimes from R2 into your VFS on demand:
877
+
878
+ nimbus install --available # show catalog
879
+ nimbus install clang # LLVM 8 -> wasm32-wasi-nimbus, ~50 MiB
880
+ nimbus install python # Pyodide CPython 3.13, ~12 MiB
881
+ nimbus install ruby # ruby.wasm 3.3, ~34 MiB
882
+
883
+ Then use them like native binaries:
884
+
885
+ clang ~/hello.c -o hello && ./hello
886
+ python -c 'print("hi")'
887
+ ruby -e 'puts "hi"'
888
+
889
+ Or drop into an interactive REPL (state persists across pushes within
890
+ the same session):
891
+
892
+ python # >>> >>>
893
+ ruby # irb-style
894
+ node # bare REPL
895
+ bun # bun REPL
896
+
897
+ A starter \`~/hello.c\` is seeded alongside this project so \`nimbus
898
+ install clang && clang ~/hello.c -o hello && ./hello\` works out of the
899
+ box.
900
+
901
+ ## Other frameworks
902
+
903
+ Nimbus also runs (W11 status):
904
+
905
+ - **SvelteKit** (\`@sveltejs/kit\`) — \u2705 dev + build
906
+ - **Astro** (\`astro\`) — \u2705 dev + build
907
+ - **Remix v2** (\`@remix-run/dev\` vite plugin) — \u2705 dev + build
908
+ - **Nuxt 3** (\`nuxt\`) — \u26A0\uFE0F caveats (Vite + Nitro single-server only;
909
+ HMR may degrade)
910
+ - **Next.js** (\`next\`) — \u274C blocked in Phase 1 (custom server,
911
+ webpack/Turbopack); tracked for W11.5
912
+
913
+ To use one of the supported frameworks, clone its starter or scaffold
914
+ with \`npm create <framework>@latest\` (or your usual scaffolder), then
915
+ \`npm install && npm run dev\` from the project directory.
916
+ `;
917
+
918
+ // ── SEED_FILES list (single source of truth) ────────────────────────────
919
+
920
+ export const SEED_FILES: SeedFile[] = [
921
+ { path: SEED_PROJECT_DIR + '/package.json', content: PACKAGE_JSON },
922
+ { path: SEED_PROJECT_DIR + '/index.html', content: INDEX_HTML },
923
+ { path: SEED_PROJECT_DIR + '/vite.config.ts', content: VITE_CONFIG },
924
+ { path: SEED_PROJECT_DIR + '/tailwind.config.js', content: TAILWIND_CONFIG },
925
+ { path: SEED_PROJECT_DIR + '/tsconfig.json', content: TSCONFIG_JSON },
926
+ { path: SEED_PROJECT_DIR + '/README.md', content: README_MD },
927
+ { path: SEED_PROJECT_DIR + '/src/index.css', content: INDEX_CSS },
928
+ { path: SEED_PROJECT_DIR + '/src/main.tsx', content: MAIN_TSX },
929
+ { path: SEED_PROJECT_DIR + '/src/App.tsx', content: APP_TSX },
930
+ { path: SEED_PROJECT_DIR + '/src/pages/Home.tsx', content: HOME_TSX },
931
+ { path: SEED_PROJECT_DIR + '/src/pages/Docs.tsx', content: DOCS_TSX },
932
+ { path: SEED_PROJECT_DIR + '/src/pages/Playground.tsx', content: PLAYGROUND_TSX },
933
+ { path: SEED_PROJECT_DIR + '/src/components/Card.tsx', content: CARD_TSX },
934
+ { path: SEED_PROJECT_DIR + '/src/components/SystemStats.tsx', content: SYSTEM_STATS_TSX },
935
+ ];
936
+
937
+ // ── Seed logic ──────────────────────────────────────────────────────────
938
+
939
+ /**
940
+ * Should we run the starter-project seed?
941
+ * Returns false if:
942
+ * - Sentinel exists (already seeded; user can `rm ~/.nimbus-seeded` to opt in again)
943
+ * - Project dir already exists (user has their own ~/app we must not clobber)
944
+ */
945
+ export function shouldSeedProject(vfs: SqliteVFS): boolean {
946
+ const view = vfs.as(CRED_KERNEL);
947
+ try {
948
+ if (view.exists(SEED_SENTINEL_PATH)) return false;
949
+ if (view.exists(SEED_PROJECT_DIR)) return false;
950
+ return true;
951
+ } catch {
952
+ return false;
953
+ }
954
+ }
955
+
956
+ /**
957
+ * Returns true if the sentinel is present (seed has completed at least once).
958
+ * Used to gate MOTD hints about the starter app.
959
+ */
960
+ export function hasSeededProject(vfs: SqliteVFS): boolean {
961
+ try { return vfs.as(CRED_KERNEL).exists(SEED_SENTINEL_PATH); } catch { return false; }
962
+ }
963
+
964
+ /**
965
+ * Materialize the seed project.
966
+ *
967
+ * Two-phase write for crash recovery:
968
+ * 1. Write all file bodies + directory inodes in ONE writeBatch().
969
+ * 2. Only on success, write the sentinel in a SEPARATE writeBatch().
970
+ *
971
+ * If the process dies between (1) and (2), the next boot will re-run this
972
+ * function (sentinel absent). All writes are `INSERT OR REPLACE` so retry
973
+ * is idempotent. If (1) itself fails mid-transaction, sqlite rolls back and
974
+ * we start clean next boot.
975
+ */
976
+ export function seedProject(
977
+ vfs: SqliteVFS,
978
+ opts?: { log?: (msg: string) => void },
979
+ ): { seeded: boolean; files: number; reason?: string } {
980
+ const log = opts?.log;
981
+ const view = vfs.as(CRED_KERNEL);
982
+
983
+ if (!shouldSeedProject(vfs)) {
984
+ return { seeded: false, files: 0, reason: 'already-seeded-or-present' };
985
+ }
986
+
987
+ log?.('[seed] materializing starter app at /home/user/app ...');
988
+
989
+ const mtime = Date.now();
990
+ const inodes: BatchInodeEntry[] = [];
991
+ const chunks: BatchChunkEntry[] = [];
992
+ const dirSet = new Set<string>();
993
+
994
+ // Collect every directory on the path of every file
995
+ const addDir = (dir: string) => {
996
+ if (!dir) return;
997
+ const parts = dir.split('/').filter(Boolean);
998
+ let cur = '';
999
+ for (const p of parts) {
1000
+ cur = cur ? cur + '/' + p : p;
1001
+ dirSet.add(cur);
1002
+ }
1003
+ };
1004
+
1005
+ for (const { path, content } of SEED_FILES) {
1006
+ // Gather parent directories
1007
+ const lastSlash = path.lastIndexOf('/');
1008
+ if (lastSlash > 0) addDir(path.substring(0, lastSlash));
1009
+
1010
+ const data = enc.encode(content);
1011
+ const size = data.length;
1012
+ const chunkCount = size === 0 ? 0 : Math.ceil(size / CHUNK_SIZE);
1013
+
1014
+ inodes.push({
1015
+ path,
1016
+ parentPath: lastSlash > 0 ? path.substring(0, lastSlash) : '',
1017
+ isDir: false,
1018
+ size,
1019
+ mtime,
1020
+ mode: 0o644,
1021
+ uid: 1000,
1022
+ gid: 1000,
1023
+ chunkCount,
1024
+ });
1025
+
1026
+ if (size > 0) {
1027
+ if (size <= CHUNK_SIZE) {
1028
+ chunks.push({ path, chunkId: 0, data });
1029
+ } else {
1030
+ for (let i = 0; i < chunkCount; i++) {
1031
+ chunks.push({
1032
+ path,
1033
+ chunkId: i,
1034
+ data: data.slice(i * CHUNK_SIZE, (i + 1) * CHUNK_SIZE),
1035
+ });
1036
+ }
1037
+ }
1038
+ }
1039
+ }
1040
+
1041
+ // Add dir inodes (deduplicated by set)
1042
+ for (const dir of dirSet) {
1043
+ const lastSlash = dir.lastIndexOf('/');
1044
+ inodes.push({
1045
+ path: dir,
1046
+ parentPath: lastSlash > 0 ? dir.substring(0, lastSlash) : '',
1047
+ isDir: true,
1048
+ size: 0,
1049
+ mtime,
1050
+ mode: 0o755,
1051
+ uid: 1000,
1052
+ gid: 1000,
1053
+ chunkCount: 0,
1054
+ });
1055
+ }
1056
+
1057
+ let fileCount = 0;
1058
+ try {
1059
+ // Phase 1: all project files + directories in ONE transactionSync
1060
+ const result = view.writeBatch({ inodes, chunks });
1061
+ fileCount = SEED_FILES.length;
1062
+ log?.(`[seed] wrote ${SEED_FILES.length} files + ${dirSet.size} dirs (${result.inodes} inodes, ${result.chunks} chunks)`);
1063
+
1064
+ // Phase 2: sentinel in a SECOND batch — only runs if Phase 1 succeeded.
1065
+ // A crash between Phase 1 and Phase 2 leaves the project materialized but
1066
+ // no sentinel; next boot sees ~/app already exists → shouldSeedProject()
1067
+ // returns false → we skip harmlessly. (That's why we also check exists(~/app).)
1068
+ const sentinelData = enc.encode(
1069
+ `# Nimbus seed sentinel — delete this file AND ~/app to re-seed.\n` +
1070
+ `# Seeded at: ${new Date(mtime).toISOString()}\n` +
1071
+ `# Files: ${SEED_FILES.length}\n`,
1072
+ );
1073
+ view.writeBatch({
1074
+ inodes: [{
1075
+ path: SEED_SENTINEL_PATH,
1076
+ parentPath: 'home/user',
1077
+ isDir: false,
1078
+ size: sentinelData.length,
1079
+ mtime,
1080
+ mode: 0o644,
1081
+ uid: 1000,
1082
+ gid: 1000,
1083
+ chunkCount: 1,
1084
+ }],
1085
+ chunks: [{ path: SEED_SENTINEL_PATH, chunkId: 0, data: sentinelData }],
1086
+ });
1087
+ log?.(`[seed] sentinel written → ${SEED_SENTINEL_PATH}`);
1088
+ } catch (e: any) {
1089
+ log?.(`[seed] failed: ${e?.message || e}`);
1090
+ return { seeded: false, files: fileCount, reason: e?.message || 'write-failed' };
1091
+ }
1092
+
1093
+ return { seeded: true, files: fileCount };
1094
+ }