wao 0.41.3 → 0.41.5

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 (719) hide show
  1. package/.babelrc-cjs +5 -0
  2. package/.babelrc-esm +5 -0
  3. package/.gitmodules +4 -0
  4. package/.prettierrc +6 -0
  5. package/README.md +90 -0
  6. package/app/.eslintrc.json +3 -0
  7. package/app/.mocharc.cjs +6 -0
  8. package/app/arweave.mjs +87 -0
  9. package/app/components/Footer.js +76 -0
  10. package/app/components/Global.js +1128 -0
  11. package/app/components/Header.js +306 -0
  12. package/app/components/Left.js +28 -0
  13. package/app/components/Logo.js +34 -0
  14. package/app/components/Middle.js +37 -0
  15. package/app/components/Sidebar.js +93 -0
  16. package/app/components/Tags.js +42 -0
  17. package/app/components/editor/Editor.js +322 -0
  18. package/app/components/editor/FilePath.js +42 -0
  19. package/app/components/editor/MonacoEditor.js +44 -0
  20. package/app/components/left/LeftMessages.js +85 -0
  21. package/app/components/left/LeftModules.js +86 -0
  22. package/app/components/left/LeftNetworks.js +438 -0
  23. package/app/components/left/LeftProcesses.js +98 -0
  24. package/app/components/left/LeftProjects.js +397 -0
  25. package/app/components/left/LeftTests.js +189 -0
  26. package/app/components/middle/MiddleBlocks.js +79 -0
  27. package/app/components/middle/MiddleEntity.js +16 -0
  28. package/app/components/middle/MiddleEntityAccount.js +264 -0
  29. package/app/components/middle/MiddleEntityAssignment.js +104 -0
  30. package/app/components/middle/MiddleEntityBlock.js +148 -0
  31. package/app/components/middle/MiddleEntityMessage.js +430 -0
  32. package/app/components/middle/MiddleEntityModule.js +183 -0
  33. package/app/components/middle/MiddleEntityProcess.js +323 -0
  34. package/app/components/middle/MiddleEntityTx.js +211 -0
  35. package/app/components/middle/MiddleMessages.js +87 -0
  36. package/app/components/middle/MiddleModules.js +89 -0
  37. package/app/components/middle/MiddleNetworks.js +516 -0
  38. package/app/components/middle/MiddleProcesses.js +87 -0
  39. package/app/components/middle/MiddleTests.js +134 -0
  40. package/app/components/modals/CreateFileModal.js +115 -0
  41. package/app/components/modals/CreateFolderModal.js +83 -0
  42. package/app/components/modals/CreateProjectModal.js +63 -0
  43. package/app/components/modals/FSModal.js +141 -0
  44. package/app/components/modals/ImportModal.js +105 -0
  45. package/app/components/modals/LaunchNetworkModal.js +95 -0
  46. package/app/components/modals/Modal.js +38 -0
  47. package/app/components/modals/ProxyModal.js +122 -0
  48. package/app/components/modals/RenameFileModal.js +95 -0
  49. package/app/components/styles/EditorScrollbarStyle.js +29 -0
  50. package/app/components/styles/EntityScrollbarStyle.js +29 -0
  51. package/app/components/styles/GlobalStyle.js +102 -0
  52. package/app/components/styles/XtermStyle.js +37 -0
  53. package/app/components/terminal/Terminal.js +132 -0
  54. package/app/components/terminal/Xterm.js +160 -0
  55. package/app/components/ui/avatar.jsx +49 -0
  56. package/app/components/ui/checkbox.jsx +17 -0
  57. package/app/components/ui/close-button.jsx +20 -0
  58. package/app/components/ui/color-mode.jsx +61 -0
  59. package/app/components/ui/dialog.jsx +54 -0
  60. package/app/components/ui/drawer.jsx +44 -0
  61. package/app/components/ui/field.jsx +22 -0
  62. package/app/components/ui/input-group.jsx +39 -0
  63. package/app/components/ui/popover.jsx +49 -0
  64. package/app/components/ui/provider.jsx +12 -0
  65. package/app/components/ui/radio.jsx +17 -0
  66. package/app/components/ui/slider.jsx +107 -0
  67. package/app/components/ui/toaster.jsx +69 -0
  68. package/app/components/ui/tooltip.jsx +35 -0
  69. package/app/index.js +10 -0
  70. package/app/jsconfig.json +7 -0
  71. package/app/lib/GithubCSS.js +1218 -0
  72. package/app/lib/addon-fit.js +72 -0
  73. package/app/lib/data.js +31 -0
  74. package/app/lib/github-markdown.css +1169 -0
  75. package/app/lib/global.js +1 -0
  76. package/app/lib/guide.js +82 -0
  77. package/app/lib/hub.js +109 -0
  78. package/app/lib/scripts.js +47 -0
  79. package/app/lib/store.js +34 -0
  80. package/app/lib/use.js +64 -0
  81. package/app/lib/utils.js +387 -0
  82. package/app/lib/webrtc.js +217 -0
  83. package/app/next.config.js +25 -0
  84. package/app/package.json +62 -0
  85. package/app/pages/404.js +9 -0
  86. package/app/pages/_app.js +10 -0
  87. package/app/pages/_document.js +14 -0
  88. package/app/pages/index.js +121 -0
  89. package/app/playwright.config.mjs +41 -0
  90. package/app/proxy.mjs +21 -0
  91. package/app/public/assets/cover.png +0 -0
  92. package/app/public/blueprints/apm.lua +91 -0
  93. package/app/public/blueprints/arena.lua +345 -0
  94. package/app/public/blueprints/arns.lua +318 -0
  95. package/app/public/blueprints/chat.lua +210 -0
  96. package/app/public/blueprints/chatroom.lua +56 -0
  97. package/app/public/blueprints/patch-legacy-reply.lua +13 -0
  98. package/app/public/blueprints/staking.lua +93 -0
  99. package/app/public/blueprints/token.lua +298 -0
  100. package/app/public/blueprints/voting.lua +45 -0
  101. package/app/public/favicon.ico +0 -0
  102. package/app/public/logo.png +0 -0
  103. package/cli-esm.js +55 -0
  104. package/cli.js +54 -0
  105. package/devnet/app/api.js +129 -0
  106. package/devnet/app/components/layout.js +89 -0
  107. package/devnet/app/components/pagination.js +144 -0
  108. package/devnet/app/components/search.js +159 -0
  109. package/devnet/app/components/table.js +124 -0
  110. package/devnet/app/components/tags.js +89 -0
  111. package/devnet/app/index.html +14 -0
  112. package/devnet/app/main.js +215 -0
  113. package/devnet/app/router.js +59 -0
  114. package/devnet/app/state.js +19 -0
  115. package/devnet/app/style.css +1606 -0
  116. package/devnet/app/utils.js +77 -0
  117. package/devnet/app/views/blocks.js +75 -0
  118. package/devnet/app/views/dashboard.js +127 -0
  119. package/devnet/app/views/entity.js +1473 -0
  120. package/devnet/app/views/messages.js +90 -0
  121. package/devnet/app/views/modules.js +165 -0
  122. package/devnet/app/views/processes.js +90 -0
  123. package/devnet/app/views/schedulers.js +90 -0
  124. package/devnet/app/views/transactions.js +88 -0
  125. package/devnet/migrations/0001_initial.sql +51 -0
  126. package/devnet/package.json +26 -0
  127. package/devnet/playwright.config.js +7 -0
  128. package/devnet/src/cu-worker.js +166 -0
  129. package/devnet/src/index.js +309 -0
  130. package/devnet/vite.config.js +17 -0
  131. package/devnet/vitest.config.js +10 -0
  132. package/devnet/wrangler-cu.toml +32 -0
  133. package/devnet/wrangler.toml +38 -0
  134. package/dhfs-tutorial-app/package.json +15 -0
  135. package/dist/esm/workspace/dashboard/public/favicon.png +0 -0
  136. package/dist/esm/workspace/src/counter.lua +14 -0
  137. package/dist/package.json +82 -0
  138. package/hb.sh +18 -0
  139. package/hbsig/.babelrc-cjs +5 -0
  140. package/hbsig/.babelrc-esm +5 -0
  141. package/hbsig/README.md +1 -0
  142. package/hbsig/dist/cjs/bin_to_str.js +44 -0
  143. package/hbsig/dist/cjs/collect-body-keys.js +470 -0
  144. package/hbsig/dist/cjs/commit.js +330 -0
  145. package/hbsig/dist/cjs/encode-array-item.js +110 -0
  146. package/hbsig/dist/cjs/encode-utils.js +242 -0
  147. package/hbsig/dist/cjs/encode.js +1365 -0
  148. package/hbsig/dist/cjs/erl_json.js +326 -0
  149. package/hbsig/dist/cjs/erl_str.js +1042 -0
  150. package/hbsig/dist/cjs/flat.js +279 -0
  151. package/hbsig/dist/cjs/http-message-signatures/httpbis.js +489 -0
  152. package/hbsig/dist/cjs/http-message-signatures/index.js +25 -0
  153. package/hbsig/dist/cjs/http-message-signatures/structured-header.js +129 -0
  154. package/hbsig/dist/cjs/httpsig.js +861 -0
  155. package/hbsig/dist/cjs/id.js +470 -0
  156. package/hbsig/dist/cjs/index.js +174 -0
  157. package/hbsig/dist/cjs/nocrypto.js +51 -0
  158. package/hbsig/dist/cjs/parser.js +201 -0
  159. package/hbsig/dist/cjs/send-utils.js +1231 -0
  160. package/hbsig/dist/cjs/send.js +211 -0
  161. package/hbsig/dist/cjs/signer-utils.js +494 -0
  162. package/hbsig/dist/cjs/signer.js +436 -0
  163. package/hbsig/dist/cjs/structured.js +515 -0
  164. package/hbsig/dist/cjs/test.js +12 -0
  165. package/hbsig/dist/cjs/utils.js +44 -0
  166. package/hbsig/dist/esm/bin_to_str.js +46 -0
  167. package/hbsig/dist/esm/collect-body-keys.js +436 -0
  168. package/hbsig/dist/esm/commit.js +219 -0
  169. package/hbsig/dist/esm/encode-array-item.js +112 -0
  170. package/hbsig/dist/esm/encode-utils.js +191 -0
  171. package/hbsig/dist/esm/encode.js +1256 -0
  172. package/hbsig/dist/esm/erl_json.js +292 -0
  173. package/hbsig/dist/esm/erl_str.js +1144 -0
  174. package/hbsig/dist/esm/flat.js +250 -0
  175. package/hbsig/dist/esm/http-message-signatures/httpbis.js +438 -0
  176. package/hbsig/dist/esm/http-message-signatures/index.js +4 -0
  177. package/hbsig/dist/esm/http-message-signatures/structured-header.js +105 -0
  178. package/hbsig/dist/esm/httpsig.js +866 -0
  179. package/hbsig/dist/esm/id.js +459 -0
  180. package/hbsig/dist/esm/index.js +13 -0
  181. package/hbsig/dist/esm/nocrypto.js +4 -0
  182. package/hbsig/dist/esm/package.json +3 -0
  183. package/hbsig/dist/esm/parser.js +171 -0
  184. package/hbsig/dist/esm/send-utils.js +1132 -0
  185. package/hbsig/dist/esm/send.js +142 -0
  186. package/hbsig/dist/esm/signer-utils.js +375 -0
  187. package/hbsig/dist/esm/signer.js +312 -0
  188. package/hbsig/dist/esm/structured.js +496 -0
  189. package/hbsig/dist/esm/test.js +2 -0
  190. package/hbsig/dist/esm/utils.js +29 -0
  191. package/hbsig/dist/package.json +39 -0
  192. package/hbsig/make.js +36 -0
  193. package/hbsig/package.json +39 -0
  194. package/hbsig/src/bin_to_str.js +46 -0
  195. package/hbsig/src/collect-body-keys.js +436 -0
  196. package/hbsig/src/commit.js +219 -0
  197. package/hbsig/src/encode-array-item.js +112 -0
  198. package/hbsig/src/encode-utils.js +191 -0
  199. package/hbsig/src/encode.js +1256 -0
  200. package/hbsig/src/erl_json.js +292 -0
  201. package/hbsig/src/erl_str.js +1144 -0
  202. package/hbsig/src/flat.js +250 -0
  203. package/hbsig/src/http-message-signatures/httpbis.js +438 -0
  204. package/hbsig/src/http-message-signatures/index.js +4 -0
  205. package/hbsig/src/http-message-signatures/structured-header.js +105 -0
  206. package/hbsig/src/httpsig.js +866 -0
  207. package/hbsig/src/id.js +459 -0
  208. package/hbsig/src/index.js +13 -0
  209. package/hbsig/src/nocrypto.js +4 -0
  210. package/hbsig/src/parser.js +171 -0
  211. package/hbsig/src/send-utils.js +1132 -0
  212. package/hbsig/src/send.js +142 -0
  213. package/hbsig/src/signer-utils.js +375 -0
  214. package/hbsig/src/signer.js +312 -0
  215. package/hbsig/src/structured.js +496 -0
  216. package/hbsig/src/test.js +2 -0
  217. package/hbsig/src/utils.js +29 -0
  218. package/lp/index.html +25 -0
  219. package/lp/package.json +19 -0
  220. package/lp/public/cover.png +0 -0
  221. package/lp/public/favicon.ico +0 -0
  222. package/lp/public/favicon.png +0 -0
  223. package/lp/public/images/book.jpg +0 -0
  224. package/lp/public/images/dashboard.png +0 -0
  225. package/lp/public/images/devnet.png +0 -0
  226. package/lp/public/images/hero-bg.png +0 -0
  227. package/lp/public/images/hyperadd.png +0 -0
  228. package/lp/public/images/message-flow.png +0 -0
  229. package/lp/public/images/mobile.png +0 -0
  230. package/lp/public/images/og-cover.png +0 -0
  231. package/lp/public/images/scan.png +0 -0
  232. package/lp/public/images/wao-hub.png +0 -0
  233. package/lp/public/images/wao-web.png +0 -0
  234. package/lp/public/logo.png +0 -0
  235. package/lp/src/App.jsx +29 -0
  236. package/lp/src/components/CodeBlock.jsx +37 -0
  237. package/lp/src/components/CodeBlock.module.css +89 -0
  238. package/lp/src/components/Footer.jsx +22 -0
  239. package/lp/src/components/Footer.module.css +60 -0
  240. package/lp/src/components/Nav.jsx +80 -0
  241. package/lp/src/components/Nav.module.css +177 -0
  242. package/lp/src/components/SectionWrapper.jsx +15 -0
  243. package/lp/src/hooks/useReveal.js +25 -0
  244. package/lp/src/hooks/useScrolled.js +14 -0
  245. package/lp/src/main.jsx +10 -0
  246. package/lp/src/sections/Book.jsx +60 -0
  247. package/lp/src/sections/Book.module.css +204 -0
  248. package/lp/src/sections/Browser.jsx +46 -0
  249. package/lp/src/sections/Browser.module.css +67 -0
  250. package/lp/src/sections/Devnet.jsx +55 -0
  251. package/lp/src/sections/Devnet.module.css +136 -0
  252. package/lp/src/sections/GetStarted.jsx +51 -0
  253. package/lp/src/sections/GetStarted.module.css +128 -0
  254. package/lp/src/sections/Hero.jsx +67 -0
  255. package/lp/src/sections/Hero.module.css +202 -0
  256. package/lp/src/sections/HyperADD.jsx +46 -0
  257. package/lp/src/sections/HyperADD.module.css +113 -0
  258. package/lp/src/sections/SDK.jsx +90 -0
  259. package/lp/src/sections/SDK.module.css +122 -0
  260. package/lp/src/sections/Testing.jsx +47 -0
  261. package/lp/src/sections/Testing.module.css +124 -0
  262. package/lp/src/sections/Vision.jsx +93 -0
  263. package/lp/src/sections/Vision.module.css +147 -0
  264. package/lp/src/styles/globals.css +285 -0
  265. package/lp/src/utils/scrollTo.js +4 -0
  266. package/lp/vite.config.js +7 -0
  267. package/make.js +39 -0
  268. package/package.json +17 -12
  269. package/patches/@permaweb+ao-loader+0.0.44.patch +64 -0
  270. package/plan.md +435 -0
  271. package/rebar.lock +1 -0
  272. package/src/accounts-web.js +128 -0
  273. package/src/accounts.js +124 -0
  274. package/src/adaptor-base.js +622 -0
  275. package/src/adaptor-cf.js +11 -0
  276. package/src/adaptor-web.js +11 -0
  277. package/src/adaptor.js +10 -0
  278. package/src/ao-loader.js +30660 -0
  279. package/src/ao.js +1173 -0
  280. package/src/aoconnect-base.js +1098 -0
  281. package/src/aoconnect-cf.js +9 -0
  282. package/src/aoconnect-web.js +8 -0
  283. package/src/aoconnect.js +8 -0
  284. package/src/aos_wamr.js +1 -0
  285. package/src/ar-remote.js +87 -0
  286. package/src/ar.js +276 -0
  287. package/src/armem-base.js +529 -0
  288. package/src/armem-cf.js +67 -0
  289. package/src/armem-web.js +19 -0
  290. package/src/armem.js +26 -0
  291. package/src/bao.js +141 -0
  292. package/src/bar.js +366 -0
  293. package/src/build.js +7 -0
  294. package/src/bundler.js +119 -0
  295. package/src/car.js +10 -0
  296. package/src/cf-env.js +29 -0
  297. package/src/cf.js +11 -0
  298. package/src/cli.js +561 -0
  299. package/src/compress.js +112 -0
  300. package/src/create.js +415 -0
  301. package/src/devs.js +86 -0
  302. package/src/dirname.js +1 -0
  303. package/src/dodb.js +26 -0
  304. package/src/erl_json.js +289 -0
  305. package/src/erl_str.js +1139 -0
  306. package/src/gql.js +229 -0
  307. package/src/hb.js +967 -0
  308. package/src/helpers.js +203 -0
  309. package/src/http.js +619 -0
  310. package/src/hub/bundler.js +123 -0
  311. package/src/hub/cu.js +74 -0
  312. package/src/hub/fs.js +157 -0
  313. package/src/hub/index.js +85 -0
  314. package/src/hub/utils.js +64 -0
  315. package/src/hub/ws-proxy.js +67 -0
  316. package/src/hyper-aos.js +1 -0
  317. package/src/hyperbeam-server.js +21 -0
  318. package/src/hyperbeam.js +585 -0
  319. package/src/index.js +5 -0
  320. package/src/keygen.js +47 -0
  321. package/src/lfdb.js +67 -0
  322. package/src/lua/aos.wasm +0 -0
  323. package/src/lua/aos2_0_1.js +1 -0
  324. package/src/lua/aos2_0_1.wasm +0 -0
  325. package/src/lua/aos2_0_3.js +1 -0
  326. package/src/lua/aos2_0_3.wasm +0 -0
  327. package/src/lua/aos2_0_4_32.js +1 -0
  328. package/src/lua/aos2_0_4_32.wasm +0 -0
  329. package/src/lua/aos2_0_6.wasm +0 -0
  330. package/src/lua/apm.lua +61 -0
  331. package/src/lua/llama.wasm +0 -0
  332. package/src/lua/process.wasm +0 -0
  333. package/src/lua/sqlite.js +1 -0
  334. package/src/lua/sqlite.wasm +0 -0
  335. package/src/lua/weavedb_mock.lua +44 -0
  336. package/src/lua/weavedrive.lua +53 -0
  337. package/src/run.js +25 -0
  338. package/src/server.js +173 -0
  339. package/src/storage-multi.js +183 -0
  340. package/src/tao.js +12 -0
  341. package/src/tar.js +10 -0
  342. package/src/test.js +42 -0
  343. package/src/tgql-d1.js +407 -0
  344. package/src/tgql.js +310 -0
  345. package/src/toerl.js +162 -0
  346. package/src/utils.js +777 -0
  347. package/src/wao.js +29 -0
  348. package/src/waosm/README.md +81 -0
  349. package/src/waosm/waosm.d.ts +40 -0
  350. package/src/waosm/waosm.js +240 -0
  351. package/src/waosm/waosm_bg.wasm +0 -0
  352. package/src/waosm/waosm_bg.wasm.d.ts +8 -0
  353. package/src/waosm-node/README.md +81 -0
  354. package/src/waosm-node/waosm.d.ts +8 -0
  355. package/src/waosm-node/waosm.js +4 -0
  356. package/src/waosm-node/waosm_bg.js +147 -0
  357. package/src/waosm-node/waosm_bg.wasm +0 -0
  358. package/src/waosm-node/waosm_bg.wasm.d.ts +8 -0
  359. package/src/waosm-node/waosm_bg.wasm.js +14 -0
  360. package/src/waosm-node.js +9 -0
  361. package/src/war.js +10 -0
  362. package/src/weavedrive.js +376 -0
  363. package/src/web.js +11 -0
  364. package/src/workspace/.mcp.json +8 -0
  365. package/src/workspace/CLAUDE.md +258 -0
  366. package/src/workspace/README.md +85 -0
  367. package/src/workspace/dashboard/index.html +163 -0
  368. package/src/workspace/dashboard/package.json +18 -0
  369. package/src/workspace/dashboard/public/favicon.ico +0 -0
  370. package/src/workspace/dashboard/public/favicon.png +0 -0
  371. package/src/workspace/dashboard/server.js +224 -0
  372. package/src/workspace/dashboard/src/App.jsx +2350 -0
  373. package/{cjs/workspace/frontend → src/workspace/dashboard}/vite.config.js +6 -0
  374. package/src/workspace/package.json +18 -0
  375. package/src/workspace/src/counter.lua +14 -0
  376. package/tsconfig.json +18 -0
  377. package/types/index.d.ts +329 -0
  378. package/waollama/.eslintrc.json +3 -0
  379. package/waollama/README.md +19 -0
  380. package/waollama/arweave.mjs +87 -0
  381. package/waollama/components/ui/avatar.jsx +49 -0
  382. package/waollama/components/ui/checkbox.jsx +17 -0
  383. package/waollama/components/ui/close-button.jsx +20 -0
  384. package/waollama/components/ui/color-mode.jsx +61 -0
  385. package/waollama/components/ui/dialog.jsx +54 -0
  386. package/waollama/components/ui/drawer.jsx +44 -0
  387. package/waollama/components/ui/field.jsx +22 -0
  388. package/waollama/components/ui/input-group.jsx +39 -0
  389. package/waollama/components/ui/popover.jsx +49 -0
  390. package/waollama/components/ui/provider.jsx +12 -0
  391. package/waollama/components/ui/radio.jsx +17 -0
  392. package/waollama/components/ui/slider.jsx +107 -0
  393. package/waollama/components/ui/tooltip.jsx +35 -0
  394. package/waollama/index.js +10 -0
  395. package/waollama/jsconfig.json +7 -0
  396. package/waollama/lib/ao-loader.js +30654 -0
  397. package/waollama/lib/client.js +1 -0
  398. package/waollama/lib/wasm.js +1 -0
  399. package/waollama/next.config.js +25 -0
  400. package/waollama/package.json +43 -0
  401. package/waollama/pages/404.js +9 -0
  402. package/waollama/pages/_app.js +9 -0
  403. package/waollama/pages/_document.js +14 -0
  404. package/waollama/pages/index.js +212 -0
  405. package/waollama/playwright.config.js +31 -0
  406. package/waollama/proxy.mjs +21 -0
  407. package/waollama/public/favicon.ico +0 -0
  408. package/waollama/public/human.png +0 -0
  409. package/waollama/public/llama.png +0 -0
  410. package/waosm/Cargo.toml +11 -0
  411. package/waosm/README.md +81 -0
  412. package/waosm/compress.js +112 -0
  413. package/waosm/make.js +33 -0
  414. package/waosm/package.json +10 -0
  415. package/waosm/src/lib.rs +180 -0
  416. package/waosm/test.js +16 -0
  417. package/cjs/workspace/.claude/agents/builder.md +0 -99
  418. package/cjs/workspace/.claude/agents/device-builder.md +0 -86
  419. package/cjs/workspace/.claude/agents/tester.md +0 -90
  420. package/cjs/workspace/.claude/mcp/dashboard/server.js +0 -128
  421. package/cjs/workspace/.claude/rules/deploy.md +0 -45
  422. package/cjs/workspace/.claude/rules/frontend.md +0 -69
  423. package/cjs/workspace/.claude/rules/hyperbeam.md +0 -104
  424. package/cjs/workspace/.claude/rules/lua.md +0 -108
  425. package/cjs/workspace/.claude/rules/testing.md +0 -257
  426. package/cjs/workspace/.claude/settings.json +0 -109
  427. package/cjs/workspace/.claude/skills/build/SKILL.md +0 -214
  428. package/cjs/workspace/.claude/skills/build-aos/SKILL.md +0 -129
  429. package/cjs/workspace/.claude/skills/build-device/SKILL.md +0 -192
  430. package/cjs/workspace/.claude/skills/build-frontend/SKILL.md +0 -134
  431. package/cjs/workspace/.claude/skills/build-module/SKILL.md +0 -281
  432. package/cjs/workspace/.claude/skills/create-aos/SKILL.md +0 -63
  433. package/cjs/workspace/.claude/skills/create-device/SKILL.md +0 -87
  434. package/cjs/workspace/.claude/skills/create-module/SKILL.md +0 -162
  435. package/cjs/workspace/.claude/skills/debug/SKILL.md +0 -57
  436. package/cjs/workspace/.claude/skills/deploy/SKILL.md +0 -85
  437. package/cjs/workspace/.claude/skills/dev/SKILL.md +0 -32
  438. package/cjs/workspace/.claude/skills/plan/SKILL.md +0 -176
  439. package/cjs/workspace/.claude/skills/readme/SKILL.md +0 -186
  440. package/cjs/workspace/.claude/skills/report/SKILL.md +0 -49
  441. package/cjs/workspace/.claude/skills/team/SKILL.md +0 -101
  442. package/cjs/workspace/.claude/skills/test/SKILL.md +0 -56
  443. package/cjs/workspace/.claude/skills/test-device/SKILL.md +0 -114
  444. package/cjs/workspace/.claude/skills/test-e2e/SKILL.md +0 -103
  445. package/cjs/workspace/.claude/skills/test-hb/SKILL.md +0 -76
  446. package/cjs/workspace/.claude/skills/validate/SKILL.md +0 -96
  447. package/cjs/workspace/.claude/skills/validate/scripts/check-lua.sh +0 -41
  448. package/cjs/workspace/docs/aos-lua.md +0 -428
  449. package/cjs/workspace/docs/debug.md +0 -230
  450. package/cjs/workspace/docs/hyperbeam-dev.md +0 -606
  451. package/cjs/workspace/docs/hyperbeam-devices.md +0 -618
  452. package/cjs/workspace/docs/wao-sdk.md +0 -807
  453. package/cjs/workspace/frontend/e2e/.gitkeep +0 -0
  454. package/cjs/workspace/frontend/index.html +0 -12
  455. package/cjs/workspace/frontend/package.json +0 -24
  456. package/cjs/workspace/frontend/playwright.config.js +0 -10
  457. package/cjs/workspace/frontend/src/App.jsx +0 -24
  458. package/cjs/workspace/frontend/test/.gitkeep +0 -0
  459. package/cjs/workspace/frontend/vitest.config.js +0 -10
  460. package/cjs/workspace/scripts/deploy.js +0 -140
  461. package/cjs/workspace/scripts/keygen.js +0 -52
  462. package/cjs/workspace/test/aos.test.js +0 -98
  463. package/cjs/workspace/test/hyperbeam.test.js +0 -80
  464. package/esm/compiler/native +0 -0
  465. package/esm/workspace/.claude/agents/builder.md +0 -99
  466. package/esm/workspace/.claude/agents/device-builder.md +0 -86
  467. package/esm/workspace/.claude/agents/tester.md +0 -90
  468. package/esm/workspace/.claude/mcp/dashboard/server.js +0 -128
  469. package/esm/workspace/.claude/rules/deploy.md +0 -45
  470. package/esm/workspace/.claude/rules/frontend.md +0 -69
  471. package/esm/workspace/.claude/rules/hyperbeam.md +0 -104
  472. package/esm/workspace/.claude/rules/lua.md +0 -108
  473. package/esm/workspace/.claude/rules/testing.md +0 -257
  474. package/esm/workspace/.claude/settings.json +0 -109
  475. package/esm/workspace/.claude/skills/build/SKILL.md +0 -214
  476. package/esm/workspace/.claude/skills/build-aos/SKILL.md +0 -129
  477. package/esm/workspace/.claude/skills/build-device/SKILL.md +0 -192
  478. package/esm/workspace/.claude/skills/build-frontend/SKILL.md +0 -134
  479. package/esm/workspace/.claude/skills/build-module/SKILL.md +0 -281
  480. package/esm/workspace/.claude/skills/create-aos/SKILL.md +0 -63
  481. package/esm/workspace/.claude/skills/create-device/SKILL.md +0 -87
  482. package/esm/workspace/.claude/skills/create-module/SKILL.md +0 -162
  483. package/esm/workspace/.claude/skills/debug/SKILL.md +0 -57
  484. package/esm/workspace/.claude/skills/deploy/SKILL.md +0 -85
  485. package/esm/workspace/.claude/skills/dev/SKILL.md +0 -32
  486. package/esm/workspace/.claude/skills/plan/SKILL.md +0 -176
  487. package/esm/workspace/.claude/skills/readme/SKILL.md +0 -186
  488. package/esm/workspace/.claude/skills/report/SKILL.md +0 -49
  489. package/esm/workspace/.claude/skills/team/SKILL.md +0 -101
  490. package/esm/workspace/.claude/skills/test/SKILL.md +0 -56
  491. package/esm/workspace/.claude/skills/test-device/SKILL.md +0 -114
  492. package/esm/workspace/.claude/skills/test-e2e/SKILL.md +0 -103
  493. package/esm/workspace/.claude/skills/test-hb/SKILL.md +0 -76
  494. package/esm/workspace/.claude/skills/validate/SKILL.md +0 -96
  495. package/esm/workspace/.claude/skills/validate/scripts/check-lua.sh +0 -41
  496. package/esm/workspace/docs/aos-lua.md +0 -428
  497. package/esm/workspace/docs/debug.md +0 -230
  498. package/esm/workspace/docs/hyperbeam-dev.md +0 -606
  499. package/esm/workspace/docs/hyperbeam-devices.md +0 -618
  500. package/esm/workspace/docs/wao-sdk.md +0 -807
  501. package/esm/workspace/frontend/e2e/.gitkeep +0 -0
  502. package/esm/workspace/frontend/index.html +0 -12
  503. package/esm/workspace/frontend/package.json +0 -24
  504. package/esm/workspace/frontend/playwright.config.js +0 -10
  505. package/esm/workspace/frontend/src/App.jsx +0 -24
  506. package/esm/workspace/frontend/src/main.jsx +0 -9
  507. package/esm/workspace/frontend/test/.gitkeep +0 -0
  508. package/esm/workspace/frontend/vite.config.js +0 -6
  509. package/esm/workspace/frontend/vitest.config.js +0 -10
  510. package/esm/workspace/scripts/deploy.js +0 -140
  511. package/esm/workspace/scripts/keygen.js +0 -52
  512. package/esm/workspace/test/aos.test.js +0 -98
  513. package/esm/workspace/test/hyperbeam.test.js +0 -80
  514. /package/{cjs/workspace/dashboard/public → devnet/app}/favicon.ico +0 -0
  515. /package/{cjs/workspace → dhfs-tutorial-app}/src/counter.lua +0 -0
  516. /package/{cjs → dist/cjs}/accounts-web.js +0 -0
  517. /package/{cjs → dist/cjs}/accounts.js +0 -0
  518. /package/{cjs → dist/cjs}/adaptor-base.js +0 -0
  519. /package/{cjs → dist/cjs}/adaptor-cf.js +0 -0
  520. /package/{cjs → dist/cjs}/adaptor-web.js +0 -0
  521. /package/{cjs → dist/cjs}/adaptor.js +0 -0
  522. /package/{cjs → dist/cjs}/ao-loader.js +0 -0
  523. /package/{cjs → dist/cjs}/ao.js +0 -0
  524. /package/{cjs → dist/cjs}/aoconnect-base.js +0 -0
  525. /package/{cjs → dist/cjs}/aoconnect-cf.js +0 -0
  526. /package/{cjs → dist/cjs}/aoconnect-web.js +0 -0
  527. /package/{cjs → dist/cjs}/aoconnect.js +0 -0
  528. /package/{cjs → dist/cjs}/aos_wamr.js +0 -0
  529. /package/{cjs → dist/cjs}/ar-remote.js +0 -0
  530. /package/{cjs → dist/cjs}/ar.js +0 -0
  531. /package/{cjs → dist/cjs}/armem-base.js +0 -0
  532. /package/{cjs → dist/cjs}/armem-cf.js +0 -0
  533. /package/{cjs → dist/cjs}/armem-web.js +0 -0
  534. /package/{cjs → dist/cjs}/armem.js +0 -0
  535. /package/{cjs → dist/cjs}/bao.js +0 -0
  536. /package/{cjs → dist/cjs}/bar.js +0 -0
  537. /package/{cjs → dist/cjs}/build.js +0 -0
  538. /package/{cjs → dist/cjs}/bundler.js +0 -0
  539. /package/{cjs → dist/cjs}/car.js +0 -0
  540. /package/{cjs → dist/cjs}/cf-env.js +0 -0
  541. /package/{cjs → dist/cjs}/cf.js +0 -0
  542. /package/{cjs → dist/cjs}/cli.js +0 -0
  543. /package/{cjs → dist/cjs}/compress.js +0 -0
  544. /package/{cjs → dist/cjs}/create.js +0 -0
  545. /package/{cjs → dist/cjs}/devs.js +0 -0
  546. /package/{cjs → dist/cjs}/dirname.js +0 -0
  547. /package/{cjs → dist/cjs}/dodb.js +0 -0
  548. /package/{cjs → dist/cjs}/erl_json.js +0 -0
  549. /package/{cjs → dist/cjs}/erl_str.js +0 -0
  550. /package/{cjs → dist/cjs}/gql.js +0 -0
  551. /package/{cjs → dist/cjs}/hb.js +0 -0
  552. /package/{cjs → dist/cjs}/helpers.js +0 -0
  553. /package/{cjs → dist/cjs}/http.js +0 -0
  554. /package/{cjs → dist/cjs}/hub/bundler.js +0 -0
  555. /package/{cjs → dist/cjs}/hub/cu.js +0 -0
  556. /package/{cjs → dist/cjs}/hub/fs.js +0 -0
  557. /package/{cjs → dist/cjs}/hub/index.js +0 -0
  558. /package/{cjs → dist/cjs}/hub/utils.js +0 -0
  559. /package/{cjs → dist/cjs}/hub/ws-proxy.js +0 -0
  560. /package/{cjs → dist/cjs}/hyper-aos.js +0 -0
  561. /package/{cjs → dist/cjs}/hyperbeam-server.js +0 -0
  562. /package/{cjs → dist/cjs}/hyperbeam.js +0 -0
  563. /package/{cjs → dist/cjs}/index.js +0 -0
  564. /package/{cjs → dist/cjs}/keygen.js +0 -0
  565. /package/{cjs → dist/cjs}/lfdb.js +0 -0
  566. /package/{cjs → dist/cjs}/lua/aos.wasm +0 -0
  567. /package/{cjs → dist/cjs}/lua/aos2_0_1.js +0 -0
  568. /package/{cjs → dist/cjs}/lua/aos2_0_1.wasm +0 -0
  569. /package/{cjs → dist/cjs}/lua/aos2_0_3.js +0 -0
  570. /package/{cjs → dist/cjs}/lua/aos2_0_3.wasm +0 -0
  571. /package/{cjs → dist/cjs}/lua/aos2_0_4_32.js +0 -0
  572. /package/{cjs → dist/cjs}/lua/aos2_0_4_32.wasm +0 -0
  573. /package/{cjs → dist/cjs}/lua/aos2_0_6.wasm +0 -0
  574. /package/{cjs → dist/cjs}/lua/apm.lua +0 -0
  575. /package/{cjs → dist/cjs}/lua/llama.wasm +0 -0
  576. /package/{cjs → dist/cjs}/lua/process.wasm +0 -0
  577. /package/{cjs → dist/cjs}/lua/sqlite.js +0 -0
  578. /package/{cjs → dist/cjs}/lua/sqlite.wasm +0 -0
  579. /package/{cjs → dist/cjs}/lua/weavedb_mock.lua +0 -0
  580. /package/{cjs → dist/cjs}/lua/weavedrive.lua +0 -0
  581. /package/{cjs → dist/cjs}/run.js +0 -0
  582. /package/{cjs → dist/cjs}/server.js +0 -0
  583. /package/{cjs → dist/cjs}/storage-multi.js +0 -0
  584. /package/{cjs → dist/cjs}/tao.js +0 -0
  585. /package/{cjs → dist/cjs}/tar.js +0 -0
  586. /package/{cjs → dist/cjs}/test.js +0 -0
  587. /package/{cjs → dist/cjs}/tgql-d1.js +0 -0
  588. /package/{cjs → dist/cjs}/tgql.js +0 -0
  589. /package/{cjs → dist/cjs}/toerl.js +0 -0
  590. /package/{cjs → dist/cjs}/utils.js +0 -0
  591. /package/{cjs → dist/cjs}/wao.js +0 -0
  592. /package/{cjs → dist/cjs}/waosm/waosm.js +0 -0
  593. /package/{cjs → dist/cjs}/waosm-node/waosm.js +0 -0
  594. /package/{cjs → dist/cjs}/waosm-node/waosm_bg.js +0 -0
  595. /package/{cjs → dist/cjs}/waosm-node/waosm_bg.wasm +0 -0
  596. /package/{cjs → dist/cjs}/waosm-node/waosm_bg.wasm.js +0 -0
  597. /package/{cjs → dist/cjs}/waosm-node.js +0 -0
  598. /package/{cjs → dist/cjs}/war.js +0 -0
  599. /package/{cjs → dist/cjs}/weavedrive.js +0 -0
  600. /package/{cjs → dist/cjs}/web.js +0 -0
  601. /package/{cjs → dist/cjs}/workspace/.mcp.json +0 -0
  602. /package/{cjs → dist/cjs}/workspace/CLAUDE.md +0 -0
  603. /package/{cjs → dist/cjs}/workspace/README.md +0 -0
  604. /package/{cjs → dist/cjs}/workspace/dashboard/index.html +0 -0
  605. /package/{cjs → dist/cjs}/workspace/dashboard/package.json +0 -0
  606. /package/{esm → dist/cjs}/workspace/dashboard/public/favicon.ico +0 -0
  607. /package/{cjs → dist/cjs}/workspace/dashboard/public/favicon.png +0 -0
  608. /package/{cjs → dist/cjs}/workspace/dashboard/server.js +0 -0
  609. /package/{cjs → dist/cjs}/workspace/dashboard/src/App.jsx +0 -0
  610. /package/{cjs → dist/cjs}/workspace/dashboard/src/main.jsx +0 -0
  611. /package/{cjs → dist/cjs}/workspace/dashboard/vite.config.js +0 -0
  612. /package/{cjs → dist/cjs}/workspace/package.json +0 -0
  613. /package/{esm → dist/cjs}/workspace/src/counter.lua +0 -0
  614. /package/{esm → dist/esm}/accounts-web.js +0 -0
  615. /package/{esm → dist/esm}/accounts.js +0 -0
  616. /package/{esm → dist/esm}/adaptor-base.js +0 -0
  617. /package/{esm → dist/esm}/adaptor-cf.js +0 -0
  618. /package/{esm → dist/esm}/adaptor-web.js +0 -0
  619. /package/{esm → dist/esm}/adaptor.js +0 -0
  620. /package/{esm → dist/esm}/ao-loader.js +0 -0
  621. /package/{esm → dist/esm}/ao.js +0 -0
  622. /package/{esm → dist/esm}/aoconnect-base.js +0 -0
  623. /package/{esm → dist/esm}/aoconnect-cf.js +0 -0
  624. /package/{esm → dist/esm}/aoconnect-web.js +0 -0
  625. /package/{esm → dist/esm}/aoconnect.js +0 -0
  626. /package/{esm → dist/esm}/aos_wamr.js +0 -0
  627. /package/{esm → dist/esm}/ar-remote.js +0 -0
  628. /package/{esm → dist/esm}/ar.js +0 -0
  629. /package/{esm → dist/esm}/armem-base.js +0 -0
  630. /package/{esm → dist/esm}/armem-cf.js +0 -0
  631. /package/{esm → dist/esm}/armem-web.js +0 -0
  632. /package/{esm → dist/esm}/armem.js +0 -0
  633. /package/{esm → dist/esm}/bao.js +0 -0
  634. /package/{esm → dist/esm}/bar.js +0 -0
  635. /package/{esm → dist/esm}/build.js +0 -0
  636. /package/{esm → dist/esm}/bundler.js +0 -0
  637. /package/{esm → dist/esm}/car.js +0 -0
  638. /package/{esm → dist/esm}/cf-env.js +0 -0
  639. /package/{esm → dist/esm}/cf.js +0 -0
  640. /package/{esm → dist/esm}/cli.js +0 -0
  641. /package/{esm → dist/esm}/compress.js +0 -0
  642. /package/{esm → dist/esm}/create.js +0 -0
  643. /package/{esm → dist/esm}/devs.js +0 -0
  644. /package/{esm → dist/esm}/dirname.js +0 -0
  645. /package/{esm → dist/esm}/dodb.js +0 -0
  646. /package/{esm → dist/esm}/erl_json.js +0 -0
  647. /package/{esm → dist/esm}/erl_str.js +0 -0
  648. /package/{esm → dist/esm}/gql.js +0 -0
  649. /package/{esm → dist/esm}/hb.js +0 -0
  650. /package/{esm → dist/esm}/helpers.js +0 -0
  651. /package/{esm → dist/esm}/http.js +0 -0
  652. /package/{esm → dist/esm}/hub/bundler.js +0 -0
  653. /package/{esm → dist/esm}/hub/cu.js +0 -0
  654. /package/{esm → dist/esm}/hub/fs.js +0 -0
  655. /package/{esm → dist/esm}/hub/index.js +0 -0
  656. /package/{esm → dist/esm}/hub/utils.js +0 -0
  657. /package/{esm → dist/esm}/hub/ws-proxy.js +0 -0
  658. /package/{esm → dist/esm}/hyper-aos.js +0 -0
  659. /package/{esm → dist/esm}/hyperbeam-server.js +0 -0
  660. /package/{esm → dist/esm}/hyperbeam.js +0 -0
  661. /package/{esm → dist/esm}/index.js +0 -0
  662. /package/{esm → dist/esm}/keygen.js +0 -0
  663. /package/{esm → dist/esm}/lfdb.js +0 -0
  664. /package/{esm → dist/esm}/lua/aos.wasm +0 -0
  665. /package/{esm → dist/esm}/lua/aos2_0_1.js +0 -0
  666. /package/{esm → dist/esm}/lua/aos2_0_1.wasm +0 -0
  667. /package/{esm → dist/esm}/lua/aos2_0_3.js +0 -0
  668. /package/{esm → dist/esm}/lua/aos2_0_3.wasm +0 -0
  669. /package/{esm → dist/esm}/lua/aos2_0_4_32.js +0 -0
  670. /package/{esm → dist/esm}/lua/aos2_0_4_32.wasm +0 -0
  671. /package/{esm → dist/esm}/lua/aos2_0_6.wasm +0 -0
  672. /package/{esm → dist/esm}/lua/apm.lua +0 -0
  673. /package/{esm → dist/esm}/lua/llama.wasm +0 -0
  674. /package/{esm → dist/esm}/lua/process.wasm +0 -0
  675. /package/{esm → dist/esm}/lua/sqlite.js +0 -0
  676. /package/{esm → dist/esm}/lua/sqlite.wasm +0 -0
  677. /package/{esm → dist/esm}/lua/weavedb_mock.lua +0 -0
  678. /package/{esm → dist/esm}/lua/weavedrive.lua +0 -0
  679. /package/{esm → dist/esm}/package.json +0 -0
  680. /package/{esm → dist/esm}/run.js +0 -0
  681. /package/{esm → dist/esm}/server.js +0 -0
  682. /package/{esm → dist/esm}/storage-multi.js +0 -0
  683. /package/{esm → dist/esm}/tao.js +0 -0
  684. /package/{esm → dist/esm}/tar.js +0 -0
  685. /package/{esm → dist/esm}/test.js +0 -0
  686. /package/{esm → dist/esm}/tgql-d1.js +0 -0
  687. /package/{esm → dist/esm}/tgql.js +0 -0
  688. /package/{esm → dist/esm}/toerl.js +0 -0
  689. /package/{esm → dist/esm}/utils.js +0 -0
  690. /package/{esm → dist/esm}/wao.js +0 -0
  691. /package/{esm → dist/esm}/waosm/README.md +0 -0
  692. /package/{esm → dist/esm}/waosm/waosm.d.ts +0 -0
  693. /package/{esm → dist/esm}/waosm/waosm.js +0 -0
  694. /package/{esm → dist/esm}/waosm/waosm_bg.wasm +0 -0
  695. /package/{esm → dist/esm}/waosm/waosm_bg.wasm.d.ts +0 -0
  696. /package/{esm → dist/esm}/waosm-node/README.md +0 -0
  697. /package/{esm → dist/esm}/waosm-node/waosm.d.ts +0 -0
  698. /package/{esm → dist/esm}/waosm-node/waosm.js +0 -0
  699. /package/{esm → dist/esm}/waosm-node/waosm_bg.js +0 -0
  700. /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm +0 -0
  701. /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm.d.ts +0 -0
  702. /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm.js +0 -0
  703. /package/{esm → dist/esm}/waosm-node.js +0 -0
  704. /package/{esm → dist/esm}/war.js +0 -0
  705. /package/{esm → dist/esm}/weavedrive.js +0 -0
  706. /package/{esm → dist/esm}/web.js +0 -0
  707. /package/{esm → dist/esm}/workspace/.mcp.json +0 -0
  708. /package/{esm → dist/esm}/workspace/CLAUDE.md +0 -0
  709. /package/{esm → dist/esm}/workspace/README.md +0 -0
  710. /package/{esm → dist/esm}/workspace/dashboard/index.html +0 -0
  711. /package/{esm → dist/esm}/workspace/dashboard/package.json +0 -0
  712. /package/{esm/workspace/dashboard/public/favicon.png → dist/esm/workspace/dashboard/public/favicon.ico} +0 -0
  713. /package/{esm → dist/esm}/workspace/dashboard/server.js +0 -0
  714. /package/{esm → dist/esm}/workspace/dashboard/src/App.jsx +0 -0
  715. /package/{cjs/workspace/frontend → dist/esm/workspace/dashboard}/src/main.jsx +0 -0
  716. /package/{esm → dist/esm}/workspace/dashboard/vite.config.js +0 -0
  717. /package/{esm → dist/esm}/workspace/package.json +0 -0
  718. /package/{postinstall.cjs → dist/postinstall.cjs} +0 -0
  719. /package/{esm → src}/workspace/dashboard/src/main.jsx +0 -0
