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,14 @@
|
|
|
1
|
+
import { Html, Main, NextScript } from "next/document"
|
|
2
|
+
import { Head } from "arnext"
|
|
3
|
+
|
|
4
|
+
export default function Document() {
|
|
5
|
+
return (
|
|
6
|
+
<Html lang="en" suppressHydrationWarning>
|
|
7
|
+
<Head />
|
|
8
|
+
<body>
|
|
9
|
+
<Main />
|
|
10
|
+
<NextScript />
|
|
11
|
+
</body>
|
|
12
|
+
</Html>
|
|
13
|
+
)
|
|
14
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// react
|
|
2
|
+
import { PanelGroup, Panel, PanelResizeHandle } from "react-resizable-panels"
|
|
3
|
+
import use from "/lib/use"
|
|
4
|
+
|
|
5
|
+
// chakra-ui
|
|
6
|
+
import { Box, Flex, Icon } from "@chakra-ui/react"
|
|
7
|
+
import { Toaster } from "@/components/ui/toaster"
|
|
8
|
+
|
|
9
|
+
// utils
|
|
10
|
+
import { includes } from "ramda"
|
|
11
|
+
|
|
12
|
+
// components
|
|
13
|
+
import GlobalStyle from "/components/styles/GlobalStyle"
|
|
14
|
+
import Global from "/components/Global"
|
|
15
|
+
import Header from "/components/Header"
|
|
16
|
+
import Left from "/components/Left"
|
|
17
|
+
import Middle from "/components/Middle"
|
|
18
|
+
import Sidebar from "/components/Sidebar"
|
|
19
|
+
import Logo from "/components/Logo"
|
|
20
|
+
import Footer from "/components/Footer"
|
|
21
|
+
import Editor from "/components/editor/Editor"
|
|
22
|
+
import Terminal from "/components/terminal/Terminal"
|
|
23
|
+
import CreateFileModal from "/components/modals/CreateFileModal"
|
|
24
|
+
import CreateFolderModal from "/components/modals/CreateFolderModal"
|
|
25
|
+
import LaunchNetworkModal from "/components/modals/LaunchNetworkModal"
|
|
26
|
+
import CreateProjectModal from "/components/modals/CreateProjectModal"
|
|
27
|
+
import ProxyModal from "/components/modals/ProxyModal"
|
|
28
|
+
import FSModal from "/components/modals/FSModal"
|
|
29
|
+
import ImportModal from "/components/modals/ImportModal"
|
|
30
|
+
import RenameFileModal from "/components/modals/RenameFileModal"
|
|
31
|
+
|
|
32
|
+
export default function Home({}) {
|
|
33
|
+
const [tab, setTab] = use("tab")
|
|
34
|
+
const [init, setInit] = use("init")
|
|
35
|
+
return (
|
|
36
|
+
<>
|
|
37
|
+
<GlobalStyle />
|
|
38
|
+
<Global />
|
|
39
|
+
{!init ? <Logo /> : null}
|
|
40
|
+
<Flex direction="column" h="100vh" w="100vw">
|
|
41
|
+
<Flex h="30px">
|
|
42
|
+
<Header />
|
|
43
|
+
</Flex>
|
|
44
|
+
<Flex h="calc(100vh - 60px)" w="100vw" css={{ overflow: "hidden" }}>
|
|
45
|
+
<Flex w="60px" h="calc(100vh - 60px)">
|
|
46
|
+
<Sidebar />
|
|
47
|
+
</Flex>
|
|
48
|
+
{includes(tab, [
|
|
49
|
+
"Modules",
|
|
50
|
+
"Processes",
|
|
51
|
+
"Messages",
|
|
52
|
+
"Entity",
|
|
53
|
+
"Blocks",
|
|
54
|
+
]) ? null : (
|
|
55
|
+
<Flex w="315px" h="calc(100vh - 60px)">
|
|
56
|
+
<Left />
|
|
57
|
+
</Flex>
|
|
58
|
+
)}
|
|
59
|
+
<Box
|
|
60
|
+
flex={1}
|
|
61
|
+
h="calc(100vh - 60px)"
|
|
62
|
+
w="100%"
|
|
63
|
+
css={{ overflow: "hidden" }}
|
|
64
|
+
>
|
|
65
|
+
<PanelGroup direction="horizontal">
|
|
66
|
+
{!includes(tab, [
|
|
67
|
+
"Projects",
|
|
68
|
+
"Modules",
|
|
69
|
+
"Processes",
|
|
70
|
+
"Messages",
|
|
71
|
+
"Entity",
|
|
72
|
+
"Blocks",
|
|
73
|
+
]) ? (
|
|
74
|
+
<>
|
|
75
|
+
<Panel defaultSize={35} minSize={20} order={1}>
|
|
76
|
+
<Box h="calc(100vh - 60px)">
|
|
77
|
+
<Middle />
|
|
78
|
+
</Box>
|
|
79
|
+
</Panel>
|
|
80
|
+
<PanelResizeHandle />
|
|
81
|
+
</>
|
|
82
|
+
) : tab !== "Projects" ? (
|
|
83
|
+
<>
|
|
84
|
+
<Panel defaultSize={50} minSize={20} order={1}>
|
|
85
|
+
<Box h="calc(100vh - 60px)">
|
|
86
|
+
<Middle />
|
|
87
|
+
</Box>
|
|
88
|
+
</Panel>
|
|
89
|
+
<PanelResizeHandle />
|
|
90
|
+
</>
|
|
91
|
+
) : null}
|
|
92
|
+
<Panel minSize={30} defaultSize={35} order={2}>
|
|
93
|
+
<PanelGroup
|
|
94
|
+
direction={tab !== "Projects" ? "vertical" : "horizontal"}
|
|
95
|
+
>
|
|
96
|
+
<Panel maxSize={65}>
|
|
97
|
+
<Editor />
|
|
98
|
+
</Panel>
|
|
99
|
+
<PanelResizeHandle />
|
|
100
|
+
<Panel maxSize={65}>
|
|
101
|
+
<Terminal />
|
|
102
|
+
</Panel>
|
|
103
|
+
</PanelGroup>
|
|
104
|
+
</Panel>
|
|
105
|
+
</PanelGroup>
|
|
106
|
+
</Box>
|
|
107
|
+
</Flex>
|
|
108
|
+
<Footer />
|
|
109
|
+
</Flex>
|
|
110
|
+
<CreateFileModal />
|
|
111
|
+
<LaunchNetworkModal />
|
|
112
|
+
<CreateProjectModal />
|
|
113
|
+
<CreateFolderModal />
|
|
114
|
+
<RenameFileModal />
|
|
115
|
+
<ImportModal />
|
|
116
|
+
<ProxyModal />
|
|
117
|
+
<FSModal />
|
|
118
|
+
<Toaster />
|
|
119
|
+
</>
|
|
120
|
+
)
|
|
121
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import { defineConfig, devices } from "@playwright/test"
|
|
3
|
+
import { resolve, dirname } from "node:path"
|
|
4
|
+
import { fileURLToPath } from "node:url"
|
|
5
|
+
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
7
|
+
const APP_ROOT = __dirname
|
|
8
|
+
|
|
9
|
+
export default defineConfig({
|
|
10
|
+
testDir: resolve(APP_ROOT, "test/e2e"),
|
|
11
|
+
testIgnore: ["**/global-setup.mjs", "**/global-teardown.mjs", "**/run-from-root.mjs"],
|
|
12
|
+
fullyParallel: false,
|
|
13
|
+
forbidOnly: !!process.env.CI,
|
|
14
|
+
retries: process.env.CI ? 2 : 0,
|
|
15
|
+
workers: 1,
|
|
16
|
+
reporter: process.env.CI ? "github" : "list",
|
|
17
|
+
globalSetup: resolve(APP_ROOT, "test/e2e/global-setup.mjs"),
|
|
18
|
+
globalTeardown: resolve(APP_ROOT, "test/e2e/global-teardown.mjs"),
|
|
19
|
+
timeout: 90000,
|
|
20
|
+
use: {
|
|
21
|
+
baseURL: "http://localhost:3000",
|
|
22
|
+
trace: "on-first-retry",
|
|
23
|
+
actionTimeout: 15000,
|
|
24
|
+
navigationTimeout: 30000,
|
|
25
|
+
},
|
|
26
|
+
projects: [
|
|
27
|
+
{
|
|
28
|
+
name: "chromium",
|
|
29
|
+
use: { ...devices["Desktop Chrome"] },
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
webServer: {
|
|
33
|
+
command: "npm run dev",
|
|
34
|
+
url: "http://localhost:3000",
|
|
35
|
+
reuseExistingServer: !process.env.CI,
|
|
36
|
+
timeout: 120000,
|
|
37
|
+
cwd: APP_ROOT,
|
|
38
|
+
stdout: "ignore",
|
|
39
|
+
stderr: "pipe",
|
|
40
|
+
},
|
|
41
|
+
})
|
package/app/proxy.mjs
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import express from "express"
|
|
2
|
+
import { createProxyMiddleware } from "http-proxy-middleware"
|
|
3
|
+
|
|
4
|
+
const app = express()
|
|
5
|
+
|
|
6
|
+
const port = (process.argv[2] ?? "4000") * 1
|
|
7
|
+
const target = process.argv[3] ?? "http://localhost:3000"
|
|
8
|
+
const sub = process.argv[4] ?? "7J-cq6dcJAz0zkzcrRNb-2FTZRuQXIij1P1FiaQxdaE"
|
|
9
|
+
|
|
10
|
+
app.use(
|
|
11
|
+
`/${sub}`,
|
|
12
|
+
createProxyMiddleware({
|
|
13
|
+
target,
|
|
14
|
+
changeOrigin: true,
|
|
15
|
+
pathRewrite: { "^/arweave": "" },
|
|
16
|
+
}),
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
app.listen(port, () => {
|
|
20
|
+
console.log(`Proxy server running at http://localhost:${port}/${sub}`)
|
|
21
|
+
})
|
|
Binary file
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
-- AO Package Manager for easy installation of packages in ao processes
|
|
2
|
+
-- This blueprint fetches the latest APM client from the APM registry and installs it
|
|
3
|
+
-------------------------------------------------------------------------
|
|
4
|
+
-- ___ .______ .___ ___. __ __ __ ___
|
|
5
|
+
-- / \ | _ \ | \/ | | | | | | | / \
|
|
6
|
+
-- / ^ \ | |_) | | \ / | | | | | | | / ^ \
|
|
7
|
+
-- / /_\ \ | ___/ | |\/| | | | | | | | / /_\ \
|
|
8
|
+
-- / _____ \ | | | | | | __| `----.| `--' | / _____ \
|
|
9
|
+
-- /__/ \__\ | _| |__| |__| (__)_______| \______/ /__/ \__\
|
|
10
|
+
--
|
|
11
|
+
---------------------------------------------------------------------------
|
|
12
|
+
-- APM Registry source code: https://github.com/betteridea-dev/ao-package-manager
|
|
13
|
+
-- CLI tool for managing packages: https://www.npmjs.com/package/apm-tool
|
|
14
|
+
-- Web UI for browsing & publishing packages: https://apm.betteridea.dev
|
|
15
|
+
-- Built with ❤️ by BetterIDEa
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
local apm_id = "DKF8oXtPvh3q8s0fJFIeHFyHNM6oKrwMCUrPxEMroak"
|
|
19
|
+
|
|
20
|
+
function Hexencode(str)
|
|
21
|
+
return (str:gsub(".", function(char) return string.format("%02x", char:byte()) end))
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
function Hexdecode(hex)
|
|
25
|
+
return (hex:gsub("%x%x", function(digits) return string.char(tonumber(digits, 16)) end))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
-- common error handler
|
|
29
|
+
function HandleRun(func, msg)
|
|
30
|
+
local ok, err = pcall(func, msg)
|
|
31
|
+
if not ok then
|
|
32
|
+
local clean_err = err:match(":%d+: (.+)") or err
|
|
33
|
+
print(msg.Action .. " - " .. err)
|
|
34
|
+
-- if not msg.Target == ao.id then
|
|
35
|
+
ao.send({
|
|
36
|
+
Target = msg.From,
|
|
37
|
+
Data = clean_err,
|
|
38
|
+
Result = "error"
|
|
39
|
+
})
|
|
40
|
+
-- end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
local function InstallResponseHandler(msg)
|
|
45
|
+
local from = msg.From
|
|
46
|
+
if not from == apm_id then
|
|
47
|
+
print("Attempt to update from illegal source")
|
|
48
|
+
return
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
if not msg.Result == "success" then
|
|
52
|
+
print("Update failed: " .. msg.Data)
|
|
53
|
+
return
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
local source = msg.Data
|
|
57
|
+
local version = msg.Version
|
|
58
|
+
|
|
59
|
+
if source then
|
|
60
|
+
source = Hexdecode(source)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
local func, err = load(string.format([[
|
|
64
|
+
local function _load()
|
|
65
|
+
%s
|
|
66
|
+
end
|
|
67
|
+
-- apm = _load()
|
|
68
|
+
_load()
|
|
69
|
+
]], source))
|
|
70
|
+
if not func then
|
|
71
|
+
error("Error compiling load function: " .. err)
|
|
72
|
+
end
|
|
73
|
+
func()
|
|
74
|
+
|
|
75
|
+
apm._version = version
|
|
76
|
+
-- print("✅ Installed APM v:" .. version)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
Handlers.once(
|
|
80
|
+
"APM.UpdateResponse",
|
|
81
|
+
Handlers.utils.hasMatchingTag("Action", "APM.UpdateResponse"),
|
|
82
|
+
function(msg)
|
|
83
|
+
HandleRun(InstallResponseHandler, msg)
|
|
84
|
+
end
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
Send({
|
|
88
|
+
Target = apm_id,
|
|
89
|
+
Action = "APM.Update"
|
|
90
|
+
})
|
|
91
|
+
print("📦 Loading APM...")
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
-- ARENA GAME BLUEPRINT.
|
|
2
|
+
|
|
3
|
+
-- REQUIREMENTS: cron must be added and activated for game operation.
|
|
4
|
+
|
|
5
|
+
-- This blueprint provides the framework to operate an 'arena' style game
|
|
6
|
+
-- inside an ao process. Games are played in rounds, where players aim to
|
|
7
|
+
-- eliminate one another until only one remains, or until the game time
|
|
8
|
+
-- has elapsed. The game process will play rounds indefinitely as players join
|
|
9
|
+
-- and leave.
|
|
10
|
+
|
|
11
|
+
-- When a player eliminates another, they receive the eliminated player's deposit token
|
|
12
|
+
-- as a reward. Additionally, the builder can provide a bonus of these tokens
|
|
13
|
+
-- to be distributed per round as an additional incentive. If the intended
|
|
14
|
+
-- player type in the game is a bot, providing an additional 'bonus'
|
|
15
|
+
-- creates an opportunity for coders to 'mine' the process's
|
|
16
|
+
-- tokens by competing to produce the best agent.
|
|
17
|
+
|
|
18
|
+
-- The builder can also provide other handlers that allow players to perform
|
|
19
|
+
-- actions in the game, calling 'eliminatePlayer()' at the appropriate moment
|
|
20
|
+
-- in their game logic to control the framework.
|
|
21
|
+
|
|
22
|
+
-- Processes can also register in a 'Listen' mode, where they will receive
|
|
23
|
+
-- all announcements from the game, but are not considered for entry into the
|
|
24
|
+
-- rounds themselves. They are also not unregistered unless they explicitly ask
|
|
25
|
+
-- to be.
|
|
26
|
+
|
|
27
|
+
-- GLOBAL VARIABLES.
|
|
28
|
+
|
|
29
|
+
-- Game progression modes in a loop:
|
|
30
|
+
-- [Not-Started] -> Waiting -> Playing -> [Someone wins or timeout] -> Waiting...
|
|
31
|
+
-- The loop is broken if there are not enough players to start a game after the waiting state.
|
|
32
|
+
GameMode = GameMode or "Not-Started"
|
|
33
|
+
StateChangeTime = StateChangeTime or undefined
|
|
34
|
+
|
|
35
|
+
-- State durations (in milliseconds)
|
|
36
|
+
WaitTime = WaitTime or 2 * 60 * 1000 -- 2 minutes
|
|
37
|
+
GameTime = GameTime or 20 * 60 * 1000 -- 20 minutes
|
|
38
|
+
Now = Now or undefined -- Current time, updated on every message.
|
|
39
|
+
|
|
40
|
+
-- Token information for player stakes.
|
|
41
|
+
UNIT = 1000
|
|
42
|
+
PaymentToken = PaymentToken or "ADDR" -- Token address
|
|
43
|
+
PaymentQty = PaymentQty or tostring(math.floor(UNIT)) -- Quantity of tokens for registration
|
|
44
|
+
BonusQty = BonusQty or tostring(math.floor(UNIT)) -- Bonus token quantity for winners
|
|
45
|
+
|
|
46
|
+
-- Players waiting to join the next game and their payment status.
|
|
47
|
+
Waiting = Waiting or {}
|
|
48
|
+
-- Active players and their game states.
|
|
49
|
+
Players = Players or {}
|
|
50
|
+
-- Number of winners in the current game.
|
|
51
|
+
Winners = 0
|
|
52
|
+
-- Processes subscribed to game announcements.
|
|
53
|
+
Listeners = Listeners or {}
|
|
54
|
+
-- Minimum number of players required to start a game.
|
|
55
|
+
MinimumPlayers = MinimumPlayers or 2
|
|
56
|
+
|
|
57
|
+
-- Default player state initialization.
|
|
58
|
+
PlayerInitState = PlayerInitState or function () return {} end
|
|
59
|
+
|
|
60
|
+
-- Sends a state change announcement to all registered listeners.
|
|
61
|
+
-- @param event: The event type or name.
|
|
62
|
+
-- @param description: Description of the event.
|
|
63
|
+
function announce(event, description)
|
|
64
|
+
for ix, address in pairs(Listeners) do
|
|
65
|
+
ao.send({
|
|
66
|
+
Target = address,
|
|
67
|
+
Action = "Announcement",
|
|
68
|
+
Event = event,
|
|
69
|
+
Data = description
|
|
70
|
+
})
|
|
71
|
+
end
|
|
72
|
+
return print(Colors.gray .. "Announcement: " .. Colors.red .. event .. " " .. Colors.blue .. description .. Colors.reset)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
-- Sends a reward to a player.
|
|
76
|
+
-- @param recipient: The player receiving the reward.
|
|
77
|
+
-- @param qty: The quantity of the reward.
|
|
78
|
+
-- @param reason: The reason for the reward.
|
|
79
|
+
function sendReward(recipient, qty, reason)
|
|
80
|
+
if type(qty) ~= number then
|
|
81
|
+
qty = tonumber(qty)
|
|
82
|
+
end
|
|
83
|
+
ao.send({
|
|
84
|
+
Target = PaymentToken,
|
|
85
|
+
Action = "Transfer",
|
|
86
|
+
Quantity = tostring(qty),
|
|
87
|
+
Recipient = recipient,
|
|
88
|
+
Reason = reason
|
|
89
|
+
})
|
|
90
|
+
return print(Colors.gray .. "Sent Reward: " ..
|
|
91
|
+
Colors.blue .. tostring(qty) ..
|
|
92
|
+
Colors.gray .. ' tokens to ' ..
|
|
93
|
+
Colors.green .. recipient .. " " ..
|
|
94
|
+
Colors.blue .. reason .. Colors.reset
|
|
95
|
+
)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
-- Starts the waiting period for players to become ready to play.
|
|
99
|
+
function startWaitingPeriod()
|
|
100
|
+
GameMode = "Waiting"
|
|
101
|
+
StateChangeTime = Now + WaitTime
|
|
102
|
+
announce("Started-Waiting-Period", "The game is about to begin! Send your token to take part.")
|
|
103
|
+
print('Starting Waiting Period')
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
-- Starts the game if there are enough players.
|
|
107
|
+
function startGamePeriod()
|
|
108
|
+
local paidPlayers = 0
|
|
109
|
+
for player, hasPaid in pairs(Waiting) do
|
|
110
|
+
if hasPaid then
|
|
111
|
+
paidPlayers = paidPlayers + 1
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
if paidPlayers < MinimumPlayers then
|
|
116
|
+
announce("Not-Enough-Players", "Not enough players registered! Restarting...")
|
|
117
|
+
for player, hasPaid in pairs(Waiting) do
|
|
118
|
+
if hasPaid then
|
|
119
|
+
Waiting[player] = false
|
|
120
|
+
sendReward(player, PaymentQty, "Refund")
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
startWaitingPeriod()
|
|
124
|
+
return
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
LastTick = undefined
|
|
128
|
+
GameMode = "Playing"
|
|
129
|
+
StateChangeTime = Now + GameTime
|
|
130
|
+
for player, hasPaid in pairs(Waiting) do
|
|
131
|
+
if hasPaid then
|
|
132
|
+
Players[player] = PlayerInitState()
|
|
133
|
+
else
|
|
134
|
+
ao.send({
|
|
135
|
+
Target = player,
|
|
136
|
+
Action = "Ejected",
|
|
137
|
+
Reason = "Did-Not-Pay"
|
|
138
|
+
})
|
|
139
|
+
removeListener(player) -- Removing player from listener if they didn't pay
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
announce("Started-Game", "The game has started. Good luck!")
|
|
143
|
+
print("Game Started....")
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
-- Handles the elimination of a player from the game.
|
|
147
|
+
-- @param eliminated: The player to be eliminated.
|
|
148
|
+
-- @param eliminator: The player causing the elimination.
|
|
149
|
+
function eliminatePlayer(eliminated, eliminator)
|
|
150
|
+
sendReward(eliminator, PaymentQty, "Eliminated-Player")
|
|
151
|
+
Waiting[eliminated] = false
|
|
152
|
+
Players[eliminated] = nil
|
|
153
|
+
|
|
154
|
+
ao.send({
|
|
155
|
+
Target = eliminated,
|
|
156
|
+
Action = "Eliminated",
|
|
157
|
+
Eliminator = eliminator
|
|
158
|
+
})
|
|
159
|
+
|
|
160
|
+
announce("Player-Eliminated", eliminated .. " was eliminated by " .. eliminator .. "!")
|
|
161
|
+
|
|
162
|
+
local playerCount = 0
|
|
163
|
+
for player, _ in pairs(Players) do
|
|
164
|
+
playerCount = playerCount + 1
|
|
165
|
+
end
|
|
166
|
+
print("Eliminating player: " .. eliminated .. " by: " .. eliminator) -- Useful for tracking eliminations
|
|
167
|
+
|
|
168
|
+
if playerCount < MinimumPlayers then
|
|
169
|
+
endGame()
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
-- Ends the current game and starts a new one.
|
|
175
|
+
function endGame()
|
|
176
|
+
print("Game Over")
|
|
177
|
+
|
|
178
|
+
Winners = 0
|
|
179
|
+
|
|
180
|
+
for player, _ in pairs(Players) do
|
|
181
|
+
Winners = Winners + 1
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
Winnings = tonumber(BonusQty) / Winners
|
|
185
|
+
|
|
186
|
+
for player, _ in pairs(Players) do
|
|
187
|
+
-- addLog("EndGame", "Sending reward of:".. Winnings + PaymentQty .. "to player: " .. player) -- Useful for tracking rewards
|
|
188
|
+
sendReward(player, Winnings + tonumber(PaymentQty), "Win")
|
|
189
|
+
Waiting[player] = false
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
Players = {}
|
|
193
|
+
announce("Game-Ended", "Congratulations! The game has ended. Remaining players at conclusion: " .. Winners .. ".")
|
|
194
|
+
startWaitingPeriod()
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
-- Removes a listener from the listeners' list.
|
|
198
|
+
-- @param listener: The listener to be removed.
|
|
199
|
+
function removeListener(listener)
|
|
200
|
+
local idx = 0
|
|
201
|
+
for i, v in ipairs(Listeners) do
|
|
202
|
+
if v == listener then
|
|
203
|
+
idx = i
|
|
204
|
+
break
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
if idx > 0 then
|
|
208
|
+
table.remove(Listeners, idx)
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
-- HANDLERS: Game state management
|
|
213
|
+
|
|
214
|
+
-- Handler for cron messages, manages game state transitions.
|
|
215
|
+
Handlers.add(
|
|
216
|
+
"Game-State-Timers",
|
|
217
|
+
function(Msg)
|
|
218
|
+
return "continue"
|
|
219
|
+
end,
|
|
220
|
+
function(Msg)
|
|
221
|
+
Now = Msg.Timestamp
|
|
222
|
+
if GameMode == "Not-Started" then
|
|
223
|
+
startWaitingPeriod()
|
|
224
|
+
elseif GameMode == "Waiting" then
|
|
225
|
+
if Now > StateChangeTime then
|
|
226
|
+
startGamePeriod()
|
|
227
|
+
end
|
|
228
|
+
elseif GameMode == "Playing" then
|
|
229
|
+
if onTick and type(onTick) == "function" then
|
|
230
|
+
onTick()
|
|
231
|
+
end
|
|
232
|
+
if Now > StateChangeTime then
|
|
233
|
+
endGame()
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
-- Handler for player deposits to participate in the next game.
|
|
240
|
+
Handlers.add(
|
|
241
|
+
"Transfer",
|
|
242
|
+
function(Msg)
|
|
243
|
+
return
|
|
244
|
+
Msg.Action == "Credit-Notice" and
|
|
245
|
+
Msg.From == PaymentToken and
|
|
246
|
+
tonumber(Msg.Quantity) >= tonumber(PaymentQty) and "continue"
|
|
247
|
+
end,
|
|
248
|
+
function(Msg)
|
|
249
|
+
Waiting[Msg.Sender] = true
|
|
250
|
+
ao.send({
|
|
251
|
+
Target = Msg.Sender,
|
|
252
|
+
Action = "Payment-Received"
|
|
253
|
+
})
|
|
254
|
+
announce("Player-Ready", Msg.Sender .. " is ready to play!")
|
|
255
|
+
end
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
-- Registers new players for the next game and subscribes them for event info.
|
|
259
|
+
Handlers.add(
|
|
260
|
+
"Register",
|
|
261
|
+
Handlers.utils.hasMatchingTag("Action", "Register"),
|
|
262
|
+
function(Msg)
|
|
263
|
+
if Msg.Mode ~= "Listen" and Waiting[Msg.From] == undefined then
|
|
264
|
+
Waiting[Msg.From] = false
|
|
265
|
+
end
|
|
266
|
+
removeListener(Msg.From)
|
|
267
|
+
table.insert(Listeners, Msg.From)
|
|
268
|
+
ao.send({
|
|
269
|
+
Target = Msg.From,
|
|
270
|
+
Action = "Registered"
|
|
271
|
+
})
|
|
272
|
+
announce("New Player Registered", Msg.From .. " has joined in waiting.")
|
|
273
|
+
end
|
|
274
|
+
)
|
|
275
|
+
|
|
276
|
+
-- Unregisters players and stops sending them event info.
|
|
277
|
+
Handlers.add(
|
|
278
|
+
"Unregister",
|
|
279
|
+
Handlers.utils.hasMatchingTag("Action", "Unregister"),
|
|
280
|
+
function(Msg)
|
|
281
|
+
removeListener(Msg.From)
|
|
282
|
+
ao.send({
|
|
283
|
+
Target = Msg.From,
|
|
284
|
+
Action = "Unregistered"
|
|
285
|
+
})
|
|
286
|
+
end
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
-- Adds bet amount to BonusQty
|
|
290
|
+
Handlers.add(
|
|
291
|
+
"AddBet",
|
|
292
|
+
Handlers.utils.hasMatchingTag("Reason", "AddBet"),
|
|
293
|
+
function(Msg)
|
|
294
|
+
BonusQty = tonumber(BonusQty) + tonumber(Msg.Tags.Quantity)
|
|
295
|
+
announce("Bet-Added", Msg.From .. "has placed a bet. " .. "BonusQty amount increased by " .. Msg.Tags.Quantity .. "!")
|
|
296
|
+
end
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
-- Retrieves the current game state.
|
|
300
|
+
Handlers.add(
|
|
301
|
+
"GetGameState",
|
|
302
|
+
Handlers.utils.hasMatchingTag("Action", "GetGameState"),
|
|
303
|
+
function (Msg)
|
|
304
|
+
local json = require("json")
|
|
305
|
+
local TimeRemaining = StateChangeTime - Now
|
|
306
|
+
local GameState = json.encode({
|
|
307
|
+
GameMode = GameMode,
|
|
308
|
+
TimeRemaining = TimeRemaining,
|
|
309
|
+
Players = Players,
|
|
310
|
+
})
|
|
311
|
+
ao.send({
|
|
312
|
+
Target = Msg.From,
|
|
313
|
+
Action = "GameState",
|
|
314
|
+
Data = GameState})
|
|
315
|
+
end
|
|
316
|
+
)
|
|
317
|
+
|
|
318
|
+
-- Alerts users regarding the time remaining in each game state.
|
|
319
|
+
Handlers.add(
|
|
320
|
+
"AnnounceTick",
|
|
321
|
+
Handlers.utils.hasMatchingTag("Action", "Tick"),
|
|
322
|
+
function (Msg)
|
|
323
|
+
local TimeRemaining = StateChangeTime - Now
|
|
324
|
+
if GameMode == "Waiting" then
|
|
325
|
+
announce("Tick", "The game will start in " .. (TimeRemaining/1000) .. " seconds.")
|
|
326
|
+
elseif GameMode == "Playing" then
|
|
327
|
+
announce("Tick", "The game will end in " .. (TimeRemaining/1000) .. " seconds.")
|
|
328
|
+
end
|
|
329
|
+
end
|
|
330
|
+
)
|
|
331
|
+
|
|
332
|
+
-- Sends tokens to players with no balance upon request
|
|
333
|
+
Handlers.add(
|
|
334
|
+
"RequestTokens",
|
|
335
|
+
Handlers.utils.hasMatchingTag("Action", "RequestTokens"),
|
|
336
|
+
function (Msg)
|
|
337
|
+
print("Transfering Tokens: " .. tostring(math.floor(10000 * UNIT)))
|
|
338
|
+
ao.send({
|
|
339
|
+
Target = ao.id,
|
|
340
|
+
Action = "Transfer",
|
|
341
|
+
Quantity = tostring(math.floor(10000 * UNIT)),
|
|
342
|
+
Recipient = Msg.From,
|
|
343
|
+
})
|
|
344
|
+
end
|
|
345
|
+
)
|