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,85 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: deploy
|
|
3
|
-
description: "Deploy AOS scripts to AO testnet, local HyperBEAM, or remote HyperBEAM. Use when user says 'deploy', 'ship it', 'push to mainnet', or 'go live'. Not for local testing — use /test-hb."
|
|
4
|
-
argument-hint: "[--mainnet|--local-hb] [--lua] [lua-file ...]"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Bash, Read
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Deploy AOS Lua scripts.
|
|
10
|
-
|
|
11
|
-
## Examples
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
/deploy src/counter.lua # deploy to testnet
|
|
15
|
-
/deploy --mainnet src/counter.lua # deploy to production HyperBEAM
|
|
16
|
-
/deploy --local-hb --lua src/counter.lua # deploy to local HB in Lua mode
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Steps
|
|
20
|
-
|
|
21
|
-
1. Run the test suite and abort if any fail:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
yarn test 2>&1
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
If tests fail, stop and report. Do NOT deploy with failing tests.
|
|
28
|
-
|
|
29
|
-
2. Confirm with the user before deploying:
|
|
30
|
-
- Show which scripts will be deployed
|
|
31
|
-
- Show the target: testnet (default), `--mainnet` (remote HB), or `--local-hb` (local HB)
|
|
32
|
-
- If `$ARGUMENTS` is provided, pass them through to the deploy script
|
|
33
|
-
- If no file arguments, all `src/*.lua` files will be deployed
|
|
34
|
-
- Ask for confirmation
|
|
35
|
-
|
|
36
|
-
3. Deploy:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
# Testnet (default)
|
|
40
|
-
yarn deploy
|
|
41
|
-
yarn deploy src/counter.lua
|
|
42
|
-
|
|
43
|
-
# Remote HyperBEAM (production — uses push-1.forward.computer)
|
|
44
|
-
yarn deploy --mainnet
|
|
45
|
-
yarn deploy --mainnet src/counter.lua
|
|
46
|
-
|
|
47
|
-
# Local HyperBEAM (development)
|
|
48
|
-
yarn deploy --local-hb
|
|
49
|
-
yarn deploy --local-hb src/counter.lua
|
|
50
|
-
|
|
51
|
-
# Lua mode (any target)
|
|
52
|
-
yarn deploy --mainnet --lua
|
|
53
|
-
yarn deploy --local-hb --lua
|
|
54
|
-
|
|
55
|
-
# Custom node
|
|
56
|
-
yarn deploy --node https://push-3.forward.computer src/counter.lua
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
The script automatically:
|
|
60
|
-
- Finds the wallet from `.env.hyperbeam` CWD or `.wallet.json`
|
|
61
|
-
- Deploys each script and prints its process ID
|
|
62
|
-
- Reports success/failure for each file
|
|
63
|
-
|
|
64
|
-
4. Report the process IDs from the output.
|
|
65
|
-
|
|
66
|
-
## Important
|
|
67
|
-
|
|
68
|
-
- **Remote HB**: Uses `push-1.forward.computer` (NOT `push.forward.computer` which is push-only with no compute)
|
|
69
|
-
- **Local HB**: Requires HyperBEAM running at localhost:10001
|
|
70
|
-
- **Lua mode**: Faster but no `receive()` support — use `msg.reply()` pattern
|
|
71
|
-
- **Wallet**: Generate with `yarn keygen` if not present
|
|
72
|
-
|
|
73
|
-
## Troubleshooting
|
|
74
|
-
|
|
75
|
-
### MU 504 error on testnet
|
|
76
|
-
- AO testnet MU can be flaky — retry after 30 seconds
|
|
77
|
-
- Switch to `--mainnet` for reliable deployment
|
|
78
|
-
|
|
79
|
-
### "Wallet not found"
|
|
80
|
-
- Generate with `yarn keygen`
|
|
81
|
-
- Or check `.env.hyperbeam` CWD for existing wallet
|
|
82
|
-
|
|
83
|
-
### Process ID returned but process unreachable
|
|
84
|
-
- Testnet processes may take 10-30s to become available
|
|
85
|
-
- For HyperBEAM, verify the node is still running
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dev
|
|
3
|
-
description: "Start the Vite dev server for frontend development. Use when user says 'start the frontend', 'run dev server', or 'open the app'. Not for running tests — use /test-e2e for Playwright."
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
allowed-tools: Bash, Read
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
Start the Vite dev server for frontend development.
|
|
9
|
-
|
|
10
|
-
## Steps
|
|
11
|
-
|
|
12
|
-
1. Check if the `frontend/` directory exists:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
test -d frontend && echo "Frontend found" || echo "ERROR: No frontend/ directory. Run npx wao create with frontend option to scaffold one."
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
2. If `frontend/` doesn't exist, stop and tell the user to re-scaffold with the frontend option.
|
|
19
|
-
|
|
20
|
-
3. Install frontend dependencies if needed:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
cd frontend && npm install
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
4. Start the Vite dev server:
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
cd frontend && npm run dev
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
5. Report the local URL (usually http://localhost:5173).
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: plan
|
|
3
|
-
description: "Plan a feature before building. Writes plan.md and tasks.json so any agent can pick up the work. Use when starting a new feature, user says 'plan this', 'design this', or 'what should we build'. Not for modifying existing plans — edit plan.md directly."
|
|
4
|
-
argument-hint: "<feature-description>"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Read, Write, Grep, Glob
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Plan a feature before building it. The plan and tasks are written to files so any Claude session can pick up and execute them.
|
|
10
|
-
|
|
11
|
-
## Performance Notes
|
|
12
|
-
- Take your time researching patterns and edge cases
|
|
13
|
-
- Quality of the plan determines quality of the build — a thorough plan saves iteration cycles
|
|
14
|
-
- Consider all edge cases before writing tasks.json — it's cheaper to plan than to rebuild
|
|
15
|
-
|
|
16
|
-
## Steps
|
|
17
|
-
|
|
18
|
-
1. Read the user's feature description from `$ARGUMENTS`.
|
|
19
|
-
|
|
20
|
-
2. **Prompt the user** to choose which components to build. Ask them to select one or more:
|
|
21
|
-
- **AOS Lua scripts** — Lua scripts running on AOS processes (src/*.lua)
|
|
22
|
-
- **Custom Modules** — WASM64 (Rust) or standalone Lua modules (custom-wasm/ or custom-lua/)
|
|
23
|
-
- **HyperBEAM devices** — custom Erlang device modules (HyperBEAM/src/*.erl)
|
|
24
|
-
- **Frontend** — Vite + React browser app with wao/web (frontend/)
|
|
25
|
-
|
|
26
|
-
Wait for the user's answer before proceeding. Only generate tasks for the selected components.
|
|
27
|
-
|
|
28
|
-
3. Read the relevant docs for the selected components:
|
|
29
|
-
- AOS scripts → `docs/aos-lua.md`
|
|
30
|
-
- Custom Modules (Lua) → `docs/docs/pages/tutorials/custom-lua.mdx`
|
|
31
|
-
- Custom Modules (WASM64) → `docs/docs/pages/tutorials/rust-wasm64.mdx`
|
|
32
|
-
- HyperBEAM devices → `docs/hyperbeam-dev.md` and `docs/hyperbeam-devices.md`
|
|
33
|
-
- JS/SDK → `docs/wao-sdk.md`
|
|
34
|
-
- Frontend → `docs/wao-sdk.md` (browser section)
|
|
35
|
-
|
|
36
|
-
4. Design the feature: files, AOS scripts/devices, edge cases, test scenarios.
|
|
37
|
-
|
|
38
|
-
5. Write `plan.md` at the project root:
|
|
39
|
-
|
|
40
|
-
```markdown
|
|
41
|
-
# Plan: {feature name}
|
|
42
|
-
|
|
43
|
-
## Overview
|
|
44
|
-
{1-2 sentence summary}
|
|
45
|
-
|
|
46
|
-
## Components
|
|
47
|
-
- [ ] AOS: {yes/no — list AOS scripts}
|
|
48
|
-
- [ ] Custom Modules: {yes/no — list modules, specify Lua or WASM64}
|
|
49
|
-
- [ ] Device: {yes/no — list devices}
|
|
50
|
-
- [ ] Frontend: {yes/no — list pages/components}
|
|
51
|
-
|
|
52
|
-
## AOS Scripts
|
|
53
|
-
| Script | Action | Input Tags | State | Reply |
|
|
54
|
-
|---------|--------|------------|-------|-------|
|
|
55
|
-
|
|
56
|
-
## Devices
|
|
57
|
-
| Device | Module | Exports | Description |
|
|
58
|
-
|--------|--------|---------|-------------|
|
|
59
|
-
|
|
60
|
-
## Edge Cases
|
|
61
|
-
1. ...
|
|
62
|
-
|
|
63
|
-
## Status: PENDING APPROVAL
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
6. Write `tasks.json` at the project root. This is a JSON file so any agent can precisely parse task status. Tasks follow a strict build order based on what components are included. Pick the applicable task templates:
|
|
67
|
-
|
|
68
|
-
```json
|
|
69
|
-
{
|
|
70
|
-
"feature": "{feature name}",
|
|
71
|
-
"tracks": ["aos"],
|
|
72
|
-
"current_step": 0,
|
|
73
|
-
"tasks": [
|
|
74
|
-
{
|
|
75
|
-
"id": 1,
|
|
76
|
-
"name": "Build AOS scripts",
|
|
77
|
-
"type": "aos",
|
|
78
|
-
"skill": "/build-aos",
|
|
79
|
-
"status": "pending",
|
|
80
|
-
"files": ["src/{name}.lua"],
|
|
81
|
-
"details": "{script names, actions, input tags, state, reply format, input validation}",
|
|
82
|
-
"done_when": "AOS scripts written with all edge cases handled"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"id": 2,
|
|
86
|
-
"name": "Write in-memory AOS tests",
|
|
87
|
-
"type": "aos-test",
|
|
88
|
-
"skill": "/build-aos",
|
|
89
|
-
"status": "pending",
|
|
90
|
-
"files": ["test/{name}.test.js"],
|
|
91
|
-
"details": "{test scenarios — happy path, error paths, multi-user, boundaries}",
|
|
92
|
-
"done_when": "yarn test test/{name}.test.js — all pass"
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"id": 3,
|
|
96
|
-
"name": "Write AOS HyperBEAM integration tests",
|
|
97
|
-
"type": "aos-integration",
|
|
98
|
-
"skill": "/test-hb",
|
|
99
|
-
"status": "pending",
|
|
100
|
-
"files": ["test/hyperbeam.test.js"],
|
|
101
|
-
"details": "{deploy AOS scripts on real HyperBEAM via genesis-wasm, test through HTTP}",
|
|
102
|
-
"done_when": "yarn test test/hyperbeam.test.js — all pass"
|
|
103
|
-
}
|
|
104
|
-
]
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
**Root-level fields**:
|
|
109
|
-
- `"tracks"` — array of selected build tracks: `"aos"`, `"module"`, `"device"`, `"frontend"` (only the ones the user chose)
|
|
110
|
-
- `"current_step"` — set to `0` initially; `/build` updates this as it progresses through tasks
|
|
111
|
-
|
|
112
|
-
**Every task must include `"skill"`** — the slash command that handles it. This is how `/build` dispatches work:
|
|
113
|
-
|
|
114
|
-
| Task type | Skill |
|
|
115
|
-
|-----------|-------|
|
|
116
|
-
| `aos` | `/build-aos` |
|
|
117
|
-
| `aos-test` | `/build-aos` |
|
|
118
|
-
| `aos-integration` | `/test-hb` |
|
|
119
|
-
| `module-lua` | `/build-module` |
|
|
120
|
-
| `module-wasm` | `/build-module` |
|
|
121
|
-
| `module-test` | `/build-module` |
|
|
122
|
-
| `device` | `/build-device` (eunit tests inline — same file) |
|
|
123
|
-
| `device-integration` | `/test-device` |
|
|
124
|
-
| `frontend` | `/build-frontend` |
|
|
125
|
-
| `frontend-test` | `/build-frontend` |
|
|
126
|
-
| `frontend-integration` | `/test-e2e` |
|
|
127
|
-
| `readme` | `/readme` |
|
|
128
|
-
| `validate` | `/validate` |
|
|
129
|
-
|
|
130
|
-
**Custom Module tasks** (if building custom WASM64 or Lua modules) — add `"module"` to `tracks` array and add these to `tasks`:
|
|
131
|
-
- For Lua: `{ "type": "module-lua", "skill": "/build-module", "files": ["custom-lua/{name}.lua"], "done_when": "module written with compute function" }`
|
|
132
|
-
- For WASM64: `{ "type": "module-wasm", "skill": "/build-module", "files": ["custom-wasm/src/lib.rs"], "done_when": "cargo build succeeds, .wasm file produced" }`
|
|
133
|
-
- Tests: `{ "type": "module-test", "skill": "/build-module", "files": ["test/{name}-module.test.js"], "done_when": "yarn test test/{name}-module.test.js — all pass" }`
|
|
134
|
-
|
|
135
|
-
**Device tasks** (if building Erlang devices) — add `"device"` to `tracks` array and add these to `tasks`:
|
|
136
|
-
- `{ "type": "device", "skill": "/build-device", "files": ["HyperBEAM/src/dev_{name}.erl"], "done_when": "rebar3 compile + eunit — all pass" }`
|
|
137
|
-
- **HyperBEAM convention**: device source and eunit tests live in the same `.erl` file using `-ifdef(TEST).` guards. Do NOT create separate test files in `HyperBEAM/test/`.
|
|
138
|
-
- `{ "type": "device-integration", "skill": "/test-device", "files": ["test/{name}-device.test.js"], "done_when": "yarn test test/{name}-device.test.js — all pass" }`
|
|
139
|
-
|
|
140
|
-
**Frontend tasks** (if building frontend) — add `"frontend"` to `tracks` array and add these to `tasks`:
|
|
141
|
-
- `{ "type": "frontend", "skill": "/build-frontend", "files": ["frontend/src/{components}"], "done_when": "components render, connect to AO processes" }`
|
|
142
|
-
- `{ "type": "frontend-test", "skill": "/build-frontend", "files": ["frontend/test/{name}.test.jsx"], "done_when": "cd frontend && npm run test:unit — all pass" }`
|
|
143
|
-
- `{ "type": "frontend-integration", "skill": "/test-e2e", "files": ["frontend/e2e/{name}.spec.js"], "done_when": "cd frontend && npm run test:e2e — all pass" }`
|
|
144
|
-
|
|
145
|
-
**README task** — add after all build/test tasks, before validate:
|
|
146
|
-
- `{ "type": "readme", "skill": "/readme", "done_when": "README.md written with architecture, setup, and usage" }`
|
|
147
|
-
|
|
148
|
-
**Final validation** — always the last task:
|
|
149
|
-
- `{ "type": "validate", "skill": "/validate", "done_when": "overall PASS" }`
|
|
150
|
-
|
|
151
|
-
### IMPORTANT: Replace all placeholders with actual names
|
|
152
|
-
|
|
153
|
-
The templates above use `{name}` as a placeholder. When writing `tasks.json`, replace ALL placeholders with the actual file names from the plan. For example:
|
|
154
|
-
- `"files": ["src/{name}.lua"]` → `"files": ["src/token.lua", "src/registry.lua"]`
|
|
155
|
-
- `"files": ["test/{name}.test.js"]` → `"files": ["test/token.test.js", "test/registry.test.js"]`
|
|
156
|
-
- `"done_when": "yarn test test/{name}.test.js — all pass"` → `"done_when": "yarn test test/token.test.js test/registry.test.js — all pass"`
|
|
157
|
-
|
|
158
|
-
The `files` array must list every actual file the task will create. The `done_when` must reference the actual test commands. Never leave `{name}` as a literal string in the output.
|
|
159
|
-
|
|
160
|
-
### Task ordering rules
|
|
161
|
-
|
|
162
|
-
The build order matters. Within each component:
|
|
163
|
-
- **AOS**: AOS scripts → unit tests → integration tests
|
|
164
|
-
- **Custom Modules**: module source → HyperBEAM integration tests
|
|
165
|
-
- **Device**: Erlang module → eunit → integration tests
|
|
166
|
-
- **Frontend**: components → vitest → Playwright
|
|
167
|
-
|
|
168
|
-
Cross-component: AOS, Custom Modules, and Device can be built in parallel. Frontend depends on AOS/Device/Module being done (it calls them). Final validation is always last.
|
|
169
|
-
|
|
170
|
-
### Task numbering
|
|
171
|
-
|
|
172
|
-
Number task `id` sequentially starting from 1. Only include tasks for selected components. A pure AOS project might have 3 tasks + validate. A full project with all four components might have 12+ tasks.
|
|
173
|
-
|
|
174
|
-
7. Each task must be self-contained — a new agent reading only `plan.md` and `tasks.json` should be able to execute any task without additional context.
|
|
175
|
-
|
|
176
|
-
8. Show the plan to the user and wait for approval. After approval, update `plan.md` status to `APPROVED`.
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: readme
|
|
3
|
-
description: "Generate a comprehensive README.md from the project's plan, code, and tests. Use when user says 'write the readme', 'document this', or 'generate docs'. Not for plan.md — use /plan."
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
allowed-tools: Read, Write, Glob, Grep
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
Generate a comprehensive README.md that explains the project thoroughly — what it does, why it exists, how it works, and complete API references for every script, device, and module.
|
|
9
|
-
|
|
10
|
-
## Performance Notes
|
|
11
|
-
- Read every source file before writing — the README must be accurate, not guessed
|
|
12
|
-
- Include real code examples extracted from test files
|
|
13
|
-
- Document every handler/action, not just the main ones
|
|
14
|
-
|
|
15
|
-
## Steps
|
|
16
|
-
|
|
17
|
-
1. Read `plan.md` for the feature overview, architecture decisions, and edge cases.
|
|
18
|
-
|
|
19
|
-
2. Read **every** AOS script in `src/*.lua`. For each script, extract:
|
|
20
|
-
- Purpose and what problem it solves
|
|
21
|
-
- Every `Handlers.add()` — action name, expected tags, return data, error cases
|
|
22
|
-
- State shape (what globals/tables the script maintains)
|
|
23
|
-
- Interactions with other scripts (cross-process messages)
|
|
24
|
-
|
|
25
|
-
3. Read **every** test file in `test/*.test.js`. Extract:
|
|
26
|
-
- Real usage examples (deploy, message, dry-run patterns)
|
|
27
|
-
- Edge cases being tested (what fails, what's validated)
|
|
28
|
-
- Multi-user scenarios
|
|
29
|
-
|
|
30
|
-
4. If `custom-lua/` or `custom-wasm/` exist, read the module source:
|
|
31
|
-
- What the module does (compute function, state handling)
|
|
32
|
-
- Input/output format
|
|
33
|
-
- How it differs from standard AOS
|
|
34
|
-
|
|
35
|
-
5. If `HyperBEAM/src/dev_*.erl` files exist, read each device:
|
|
36
|
-
- Device purpose and when to use it
|
|
37
|
-
- Exported functions and their signatures
|
|
38
|
-
- State structure and lifecycle
|
|
39
|
-
- HTTP endpoints it exposes
|
|
40
|
-
|
|
41
|
-
6. If `frontend/src/` exists, read key components and hooks:
|
|
42
|
-
- What the app does from a user perspective
|
|
43
|
-
- How it connects to AOS (which hooks, which actions)
|
|
44
|
-
- Wallet integration (ArConnect)
|
|
45
|
-
|
|
46
|
-
7. Read `package.json` for available scripts and dependencies.
|
|
47
|
-
|
|
48
|
-
8. Read `scripts/deploy.js` for deployment details.
|
|
49
|
-
|
|
50
|
-
9. **Write `README.md`** at the project root with ALL of these sections:
|
|
51
|
-
|
|
52
|
-
```markdown
|
|
53
|
-
# {Project Name}
|
|
54
|
-
|
|
55
|
-
{2-3 sentence description: what it does, what platform it runs on, who it's for}
|
|
56
|
-
|
|
57
|
-
## Overview
|
|
58
|
-
|
|
59
|
-
{Expanded explanation — what problem does this solve? What are the key features?
|
|
60
|
-
List each major capability as a bullet point with a brief explanation.}
|
|
61
|
-
|
|
62
|
-
## How It Works
|
|
63
|
-
|
|
64
|
-
{Explain the architecture in plain language:
|
|
65
|
-
- What happens when a user interacts with the app
|
|
66
|
-
- How AOS scripts process messages
|
|
67
|
-
- How state is maintained
|
|
68
|
-
- If HyperBEAM: how devices fit in the pipeline
|
|
69
|
-
- If frontend: how the browser connects to AOS}
|
|
70
|
-
|
|
71
|
-
## Project Structure
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
{file tree with inline comments for every important file}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Prerequisites
|
|
78
|
-
|
|
79
|
-
- Node.js 20+
|
|
80
|
-
- Arweave wallet (`yarn keygen` to generate)
|
|
81
|
-
- {Erlang/OTP 27+ if devices}
|
|
82
|
-
- {ArConnect browser extension if frontend}
|
|
83
|
-
|
|
84
|
-
## Setup
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
yarn install
|
|
88
|
-
yarn keygen
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## AOS Script Reference
|
|
92
|
-
|
|
93
|
-
### {script_name}.lua
|
|
94
|
-
|
|
95
|
-
{What this script does and why it exists}
|
|
96
|
-
|
|
97
|
-
**State**: {describe the tables/globals maintained}
|
|
98
|
-
|
|
99
|
-
| Action | Tags | Returns | Description |
|
|
100
|
-
|--------|------|---------|-------------|
|
|
101
|
-
| {action} | {required tags} | {return data} | {what it does} |
|
|
102
|
-
|
|
103
|
-
**Example** (from tests):
|
|
104
|
-
```js
|
|
105
|
-
{real code example extracted from test file}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
**Edge Cases**:
|
|
109
|
-
- {what happens on invalid input}
|
|
110
|
-
- {what happens on insufficient balance, etc.}
|
|
111
|
-
|
|
112
|
-
{repeat for every script}
|
|
113
|
-
|
|
114
|
-
## Device Reference (if applicable)
|
|
115
|
-
|
|
116
|
-
### dev_{name}.erl
|
|
117
|
-
|
|
118
|
-
{What this device does}
|
|
119
|
-
|
|
120
|
-
| Function | Input | Output | Description |
|
|
121
|
-
|----------|-------|--------|-------------|
|
|
122
|
-
| {function} | {params} | {return} | {what it does} |
|
|
123
|
-
|
|
124
|
-
{repeat for every device}
|
|
125
|
-
|
|
126
|
-
## Custom Module Reference (if applicable)
|
|
127
|
-
|
|
128
|
-
### {module_name}
|
|
129
|
-
|
|
130
|
-
{What this module does, how it differs from standard AOS}
|
|
131
|
-
|
|
132
|
-
## Frontend (if applicable)
|
|
133
|
-
|
|
134
|
-
{What the app looks like, what users can do}
|
|
135
|
-
|
|
136
|
-
### Components
|
|
137
|
-
- {component} — {what it renders}
|
|
138
|
-
|
|
139
|
-
### Hooks
|
|
140
|
-
- {hook} — {what state it manages}
|
|
141
|
-
|
|
142
|
-
## Testing
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
yarn test test/aos.test.js # in-memory AOS (fast)
|
|
146
|
-
yarn test test/{script}.test.js # specific script tests
|
|
147
|
-
yarn test test/hyperbeam.test.js # HyperBEAM integration
|
|
148
|
-
cd frontend && npm run test:unit # frontend vitest
|
|
149
|
-
cd frontend && npm run test:e2e # Playwright E2E
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## Deploy
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
yarn keygen # generate wallet (first time only)
|
|
156
|
-
yarn deploy # all scripts to AO testnet
|
|
157
|
-
yarn deploy src/{script}.lua # single script
|
|
158
|
-
yarn deploy --local-hb # local HyperBEAM
|
|
159
|
-
yarn deploy --mainnet # remote HyperBEAM (production)
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### How Deploy Works
|
|
163
|
-
|
|
164
|
-
{Explain: reads src/*.lua, spawns a process per file.
|
|
165
|
-
On testnet: Eval message. On HyperBEAM: ao.deploy().
|
|
166
|
-
Each script gets its own process ID printed to console.}
|
|
167
|
-
|
|
168
|
-
### Verify
|
|
169
|
-
|
|
170
|
-
- [aolink](https://aolink.ar.io/#/entity/{PROCESS_ID}) — inspect AOS process
|
|
171
|
-
- [lunar](https://lunar.ar.io/#/process/{PROCESS_ID}) — inspect HyperBEAM process
|
|
172
|
-
|
|
173
|
-
## Built With
|
|
174
|
-
|
|
175
|
-
- [WAO](https://docs.wao.eco) — SDK for AO and HyperBEAM
|
|
176
|
-
- [AOS](https://ao.arweave.dev) — Lua processes on the AO computer
|
|
177
|
-
{add others as relevant}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
10. After writing, re-read the README and verify:
|
|
181
|
-
- Every AOS action from every script is documented
|
|
182
|
-
- Every device function is documented
|
|
183
|
-
- Code examples are real (from test files), not made up
|
|
184
|
-
- Edge cases are mentioned
|
|
185
|
-
|
|
186
|
-
11. Update the task status to `"done"` in `tasks.json`.
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: report
|
|
3
|
-
description: "Report progress on the current plan. Reads plan.md and tasks.json, shows status of each task and overall progress. Use when user says 'show progress', 'where are we', 'status', or 'what's done'. Not for running tests — use /validate."
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
allowed-tools: Read, Bash, Grep, Glob
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
Report the current progress of the build plan.
|
|
9
|
-
|
|
10
|
-
## Steps
|
|
11
|
-
|
|
12
|
-
1. Check if `plan.md` and `tasks.json` exist. If not, report "No active plan. Run /plan first."
|
|
13
|
-
|
|
14
|
-
2. Read `plan.md` for the feature name and components.
|
|
15
|
-
|
|
16
|
-
3. Read `tasks.json` and count tasks by status:
|
|
17
|
-
- **done**: completed tasks
|
|
18
|
-
- **in_progress**: currently being worked on
|
|
19
|
-
- **pending**: not started yet
|
|
20
|
-
|
|
21
|
-
4. For each task, show a one-line summary:
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
## Progress: {feature name}
|
|
25
|
-
|
|
26
|
-
✔ Task 1: Build AOS Lua handlers
|
|
27
|
-
✔ Task 2: Write in-memory AOS tests
|
|
28
|
-
▶ Task 3: Write AOS HyperBEAM integration tests
|
|
29
|
-
· Task 4: Build frontend components
|
|
30
|
-
· Task 5: Write frontend vitest tests
|
|
31
|
-
· Task 6: Write frontend Playwright integration tests
|
|
32
|
-
· Task 7: Validate all gates
|
|
33
|
-
|
|
34
|
-
Progress: 2/7 done, 1 in progress
|
|
35
|
-
|
|
36
|
-
Components:
|
|
37
|
-
AOS: ██████░░░░ tests passing
|
|
38
|
-
Device: ░░░░░░░░░░ not started
|
|
39
|
-
Frontend: ░░░░░░░░░░ not started
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
5. If any task is `in_progress`, run a quick check on its "done when" condition:
|
|
43
|
-
- aos-test: run `yarn test` and report pass/fail count
|
|
44
|
-
- device: run `rebar3 eunit --module=dev_{name}` and report (eunit tests are inline)
|
|
45
|
-
- module-test: run `yarn test test/{name}-module.test.js` and report
|
|
46
|
-
- frontend-test: run `cd frontend && npm run test:unit` and report
|
|
47
|
-
- For other types, just report the status
|
|
48
|
-
|
|
49
|
-
6. Report any blockers or issues found.
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: team
|
|
3
|
-
description: "Set up an agent team for parallel WAO development. Creates coordinated teammates for building features, researching patterns, debugging, or cross-layer work. Use when user says 'work in parallel', 'split the work', 'team up', or 'use multiple agents'."
|
|
4
|
-
argument-hint: "<workflow>"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
Set up an agent team for parallel WAO development.
|
|
9
|
-
|
|
10
|
-
The argument `$ARGUMENTS` describes the workflow. Common workflows:
|
|
11
|
-
|
|
12
|
-
## Examples
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
/team build # parallel feature development
|
|
16
|
-
/team debug # competing hypothesis debugging
|
|
17
|
-
/team device # cross-layer Erlang + JS development
|
|
18
|
-
/team research # one researches docs, another implements
|
|
19
|
-
/team module # custom module development (WASM + Lua)
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Workflows
|
|
23
|
-
|
|
24
|
-
### `build` — Parallel Feature Development
|
|
25
|
-
|
|
26
|
-
Create an agent team with teammates that own separate files:
|
|
27
|
-
- **Lua teammate**: builds AOS scripts in `src/`, reads `docs/aos-lua.md` first
|
|
28
|
-
- **Test teammate**: writes tests in `test/`, reads `docs/wao-sdk.md` first
|
|
29
|
-
- **Integration teammate**: verifies everything works together, runs `yarn test`
|
|
30
|
-
|
|
31
|
-
Each teammate should own distinct files to avoid conflicts. The Lua teammate never edits test files, the test teammate never edits Lua files.
|
|
32
|
-
|
|
33
|
-
Require plan approval before teammates start implementing.
|
|
34
|
-
|
|
35
|
-
**File ownership per teammate:**
|
|
36
|
-
- Lua: `src/*.lua` only
|
|
37
|
-
- Test: `test/*.test.js` only
|
|
38
|
-
- Integration: runs `yarn test`, reports results, doesn't edit files
|
|
39
|
-
|
|
40
|
-
**Acceptance criteria per task:**
|
|
41
|
-
- Lua: AOS script compiles, follows patterns from `docs/aos-lua.md`
|
|
42
|
-
- Test: all assertions pass when run with `yarn test test/{file}.test.js`
|
|
43
|
-
- Integration: full `yarn test` passes with no regressions
|
|
44
|
-
|
|
45
|
-
### `research` — Research and Build
|
|
46
|
-
|
|
47
|
-
Create an agent team:
|
|
48
|
-
- **Researcher**: reads the relevant docs (`docs/aos-lua.md`, `docs/wao-sdk.md`, `docs/hyperbeam-devices.md`) and reports patterns, gotchas, and examples back to the team
|
|
49
|
-
- **Builder**: implements the feature based on the researcher's findings
|
|
50
|
-
- **Reviewer**: reviews the implementation for correctness and WAO best practices
|
|
51
|
-
|
|
52
|
-
### `debug` — Competing Hypotheses
|
|
53
|
-
|
|
54
|
-
Create an agent team with 3-4 teammates that each investigate a different hypothesis:
|
|
55
|
-
- One checks port conflicts and stale processes (`lsof`, `pkill`)
|
|
56
|
-
- One reads `docs/debug.md` and matches error messages against known issues
|
|
57
|
-
- One examines the test code and Lua source for logic errors
|
|
58
|
-
- One checks HyperBEAM configuration and `.env.hyperbeam`
|
|
59
|
-
|
|
60
|
-
Have teammates challenge each other's findings. The theory that survives debate is most likely the root cause.
|
|
61
|
-
|
|
62
|
-
### `device` — Cross-Layer Device Development
|
|
63
|
-
|
|
64
|
-
Create an agent team for building a HyperBEAM device:
|
|
65
|
-
- **Erlang teammate**: writes the device module in `HyperBEAM/src/`, reads `docs/hyperbeam-dev.md`
|
|
66
|
-
- **JS teammate**: writes the integration test in `test/`, reads `docs/wao-sdk.md`
|
|
67
|
-
- **Compile teammate**: handles `cd HyperBEAM && rebar3 compile`, fixes compilation errors
|
|
68
|
-
|
|
69
|
-
**File ownership:**
|
|
70
|
-
- Erlang: `HyperBEAM/src/dev_*.erl` only
|
|
71
|
-
- JS: `test/*.device.test.js` only
|
|
72
|
-
- Compile: `HyperBEAM/` (compile and fix only)
|
|
73
|
-
|
|
74
|
-
### `review` — Parallel Code Review
|
|
75
|
-
|
|
76
|
-
Create an agent team with 3 reviewers:
|
|
77
|
-
- **Security reviewer**: checks for wallet exposure, injection, auth bypass
|
|
78
|
-
- **Correctness reviewer**: validates AOS script logic, state management, edge cases
|
|
79
|
-
- **Test coverage reviewer**: ensures all AOS scripts have tests, edge cases covered
|
|
80
|
-
|
|
81
|
-
### `module` — Custom Module Development
|
|
82
|
-
|
|
83
|
-
Create an agent team for building custom WASM64 or Lua modules:
|
|
84
|
-
- **Module teammate**: writes the custom module source (custom-wasm/src/lib.rs or custom-lua/{name}.lua)
|
|
85
|
-
- **Test teammate**: writes HyperBEAM integration tests in `test/`, reads SDK docs for cacheBinary/cacheScript patterns
|
|
86
|
-
- **Build teammate**: handles compilation (cargo build for WASM, HyperBEAM startup for Lua)
|
|
87
|
-
|
|
88
|
-
**File ownership:**
|
|
89
|
-
- Module: `custom-wasm/` or `custom-lua/` only
|
|
90
|
-
- Test: `test/*-module.test.js` only
|
|
91
|
-
- Build: runs compilation and HB processes, doesn't edit source
|
|
92
|
-
|
|
93
|
-
## Guidelines
|
|
94
|
-
|
|
95
|
-
- Assign 5-6 tasks per teammate to keep everyone productive
|
|
96
|
-
- Each teammate should own separate files — never have two teammates edit the same file
|
|
97
|
-
- Workers report back test results, not just "done"
|
|
98
|
-
- Use delegate mode (Shift+Tab) if you want the lead to only coordinate, not code
|
|
99
|
-
- Teammates load CLAUDE.md and docs/ automatically — give task-specific context in spawn prompts
|
|
100
|
-
- Use Shift+Up/Down to cycle between teammates and message them directly
|
|
101
|
-
- Always clean up the team when done (tell the lead to clean up)
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: test
|
|
3
|
-
description: "Run in-memory AOS tests (legacynet units). Fast unit testing — no server needed. Use when testing AOS scripts or after code changes. Not for HyperBEAM integration tests — use /test-hb instead."
|
|
4
|
-
argument-hint: "[test-file]"
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Bash, Read, Grep
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Run in-memory AOS tests. For HyperBEAM integration tests, use `/test-hb` instead.
|
|
10
|
-
|
|
11
|
-
## Examples
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
/test # run all tests
|
|
15
|
-
/test test/token.test.js # run specific file
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Steps
|
|
19
|
-
|
|
20
|
-
1. Kill any stale `beam.smp` or HyperBEAM processes that may be lingering on ports 10000-10010:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
lsof -ti :10000-10010 | xargs -r kill -9 2>/dev/null || true
|
|
24
|
-
pkill -f beam.smp 2>/dev/null || true
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
2. Run the tests:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# Specific file (if argument provided)
|
|
31
|
-
yarn test $ARGUMENTS
|
|
32
|
-
|
|
33
|
-
# All tests (if no argument)
|
|
34
|
-
yarn test
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
3. Report results:
|
|
38
|
-
- Show pass/fail count
|
|
39
|
-
- If failures, show the failing test names and error messages
|
|
40
|
-
- Suggest fixes if the errors are obvious
|
|
41
|
-
|
|
42
|
-
## Troubleshooting
|
|
43
|
-
|
|
44
|
-
### Tests hang indefinitely
|
|
45
|
-
- Likely cause: `Send().receive()` in Lua source — does NOT work on genesis-wasm
|
|
46
|
-
- Fix: Replace with fire-and-forget `Send()` + separate handler
|
|
47
|
-
- Also check for infinite loops in Lua state
|
|
48
|
-
|
|
49
|
-
### "Cannot find module wao/test"
|
|
50
|
-
- Run `yarn install` to ensure dependencies are installed
|
|
51
|
-
- Check `package.json` has `"wao"` in dependencies
|
|
52
|
-
|
|
53
|
-
### WASM memory error
|
|
54
|
-
- Node 24+ enables wasm-memory64 by default — DO NOT pass `--experimental-wasm-memory64` (it's rejected with "bad option")
|
|
55
|
-
- Node 22: set `NODE_OPTIONS=--experimental-wasm-memory64` before running
|
|
56
|
-
- Node.js 22+ required
|