@@ -0,0 +1,166 @@
1
+ import { Hono } from "hono"
2
+ import { cors } from "hono/cors"
3
+ import Adaptor from "../../src/adaptor-cf.js"
4
+ import { connect } from "../../src/aoconnect-cf.js"
5
+
6
+ // CU-only routes
7
+ const routes = {
8
+ cu: {
9
+ get: ["/", "/result/:mid", "/state/:pid", "/results/:pid", "/dry-run"],
10
+ post: ["/result/:mid", "/dry-run", "/evaluate"],
11
+ },
12
+ }
13
+
14
+ const app = new Hono()
15
+ app.use("*", cors())
16
+
17
+ // Forward all /cu requests to the CuDO singleton
18
+ for (const [device, methods] of Object.entries(routes)) {
19
+ for (const [method, paths] of Object.entries(methods)) {
20
+ for (const path of paths) {
21
+ const honoPath = `/${device}${path === "/" ? "" : path}`
22
+ const handler = async (c) => {
23
+ const id = c.env.CU.idFromName("singleton")
24
+ const stub = c.env.CU.get(id)
25
+ const url = new URL(c.req.url)
26
+ url.pathname = `/${device}${url.pathname.slice(`/${device}`.length)}`
27
+ return stub.fetch(new Request(url.toString(), c.req.raw))
28
+ }
29
+ app.on(method.toUpperCase(), honoPath, handler)
30
+ if (path === "/") {
31
+ app.on(method.toUpperCase(), `/${device}/`, handler)
32
+ }
33
+ }
34
+ }
35
+ }
36
+
37
+ app.get("/", (c) => c.json({ unit: "CU", status: "ok" }))
38
+
39
+ export default { fetch: app.fetch }
40
+
41
+ // --- CU Durable Object ---
42
+ const MAX_BODY_SIZE = 10 * 1024 * 1024
43
+
44
+ export class CuDO {
45
+ constructor(state, env) {
46
+ this.state = state
47
+ this.env = env
48
+ this.storage = state.storage
49
+ this.adaptor = null
50
+ this.app = null
51
+ }
52
+
53
+ async init() {
54
+ if (this.adaptor) return
55
+
56
+ const ar_url = this.env.AR_URL
57
+ if (!ar_url) {
58
+ throw new Error("AR_URL environment variable is required for standalone CU")
59
+ }
60
+
61
+ const aoconnect = null
62
+ const { mem } = connect(aoconnect, {
63
+ log: false,
64
+ storage: this.storage,
65
+ ar_url,
66
+ d1: this.env.DB || null,
67
+ r2: this.env.BUCKET || null,
68
+ kv: this.env.CACHE || null,
69
+ })
70
+
71
+ this.adaptor = new Adaptor({
72
+ aoconnect: mem,
73
+ log: false,
74
+ storage: this.storage,
75
+ d1: this.env.DB || null,
76
+ r2: this.env.BUCKET || null,
77
+ kv: this.env.CACHE || null,
78
+ })
79
+
80
+ // Build internal Hono router
81
+ const doApp = new Hono()
82
+ doApp.use("*", cors())
83
+
84
+ const self = this
85
+ for (const [device, methods] of Object.entries(routes)) {
86
+ for (const [method, paths] of Object.entries(methods)) {
87
+ for (const path of paths) {
88
+ const honoPath = `/${device}${path === "/" ? "" : path}`
89
+ const doHandler = async (c) => {
90
+ const req = {
91
+ path,
92
+ device,
93
+ body: await parseBody(c),
94
+ headers: Object.fromEntries(c.req.raw.headers.entries()),
95
+ method: c.req.method,
96
+ params: c.req.param(),
97
+ query: c.req.query(),
98
+ }
99
+ try {
100
+ let data
101
+ await self.adaptor.get(req, (d) => { data = d })
102
+ return toResponse(c, data)
103
+ } catch (e) {
104
+ console.error(`CU DO route error [${device}${path}]:`, e)
105
+ return c.json({ error: e.message || "internal error" }, 500)
106
+ }
107
+ }
108
+ doApp.on(method.toUpperCase(), honoPath, doHandler)
109
+ if (path === "/") {
110
+ doApp.on(method.toUpperCase(), `/${device}/`, doHandler)
111
+ }
112
+ }
113
+ }
114
+ }
115
+
116
+ this.app = doApp
117
+ }
118
+
119
+ async fetch(request) {
120
+ await this.init()
121
+ return this.app.fetch(request)
122
+ }
123
+ }
124
+
125
+ // --- Helpers ---
126
+ async function parseBody(c) {
127
+ const cl = parseInt(c.req.header("content-length") || "0", 10)
128
+ if (cl > MAX_BODY_SIZE) {
129
+ throw new Error(`Request body too large (${cl} bytes, max ${MAX_BODY_SIZE})`)
130
+ }
131
+ const ct = c.req.header("content-type") || ""
132
+ if (ct.includes("application/json")) {
133
+ try {
134
+ return await c.req.json()
135
+ } catch {
136
+ return {}
137
+ }
138
+ }
139
+ try {
140
+ const buf = await c.req.arrayBuffer()
141
+ if (buf.byteLength > MAX_BODY_SIZE) {
142
+ throw new Error(`Request body too large (${buf.byteLength} bytes)`)
143
+ }
144
+ return new Uint8Array(buf)
145
+ } catch (e) {
146
+ if (e.message?.includes("too large")) throw e
147
+ return null
148
+ }
149
+ }
150
+
151
+ function toResponse(c, data) {
152
+ if (!data) return c.json({ error: "no response" }, 500)
153
+ const status = data.status || 200
154
+ if (data.error) {
155
+ return c.json({ error: data.error }, status)
156
+ } else if (data.json) {
157
+ return c.json(data.json, status)
158
+ } else if (data.send !== undefined && data.send !== null) {
159
+ if (Buffer.isBuffer(data.send) || data.send instanceof Uint8Array) {
160
+ const headers = data.headers || {}
161
+ return new Response(data.send, { status, headers })
162
+ }
163
+ return c.text(String(data.send), status)
164
+ }
165
+ return c.text("", status)
166
+ }
@@ -0,0 +1,309 @@
1
+ import html from "../dist/index.html"
2
+ import { Hono } from "hono"
3
+ import { cors } from "hono/cors"
4
+ import Adaptor from "../../src/adaptor-cf.js"
5
+ import { connect } from "../../src/aoconnect-cf.js"
6
+ import { optAO } from "../../src/utils.js"
7
+
8
+ // --- Parse UNITS env var into a Set of enabled device names ---
9
+ function parseUnits(unitsStr) {
10
+ if (!unitsStr) return null // null = all units enabled
11
+ const units = new Set(unitsStr.split(",").map(u => u.trim().toLowerCase()))
12
+ if (units.has("ar")) units.add("bd") // BD always follows AR
13
+ return units
14
+ }
15
+
16
+ // --- Route definitions (mirrors server.js) ---
17
+ const routes = {
18
+ ar: {
19
+ get: [
20
+ "/",
21
+ "/wallet/:id/balance",
22
+ "/mint/:id/:amount",
23
+ "/tx/:id/offset",
24
+ "/tx_anchor",
25
+ "/mine",
26
+ "/:id",
27
+ "/price/:id",
28
+ ],
29
+ post: ["/graphql", "/:id"],
30
+ },
31
+ bd: {
32
+ post: ["/tx"],
33
+ },
34
+ mu: {
35
+ get: ["/"],
36
+ post: ["/", "/monitor/:pid"],
37
+ delete: ["/monitor/:pid"],
38
+ },
39
+ su: {
40
+ get: ["/", "/timestamp", "/:pid"],
41
+ },
42
+ cu: {
43
+ get: ["/", "/result/:mid", "/state/:pid", "/results/:pid", "/dry-run"],
44
+ post: ["/result/:mid", "/dry-run", "/evaluate"],
45
+ },
46
+ }
47
+
48
+ // --- Hono app (runs in Worker) ---
49
+ const app = new Hono()
50
+ app.use("*", cors())
51
+
52
+ // Register all routes, forwarding to the DevnetDO singleton
53
+ for (const [device, methods] of Object.entries(routes)) {
54
+ for (const [method, paths] of Object.entries(methods)) {
55
+ for (const path of paths) {
56
+ const honoPath = `/${device}${path === "/" ? "" : path}`
57
+ const handler = async (c) => {
58
+ const id = c.env.DEVNET.idFromName("singleton")
59
+ const stub = c.env.DEVNET.get(id)
60
+ const url = new URL(c.req.url)
61
+ url.pathname = `/${device}${url.pathname.slice(`/${device}`.length)}`
62
+ return stub.fetch(new Request(url.toString(), c.req.raw))
63
+ }
64
+ app.on(method.toUpperCase(), honoPath, handler)
65
+ // Also register with trailing slash so aoconnect clients work
66
+ if (path === "/") {
67
+ app.on(method.toUpperCase(), `/${device}/`, handler)
68
+ }
69
+ }
70
+ }
71
+ }
72
+
73
+ // WebSocket upgrade — forward to DO
74
+ app.get("/ws", async (c) => {
75
+ const upgradeHeader = c.req.header("Upgrade")
76
+ if (!upgradeHeader || upgradeHeader !== "websocket") {
77
+ return c.text("Expected Upgrade: websocket", 426)
78
+ }
79
+ const id = c.env.DEVNET.idFromName("singleton")
80
+ const stub = c.env.DEVNET.get(id)
81
+ return stub.fetch(c.req.raw)
82
+ })
83
+
84
+ // Root health check
85
+ app.get("/", (c) => c.html(html))
86
+
87
+ export default { fetch: app.fetch }
88
+
89
+ // --- Durable Object ---
90
+ const MAX_WS_CONNECTIONS = 1000
91
+ const MAX_BODY_SIZE = 10 * 1024 * 1024 // 10 MB
92
+
93
+ export class DevnetDO {
94
+ constructor(state, env) {
95
+ this.state = state
96
+ this.env = env
97
+ this.storage = state.storage
98
+ this.adaptor = null
99
+ this.app = null
100
+ this.sockets = new Set()
101
+ }
102
+
103
+ broadcast(msg) {
104
+ const data = JSON.stringify(msg)
105
+ const dead = []
106
+ for (const ws of this.sockets) {
107
+ try {
108
+ if (ws.readyState === 1) ws.send(data)
109
+ else dead.push(ws)
110
+ } catch { dead.push(ws) }
111
+ }
112
+ for (const ws of dead) this.sockets.delete(ws)
113
+ }
114
+
115
+ _evictOldestSocket() {
116
+ // Set iteration order is insertion order — first is oldest
117
+ const oldest = this.sockets.values().next().value
118
+ if (oldest) {
119
+ try { oldest.close(1008, "connection limit reached") } catch {}
120
+ this.sockets.delete(oldest)
121
+ }
122
+ }
123
+
124
+ async init(requestUrl) {
125
+ if (this.adaptor) return
126
+
127
+ if (this.env.WAO_WALLETS && !globalThis.__WAO_WALLETS__) {
128
+ try {
129
+ globalThis.__WAO_WALLETS__ = JSON.parse(this.env.WAO_WALLETS)
130
+ } catch {}
131
+ }
132
+
133
+ // Auto-apply D1 schema if available
134
+ if (this.env.DB) {
135
+ try {
136
+ await this.env.DB.exec(`
137
+ CREATE TABLE IF NOT EXISTS blocks (
138
+ id TEXT PRIMARY KEY, height INTEGER NOT NULL UNIQUE,
139
+ timestamp INTEGER NOT NULL, previous TEXT NOT NULL DEFAULT ''
140
+ );
141
+ CREATE INDEX IF NOT EXISTS idx_blocks_height ON blocks(height);
142
+ CREATE TABLE IF NOT EXISTS txs (
143
+ id TEXT PRIMARY KEY, block_id TEXT NOT NULL, block_height INTEGER NOT NULL,
144
+ owner TEXT NOT NULL DEFAULT '', recipient TEXT NOT NULL DEFAULT '',
145
+ anchor TEXT NOT NULL DEFAULT '', signature TEXT,
146
+ data_size TEXT NOT NULL DEFAULT '0', data_type TEXT NOT NULL DEFAULT '',
147
+ bundle_id TEXT, parent_id TEXT
148
+ );
149
+ CREATE INDEX IF NOT EXISTS idx_txs_owner ON txs(owner);
150
+ CREATE INDEX IF NOT EXISTS idx_txs_recipient ON txs(recipient);
151
+ CREATE INDEX IF NOT EXISTS idx_txs_block_height ON txs(block_height);
152
+ CREATE TABLE IF NOT EXISTS tx_tags (
153
+ tx_id TEXT NOT NULL, name TEXT NOT NULL, value TEXT NOT NULL
154
+ );
155
+ CREATE INDEX IF NOT EXISTS idx_tx_tags_name_value ON tx_tags(name, value);
156
+ CREATE INDEX IF NOT EXISTS idx_tx_tags_tx_id ON tx_tags(tx_id);
157
+ CREATE TABLE IF NOT EXISTS addrmap (address TEXT PRIMARY KEY, key TEXT NOT NULL DEFAULT '');
158
+ CREATE TABLE IF NOT EXISTS modules (name TEXT PRIMARY KEY, wasm_id TEXT NOT NULL);
159
+ CREATE TABLE IF NOT EXISTS wasms (
160
+ id TEXT PRIMARY KEY, format TEXT NOT NULL DEFAULT 'wasm64-unknown-emscripten-draft_2024_02_15',
161
+ file TEXT, variant TEXT
162
+ );
163
+ `)
164
+ } catch {}
165
+ }
166
+
167
+ // Determine enabled units from env
168
+ this._enabledUnits = parseUnits(this.env.UNITS)
169
+
170
+ // Derive SU_URL from env or first request so Scheduler-Location tx is seeded
171
+ const baseUrl = requestUrl ? new URL(requestUrl).origin : "http://localhost:8787"
172
+ const variant = this.env.NETWORK || "ao.DN.1"
173
+ const aoconnect = { SU_URL: this.env.SU_URL || `${baseUrl}/su` }
174
+ const { mem } = connect(aoconnect, {
175
+ log: false,
176
+ variant,
177
+ storage: this.storage,
178
+ d1: this.env.DB || null,
179
+ r2: this.env.BUCKET || null,
180
+ kv: this.env.CACHE || null,
181
+ })
182
+
183
+ this.adaptor = new Adaptor({
184
+ aoconnect: mem,
185
+ log: false,
186
+ storage: this.storage,
187
+ d1: this.env.DB || null,
188
+ r2: this.env.BUCKET || null,
189
+ kv: this.env.CACHE || null,
190
+ network: this.env.NETWORK || "ao.DN.1",
191
+ })
192
+
193
+ // Build internal Hono router for the DO
194
+ const doApp = new Hono()
195
+ doApp.use("*", cors())
196
+
197
+ const self = this
198
+ const enabled = this._enabledUnits
199
+ for (const [device, methods] of Object.entries(routes)) {
200
+ if (enabled && !enabled.has(device)) continue
201
+ for (const [method, paths] of Object.entries(methods)) {
202
+ for (const path of paths) {
203
+ const honoPath = `/${device}${path === "/" ? "" : path}`
204
+ const doHandler = async (c) => {
205
+ const req = {
206
+ path,
207
+ device,
208
+ body: await parseBody(c),
209
+ headers: Object.fromEntries(c.req.raw.headers.entries()),
210
+ method: c.req.method,
211
+ params: c.req.param(),
212
+ query: c.req.query(),
213
+ }
214
+ try {
215
+ let data
216
+ await self.adaptor.get(req, (d) => { data = d })
217
+ const resp = toResponse(c, data)
218
+ // Broadcast on mutations (POST to ar, mu)
219
+ if (method === "post" && (device === "ar" || device === "mu")) {
220
+ const txId = data?.json?.id || data?.json?.data?.transactions?.edges?.[0]?.node?.id
221
+ if (txId && path !== "/graphql") {
222
+ self.broadcast({ type: "tx", id: txId, device, timestamp: Date.now() })
223
+ }
224
+ }
225
+ return resp
226
+ } catch (e) {
227
+ console.error(`DO route error [${device}${path}]:`, e)
228
+ return c.json({ error: e.message || "internal error" }, 500)
229
+ }
230
+ }
231
+ doApp.on(method.toUpperCase(), honoPath, doHandler)
232
+ if (path === "/") {
233
+ doApp.on(method.toUpperCase(), `/${device}/`, doHandler)
234
+ }
235
+ }
236
+ }
237
+ }
238
+
239
+ this.app = doApp
240
+ }
241
+
242
+ async fetch(request) {
243
+ await this.init(request.url)
244
+
245
+ // Handle WebSocket upgrade
246
+ const url = new URL(request.url)
247
+ if (url.pathname === "/ws" && request.headers.get("Upgrade") === "websocket") {
248
+ // Evict oldest connection if at capacity
249
+ while (this.sockets.size >= MAX_WS_CONNECTIONS) {
250
+ this._evictOldestSocket()
251
+ }
252
+ const pair = new WebSocketPair()
253
+ const [client, server] = Object.values(pair)
254
+ server.accept()
255
+ this.sockets.add(server)
256
+ server.addEventListener("close", () => this.sockets.delete(server))
257
+ server.addEventListener("error", () => this.sockets.delete(server))
258
+ return new Response(null, { status: 101, webSocket: client })
259
+ }
260
+
261
+ return this.app.fetch(request)
262
+ }
263
+ }
264
+
265
+ // --- Helpers ---
266
+ async function parseBody(c) {
267
+ // Reject oversized bodies early
268
+ const cl = parseInt(c.req.header("content-length") || "0", 10)
269
+ if (cl > MAX_BODY_SIZE) {
270
+ throw new Error(`Request body too large (${cl} bytes, max ${MAX_BODY_SIZE})`)
271
+ }
272
+
273
+ const ct = c.req.header("content-type") || ""
274
+ if (ct.includes("application/json")) {
275
+ try {
276
+ return await c.req.json()
277
+ } catch {
278
+ return {}
279
+ }
280
+ }
281
+ // Raw body for MU / BD endpoints
282
+ try {
283
+ const buf = await c.req.arrayBuffer()
284
+ if (buf.byteLength > MAX_BODY_SIZE) {
285
+ throw new Error(`Request body too large (${buf.byteLength} bytes)`)
286
+ }
287
+ return new Uint8Array(buf)
288
+ } catch (e) {
289
+ if (e.message?.includes("too large")) throw e
290
+ return null
291
+ }
292
+ }
293
+
294
+ function toResponse(c, data) {
295
+ if (!data) return c.json({ error: "no response" }, 500)
296
+ const status = data.status || 200
297
+ if (data.error) {
298
+ return c.json({ error: data.error }, status)
299
+ } else if (data.json) {
300
+ return c.json(data.json, status)
301
+ } else if (data.send !== undefined && data.send !== null) {
302
+ if (Buffer.isBuffer(data.send) || data.send instanceof Uint8Array) {
303
+ const headers = data.headers || {}
304
+ return new Response(data.send, { status, headers })
305
+ }
306
+ return c.text(String(data.send), status)
307
+ }
308
+ return c.text("", status)
309
+ }
@@ -0,0 +1,17 @@
1
+ import { defineConfig } from "vite"
2
+ import { viteSingleFile } from "vite-plugin-singlefile"
3
+
4
+ export default defineConfig({
5
+ root: "app",
6
+ plugins: [viteSingleFile()],
7
+ build: { outDir: "../dist", emptyOutDir: true },
8
+ server: {
9
+ proxy: {
10
+ "/ar": "http://localhost:8787",
11
+ "/su": "http://localhost:8787",
12
+ "/cu": "http://localhost:8787",
13
+ "/mu": "http://localhost:8787",
14
+ "/bd": "http://localhost:8787",
15
+ },
16
+ },
17
+ })
@@ -0,0 +1,10 @@
1
+ import { defineConfig } from "vitest/config"
2
+ export default defineConfig({
3
+ test: {
4
+ testTimeout: 120_000,
5
+ hookTimeout: 120_000,
6
+ include: ["test/**/*.test.js"],
7
+ exclude: ["test/explorer.test.js"],
8
+ fileParallelism: false,
9
+ },
10
+ })
@@ -0,0 +1,32 @@
1
+ name = "wao-cu"
2
+ main = "src/cu-worker.js"
3
+ compatibility_date = "2024-12-01"
4
+ compatibility_flags = ["nodejs_compat"]
5
+
6
+ [vars]
7
+ UNITS = "CU"
8
+ AR_URL = "https://your-main-ar.workers.dev"
9
+
10
+ [[durable_objects.bindings]]
11
+ name = "CU"
12
+ class_name = "CuDO"
13
+
14
+ [[migrations]]
15
+ tag = "v1"
16
+ new_classes = ["CuDO"]
17
+
18
+ # Optional: D1 database for the satellite CU
19
+ # [[d1_databases]]
20
+ # binding = "DB"
21
+ # database_name = "wao-cu-db"
22
+ # database_id = ""
23
+
24
+ # Optional: R2 bucket for WASM / memory storage
25
+ # [[r2_buckets]]
26
+ # binding = "BUCKET"
27
+ # bucket_name = "wao-cu-blobs"
28
+
29
+ # Optional: KV for caching
30
+ # [[kv_namespaces]]
31
+ # binding = "CACHE"
32
+ # id = ""
@@ -0,0 +1,38 @@
1
+ name = "wao-devnet"
2
+ main = "src/index.js"
3
+ compatibility_date = "2024-12-01"
4
+ compatibility_flags = ["nodejs_compat"]
5
+
6
+ [build]
7
+ command = "npx vite build"
8
+ watch_dir = "app"
9
+
10
+ [[rules]]
11
+ type = "Text"
12
+ globs = ["**/*.html"]
13
+ fallthrough = true
14
+
15
+ [durable_objects]
16
+ bindings = [
17
+ { name = "DEVNET", class_name = "DevnetDO" }
18
+ ]
19
+
20
+ [[migrations]]
21
+ tag = "v1"
22
+ new_classes = ["DevnetDO"]
23
+
24
+ [vars]
25
+ UNITS = "AR,CU,MU,SU"
26
+
27
+ [[d1_databases]]
28
+ binding = "DB"
29
+ database_name = "wao-devnet-db"
30
+ database_id = "00000000-0000-0000-0000-000000000000"
31
+
32
+ [[r2_buckets]]
33
+ binding = "BUCKET"
34
+ bucket_name = "wao-devnet-blobs"
35
+
36
+ [[kv_namespaces]]
37
+ binding = "CACHE"
38
+ id = "00000000000000000000000000000000"
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "wao-workspace",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "scripts": {
6
+ "test": "node --test --test-concurrency=1",
7
+ "test-only": "node --test-only --test-concurrency=1",
8
+ "test-all": "node --test --test-concurrency=1 test/**/*.test.js",
9
+ "deploy": "node scripts/deploy.js"
10
+ },
11
+ "dependencies": {
12
+ "hbsig": "^0.3.0",
13
+ "wao": "^0.40.2"
14
+ }
15
+ }
@@ -0,0 +1,14 @@
1
+ local count = 0
2
+
3
+ Handlers.add("Inc", "Inc", function (msg)
4
+ count = count + 1
5
+ msg.reply({ Data = "Incremented!" })
6
+ end)
7
+
8
+ Handlers.add("Get", "Get", function (msg)
9
+ msg.reply({ Data = tostring(count) })
10
+ end)
11
+
12
+ Handlers.add("Hello", "Hello", function (msg)
13
+ msg.reply({ Data = "Hello, World!" })
14
+ end)
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "wao",
3
+ "version": "0.41.3",
4
+ "bin": {
5
+ "wao": "./cjs/cli.js",
6
+ "wao-esm": "./esm/cli.js"
7
+ },
8
+ "main": "cjs/index.js",
9
+ "module": "esm/index.js",
10
+ "types": "./types/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "require": "./cjs/index.js",
14
+ "import": "./esm/index.js"
15
+ },
16
+ "./utils": {
17
+ "require": "./cjs/utils.js",
18
+ "import": "./esm/utils.js"
19
+ },
20
+ "./test": {
21
+ "require": "./cjs/test.js",
22
+ "import": "./esm/test.js"
23
+ },
24
+ "./web": {
25
+ "require": "./cjs/web.js",
26
+ "import": "./esm/web.js"
27
+ },
28
+ "./cf": {
29
+ "require": "./cjs/cf.js",
30
+ "import": "./esm/cf.js"
31
+ },
32
+ "./signer": {
33
+ "require": "./cjs/signer.js",
34
+ "import": "./esm/signer.js"
35
+ }
36
+ },
37
+ "dependencies": {
38
+ "@ar.io/sdk": "^3.20.0",
39
+ "@ardrive/turbo-sdk": "^1.31.1",
40
+ "@bokuweb/zstd-wasm": "^0.0.22",
41
+ "@dha-team/arbundles": "^1.0.4",
42
+ "@permaweb/ao-loader": "^0.0.44",
43
+ "@permaweb/aoconnect": "^0.0.85",
44
+ "@permaweb/aoconnect-69": "npm:@permaweb/aoconnect@0.0.69",
45
+ "arbundles": "^0.11.1",
46
+ "arjson": "^0.0.2",
47
+ "arweave": "^1.15.1",
48
+ "base64url": "^3.0.1",
49
+ "body-parser": "^2.2.0",
50
+ "buffer": "^6.0.3",
51
+ "chokidar": "^4.0.3",
52
+ "cors": "^2.8.5",
53
+ "dotenv": "^17.2.0",
54
+ "express": "^5.1.0",
55
+ "fast-sha256": "^1.3.0",
56
+ "graphql": "^16.10.0",
57
+ "hbsig": "^0.3.0",
58
+ "http-message-signatures": "^1.0.4",
59
+ "lmdb": "^3.2.2",
60
+ "localforage": "^1.10.0",
61
+ "lz4-asm": "^0.4.2",
62
+ "md5": "^2.3.0",
63
+ "pm2": "^5.4.3",
64
+ "ramda": "^0.30.1",
65
+ "structured-headers": "1.0.1",
66
+ "warp-arbundles": "^1.0.4",
67
+ "wasm-brotli": "^2.0.2",
68
+ "yargs": "^17.7.2"
69
+ },
70
+ "devDependencies": {
71
+ "@babel/cli": "^7.24.8",
72
+ "@babel/core": "^7.25.2",
73
+ "@babel/plugin-transform-modules-commonjs": "^7.24.8",
74
+ "@babel/preset-env": "^7.25.3",
75
+ "patch-package": "^8.0.1",
76
+ "postinstall-postinstall": "^2.1.0"
77
+ },
78
+ "scripts": {
79
+ "server": "node cjs/run.js",
80
+ "postinstall": "node postinstall.cjs || true"
81
+ }
82
+ }