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.
- package/.babelrc-cjs +5 -0
- package/.babelrc-esm +5 -0
- package/.gitmodules +4 -0
- package/.prettierrc +6 -0
- package/README.md +90 -0
- package/app/.eslintrc.json +3 -0
- package/app/.mocharc.cjs +6 -0
- package/app/arweave.mjs +87 -0
- package/app/components/Footer.js +76 -0
- package/app/components/Global.js +1128 -0
- package/app/components/Header.js +306 -0
- package/app/components/Left.js +28 -0
- package/app/components/Logo.js +34 -0
- package/app/components/Middle.js +37 -0
- package/app/components/Sidebar.js +93 -0
- package/app/components/Tags.js +42 -0
- package/app/components/editor/Editor.js +322 -0
- package/app/components/editor/FilePath.js +42 -0
- package/app/components/editor/MonacoEditor.js +44 -0
- package/app/components/left/LeftMessages.js +85 -0
- package/app/components/left/LeftModules.js +86 -0
- package/app/components/left/LeftNetworks.js +438 -0
- package/app/components/left/LeftProcesses.js +98 -0
- package/app/components/left/LeftProjects.js +397 -0
- package/app/components/left/LeftTests.js +189 -0
- package/app/components/middle/MiddleBlocks.js +79 -0
- package/app/components/middle/MiddleEntity.js +16 -0
- package/app/components/middle/MiddleEntityAccount.js +264 -0
- package/app/components/middle/MiddleEntityAssignment.js +104 -0
- package/app/components/middle/MiddleEntityBlock.js +148 -0
- package/app/components/middle/MiddleEntityMessage.js +430 -0
- package/app/components/middle/MiddleEntityModule.js +183 -0
- package/app/components/middle/MiddleEntityProcess.js +323 -0
- package/app/components/middle/MiddleEntityTx.js +211 -0
- package/app/components/middle/MiddleMessages.js +87 -0
- package/app/components/middle/MiddleModules.js +89 -0
- package/app/components/middle/MiddleNetworks.js +516 -0
- package/app/components/middle/MiddleProcesses.js +87 -0
- package/app/components/middle/MiddleTests.js +134 -0
- package/app/components/modals/CreateFileModal.js +115 -0
- package/app/components/modals/CreateFolderModal.js +83 -0
- package/app/components/modals/CreateProjectModal.js +63 -0
- package/app/components/modals/FSModal.js +141 -0
- package/app/components/modals/ImportModal.js +105 -0
- package/app/components/modals/LaunchNetworkModal.js +95 -0
- package/app/components/modals/Modal.js +38 -0
- package/app/components/modals/ProxyModal.js +122 -0
- package/app/components/modals/RenameFileModal.js +95 -0
- package/app/components/styles/EditorScrollbarStyle.js +29 -0
- package/app/components/styles/EntityScrollbarStyle.js +29 -0
- package/app/components/styles/GlobalStyle.js +102 -0
- package/app/components/styles/XtermStyle.js +37 -0
- package/app/components/terminal/Terminal.js +132 -0
- package/app/components/terminal/Xterm.js +160 -0
- package/app/components/ui/avatar.jsx +49 -0
- package/app/components/ui/checkbox.jsx +17 -0
- package/app/components/ui/close-button.jsx +20 -0
- package/app/components/ui/color-mode.jsx +61 -0
- package/app/components/ui/dialog.jsx +54 -0
- package/app/components/ui/drawer.jsx +44 -0
- package/app/components/ui/field.jsx +22 -0
- package/app/components/ui/input-group.jsx +39 -0
- package/app/components/ui/popover.jsx +49 -0
- package/app/components/ui/provider.jsx +12 -0
- package/app/components/ui/radio.jsx +17 -0
- package/app/components/ui/slider.jsx +107 -0
- package/app/components/ui/toaster.jsx +69 -0
- package/app/components/ui/tooltip.jsx +35 -0
- package/app/index.js +10 -0
- package/app/jsconfig.json +7 -0
- package/app/lib/GithubCSS.js +1218 -0
- package/app/lib/addon-fit.js +72 -0
- package/app/lib/data.js +31 -0
- package/app/lib/github-markdown.css +1169 -0
- package/app/lib/global.js +1 -0
- package/app/lib/guide.js +82 -0
- package/app/lib/hub.js +109 -0
- package/app/lib/scripts.js +47 -0
- package/app/lib/store.js +34 -0
- package/app/lib/use.js +64 -0
- package/app/lib/utils.js +387 -0
- package/app/lib/webrtc.js +217 -0
- package/app/next.config.js +25 -0
- package/app/package.json +62 -0
- package/app/pages/404.js +9 -0
- package/app/pages/_app.js +10 -0
- package/app/pages/_document.js +14 -0
- package/app/pages/index.js +121 -0
- package/app/playwright.config.mjs +41 -0
- package/app/proxy.mjs +21 -0
- package/app/public/assets/cover.png +0 -0
- package/app/public/blueprints/apm.lua +91 -0
- package/app/public/blueprints/arena.lua +345 -0
- package/app/public/blueprints/arns.lua +318 -0
- package/app/public/blueprints/chat.lua +210 -0
- package/app/public/blueprints/chatroom.lua +56 -0
- package/app/public/blueprints/patch-legacy-reply.lua +13 -0
- package/app/public/blueprints/staking.lua +93 -0
- package/app/public/blueprints/token.lua +298 -0
- package/app/public/blueprints/voting.lua +45 -0
- package/app/public/favicon.ico +0 -0
- package/app/public/logo.png +0 -0
- package/cli-esm.js +55 -0
- package/cli.js +54 -0
- package/devnet/app/api.js +129 -0
- package/devnet/app/components/layout.js +89 -0
- package/devnet/app/components/pagination.js +144 -0
- package/devnet/app/components/search.js +159 -0
- package/devnet/app/components/table.js +124 -0
- package/devnet/app/components/tags.js +89 -0
- package/devnet/app/index.html +14 -0
- package/devnet/app/main.js +215 -0
- package/devnet/app/router.js +59 -0
- package/devnet/app/state.js +19 -0
- package/devnet/app/style.css +1606 -0
- package/devnet/app/utils.js +77 -0
- package/devnet/app/views/blocks.js +75 -0
- package/devnet/app/views/dashboard.js +127 -0
- package/devnet/app/views/entity.js +1473 -0
- package/devnet/app/views/messages.js +90 -0
- package/devnet/app/views/modules.js +165 -0
- package/devnet/app/views/processes.js +90 -0
- package/devnet/app/views/schedulers.js +90 -0
- package/devnet/app/views/transactions.js +88 -0
- package/devnet/migrations/0001_initial.sql +51 -0
- package/devnet/package.json +26 -0
- package/devnet/playwright.config.js +7 -0
- package/devnet/src/cu-worker.js +166 -0
- package/devnet/src/index.js +309 -0
- package/devnet/vite.config.js +17 -0
- package/devnet/vitest.config.js +10 -0
- package/devnet/wrangler-cu.toml +32 -0
- package/devnet/wrangler.toml +38 -0
- package/dhfs-tutorial-app/package.json +15 -0
- package/dist/esm/workspace/dashboard/public/favicon.png +0 -0
- package/dist/esm/workspace/src/counter.lua +14 -0
- package/dist/package.json +82 -0
- package/hb.sh +18 -0
- package/hbsig/.babelrc-cjs +5 -0
- package/hbsig/.babelrc-esm +5 -0
- package/hbsig/README.md +1 -0
- package/hbsig/dist/cjs/bin_to_str.js +44 -0
- package/hbsig/dist/cjs/collect-body-keys.js +470 -0
- package/hbsig/dist/cjs/commit.js +330 -0
- package/hbsig/dist/cjs/encode-array-item.js +110 -0
- package/hbsig/dist/cjs/encode-utils.js +242 -0
- package/hbsig/dist/cjs/encode.js +1365 -0
- package/hbsig/dist/cjs/erl_json.js +326 -0
- package/hbsig/dist/cjs/erl_str.js +1042 -0
- package/hbsig/dist/cjs/flat.js +279 -0
- package/hbsig/dist/cjs/http-message-signatures/httpbis.js +489 -0
- package/hbsig/dist/cjs/http-message-signatures/index.js +25 -0
- package/hbsig/dist/cjs/http-message-signatures/structured-header.js +129 -0
- package/hbsig/dist/cjs/httpsig.js +861 -0
- package/hbsig/dist/cjs/id.js +470 -0
- package/hbsig/dist/cjs/index.js +174 -0
- package/hbsig/dist/cjs/nocrypto.js +51 -0
- package/hbsig/dist/cjs/parser.js +201 -0
- package/hbsig/dist/cjs/send-utils.js +1231 -0
- package/hbsig/dist/cjs/send.js +211 -0
- package/hbsig/dist/cjs/signer-utils.js +494 -0
- package/hbsig/dist/cjs/signer.js +436 -0
- package/hbsig/dist/cjs/structured.js +515 -0
- package/hbsig/dist/cjs/test.js +12 -0
- package/hbsig/dist/cjs/utils.js +44 -0
- package/hbsig/dist/esm/bin_to_str.js +46 -0
- package/hbsig/dist/esm/collect-body-keys.js +436 -0
- package/hbsig/dist/esm/commit.js +219 -0
- package/hbsig/dist/esm/encode-array-item.js +112 -0
- package/hbsig/dist/esm/encode-utils.js +191 -0
- package/hbsig/dist/esm/encode.js +1256 -0
- package/hbsig/dist/esm/erl_json.js +292 -0
- package/hbsig/dist/esm/erl_str.js +1144 -0
- package/hbsig/dist/esm/flat.js +250 -0
- package/hbsig/dist/esm/http-message-signatures/httpbis.js +438 -0
- package/hbsig/dist/esm/http-message-signatures/index.js +4 -0
- package/hbsig/dist/esm/http-message-signatures/structured-header.js +105 -0
- package/hbsig/dist/esm/httpsig.js +866 -0
- package/hbsig/dist/esm/id.js +459 -0
- package/hbsig/dist/esm/index.js +13 -0
- package/hbsig/dist/esm/nocrypto.js +4 -0
- package/hbsig/dist/esm/package.json +3 -0
- package/hbsig/dist/esm/parser.js +171 -0
- package/hbsig/dist/esm/send-utils.js +1132 -0
- package/hbsig/dist/esm/send.js +142 -0
- package/hbsig/dist/esm/signer-utils.js +375 -0
- package/hbsig/dist/esm/signer.js +312 -0
- package/hbsig/dist/esm/structured.js +496 -0
- package/hbsig/dist/esm/test.js +2 -0
- package/hbsig/dist/esm/utils.js +29 -0
- package/hbsig/dist/package.json +39 -0
- package/hbsig/make.js +36 -0
- package/hbsig/package.json +39 -0
- package/hbsig/src/bin_to_str.js +46 -0
- package/hbsig/src/collect-body-keys.js +436 -0
- package/hbsig/src/commit.js +219 -0
- package/hbsig/src/encode-array-item.js +112 -0
- package/hbsig/src/encode-utils.js +191 -0
- package/hbsig/src/encode.js +1256 -0
- package/hbsig/src/erl_json.js +292 -0
- package/hbsig/src/erl_str.js +1144 -0
- package/hbsig/src/flat.js +250 -0
- package/hbsig/src/http-message-signatures/httpbis.js +438 -0
- package/hbsig/src/http-message-signatures/index.js +4 -0
- package/hbsig/src/http-message-signatures/structured-header.js +105 -0
- package/hbsig/src/httpsig.js +866 -0
- package/hbsig/src/id.js +459 -0
- package/hbsig/src/index.js +13 -0
- package/hbsig/src/nocrypto.js +4 -0
- package/hbsig/src/parser.js +171 -0
- package/hbsig/src/send-utils.js +1132 -0
- package/hbsig/src/send.js +142 -0
- package/hbsig/src/signer-utils.js +375 -0
- package/hbsig/src/signer.js +312 -0
- package/hbsig/src/structured.js +496 -0
- package/hbsig/src/test.js +2 -0
- package/hbsig/src/utils.js +29 -0
- package/lp/index.html +25 -0
- package/lp/package.json +19 -0
- package/lp/public/cover.png +0 -0
- package/lp/public/favicon.ico +0 -0
- package/lp/public/favicon.png +0 -0
- package/lp/public/images/book.jpg +0 -0
- package/lp/public/images/dashboard.png +0 -0
- package/lp/public/images/devnet.png +0 -0
- package/lp/public/images/hero-bg.png +0 -0
- package/lp/public/images/hyperadd.png +0 -0
- package/lp/public/images/message-flow.png +0 -0
- package/lp/public/images/mobile.png +0 -0
- package/lp/public/images/og-cover.png +0 -0
- package/lp/public/images/scan.png +0 -0
- package/lp/public/images/wao-hub.png +0 -0
- package/lp/public/images/wao-web.png +0 -0
- package/lp/public/logo.png +0 -0
- package/lp/src/App.jsx +29 -0
- package/lp/src/components/CodeBlock.jsx +37 -0
- package/lp/src/components/CodeBlock.module.css +89 -0
- package/lp/src/components/Footer.jsx +22 -0
- package/lp/src/components/Footer.module.css +60 -0
- package/lp/src/components/Nav.jsx +80 -0
- package/lp/src/components/Nav.module.css +177 -0
- package/lp/src/components/SectionWrapper.jsx +15 -0
- package/lp/src/hooks/useReveal.js +25 -0
- package/lp/src/hooks/useScrolled.js +14 -0
- package/lp/src/main.jsx +10 -0
- package/lp/src/sections/Book.jsx +60 -0
- package/lp/src/sections/Book.module.css +204 -0
- package/lp/src/sections/Browser.jsx +46 -0
- package/lp/src/sections/Browser.module.css +67 -0
- package/lp/src/sections/Devnet.jsx +55 -0
- package/lp/src/sections/Devnet.module.css +136 -0
- package/lp/src/sections/GetStarted.jsx +51 -0
- package/lp/src/sections/GetStarted.module.css +128 -0
- package/lp/src/sections/Hero.jsx +67 -0
- package/lp/src/sections/Hero.module.css +202 -0
- package/lp/src/sections/HyperADD.jsx +46 -0
- package/lp/src/sections/HyperADD.module.css +113 -0
- package/lp/src/sections/SDK.jsx +90 -0
- package/lp/src/sections/SDK.module.css +122 -0
- package/lp/src/sections/Testing.jsx +47 -0
- package/lp/src/sections/Testing.module.css +124 -0
- package/lp/src/sections/Vision.jsx +93 -0
- package/lp/src/sections/Vision.module.css +147 -0
- package/lp/src/styles/globals.css +285 -0
- package/lp/src/utils/scrollTo.js +4 -0
- package/lp/vite.config.js +7 -0
- package/make.js +39 -0
- package/package.json +17 -12
- package/patches/@permaweb+ao-loader+0.0.44.patch +64 -0
- package/plan.md +435 -0
- package/rebar.lock +1 -0
- package/src/accounts-web.js +128 -0
- package/src/accounts.js +124 -0
- package/src/adaptor-base.js +622 -0
- package/src/adaptor-cf.js +11 -0
- package/src/adaptor-web.js +11 -0
- package/src/adaptor.js +10 -0
- package/src/ao-loader.js +30660 -0
- package/src/ao.js +1173 -0
- package/src/aoconnect-base.js +1098 -0
- package/src/aoconnect-cf.js +9 -0
- package/src/aoconnect-web.js +8 -0
- package/src/aoconnect.js +8 -0
- package/src/aos_wamr.js +1 -0
- package/src/ar-remote.js +87 -0
- package/src/ar.js +276 -0
- package/src/armem-base.js +529 -0
- package/src/armem-cf.js +67 -0
- package/src/armem-web.js +19 -0
- package/src/armem.js +26 -0
- package/src/bao.js +141 -0
- package/src/bar.js +366 -0
- package/src/build.js +7 -0
- package/src/bundler.js +119 -0
- package/src/car.js +10 -0
- package/src/cf-env.js +29 -0
- package/src/cf.js +11 -0
- package/src/cli.js +561 -0
- package/src/compress.js +112 -0
- package/src/create.js +415 -0
- package/src/devs.js +86 -0
- package/src/dirname.js +1 -0
- package/src/dodb.js +26 -0
- package/src/erl_json.js +289 -0
- package/src/erl_str.js +1139 -0
- package/src/gql.js +229 -0
- package/src/hb.js +967 -0
- package/src/helpers.js +203 -0
- package/src/http.js +619 -0
- package/src/hub/bundler.js +123 -0
- package/src/hub/cu.js +74 -0
- package/src/hub/fs.js +157 -0
- package/src/hub/index.js +85 -0
- package/src/hub/utils.js +64 -0
- package/src/hub/ws-proxy.js +67 -0
- package/src/hyper-aos.js +1 -0
- package/src/hyperbeam-server.js +21 -0
- package/src/hyperbeam.js +585 -0
- package/src/index.js +5 -0
- package/src/keygen.js +47 -0
- package/src/lfdb.js +67 -0
- package/src/lua/aos.wasm +0 -0
- package/src/lua/aos2_0_1.js +1 -0
- package/src/lua/aos2_0_1.wasm +0 -0
- package/src/lua/aos2_0_3.js +1 -0
- package/src/lua/aos2_0_3.wasm +0 -0
- package/src/lua/aos2_0_4_32.js +1 -0
- package/src/lua/aos2_0_4_32.wasm +0 -0
- package/src/lua/aos2_0_6.wasm +0 -0
- package/src/lua/apm.lua +61 -0
- package/src/lua/llama.wasm +0 -0
- package/src/lua/process.wasm +0 -0
- package/src/lua/sqlite.js +1 -0
- package/src/lua/sqlite.wasm +0 -0
- package/src/lua/weavedb_mock.lua +44 -0
- package/src/lua/weavedrive.lua +53 -0
- package/src/run.js +25 -0
- package/src/server.js +173 -0
- package/src/storage-multi.js +183 -0
- package/src/tao.js +12 -0
- package/src/tar.js +10 -0
- package/src/test.js +42 -0
- package/src/tgql-d1.js +407 -0
- package/src/tgql.js +310 -0
- package/src/toerl.js +162 -0
- package/src/utils.js +777 -0
- package/src/wao.js +29 -0
- package/src/waosm/README.md +81 -0
- package/src/waosm/waosm.d.ts +40 -0
- package/src/waosm/waosm.js +240 -0
- package/src/waosm/waosm_bg.wasm +0 -0
- package/src/waosm/waosm_bg.wasm.d.ts +8 -0
- package/src/waosm-node/README.md +81 -0
- package/src/waosm-node/waosm.d.ts +8 -0
- package/src/waosm-node/waosm.js +4 -0
- package/src/waosm-node/waosm_bg.js +147 -0
- package/src/waosm-node/waosm_bg.wasm +0 -0
- package/src/waosm-node/waosm_bg.wasm.d.ts +8 -0
- package/src/waosm-node/waosm_bg.wasm.js +14 -0
- package/src/waosm-node.js +9 -0
- package/src/war.js +10 -0
- package/src/weavedrive.js +376 -0
- package/src/web.js +11 -0
- package/src/workspace/.mcp.json +8 -0
- package/src/workspace/CLAUDE.md +258 -0
- package/src/workspace/README.md +85 -0
- package/src/workspace/dashboard/index.html +163 -0
- package/src/workspace/dashboard/package.json +18 -0
- package/src/workspace/dashboard/public/favicon.ico +0 -0
- package/src/workspace/dashboard/public/favicon.png +0 -0
- package/src/workspace/dashboard/server.js +224 -0
- package/src/workspace/dashboard/src/App.jsx +2350 -0
- package/{cjs/workspace/frontend → src/workspace/dashboard}/vite.config.js +6 -0
- package/src/workspace/package.json +18 -0
- package/src/workspace/src/counter.lua +14 -0
- package/tsconfig.json +18 -0
- package/types/index.d.ts +329 -0
- package/waollama/.eslintrc.json +3 -0
- package/waollama/README.md +19 -0
- package/waollama/arweave.mjs +87 -0
- package/waollama/components/ui/avatar.jsx +49 -0
- package/waollama/components/ui/checkbox.jsx +17 -0
- package/waollama/components/ui/close-button.jsx +20 -0
- package/waollama/components/ui/color-mode.jsx +61 -0
- package/waollama/components/ui/dialog.jsx +54 -0
- package/waollama/components/ui/drawer.jsx +44 -0
- package/waollama/components/ui/field.jsx +22 -0
- package/waollama/components/ui/input-group.jsx +39 -0
- package/waollama/components/ui/popover.jsx +49 -0
- package/waollama/components/ui/provider.jsx +12 -0
- package/waollama/components/ui/radio.jsx +17 -0
- package/waollama/components/ui/slider.jsx +107 -0
- package/waollama/components/ui/tooltip.jsx +35 -0
- package/waollama/index.js +10 -0
- package/waollama/jsconfig.json +7 -0
- package/waollama/lib/ao-loader.js +30654 -0
- package/waollama/lib/client.js +1 -0
- package/waollama/lib/wasm.js +1 -0
- package/waollama/next.config.js +25 -0
- package/waollama/package.json +43 -0
- package/waollama/pages/404.js +9 -0
- package/waollama/pages/_app.js +9 -0
- package/waollama/pages/_document.js +14 -0
- package/waollama/pages/index.js +212 -0
- package/waollama/playwright.config.js +31 -0
- package/waollama/proxy.mjs +21 -0
- package/waollama/public/favicon.ico +0 -0
- package/waollama/public/human.png +0 -0
- package/waollama/public/llama.png +0 -0
- package/waosm/Cargo.toml +11 -0
- package/waosm/README.md +81 -0
- package/waosm/compress.js +112 -0
- package/waosm/make.js +33 -0
- package/waosm/package.json +10 -0
- package/waosm/src/lib.rs +180 -0
- package/waosm/test.js +16 -0
- package/cjs/workspace/.claude/agents/builder.md +0 -99
- package/cjs/workspace/.claude/agents/device-builder.md +0 -86
- package/cjs/workspace/.claude/agents/tester.md +0 -90
- package/cjs/workspace/.claude/mcp/dashboard/server.js +0 -128
- package/cjs/workspace/.claude/rules/deploy.md +0 -45
- package/cjs/workspace/.claude/rules/frontend.md +0 -69
- package/cjs/workspace/.claude/rules/hyperbeam.md +0 -104
- package/cjs/workspace/.claude/rules/lua.md +0 -108
- package/cjs/workspace/.claude/rules/testing.md +0 -257
- package/cjs/workspace/.claude/settings.json +0 -109
- package/cjs/workspace/.claude/skills/build/SKILL.md +0 -214
- package/cjs/workspace/.claude/skills/build-aos/SKILL.md +0 -129
- package/cjs/workspace/.claude/skills/build-device/SKILL.md +0 -192
- package/cjs/workspace/.claude/skills/build-frontend/SKILL.md +0 -134
- package/cjs/workspace/.claude/skills/build-module/SKILL.md +0 -281
- package/cjs/workspace/.claude/skills/create-aos/SKILL.md +0 -63
- package/cjs/workspace/.claude/skills/create-device/SKILL.md +0 -87
- package/cjs/workspace/.claude/skills/create-module/SKILL.md +0 -162
- package/cjs/workspace/.claude/skills/debug/SKILL.md +0 -57
- package/cjs/workspace/.claude/skills/deploy/SKILL.md +0 -85
- package/cjs/workspace/.claude/skills/dev/SKILL.md +0 -32
- package/cjs/workspace/.claude/skills/plan/SKILL.md +0 -176
- package/cjs/workspace/.claude/skills/readme/SKILL.md +0 -186
- package/cjs/workspace/.claude/skills/report/SKILL.md +0 -49
- package/cjs/workspace/.claude/skills/team/SKILL.md +0 -101
- package/cjs/workspace/.claude/skills/test/SKILL.md +0 -56
- package/cjs/workspace/.claude/skills/test-device/SKILL.md +0 -114
- package/cjs/workspace/.claude/skills/test-e2e/SKILL.md +0 -103
- package/cjs/workspace/.claude/skills/test-hb/SKILL.md +0 -76
- package/cjs/workspace/.claude/skills/validate/SKILL.md +0 -96
- package/cjs/workspace/.claude/skills/validate/scripts/check-lua.sh +0 -41
- package/cjs/workspace/docs/aos-lua.md +0 -428
- package/cjs/workspace/docs/debug.md +0 -230
- package/cjs/workspace/docs/hyperbeam-dev.md +0 -606
- package/cjs/workspace/docs/hyperbeam-devices.md +0 -618
- package/cjs/workspace/docs/wao-sdk.md +0 -807
- package/cjs/workspace/frontend/e2e/.gitkeep +0 -0
- package/cjs/workspace/frontend/index.html +0 -12
- package/cjs/workspace/frontend/package.json +0 -24
- package/cjs/workspace/frontend/playwright.config.js +0 -10
- package/cjs/workspace/frontend/src/App.jsx +0 -24
- package/cjs/workspace/frontend/test/.gitkeep +0 -0
- package/cjs/workspace/frontend/vitest.config.js +0 -10
- package/cjs/workspace/scripts/deploy.js +0 -140
- package/cjs/workspace/scripts/keygen.js +0 -52
- package/cjs/workspace/test/aos.test.js +0 -98
- package/cjs/workspace/test/hyperbeam.test.js +0 -80
- package/esm/compiler/native +0 -0
- package/esm/workspace/.claude/agents/builder.md +0 -99
- package/esm/workspace/.claude/agents/device-builder.md +0 -86
- package/esm/workspace/.claude/agents/tester.md +0 -90
- package/esm/workspace/.claude/mcp/dashboard/server.js +0 -128
- package/esm/workspace/.claude/rules/deploy.md +0 -45
- package/esm/workspace/.claude/rules/frontend.md +0 -69
- package/esm/workspace/.claude/rules/hyperbeam.md +0 -104
- package/esm/workspace/.claude/rules/lua.md +0 -108
- package/esm/workspace/.claude/rules/testing.md +0 -257
- package/esm/workspace/.claude/settings.json +0 -109
- package/esm/workspace/.claude/skills/build/SKILL.md +0 -214
- package/esm/workspace/.claude/skills/build-aos/SKILL.md +0 -129
- package/esm/workspace/.claude/skills/build-device/SKILL.md +0 -192
- package/esm/workspace/.claude/skills/build-frontend/SKILL.md +0 -134
- package/esm/workspace/.claude/skills/build-module/SKILL.md +0 -281
- package/esm/workspace/.claude/skills/create-aos/SKILL.md +0 -63
- package/esm/workspace/.claude/skills/create-device/SKILL.md +0 -87
- package/esm/workspace/.claude/skills/create-module/SKILL.md +0 -162
- package/esm/workspace/.claude/skills/debug/SKILL.md +0 -57
- package/esm/workspace/.claude/skills/deploy/SKILL.md +0 -85
- package/esm/workspace/.claude/skills/dev/SKILL.md +0 -32
- package/esm/workspace/.claude/skills/plan/SKILL.md +0 -176
- package/esm/workspace/.claude/skills/readme/SKILL.md +0 -186
- package/esm/workspace/.claude/skills/report/SKILL.md +0 -49
- package/esm/workspace/.claude/skills/team/SKILL.md +0 -101
- package/esm/workspace/.claude/skills/test/SKILL.md +0 -56
- package/esm/workspace/.claude/skills/test-device/SKILL.md +0 -114
- package/esm/workspace/.claude/skills/test-e2e/SKILL.md +0 -103
- package/esm/workspace/.claude/skills/test-hb/SKILL.md +0 -76
- package/esm/workspace/.claude/skills/validate/SKILL.md +0 -96
- package/esm/workspace/.claude/skills/validate/scripts/check-lua.sh +0 -41
- package/esm/workspace/docs/aos-lua.md +0 -428
- package/esm/workspace/docs/debug.md +0 -230
- package/esm/workspace/docs/hyperbeam-dev.md +0 -606
- package/esm/workspace/docs/hyperbeam-devices.md +0 -618
- package/esm/workspace/docs/wao-sdk.md +0 -807
- package/esm/workspace/frontend/e2e/.gitkeep +0 -0
- package/esm/workspace/frontend/index.html +0 -12
- package/esm/workspace/frontend/package.json +0 -24
- package/esm/workspace/frontend/playwright.config.js +0 -10
- package/esm/workspace/frontend/src/App.jsx +0 -24
- package/esm/workspace/frontend/src/main.jsx +0 -9
- package/esm/workspace/frontend/test/.gitkeep +0 -0
- package/esm/workspace/frontend/vite.config.js +0 -6
- package/esm/workspace/frontend/vitest.config.js +0 -10
- package/esm/workspace/scripts/deploy.js +0 -140
- package/esm/workspace/scripts/keygen.js +0 -52
- package/esm/workspace/test/aos.test.js +0 -98
- package/esm/workspace/test/hyperbeam.test.js +0 -80
- /package/{cjs/workspace/dashboard/public → devnet/app}/favicon.ico +0 -0
- /package/{cjs/workspace → dhfs-tutorial-app}/src/counter.lua +0 -0
- /package/{cjs → dist/cjs}/accounts-web.js +0 -0
- /package/{cjs → dist/cjs}/accounts.js +0 -0
- /package/{cjs → dist/cjs}/adaptor-base.js +0 -0
- /package/{cjs → dist/cjs}/adaptor-cf.js +0 -0
- /package/{cjs → dist/cjs}/adaptor-web.js +0 -0
- /package/{cjs → dist/cjs}/adaptor.js +0 -0
- /package/{cjs → dist/cjs}/ao-loader.js +0 -0
- /package/{cjs → dist/cjs}/ao.js +0 -0
- /package/{cjs → dist/cjs}/aoconnect-base.js +0 -0
- /package/{cjs → dist/cjs}/aoconnect-cf.js +0 -0
- /package/{cjs → dist/cjs}/aoconnect-web.js +0 -0
- /package/{cjs → dist/cjs}/aoconnect.js +0 -0
- /package/{cjs → dist/cjs}/aos_wamr.js +0 -0
- /package/{cjs → dist/cjs}/ar-remote.js +0 -0
- /package/{cjs → dist/cjs}/ar.js +0 -0
- /package/{cjs → dist/cjs}/armem-base.js +0 -0
- /package/{cjs → dist/cjs}/armem-cf.js +0 -0
- /package/{cjs → dist/cjs}/armem-web.js +0 -0
- /package/{cjs → dist/cjs}/armem.js +0 -0
- /package/{cjs → dist/cjs}/bao.js +0 -0
- /package/{cjs → dist/cjs}/bar.js +0 -0
- /package/{cjs → dist/cjs}/build.js +0 -0
- /package/{cjs → dist/cjs}/bundler.js +0 -0
- /package/{cjs → dist/cjs}/car.js +0 -0
- /package/{cjs → dist/cjs}/cf-env.js +0 -0
- /package/{cjs → dist/cjs}/cf.js +0 -0
- /package/{cjs → dist/cjs}/cli.js +0 -0
- /package/{cjs → dist/cjs}/compress.js +0 -0
- /package/{cjs → dist/cjs}/create.js +0 -0
- /package/{cjs → dist/cjs}/devs.js +0 -0
- /package/{cjs → dist/cjs}/dirname.js +0 -0
- /package/{cjs → dist/cjs}/dodb.js +0 -0
- /package/{cjs → dist/cjs}/erl_json.js +0 -0
- /package/{cjs → dist/cjs}/erl_str.js +0 -0
- /package/{cjs → dist/cjs}/gql.js +0 -0
- /package/{cjs → dist/cjs}/hb.js +0 -0
- /package/{cjs → dist/cjs}/helpers.js +0 -0
- /package/{cjs → dist/cjs}/http.js +0 -0
- /package/{cjs → dist/cjs}/hub/bundler.js +0 -0
- /package/{cjs → dist/cjs}/hub/cu.js +0 -0
- /package/{cjs → dist/cjs}/hub/fs.js +0 -0
- /package/{cjs → dist/cjs}/hub/index.js +0 -0
- /package/{cjs → dist/cjs}/hub/utils.js +0 -0
- /package/{cjs → dist/cjs}/hub/ws-proxy.js +0 -0
- /package/{cjs → dist/cjs}/hyper-aos.js +0 -0
- /package/{cjs → dist/cjs}/hyperbeam-server.js +0 -0
- /package/{cjs → dist/cjs}/hyperbeam.js +0 -0
- /package/{cjs → dist/cjs}/index.js +0 -0
- /package/{cjs → dist/cjs}/keygen.js +0 -0
- /package/{cjs → dist/cjs}/lfdb.js +0 -0
- /package/{cjs → dist/cjs}/lua/aos.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_1.js +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_1.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_3.js +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_3.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_4_32.js +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_4_32.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/aos2_0_6.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/apm.lua +0 -0
- /package/{cjs → dist/cjs}/lua/llama.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/process.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/sqlite.js +0 -0
- /package/{cjs → dist/cjs}/lua/sqlite.wasm +0 -0
- /package/{cjs → dist/cjs}/lua/weavedb_mock.lua +0 -0
- /package/{cjs → dist/cjs}/lua/weavedrive.lua +0 -0
- /package/{cjs → dist/cjs}/run.js +0 -0
- /package/{cjs → dist/cjs}/server.js +0 -0
- /package/{cjs → dist/cjs}/storage-multi.js +0 -0
- /package/{cjs → dist/cjs}/tao.js +0 -0
- /package/{cjs → dist/cjs}/tar.js +0 -0
- /package/{cjs → dist/cjs}/test.js +0 -0
- /package/{cjs → dist/cjs}/tgql-d1.js +0 -0
- /package/{cjs → dist/cjs}/tgql.js +0 -0
- /package/{cjs → dist/cjs}/toerl.js +0 -0
- /package/{cjs → dist/cjs}/utils.js +0 -0
- /package/{cjs → dist/cjs}/wao.js +0 -0
- /package/{cjs → dist/cjs}/waosm/waosm.js +0 -0
- /package/{cjs → dist/cjs}/waosm-node/waosm.js +0 -0
- /package/{cjs → dist/cjs}/waosm-node/waosm_bg.js +0 -0
- /package/{cjs → dist/cjs}/waosm-node/waosm_bg.wasm +0 -0
- /package/{cjs → dist/cjs}/waosm-node/waosm_bg.wasm.js +0 -0
- /package/{cjs → dist/cjs}/waosm-node.js +0 -0
- /package/{cjs → dist/cjs}/war.js +0 -0
- /package/{cjs → dist/cjs}/weavedrive.js +0 -0
- /package/{cjs → dist/cjs}/web.js +0 -0
- /package/{cjs → dist/cjs}/workspace/.mcp.json +0 -0
- /package/{cjs → dist/cjs}/workspace/CLAUDE.md +0 -0
- /package/{cjs → dist/cjs}/workspace/README.md +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/index.html +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/package.json +0 -0
- /package/{esm → dist/cjs}/workspace/dashboard/public/favicon.ico +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/public/favicon.png +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/server.js +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/src/App.jsx +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/src/main.jsx +0 -0
- /package/{cjs → dist/cjs}/workspace/dashboard/vite.config.js +0 -0
- /package/{cjs → dist/cjs}/workspace/package.json +0 -0
- /package/{esm → dist/cjs}/workspace/src/counter.lua +0 -0
- /package/{esm → dist/esm}/accounts-web.js +0 -0
- /package/{esm → dist/esm}/accounts.js +0 -0
- /package/{esm → dist/esm}/adaptor-base.js +0 -0
- /package/{esm → dist/esm}/adaptor-cf.js +0 -0
- /package/{esm → dist/esm}/adaptor-web.js +0 -0
- /package/{esm → dist/esm}/adaptor.js +0 -0
- /package/{esm → dist/esm}/ao-loader.js +0 -0
- /package/{esm → dist/esm}/ao.js +0 -0
- /package/{esm → dist/esm}/aoconnect-base.js +0 -0
- /package/{esm → dist/esm}/aoconnect-cf.js +0 -0
- /package/{esm → dist/esm}/aoconnect-web.js +0 -0
- /package/{esm → dist/esm}/aoconnect.js +0 -0
- /package/{esm → dist/esm}/aos_wamr.js +0 -0
- /package/{esm → dist/esm}/ar-remote.js +0 -0
- /package/{esm → dist/esm}/ar.js +0 -0
- /package/{esm → dist/esm}/armem-base.js +0 -0
- /package/{esm → dist/esm}/armem-cf.js +0 -0
- /package/{esm → dist/esm}/armem-web.js +0 -0
- /package/{esm → dist/esm}/armem.js +0 -0
- /package/{esm → dist/esm}/bao.js +0 -0
- /package/{esm → dist/esm}/bar.js +0 -0
- /package/{esm → dist/esm}/build.js +0 -0
- /package/{esm → dist/esm}/bundler.js +0 -0
- /package/{esm → dist/esm}/car.js +0 -0
- /package/{esm → dist/esm}/cf-env.js +0 -0
- /package/{esm → dist/esm}/cf.js +0 -0
- /package/{esm → dist/esm}/cli.js +0 -0
- /package/{esm → dist/esm}/compress.js +0 -0
- /package/{esm → dist/esm}/create.js +0 -0
- /package/{esm → dist/esm}/devs.js +0 -0
- /package/{esm → dist/esm}/dirname.js +0 -0
- /package/{esm → dist/esm}/dodb.js +0 -0
- /package/{esm → dist/esm}/erl_json.js +0 -0
- /package/{esm → dist/esm}/erl_str.js +0 -0
- /package/{esm → dist/esm}/gql.js +0 -0
- /package/{esm → dist/esm}/hb.js +0 -0
- /package/{esm → dist/esm}/helpers.js +0 -0
- /package/{esm → dist/esm}/http.js +0 -0
- /package/{esm → dist/esm}/hub/bundler.js +0 -0
- /package/{esm → dist/esm}/hub/cu.js +0 -0
- /package/{esm → dist/esm}/hub/fs.js +0 -0
- /package/{esm → dist/esm}/hub/index.js +0 -0
- /package/{esm → dist/esm}/hub/utils.js +0 -0
- /package/{esm → dist/esm}/hub/ws-proxy.js +0 -0
- /package/{esm → dist/esm}/hyper-aos.js +0 -0
- /package/{esm → dist/esm}/hyperbeam-server.js +0 -0
- /package/{esm → dist/esm}/hyperbeam.js +0 -0
- /package/{esm → dist/esm}/index.js +0 -0
- /package/{esm → dist/esm}/keygen.js +0 -0
- /package/{esm → dist/esm}/lfdb.js +0 -0
- /package/{esm → dist/esm}/lua/aos.wasm +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_1.js +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_1.wasm +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_3.js +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_3.wasm +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_4_32.js +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_4_32.wasm +0 -0
- /package/{esm → dist/esm}/lua/aos2_0_6.wasm +0 -0
- /package/{esm → dist/esm}/lua/apm.lua +0 -0
- /package/{esm → dist/esm}/lua/llama.wasm +0 -0
- /package/{esm → dist/esm}/lua/process.wasm +0 -0
- /package/{esm → dist/esm}/lua/sqlite.js +0 -0
- /package/{esm → dist/esm}/lua/sqlite.wasm +0 -0
- /package/{esm → dist/esm}/lua/weavedb_mock.lua +0 -0
- /package/{esm → dist/esm}/lua/weavedrive.lua +0 -0
- /package/{esm → dist/esm}/package.json +0 -0
- /package/{esm → dist/esm}/run.js +0 -0
- /package/{esm → dist/esm}/server.js +0 -0
- /package/{esm → dist/esm}/storage-multi.js +0 -0
- /package/{esm → dist/esm}/tao.js +0 -0
- /package/{esm → dist/esm}/tar.js +0 -0
- /package/{esm → dist/esm}/test.js +0 -0
- /package/{esm → dist/esm}/tgql-d1.js +0 -0
- /package/{esm → dist/esm}/tgql.js +0 -0
- /package/{esm → dist/esm}/toerl.js +0 -0
- /package/{esm → dist/esm}/utils.js +0 -0
- /package/{esm → dist/esm}/wao.js +0 -0
- /package/{esm → dist/esm}/waosm/README.md +0 -0
- /package/{esm → dist/esm}/waosm/waosm.d.ts +0 -0
- /package/{esm → dist/esm}/waosm/waosm.js +0 -0
- /package/{esm → dist/esm}/waosm/waosm_bg.wasm +0 -0
- /package/{esm → dist/esm}/waosm/waosm_bg.wasm.d.ts +0 -0
- /package/{esm → dist/esm}/waosm-node/README.md +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm.d.ts +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm.js +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm_bg.js +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm.d.ts +0 -0
- /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm.js +0 -0
- /package/{esm → dist/esm}/waosm-node.js +0 -0
- /package/{esm → dist/esm}/war.js +0 -0
- /package/{esm → dist/esm}/weavedrive.js +0 -0
- /package/{esm → dist/esm}/web.js +0 -0
- /package/{esm → dist/esm}/workspace/.mcp.json +0 -0
- /package/{esm → dist/esm}/workspace/CLAUDE.md +0 -0
- /package/{esm → dist/esm}/workspace/README.md +0 -0
- /package/{esm → dist/esm}/workspace/dashboard/index.html +0 -0
- /package/{esm → dist/esm}/workspace/dashboard/package.json +0 -0
- /package/{esm/workspace/dashboard/public/favicon.png → dist/esm/workspace/dashboard/public/favicon.ico} +0 -0
- /package/{esm → dist/esm}/workspace/dashboard/server.js +0 -0
- /package/{esm → dist/esm}/workspace/dashboard/src/App.jsx +0 -0
- /package/{cjs/workspace/frontend → dist/esm/workspace/dashboard}/src/main.jsx +0 -0
- /package/{esm → dist/esm}/workspace/dashboard/vite.config.js +0 -0
- /package/{esm → dist/esm}/workspace/package.json +0 -0
- /package/{postinstall.cjs → dist/postinstall.cjs} +0 -0
- /package/{esm → src}/workspace/dashboard/src/main.jsx +0 -0
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: build-module
|
|
3
|
-
description: "Build custom WASM64 (Rust) or standalone Lua modules with HyperBEAM integration tests. Iterates until all tests pass 100%. Use when user says 'build the module', 'write the WASM', 'custom Lua module', or 'implement the module'. Not for AOS scripts — use /build-aos."
|
|
4
|
-
argument-hint: "<task-id>"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Build custom execution modules (WASM64 Rust or standalone Lua) and HyperBEAM integration tests for a task. Iterates until all tests pass 100%.
|
|
10
|
-
|
|
11
|
-
## Resolve HyperBEAM path
|
|
12
|
-
|
|
13
|
-
Read `.env.hyperbeam` and extract the `CWD` value:
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
grep '^CWD=' .env.hyperbeam 2>/dev/null | cut -d= -f2-
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
If `.env.hyperbeam` doesn't exist or has no `CWD`, **STOP immediately** and tell the user:
|
|
20
|
-
|
|
21
|
-
> No HyperBEAM configured. Custom module tests require a HyperBEAM installation.
|
|
22
|
-
>
|
|
23
|
-
> Set it up by adding a `CWD` entry to `.env.hyperbeam`:
|
|
24
|
-
> ```bash
|
|
25
|
-
> echo "CWD=/path/to/your/HyperBEAM" >> .env.hyperbeam
|
|
26
|
-
> ```
|
|
27
|
-
>
|
|
28
|
-
> Or re-run `npx wao create` and choose option 1 (clone) or 2 (link).
|
|
29
|
-
|
|
30
|
-
## Steps
|
|
31
|
-
|
|
32
|
-
1. Read `tasks.json` and find the task matching `$ARGUMENTS` (task id). Update its status to `"in_progress"`.
|
|
33
|
-
|
|
34
|
-
2. Read `plan.md` for the module specifications:
|
|
35
|
-
- Module type: WASM64 (Rust) or standalone Lua
|
|
36
|
-
- Actions to handle
|
|
37
|
-
- Response format
|
|
38
|
-
- State management
|
|
39
|
-
|
|
40
|
-
3. Read the relevant docs:
|
|
41
|
-
- Standalone Lua → `docs/aos-lua.md` (custom Lua section) and the tutorial at `docs/docs/pages/tutorials/custom-lua.mdx`
|
|
42
|
-
- WASM64 Rust → the tutorial at `docs/docs/pages/tutorials/rust-wasm64.mdx`
|
|
43
|
-
- SDK patterns → `docs/wao-sdk.md` (HB class: `cacheBinary`, `cacheScript`, `spawnAOS`, `scheduleAOS`, `computeAOS`, `scheduleLua`, `computeLua`)
|
|
44
|
-
|
|
45
|
-
4. **If the module type is `module-lua`** — write a standalone Lua module:
|
|
46
|
-
|
|
47
|
-
Write the module in `custom-lua/{name}.lua`:
|
|
48
|
-
|
|
49
|
-
```lua
|
|
50
|
-
-- {name}.lua - Custom Lua module for lua@5.3a device
|
|
51
|
-
-- Standalone: no AOS boot code, no Handlers framework.
|
|
52
|
-
|
|
53
|
-
local state = {}
|
|
54
|
-
|
|
55
|
-
local function intstr(n)
|
|
56
|
-
if n == math.floor(n) then return string.format("%d", n) end
|
|
57
|
-
return tostring(n)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
function compute(base, req, opts)
|
|
61
|
-
local action = nil
|
|
62
|
-
if type(req) == "table" then
|
|
63
|
-
if type(req.body) == "table" then
|
|
64
|
-
action = req.body.Action or req.body.action
|
|
65
|
-
end
|
|
66
|
-
if not action then
|
|
67
|
-
action = req.Action or req.action
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
-- Handle actions
|
|
72
|
-
if action == "MyAction" then
|
|
73
|
-
-- Implementation here
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
base.results = {
|
|
77
|
-
outbox = {
|
|
78
|
-
["1"] = { data = "result" }
|
|
79
|
-
},
|
|
80
|
-
output = ""
|
|
81
|
-
}
|
|
82
|
-
return base
|
|
83
|
-
end
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Key patterns:
|
|
87
|
-
- Entry point is `compute(base, req, opts)` — NOT `Handlers.add`
|
|
88
|
-
- Action is in `req.body.Action` or `req.body.action` (HTTP lowercases headers)
|
|
89
|
-
- Response goes in `base.results.outbox` — string-keyed table
|
|
90
|
-
- Module-level variables persist between compute calls (Lua VM state is saved)
|
|
91
|
-
- No AOS framework available — no `Handlers`, `ao.send`, `msg.reply`
|
|
92
|
-
|
|
93
|
-
5. **If the module type is `module-wasm`** — write a Rust WASM64 module:
|
|
94
|
-
|
|
95
|
-
Write the module in `custom-wasm/src/lib.rs`:
|
|
96
|
-
|
|
97
|
-
```rust
|
|
98
|
-
#![no_std]
|
|
99
|
-
#![no_main]
|
|
100
|
-
|
|
101
|
-
use core::panic::PanicInfo;
|
|
102
|
-
|
|
103
|
-
#[panic_handler]
|
|
104
|
-
fn panic(_info: &PanicInfo) -> ! { loop {} }
|
|
105
|
-
|
|
106
|
-
static mut BUMP: usize = 4096;
|
|
107
|
-
|
|
108
|
-
#[no_mangle]
|
|
109
|
-
pub extern "C" fn malloc(size: usize) -> usize {
|
|
110
|
-
unsafe { let ptr = BUMP; BUMP += size; ptr }
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
#[no_mangle]
|
|
114
|
-
pub extern "C" fn free(_ptr: usize) -> usize { 0 }
|
|
115
|
-
|
|
116
|
-
// Manual byte copy (WAMR rejects memory.copy)
|
|
117
|
-
unsafe fn copy_bytes(dst: *mut u8, src: *const u8, len: usize) {
|
|
118
|
-
let mut i = 0;
|
|
119
|
-
while i < len { *dst.add(i) = *src.add(i); i += 1; }
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
#[no_mangle]
|
|
123
|
-
pub extern "C" fn handle(msg_ptr: usize, _proc_ptr: usize) -> usize {
|
|
124
|
-
// Parse JSON message, handle actions, return JSON response
|
|
125
|
-
// Response format: {"ok":true,"response":{"Output":{"data":""},"Messages":[{"Data":"..."}]}}
|
|
126
|
-
unsafe { /* implementation */ 0 }
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Key constraints:
|
|
131
|
-
- `#![no_std]` required — WAMR rejects `memory.copy` from std
|
|
132
|
-
- All pointers are `i64` (memory64 WASM)
|
|
133
|
-
- Must export `malloc`, `free`, `handle`
|
|
134
|
-
- Response is JSON with `Messages` array for outbox
|
|
135
|
-
- Use manual byte loops, not memcpy
|
|
136
|
-
|
|
137
|
-
Build with:
|
|
138
|
-
```bash
|
|
139
|
-
cd custom-wasm && cargo +nightly build --target wasm64-unknown-unknown --release -Zbuild-std=core,panic_abort -Zbuild-std-features=panic_immediate_abort
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
6. **If the task type is `module-test`** — write HyperBEAM integration tests:
|
|
143
|
-
|
|
144
|
-
**For Lua modules** — write `test/{name}-module.test.js`:
|
|
145
|
-
|
|
146
|
-
```js
|
|
147
|
-
import { describe, it, before, after } from "node:test"
|
|
148
|
-
import assert from "node:assert"
|
|
149
|
-
import { readFileSync } from "node:fs"
|
|
150
|
-
import { resolve } from "node:path"
|
|
151
|
-
import { HyperBEAM } from "wao/test"
|
|
152
|
-
import HB from "wao/hb"
|
|
153
|
-
|
|
154
|
-
const luaPath = resolve(import.meta.dirname, "../custom-lua/{name}.lua")
|
|
155
|
-
|
|
156
|
-
async function spawnCustomLua(hb, moduleId) {
|
|
157
|
-
return hb.spawn({
|
|
158
|
-
"data-protocol": "ao",
|
|
159
|
-
variant: "ao.TN.1",
|
|
160
|
-
module: moduleId,
|
|
161
|
-
"execution-device": "lua@5.3a",
|
|
162
|
-
"push-device": "push@1.0",
|
|
163
|
-
"patch-from": "/results/outbox",
|
|
164
|
-
})
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
describe("{name} custom Lua module", () => {
|
|
168
|
-
let hbeam, hb, moduleId
|
|
169
|
-
|
|
170
|
-
before(async () => {
|
|
171
|
-
hbeam = await new HyperBEAM({ reset: true }).ready()
|
|
172
|
-
hb = new HB({ url: hbeam.url })
|
|
173
|
-
await hb.init(hbeam.jwk)
|
|
174
|
-
const luaSrc = readFileSync(luaPath, "utf-8")
|
|
175
|
-
moduleId = await hb.cacheScript(luaSrc, "application/lua")
|
|
176
|
-
})
|
|
177
|
-
|
|
178
|
-
after(async () => { if (hbeam) hbeam.kill() })
|
|
179
|
-
|
|
180
|
-
it("should spawn process with module", async () => {
|
|
181
|
-
const { pid } = await spawnCustomLua(hb, moduleId)
|
|
182
|
-
assert.ok(pid)
|
|
183
|
-
})
|
|
184
|
-
|
|
185
|
-
// Test all actions, state persistence, error handling
|
|
186
|
-
})
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
**For WASM modules** — write `test/{name}-module.test.js`:
|
|
190
|
-
|
|
191
|
-
```js
|
|
192
|
-
import { describe, it, before, after } from "node:test"
|
|
193
|
-
import assert from "node:assert"
|
|
194
|
-
import { readFileSync } from "node:fs"
|
|
195
|
-
import { resolve } from "node:path"
|
|
196
|
-
import { HyperBEAM } from "wao/test"
|
|
197
|
-
import HB from "wao/hb"
|
|
198
|
-
|
|
199
|
-
const wasmPath = resolve(import.meta.dirname,
|
|
200
|
-
"../custom-wasm/target/wasm64-unknown-unknown/release/custom_wasm.wasm")
|
|
201
|
-
|
|
202
|
-
describe("{name} custom WASM64 module", () => {
|
|
203
|
-
let hbeam, hb
|
|
204
|
-
|
|
205
|
-
before(async () => {
|
|
206
|
-
hbeam = await new HyperBEAM({ reset: true }).ready()
|
|
207
|
-
hb = new HB({ url: hbeam.url })
|
|
208
|
-
await hb.init(hbeam.jwk)
|
|
209
|
-
})
|
|
210
|
-
|
|
211
|
-
after(async () => { if (hbeam) hbeam.kill() })
|
|
212
|
-
|
|
213
|
-
it("should cache and spawn", async () => {
|
|
214
|
-
const wasm = readFileSync(wasmPath)
|
|
215
|
-
const imageId = await hb.cacheBinary(wasm, "application/wasm")
|
|
216
|
-
const { pid } = await hb.spawnAOS({ image: imageId })
|
|
217
|
-
assert.ok(pid)
|
|
218
|
-
})
|
|
219
|
-
|
|
220
|
-
// Test all actions via scheduleAOS/computeAOS
|
|
221
|
-
})
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
7. Run the tests:
|
|
225
|
-
|
|
226
|
-
```bash
|
|
227
|
-
yarn test test/{name}-module.test.js
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
8. If any tests fail:
|
|
231
|
-
- Read the error output carefully
|
|
232
|
-
- For WASM: check compilation output, verify no `memory.copy` instructions
|
|
233
|
-
- For Lua: check `compute` function returns `base` with `results` set
|
|
234
|
-
- Fix the code and re-run
|
|
235
|
-
- Repeat until **100% pass**
|
|
236
|
-
|
|
237
|
-
9. Update the task status to `"done"` in `tasks.json`.
|
|
238
|
-
|
|
239
|
-
## Iteration Protocol
|
|
240
|
-
|
|
241
|
-
For each test-fix cycle:
|
|
242
|
-
1. Run tests and capture FULL output
|
|
243
|
-
2. Identify the FIRST failing test (fix failures in order)
|
|
244
|
-
3. Classify: is the bug in module code or test code?
|
|
245
|
-
4. Fix ONE issue per iteration (don't change multiple things at once)
|
|
246
|
-
5. Re-run only the failing test first, then full suite
|
|
247
|
-
6. If the same error persists after 3 different fix attempts, step back:
|
|
248
|
-
- Re-read the relevant docs (custom module patterns, WASM64/Lua conventions, etc.)
|
|
249
|
-
- Check if the plan itself has a wrong assumption
|
|
250
|
-
- Try a completely different approach
|
|
251
|
-
7. Continue iterating until all tests pass — there is no retry limit
|
|
252
|
-
|
|
253
|
-
Only escalate to the user if:
|
|
254
|
-
- The failure is environmental (cargo missing, WASM build tools, port conflict)
|
|
255
|
-
- The test requires user input (wallet, external service URL)
|
|
256
|
-
- You've tried 10+ iterations with no progress on the same error
|
|
257
|
-
|
|
258
|
-
## Troubleshooting
|
|
259
|
-
|
|
260
|
-
### Lua module: "compute not found"
|
|
261
|
-
- Ensure the function is named `compute` (global, not local)
|
|
262
|
-
- Must take exactly 3 arguments: `(base, req, opts)`
|
|
263
|
-
|
|
264
|
-
### Lua module: action is nil
|
|
265
|
-
- HTTP signatures lowercase headers: check both `req.body.Action` and `req.body.action`
|
|
266
|
-
- Also check `req.Action` as a fallback
|
|
267
|
-
|
|
268
|
-
### WASM: "memory.copy not supported"
|
|
269
|
-
- Ensure `#![no_std]` is set in lib.rs
|
|
270
|
-
- Use manual byte loops, not any std function that might use memory.copy
|
|
271
|
-
- Verify Cargo.toml has `crate-type = ["cdylib"]`
|
|
272
|
-
|
|
273
|
-
### WASM: compilation fails with wasm64
|
|
274
|
-
- Install nightly: `rustup toolchain install nightly`
|
|
275
|
-
- Must use `-Zbuild-std=core,panic_abort`
|
|
276
|
-
- Target is `wasm64-unknown-unknown` (not wasm32)
|
|
277
|
-
|
|
278
|
-
### Tests hang on HyperBEAM spawn
|
|
279
|
-
- Kill stale beam.smp processes: `pkill -f beam.smp`
|
|
280
|
-
- Check `.env.hyperbeam` CWD path is valid
|
|
281
|
-
- Requires Erlang/OTP 27+
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: create-aos
|
|
3
|
-
description: "Scaffold a new AOS Lua script with its test file. Use when user says 'create a handler', 'new AOS script', 'scaffold a script', or 'add a handler'. Not for building full scripts with iteration — use /build-aos."
|
|
4
|
-
argument-hint: "<script-name>"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
Scaffold a new AOS script with its test file.
|
|
9
|
-
|
|
10
|
-
The argument `$ARGUMENTS` is the script name (required). It should be lowercase and will be used as the filename.
|
|
11
|
-
|
|
12
|
-
## Steps
|
|
13
|
-
|
|
14
|
-
0. Check for conflicts:
|
|
15
|
-
```bash
|
|
16
|
-
test -f "src/$ARGUMENTS.lua" && echo "WARNING: src/$ARGUMENTS.lua already exists" || echo "OK"
|
|
17
|
-
```
|
|
18
|
-
If the file exists, ask the user: overwrite or choose a different name?
|
|
19
|
-
|
|
20
|
-
1. Create the Lua script file at `src/$ARGUMENTS.lua`:
|
|
21
|
-
|
|
22
|
-
```lua
|
|
23
|
-
local State = State or {}
|
|
24
|
-
|
|
25
|
-
Handlers.add("{Name}", "{Name}", function(msg)
|
|
26
|
-
msg.reply({ Data = "{Name} handled!" })
|
|
27
|
-
end)
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Where `{Name}` is the argument with the first letter capitalized (e.g., `greeting` -> `Greeting`).
|
|
31
|
-
|
|
32
|
-
2. Create the test file at `test/$ARGUMENTS.test.js`:
|
|
33
|
-
|
|
34
|
-
```js
|
|
35
|
-
import assert from "assert"
|
|
36
|
-
import { describe, it } from "node:test"
|
|
37
|
-
import { readFileSync } from "fs"
|
|
38
|
-
import { resolve } from "path"
|
|
39
|
-
|
|
40
|
-
import { AO, acc } from "wao/test"
|
|
41
|
-
|
|
42
|
-
const src_data = readFileSync(
|
|
43
|
-
resolve(import.meta.dirname, "../src/{name}.lua"),
|
|
44
|
-
"utf8"
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
describe("{Name}", function () {
|
|
48
|
-
it("should handle {Name} action", async () => {
|
|
49
|
-
const ao = await new AO().init(acc[0])
|
|
50
|
-
const { p } = await ao.deploy({ src_data })
|
|
51
|
-
const result = await p.d("{Name}", false)
|
|
52
|
-
assert.equal(result, "{Name} handled!")
|
|
53
|
-
})
|
|
54
|
-
})
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
3. Run the new test:
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
yarn test test/{name}.test.js
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
4. Report whether the test passes. If it fails, fix and re-run.
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: create-device
|
|
3
|
-
description: "Scaffold a new HyperBEAM Erlang device with its test file. Use when user says 'create a device', 'new Erlang device', 'scaffold a device', or 'add a device'. Not for building full devices with iteration — use /build-device."
|
|
4
|
-
argument-hint: "<device-name>"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
Scaffold a new HyperBEAM Erlang device with its test file.
|
|
9
|
-
|
|
10
|
-
The argument `$ARGUMENTS` is the device name (required). It should be lowercase and will be used as the module name.
|
|
11
|
-
|
|
12
|
-
## Steps
|
|
13
|
-
|
|
14
|
-
1. Read `docs/hyperbeam-dev.md` for the device template and protocol.
|
|
15
|
-
|
|
16
|
-
2. Create the Erlang device at `HyperBEAM/src/dev_{name}.erl`:
|
|
17
|
-
|
|
18
|
-
```erlang
|
|
19
|
-
-module(dev_{name}).
|
|
20
|
-
-export([info/3, init/3, compute/3]).
|
|
21
|
-
-include("include/hb.hrl").
|
|
22
|
-
|
|
23
|
-
-define(STATE_KEY, <<"{name}-state">>).
|
|
24
|
-
|
|
25
|
-
info(_M1, _M2, _Opts) ->
|
|
26
|
-
{ok, #{
|
|
27
|
-
<<"name">> => <<"{name}">>,
|
|
28
|
-
<<"version">> => <<"1.0">>,
|
|
29
|
-
<<"endpoints">> => [<<"compute">>]
|
|
30
|
-
}}.
|
|
31
|
-
|
|
32
|
-
init(M1, _M2, Opts) ->
|
|
33
|
-
State = #{},
|
|
34
|
-
{ok, ID} = hb_cache:write(State, Opts),
|
|
35
|
-
M1Updated = hb_private:set(M1, #{?STATE_KEY => ID}, Opts),
|
|
36
|
-
{ok, M1Updated}.
|
|
37
|
-
|
|
38
|
-
compute(M1, M2, Opts) ->
|
|
39
|
-
Action = hb_maps:get(<<"action">>, M2, <<"default">>, Opts),
|
|
40
|
-
case Action of
|
|
41
|
-
<<"get">> -> handle_get(M1, M2, Opts);
|
|
42
|
-
_ -> {error, #{<<"status">> => 400, <<"error">> => <<"Unknown action">>}}
|
|
43
|
-
end.
|
|
44
|
-
|
|
45
|
-
handle_get(M1, _M2, _Opts) ->
|
|
46
|
-
{ok, maps:merge(M1, #{<<"result">> => <<"ok">>})}.
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Where `{name}` is the argument (e.g., `counter`).
|
|
50
|
-
|
|
51
|
-
3. Create the test at `test/{name}.device.test.js`:
|
|
52
|
-
|
|
53
|
-
```js
|
|
54
|
-
import assert from "assert"
|
|
55
|
-
import { describe, it, before, after } from "node:test"
|
|
56
|
-
import { HyperBEAM, HB, acc } from "wao/test"
|
|
57
|
-
|
|
58
|
-
describe("{Name} Device", function () {
|
|
59
|
-
let hbeam, hb
|
|
60
|
-
|
|
61
|
-
before(async () => {
|
|
62
|
-
hbeam = await new HyperBEAM({ reset: true }).ready()
|
|
63
|
-
hb = await new HB({ url: hbeam.url }).init(acc[0].jwk)
|
|
64
|
-
})
|
|
65
|
-
|
|
66
|
-
after(async () => hbeam.kill())
|
|
67
|
-
|
|
68
|
-
it("should respond to get", async () => {
|
|
69
|
-
const result = await hb.g("/~{name}@1.0/compute", { action: "get" })
|
|
70
|
-
assert.ok(result)
|
|
71
|
-
})
|
|
72
|
-
})
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
4. Compile HyperBEAM:
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
cd HyperBEAM && rebar3 compile
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
5. Run the test:
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
yarn test test/{name}.device.test.js
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
6. Report whether compilation and test pass. If either fails, fix and re-run.
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: create-module
|
|
3
|
-
description: "Scaffold a new custom module (WASM64 Rust or standalone Lua) with its test file. Use when user says 'create a module', 'new custom module', 'scaffold a WASM module', or 'scaffold a Lua module'. Not for AOS scripts — use /create-aos."
|
|
4
|
-
argument-hint: "<module-name> [--lua|--wasm]"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Read, Write, Bash, Grep, Glob
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Scaffold a new custom execution module with its HyperBEAM integration test.
|
|
10
|
-
|
|
11
|
-
The argument `$ARGUMENTS` should include the module name and optionally `--lua` or `--wasm` to specify the type. If no type is given, ask the user.
|
|
12
|
-
|
|
13
|
-
## Steps
|
|
14
|
-
|
|
15
|
-
0. Check for conflicts:
|
|
16
|
-
```bash
|
|
17
|
-
test -f "custom-lua/$ARGUMENTS.lua" && echo "WARNING: custom-lua/$ARGUMENTS.lua already exists" || echo "OK"
|
|
18
|
-
test -d "custom-wasm/" && test -f "custom-wasm/src/lib.rs" && echo "WARNING: custom-wasm/src/lib.rs already exists" || echo "OK"
|
|
19
|
-
```
|
|
20
|
-
If the file exists, ask the user: overwrite or choose a different name?
|
|
21
|
-
|
|
22
|
-
### For Lua modules (`--lua` or default)
|
|
23
|
-
|
|
24
|
-
1. Create `custom-lua/` directory if it doesn't exist:
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
mkdir -p custom-lua
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
2. Create `custom-lua/{name}.lua`:
|
|
31
|
-
|
|
32
|
-
```lua
|
|
33
|
-
-- {name}.lua - Custom Lua module for lua@5.3a device
|
|
34
|
-
-- Standalone: no AOS boot code, no Handlers framework.
|
|
35
|
-
-- Implements a {Name} with basic actions.
|
|
36
|
-
|
|
37
|
-
local state = {}
|
|
38
|
-
|
|
39
|
-
local function intstr(n)
|
|
40
|
-
if n == math.floor(n) then return string.format("%d", n) end
|
|
41
|
-
return tostring(n)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
function compute(base, req, opts)
|
|
45
|
-
local action = nil
|
|
46
|
-
if type(req) == "table" then
|
|
47
|
-
if type(req.body) == "table" then
|
|
48
|
-
action = req.body.Action or req.body.action
|
|
49
|
-
end
|
|
50
|
-
if not action then
|
|
51
|
-
action = req.Action or req.action
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
local result = "ok"
|
|
56
|
-
|
|
57
|
-
if action == "Get" then
|
|
58
|
-
-- Return current state
|
|
59
|
-
result = "state"
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
base.results = {
|
|
63
|
-
outbox = {
|
|
64
|
-
["1"] = { data = result }
|
|
65
|
-
},
|
|
66
|
-
output = ""
|
|
67
|
-
}
|
|
68
|
-
return base
|
|
69
|
-
end
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
3. Create `test/{name}-module.test.js`:
|
|
73
|
-
|
|
74
|
-
```js
|
|
75
|
-
import { describe, it, before, after } from "node:test"
|
|
76
|
-
import assert from "node:assert"
|
|
77
|
-
import { readFileSync } from "node:fs"
|
|
78
|
-
import { resolve } from "node:path"
|
|
79
|
-
import { HyperBEAM } from "wao/test"
|
|
80
|
-
import HB from "wao/hb"
|
|
81
|
-
|
|
82
|
-
const luaPath = resolve(import.meta.dirname, "../custom-lua/{name}.lua")
|
|
83
|
-
|
|
84
|
-
async function spawnCustomLua(hb, moduleId) {
|
|
85
|
-
return hb.spawn({
|
|
86
|
-
"data-protocol": "ao",
|
|
87
|
-
variant: "ao.TN.1",
|
|
88
|
-
module: moduleId,
|
|
89
|
-
"execution-device": "lua@5.3a",
|
|
90
|
-
"push-device": "push@1.0",
|
|
91
|
-
"patch-from": "/results/outbox",
|
|
92
|
-
})
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
describe("{Name} Custom Lua Module", function () {
|
|
96
|
-
let hbeam, hb, moduleId
|
|
97
|
-
|
|
98
|
-
before(async () => {
|
|
99
|
-
hbeam = await new HyperBEAM({ reset: true }).ready()
|
|
100
|
-
hb = new HB({ url: hbeam.url })
|
|
101
|
-
await hb.init(hbeam.jwk)
|
|
102
|
-
const luaSrc = readFileSync(luaPath, "utf-8")
|
|
103
|
-
moduleId = await hb.cacheScript(luaSrc, "application/lua")
|
|
104
|
-
})
|
|
105
|
-
|
|
106
|
-
after(async () => { if (hbeam) hbeam.kill() })
|
|
107
|
-
|
|
108
|
-
it("should spawn and get initial state", async () => {
|
|
109
|
-
const { pid } = await spawnCustomLua(hb, moduleId)
|
|
110
|
-
assert.ok(pid, "should get process ID")
|
|
111
|
-
|
|
112
|
-
const get = await hb.scheduleLua({ pid, action: "Get" })
|
|
113
|
-
const result = await hb.computeLua({ pid, slot: get.slot })
|
|
114
|
-
assert.ok(result)
|
|
115
|
-
})
|
|
116
|
-
})
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### For WASM64 modules (`--wasm`)
|
|
120
|
-
|
|
121
|
-
1. Create the Rust project if it doesn't exist:
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
test -d custom-wasm || cargo new custom-wasm --lib
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
2. Write `custom-wasm/Cargo.toml`:
|
|
128
|
-
|
|
129
|
-
```toml
|
|
130
|
-
[package]
|
|
131
|
-
name = "custom-wasm"
|
|
132
|
-
version = "0.1.0"
|
|
133
|
-
edition = "2021"
|
|
134
|
-
|
|
135
|
-
[lib]
|
|
136
|
-
crate-type = ["cdylib"]
|
|
137
|
-
|
|
138
|
-
[profile.release]
|
|
139
|
-
opt-level = "z"
|
|
140
|
-
lto = true
|
|
141
|
-
strip = true
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
3. Write `custom-wasm/src/lib.rs` with the `#![no_std]` counter template from `docs/docs/pages/tutorials/rust-wasm64.mdx`.
|
|
145
|
-
|
|
146
|
-
4. Build:
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
cd custom-wasm && cargo +nightly build --target wasm64-unknown-unknown --release -Zbuild-std=core,panic_abort -Zbuild-std-features=panic_immediate_abort
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
5. Create `test/{name}-module.test.js` using the WASM test template (with `cacheBinary` + `spawnAOS` + `scheduleAOS` + `computeAOS`).
|
|
153
|
-
|
|
154
|
-
### Final steps
|
|
155
|
-
|
|
156
|
-
6. Run the test:
|
|
157
|
-
|
|
158
|
-
```bash
|
|
159
|
-
yarn test test/{name}-module.test.js
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
7. Report whether the test passes. If it fails, fix and re-run.
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: debug
|
|
3
|
-
description: "Troubleshoot WAO development issues. Diagnoses port conflicts, stale processes, missing dependencies, and common errors. Use when builds stall, tests hang, ports conflict, or user says 'something is broken', 'tests are stuck', or 'help debug'. Not for test failures — use /test or /test-hb to re-run tests."
|
|
4
|
-
argument-hint: "[issue-type]"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Bash, Read, Grep
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Troubleshoot WAO development issues.
|
|
10
|
-
|
|
11
|
-
If `$ARGUMENTS` is provided, focus on that specific issue type (`timeout`, `port`, `wasm`, `signature`).
|
|
12
|
-
|
|
13
|
-
## Steps
|
|
14
|
-
|
|
15
|
-
1. Read `docs/debug.md` for known issues and their fixes.
|
|
16
|
-
|
|
17
|
-
2. Check port conflicts:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
lsof -ti :10000-10010 2>/dev/null
|
|
21
|
-
lsof -ti :6363 2>/dev/null
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
3. Check for stale beam.smp processes:
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
ps aux | grep beam.smp | grep -v grep
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
4. Check HyperBEAM directory exists:
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
ls ./HyperBEAM/rebar.config 2>/dev/null && echo "HyperBEAM: OK" || echo "HyperBEAM: NOT FOUND"
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
5. Verify wallet exists:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
ls .wallet.json 2>/dev/null && echo "Wallet: OK" || echo "Wallet: NOT FOUND"
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
6. If argument provided, focus on that specific issue type:
|
|
43
|
-
- `timeout` — check ports, kill stale processes, verify HyperBEAM
|
|
44
|
-
- `port` — show all processes on relevant ports
|
|
45
|
-
- `wasm` — check Node.js flags and WASM modules
|
|
46
|
-
- `signature` — check for authority field conflicts, linkify_mode
|
|
47
|
-
|
|
48
|
-
7. If no specific issue, run a minimal connectivity test:
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
pkill -f beam.smp 2>/dev/null || true
|
|
52
|
-
lsof -ti :10000-10010 | xargs -r kill -9 2>/dev/null || true
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
8. Cross-reference any error messages with the Common Error Messages table in `docs/debug.md`.
|
|
56
|
-
|
|
57
|
-
9. Report findings with specific fix recommendations.
|