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,114 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: test-device
|
|
3
|
-
description: "Test HyperBEAM Erlang devices with WAO SDK integration tests. Launches real HyperBEAM and tests device via HTTP. Use when user says 'test the device', 'run device tests', or 'verify the Erlang module'. Not for eunit — use /build-device."
|
|
4
|
-
argument-hint: "<task-id>"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Write and run WAO SDK integration tests for HyperBEAM Erlang devices. Launches a real HyperBEAM node and tests devices via HTTP.
|
|
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. Device integration 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
|
-
Then verify the directory exists:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
test -d "$HB_DIR/src" && echo "HyperBEAM: OK" || echo "HyperBEAM: MISSING"
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
If `MISSING`, stop and tell the user the path in `.env.hyperbeam` is invalid.
|
|
35
|
-
|
|
36
|
-
Do NOT mark the task as done. Set the task status to `"pending"` and stop.
|
|
37
|
-
|
|
38
|
-
## Steps
|
|
39
|
-
|
|
40
|
-
1. Read `tasks.json` and find the task matching `$ARGUMENTS` (task id). Update its status to `"in_progress"`.
|
|
41
|
-
|
|
42
|
-
2. Kill stale HyperBEAM processes:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
pkill -f beam.smp 2>/dev/null || true
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
3. Read `docs/wao-sdk.md` for HB class patterns (spawn, schedule, compute).
|
|
49
|
-
|
|
50
|
-
4. **Write integration tests** in `test/{name}-device.test.js`:
|
|
51
|
-
|
|
52
|
-
The `HyperBEAM` class reads `.env.hyperbeam` automatically via `dotenv`, so it will find the correct `CWD`. No need to pass it manually.
|
|
53
|
-
|
|
54
|
-
```js
|
|
55
|
-
import { describe, it, before, after } from "node:test"
|
|
56
|
-
import assert from "node:assert"
|
|
57
|
-
import { HB, HyperBEAM, acc } from "wao/test"
|
|
58
|
-
|
|
59
|
-
describe("{name} device integration", () => {
|
|
60
|
-
let hbeam, hb
|
|
61
|
-
|
|
62
|
-
before(async () => {
|
|
63
|
-
hbeam = await new HyperBEAM({ reset: true }).ready()
|
|
64
|
-
hb = hbeam.hb
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
after(async () => {
|
|
68
|
-
if (hbeam) await hbeam.kill()
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
it("should spawn process with device", async () => {
|
|
72
|
-
const { id } = await hb.spawn({
|
|
73
|
-
"execution-device": "dev_{name}@1.0",
|
|
74
|
-
})
|
|
75
|
-
assert.ok(id)
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
it("should handle action via device", async () => {
|
|
79
|
-
const { id } = await hb.spawn({
|
|
80
|
-
"execution-device": "dev_{name}@1.0",
|
|
81
|
-
})
|
|
82
|
-
const result = await hb.schedule({
|
|
83
|
-
process: id,
|
|
84
|
-
action: "MyAction",
|
|
85
|
-
tags: { /* ... */ },
|
|
86
|
-
})
|
|
87
|
-
assert.ok(result)
|
|
88
|
-
})
|
|
89
|
-
|
|
90
|
-
// Test all device operations:
|
|
91
|
-
// - Spawn with device
|
|
92
|
-
// - Each exported action
|
|
93
|
-
// - Error handling (invalid action, bad input)
|
|
94
|
-
// - State persistence across messages
|
|
95
|
-
// - Device stacks (if applicable)
|
|
96
|
-
})
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
5. Run the tests:
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
yarn test test/{name}-device.test.js
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
6. If any tests fail:
|
|
106
|
-
- Read the error output
|
|
107
|
-
- Check if HyperBEAM started correctly
|
|
108
|
-
- Fix the test or device code
|
|
109
|
-
- Kill stale processes and re-run
|
|
110
|
-
- Repeat until **100% pass**
|
|
111
|
-
|
|
112
|
-
7. Always ensure HyperBEAM is killed after tests (check `after()` hook).
|
|
113
|
-
|
|
114
|
-
8. Update the task status to `"done"` in `tasks.json`.
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: test-e2e
|
|
3
|
-
description: "Playwright E2E tests with live HyperBEAM backend. Launches HB via WAO SDK, runs browser tests. Use when user says 'run E2E tests', 'test the frontend', or 'browser tests'. Not for vitest — use /build-frontend."
|
|
4
|
-
argument-hint: "<task-id>"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Write and run Playwright E2E tests with a live HyperBEAM backend. Tests full user flows in the browser.
|
|
10
|
-
|
|
11
|
-
## Steps
|
|
12
|
-
|
|
13
|
-
0. Check prerequisites:
|
|
14
|
-
```bash
|
|
15
|
-
test -d frontend/e2e && echo "OK" || echo "ERROR: No e2e/ directory"
|
|
16
|
-
cd frontend && npx playwright --version 2>/dev/null || echo "ERROR: Playwright not installed"
|
|
17
|
-
```
|
|
18
|
-
If Playwright is missing: `cd frontend && npx playwright install`
|
|
19
|
-
|
|
20
|
-
1. Read `tasks.json` and find the task matching `$ARGUMENTS` (task id). Update its status to `"in_progress"`.
|
|
21
|
-
|
|
22
|
-
2. Kill stale HyperBEAM processes:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
pkill -f beam.smp 2>/dev/null || true
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
3. **Write Playwright tests** in `frontend/e2e/`:
|
|
29
|
-
|
|
30
|
-
```js
|
|
31
|
-
import { test, expect } from "@playwright/test"
|
|
32
|
-
|
|
33
|
-
test.describe("{feature} E2E", () => {
|
|
34
|
-
test("full user flow", async ({ page }) => {
|
|
35
|
-
await page.goto("http://localhost:5173")
|
|
36
|
-
|
|
37
|
-
// Wait for app to load
|
|
38
|
-
await expect(page.locator("h1")).toBeVisible()
|
|
39
|
-
|
|
40
|
-
// Test wallet connection flow
|
|
41
|
-
// (mock ArConnect via page.addInitScript if needed)
|
|
42
|
-
|
|
43
|
-
// Test process interaction
|
|
44
|
-
// - Fill form inputs
|
|
45
|
-
// - Click submit
|
|
46
|
-
// - Wait for response from AO process
|
|
47
|
-
// - Verify UI updates
|
|
48
|
-
|
|
49
|
-
// Test error states
|
|
50
|
-
// - Network failure
|
|
51
|
-
// - Invalid input
|
|
52
|
-
})
|
|
53
|
-
})
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
4. **Write global setup** if needed for HyperBEAM lifecycle:
|
|
57
|
-
|
|
58
|
-
```js
|
|
59
|
-
// frontend/e2e/global-setup.js
|
|
60
|
-
import { HyperBEAM } from "wao/test"
|
|
61
|
-
|
|
62
|
-
let hbeam
|
|
63
|
-
|
|
64
|
-
export default async function globalSetup() {
|
|
65
|
-
hbeam = await new HyperBEAM({ reset: true }).ready()
|
|
66
|
-
process.env.HYPERBEAM_URL = hbeam.url
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export async function globalTeardown() {
|
|
70
|
-
if (hbeam) await hbeam.kill()
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Reference in `frontend/playwright.config.js`:
|
|
75
|
-
```js
|
|
76
|
-
export default {
|
|
77
|
-
globalSetup: "./e2e/global-setup.js",
|
|
78
|
-
globalTeardown: "./e2e/global-setup.js",
|
|
79
|
-
use: { baseURL: "http://localhost:5173" },
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
5. Ensure the Vite dev server is running (or start it):
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
cd frontend && npm run dev &
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
6. Run E2E tests:
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
cd frontend && npx playwright test
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
7. If any tests fail:
|
|
96
|
-
- Read the error output and screenshots (if any)
|
|
97
|
-
- Fix the test or frontend code
|
|
98
|
-
- Re-run
|
|
99
|
-
- Repeat until **100% pass**
|
|
100
|
-
|
|
101
|
-
8. Kill the Vite dev server and HyperBEAM after tests.
|
|
102
|
-
|
|
103
|
-
9. Update the task status to `"done"` in `tasks.json`.
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: test-hb
|
|
3
|
-
description: "Run HyperBEAM integration tests. Starts a local Erlang HyperBEAM node and tests AOS processes on the full production stack. Use when user says 'test on HyperBEAM', 'run integration tests', or 'test the full stack'. Not for in-memory tests — use /test."
|
|
4
|
-
argument-hint: "[test-file]"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Bash, Read, Grep
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Run HyperBEAM integration tests. These spawn a real Erlang node — different from in-memory AOS tests (`/test`).
|
|
10
|
-
|
|
11
|
-
## Steps
|
|
12
|
-
|
|
13
|
-
1. Kill any stale HyperBEAM / beam.smp processes:
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
lsof -ti :10000-10010 | xargs -r kill -9 2>/dev/null || true
|
|
17
|
-
pkill -f beam.smp 2>/dev/null || true
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
2. Check that HyperBEAM is configured via `.env.hyperbeam`:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
grep '^CWD=' .env.hyperbeam 2>/dev/null | cut -d= -f2-
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
If `.env.hyperbeam` doesn't exist or has no `CWD`, **STOP** and tell the user:
|
|
27
|
-
|
|
28
|
-
> No HyperBEAM configured. Integration tests require a HyperBEAM installation.
|
|
29
|
-
>
|
|
30
|
-
> During project creation (`npx wao create`), choose option 1 (clone) or 2 (link).
|
|
31
|
-
> Or configure it now:
|
|
32
|
-
> ```bash
|
|
33
|
-
> echo "CWD=/path/to/your/HyperBEAM" >> .env.hyperbeam
|
|
34
|
-
> ```
|
|
35
|
-
|
|
36
|
-
Then verify the path exists:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
HB_DIR=$(grep '^CWD=' .env.hyperbeam | cut -d= -f2-)
|
|
40
|
-
test -d "$HB_DIR/src" && echo "HyperBEAM: OK" || echo "HyperBEAM: MISSING"
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
If `MISSING`, stop and tell the user the CWD path in `.env.hyperbeam` is invalid.
|
|
44
|
-
|
|
45
|
-
3. Run the tests:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
# Specific file (if argument provided)
|
|
49
|
-
yarn test $ARGUMENTS
|
|
50
|
-
|
|
51
|
-
# Default HyperBEAM tests
|
|
52
|
-
yarn test test/hyperbeam.test.js
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
The `HyperBEAM` class reads `.env.hyperbeam` automatically via `dotenv`, so it picks up the correct `CWD`.
|
|
56
|
-
|
|
57
|
-
4. Report results:
|
|
58
|
-
- Show pass/fail count
|
|
59
|
-
- If HyperBEAM fails to start, check Erlang/OTP is installed (`erl -eval 'halt().'`)
|
|
60
|
-
- If port conflicts, suggest running `/test-hb` again (it cleans up first)
|
|
61
|
-
- Always ensure HyperBEAM process was killed after tests
|
|
62
|
-
|
|
63
|
-
## Troubleshooting
|
|
64
|
-
|
|
65
|
-
### HyperBEAM fails to start
|
|
66
|
-
- Check Erlang is installed: `erl -eval 'halt().'`
|
|
67
|
-
- Requires Erlang/OTP 27+
|
|
68
|
-
- Check `.env.hyperbeam` CWD path is valid
|
|
69
|
-
|
|
70
|
-
### Port already in use after cleanup
|
|
71
|
-
- Wait 2-3 seconds for port release, then retry
|
|
72
|
-
- Check for zombie processes: `ps aux | grep beam`
|
|
73
|
-
|
|
74
|
-
### Tests pass locally but fail in CI
|
|
75
|
-
- CI may lack Erlang — skip HB tests with env flag
|
|
76
|
-
- Ensure HyperBEAM binary is cached in CI
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: validate
|
|
3
|
-
description: "Post-build validation. Runs tests, checks Lua pitfalls, verifies AOS script coverage, and reports results. Use after building, before deploying, or when user says 'check everything', 'are tests passing', or 'validate'."
|
|
4
|
-
argument-hint: "[test-file]"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Bash, Read, Grep, Glob
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Run post-build validation to verify code quality before declaring a task done.
|
|
10
|
-
|
|
11
|
-
## Steps
|
|
12
|
-
|
|
13
|
-
### Gate 1: Unit tests
|
|
14
|
-
|
|
15
|
-
Run in-memory AOS tests (mainnet WASM device):
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
yarn test $ARGUMENTS 2>&1
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
If `$ARGUMENTS` is empty, run the full suite: `yarn test`
|
|
22
|
-
|
|
23
|
-
If any tests fail, report the failures and stop. Do not proceed until all tests pass.
|
|
24
|
-
|
|
25
|
-
### Gate 2: HyperBEAM integration
|
|
26
|
-
|
|
27
|
-
If `HyperBEAM/` directory exists and Erlang is available:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
yarn test test/hyperbeam.test.js 2>&1
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Skip this gate if HyperBEAM is not set up. Report "skipped (no HyperBEAM)" in the summary.
|
|
34
|
-
|
|
35
|
-
### Gate 3: Custom module tests
|
|
36
|
-
|
|
37
|
-
If `custom-lua/` or `custom-wasm/` directory exists and has module files:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
ls test/*-module.test.js 2>/dev/null && yarn test test/*-module.test.js 2>&1
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Skip this gate if no custom modules. Report "skipped (no custom modules)" in the summary.
|
|
44
|
-
|
|
45
|
-
### Gate 4: Frontend tests
|
|
46
|
-
|
|
47
|
-
If `frontend/` directory exists:
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
cd frontend && npm run test:unit 2>&1
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Skip this gate if no frontend. Report "skipped (no frontend)" in the summary.
|
|
54
|
-
|
|
55
|
-
### Lua pitfalls
|
|
56
|
-
|
|
57
|
-
Run the validation script:
|
|
58
|
-
```bash
|
|
59
|
-
bash .claude/skills/validate/scripts/check-lua.sh
|
|
60
|
-
```
|
|
61
|
-
If the script reports issues, fix them before proceeding.
|
|
62
|
-
|
|
63
|
-
The script checks for:
|
|
64
|
-
- `Send().receive()` — broken on genesis-wasm
|
|
65
|
-
- Lowercase Action tags in `Handlers.add`
|
|
66
|
-
- `bint()` without `require('.bint')`
|
|
67
|
-
- `json.encode`/`json.decode` without `require('json')`
|
|
68
|
-
|
|
69
|
-
4. Verify AOS script coverage:
|
|
70
|
-
|
|
71
|
-
- List all `Handlers.add` calls in `src/*.lua`
|
|
72
|
-
- List all test files in `test/*.test.js`
|
|
73
|
-
- For each script, check that at least one test sends a message with that action
|
|
74
|
-
- Report any AOS scripts without test coverage
|
|
75
|
-
|
|
76
|
-
5. Check for uncaught error paths:
|
|
77
|
-
|
|
78
|
-
- Scripts that read `msg.Tags.*` without nil checks
|
|
79
|
-
- Scripts that use `bint()` on potentially nil values
|
|
80
|
-
- Scripts that modify state without validation
|
|
81
|
-
|
|
82
|
-
6. Report a summary:
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
## Validation Results
|
|
86
|
-
|
|
87
|
-
Gate 1 — Unit tests: X passed, Y failed
|
|
88
|
-
Gate 2 — HyperBEAM: PASS / FAIL / skipped (no HyperBEAM)
|
|
89
|
-
Gate 3 — Custom modules: PASS / FAIL / skipped (no custom modules)
|
|
90
|
-
Gate 4 — Frontend tests: PASS / FAIL / skipped (no frontend)
|
|
91
|
-
Lua pitfalls: none found (or list issues)
|
|
92
|
-
AOS script coverage: X/Y AOS scripts have tests
|
|
93
|
-
Uncaught errors: none found (or list issues)
|
|
94
|
-
|
|
95
|
-
Overall: PASS / FAIL
|
|
96
|
-
```
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Programmatic Lua pitfall checker for AOS scripts in src/
|
|
3
|
-
# Run: bash .claude/skills/validate/scripts/check-lua.sh
|
|
4
|
-
|
|
5
|
-
ERRORS=0
|
|
6
|
-
|
|
7
|
-
for f in src/*.lua; do
|
|
8
|
-
[ -f "$f" ] || continue
|
|
9
|
-
|
|
10
|
-
# Check Send().receive() — broken on genesis-wasm
|
|
11
|
-
if grep -n 'Send(.*).receive()' "$f"; then
|
|
12
|
-
echo "ERROR: $f uses Send().receive() — broken on genesis-wasm"
|
|
13
|
-
ERRORS=$((ERRORS + 1))
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
# Check lowercase action in Handlers.add
|
|
17
|
-
if grep -nP 'Handlers\.add\([^,]+,\s*"[a-z]' "$f"; then
|
|
18
|
-
echo "WARNING: $f may have lowercase Action tag"
|
|
19
|
-
ERRORS=$((ERRORS + 1))
|
|
20
|
-
fi
|
|
21
|
-
|
|
22
|
-
# Check bint without require
|
|
23
|
-
if grep -q 'bint(' "$f" && ! grep -q "require.*bint" "$f"; then
|
|
24
|
-
echo "ERROR: $f uses bint() without require('.bint')"
|
|
25
|
-
ERRORS=$((ERRORS + 1))
|
|
26
|
-
fi
|
|
27
|
-
|
|
28
|
-
# Check json without require
|
|
29
|
-
if grep -qE 'json\.(encode|decode)' "$f" && ! grep -q "require.*json" "$f"; then
|
|
30
|
-
echo "ERROR: $f uses json without require('json')"
|
|
31
|
-
ERRORS=$((ERRORS + 1))
|
|
32
|
-
fi
|
|
33
|
-
done
|
|
34
|
-
|
|
35
|
-
echo "---"
|
|
36
|
-
if [ $ERRORS -eq 0 ]; then
|
|
37
|
-
echo "Lua pitfall check: PASS (0 issues)"
|
|
38
|
-
else
|
|
39
|
-
echo "Lua pitfall check: FAIL ($ERRORS issues)"
|
|
40
|
-
exit 1
|
|
41
|
-
fi
|