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,807 +0,0 @@
|
|
|
1
|
-
# WAO SDK API Reference
|
|
2
|
-
|
|
3
|
-
Complete API reference for building and testing WAO applications.
|
|
4
|
-
|
|
5
|
-
## AO Class
|
|
6
|
-
|
|
7
|
-
Main SDK class for deploying and interacting with AOS processes.
|
|
8
|
-
|
|
9
|
-
### Constructor
|
|
10
|
-
|
|
11
|
-
```js
|
|
12
|
-
new AO(opt = {})
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
| Option | Type | Default | Description |
|
|
16
|
-
|--------|------|---------|-------------|
|
|
17
|
-
| `hb` | string/HB | — | HyperBEAM URL or HB instance. `"ans104"` or `"httpsig"` for format |
|
|
18
|
-
| `port` | number | — | Arweave local testnet port (auto-configures aoconnect/ar) |
|
|
19
|
-
| `module` | string | srcs.module_aos2 | WASM module ID |
|
|
20
|
-
| `module_type` | string | `"aos2"` | `"aos2"`, `"sqlite"`, or `"mainnet"` |
|
|
21
|
-
| `scheduler` | string | srcs.scheduler | Scheduler process ID |
|
|
22
|
-
| `aoconnect` | object | — | aoconnect config object |
|
|
23
|
-
| `ar` | object/AR | — | Arweave client config or AR instance |
|
|
24
|
-
| `in_memory` | boolean | auto | Use in-memory AOS loader (auto when ar.port set) |
|
|
25
|
-
| `wao` | boolean | false | Use WAO module/scheduler variants |
|
|
26
|
-
| `variant` | string | — | ao variant tag (e.g., `"ao.TN.1"`) |
|
|
27
|
-
| `mem` | object | — | Shared memory for multi-user testing |
|
|
28
|
-
|
|
29
|
-
### init(jwk)
|
|
30
|
-
|
|
31
|
-
Initialize with Arweave JWK wallet.
|
|
32
|
-
|
|
33
|
-
```js
|
|
34
|
-
const ao = await new AO().init(acc[0])
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Returns: `this`
|
|
38
|
-
|
|
39
|
-
### deploy(opts)
|
|
40
|
-
|
|
41
|
-
Deploy a process with optional Lua source.
|
|
42
|
-
|
|
43
|
-
```js
|
|
44
|
-
const { pid, p, err } = await ao.deploy({
|
|
45
|
-
src_data, // Inline Lua source code
|
|
46
|
-
boot: true, // Boot process after spawn
|
|
47
|
-
loads: [code1, code2], // Additional Lua to load after boot
|
|
48
|
-
fills: { TOKEN: "0x123" }, // Replace <TOKEN> in source
|
|
49
|
-
module: "custom-module-id", // Custom WASM module
|
|
50
|
-
scheduler: "custom-sched", // Custom scheduler
|
|
51
|
-
tags: { Extension: "WeaveDrive" },
|
|
52
|
-
data: "boot data",
|
|
53
|
-
})
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Returns: `{ err, jwk, pid, p }`
|
|
57
|
-
- `pid` — Process ID
|
|
58
|
-
- `p` — Process handle (shorthand client)
|
|
59
|
-
|
|
60
|
-
### msg(opts)
|
|
61
|
-
|
|
62
|
-
Send a message and wait for result.
|
|
63
|
-
|
|
64
|
-
```js
|
|
65
|
-
const { mid, res, err, out } = await ao.msg({
|
|
66
|
-
pid,
|
|
67
|
-
act: "Transfer", // Action name (default: "Eval")
|
|
68
|
-
tags: { Recipient: addr }, // Message tags
|
|
69
|
-
data: "lua code", // Message data
|
|
70
|
-
check: { Status: "ok" }, // Validate response
|
|
71
|
-
get: { data: true, json: true }, // Extract output
|
|
72
|
-
timeout: 5000, // Max wait ms
|
|
73
|
-
mode: "aoconnect", // "aoconnect" or "gql" (result fetching mode)
|
|
74
|
-
limit: 25, // Max results to fetch
|
|
75
|
-
})
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### dry(opts)
|
|
79
|
-
|
|
80
|
-
Dry-run: execute message without state change. Same params as `msg()`, no timeout.
|
|
81
|
-
|
|
82
|
-
```js
|
|
83
|
-
const { res, err, out } = await ao.dry({ pid, act: "Balance", tags: { Target: addr } })
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### res(opts)
|
|
87
|
-
|
|
88
|
-
Get result of a previously sent message.
|
|
89
|
-
|
|
90
|
-
```js
|
|
91
|
-
const { mid, res, err, out } = await ao.res({
|
|
92
|
-
pid, mid, check, get, timeout,
|
|
93
|
-
mode: "aoconnect", // "aoconnect" or "gql"
|
|
94
|
-
limit: 25, // Max results to fetch
|
|
95
|
-
})
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### ress(opts)
|
|
99
|
-
|
|
100
|
-
Paginated results for a process.
|
|
101
|
-
|
|
102
|
-
```js
|
|
103
|
-
const { err, out, res, next } = await ao.ress({ pid, limit: 10, asc: true, from: null })
|
|
104
|
-
const page2 = next ? await next() : null
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### asgn(opts)
|
|
108
|
-
|
|
109
|
-
Assign message to process.
|
|
110
|
-
|
|
111
|
-
```js
|
|
112
|
-
const { mid, res, err, out } = await ao.asgn({ pid, mid })
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### load(opts)
|
|
116
|
-
|
|
117
|
-
Load and execute Lua source on an existing process.
|
|
118
|
-
|
|
119
|
-
```js
|
|
120
|
-
await ao.load({ pid, data: luaCode, fills: { VAR: "value" } })
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### var(opts)
|
|
124
|
-
|
|
125
|
-
Get a Lua variable value from process.
|
|
126
|
-
|
|
127
|
-
```js
|
|
128
|
-
const val = await ao.var({ pid, data: "Table" })
|
|
129
|
-
const nested = await ao.var({ pid, data: "Table.Array[2]" })
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### wait(opts)
|
|
133
|
-
|
|
134
|
-
Wait for process to initialize.
|
|
135
|
-
|
|
136
|
-
```js
|
|
137
|
-
const { err, pid } = await ao.wait({ pid, attempts: 10 })
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### attest(opts)
|
|
141
|
-
|
|
142
|
-
Post attestation for data (used with WeaveDrive).
|
|
143
|
-
|
|
144
|
-
```js
|
|
145
|
-
await ao.attest({ id: txId })
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### avail(opts)
|
|
149
|
-
|
|
150
|
-
Announce data availability.
|
|
151
|
-
|
|
152
|
-
```js
|
|
153
|
-
await ao.avail({ ids: [txId1, txId2] })
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### pipe(opts)
|
|
157
|
-
|
|
158
|
-
Execute a pipeline of operations. Each step can forward results to the next.
|
|
159
|
-
|
|
160
|
-
```js
|
|
161
|
-
const { out } = await ao.pipe({
|
|
162
|
-
fns: [
|
|
163
|
-
{ fn: "deploy", args: { src_data }, then: { "args.pid": "pid" } },
|
|
164
|
-
{ fn: "msg", args: { act: "Inc" }, then: { "args.pid": "pid" } },
|
|
165
|
-
{ fn: "dry", args: { act: "Get" } },
|
|
166
|
-
]
|
|
167
|
-
})
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
- `then` maps result fields to next step's args
|
|
171
|
-
- `err` function handles errors per step
|
|
172
|
-
|
|
173
|
-
### postModule(opts)
|
|
174
|
-
|
|
175
|
-
Post a WASM module to Arweave.
|
|
176
|
-
|
|
177
|
-
```js
|
|
178
|
-
const { id } = await ao.postModule({ data: wasmBinary })
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### postScheduler(opts)
|
|
182
|
-
|
|
183
|
-
Register scheduler location.
|
|
184
|
-
|
|
185
|
-
```js
|
|
186
|
-
await ao.postScheduler({ url: "https://scheduler.example.com" })
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### spwn(opts)
|
|
190
|
-
|
|
191
|
-
Low-level spawn (use `deploy` for most cases).
|
|
192
|
-
|
|
193
|
-
```js
|
|
194
|
-
const { pid, p } = await ao.spwn({ module, scheduler, tags })
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
### transform(opts)
|
|
198
|
-
|
|
199
|
-
Apply template fills to Lua source.
|
|
200
|
-
|
|
201
|
-
```js
|
|
202
|
-
const { out } = await ao.transform({
|
|
203
|
-
data: luaCode,
|
|
204
|
-
fills: { OWNER: addr, TOKEN: tokenPid }
|
|
205
|
-
})
|
|
206
|
-
// Replaces <OWNER> and <TOKEN> in luaCode
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
### eval(opts)
|
|
210
|
-
|
|
211
|
-
Evaluate a Lua expression on an existing process (shorthand for msg with act "Eval").
|
|
212
|
-
|
|
213
|
-
```js
|
|
214
|
-
const { mid, res, err, out } = await ao.eval({ pid, data: "return count" })
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
### p(pid)
|
|
218
|
-
|
|
219
|
-
Create a Process handle for an existing process.
|
|
220
|
-
|
|
221
|
-
```js
|
|
222
|
-
const proc = ao.p(existingPid)
|
|
223
|
-
await proc.d("Get", false)
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
---
|
|
227
|
-
|
|
228
|
-
## Process Handle (p)
|
|
229
|
-
|
|
230
|
-
Returned by `ao.deploy()` or `ao.p(pid)`. Provides shorthand for process operations.
|
|
231
|
-
|
|
232
|
-
**Important:** The second argument to `p.msg()`/`p.m()` passes additional fields as **message tags** (accessible via `msg.Tags.FieldName` in Lua), NOT as `msg.Data`. To pass structured data, use tags.
|
|
233
|
-
|
|
234
|
-
### msg(act, tags, opts)
|
|
235
|
-
|
|
236
|
-
Send message with shorthand syntax.
|
|
237
|
-
|
|
238
|
-
```js
|
|
239
|
-
await p.msg("Inc") // basic action
|
|
240
|
-
await p.msg("Inc", { Plus: "3" }) // with tags (Lua: msg.Tags.Plus)
|
|
241
|
-
await p.msg("Inc", false) // returns Data string
|
|
242
|
-
await p.msg("Inc", { Plus: "3" }, false) // tags + Data string
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### dry(act, tags, opts)
|
|
246
|
-
|
|
247
|
-
Dry-run (read-only) with same shorthand.
|
|
248
|
-
|
|
249
|
-
```js
|
|
250
|
-
const result = await p.dry("Get")
|
|
251
|
-
const data = await p.dry("Get", false) // Data string only
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### m(...args) — shorthand msg
|
|
255
|
-
|
|
256
|
-
Calls `msg()` and throws on error.
|
|
257
|
-
|
|
258
|
-
```js
|
|
259
|
-
await p.m("Inc", false) // returns Data or throws
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### d(...args) — shorthand dry
|
|
263
|
-
|
|
264
|
-
Calls `dry()` and throws on error.
|
|
265
|
-
|
|
266
|
-
```js
|
|
267
|
-
const count = await p.d("Get", false) // Data string or throws
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
### r(...args) — shorthand res
|
|
271
|
-
|
|
272
|
-
```js
|
|
273
|
-
const result = await p.r({ mid })
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### v(data, json, pretty) — get variable
|
|
277
|
-
|
|
278
|
-
```js
|
|
279
|
-
const state = await p.v("State") // JSON parsed
|
|
280
|
-
const count = await p.v("count") // number
|
|
281
|
-
const item = await p.v("Table.items[1]") // nested access
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
### load(opt) — load Lua source
|
|
285
|
-
|
|
286
|
-
Load and execute Lua source on an existing process via the process handle.
|
|
287
|
-
|
|
288
|
-
```js
|
|
289
|
-
await p.load({ data: luaCode, fills: { VAR: "value" } })
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
### o(name, args) — call and throw
|
|
293
|
-
|
|
294
|
-
Generic method caller that throws on error.
|
|
295
|
-
|
|
296
|
-
```js
|
|
297
|
-
const out = await p.o("msg", ["Inc", false])
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
---
|
|
301
|
-
|
|
302
|
-
## get/check Patterns
|
|
303
|
-
|
|
304
|
-
### get — Extract output from responses
|
|
305
|
-
|
|
306
|
-
| Value | Behavior |
|
|
307
|
-
|-------|----------|
|
|
308
|
-
| `false` | Return Data as string |
|
|
309
|
-
| `true` | Return full result |
|
|
310
|
-
| `"TagName"` | Return value of specific tag |
|
|
311
|
-
| `{ data: true }` | Return Data field |
|
|
312
|
-
| `{ json: true }` | Parse Data as JSON |
|
|
313
|
-
| `{ data: true, json: true }` | Parse Data JSON |
|
|
314
|
-
| `{ name: "Tag", json: true }` | Parse specific tag as JSON |
|
|
315
|
-
| `{ from: "pid" }` | Filter by sender process |
|
|
316
|
-
| `{ match: (v, i, r) => bool }` | Custom filter function |
|
|
317
|
-
|
|
318
|
-
```js
|
|
319
|
-
// Get Data as string
|
|
320
|
-
await p.d("Get", false)
|
|
321
|
-
|
|
322
|
-
// Get Data as parsed JSON
|
|
323
|
-
await p.d("Get", { get: { data: true, json: true } })
|
|
324
|
-
|
|
325
|
-
// Get specific tag value
|
|
326
|
-
await p.msg("Inc", { get: "Status" })
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
### check — Validate responses
|
|
330
|
-
|
|
331
|
-
| Value | Behavior |
|
|
332
|
-
|-------|----------|
|
|
333
|
-
| `true` | Check no error |
|
|
334
|
-
| `"value"` | Check Data equals value |
|
|
335
|
-
| `"TagName"` | Check tag exists |
|
|
336
|
-
| `{ Tag: "val" }` | Check tag equals value |
|
|
337
|
-
| `RegExp` | Pattern match on Data |
|
|
338
|
-
| `[array]` | Check multiple messages |
|
|
339
|
-
|
|
340
|
-
```js
|
|
341
|
-
await p.msg("Inc", { check: { Status: "ok" } })
|
|
342
|
-
await p.msg("Inc", { check: /Success/ })
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
---
|
|
346
|
-
|
|
347
|
-
## AR Class
|
|
348
|
-
|
|
349
|
-
Arweave client for wallet management, data posting, and transactions.
|
|
350
|
-
|
|
351
|
-
### Constructor
|
|
352
|
-
|
|
353
|
-
```js
|
|
354
|
-
new AR({ host, port, protocol } = {})
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
### Methods
|
|
358
|
-
|
|
359
|
-
| Method | Params | Returns | Description |
|
|
360
|
-
|--------|--------|---------|-------------|
|
|
361
|
-
| `init(jwk)` | JWK | `this` | Initialize with wallet |
|
|
362
|
-
| `checkWallet()` | — | `{ addr, jwk, pub }` | Validate wallet |
|
|
363
|
-
| `balance(addr?)` | address | string | Get AR balance |
|
|
364
|
-
| `mint(addr, amount?)` | address, AR string | balance | Mint on testnet |
|
|
365
|
-
| `transfer(ar, target)` | amount, address | `{ id }` | Send AR |
|
|
366
|
-
| `bundle(items)` | `[[data, tags]]` | `{ id, items, tx }` | Create bundle |
|
|
367
|
-
| `post({ data, tags })` | object | `{ id }` | Post data to Arweave |
|
|
368
|
-
| `data(txid, string?)` | txId, bool | data | Download tx data |
|
|
369
|
-
| `tx(txid)` | txId | tx object | Get tx metadata |
|
|
370
|
-
| `gen(amount?)` | AR amount | `{ jwk, addr }` | Generate new wallet |
|
|
371
|
-
| `toAddr(jwk)` | JWK | address | Get address from JWK |
|
|
372
|
-
|
|
373
|
-
```js
|
|
374
|
-
const ar = new AR()
|
|
375
|
-
await ar.init(jwk)
|
|
376
|
-
const { id } = await ar.post({ data: "Hello", tags: { Type: "test" } })
|
|
377
|
-
const content = await ar.data(id, true)
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
---
|
|
381
|
-
|
|
382
|
-
## HB Class
|
|
383
|
-
|
|
384
|
-
HTTP client for HyperBEAM nodes. Handles signing and process operations.
|
|
385
|
-
|
|
386
|
-
### Constructor
|
|
387
|
-
|
|
388
|
-
```js
|
|
389
|
-
new HB({
|
|
390
|
-
url: "http://localhost:10001",
|
|
391
|
-
cu: "http://localhost:6363",
|
|
392
|
-
format: "httpsig", // or "ans104"
|
|
393
|
-
} = {})
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
### init(jwk)
|
|
397
|
-
|
|
398
|
-
```js
|
|
399
|
-
const hb = await new HB({ url: hbeam.url }).init(jwk)
|
|
400
|
-
// hb.addr, hb.url, hb.jwk available
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
### HTTP Methods
|
|
404
|
-
|
|
405
|
-
```js
|
|
406
|
-
// GET — returns { out, headers, body, status }
|
|
407
|
-
await hb.get({ path: "/~meta@1.0/info" })
|
|
408
|
-
await hb.g("/~meta@1.0/info") // shorthand, returns out
|
|
409
|
-
await hb.g("/~meta@1.0/info", { key: "value" }) // with params
|
|
410
|
-
|
|
411
|
-
// POST — returns { out, headers, body, status }
|
|
412
|
-
await hb.post({ path: "/~meta@1.0/info", key: "value" })
|
|
413
|
-
await hb.p("/~meta@1.0/info", { key: "value" }) // shorthand, returns out
|
|
414
|
-
|
|
415
|
-
// JSON variants
|
|
416
|
-
await hb.getJSON({ path })
|
|
417
|
-
await hb.postJSON({ path, ...fields })
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
### Process Lifecycle
|
|
421
|
-
|
|
422
|
-
```js
|
|
423
|
-
// Spawn
|
|
424
|
-
const { pid } = await hb.spawn({})
|
|
425
|
-
const { pid } = await hb.spawn({ "execution-device": "wao@1.0" })
|
|
426
|
-
const { pid } = await hb.spawnLua()
|
|
427
|
-
const { pid } = await hb.spawnLegacy()
|
|
428
|
-
const { pid } = await hb.spawnAOS()
|
|
429
|
-
|
|
430
|
-
// Schedule message
|
|
431
|
-
const { slot } = await hb.schedule({ pid, tags: { Action: "Inc" } })
|
|
432
|
-
const { slot } = await hb.scheduleLegacy({ pid, action: "Inc" })
|
|
433
|
-
const { slot } = await hb.scheduleAOS({ pid, action: "Eval", data: luaCode })
|
|
434
|
-
|
|
435
|
-
// Compute result
|
|
436
|
-
const result = await hb.compute({ pid, slot })
|
|
437
|
-
const result = await hb.computeLegacy({ pid, slot })
|
|
438
|
-
const result = await hb.computeAOS({ pid, slot })
|
|
439
|
-
|
|
440
|
-
// All-in-one (schedule + compute)
|
|
441
|
-
const result = await hb.message({ pid, tags: { Action: "Inc" } })
|
|
442
|
-
const { outbox } = await hb.messageAOS({ pid, action: "Get" })
|
|
443
|
-
|
|
444
|
-
// Current slot
|
|
445
|
-
const slot = await hb.slot({ pid })
|
|
446
|
-
const slot = await hb.slot({ pid, path: "/cache/key" })
|
|
447
|
-
|
|
448
|
-
// Current state
|
|
449
|
-
const state = await hb.now({ pid })
|
|
450
|
-
const state = await hb.now({ pid, path: "/cache/key" })
|
|
451
|
-
|
|
452
|
-
// Messages list (paginated)
|
|
453
|
-
const { edges, next } = await hb.messages({ pid })
|
|
454
|
-
const page2 = next ? await next() : null
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
### Device Stack Spawn
|
|
458
|
-
|
|
459
|
-
```js
|
|
460
|
-
const { pid } = await hb.spawn({
|
|
461
|
-
"execution-device": "stack@1.0",
|
|
462
|
-
"device-stack": ["wao@1.0", "patch@1.0"],
|
|
463
|
-
"patch-from": "/results",
|
|
464
|
-
"patch-to": "/cache",
|
|
465
|
-
})
|
|
466
|
-
```
|
|
467
|
-
|
|
468
|
-
### Caching
|
|
469
|
-
|
|
470
|
-
```js
|
|
471
|
-
const moduleId = await hb.cacheBinary(wasmData, "application/wasm")
|
|
472
|
-
const scriptId = await hb.cacheScript(luaCode, "application/lua")
|
|
473
|
-
```
|
|
474
|
-
|
|
475
|
-
### Binary Data
|
|
476
|
-
|
|
477
|
-
```js
|
|
478
|
-
// Write binary — returns { path } directly
|
|
479
|
-
const { path } = await hb.p("/~cache@1.0/write", {
|
|
480
|
-
"ao-body-key": "body",
|
|
481
|
-
body: Buffer.from("data"),
|
|
482
|
-
})
|
|
483
|
-
|
|
484
|
-
// Read binary
|
|
485
|
-
const data = await hb.g("/~cache@1.0/read", { target: path })
|
|
486
|
-
```
|
|
487
|
-
|
|
488
|
-
### ANS-104 Format
|
|
489
|
-
|
|
490
|
-
```js
|
|
491
|
-
const hb = new HB({ url, format: "ans104" })
|
|
492
|
-
const { pid } = await hb.spawn({
|
|
493
|
-
Name: "my-process",
|
|
494
|
-
"execution-device": "wao@1.0",
|
|
495
|
-
"Data-Protocol": "ao",
|
|
496
|
-
Variant: "ao.WDB.1",
|
|
497
|
-
})
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
---
|
|
501
|
-
|
|
502
|
-
## GQL Class
|
|
503
|
-
|
|
504
|
-
GraphQL client for querying Arweave transactions and blocks.
|
|
505
|
-
|
|
506
|
-
### txs(opts)
|
|
507
|
-
|
|
508
|
-
```js
|
|
509
|
-
const txs = await gql.txs({
|
|
510
|
-
ids: ["txId1"], // by ID
|
|
511
|
-
owner: "addr", // by owner
|
|
512
|
-
recipient: "addr", // by recipient
|
|
513
|
-
tags: { Type: "Message" }, // by tags
|
|
514
|
-
block: [100, 200], // block range [min, max]
|
|
515
|
-
first: 10, // limit
|
|
516
|
-
after: "cursor", // pagination cursor
|
|
517
|
-
asc: true, // ascending sort
|
|
518
|
-
fields: ["id", "tags"], // select fields
|
|
519
|
-
next: true, // include pagination fn
|
|
520
|
-
})
|
|
521
|
-
```
|
|
522
|
-
|
|
523
|
-
### blocks(opts)
|
|
524
|
-
|
|
525
|
-
```js
|
|
526
|
-
const blocks = await gql.blocks({ height: [100, 200], first: 10 })
|
|
527
|
-
```
|
|
528
|
-
|
|
529
|
-
---
|
|
530
|
-
|
|
531
|
-
## HyperBEAM Class
|
|
532
|
-
|
|
533
|
-
Node lifecycle manager for testing. Starts/stops Erlang HyperBEAM server.
|
|
534
|
-
|
|
535
|
-
### Constructor
|
|
536
|
-
|
|
537
|
-
```js
|
|
538
|
-
new HyperBEAM({
|
|
539
|
-
port: 10001, // HTTP port
|
|
540
|
-
cu_port: 6363, // genesis-wasm CU port
|
|
541
|
-
wallet: ".wallet.json", // wallet path
|
|
542
|
-
cwd: "./HyperBEAM", // HyperBEAM directory
|
|
543
|
-
reset: true, // clear cache
|
|
544
|
-
genesis_wasm: true, // enable genesis-wasm device
|
|
545
|
-
operator: HyperBEAM.OPERATOR, // use self as operator
|
|
546
|
-
logs: true, // print logs
|
|
547
|
-
rebar3: true, // use rebar3 shell
|
|
548
|
-
bundler_ans104: false, // ANS-104 bundler
|
|
549
|
-
// Payment options
|
|
550
|
-
faff: [addr1, addr2], // Friends & Family whitelist
|
|
551
|
-
simple_pay: true, // enable simple-pay device
|
|
552
|
-
simple_pay_price: 2, // cost per operation
|
|
553
|
-
p4_lua: { // P4 payment config
|
|
554
|
-
processor: { body: luaScript, name: "ledger.lua" },
|
|
555
|
-
client: { body: clientScript, name: "client.lua" },
|
|
556
|
-
admin: adminAddr,
|
|
557
|
-
balance: { [addr]: 1000 },
|
|
558
|
-
},
|
|
559
|
-
} = {})
|
|
560
|
-
```
|
|
561
|
-
|
|
562
|
-
### Methods
|
|
563
|
-
|
|
564
|
-
| Method | Returns | Description |
|
|
565
|
-
|--------|---------|-------------|
|
|
566
|
-
| `ready(timeout?)` | `this` or `false` | Wait for server ready (default 60s), returns `false` on timeout |
|
|
567
|
-
| `ok()` | boolean | Check if responding |
|
|
568
|
-
| `kill()` | — | Kill server and CU |
|
|
569
|
-
| `startCU()` | boolean | Start genesis-wasm CU |
|
|
570
|
-
| `eunit(module, test)` | Promise | Run Erlang eunit test |
|
|
571
|
-
| `file(path)` | string | Read file from HyperBEAM dir |
|
|
572
|
-
|
|
573
|
-
### Properties
|
|
574
|
-
|
|
575
|
-
| Property | Description |
|
|
576
|
-
|----------|-------------|
|
|
577
|
-
| `hb` | HB HTTP client instance |
|
|
578
|
-
| `jwk` | Server wallet JWK |
|
|
579
|
-
| `addr` | Server wallet address |
|
|
580
|
-
| `url` | Server URL |
|
|
581
|
-
|
|
582
|
-
### Static
|
|
583
|
-
|
|
584
|
-
- `HyperBEAM.OPERATOR` — Symbol: use self address as operator
|
|
585
|
-
|
|
586
|
-
---
|
|
587
|
-
|
|
588
|
-
## Test Exports (wao/test)
|
|
589
|
-
|
|
590
|
-
```js
|
|
591
|
-
import {
|
|
592
|
-
AO, // In-memory AOS client
|
|
593
|
-
HyperBEAM, // Node lifecycle manager
|
|
594
|
-
HB, // HTTP client
|
|
595
|
-
acc, // Array of 3 test accounts: [{ jwk, addr, signer }]
|
|
596
|
-
mu, su, cu, // Individual test accounts
|
|
597
|
-
connect, // aoconnect factory
|
|
598
|
-
Testnet, // Local testnet orchestrator
|
|
599
|
-
Src, // Lua source file manager
|
|
600
|
-
setup, // Full testnet setup with caching
|
|
601
|
-
ok, // Assert no error: ok(result)
|
|
602
|
-
fail, // Assert error: fail(result)
|
|
603
|
-
blueprint, // Load Lua blueprint: await blueprint("apm")
|
|
604
|
-
} from "wao/test"
|
|
605
|
-
```
|
|
606
|
-
|
|
607
|
-
### Test Accounts
|
|
608
|
-
|
|
609
|
-
```js
|
|
610
|
-
// 3 pre-generated accounts with JWK, address, and signer
|
|
611
|
-
acc[0].jwk // Arweave JWK
|
|
612
|
-
acc[0].addr // Arweave address
|
|
613
|
-
acc[0].signer // DataItem signer
|
|
614
|
-
```
|
|
615
|
-
|
|
616
|
-
### Src Class
|
|
617
|
-
|
|
618
|
-
```js
|
|
619
|
-
const src = new Src({ dir: "./src" })
|
|
620
|
-
const data = src.data("counter", "lua") // Read file contents
|
|
621
|
-
const txId = await src.upload("counter") // Upload to Arweave
|
|
622
|
-
```
|
|
623
|
-
|
|
624
|
-
### blueprint(name)
|
|
625
|
-
|
|
626
|
-
Load a Lua blueprint for AOS.
|
|
627
|
-
|
|
628
|
-
```js
|
|
629
|
-
const code = await blueprint("apm")
|
|
630
|
-
const { p } = await ao.deploy({ loads: [await blueprint("apm"), src_data] })
|
|
631
|
-
```
|
|
632
|
-
|
|
633
|
-
### Memory Sharing (Multi-User)
|
|
634
|
-
|
|
635
|
-
```js
|
|
636
|
-
const ao1 = await new AO().init(acc[0])
|
|
637
|
-
const { p } = await ao1.deploy({ src_data })
|
|
638
|
-
|
|
639
|
-
const ao2 = await new AO({ mem: ao1.mem }).init(acc[1])
|
|
640
|
-
const p2 = ao2.p(p.pid)
|
|
641
|
-
// p2 sees same process state as p, but signs as acc[1]
|
|
642
|
-
```
|
|
643
|
-
|
|
644
|
-
---
|
|
645
|
-
|
|
646
|
-
## Template Fills
|
|
647
|
-
|
|
648
|
-
Replace `<VAR>` placeholders in Lua source with actual values.
|
|
649
|
-
|
|
650
|
-
```js
|
|
651
|
-
await ao.deploy({
|
|
652
|
-
src_data: `
|
|
653
|
-
TOKEN = "<TOKEN_PID>"
|
|
654
|
-
OWNER = "<OWNER_ADDR>"
|
|
655
|
-
`,
|
|
656
|
-
fills: {
|
|
657
|
-
TOKEN_PID: "abc123...",
|
|
658
|
-
OWNER_ADDR: "xyz789...",
|
|
659
|
-
}
|
|
660
|
-
})
|
|
661
|
-
```
|
|
662
|
-
|
|
663
|
-
---
|
|
664
|
-
|
|
665
|
-
## Common Patterns
|
|
666
|
-
|
|
667
|
-
### Deploy and Test
|
|
668
|
-
|
|
669
|
-
```js
|
|
670
|
-
const ao = await new AO().init(acc[0])
|
|
671
|
-
const { p } = await ao.deploy({ src_data })
|
|
672
|
-
const count = await p.d("Get", false)
|
|
673
|
-
assert.equal(count, "0")
|
|
674
|
-
await p.m("Inc", false)
|
|
675
|
-
assert.equal(await p.d("Get", false), "1")
|
|
676
|
-
```
|
|
677
|
-
|
|
678
|
-
### Multi-User Token Transfer
|
|
679
|
-
|
|
680
|
-
```js
|
|
681
|
-
const ao1 = await new AO().init(acc[0])
|
|
682
|
-
const { p } = await ao1.deploy({ src_data })
|
|
683
|
-
const ao2 = await new AO({ mem: ao1.mem }).init(acc[1])
|
|
684
|
-
const p2 = ao2.p(p.pid)
|
|
685
|
-
|
|
686
|
-
await p.m("Transfer", { Recipient: acc[1].addr, Quantity: "100" })
|
|
687
|
-
const bal = await p2.d("Balance", { Target: acc[1].addr }, false)
|
|
688
|
-
```
|
|
689
|
-
|
|
690
|
-
### WeaveDrive Attestation
|
|
691
|
-
|
|
692
|
-
```js
|
|
693
|
-
const { p } = await ao.deploy({
|
|
694
|
-
tags: { Extension: "WeaveDrive", Attestor: ao.ar.addr },
|
|
695
|
-
loads: [await blueprint("apm"), handler],
|
|
696
|
-
src_data,
|
|
697
|
-
})
|
|
698
|
-
const { id } = await ao.ar.post({ data: "Hello" })
|
|
699
|
-
await ao.attest({ id })
|
|
700
|
-
const result = await p.d("Get", { id }, false)
|
|
701
|
-
```
|
|
702
|
-
|
|
703
|
-
### HyperBEAM Integration
|
|
704
|
-
|
|
705
|
-
```js
|
|
706
|
-
const hbeam = await new HyperBEAM({ reset: true, genesis_wasm: true }).ready()
|
|
707
|
-
const ao = await new AO({ hb: hbeam.url }).init(hbeam.jwk)
|
|
708
|
-
const { p } = await ao.deploy({ src_data })
|
|
709
|
-
await p.m("Inc")
|
|
710
|
-
const count = await p.d("Get", false)
|
|
711
|
-
hbeam.kill()
|
|
712
|
-
```
|
|
713
|
-
|
|
714
|
-
---
|
|
715
|
-
|
|
716
|
-
## Browser / wao/web
|
|
717
|
-
|
|
718
|
-
For browser applications, use `wao/web` instead of `wao/test`. This provides the same AO and AR classes but configured for browser environments with ArConnect wallet integration.
|
|
719
|
-
|
|
720
|
-
### Import
|
|
721
|
-
|
|
722
|
-
```js
|
|
723
|
-
import { AO, AR } from "wao/web"
|
|
724
|
-
```
|
|
725
|
-
|
|
726
|
-
**Important**: Never use `wao/test` in browser code. `wao/test` is for Node.js testing only and includes dependencies that don't work in browsers.
|
|
727
|
-
|
|
728
|
-
### ArConnect Wallet Connection
|
|
729
|
-
|
|
730
|
-
```js
|
|
731
|
-
// Check ArConnect is available
|
|
732
|
-
if (!window.arweaveWallet) {
|
|
733
|
-
throw new Error("ArConnect not found. Install from https://arconnect.io")
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
// Request permissions
|
|
737
|
-
await window.arweaveWallet.connect([
|
|
738
|
-
"ACCESS_ADDRESS",
|
|
739
|
-
"SIGN_TRANSACTION",
|
|
740
|
-
"ACCESS_PUBLIC_KEY",
|
|
741
|
-
])
|
|
742
|
-
|
|
743
|
-
// Get user address
|
|
744
|
-
const addr = await window.arweaveWallet.getActiveAddress()
|
|
745
|
-
```
|
|
746
|
-
|
|
747
|
-
### AO Browser Constructor
|
|
748
|
-
|
|
749
|
-
```js
|
|
750
|
-
const ao = new AO()
|
|
751
|
-
await ao.init(window.arweaveWallet)
|
|
752
|
-
```
|
|
753
|
-
|
|
754
|
-
The browser AO constructor accepts the ArConnect wallet object directly (instead of a JWK). All signing happens through ArConnect.
|
|
755
|
-
|
|
756
|
-
### Interacting with Deployed Processes
|
|
757
|
-
|
|
758
|
-
```js
|
|
759
|
-
// Connect to an existing process by ID
|
|
760
|
-
const p = ao.p("YOUR_PROCESS_ID")
|
|
761
|
-
|
|
762
|
-
// Send a message
|
|
763
|
-
const { out } = await p.msg("Action", { Tag: "value" })
|
|
764
|
-
|
|
765
|
-
// Read state (dry-run)
|
|
766
|
-
const { out: balance } = await p.msg("Balance", { Target: addr })
|
|
767
|
-
```
|
|
768
|
-
|
|
769
|
-
### Browser-Specific AO Options
|
|
770
|
-
|
|
771
|
-
```js
|
|
772
|
-
const ao = new AO({
|
|
773
|
-
// Custom gateway
|
|
774
|
-
ar: { host: "arweave.net", port: 443, protocol: "https" },
|
|
775
|
-
})
|
|
776
|
-
```
|
|
777
|
-
|
|
778
|
-
### Example: Token Balance Checker
|
|
779
|
-
|
|
780
|
-
```js
|
|
781
|
-
import { AO } from "wao/web"
|
|
782
|
-
|
|
783
|
-
async function checkBalance(processId, address) {
|
|
784
|
-
const ao = new AO()
|
|
785
|
-
await ao.init(window.arweaveWallet)
|
|
786
|
-
const p = ao.p(processId)
|
|
787
|
-
const { out } = await p.msg("Balance", { Target: address })
|
|
788
|
-
return out
|
|
789
|
-
}
|
|
790
|
-
```
|
|
791
|
-
|
|
792
|
-
### Example: Send Transfer
|
|
793
|
-
|
|
794
|
-
```js
|
|
795
|
-
import { AO } from "wao/web"
|
|
796
|
-
|
|
797
|
-
async function transfer(processId, recipient, quantity) {
|
|
798
|
-
const ao = new AO()
|
|
799
|
-
await ao.init(window.arweaveWallet)
|
|
800
|
-
const p = ao.p(processId)
|
|
801
|
-
const { out } = await p.msg("Transfer", {
|
|
802
|
-
Recipient: recipient,
|
|
803
|
-
Quantity: quantity,
|
|
804
|
-
})
|
|
805
|
-
return out
|
|
806
|
-
}
|
|
807
|
-
```
|