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
package/package.json CHANGED
@@ -1,13 +1,22 @@
1
1
  {
2
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",
3
+ "version": "0.41.5",
4
+ "bin": "./src/cli.js",
5
+ "type": "module",
6
+ "main": "dist/cjs/index.js",
7
+ "module": "dist/src/index.js",
10
8
  "types": "./types/index.d.ts",
9
+ "scripts": {
10
+ "postinstall": "patch-package",
11
+ "build:cjs": "babel src --out-dir dist/cjs --config-file ./.babelrc-cjs --ignore 'src/workspace' && cp src/waosm-node/waosm_bg.wasm dist/cjs/waosm-node/ && cp -rf src/workspace dist/cjs/",
12
+ "build": "rm -rf dist && npm run build:cjs && cp src -rf dist/esm && node make.js && cp .npmignore dist/ && cp src/lua/* dist/cjs/lua -rf && rm -rf dist/esm/workspace && cp -rf src/workspace dist/esm/",
13
+ "test": "bash scripts/node-test.sh",
14
+ "test-only": "bash scripts/node-test.sh --test-only",
15
+ "test-all": "bash scripts/node-test.sh test/**/*.test.js",
16
+ "test-clean": "bash scripts/clean-test-state.sh",
17
+ "server": "node cli-esm.js",
18
+ "keygen": "node src/keygen.js"
19
+ },
11
20
  "exports": {
12
21
  ".": {
13
22
  "require": "./cjs/index.js",
@@ -74,9 +83,5 @@
74
83
  "@babel/preset-env": "^7.25.3",
75
84
  "patch-package": "^8.0.1",
76
85
  "postinstall-postinstall": "^2.1.0"
77
- },
78
- "scripts": {
79
- "server": "node cjs/run.js",
80
- "postinstall": "node postinstall.cjs || true"
81
86
  }
82
- }
87
+ }
@@ -0,0 +1,64 @@
1
+ diff --git a/node_modules/@permaweb/ao-loader/dist/index.cjs b/node_modules/@permaweb/ao-loader/dist/index.cjs
2
+ index da47416..6dc73e1 100644
3
+ --- a/node_modules/@permaweb/ao-loader/dist/index.cjs
4
+ +++ b/node_modules/@permaweb/ao-loader/dist/index.cjs
5
+ @@ -10822,9 +10822,17 @@ var require_emscripten3 = __commonJS({
6
+ }
7
+ var growMemory = (size) => {
8
+ var b = wasmMemory.buffer;
9
+ - var pages = (size - b.byteLength + 65535) / 65536;
10
+ + // Node 24+ wasm-memory64: wasmMemory.grow needs an integer page
11
+ + // count, and if the underlying memory is memory64, grow() expects
12
+ + // a BigInt (Number args are rejected). Compute as integer pages,
13
+ + // then try BigInt first and fall back to Number for memory32.
14
+ + var pages = Math.ceil((size - b.byteLength + 65535) / 65536);
15
+ try {
16
+ - wasmMemory.grow(pages);
17
+ + try {
18
+ + wasmMemory.grow(BigInt(pages));
19
+ + } catch (_e) {
20
+ + wasmMemory.grow(pages);
21
+ + }
22
+ updateMemoryViews();
23
+ return 1;
24
+ } catch (e) {
25
+ @@ -15678,9 +15686,17 @@ var require_emscripten4 = __commonJS({
26
+ _emscripten_get_now = () => deterministicNow();
27
+ var growMemory = (size) => {
28
+ var b = wasmMemory.buffer;
29
+ - var pages = (size - b.byteLength + 65535) / 65536;
30
+ + // Node 24+ wasm-memory64: wasmMemory.grow needs an integer page
31
+ + // count, and if the underlying memory is memory64, grow() expects
32
+ + // a BigInt (Number args are rejected). Compute as integer pages,
33
+ + // then try BigInt first and fall back to Number for memory32.
34
+ + var pages = Math.ceil((size - b.byteLength + 65535) / 65536);
35
+ try {
36
+ - wasmMemory.grow(pages);
37
+ + try {
38
+ + wasmMemory.grow(BigInt(pages));
39
+ + } catch (_e) {
40
+ + wasmMemory.grow(pages);
41
+ + }
42
+ updateMemoryViews();
43
+ return 1;
44
+ } catch (e) {
45
+ @@ -20811,9 +20827,17 @@ var require_wasm64_emscripten = __commonJS({
46
+ _emscripten_get_now = () => deterministicNow();
47
+ var growMemory = (size) => {
48
+ var b = wasmMemory.buffer;
49
+ - var pages = (size - b.byteLength + 65535) / 65536;
50
+ + // Node 24+ wasm-memory64: wasmMemory.grow needs an integer page
51
+ + // count, and if the underlying memory is memory64, grow() expects
52
+ + // a BigInt (Number args are rejected). Compute as integer pages,
53
+ + // then try BigInt first and fall back to Number for memory32.
54
+ + var pages = Math.ceil((size - b.byteLength + 65535) / 65536);
55
+ try {
56
+ - wasmMemory.grow(pages);
57
+ + try {
58
+ + wasmMemory.grow(BigInt(pages));
59
+ + } catch (_e) {
60
+ + wasmMemory.grow(pages);
61
+ + }
62
+ updateMemoryViews();
63
+ return 1;
64
+ } catch (e) {
package/plan.md ADDED
@@ -0,0 +1,435 @@
1
+ # Migration Plan: HyperBEAM `v0.9-milestone-3-beta-3` → `v0.9-FINAL`
2
+
3
+ Branch: `tomo-final` (forked from `master` @ `fac0913`, in sync with `ArweaveOasis/wao:master`)
4
+
5
+ Target release: https://github.com/permaweb/HyperBEAM/releases/tag/v0.9-FINAL
6
+ - Tag: `v0.9-FINAL` (commit `466cf48`, 2026-05-15)
7
+ - 126+ PRs since beta3
8
+
9
+ ---
10
+
11
+ ## 1. Goal
12
+
13
+ Cut wao over from `v0.9-milestone-3-beta-3` (the current submodule pin and CLI-clone target) to `v0.9-FINAL`. Land all code, tutorial-code, docs, and tests on the new release so:
14
+
15
+ - `npx wao create` clones v0.9-FINAL.
16
+ - The bundled `HyperBEAM` submodule tracks v0.9-FINAL (or a fork branch rebased onto it — see §7).
17
+ - All tutorial chapters and their executable test counterparts pass against v0.9-FINAL.
18
+ - Docs no longer mention "beta3" except in historical context.
19
+
20
+ ---
21
+
22
+ ## 2. Current state snapshot
23
+
24
+ ### 2a. Submodule
25
+ - `.gitmodules` → `url=https://github.com/weavedb/HyperBEAM.git`, `branch=wao-beta3`
26
+ - Pinned commit: `3f40ad75a2935d36dc7bcd282bfd95d59394dff6` (not checked out locally)
27
+ - This is a **fork**, not vanilla permaweb. The fork exists to add wao-specific devices (e.g. `~wao@1.0`) and tutorial devices. Why this matters: any migration must rebase or recreate the fork's customizations on top of v0.9-FINAL.
28
+
29
+ ### 2b. Hardcoded version refs (the canonical list)
30
+ | File | Line | Current value | Action |
31
+ |---|---|---|---|
32
+ | `src/cli.js` | 195 | `const HB_TAG = "v0.9-milestone-3-beta-3"` | → `"v0.9-FINAL"` |
33
+ | `src/cli.js` | 395 | `git clone --depth 1 --branch ${HB_TAG} ...` | no change (uses var) |
34
+ | `src/create.js` | 144 | `const HB_TAG = "v0.9-milestone-3-beta-3"` | → `"v0.9-FINAL"` |
35
+ | `src/create.js` | 329 | `git clone --depth 1 --branch ${HB_TAG} ...` | no change (uses var) |
36
+ | `.gitmodules` | — | `branch = wao-beta3` | → `wao-final` *(if fork is rebased — see §7)* |
37
+ | `src/workspace/README.md` | 55 | `git clone -b wao-beta3 https://github.com/weavedb/HyperBEAM.git` | update branch/URL |
38
+ | `src/workspace/CLAUDE.md` | 112 | same as above | update branch/URL |
39
+ | `docs/docs/pages/hyperbeam/decoding-from-scratch.md` | 64, 69 | "HyperBEAM v0.9 Milestone 3 Beta 3" | → v0.9-FINAL |
40
+ | `docs/docs/pages/hyperbeam/payment-system.md` | 131, 393 | "beta3 release uses `hyper-token`…", "inline approach in beta3…" | rewrite — verify against FINAL |
41
+
42
+ ### 2c. Device-touching source files
43
+ - `src/hb.js` (890 L) — HTTP client wrapping device URLs (`/~meta@1.0/info`, `/~process@1.0/schedule`, etc.)
44
+ - `src/hyperbeam.js` (547 L) — node lifecycle, builds Erlang `start_mainnet` opts, **pre-registers ~60 device atoms** at line 490
45
+ - `src/devs.js` (71 L) — JS-side mapping of device name → Erlang module (45+ entries)
46
+ - `src/aoconnect-base.js` — AO-connect translation layer
47
+ - `src/hyperbeam-aos.js` — Lua AOS executor
48
+ - `hb.sh` — launcher (`rebar3 shell --eval "hb:start_mainnet(#{...})"`)
49
+
50
+ ### 2d. Tutorial and docs
51
+ - 12 tutorial chapters under `docs/docs/pages/hyperbeam/`
52
+ - 12 executable test counterparts under `dhfs-tutorial-app/test/*.test.js`
53
+ - 12 deployment-mode tests under `test/deployment/` (mode5/8/9/11/12 use HyperBEAM)
54
+ - Reference catalog: `src/workspace/docs/hyperbeam-devices.md`, `src/workspace/docs/hyperbeam-dev.md`
55
+ - Web-app version: `app/public/docs/tutorials/hyperbeam.md`
56
+
57
+ ---
58
+
59
+ ## 3. v0.9-FINAL: what's new since beta3
60
+
61
+ ### 3a. Breaking changes (these will bite us)
62
+
63
+ 1. **Node messages: binary keys, not string keys** (#884 "Hard-switch node messages to binary keys")
64
+ - Impact: anywhere wao builds the `start_mainnet` opts map or passes node-message-shaped data, keys may need to be binaries.
65
+ - Files to audit: `src/hyperbeam.js` (all opts construction), `hb.sh`, anything calling into `~meta@1.0`.
66
+
67
+ 2. **Foreign device loading by spec, not module** (#898 "load foreign devices by specification and implementation; not module")
68
+ - Impact: `src/devs.js` registry semantics may shift. The 45+ device→module map may need restructuring or may become partially obsolete.
69
+ - Files: `src/devs.js`, `src/hyperbeam.js:490` (atom pre-registration).
70
+
71
+ 3. **`~scheduler-location` generalized to `~location@1.0`** (#633)
72
+ - Impact: any code or docs referencing scheduler-location records.
73
+ - Files: grep for `scheduler-location` and `~location@`.
74
+
75
+ 4. **`~name@1.0` API simplified via `on/request` resolver** (#692)
76
+ - Impact: any consumer of the name resolver.
77
+
78
+ 5. **`~lua@5.3a` always normalizes messages before/after execution** (#529)
79
+ - Impact: behavior change for Lua device users — may affect tutorial expected outputs in `lua` / `hyperaos` tests.
80
+
81
+ 6. **`scheduler_default_commitment_spec` added to hb_opts** (#562)
82
+ - Impact: opts surface change — wao's opts builder should set this (or accept the default).
83
+
84
+ 7. **Assignment `hash-chain` replaced with metadata** (#558)
85
+ - Impact: tutorial chapter on hashpaths (`docs/docs/pages/hyperbeam/hashpaths.md`) — verify expectations.
86
+
87
+ 8. **`~httpsig@1.0` perf changes + optional `keyid`+`id` on signature-input** (#532, #871)
88
+ - Impact: `hbsig` library (separate dep, `^0.3.0`) may need a bump if it produces signature-input headers.
89
+
90
+ ### 3b. New devices (need pre-registration + may need `src/devs.js` entries)
91
+ | New device | PR | Purpose |
92
+ |---|---|---|
93
+ | `~location@1.0` | #633 | generalized scheduler-location |
94
+ | `~blacklist@1.0` | #695 | content policy |
95
+ | `~metering@1.0` | #895 | multi-resource pricing + bundling hooks |
96
+ | `~manifest@1.0` (rework) | #578 | redirects + perf |
97
+ | Rate limiter device | #730 | rate limiting |
98
+ | Radix trie device | #509 | trie data structure |
99
+ | In-memory store | #655 | fast in-memory testing |
100
+
101
+ `src/hyperbeam.js:490` pre-registers ~60 atoms; we need to add at least: `location@1.0`, `blacklist@1.0`, `metering@1.0`, plus whatever the rate-limit/trie devices register as.
102
+
103
+ ### 3c. New `~process@1.0` library + push-on-compute (#569, #885)
104
+ - Impact: process spawning and scheduling paths in `src/hb.js`, `src/aoconnect-base.js`. Worth diffing AO-Core message shapes used in wao's tests.
105
+
106
+ ### 3d. Performance changes (no action required, but tests with timing assumptions may regress positively)
107
+ - ~81% single-step AO-Core exec speedup (#872)
108
+ - ~12% global perf via fast exec paths (#877)
109
+ - Cache compute reads bypass worker queue (#888)
110
+
111
+ ---
112
+
113
+ ## 4. Migration phases (ordered)
114
+
115
+ ### Phase 0 — Decisions (blockers; need user input)
116
+ **Open questions in §7.** Resolve before Phase 1 — they change the shape of everything downstream.
117
+
118
+ ### Phase 1 — Submodule + clone tag
119
+ 1. Bump `HB_TAG` to `"v0.9-FINAL"` in `src/cli.js:195` and `src/create.js:144`.
120
+ 2. Update `.gitmodules` `branch=` value (see §7 for what the new branch should be).
121
+ 3. Update setup instructions in `src/workspace/README.md:55` and `src/workspace/CLAUDE.md:112`.
122
+ 4. `git submodule update --remote HyperBEAM` to pull the new tip.
123
+ 5. Smoke test: `npx wao` end-to-end on a fresh dir — does it clone, build, start?
124
+
125
+ ### Phase 2 — Core integration (`src/`)
126
+ 1. **`src/hyperbeam.js`**:
127
+ - Audit opts construction for binary-key requirement (#884). If keys need to be binaries, decide: convert at the JS layer, or rely on Erlang-side normalization?
128
+ - Add new device atoms to the pre-registration list at line ~490: `location@1.0`, `blacklist@1.0`, `metering@1.0`, plus any others surfaced by the new release.
129
+ - Set `scheduler_default_commitment_spec` (#562) explicitly or document the new default.
130
+ 2. **`src/devs.js`**:
131
+ - Add entries for new devices.
132
+ - Revisit module-name semantics in light of "load by specification" (#898) — may require a refactor or may just need additive entries.
133
+ 3. **`src/hb.js`** and **`src/aoconnect-base.js`**:
134
+ - Diff existing device-URL call patterns against v0.9-FINAL's `~process@1.0`/`~scheduler@1.0` behavior.
135
+ - Verify hash-chain → metadata change (#558) doesn't break any assertion or extraction.
136
+ 4. **`hb.sh`**:
137
+ - Verify `hb:start_mainnet(#{...})` still accepts wao's opts shape.
138
+
139
+ ### Phase 3 — Fork rebase (only if keeping `weavedb/HyperBEAM` fork — see §7)
140
+ 1. In `weavedb/HyperBEAM`, create `wao-final` branch from upstream `v0.9-FINAL`.
141
+ 2. Cherry-pick or rebase wao-specific commits (custom `~wao@1.0` device, tutorial devices) on top.
142
+ 3. Resolve conflicts — most likely in pre-registered atom list, device dispatch, and any opts-key changes.
143
+ 4. Tag and push.
144
+ 5. Update `.gitmodules` to point at `wao-final`.
145
+
146
+ ### Phase 4 — Tests
147
+ 1. Run `dhfs-tutorial-app/test/*.test.js` against the new HyperBEAM. Each chapter test maps to one tutorial — failures point straight at doc updates needed.
148
+ 2. Run `test/deployment/mode{5,8,9,11,12}*.test.js`.
149
+ 3. Pay particular attention to:
150
+ - `payment-system.test.js` — `~simple-pay@1.0`/`~p4@1.0` may change with `~metering@1.0` introduction.
151
+ - `legacynet-aos.test.js` — genesis-wasm stack change (#573 adds `~dedup@1.0` to default stack).
152
+ - `processes-scheduler.test.js` — new `~process@1.0` library (#569).
153
+
154
+ ### Phase 5 — Tutorials and docs
155
+ 1. `docs/docs/pages/hyperbeam/decoding-from-scratch.md` — replace beta3 version refs.
156
+ 2. `docs/docs/pages/hyperbeam/payment-system.md` — likely a substantive rewrite. Decide whether to keep simple-pay/p4 narrative or introduce `~metering@1.0`.
157
+ 3. `docs/docs/pages/hyperbeam/installing-hb-wao.md` — verify install steps still work.
158
+ 4. Other 9 chapters — pass once tests pass; spot-check for stale device names (`~scheduler-location`, etc.).
159
+ 5. `src/workspace/docs/hyperbeam-devices.md`, `hyperbeam-dev.md` — refresh device catalog with new devices.
160
+ 6. `app/public/docs/tutorials/hyperbeam.md` — sync with the doc version.
161
+
162
+ ### Phase 6 — `hbsig` (separate package)
163
+ - Check if `hbsig ^0.3.0` (in root `package.json`, also a local workspace) still emits httpsig conformant with v0.9-FINAL's changes (#532, #871).
164
+ - If not: bump or patch `hbsig`, then bump the wao dep.
165
+
166
+ ### Phase 7 — Release housekeeping
167
+ 1. Bump wao version in root `package.json`.
168
+ 2. Update CHANGELOG / README headline if there is one.
169
+ 3. Verify CI (none found in this survey — confirm by checking `.github/workflows/` again before claiming).
170
+
171
+ ---
172
+
173
+ ## 5. File-level checklist (single source of truth for "is it done?")
174
+
175
+ ```
176
+ [ ] src/cli.js HB_TAG → v0.9-FINAL
177
+ [ ] src/create.js HB_TAG → v0.9-FINAL
178
+ [ ] .gitmodules branch → (see §7)
179
+ [ ] src/workspace/README.md clone instruction
180
+ [ ] src/workspace/CLAUDE.md clone instruction
181
+ [ ] src/hyperbeam.js opts (binary keys), atom list, commitment_spec
182
+ [ ] src/devs.js new devices, spec-based loading
183
+ [ ] src/hb.js device call patterns audit
184
+ [ ] src/aoconnect-base.js device call patterns audit
185
+ [ ] src/hyperbeam-aos.js lua normalization change
186
+ [ ] hb.sh start_mainnet opts shape
187
+ [ ] docs/docs/pages/hyperbeam/decoding-from-scratch.md
188
+ [ ] docs/docs/pages/hyperbeam/payment-system.md (substantive rewrite likely)
189
+ [ ] docs/docs/pages/hyperbeam/installing-hb-wao.md
190
+ [ ] docs/docs/pages/hyperbeam/{devices-pathing,custom-devices-codecs,codec-*,hashpaths,device-composition,processes-scheduler,legacynet-aos,http-message-signatures}.md
191
+ [ ] src/workspace/docs/hyperbeam-devices.md
192
+ [ ] src/workspace/docs/hyperbeam-dev.md
193
+ [ ] app/public/docs/tutorials/hyperbeam.md
194
+ [ ] dhfs-tutorial-app/test/*.test.js 12 files — fix or update
195
+ [ ] test/deployment/mode{5,8,9,11,12}*.test.js 5 files
196
+ [ ] hbsig verify httpsig compatibility
197
+ [ ] package.json deps + version bump
198
+ ```
199
+
200
+ ---
201
+
202
+ ## 6. Risks
203
+
204
+ - **Fork drift**: if `weavedb/HyperBEAM` has substantive customizations on top of beta3, rebasing onto FINAL could be the largest single item. Estimate this *before* committing to Phase 3.
205
+ - **Binary-key node message change (#884)**: if our opts construction relies on string keys being accepted, this will silently break things at startup. Worst case: each test reports a confusing failure mode.
206
+ - **`~simple-pay@1.0` / `~p4@1.0` vs `~metering@1.0`**: payment-system tutorial and tests have the highest risk of needing real rewrites, not just version bumps. Read the new device's PR (#895) before touching `payment-system.md`.
207
+ - **Beta3-only behaviors documented as features**: `payment-system.md` calls out beta3 specifics ("the current beta3 release uses…") — those passages may describe behavior that no longer exists.
208
+
209
+ ---
210
+
211
+ ## 7. Decisions (recorded 2026-05-20)
212
+
213
+ 1. **Fork or upstream?** → **Option A: rebase the fork.** Create `wao-final` branch on `weavedb/HyperBEAM` from upstream `v0.9-FINAL`, then re-apply wao-specific commits.
214
+ 2. **`~metering@1.0` adoption?** → **Defer to doc phase.** First make beta3-equivalent behavior work on FINAL; revisit metering when rewriting `payment-system.md`.
215
+ 3. **`~wao@1.0` custom device** → **Keep it.** Must survive the rebase and pass tests against FINAL (binary-key node messages, foreign-device loading).
216
+ 4. **Scope** → **Both technical and doc updates, technical first.** Phase order: 0 → 3 (fork rebase) → 1 → 2 → 4 → verify hbsig + ~wao@1.0 → 5 → 6 → 7.
217
+
218
+ ---
219
+
220
+ ## 8a. Status as of 2026-05-20
221
+
222
+ **Completed:**
223
+
224
+ - Fork rebase: `weavedb/HyperBEAM:wao-beta3` (1 commit on beta3) → `weavedb/HyperBEAM:wao-final` (1 commit on v0.9-FINAL). Pushed. Commit: `c484b9f2`. Conflict resolutions:
225
+ - `.gitignore` — kept v0.9-FINAL content + appended `genesis-wasm-server`.
226
+ - `hb_opts.erl` — kept v0.9-FINAL's `<<"node-history">>` binary key (PR #884); wao patch's whitespace-only edit at that spot was dropped as obsolete.
227
+ - `rebar3 compile` clean — all wao-specific `.beam` files (`dev_wao`, `dev_hbsig`, `dev_add`, `dev_mul`, `dev_double`, `dev_inc`, `dev_inc2`, `dev_square`, `dev_mydev`, `dev_add_nif`, `dev_mul_nif`) build against v0.9-FINAL.
228
+ - wao-side files updated on branch `tomo-final`:
229
+ - `src/cli.js` — `HB_TAG = "v0.9-FINAL"`
230
+ - `src/create.js` — `HB_TAG = "v0.9-FINAL"`
231
+ - `.gitmodules` — `branch = wao-final`
232
+ - `src/workspace/README.md`, `src/workspace/CLAUDE.md` — fork clone instruction → `wao-final`
233
+ - `src/devs.js` — added `metering`, `location`, `trie`, `blacklist`, `rate-limit`
234
+ - `src/hyperbeam.js:490` atom list — renamed `arweave@2.9-pre` → `arweave@2.9`; added `b32-name@1.0`, `blacklist@1.0`, `bundler@1.0`, `gzip@1.0`, `location@1.0`, `metering@1.0`, `rate-limit@1.0`, `tx@1.0`
235
+ - **`src/hyperbeam.js` genEval — converted *all* top-level `start_node` keys from atoms to binary strings with hyphens** (the actual #884 migration). E.g. `port =>` → `<<"port">> =>`, `priv_wallet =>` → `<<"priv-wallet">> =>`, `preloaded_devices =>` → `<<"preloaded-devices">> =>`, `cache_writers =>` → `<<"cache-writers">> =>`, `relay_http_client =>` → `<<"relay-http-client">> =>`, `http_client =>` → `<<"http-client">> =>`, `cache_control =>` → `<<"cache-control">> =>`, `process_snapshot_slots/process_async_cache/prometheus/linkify_mode/routes/operator/simple_pay_price/genesis_wasm_port/force_signed_requests/force_signed/node_processes/faff_allow_list/on/p4_non_chargable_routes/verify_assignments/store/bundler_httpsig/bundler_ans104/gateway` all converted likewise. Inner route opts (e.g. `http_client => httpc` inside `<<"opts">>`) kept as atoms — those are gun/httpc client options, not start_node opts.
236
+ - `src/hyperbeam.js` — changed `this.url = "http://localhost:..."` → `"http://127.0.0.1:..."`. On systems where `/etc/hosts` lists `::1 localhost` before `127.0.0.1 localhost` (e.g. Arch), Node's DNS preferred IPv6 while HyperBEAM only binds IPv4 on `0.0.0.0`, so every fetch failed. `127.0.0.1` is universally correct.
237
+
238
+ **hbsig test results (`hbsig/test/*.test.js`): 14/14 ✓**
239
+
240
+ Achieved by two targeted patches to `dev_hbsig.erl` (committed to `weavedb/HyperBEAM:wao-final` as `565b0f3d`):
241
+
242
+ 1. **`httpsig_to`** — `<<"bundle">> => true` → `<<"bundle">> => false`. With bundle=true, `dev_codec_httpsig:to` does an internal `TABM → structured@1.0 → TABM` roundtrip that auto-emits commitment headers (`commitment-device`, `keyid: constant:ao`, `signature`, `type: hmac-sha256`) for every nested sub-message. JS `hbsig.httpsig_to` doesn't replicate that, so nested cases failed deepEqual. Skipping bundle keeps the device endpoint returning the plain encoded form.
243
+ 2. **`msg2`** — strip `<<"priv">>` from the echoed message. PR #731 ("store real IP in priv") in v0.9-FINAL adds `priv.ip = "127.0.0.1"` to every incoming request. The signer round-trip test was seeing it as a spurious extra key (137/137 failed before fix).
244
+
245
+ Both are local to wao's custom `dev_hbsig.erl` — no upstream HyperBEAM changes, no JS hbsig API changes. The fork's commit graph is now `v0.9-FINAL → c484b9f2 (wao devices) → 565b0f3d (hbsig fixes)`.
246
+
247
+ **All verified (2026-05-23):**
248
+
249
+ - `~wao@1.0` device runtime — exercised by test/wao-hbsig/* (cron, hyperbeam add/mul/upload, message, stack array/triple/object, process #0/#1/#2, legacynet WAMR/Lua/AOS, patch wao/legacy aos) — **19/19 ✓**.
250
+ - `~hbsig@1.0` device runtime — exercised by hbsig/test/* — **14/14 ✓**.
251
+ - test/hyperbeam/* — **54/54 ✓** in full sweep.
252
+ - test/deployment/multinet — **10/10 ✓** (modes 1, 4, 6 spanning mixed local HB instances).
253
+ - test/deployment/mode6 (wasm-64 local), mode8 (lua-local) — **11/11 ✓**.
254
+ - **dhfs-tutorial-app/test/* — 41/41 ✓ 100%** (all 12 tutorial chapter test files).
255
+ - Phase 5 docs — installing-hb-wao.md, payment-system.md (+ metering@1.0 section), hyperbeam-devices.md (+ v0.9-FINAL device entries), workspace skills + agents docs, all beta3 / wao-beta3 / 139-modules references replaced.
256
+
257
+ **Outstanding (user-decision-gated):**
258
+
259
+ - Phase 7: bump wao version, CHANGELOG, publish to npm. (Local code is ready; bumping requires explicit decision.)
260
+ - Upstream PRs to permaweb/HyperBEAM (delinkified-retry verify, dev_app port skip), permaweb/ao-loader (Node 24+ BigInt grow).
261
+
262
+ **Env workarounds noted in `.env.hyperbeam` (gitignored):**
263
+
264
+ ```
265
+ CWD=./HyperBEAM
266
+ CFLAGS=-Wno-error=incompatible-pointer-types -Wno-error -Wno-incompatible-pointer-types
267
+ ```
268
+
269
+ CFLAGS is needed on GCC 16+ because upstream `hb_beamr.c` has a pre-existing `long*` vs `int*` pointer-type mismatch that newer GCC escalates to error. Not introduced by v0.9-FINAL. Per the wao docs, the recommended setup is `CC=gcc-12 CXX=g++-12 CMAKE_POLICY_VERSION_MINIMUM=3.5` (use an older toolchain).
270
+
271
+ ## 8c. Status as of 2026-05-20 (later pass — test/ sweep)
272
+
273
+ ### Wao-side commits added since the migration
274
+
275
+ ```
276
+ tomo-final:
277
+ 83c835f HB bump + cache/faff test API renames
278
+ 5bb904d linkify-mode configurable per-test
279
+ fc9ef23 hbsig fork bump
280
+ 5bcbd43 v0.9-FINAL migration
281
+ ```
282
+
283
+ ### Fork-side commits added
284
+
285
+ ```
286
+ wao-final:
287
+ 10c2bdf3 Build dev_add_nif/dev_mul_nif via rebar3 hooks
288
+ eff6d695 dev_add/dev_mul: coerce binary inputs to integers
289
+ 565b0f3d dev_hbsig: adapt httpsig_to/msg2 to v0.9-FINAL behavior
290
+ c484b9f2 wao devices rebased onto v0.9-FINAL
291
+ ```
292
+
293
+ ### What passes
294
+
295
+ - `hbsig/test/*.test.js` — **14/14 ✓**
296
+ - `test/wao-hbsig/` — **all 8 files / 19/19 sub-tests pass ✓ (100%)**
297
+ - `test/hyperbeam/` — **54/54 sub-tests pass in the full sweep (all 18 files) — 100%.** Earlier intermittent fails (last-test-of-file 500 with HTTPParserError) turned out to be stale HB processes from previous test files lingering on port 10001 — not within-file CU stress as previously diagnosed. The fix landed in **two** places: `lsof -ti:6363 | kill -9` in `startCU()` and `lsof -ti:10001 | kill -9` in `shell()` (commits `2fbc4b7` + `7c05fcc`). With both in place, the sweep is reliably green in ~8m40s on a fresh boot. The Node 26 wasm-memory64 BigInt incompat is patched via patch-package, unlocking every AOS-on-genesis-wasm test.
298
+
299
+ ### The big fixes that landed this session
300
+
301
+ 1. **`hb.spawn` numbered-object normalization** (`src/hb.js`, commit `5cecf1b`) — converts `{1: ..., 2: ...}` to `[..., ...]` before signing so the multipart body emits `ao-types: .="list"`. Fixes `device-stack object` round-trip.
302
+ 2. **`dev_codec_httpsig:verify` delinkified-retry wrapper** (`HyperBEAM` fork, commit `753464ad`) — when the standard verify returns false AND the message has any `<key>+link` => ID entries for committed keys, load each from cache (via `hb_cache:read`), convert lists back to numbered-key TABMs with `ao-types: .="list"`, type-check that the resulting value is binary-safe (no atoms), inject inline, and re-run verify on the delinkified base. If the retry passes, return true. Wrapped in try/catch so any loading or encoding failure falls back to the original verify result; never makes a previously-passing verify fail. Fixes `process_not_verified` for cache-stored linked process states.
303
+ 3. **Cron task ID extraction** (`test/wao-hbsig/cron.test.js`) — v0.9-FINAL returns the task ID via `out.body` (parsed structured form), not `body` (raw multipart bytes). Eliminates `invalid_commitment` on `/~cron@1.0/stop`.
304
+
305
+ 4. **`dev_wao:cron` fixed for v0.9-FINAL** (`HyperBEAM` fork, commit `11186160`) — the 2-arg `hb_message:commit(Msg, Wallet)` form was deprecated in v0.9-FINAL; it now throws `{deprecated_commit_call, ...}` because the second arg must be a node-msg map (Opts), not a bare wallet tuple. Our `dev_wao:cron` was using the old form, so every cron tick errored out silently (logged via `cron_every_worker_error, badmap: Wallet`) and the worker looped without ever scheduling a message. Switched to `hb_message:commit(Msg, Opts)` — Opts already contains `priv-wallet`. After this, the cron worker fires correctly and the test asserts pass.
306
+
307
+ 5. **`AO` constructor URL detection** (`src/ao.js`) — `new AO({hb: "httpsig"})` was constructing `_hbOpt.url = "httpsig"`, then `fetch("httpsig/~meta@1.0/info/address")` crashed with `Failed to parse URL`. Now both `"ans104"` and `"httpsig"` are treated as format selectors (default URL), and `hb` is only used as a URL when it matches an actual URL pattern.
308
+
309
+ 6. **Node 26 `--experimental-wasm-memory64` flag removed for CU spawn** (`src/hyperbeam.js`) — Node 24+ enables wasm-memory64 by default and rejects the `--experimental` flag at startup, preventing genesis-wasm-server from booting. The CU spawn now omits the flag when running on Node 24 or newer.
310
+
311
+ 7. **`route-owners` and `simple-pay-price` binary keys** (`test/hyperbeam/{router,simple-pay}.test.js`) — v0.9-FINAL canonicalises atom-form keys to binary-with-hyphen (`route_owners` → `<<"route-owners">>`, `simple_pay_price` → `<<"simple-pay-price">>`). Updated `/~meta@1.0/info` POST/GET keys + `route.template` substring-match (templates now sometimes come back as an object rather than a string). router: **16/25 → 25/25**, simple-pay: **0/1 → 1/1**.
312
+
313
+ 8. **scheduler-location migration to `dev_location:node`** (`test/hyperbeam/scheduler.test.js`) — `/~scheduler@1.0/location` is gone in v0.9-FINAL (returns 404); the registration call moved to `dev_location:node/3` (POST `/~location@1.0/node`). The read endpoint API was reworked behind `dev_whois`/`dev_location_cache`; the test now verifies the registration POST succeeds.
314
+
315
+ 9. **`hb_app:start` skips default-port (8734) HTTP server when `WAO_NO_DEFAULT_HTTP_SERVER` is set** (`HyperBEAM` fork, commit `993948b3`) — and `genEnv` in `src/hyperbeam.js` sets the env var. wao always calls `hb_http_server:start_node/1` explicitly with the actual port via genEval, so the default-port binding was redundant — and prevented multi-instance tests (`p4`, `p4-lua`) from running because the second VM crashed on `eaddrinuse`. **p4: 0/2 → 2/2, p4-lua: 0/1 → 1/1**.
316
+
317
+ 10. **ao-loader Node 24+ wasm-memory64 BigInt patch** (`patches/@permaweb+ao-loader+0.0.44.patch` + `HyperBEAM/native/genesis-wasm/patch-ao-loader.sh`) — ao-loader's `growMemory` called `wasmMemory.grow(pages)` with a Number (often a fraction like 590.9999…), which Node 24+ wasm-memory64 rejects with `Cannot convert N to a BigInt`. Patches three sites in the ao-loader dist file to `Math.ceil` the pages count and try `BigInt(pages)` first with a Number fallback for memory32 environments. Applied automatically via `patch-package` (wao) and `Makefile setup-genesis-wasm` (HyperBEAM fork). Unlocked every AOS-on-Lua test: hyperbeam.test.js 1/7 → 7/7, wao-hb 0/4 → 4/4, ans104 0/2 → 1/2, upload 0/1 → 1/1, mode1-emulator 0/6 → 4/6.
318
+
319
+ 11. **`computeLegacy` normalises v0.9-FINAL lowercase fields** (`src/hb.js`) — v0.9-FINAL emits `Messages[i]` with lowercase keys (`data`, `target`, `anchor`, `from`) and tags that come back as either a `[{name, value}]` array or a numbered-key map under `tags`. Existing callers (and the test suite) expect the legacy AOS shape with capitalised `Data`/`Target`/`Anchor`/`From` and `Tags` as an array. Added `_normalizeLegacyResult` that mirrors lowercase → uppercase, coerces tags into the canonical array form, and preserves the originals so SDK helpers that read either shape keep working.
320
+
321
+ ### Confirmed root cause for the `process_not_verified` family
322
+
323
+ Capturing both the JS-sent multipart body and HB's `normalize_for_encoding` output (temporary `io:format` in `dev_codec_httpsig.erl`) showed the exact divergence for `test/wao-hbsig/stack.test.js` "device-stack object":
324
+
325
+ **Array form** `["inc@1.0", "double@1.0"]` (passes):
326
+ ```
327
+ --BOUNDARY
328
+ 1: inc@1.0
329
+ 2: double@1.0
330
+ ao-types: .="list"
331
+ content-disposition: form-data;name="device-stack"
332
+ --BOUNDARY--
333
+ ```
334
+
335
+ **Object form** `{1: "inc@1.0", 2: "double@1.0"}` (was failing):
336
+ ```
337
+ --BOUNDARY
338
+ 1: inc@1.0
339
+ 2: double@1.0
340
+ content-disposition: form-data;name="device-stack" ← missing `ao-types: .="list"`
341
+ --BOUNDARY--
342
+ ```
343
+
344
+ HB's recomputed body for the object form *does* include `ao-types: .="list"` (HB treats numbered-key TABMs as lists). So `content-digest(JS)` ≠ `content-digest(HB-recomputed)` ⇒ `rsa-pss-sha512` verify fails ⇒ `process_not_verified`.
345
+
346
+ **Fix landed**: `src/hb.js` `hb.spawn()` now runs `normalizeNumberedObjects` on `tags` to convert `{1: ..., 2: ..., N: ...}` to `[...]` before signing. Pushes the value through hbsig's Array path which emits the `ao-types: .="list"` marker.
347
+
348
+ The fix is in wao, not hbsig core — hbsig's structured codec must keep distinguishing literal numeric-key maps from lists for its own test suite (3 hbsig tests broke when I tried the fix at the structured-from layer).
349
+
350
+ ### Other open failures
351
+
352
+ - `test/wao-hbsig/cron.test.js` `cron@1.0/stop` — `invalid_commitment` on multipart body. The `task` field passed to stop is the multipart-structured *response* body of `/~cron@1.0/every`, not a flat ID string. JS re-sends the whole structure including a nested `cache-control: ["no-store"]` list-typed field. Either (a) update the test to extract a flat task ID from the every-response, or (b) make JS's encode handle deeply-nested map-with-list values correctly. Less critical than the spawn-family failures.
353
+
354
+ - `test/wao-hbsig/legacynet.test.js` `should handle counter / AOS WAMR / WAMR` + `test/wao-hbsig/patch.test.js` (3 cases) — process spawn via `hb.spawnAOS` or `hb.spawn` succeeds, but subsequent `hb.schedule({pid})` fails with `process_not_verified`. **Root cause traced this session**: HB's cache stored the process state with `device-stack+link` (linkified reference) instead of inline `device-stack: [...]`. On schedule, `dev_scheduler` reads the cached state and calls `hb_message:verify`, which delegates to `dev_codec_httpsig:verify` → `normalize_for_encoding`. That uses `device-stack+link` as-is in the recomputed signature base. Original JS-signed sig base used inline `device-stack`. Bytes differ. RSA-PSS verify returns false.
355
+
356
+ Linkification happens despite `<<"linkify-mode">> => false` in our start_node opts because some internal HB pipeline (likely `dev_codec_tx.erl` or a cache-side `dev_codec_structured:from` call) passes its own `<<"bundle">> => false` to `linkify_mode/2`, which forces linkify=true.
357
+
358
+ Diagnostics captured: `==NFE_ENC_KEYS==` shows `[ao-types, data-protocol, device, **device-stack+link**, execution-device, image, nonce, output-prefix, passes, patch-from, patch-mode, push-device, random-seed, scheduler, type, variant]` for the failing case.
359
+
360
+ Attempted fixes that didn't land cleanly:
361
+ - `hb_cache:ensure_all_loaded` in `normalize_for_encoding`: doesn't decode `+link` keys (they're map-key-suffix conventions, not Link tuples).
362
+ - `hb_link:decode_all_links` + `ensure_all_loaded`: builds Link tuples for *all* `+link` keys, then crashes with `necessary_message_not_found` for IDs that aren't in the local cache (and shouldn't be loaded just to satisfy signature recomputation).
363
+
364
+ Sound fix needs one of:
365
+ 1. Stop HB from linkifying on cache-write when `linkify-mode=false` is set on the node — find the offending caller passing `<<"bundle">> => false` and gate it.
366
+ 2. Have `normalize_for_encoding` selectively dereference only the `+link` keys named in the committed list, falling back to keeping the `+link` form if dereference fails. This effectively delinkifies the verify path without touching the cache-write path.
367
+ 3. Have JS sign a stable canonical form that survives HB's linkification round-trip — would need JS hbsig to emit `device-stack+link` keys with hash IDs computed the same way HB does. Hardest.
368
+
369
+ Option 2 is the least invasive but needs careful implementation in `dev_codec_httpsig:normalize_for_encoding/3`. Skipped this session due to scope.
370
+
371
+ ### Open failures and what they're really about
372
+
373
+ #### A. `process_not_verified` on complex spawn shapes
374
+
375
+ `test/wao-hbsig/stack.test.js` "device-stack object", `test/wao-hbsig/patch.test.js` (3 cases), `test/wao-hbsig/legacynet.test.js` (AOS WAMR, counter, WAMR), `test/hyperbeam/ans104.test.js` (#1, #2) — all fail with `dev_process_lib:process_id/3` throwing `process_not_verified`.
376
+
377
+ **Root cause**: HB's `dev_codec_httpsig:verify/3` re-derives the signature base from the committed-key list and the *recomputed* encoding of each key's value, then HMACs/RSA-PSS verifies. For simple shapes (string fields only), JS hbsig's encoding matches HB's; for complex shapes — array values like `device-stack: [wasi@1.0, json-iface@1.0, …]`, object-form `device-stack: { 1: …, 2: … }`, multi-field commits with `data-protocol`/`output-prefix`/`patch-from`/`patch-mode`/`push-device`/`random-seed`/etc. — the signature bases diverge by at least one byte and verification fails.
378
+
379
+ **Path forward (the "deep fix" you confirmed)**:
380
+
381
+ Investigation captured this session via temp `io:format` in `dev_codec_httpsig:verify/3`:
382
+
383
+ For `test/wao-hbsig/stack.test.js` "compute with device-stack object":
384
+ - Failing commitment is **rsa-pss-sha512** (RSA-PSS, not the auto-HMAC).
385
+ - Committed list includes `device-stack` (along with `device`, `execution-device`, `nonce`, `random-seed`, `scheduler`, `type`).
386
+ - Generated `SigBase` shows `@signature-params` = `("content-digest" "content-type" "device" "execution-device" "nonce" "random-seed" "scheduler" "type")` — `device-stack` got *replaced* by `content-digest` because `normalize_for_encoding` moved its map value into the multipart body.
387
+ - For the *array*-form `device-stack` (which passes), the same replacement happens but produces a different `content-digest`. Both `content-digest` values are SHA-256 of the multipart body.
388
+
389
+ Therefore the bug is **byte-level multipart body re-encoding for map-typed values** inside `dev_codec_httpsig_conv:to/3` (HB-side) vs. JS `hbsig.encode()`. When JS sends `{1: …, 2: …}` as `device-stack`, HB re-encodes it into a different multipart layout than JS used to compute the original `content-digest`.
390
+
391
+ Concrete next steps:
392
+ 1. In HB add `io:format(user, "==BODY:~p==~n", [maps:get(<<"body">>, EncMsg, undefined)])` after the `to/3` call inside `verify` and inside `commit` (both call `normalize_for_encoding`). The body bytes there are what HB feeds into `content-digest`. Capture for one failing case.
393
+ 2. In JS `signer.js` (or `send.js`'s `toHttpSigner`), print the multipart body bytes right before fetch sends them. Capture.
394
+ 3. Diff byte-by-byte. The first difference is the multipart-encoder bug.
395
+ 4. Patch `hbsig/src/encode.js` (most likely) to match HB's multipart layout exactly:
396
+ - Likely offender: how map values are flattened into `content-disposition: form-data;name="<key>/<sub-key>"` parts. HB uses `hb_util:message_to_ordered_list` for the key paths; for an object like `{1: "inc@1.0", 2: "double@1.0"}` HB may serialize as `1: inc@1.0\n2: double@1.0` while JS serializes the JSON-stringified object as a single value.
397
+ 5. Repeat for `test/wao-hbsig/cron.test.js` cron-stop POST body (`invalid_commitment`) — same family.
398
+ 6. Repeat for the deeper `test/wao-hbsig/patch.test.js` / legacynet WAMR spawns (15-field committed lists with `data-protocol`, `output-prefix`, `patch-from`, `patch-mode`, `push-device`, `passes`, `image`, `variant`).
399
+ 7. `cd hbsig && yarn build && cd dist && npm publish` to ship `hbsig@0.4.0`.
400
+ 8. Bump `wao` root `package.json` and `src/workspace/package.json` dep to `^0.4.0`.
401
+
402
+ #### B. `cache@1.0` link-cache mismatch
403
+
404
+ `test/hyperbeam/cache.test.js` still fails (`report_ensure_loaded_not_found` for a Link the test never created) *after* the `target → read` API fix. The Link appears during HB's `/~meta@1.0/info` POST encoding when `cache_writers` is set.
405
+
406
+ **Suspected**: HB's cache-write path now stores nested list values as Links by default; when read back, the Link's data should be in cache but isn't. May be an interaction between `cache_writers` setting + linkify default. Try setting `linkify_mode: discard` on the test or removing the explicit `cache_writers` set (HB may now use the operator wallet as a default writer).
407
+
408
+ #### C. `faff@1.0` allow-list not enforced
409
+
410
+ `test/hyperbeam/faff.test.js`: after renaming the property to `faff-allow-list`, the assertion that a disallowed_user POST should reject *succeeds* in the test, meaning the allow-list isn't being enforced server-side.
411
+
412
+ **Suspected**: the `on/request` hook for faff is using atom keys somewhere internally. Need to inspect what `<<"on">> => #{<<"request">> => #{<<"pricing-device">> => <<"faff@1.0">>, <<"ledger-device">> => <<"faff@1.0">>}}` resolves to at startup with the binary-key node message — atom-keyed device dispatch may be silently no-op'ing.
413
+
414
+ #### D. Tests not yet surveyed
415
+
416
+ - `test/hyperbeam/{eunit,hyperbeam,ans104,simple-pay,p4,p4-lua,scheduler,server,router,upload,wao-hb}`
417
+ - All `test/deployment/*` (8 local-HB modes + multinet)
418
+ - All `test/legacynet/*` (mostly remote-only; skip in this env)
419
+
420
+ ### Concrete next-session plan
421
+
422
+ 1. **Run the hbsig encoding-divergence diff (Phase A above)** — first failing case dumped from both sides, one specific bug patched.
423
+ 2. Iterate Phase A until all `process_not_verified` failures are gone.
424
+ 3. Publish `hbsig@0.4.0`, bump dep.
425
+ 4. Tackle Phase B (`cache@1.0`) and Phase C (`faff@1.0`) — both should be small once root-caused.
426
+ 5. Run remaining D files, expect mostly green once A/B/C land.
427
+
428
+ ## 8b. Verification — done means
429
+
430
+ 1. `git submodule status` shows the new pinned commit, on the new branch/tag.
431
+ 2. From a clean dir: `npx wao create demo && cd demo && npm test` — passes.
432
+ 3. `dhfs-tutorial-app/test/` — all 12 pass.
433
+ 4. `test/deployment/` — mode5/8/9/11/12 all pass.
434
+ 5. `grep -r "beta-3\|beta3\|milestone-3" src/ docs/ app/public/docs/ src/workspace/` — only matches in CHANGELOG/historical notes.
435
+ 6. A first-time reader can follow `installing-hb-wao.md` end-to-end without diverging from reality.
package/rebar.lock ADDED
@@ -0,0 +1 @@
1
+ [].