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
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# WAO App
|
|
2
|
+
|
|
3
|
+
This is a WAO application — a decentralized app built on AOS (ao Standard) and HyperBEAM.
|
|
4
|
+
|
|
5
|
+
See @package.json for available commands.
|
|
6
|
+
|
|
7
|
+
## Auto-Start
|
|
8
|
+
|
|
9
|
+
On session start, the SessionStart hook checks for `tasks.json` and `plan.md`:
|
|
10
|
+
- **If they exist**: Resume the build — read `tasks.json`, find the first pending/in_progress task, and continue the `/build` workflow automatically. Read `.claude/skills/build/SKILL.md` and follow its resume instructions.
|
|
11
|
+
- **If they don't exist**: Wait for the user to run `/build <feature>` to start a new build.
|
|
12
|
+
|
|
13
|
+
## Stack
|
|
14
|
+
|
|
15
|
+
- **AOS scripts** in `src/` — Lua process logic
|
|
16
|
+
- **Custom modules** in `custom-lua/` or `custom-wasm/` — standalone Lua or WASM64 (Rust) execution modules
|
|
17
|
+
- **JS tests** in `test/` — Node.js built-in test runner with `wao/test`
|
|
18
|
+
- **Deploy script** in `scripts/deploy.js` — deploys Lua source to testnet, local HB, or remote HB
|
|
19
|
+
- **HyperBEAM** — local HyperBEAM node (path configured in `.env.hyperbeam` CWD)
|
|
20
|
+
- **Frontend** in `frontend/` — Vite + React SPA with `wao/web` (optional)
|
|
21
|
+
|
|
22
|
+
## Two Ways to Test AOS
|
|
23
|
+
|
|
24
|
+
### In-Memory AOS (legacynet units)
|
|
25
|
+
Runs AOS WASM directly in Node.js. No server, no Erlang. Instant. Use for fast unit testing of AOS script logic.
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
import { AO, acc } from "wao/test"
|
|
29
|
+
const ao = await new AO().init(acc[0])
|
|
30
|
+
const { p } = await ao.deploy({ src_data })
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### HyperBEAM AOS
|
|
34
|
+
Spawns a real Erlang HyperBEAM node. AOS processes run on the HyperBEAM stack via `genesis-wasm` device. Messages go through HTTP with slot-based scheduling. Use for integration testing the full production stack.
|
|
35
|
+
|
|
36
|
+
```js
|
|
37
|
+
import { HyperBEAM } from "wao/test"
|
|
38
|
+
const hbeam = await new HyperBEAM({ reset: true }).ready()
|
|
39
|
+
const hb = hbeam.hb // HB HTTP client
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
You can also run AOS through HyperBEAM by passing `hb` to AO:
|
|
43
|
+
```js
|
|
44
|
+
import { AO } from "wao"
|
|
45
|
+
const ao = await new AO({ hb: hbeam.url }).init(jwk)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Persistent Workflow
|
|
49
|
+
|
|
50
|
+
The build workflow is file-based so any session can pick up where another left off:
|
|
51
|
+
|
|
52
|
+
- **`plan.md`** — feature plan with AOS scripts, edge cases, test scenarios, validation gates
|
|
53
|
+
- **`tasks.json`** — ordered task list with status, files, details, and done criteria
|
|
54
|
+
|
|
55
|
+
On session start, check if `plan.md` and `tasks.json` exist. If they do, read them and continue from the first pending task. Update task status as you work.
|
|
56
|
+
|
|
57
|
+
## Validation Gates
|
|
58
|
+
|
|
59
|
+
All gates must pass before completing a task:
|
|
60
|
+
|
|
61
|
+
1. **Unit tests** — `yarn test` — in-memory AOS using mainnet WASM device (sub-second)
|
|
62
|
+
2. **HyperBEAM integration** — `yarn test test/hyperbeam.test.js` — full Erlang stack (skip if no HyperBEAM)
|
|
63
|
+
3. **Frontend tests** — `cd frontend && npm run test:unit` — vitest components (skip if no frontend)
|
|
64
|
+
|
|
65
|
+
The `TaskCompleted` hook enforces these gates automatically. Use `/validate` to run them manually.
|
|
66
|
+
|
|
67
|
+
## Dashboard
|
|
68
|
+
|
|
69
|
+
Real-time build progress dashboard with SSE updates.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
yarn start # API server (:3333) + Vite dev server (:5174)
|
|
73
|
+
yarn start:api # API server only (:3333)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
- **API**: `http://localhost:3333` — serves `/api/progress` (JSON) and `/api/events` (SSE)
|
|
77
|
+
- **UI**: `http://localhost:5174` — Vite dev server with proxy to API
|
|
78
|
+
- **MCP**: `get_progress` and `open_dashboard` tools via @.mcp.json (auto-discovered by Claude Code)
|
|
79
|
+
|
|
80
|
+
The API server watches `tasks.json` and `plan.md` and pushes changes to connected dashboards via SSE. The dashboard falls back to 3s polling if SSE is unavailable.
|
|
81
|
+
|
|
82
|
+
## Commands
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
yarn start # dashboard (API + Vite)
|
|
86
|
+
yarn test # all unit tests
|
|
87
|
+
yarn test test/aos.test.js # in-memory AOS (fast)
|
|
88
|
+
yarn test test/hyperbeam.test.js # HyperBEAM integration
|
|
89
|
+
cd frontend && npm run test:unit # frontend vitest
|
|
90
|
+
cd frontend && npm run test:e2e # frontend Playwright
|
|
91
|
+
yarn deploy src/<name>.lua # testnet (default)
|
|
92
|
+
yarn deploy --local-hb # local HyperBEAM (genesis-wasm)
|
|
93
|
+
yarn deploy --local-hb --lua # local HyperBEAM (Lua mode)
|
|
94
|
+
yarn deploy --mainnet # remote HyperBEAM (push-1)
|
|
95
|
+
yarn deploy --mainnet --lua # remote HyperBEAM (Lua mode)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Runs: `node --test --test-concurrency=1` (Node 24+; on Node 22 prefix with `--experimental-wasm-memory64`)
|
|
99
|
+
|
|
100
|
+
## Deployment Targets
|
|
101
|
+
|
|
102
|
+
| Target | Command | Config |
|
|
103
|
+
|--------|---------|--------|
|
|
104
|
+
| AO Testnet | `yarn deploy` | `new AO().init(jwk)` via aoconnect |
|
|
105
|
+
| Local HB (Legacynet) | `yarn deploy --local-hb` | `new AO({ hb: "http://localhost:10001" }).init(jwk)` |
|
|
106
|
+
| Local HB (Lua) | `yarn deploy --local-hb --lua` | `new AO({ hb: url, mode: "lua" }).init(jwk)` |
|
|
107
|
+
| Remote HB (Production) | `yarn deploy --mainnet` | `new AO({ hb: "https://push-1.forward.computer" }).init(jwk)` |
|
|
108
|
+
|
|
109
|
+
- **Remote nodes**: Use `push-1` through `push-10` for full compute. `push.forward.computer` is push-only (no compute).
|
|
110
|
+
- **Lua mode**: Faster but no `receive()` — use `msg.reply()` pattern instead.
|
|
111
|
+
- **Wallet**: Run `yarn keygen` to generate `.wallet.json`.
|
|
112
|
+
- **HyperBEAM fork**: `git clone -b wao-final https://github.com/weavedb/HyperBEAM.git`
|
|
113
|
+
|
|
114
|
+
### Frontend Commands
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
cd frontend && npm run dev # Vite dev server (port 5173)
|
|
118
|
+
cd frontend && npm run test:unit # vitest component tests
|
|
119
|
+
cd frontend && npm run test:e2e # Playwright E2E tests
|
|
120
|
+
cd frontend && npm run build # production build
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Key Imports
|
|
124
|
+
|
|
125
|
+
### Testing (`wao/test`)
|
|
126
|
+
```js
|
|
127
|
+
import { AO, acc } from "wao/test" // in-memory AOS
|
|
128
|
+
import { HB, HyperBEAM, acc } from "wao/test" // HyperBEAM
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Production (`wao`)
|
|
132
|
+
```js
|
|
133
|
+
import { AO, AR, GQL, HB } from "wao"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Browser (`wao/web`)
|
|
137
|
+
```js
|
|
138
|
+
import { AO, AR } from "wao/web" // browser only — NOT wao/test
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Use `wao/web` for frontend code. Use `wao/test` for Node.js tests only.
|
|
142
|
+
|
|
143
|
+
## Wallet
|
|
144
|
+
|
|
145
|
+
Admin wallet auto-generated at `.wallet.json` (gitignored). This is an Arweave JWK used for deploy and HyperBEAM signing.
|
|
146
|
+
|
|
147
|
+
## HyperBEAM
|
|
148
|
+
|
|
149
|
+
- Default port: **10001**
|
|
150
|
+
- Local node path: configured via `CWD` in `.env.hyperbeam`
|
|
151
|
+
- `HyperBEAM` class manages the Erlang server lifecycle
|
|
152
|
+
- `HB` class is the HTTP client that talks to it
|
|
153
|
+
|
|
154
|
+
## Reference Docs
|
|
155
|
+
|
|
156
|
+
Read these on-demand when building features — they contain complete API references. Don't load all at once; read the one relevant to your current task:
|
|
157
|
+
|
|
158
|
+
| When you're... | Read this |
|
|
159
|
+
|----------------|-----------|
|
|
160
|
+
| Writing JS code (tests, deploy) | `docs/wao-sdk.md` — AO, HB, AR, GQL, Process handle APIs |
|
|
161
|
+
| Writing AOS scripts | `docs/aos-lua.md` — msg object, ao globals, patterns, blueprints |
|
|
162
|
+
| Building custom Lua modules | `docs/docs/pages/tutorials/custom-lua.mdx` — lua@5.3a device, compute function |
|
|
163
|
+
| Building custom WASM64 modules | `docs/docs/pages/tutorials/rust-wasm64.mdx` — wasm-64@1.0 device, Rust no_std |
|
|
164
|
+
| Working with HyperBEAM | `docs/hyperbeam-devices.md` — device catalog, endpoints, config |
|
|
165
|
+
| Building Erlang devices | `docs/hyperbeam-dev.md` — device protocol, templates, state |
|
|
166
|
+
| Debugging issues | `docs/debug.md` — known issues, error table, fixes |
|
|
167
|
+
| Building frontend | `docs/wao-sdk.md` (browser section) — wao/web, ArConnect |
|
|
168
|
+
|
|
169
|
+
## Agent Teams
|
|
170
|
+
|
|
171
|
+
For complex tasks that benefit from parallel work, create an agent team. Teammates run as separate Claude Code sessions with their own context windows, coordinating through a shared task list.
|
|
172
|
+
|
|
173
|
+
**When to use teams** (instead of working solo or using subagents):
|
|
174
|
+
- Building multiple independent features in parallel (each teammate owns separate files)
|
|
175
|
+
- Research + build: one teammate researches patterns in docs/, another implements
|
|
176
|
+
- Debug with competing hypotheses: teammates test different theories simultaneously
|
|
177
|
+
- Cross-layer work: one teammate on AOS scripts, one on JS tests, one on Erlang devices
|
|
178
|
+
|
|
179
|
+
**When NOT to use teams:**
|
|
180
|
+
- Sequential tasks or same-file edits (coordination overhead > benefit)
|
|
181
|
+
- Simple features that one session can handle
|
|
182
|
+
- Quick fixes or single-script changes (use subagents instead)
|
|
183
|
+
|
|
184
|
+
**Team patterns for WAO:**
|
|
185
|
+
```
|
|
186
|
+
# Parallel feature development
|
|
187
|
+
Create a team: one teammate builds the AOS script in src/,
|
|
188
|
+
another writes tests in test/, a third handles deployment config.
|
|
189
|
+
|
|
190
|
+
# Research and build
|
|
191
|
+
Create a team: one teammate researches the AOS patterns in docs/aos-lua.md,
|
|
192
|
+
another implements the AOS script based on findings.
|
|
193
|
+
|
|
194
|
+
# Debug investigation
|
|
195
|
+
Create a team with 3 teammates to investigate the timeout from different angles:
|
|
196
|
+
port conflicts, WASM memory, and HyperBEAM configuration.
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Use `/team` to set up common team configurations.
|
|
200
|
+
|
|
201
|
+
## Skills
|
|
202
|
+
|
|
203
|
+
Slash commands in `.claude/skills/`:
|
|
204
|
+
|
|
205
|
+
### Build workflow
|
|
206
|
+
- `/build` — full build workflow (plan -> build -> test -> validate -> README). Orchestrates all steps, manages tasks.json throughout. Supports resume — picks up from `current_step` if interrupted.
|
|
207
|
+
- `/plan` — plan a feature (writes plan.md + tasks.json for persistent workflow)
|
|
208
|
+
- `/validate` — post-build validation (tests, Lua pitfalls, coverage)
|
|
209
|
+
- `/readme` — generate comprehensive README.md from plan, code, and tests
|
|
210
|
+
|
|
211
|
+
### Build steps (called by `/build` or standalone)
|
|
212
|
+
- `/build-aos` — build AOS scripts + in-memory tests, iterate until 100% pass
|
|
213
|
+
- `/build-module` — build custom WASM64 (Rust) or standalone Lua modules + HyperBEAM integration tests
|
|
214
|
+
- `/build-device` — build Erlang device + eunit tests, iterate until 100% pass
|
|
215
|
+
- `/build-frontend` — build Vite components + vitest tests, iterate until 100% pass
|
|
216
|
+
|
|
217
|
+
### Test steps (called by `/build` or standalone)
|
|
218
|
+
- `/test` — run in-memory AOS tests
|
|
219
|
+
- `/test-hb` — run HyperBEAM integration tests
|
|
220
|
+
- `/test-device` — WAO SDK integration tests for Erlang devices
|
|
221
|
+
- `/test-e2e` — Playwright E2E with live HyperBEAM backend
|
|
222
|
+
|
|
223
|
+
### Other
|
|
224
|
+
- `/report` — show progress on the current plan (task status, test results)
|
|
225
|
+
- `/deploy` — deploy Lua source to testnet, local HB, or remote HB (with pre-deploy validation)
|
|
226
|
+
- `/create-aos` — scaffold new AOS script + test
|
|
227
|
+
- `/create-module` — scaffold new custom module (WASM64 or Lua) + test
|
|
228
|
+
- `/create-device` — scaffold new HyperBEAM device + test
|
|
229
|
+
- `/debug` — troubleshoot issues
|
|
230
|
+
- `/team` — set up an agent team for parallel development
|
|
231
|
+
- `/dev` — start Vite dev server for frontend
|
|
232
|
+
|
|
233
|
+
## Subagents
|
|
234
|
+
|
|
235
|
+
Specialized agents in `.claude/agents/`:
|
|
236
|
+
- `builder` — general-purpose feature builder (Lua + tests + iterate)
|
|
237
|
+
- `tester` — test specialist (failures, debugging, verification)
|
|
238
|
+
- `device-builder` — Erlang device specialist (protocol, compilation, eunit)
|
|
239
|
+
|
|
240
|
+
## Rules
|
|
241
|
+
|
|
242
|
+
Path-specific rules in `.claude/rules/` auto-inject when editing matching files:
|
|
243
|
+
- `lua.md` — AOS script patterns (triggers on `src/**/*.lua`)
|
|
244
|
+
- `testing.md` — test patterns (triggers on `test/**/*.js`)
|
|
245
|
+
- `hyperbeam.md` — HyperBEAM device patterns (triggers on `HyperBEAM/**/*.erl`)
|
|
246
|
+
- `deploy.md` — deployment conventions (triggers on `scripts/**/*.js`)
|
|
247
|
+
- `frontend.md` — Frontend patterns (triggers on `frontend/**/*.{jsx,tsx,js}`)
|
|
248
|
+
|
|
249
|
+
## Personal Preferences
|
|
250
|
+
|
|
251
|
+
Create `CLAUDE.local.md` for personal project-specific preferences (auto-gitignored):
|
|
252
|
+
- Your sandbox URLs
|
|
253
|
+
- Your preferred test files
|
|
254
|
+
- Local HyperBEAM overrides
|
|
255
|
+
|
|
256
|
+
## Auto Memory
|
|
257
|
+
|
|
258
|
+
Claude automatically saves useful learnings as you work (build patterns, debug insights, architecture notes) to `~/.claude/projects/<project>/memory/MEMORY.md` (per-machine, not committed). Use `/memory` to view and edit saved memories.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
|
|
2
|
+
#### 1. Create an APP
|
|
3
|
+
|
|
4
|
+
```bash
|
|
5
|
+
npx wao create myapp && cd myapp
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
#### 2. Run WAO Proxy
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npx wao proxy
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
#### 3. Connect the Browser to the Proxy
|
|
15
|
+
|
|
16
|
+
Go to [the web app](https://preview.wao.eco) and open `Networks`, then click `Proxy`.
|
|
17
|
+
|
|
18
|
+
#### 4. Run Test
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
yarn test test/hyperbeam.test.js
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
#### 5. Deploy
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# AO testnet (default)
|
|
28
|
+
yarn deploy src/counter.lua
|
|
29
|
+
|
|
30
|
+
# Local HyperBEAM (genesis-wasm)
|
|
31
|
+
yarn deploy --local-hb src/counter.lua
|
|
32
|
+
|
|
33
|
+
# Remote HyperBEAM (production)
|
|
34
|
+
yarn deploy --mainnet src/counter.lua
|
|
35
|
+
|
|
36
|
+
# Lua mode (any target)
|
|
37
|
+
yarn deploy --local-hb --lua src/counter.lua
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
### Deployment Guide
|
|
43
|
+
|
|
44
|
+
| Target | Command | Config |
|
|
45
|
+
|--------|---------|--------|
|
|
46
|
+
| AO Testnet | `yarn deploy` | `new AO().init(jwk)` |
|
|
47
|
+
| Local HB (Legacynet) | `yarn deploy --local-hb` | `new AO({ hb: "http://localhost:10001" }).init(jwk)` |
|
|
48
|
+
| Local HB (Lua) | `yarn deploy --local-hb --lua` | `new AO({ hb: url, mode: "lua" }).init(jwk)` |
|
|
49
|
+
| Remote HB | `yarn deploy --mainnet` | `new AO({ hb: "https://push-1.forward.computer" }).init(jwk)` |
|
|
50
|
+
|
|
51
|
+
**Wallet**: Run `yarn keygen` to generate `.wallet.json` (gitignored).
|
|
52
|
+
|
|
53
|
+
**Remote nodes**: Use `push-1` through `push-10` for full compute. `push.forward.computer` is push-only (no compute).
|
|
54
|
+
|
|
55
|
+
**HyperBEAM fork**: `git clone -b wao-final https://github.com/weavedb/HyperBEAM.git && cd HyperBEAM && rebar3 compile`
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### Vibe Engineering
|
|
60
|
+
|
|
61
|
+
This project includes a Claude Code toolchain for agent-assisted development.
|
|
62
|
+
|
|
63
|
+
- **`CLAUDE.md`** — project context loaded automatically by the agent
|
|
64
|
+
- **`docs/`** — full API references read on-demand:
|
|
65
|
+
- `wao-sdk.md` — WAO SDK API (AO, HB, AR, GQL, all methods)
|
|
66
|
+
- `aos-lua.md` — AOS scripts (msg, ao globals, blueprints)
|
|
67
|
+
- `hyperbeam-devices.md` — HyperBEAM device catalog (endpoints, config)
|
|
68
|
+
- `hyperbeam-dev.md` — Building custom devices (Erlang protocol, templates)
|
|
69
|
+
- `debug.md` — Troubleshooting guide (known issues, fixes)
|
|
70
|
+
- **`.claude/rules/`** — stack-specific rules auto-apply when editing:
|
|
71
|
+
- `lua.md` for AOS script files in `src/`
|
|
72
|
+
- `testing.md` for test patterns in `test/`
|
|
73
|
+
- `hyperbeam.md` for Erlang device files in `HyperBEAM/`
|
|
74
|
+
- `deploy.md` for deploy scripts in `scripts/`
|
|
75
|
+
- **Slash commands:**
|
|
76
|
+
- `/test` — in-memory AOS tests (fast unit tests)
|
|
77
|
+
- `/test-hb` — HyperBEAM integration tests (full stack)
|
|
78
|
+
- `/deploy` — deploy to testnet, local HB, or remote HB
|
|
79
|
+
- `/create-aos` — scaffold a new AOS script + test file
|
|
80
|
+
- `/create-device` — scaffold a HyperBEAM Erlang device + test
|
|
81
|
+
- `/debug` — troubleshoot issues (ports, processes, errors)
|
|
82
|
+
- **Agents** in `.claude/agents/`:
|
|
83
|
+
- `builder.md` — builds features end-to-end (Lua + tests + iterate)
|
|
84
|
+
- `tester.md` — runs tests and fixes failures
|
|
85
|
+
- `device-builder.md` — builds HyperBEAM Erlang devices
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en" data-color-mode="light" data-light-theme="light" data-dark-theme="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>HyperADD Dashboard</title>
|
|
7
|
+
<link rel="icon" type="image/png" href="/favicon.png" />
|
|
8
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@primer/css@21/dist/primer.css">
|
|
9
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/github-markdown-css@5/github-markdown.min.css">
|
|
10
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/styles/github.min.css" id="hljs-light">
|
|
11
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/styles/github-dark.min.css" id="hljs-dark" disabled>
|
|
12
|
+
<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/highlight.min.js"></script>
|
|
13
|
+
<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/languages/erlang.min.js"></script>
|
|
14
|
+
<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/languages/lua.min.js"></script>
|
|
15
|
+
<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/languages/rust.min.js"></script>
|
|
16
|
+
<style>
|
|
17
|
+
/* Only custom CSS for things Primer doesn't provide */
|
|
18
|
+
@keyframes spin { from { transform: rotate(0deg) } to { transform: rotate(360deg) } }
|
|
19
|
+
.anim-spin { animation: spin 1s linear infinite; }
|
|
20
|
+
.anim-spin-slow { animation: spin 1.5s linear infinite; }
|
|
21
|
+
[data-color-mode="dark"] .logo-invert { filter: invert(1); }
|
|
22
|
+
|
|
23
|
+
/* Dark toggle — GitHub-style icon button */
|
|
24
|
+
.dark-toggle {
|
|
25
|
+
display: flex; align-items: center; justify-content: center;
|
|
26
|
+
width: 32px; height: 32px; border-radius: 6px;
|
|
27
|
+
border: 1px solid var(--color-border-default, #d0d7de);
|
|
28
|
+
background: var(--color-canvas-default, #fff); cursor: pointer;
|
|
29
|
+
color: var(--color-fg-muted, #656d76);
|
|
30
|
+
transition: background 0.15s, border-color 0.15s; appearance: none; padding: 0;
|
|
31
|
+
}
|
|
32
|
+
.dark-toggle:hover { background-color: var(--color-canvas-subtle, #f6f8fa); color: var(--color-fg-default); border-color: var(--color-border-default, #d0d7de); }
|
|
33
|
+
.dark-toggle:focus { outline: 2px solid var(--color-accent-fg); outline-offset: -2px; }
|
|
34
|
+
/* Override Primer Header to match modern GitHub (light gray, not black) */
|
|
35
|
+
.Header { background-color: var(--color-canvas-subtle, #f6f8fa) !important; color: var(--color-fg-default) !important; border-bottom: 1px solid var(--color-border-muted, #d0d7de); }
|
|
36
|
+
.Header .Header-link { color: var(--color-fg-default) !important; }
|
|
37
|
+
[data-color-mode="dark"] .Header { background-color: var(--color-canvas-subtle, #161b22) !important; border-bottom-color: var(--color-border-default, #30363d); }
|
|
38
|
+
/* Dark toggle inside Header */
|
|
39
|
+
.Header .dark-toggle { background: transparent; border-color: var(--color-border-default, #d0d7de); }
|
|
40
|
+
.Header .dark-toggle:hover { background-color: var(--color-neutral-muted); }
|
|
41
|
+
|
|
42
|
+
/* UnderlineNav button — Primer needs this for <button> elements */
|
|
43
|
+
button.UnderlineNav-item {
|
|
44
|
+
background: transparent; border: 0;
|
|
45
|
+
border-bottom: 2px solid transparent; border-radius: 0;
|
|
46
|
+
appearance: none; cursor: pointer;
|
|
47
|
+
padding: 8px 16px; font-size: 14px; line-height: 30px;
|
|
48
|
+
color: var(--color-fg-default);
|
|
49
|
+
margin-bottom: -1px;
|
|
50
|
+
}
|
|
51
|
+
button.UnderlineNav-item:hover {
|
|
52
|
+
border-bottom-color: var(--color-neutral-muted);
|
|
53
|
+
text-decoration: none;
|
|
54
|
+
}
|
|
55
|
+
button.UnderlineNav-item[aria-selected="true"] {
|
|
56
|
+
font-weight: 600;
|
|
57
|
+
border-bottom-color: var(--color-accent-fg);
|
|
58
|
+
color: var(--color-fg-default);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Progress bar override — ensure correct height and color */
|
|
62
|
+
.Progress { height: 8px; }
|
|
63
|
+
.Progress-item { background-color: var(--color-success-emphasis, #1f883d) !important; }
|
|
64
|
+
|
|
65
|
+
/* Status icon circles */
|
|
66
|
+
.icon-circle { width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
|
67
|
+
.icon-circle-success { background-color: var(--color-success-emphasis, #1f883d); }
|
|
68
|
+
.icon-circle-attention { background-color: var(--color-attention-emphasis, #bf8700); }
|
|
69
|
+
.icon-circle-empty { border: 2px solid var(--color-border-default, #d0d7de); }
|
|
70
|
+
|
|
71
|
+
/* Clickable file rows */
|
|
72
|
+
.file-row { cursor: pointer; transition: background 0.1s; }
|
|
73
|
+
.file-row:hover { background-color: var(--color-neutral-subtle) !important; }
|
|
74
|
+
|
|
75
|
+
/* Code viewer — GitHub blob-style */
|
|
76
|
+
.code-view { overflow-x: auto; }
|
|
77
|
+
.code-view table { width: 100%; border-collapse: collapse; font-size: 12px; line-height: 20px; tab-size: 4; }
|
|
78
|
+
.code-view td { padding: 0; vertical-align: top; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; }
|
|
79
|
+
.code-view .ln { width: 1px; min-width: 50px; padding: 0 10px; text-align: right; user-select: none; white-space: nowrap; color: var(--color-fg-subtle); }
|
|
80
|
+
.code-view .lc { padding: 0 16px 0 10px; white-space: pre; }
|
|
81
|
+
.code-view tr:hover { background: var(--color-neutral-subtle); }
|
|
82
|
+
.code-view .hljs { background: transparent !important; }
|
|
83
|
+
|
|
84
|
+
/* Back button */
|
|
85
|
+
.back-btn {
|
|
86
|
+
display: inline-flex; align-items: center; gap: 4px;
|
|
87
|
+
padding: 4px 12px 4px 8px; border: 1px solid var(--color-border-default);
|
|
88
|
+
border-radius: 6px; background: transparent; cursor: pointer;
|
|
89
|
+
font-size: 12px; color: var(--color-fg-muted); font-family: inherit;
|
|
90
|
+
}
|
|
91
|
+
.back-btn:hover { background: var(--color-neutral-subtle); color: var(--color-fg-default); }
|
|
92
|
+
|
|
93
|
+
/* Skill badge — Primer Label doesn't have filled-color style */
|
|
94
|
+
.skill-badge {
|
|
95
|
+
display: inline-block; padding: 0 6px; font-size: 11px; font-weight: 600; line-height: 18px;
|
|
96
|
+
border-radius: 4px; color: #fff; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Markdown body — explicit light/dark overrides (github-markdown-css ignores data-color-mode) */
|
|
100
|
+
.markdown-body { background-color: transparent !important; color: inherit !important; }
|
|
101
|
+
.markdown-body pre { background-color: #f6f8fa !important; }
|
|
102
|
+
.markdown-body code { background-color: rgba(175,184,193,0.2) !important; }
|
|
103
|
+
.markdown-body pre code { background-color: transparent !important; }
|
|
104
|
+
.markdown-body table { border-color: #d0d7de !important; }
|
|
105
|
+
.markdown-body table th, .markdown-body table td { border-color: #d0d7de !important; }
|
|
106
|
+
.markdown-body table tr { background-color: transparent !important; }
|
|
107
|
+
.markdown-body table tr:nth-child(2n) { background-color: #f6f8fa !important; }
|
|
108
|
+
.markdown-body hr { background-color: #d0d7de !important; }
|
|
109
|
+
[data-color-mode="dark"] .markdown-body pre { background-color: #161b22 !important; }
|
|
110
|
+
[data-color-mode="dark"] .markdown-body code { background-color: rgba(110,118,129,0.4) !important; }
|
|
111
|
+
[data-color-mode="dark"] .markdown-body pre code { background-color: transparent !important; }
|
|
112
|
+
[data-color-mode="dark"] .markdown-body table { border-color: #30363d !important; }
|
|
113
|
+
[data-color-mode="dark"] .markdown-body table th, [data-color-mode="dark"] .markdown-body table td { border-color: #30363d !important; }
|
|
114
|
+
[data-color-mode="dark"] .markdown-body table tr:nth-child(2n) { background-color: #161b22 !important; }
|
|
115
|
+
[data-color-mode="dark"] .markdown-body hr { background-color: #30363d !important; }
|
|
116
|
+
|
|
117
|
+
/* Compact markdown */
|
|
118
|
+
.markdown-compact { font-size: 14px; }
|
|
119
|
+
.markdown-compact h1 { font-size: 20px; margin: 16px 0 8px; padding-bottom: 6px; border-bottom: 1px solid var(--color-border-muted); }
|
|
120
|
+
.markdown-compact h2 { font-size: 16px; margin: 14px 0 6px; padding-bottom: 4px; border-bottom: 1px solid var(--color-border-muted); }
|
|
121
|
+
.markdown-compact h3 { font-size: 14px; font-weight: 600; margin: 10px 0 4px; }
|
|
122
|
+
.markdown-compact p { margin: 4px 0; }
|
|
123
|
+
.markdown-compact li { margin: 2px 0; }
|
|
124
|
+
.markdown-compact pre {
|
|
125
|
+
margin: 8px 0; padding: 16px; font-size: 12px; line-height: 1.45;
|
|
126
|
+
overflow: auto; border-radius: 6px;
|
|
127
|
+
background-color: #f6f8fa !important;
|
|
128
|
+
}
|
|
129
|
+
[data-color-mode="dark"] .markdown-compact pre { background-color: #161b22 !important; }
|
|
130
|
+
.markdown-compact code {
|
|
131
|
+
font-size: 85%; padding: 0.2em 0.4em; border-radius: 6px;
|
|
132
|
+
background-color: rgba(175,184,193,0.2);
|
|
133
|
+
}
|
|
134
|
+
[data-color-mode="dark"] .markdown-compact code { background-color: rgba(110,118,129,0.4); }
|
|
135
|
+
.markdown-compact pre code {
|
|
136
|
+
padding: 0; background: none !important; font-size: 100%;
|
|
137
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
138
|
+
}
|
|
139
|
+
.markdown-compact .hljs,
|
|
140
|
+
.markdown-compact pre code.hljs { background: transparent !important; }
|
|
141
|
+
.markdown-compact ul, .markdown-compact ol { padding-left: 24px; margin: 4px 0; }
|
|
142
|
+
|
|
143
|
+
/* Code block copy button */
|
|
144
|
+
.code-block-wrap { position: relative; }
|
|
145
|
+
.code-copy-btn {
|
|
146
|
+
position: absolute; top: 8px; right: 8px; z-index: 1;
|
|
147
|
+
display: flex; align-items: center; justify-content: center;
|
|
148
|
+
width: 32px; height: 32px; border-radius: 6px;
|
|
149
|
+
border: 1px solid var(--color-border-default, #d0d7de);
|
|
150
|
+
background: var(--color-canvas-default, #fff); color: var(--color-fg-muted, #656d76);
|
|
151
|
+
cursor: pointer; opacity: 0; transition: opacity 0.15s;
|
|
152
|
+
}
|
|
153
|
+
.code-block-wrap:hover .code-copy-btn { opacity: 1; }
|
|
154
|
+
.code-copy-btn:hover { background: var(--color-canvas-subtle, #f6f8fa); color: var(--color-fg-default, #1f2328); }
|
|
155
|
+
[data-color-mode="dark"] .code-copy-btn { background: #161b22; border-color: #30363d; color: #8b949e; }
|
|
156
|
+
[data-color-mode="dark"] .code-copy-btn:hover { background: #30363d; color: #e6edf3; }
|
|
157
|
+
</style>
|
|
158
|
+
</head>
|
|
159
|
+
<body class="color-bg-default color-fg-default">
|
|
160
|
+
<div id="root"></div>
|
|
161
|
+
<script type="module" src="/src/main.jsx"></script>
|
|
162
|
+
</body>
|
|
163
|
+
</html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wao-dashboard",
|
|
3
|
+
"private": true,
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "vite",
|
|
7
|
+
"build": "vite build",
|
|
8
|
+
"preview": "vite preview"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"react": "^18.3.1",
|
|
12
|
+
"react-dom": "^18.3.1"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
16
|
+
"vite": "^6.0.0"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
Binary file
|
|
Binary file
|