@underpostnet/cyberia 3.2.80
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/.dockerignore +14 -0
- package/.env.example +144 -0
- package/.github/workflows/cyberia-client.cd.yml +40 -0
- package/.github/workflows/cyberia-server.cd.yml +40 -0
- package/.github/workflows/docker-image.cyberia-client.ci.yml +71 -0
- package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +70 -0
- package/.github/workflows/docker-image.cyberia-server.ci.yml +71 -0
- package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +71 -0
- package/.github/workflows/docker-image.engine-cyberia.ci.yml +53 -0
- package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +53 -0
- package/.github/workflows/engine-cyberia.cd.yml +157 -0
- package/.github/workflows/engine-cyberia.ci.yml +125 -0
- package/.github/workflows/ghpkg.ci.yml +160 -0
- package/.github/workflows/gitlab.ci.yml +20 -0
- package/.github/workflows/hardhat.ci.yml +82 -0
- package/.github/workflows/npmpkg.ci.yml +126 -0
- package/.github/workflows/publish.ci.yml +87 -0
- package/.github/workflows/publish.cyberia.ci.yml +79 -0
- package/.github/workflows/pwa-microservices-template-page.cd.yml +65 -0
- package/.github/workflows/pwa-microservices-template-test.ci.yml +33 -0
- package/.github/workflows/release.cd.yml +46 -0
- package/.nycrc +9 -0
- package/.prettierignore +12 -0
- package/.prettierrc +9 -0
- package/.vscode/extensions.json +10 -0
- package/.vscode/settings.json +26 -0
- package/CHANGELOG.md +2516 -0
- package/CLI-HELP.md +1099 -0
- package/Dockerfile +161 -0
- package/Dockerfile.dev +161 -0
- package/Dockerfile.test +165 -0
- package/LICENSE +21 -0
- package/README.md +259 -0
- package/baremetal/commission-workflows.json +211 -0
- package/baremetal/packer-workflows.json +24 -0
- package/bin/build.js +261 -0
- package/bin/build.template.js +33 -0
- package/bin/cyberia.js +5627 -0
- package/bin/deploy.js +1547 -0
- package/bin/index.js +5627 -0
- package/bump.config.js +27 -0
- package/compose.env +144 -0
- package/conf.js +952 -0
- package/deployment.yaml +418 -0
- package/docker-compose.yml +434 -0
- package/examples/static-page/README.md +150 -0
- package/examples/static-page/ssr-components/CustomPage.js +554 -0
- package/examples/static-page/static-config-example.json +57 -0
- package/hardhat/.env.example +31 -0
- package/hardhat/contracts/ObjectLayerToken.sol +391 -0
- package/hardhat/deployments/.gitkeep +0 -0
- package/hardhat/deployments/hardhat-ObjectLayerToken.json +11 -0
- package/hardhat/hardhat.config.js +136 -0
- package/hardhat/ignition/modules/.gitkeep +0 -0
- package/hardhat/ignition/modules/ObjectLayerToken.js +21 -0
- package/hardhat/networks/besu-object-layer.network.json +138 -0
- package/hardhat/package-lock.json +2871 -0
- package/hardhat/package.json +43 -0
- package/hardhat/scripts/deployObjectLayerToken.js +98 -0
- package/hardhat/test/ObjectLayerToken.js +696 -0
- package/hardhat/types/ethers-contracts/ObjectLayerToken.ts +690 -0
- package/hardhat/types/ethers-contracts/common.ts +92 -0
- package/hardhat/types/ethers-contracts/factories/ObjectLayerToken__factory.ts +1055 -0
- package/hardhat/types/ethers-contracts/factories/index.ts +4 -0
- package/hardhat/types/ethers-contracts/hardhat.d.ts +47 -0
- package/hardhat/types/ethers-contracts/index.ts +6 -0
- package/ipfs/configure-ipfs.sh +13 -0
- package/jsconfig.json +9 -0
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +48 -0
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +48 -0
- package/manifests/deployment/adminer/deployment.yaml +32 -0
- package/manifests/deployment/adminer/kustomization.yaml +7 -0
- package/manifests/deployment/adminer/service.yaml +13 -0
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +418 -0
- package/manifests/deployment/dd-cyberia-development/grpc-service.yaml +17 -0
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +189 -0
- package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +164 -0
- package/manifests/deployment/dd-default-development/deployment.yaml +163 -0
- package/manifests/deployment/dd-default-development/proxy.yaml +46 -0
- package/manifests/deployment/fastapi/backend-deployment.yml +120 -0
- package/manifests/deployment/fastapi/backend-service.yml +19 -0
- package/manifests/deployment/fastapi/frontend-deployment.yml +54 -0
- package/manifests/deployment/fastapi/frontend-service.yml +15 -0
- package/manifests/deployment/fastapi/initial_data.sh +8 -0
- package/manifests/deployment/kafka/deployment.yaml +67 -0
- package/manifests/deployment/mongo-express/deployment.yaml +62 -0
- package/manifests/deployment/phpmyadmin/deployment.yaml +54 -0
- package/manifests/deployment/playwright/deployment.yaml +52 -0
- package/manifests/deployment/spark/spark-pi-py.yaml +20 -0
- package/manifests/deployment/tensorflow/tf-gpu-test.yaml +63 -0
- package/manifests/envoy-service-nodeport.yaml +22 -0
- package/manifests/grafana/deployment.yaml +64 -0
- package/manifests/grafana/kustomization.yaml +7 -0
- package/manifests/grafana/pvc.yaml +12 -0
- package/manifests/grafana/service.yaml +14 -0
- package/manifests/grafana/storage-class.yaml +9 -0
- package/manifests/ipfs/configmap.yaml +64 -0
- package/manifests/ipfs/headless-service.yaml +35 -0
- package/manifests/ipfs/kustomization.yaml +8 -0
- package/manifests/ipfs/statefulset.yaml +149 -0
- package/manifests/ipfs/storage-class.yaml +9 -0
- package/manifests/kind-config-dev.yaml +20 -0
- package/manifests/kind-config.yaml +12 -0
- package/manifests/kubeadm-calico-config.yaml +14 -0
- package/manifests/letsencrypt-prod.yaml +14 -0
- package/manifests/lxd/lxd-admin-profile.yaml +26 -0
- package/manifests/lxd/lxd-preseed.yaml +30 -0
- package/manifests/mariadb/kustomization.yaml +9 -0
- package/manifests/mariadb/pv.yaml +12 -0
- package/manifests/mariadb/pvc.yaml +10 -0
- package/manifests/mariadb/service.yaml +10 -0
- package/manifests/mariadb/statefulset.yaml +56 -0
- package/manifests/mariadb/storage-class.yaml +10 -0
- package/manifests/mongodb/headless-service.yaml +10 -0
- package/manifests/mongodb/kustomization.yaml +11 -0
- package/manifests/mongodb/pv-pvc.yaml +59 -0
- package/manifests/mongodb/statefulset.yaml +113 -0
- package/manifests/mongodb/storage-class.yaml +9 -0
- package/manifests/mongodb-4.4/headless-service.yaml +10 -0
- package/manifests/mongodb-4.4/kustomization.yaml +9 -0
- package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
- package/manifests/mongodb-4.4/pv-pvc.yaml +19 -0
- package/manifests/mongodb-4.4/service-deployment.yaml +61 -0
- package/manifests/mongodb-4.4/statefulset.yaml +79 -0
- package/manifests/mongodb-4.4/storage-class.yaml +9 -0
- package/manifests/mysql/kustomization.yaml +7 -0
- package/manifests/mysql/pv-pvc.yaml +27 -0
- package/manifests/mysql/statefulset.yaml +55 -0
- package/manifests/postgresql/configmap.yaml +9 -0
- package/manifests/postgresql/kustomization.yaml +10 -0
- package/manifests/postgresql/pv.yaml +15 -0
- package/manifests/postgresql/pvc.yaml +13 -0
- package/manifests/postgresql/service.yaml +10 -0
- package/manifests/postgresql/statefulset.yaml +37 -0
- package/manifests/prometheus/deployment.yaml +82 -0
- package/manifests/pv-pvc-dd.yaml +34 -0
- package/manifests/valkey/kustomization.yaml +7 -0
- package/manifests/valkey/service.yaml +10 -0
- package/manifests/valkey/statefulset.yaml +37 -0
- package/manifests/valkey/valkey-nodeport.yaml +17 -0
- package/mongodb/entrypoint.sh +76 -0
- package/nginx.conf +128 -0
- package/nodemon.json +6 -0
- package/package.json +101 -0
- package/packer/images/Rocky9Amd64/Makefile +62 -0
- package/packer/images/Rocky9Amd64/QUICKSTART.md +113 -0
- package/packer/images/Rocky9Amd64/README.md +122 -0
- package/packer/images/Rocky9Amd64/http/rocky9.ks.pkrtpl.hcl +114 -0
- package/packer/images/Rocky9Amd64/rocky9.pkr.hcl +164 -0
- package/packer/images/Rocky9Arm64/Makefile +69 -0
- package/packer/images/Rocky9Arm64/README.md +122 -0
- package/packer/images/Rocky9Arm64/http/rocky9.ks.pkrtpl.hcl +114 -0
- package/packer/images/Rocky9Arm64/rocky9.pkr.hcl +171 -0
- package/packer/scripts/fuse-nbd +64 -0
- package/packer/scripts/fuse-tar-root +63 -0
- package/proxy.yaml +189 -0
- package/pv-pvc.yaml +164 -0
- package/scripts/device-scan.sh +65 -0
- package/scripts/disk-clean.sh +182 -0
- package/scripts/disk-devices.sh +13 -0
- package/scripts/gen-fqdns.sh +14 -0
- package/scripts/gpu-diag.sh +19 -0
- package/scripts/ip-info.sh +118 -0
- package/scripts/ipxe-setup.sh +200 -0
- package/scripts/k3s-node-setup.sh +124 -0
- package/scripts/kubeadm-node-setup.sh +317 -0
- package/scripts/link-local-underpost-cli.sh +6 -0
- package/scripts/lxd-vm-setup.sh +208 -0
- package/scripts/maas-nat-firewalld.sh +145 -0
- package/scripts/maas-setup.sh +135 -0
- package/scripts/maas-upload-boot-resource.sh +183 -0
- package/scripts/nat-iptables.sh +111 -0
- package/scripts/nvim.sh +91 -0
- package/scripts/packer-init-vars-file.sh +40 -0
- package/scripts/packer-setup.sh +289 -0
- package/scripts/ports-ls.sh +33 -0
- package/scripts/quick-tftp.sh +19 -0
- package/scripts/rhel-grpc-setup.sh +56 -0
- package/scripts/rocky-kickstart.sh +986 -0
- package/scripts/rocky-pwa.sh +200 -0
- package/scripts/rocky-setup.sh +106 -0
- package/scripts/rpmfusion-ffmpeg-setup.sh +32 -0
- package/scripts/ssl.sh +170 -0
- package/scripts/test-monitor.sh +248 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +30 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +155 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +39 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +382 -0
- package/src/api/core/core.controller.js +8 -0
- package/src/api/core/core.model.js +11 -0
- package/src/api/core/core.router.js +23 -0
- package/src/api/core/core.service.js +30 -0
- package/src/api/crypto/crypto.controller.js +10 -0
- package/src/api/crypto/crypto.model.js +23 -0
- package/src/api/crypto/crypto.router.js +23 -0
- package/src/api/crypto/crypto.service.js +64 -0
- package/src/api/cyberia-action/cyberia-action.controller.js +8 -0
- package/src/api/cyberia-action/cyberia-action.model.js +79 -0
- package/src/api/cyberia-action/cyberia-action.router.js +21 -0
- package/src/api/cyberia-action/cyberia-action.service.js +58 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +27 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +100 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +70 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +8 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +36 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +20 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +57 -0
- package/src/api/cyberia-entity/cyberia-entity.controller.js +6 -0
- package/src/api/cyberia-entity/cyberia-entity.model.js +25 -0
- package/src/api/cyberia-entity/cyberia-entity.router.js +17 -0
- package/src/api/cyberia-entity/cyberia-entity.service.js +42 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +6 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.model.js +67 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +17 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +46 -0
- package/src/api/cyberia-instance/cyberia-fallback-world.js +337 -0
- package/src/api/cyberia-instance/cyberia-instance-boot.service.js +57 -0
- package/src/api/cyberia-instance/cyberia-instance-map.service.js +583 -0
- package/src/api/cyberia-instance/cyberia-instance.controller.js +42 -0
- package/src/api/cyberia-instance/cyberia-instance.model.js +117 -0
- package/src/api/cyberia-instance/cyberia-instance.router.js +75 -0
- package/src/api/cyberia-instance/cyberia-instance.service.js +190 -0
- package/src/api/cyberia-instance/cyberia-portal-connector.js +260 -0
- package/src/api/cyberia-instance/cyberia-world-generator.js +618 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +6 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +200 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +17 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +46 -0
- package/src/api/cyberia-map/cyberia-map.controller.js +6 -0
- package/src/api/cyberia-map/cyberia-map.model.js +33 -0
- package/src/api/cyberia-map/cyberia-map.router.js +19 -0
- package/src/api/cyberia-map/cyberia-map.service.js +76 -0
- package/src/api/cyberia-quest/cyberia-quest.controller.js +9 -0
- package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
- package/src/api/cyberia-quest/cyberia-quest.router.js +26 -0
- package/src/api/cyberia-quest/cyberia-quest.service.js +97 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +6 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +21 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
- package/src/api/cyberia-saga/cyberia-saga.controller.js +6 -0
- package/src/api/cyberia-saga/cyberia-saga.model.js +59 -0
- package/src/api/cyberia-saga/cyberia-saga.router.js +17 -0
- package/src/api/cyberia-saga/cyberia-saga.service.js +42 -0
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +1076 -0
- package/src/api/cyberia-skill/cyberia-skill.controller.js +6 -0
- package/src/api/cyberia-skill/cyberia-skill.model.js +50 -0
- package/src/api/cyberia-skill/cyberia-skill.router.js +17 -0
- package/src/api/cyberia-skill/cyberia-skill.service.js +42 -0
- package/src/api/default/default.controller.js +6 -0
- package/src/api/default/default.model.js +20 -0
- package/src/api/default/default.router.js +21 -0
- package/src/api/default/default.service.js +42 -0
- package/src/api/document/document.controller.js +9 -0
- package/src/api/document/document.model.js +95 -0
- package/src/api/document/document.router.js +32 -0
- package/src/api/document/document.service.js +633 -0
- package/src/api/file/file.controller.js +15 -0
- package/src/api/file/file.model.js +127 -0
- package/src/api/file/file.ref.json +39 -0
- package/src/api/file/file.router.js +36 -0
- package/src/api/file/file.service.js +499 -0
- package/src/api/instance/instance.controller.js +8 -0
- package/src/api/instance/instance.model.js +34 -0
- package/src/api/instance/instance.router.js +27 -0
- package/src/api/instance/instance.service.js +75 -0
- package/src/api/ipfs/ipfs.controller.js +8 -0
- package/src/api/ipfs/ipfs.model.js +77 -0
- package/src/api/ipfs/ipfs.router.js +26 -0
- package/src/api/ipfs/ipfs.service.js +145 -0
- package/src/api/object-layer/object-layer.controller.js +18 -0
- package/src/api/object-layer/object-layer.model.js +200 -0
- package/src/api/object-layer/object-layer.router.js +729 -0
- package/src/api/object-layer/object-layer.service.js +894 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +6 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +93 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +17 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +46 -0
- package/src/api/test/test.controller.js +14 -0
- package/src/api/test/test.model.js +14 -0
- package/src/api/test/test.router.js +23 -0
- package/src/api/test/test.service.js +35 -0
- package/src/api/types.js +24 -0
- package/src/api/user/guest.service.js +100 -0
- package/src/api/user/postman_collection.json +216 -0
- package/src/api/user/user.build.js +16 -0
- package/src/api/user/user.controller.js +35 -0
- package/src/api/user/user.model.js +142 -0
- package/src/api/user/user.router.js +367 -0
- package/src/api/user/user.service.js +582 -0
- package/src/api.js +23 -0
- package/src/cli/baremetal.js +3947 -0
- package/src/cli/cloud-init.js +673 -0
- package/src/cli/cluster.js +1395 -0
- package/src/cli/db.js +1533 -0
- package/src/cli/deploy.js +1542 -0
- package/src/cli/docker-compose.js +802 -0
- package/src/cli/env.js +177 -0
- package/src/cli/fs.js +380 -0
- package/src/cli/image.js +389 -0
- package/src/cli/index.js +1059 -0
- package/src/cli/ipfs.js +182 -0
- package/src/cli/kickstart.js +271 -0
- package/src/cli/kubectl.js +214 -0
- package/src/cli/lxd.js +1232 -0
- package/src/cli/monitor.js +659 -0
- package/src/cli/release.js +595 -0
- package/src/cli/repository.js +1969 -0
- package/src/cli/run.js +3326 -0
- package/src/cli/secrets.js +151 -0
- package/src/cli/ssh.js +975 -0
- package/src/cli/static.js +653 -0
- package/src/cli/system.js +332 -0
- package/src/cli/test.js +176 -0
- package/src/client/Cryptokoyn.index.js +30 -0
- package/src/client/CyberiaPortal.index.js +31 -0
- package/src/client/Default.index.js +77 -0
- package/src/client/Itemledger.index.js +35 -0
- package/src/client/Underpost.index.js +31 -0
- package/src/client/components/core/404.js +20 -0
- package/src/client/components/core/500.js +20 -0
- package/src/client/components/core/Account.js +630 -0
- package/src/client/components/core/AgGrid.js +238 -0
- package/src/client/components/core/Alert.js +76 -0
- package/src/client/components/core/AppStore.js +69 -0
- package/src/client/components/core/Auth.js +353 -0
- package/src/client/components/core/Badge.js +26 -0
- package/src/client/components/core/Blockchain.js +41 -0
- package/src/client/components/core/Blog.js +9 -0
- package/src/client/components/core/BtnIcon.js +109 -0
- package/src/client/components/core/CalendarCore.js +437 -0
- package/src/client/components/core/Chat.js +62 -0
- package/src/client/components/core/ClientEvents.js +163 -0
- package/src/client/components/core/ColorPaletteElement.js +309 -0
- package/src/client/components/core/CommonJs.js +1014 -0
- package/src/client/components/core/Content.js +349 -0
- package/src/client/components/core/Css.js +1134 -0
- package/src/client/components/core/CssCore.js +881 -0
- package/src/client/components/core/D3Chart.js +44 -0
- package/src/client/components/core/Docs.js +478 -0
- package/src/client/components/core/DropDown.js +321 -0
- package/src/client/components/core/EventBus.js +96 -0
- package/src/client/components/core/EventsUI.js +130 -0
- package/src/client/components/core/FileExplorer.js +1406 -0
- package/src/client/components/core/FullScreen.js +201 -0
- package/src/client/components/core/Input.js +537 -0
- package/src/client/components/core/Keyboard.js +80 -0
- package/src/client/components/core/KeyboardAvoidance.js +145 -0
- package/src/client/components/core/LoadingAnimation.js +152 -0
- package/src/client/components/core/LogIn.js +212 -0
- package/src/client/components/core/LogOut.js +72 -0
- package/src/client/components/core/Logger.js +22 -0
- package/src/client/components/core/Modal.js +2956 -0
- package/src/client/components/core/NotificationManager.js +80 -0
- package/src/client/components/core/Pagination.js +252 -0
- package/src/client/components/core/Panel.js +1308 -0
- package/src/client/components/core/PanelForm.js +915 -0
- package/src/client/components/core/Polyhedron.js +947 -0
- package/src/client/components/core/PublicProfile.js +895 -0
- package/src/client/components/core/Recover.js +211 -0
- package/src/client/components/core/Responsive.js +146 -0
- package/src/client/components/core/RichText.js +33 -0
- package/src/client/components/core/Router.js +523 -0
- package/src/client/components/core/Scroll.js +76 -0
- package/src/client/components/core/SearchBox.js +1007 -0
- package/src/client/components/core/SignUp.js +153 -0
- package/src/client/components/core/SocketIo.js +163 -0
- package/src/client/components/core/SocketIoHandler.js +75 -0
- package/src/client/components/core/Stream.js +161 -0
- package/src/client/components/core/ToggleSwitch.js +89 -0
- package/src/client/components/core/ToolTip.js +78 -0
- package/src/client/components/core/Translate.js +694 -0
- package/src/client/components/core/Validator.js +140 -0
- package/src/client/components/core/VanillaJs.js +485 -0
- package/src/client/components/core/Wallet.js +95 -0
- package/src/client/components/core/WebComponent.js +44 -0
- package/src/client/components/core/Webhook.js +58 -0
- package/src/client/components/core/Worker.js +313 -0
- package/src/client/components/core/windowGetDimensions.js +269 -0
- package/src/client/components/cryptokoyn/AppShellCryptokoyn.js +352 -0
- package/src/client/components/cryptokoyn/AppStoreCryptokoyn.js +5 -0
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +212 -0
- package/src/client/components/cryptokoyn/LogInCryptokoyn.js +16 -0
- package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +12 -0
- package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +16 -0
- package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +11 -0
- package/src/client/components/cryptokoyn/SocketIoCryptokoyn.js +6 -0
- package/src/client/components/cyberia/ActionEngineCyberia.js +1867 -0
- package/src/client/components/cyberia/EntityEngineCyberia.js +585 -0
- package/src/client/components/cyberia/InstanceEngineCyberia.js +1088 -0
- package/src/client/components/cyberia/InstanceSelectionView.js +900 -0
- package/src/client/components/cyberia/MapEngineCyberia.js +1976 -0
- package/src/client/components/cyberia/ObjectLayerEngine.js +1540 -0
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +2420 -0
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +1522 -0
- package/src/client/components/cyberia/SharedDefaultsCyberia.js +528 -0
- package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +772 -0
- package/src/client/components/cyberia-portal/AppStoreCyberiaPortal.js +5 -0
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +254 -0
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +21 -0
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +16 -0
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +518 -0
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +72 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +16 -0
- package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +13 -0
- package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +6 -0
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +48 -0
- package/src/client/components/default/AppShellDefault.js +765 -0
- package/src/client/components/default/AppStoreDefault.js +5 -0
- package/src/client/components/default/CommonDefault.js +29 -0
- package/src/client/components/default/CssDefault.js +27 -0
- package/src/client/components/default/LogInDefault.js +16 -0
- package/src/client/components/default/LogOutDefault.js +12 -0
- package/src/client/components/default/RouterDefault.js +47 -0
- package/src/client/components/default/SettingsDefault.js +16 -0
- package/src/client/components/default/SignUpDefault.js +11 -0
- package/src/client/components/default/SocketIoDefault.js +6 -0
- package/src/client/components/default/TranslateDefault.js +7 -0
- package/src/client/components/itemledger/AppShellItemledger.js +353 -0
- package/src/client/components/itemledger/AppStoreItemledger.js +5 -0
- package/src/client/components/itemledger/CssItemledger.js +212 -0
- package/src/client/components/itemledger/LogInItemledger.js +17 -0
- package/src/client/components/itemledger/LogOutItemledger.js +12 -0
- package/src/client/components/itemledger/RouterItemledger.js +38 -0
- package/src/client/components/itemledger/SettingsItemledger.js +16 -0
- package/src/client/components/itemledger/SignUpItemledger.js +11 -0
- package/src/client/components/itemledger/SocketIoItemledger.js +6 -0
- package/src/client/components/itemledger/TranslateItemledger.js +7 -0
- package/src/client/components/underpost/AppShellUnderpost.js +691 -0
- package/src/client/components/underpost/AppStoreUnderpost.js +5 -0
- package/src/client/components/underpost/CssUnderpost.js +281 -0
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +879 -0
- package/src/client/components/underpost/DocumentSearchProvider.js +448 -0
- package/src/client/components/underpost/LabGalleryUnderpost.js +79 -0
- package/src/client/components/underpost/LogInUnderpost.js +25 -0
- package/src/client/components/underpost/LogOutUnderpost.js +17 -0
- package/src/client/components/underpost/RouterUnderpost.js +45 -0
- package/src/client/components/underpost/SettingsUnderpost.js +16 -0
- package/src/client/components/underpost/SignUpUnderpost.js +11 -0
- package/src/client/components/underpost/SocketIoUnderpost.js +6 -0
- package/src/client/components/underpost/TranslateUnderpost.js +10 -0
- package/src/client/public/cryptokoyn/assets/banner/koyn-social.png +0 -0
- package/src/client/public/cryptokoyn/assets/logo/base-icon.png +0 -0
- package/src/client/public/cryptokoyn/assets/logo/cryptokoyn.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-144x144.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-192x192.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-256x256.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-36x36.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-48x48.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-72x72.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-96x96.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-114x114-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-120x120-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-144x144-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-152x152-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-180x180-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-57x57-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-60x60-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-72x72-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-76x76-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/favicon-16x16.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/favicon-32x32.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-144x144.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-150x150.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-310x150.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-310x310.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-70x70.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/safari-pinned-tab.svg +42 -0
- package/src/client/public/cryptokoyn/browserconfig.xml +12 -0
- package/src/client/public/cryptokoyn/favicon.ico +0 -0
- package/src/client/public/cryptokoyn/microdata.json +85 -0
- package/src/client/public/cryptokoyn/site.webmanifest +57 -0
- package/src/client/public/cryptokoyn/sitemap +148 -0
- package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +307 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +309 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +204 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +341 -0
- package/src/client/public/cyberia-docs/CYBERIA-LORE.md +84 -0
- package/src/client/public/cyberia-docs/CYBERIA-SAGA.md +394 -0
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +294 -0
- package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +242 -0
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +309 -0
- package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +228 -0
- package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
- package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +740 -0
- package/src/client/public/default/android-chrome-144x144.png +0 -0
- package/src/client/public/default/android-chrome-192x192.png +0 -0
- package/src/client/public/default/android-chrome-256x256.png +0 -0
- package/src/client/public/default/android-chrome-36x36.png +0 -0
- package/src/client/public/default/android-chrome-384x384.png +0 -0
- package/src/client/public/default/android-chrome-48x48.png +0 -0
- package/src/client/public/default/android-chrome-512x512.png +0 -0
- package/src/client/public/default/android-chrome-72x72.png +0 -0
- package/src/client/public/default/android-chrome-96x96.png +0 -0
- package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
- package/src/client/public/default/apple-touch-icon-114x114-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/default/apple-touch-icon-152x152-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
- package/src/client/public/default/apple-touch-icon-180x180-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/default/apple-touch-icon-76x76-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
- package/src/client/public/default/assets/background/dark.jpg +0 -0
- package/src/client/public/default/assets/background/dark.svg +557 -0
- package/src/client/public/default/assets/background/white.jpg +0 -0
- package/src/client/public/default/assets/background/white0-min.jpg +0 -0
- package/src/client/public/default/assets/background/white0.jpg +0 -0
- package/src/client/public/default/assets/logo/base-icon.png +0 -0
- package/src/client/public/default/assets/logo/underpost.gif +0 -0
- package/src/client/public/default/assets/mailer/api-user-check.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-default-avatar.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-invalid-token.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-recover.png +0 -0
- package/src/client/public/default/browserconfig.xml +12 -0
- package/src/client/public/default/favicon-16x16.png +0 -0
- package/src/client/public/default/favicon-32x32.png +0 -0
- package/src/client/public/default/favicon-48x48.png +0 -0
- package/src/client/public/default/favicon.ico +0 -0
- package/src/client/public/default/manifest.webmanifest +69 -0
- package/src/client/public/default/mstile-144x144.png +0 -0
- package/src/client/public/default/mstile-150x150.png +0 -0
- package/src/client/public/default/mstile-310x150.png +0 -0
- package/src/client/public/default/mstile-310x310.png +0 -0
- package/src/client/public/default/mstile-70x70.png +0 -0
- package/src/client/public/default/safari-pinned-tab.svg +24 -0
- package/src/client/public/default/site.webmanifest +69 -0
- package/src/client/public/default/sitemap +148 -0
- package/src/client/public/default/yandex-browser-50x50.png +0 -0
- package/src/client/public/default/yandex-browser-manifest.json +9 -0
- package/src/client/public/doc/favicon.ico +0 -0
- package/src/client/public/doc/sitemap +148 -0
- package/src/client/public/itemledger/android-chrome-144x144.png +0 -0
- package/src/client/public/itemledger/android-chrome-192x192.png +0 -0
- package/src/client/public/itemledger/android-chrome-256x256.png +0 -0
- package/src/client/public/itemledger/android-chrome-36x36.png +0 -0
- package/src/client/public/itemledger/android-chrome-384x384.png +0 -0
- package/src/client/public/itemledger/android-chrome-48x48.png +0 -0
- package/src/client/public/itemledger/android-chrome-512x512.png +0 -0
- package/src/client/public/itemledger/android-chrome-72x72.png +0 -0
- package/src/client/public/itemledger/android-chrome-96x96.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-1024x1024.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-167x167.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1125x2436.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1136x640.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1170x2532.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1179x2556.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1242x2208.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1242x2688.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1284x2778.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1290x2796.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1334x750.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1488x2266.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1536x2048.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1620x2160.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1640x2160.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1668x2224.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1668x2388.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1792x828.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2048x1536.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2048x2732.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2160x1620.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2160x1640.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2208x1242.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2224x1668.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2266x1488.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2388x1668.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2436x1125.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2532x1170.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2556x1179.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2688x1242.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2732x2048.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2778x1284.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2796x1290.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-640x1136.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-750x1334.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-828x1792.png +0 -0
- package/src/client/public/itemledger/assets/logo/base-icon.png +0 -0
- package/src/client/public/itemledger/browserconfig.xml +12 -0
- package/src/client/public/itemledger/favicon-16x16.png +0 -0
- package/src/client/public/itemledger/favicon-32x32.png +0 -0
- package/src/client/public/itemledger/favicon-48x48.png +0 -0
- package/src/client/public/itemledger/favicon.ico +0 -0
- package/src/client/public/itemledger/manifest.webmanifest +69 -0
- package/src/client/public/itemledger/microdata.json +71 -0
- package/src/client/public/itemledger/mstile-144x144.png +0 -0
- package/src/client/public/itemledger/mstile-150x150.png +0 -0
- package/src/client/public/itemledger/mstile-310x150.png +0 -0
- package/src/client/public/itemledger/mstile-310x310.png +0 -0
- package/src/client/public/itemledger/mstile-70x70.png +0 -0
- package/src/client/public/itemledger/sitemap +148 -0
- package/src/client/public/itemledger/yandex-browser-50x50.png +0 -0
- package/src/client/public/itemledger/yandex-browser-manifest.json +9 -0
- package/src/client/public/test/favicon.ico +0 -0
- package/src/client/public/test/sitemap +148 -0
- package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +137 -0
- package/src/client/services/core/core.service.js +309 -0
- package/src/client/services/crypto/crypto.service.js +68 -0
- package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
- package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
- package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +99 -0
- package/src/client/services/cyberia-entity/cyberia-entity.management.js +57 -0
- package/src/client/services/cyberia-entity/cyberia-entity.service.js +99 -0
- package/src/client/services/cyberia-entity-type-default/cyberia-entity-type-default.service.js +99 -0
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +194 -0
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +137 -0
- package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +99 -0
- package/src/client/services/cyberia-map/cyberia-map.management.js +193 -0
- package/src/client/services/cyberia-map/cyberia-map.service.js +120 -0
- package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
- package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
- package/src/client/services/cyberia-saga/cyberia-saga.service.js +99 -0
- package/src/client/services/cyberia-skill/cyberia-skill.service.js +99 -0
- package/src/client/services/default/default.management.js +1015 -0
- package/src/client/services/default/default.service.js +99 -0
- package/src/client/services/document/document.service.js +134 -0
- package/src/client/services/file/file.service.js +94 -0
- package/src/client/services/instance/instance.management.js +78 -0
- package/src/client/services/instance/instance.service.js +107 -0
- package/src/client/services/ipfs/ipfs.service.js +118 -0
- package/src/client/services/object-layer/object-layer.management.js +414 -0
- package/src/client/services/object-layer/object-layer.service.js +208 -0
- package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +99 -0
- package/src/client/services/test/test.service.js +68 -0
- package/src/client/services/user/guest.service.js +86 -0
- package/src/client/services/user/user.management.js +51 -0
- package/src/client/services/user/user.service.js +106 -0
- package/src/client/ssr/RootDocument.js +237 -0
- package/src/client/ssr/body/404.js +77 -0
- package/src/client/ssr/body/500.js +76 -0
- package/src/client/ssr/body/CacheControl.js +117 -0
- package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +97 -0
- package/src/client/ssr/body/DefaultSplashScreen.js +97 -0
- package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +90 -0
- package/src/client/ssr/head/CryptokoynScripts.js +4 -0
- package/src/client/ssr/head/Css.js +241 -0
- package/src/client/ssr/head/CyberiaPortalScripts.js +6 -0
- package/src/client/ssr/head/DefaultScripts.js +6 -0
- package/src/client/ssr/head/ItemledgerScripts.js +4 -0
- package/src/client/ssr/head/Microdata.js +11 -0
- package/src/client/ssr/head/Production.js +1 -0
- package/src/client/ssr/head/Pwa.js +146 -0
- package/src/client/ssr/head/PwaItemledger.js +197 -0
- package/src/client/ssr/head/Seo.js +15 -0
- package/src/client/ssr/head/UnderpostScripts.js +6 -0
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +20 -0
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +16 -0
- package/src/client/ssr/views/Cyberia404.js +328 -0
- package/src/client/ssr/views/CyberiaServerMetrics.js +1070 -0
- package/src/client/ssr/views/Maintenance.js +64 -0
- package/src/client/ssr/views/NoNetworkConnection.js +68 -0
- package/src/client/ssr/views/Test.js +199 -0
- package/src/client/sw/core.sw.js +274 -0
- package/src/client-builder/client-build-docs.js +493 -0
- package/src/client-builder/client-build-live.js +100 -0
- package/src/client-builder/client-build.js +1092 -0
- package/src/client-builder/client-dev-server.js +88 -0
- package/src/client-builder/client-formatted.js +170 -0
- package/src/client-builder/client-icons.js +108 -0
- package/src/client-builder/ssr.js +124 -0
- package/src/client.build.js +17 -0
- package/src/client.dev.js +21 -0
- package/src/db/DataBaseProvider.js +213 -0
- package/src/db/mariadb/MariaDB.js +72 -0
- package/src/db/mongo/MongoBootstrap.js +657 -0
- package/src/db/mongo/MongooseDB.js +199 -0
- package/src/grpc/cyberia/grpc-server.js +162 -0
- package/src/index.js +357 -0
- package/src/mailer/EmailRender.js +116 -0
- package/src/mailer/MailerProvider.js +213 -0
- package/src/projects/cyberia/atlas-sprite-sheet-generator.js +413 -0
- package/src/projects/cyberia/besu-genesis-generator.js +1630 -0
- package/src/projects/cyberia/catalog-cyberia.js +90 -0
- package/src/projects/cyberia/gemini-client.js +175 -0
- package/src/projects/cyberia/generate-saga.js +2137 -0
- package/src/projects/cyberia/hot-reload-trigger.js +163 -0
- package/src/projects/cyberia/instance-data.js +719 -0
- package/src/projects/cyberia/ipfs-client.js +599 -0
- package/src/projects/cyberia/map-preview-generator.js +304 -0
- package/src/projects/cyberia/object-layer.js +978 -0
- package/src/projects/cyberia/semantic-layer-generator-floor.js +319 -0
- package/src/projects/cyberia/semantic-layer-generator-resource.js +259 -0
- package/src/projects/cyberia/semantic-layer-generator-skin.js +1164 -0
- package/src/projects/cyberia/semantic-layer-generator.js +753 -0
- package/src/projects/cyberia/shape-generator.js +1060 -0
- package/src/projects/underpost/catalog-underpost.js +60 -0
- package/src/proxy.js +19 -0
- package/src/runtime/cyberia-client/Dockerfile +49 -0
- package/src/runtime/cyberia-client/Dockerfile.dev +75 -0
- package/src/runtime/cyberia-server/Dockerfile +43 -0
- package/src/runtime/cyberia-server/Dockerfile.dev +56 -0
- package/src/runtime/engine-cyberia/Dockerfile +161 -0
- package/src/runtime/engine-cyberia/Dockerfile.dev +161 -0
- package/src/runtime/engine-cyberia/Dockerfile.test +165 -0
- package/src/runtime/engine-cyberia/compose.env +144 -0
- package/src/runtime/engine-cyberia/docker-compose.yml +434 -0
- package/src/runtime/engine-cyberia/ipfs/configure-ipfs.sh +13 -0
- package/src/runtime/engine-cyberia/mongodb/entrypoint.sh +76 -0
- package/src/runtime/engine-cyberia/nginx.conf +128 -0
- package/src/runtime/express/Dockerfile +45 -0
- package/src/runtime/express/Express.js +285 -0
- package/src/runtime/lampp/Dockerfile +62 -0
- package/src/runtime/lampp/Lampp.js +359 -0
- package/src/runtime/nginx/Nginx.js +250 -0
- package/src/runtime/wp/Dockerfile +62 -0
- package/src/runtime/wp/Wp.js +642 -0
- package/src/server/auth.js +713 -0
- package/src/server/backup.js +102 -0
- package/src/server/catalog.js +72 -0
- package/src/server/conf.js +2316 -0
- package/src/server/cron.js +476 -0
- package/src/server/crypto.js +210 -0
- package/src/server/data-query.js +461 -0
- package/src/server/dns.js +553 -0
- package/src/server/downloader.js +73 -0
- package/src/server/logger.js +229 -0
- package/src/server/middlewares.js +152 -0
- package/src/server/peer.js +75 -0
- package/src/server/process.js +299 -0
- package/src/server/proxy.js +139 -0
- package/src/server/runtime-status.js +252 -0
- package/src/server/runtime.js +183 -0
- package/src/server/start.js +272 -0
- package/src/server/tls.js +254 -0
- package/src/server/valkey.js +201 -0
- package/src/server.js +25 -0
- package/src/ws/IoInterface.js +129 -0
- package/src/ws/IoServer.js +68 -0
- package/src/ws/core/channels/core.ws.chat.js +68 -0
- package/src/ws/core/channels/core.ws.mailer.js +116 -0
- package/src/ws/core/channels/core.ws.stream.js +90 -0
- package/src/ws/core/core.ws.connection.js +41 -0
- package/src/ws/core/core.ws.emit.js +37 -0
- package/src/ws/core/core.ws.server.js +44 -0
- package/src/ws/default/channels/default.ws.main.js +57 -0
- package/src/ws/default/default.ws.connection.js +35 -0
- package/src/ws/default/default.ws.emit.js +14 -0
- package/src/ws/default/default.ws.server.js +39 -0
- package/test/api.test.js +53 -0
- package/test/crypto.test.js +117 -0
- package/test/cyberia-instance-conf-defaults.test.js +140 -0
- package/test/deploy-monitor.test.js +267 -0
- package/test/shape-generator.test.js +463 -0
- package/tsconfig.docs.json +15 -0
- package/typedoc.dd-cyberia.json +31 -0
- package/typedoc.json +31 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# Action System
|
|
2
|
+
|
|
3
|
+
**Module:** `src/api/cyberia-action` · `src/api/cyberia-dialogue`
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
The Action System defines how NPC entities interact with players. An **Action** is a spatial, typed payload attached to a map entity that the player activates by tapping the NPC. Actions drive dialogue, shops, crafting, storage, and quest grant events.
|
|
10
|
+
|
|
11
|
+
> **Implementation status — Alpha (talk / quest-talk):** The CyberiaAction and CyberiaDialogue MongoDB schemas and Engine REST API (`src/api/cyberia-action`, `src/api/cyberia-dialogue`) are defined. The `talk` and `quest-talk` paths are wired end-to-end: the Go server binds actions to entities at instance init, validates dialogue completion, grants quests, and advances `talk` objectives (see **Dialogue Interaction Protocol** below). Shop / craft / storage transaction processing remains planned for a later Alpha increment. The `freeze_start`/`freeze_end` WS messages for modal protection are implemented; dialogue freeze now rides on the `dlg_*` frames.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Data Model
|
|
16
|
+
|
|
17
|
+
### CyberiaAction Schema
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
CyberiaAction {
|
|
21
|
+
code: String // stable unique slug
|
|
22
|
+
type: String // see Action Types below
|
|
23
|
+
label: String // display label on interaction button
|
|
24
|
+
|
|
25
|
+
// Spatial origin — NPC entity cell providing this action
|
|
26
|
+
sourceMapCode: String
|
|
27
|
+
sourceCellX: Number
|
|
28
|
+
sourceCellY: Number
|
|
29
|
+
|
|
30
|
+
// Identity — the NPC skin is derived from the `default-<skin>` dialogue code
|
|
31
|
+
// (no stored field); 'talk' objectives match the talked-to bot's active skin.
|
|
32
|
+
|
|
33
|
+
// Quest award — NOT stored on the action. The quest(s) this action awards are
|
|
34
|
+
// the CyberiaQuest documents whose (sourceMapCode, sourceCellX, sourceCellY)
|
|
35
|
+
// match this action's cell; the runtime offers the next acceptable one.
|
|
36
|
+
|
|
37
|
+
// Dialogue
|
|
38
|
+
dialogCode: String // greeting dialogue shown on tap
|
|
39
|
+
questDialogueCodes: [String] // ordered dialogue codes that satisfy 'talk' quest objectives
|
|
40
|
+
|
|
41
|
+
// Type-specific payloads:
|
|
42
|
+
shopItems: [{
|
|
43
|
+
itemId: String // ObjectLayer item ID being sold
|
|
44
|
+
priceItemId: String // currency item ID (default: 'coin')
|
|
45
|
+
priceQty: Number // price quantity
|
|
46
|
+
}]
|
|
47
|
+
|
|
48
|
+
craftRecipes: [{
|
|
49
|
+
outputItems: [{ itemId: String, qty: Number }]
|
|
50
|
+
ingredients: [{ itemId: String, qty: Number }]
|
|
51
|
+
}]
|
|
52
|
+
|
|
53
|
+
storageSlots: Number // storage capacity (type='storage' only)
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### CyberiaDialogue Schema
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
CyberiaDialogue {
|
|
61
|
+
code: String // grouping key (e.g. "wason-intro")
|
|
62
|
+
order: Number // 0-based sequence within the group
|
|
63
|
+
speaker: String // display name above the dialogue line
|
|
64
|
+
text: String // dialogue line content
|
|
65
|
+
mood: String // emotion hint: neutral | angry | sad | happy | ...
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
A single `code` groups many ordered dialogue lines. The C client fetches all lines for a given code in one request, then displays them sequentially.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Action Types
|
|
74
|
+
|
|
75
|
+
| Type | Description | Active Payload |
|
|
76
|
+
| ------------ | -------------------------------------------------------------- | ---------------------------------------------------- |
|
|
77
|
+
| `quest-talk` | Awards the quest bound to its cell (via Take Quest), shows dialogue | quests bound by cell, `dialogCode`, `questDialogueCodes` |
|
|
78
|
+
| `talk` | NPC dialogue only — satisfies `talk` quest objectives | `dialogCode`, `questDialogueCodes` |
|
|
79
|
+
| `shop` | Item shop — player buys items with in-game currency | `shopItems[]` |
|
|
80
|
+
| `craft` | Crafting station — consume ingredients to produce output items | `craftRecipes[]` |
|
|
81
|
+
| `storage` | Personal item storage vault | `storageSlots` |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Action–Quest Integration
|
|
86
|
+
|
|
87
|
+
The Action System and Quest System are linked by **cell** (the action and the
|
|
88
|
+
quest it awards share `sourceMapCode/sourceCellX/sourceCellY`) and by the NPC's
|
|
89
|
+
active **skin** (which `talk` objectives match):
|
|
90
|
+
|
|
91
|
+
```mermaid
|
|
92
|
+
graph LR
|
|
93
|
+
Quest["CyberiaQuest\nsource cell: (12,10)\nstep.objective: { type: 'talk', itemId: 'wason' }"]
|
|
94
|
+
Action["CyberiaAction\nsource cell: (12,10)\nquestDialogueCodes: ['default-wason']"]
|
|
95
|
+
Progress["CyberiaQuestProgress\nstep.objectiveProgress[i].current++"]
|
|
96
|
+
|
|
97
|
+
Quest -->|same source cell| Action
|
|
98
|
+
Action -->|player completes dialogue| Progress
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Talk objective satisfaction flow:**
|
|
102
|
+
|
|
103
|
+
1. Player taps NPC → interaction bubble shown.
|
|
104
|
+
2. Player taps interaction bubble → `modal_interact` opens; the offered quest is the one bound to the NPC's cell.
|
|
105
|
+
3. Accepting is explicit: the **Take Quest** button sends `quest_accept` and the server grants the acceptable quest bound to that cell (prerequisites met, not active/completed).
|
|
106
|
+
4. Talk objectives advance only after the player reads **all** `questDialogueCodes` lines (`dlg_complete`), validated server-side; never by a button.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Shop Transaction Flow
|
|
111
|
+
|
|
112
|
+
```mermaid
|
|
113
|
+
sequenceDiagram
|
|
114
|
+
participant P as Player
|
|
115
|
+
participant G as Go Server
|
|
116
|
+
participant E as Engine (Node.js)
|
|
117
|
+
|
|
118
|
+
P->>G: Tap shop NPC
|
|
119
|
+
G->>E: GET /api/cyberia-action?sourceMapCode=...&sourceCellX=...
|
|
120
|
+
E-->>G: CyberiaAction { type: 'shop', shopItems: [...] }
|
|
121
|
+
G-->>P: init_data → shop payload (item list + prices)
|
|
122
|
+
P-->>G: FrozenInteractionState (modal open)
|
|
123
|
+
|
|
124
|
+
P->>G: Buy request { itemId, quantity }
|
|
125
|
+
G->>E: GET player coin balance
|
|
126
|
+
Note over G: balance >= price * quantity?
|
|
127
|
+
G->>E: Deduct coins + grant item to inventory
|
|
128
|
+
G-->>P: FCT: CoinLoss + ItemGain events
|
|
129
|
+
G-->>P: ThawPlayer (modal close allowed)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Craft Transaction Flow
|
|
135
|
+
|
|
136
|
+
```mermaid
|
|
137
|
+
sequenceDiagram
|
|
138
|
+
participant P as Player
|
|
139
|
+
participant G as Go Server
|
|
140
|
+
participant E as Engine (Node.js)
|
|
141
|
+
participant BC as ObjectLayerToken
|
|
142
|
+
|
|
143
|
+
P->>G: Tap craft NPC
|
|
144
|
+
G-->>P: FrozenInteractionState
|
|
145
|
+
P->>G: Craft request { recipeIndex }
|
|
146
|
+
Note over G: Verify player has all ingredients
|
|
147
|
+
G->>E: Deduct ingredient quantities from inventory
|
|
148
|
+
G->>E: Grant output items to inventory
|
|
149
|
+
opt Item has on-chain token (ERC-1155)
|
|
150
|
+
G->>BC: burn(ingredientTokenId, qty) per ingredient
|
|
151
|
+
G->>BC: mint(outputTokenId, qty)
|
|
152
|
+
end
|
|
153
|
+
G-->>P: FCT: ItemLoss per ingredient + ItemGain per output
|
|
154
|
+
G-->>P: ThawPlayer
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Dialogue Interaction Protocol (talk / quest-talk)
|
|
160
|
+
|
|
161
|
+
Tapping an interaction bubble opens the Raylib-native **`modal_interact`** modal
|
|
162
|
+
(top half of the screen). It has a tab strip — **stack** (active item slots),
|
|
163
|
+
**stats** (six-stat stack totals), and **action** (mission interface, shown only
|
|
164
|
+
for action-provider entities, ESI 8) — over a fixed bottom bar of right-aligned
|
|
165
|
+
integration buttons (**Chat**, **Integration**) that open the JS overlay. The
|
|
166
|
+
action tab's **Talk / Take mission** opens `modal_dialogue` (bottom half).
|
|
167
|
+
|
|
168
|
+
The client is identical for `talk` and `quest-talk`; the **server** branches after
|
|
169
|
+
`dlg_complete`. The client never declares the action type, quest code, or quest
|
|
170
|
+
dialogue codes — the server resolves the bound action from its own
|
|
171
|
+
`entityId → CyberiaAction` cache (bound at instance init).
|
|
172
|
+
|
|
173
|
+
### Wire messages
|
|
174
|
+
|
|
175
|
+
| Direction | Message | When | Payload |
|
|
176
|
+
| --------- | -------------- | ------------------------------------- | ------------------------------------ |
|
|
177
|
+
| C → S | `dlg_start` | `modal_dialogue` opens | `{ entityId, itemId }` |
|
|
178
|
+
| C → S | `dlg_complete` | player reads all lines, closes | `{ entityId, itemId, dialogCode }` |
|
|
179
|
+
| C → S | `dlg_cancel` | player dismisses early (✕ / outside) | `{ entityId, itemId }` |
|
|
180
|
+
| S → C | `dlg_ack` | after `dlg_complete` is processed | `{ questGranted, objectivesDone, quests[] }` |
|
|
181
|
+
|
|
182
|
+
Binary uplink opcodes: `dlg_start` `0x17`, `dlg_complete` `0x18`, `dlg_cancel`
|
|
183
|
+
`0x19` (JSON aliases of the same names are also accepted).
|
|
184
|
+
|
|
185
|
+
`dlg_ack` is notify-only — it carries the affected quest snapshot entries the
|
|
186
|
+
client upserts into its local `quest_store` (Quest Journal); it never gates
|
|
187
|
+
simulation state.
|
|
188
|
+
|
|
189
|
+
### Server `dlg_complete` handling
|
|
190
|
+
|
|
191
|
+
1. Validate `player.activeDialogueEntityID == msg.entityId`; drop otherwise.
|
|
192
|
+
2. Clear the dialogue context and thaw the player (modal protection off).
|
|
193
|
+
3. Resolve the action from `actionCache[entityId]`. `talk` → ack only.
|
|
194
|
+
4. `quest-talk`: `dlg_complete` NEVER grants — it advances every active quest
|
|
195
|
+
whose **current step** has a `{ type: 'talk', itemId == bot active skin }`
|
|
196
|
+
objective, **only** when `msg.dialogCode` is in the action's
|
|
197
|
+
`questDialogueCodes`. Granting is a separate explicit `quest_accept`, which
|
|
198
|
+
grants the acceptable quest bound to the NPC's cell. On quest completion,
|
|
199
|
+
deliver rewards (FCT); successors are NOT auto-granted (the player accepts
|
|
200
|
+
each from its NPC).
|
|
201
|
+
|
|
202
|
+
> **Dialogue-code contract.** The C client fetches dialogue groups at
|
|
203
|
+
> `/api/cyberia-dialogue/code/default-<itemId>`, so the code it reports on
|
|
204
|
+
> `dlg_complete` is `default-<provideItemId>`. For a `quest-talk` objective to
|
|
205
|
+
> advance, the action's `questDialogueCodes` must contain that code.
|
|
206
|
+
|
|
207
|
+
### Freeze semantics
|
|
208
|
+
|
|
209
|
+
| Event | Player state |
|
|
210
|
+
| ---------------------------------- | ------------------------- |
|
|
211
|
+
| `modal_interact` open | Active (no freeze) |
|
|
212
|
+
| `dlg_start` sent | Frozen — immune to damage |
|
|
213
|
+
| `dlg_complete` / `dlg_cancel` sent | Unfrozen |
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Fallback World mission instantiation
|
|
218
|
+
|
|
219
|
+
The default mission system is playable in the procedural **Fallback World**.
|
|
220
|
+
`DefaultCyberiaActions` carry `sourceMapCode` / `sourceCellX` / `sourceCellY`
|
|
221
|
+
(all on `fallback-map-0`), and the world generator's
|
|
222
|
+
`generateActionProviderBots()` places one passive NPC bot per action at those
|
|
223
|
+
exact cells (skin = `provideItemId`, zero spawn/aggro radius). The fallback map
|
|
224
|
+
builder reserves those cells (dropping any overlapping obstacle) so the NPCs
|
|
225
|
+
always stand on walkable ground. The Go server then binds each bot back to its
|
|
226
|
+
action by `sourceMapCode + sourceCellX + sourceCellY` at instance init and keeps
|
|
227
|
+
an **ephemeral** per-session `CyberiaQuestProgress` (no persistence) — matching
|
|
228
|
+
the ROADMAP Road-to-Alpha-Open contract. `scp-2040` kill targets spawn from the
|
|
229
|
+
random bot pool, so the intro quest's talk → collect → kill loop is reachable.
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Spatial Binding and Instance Init
|
|
234
|
+
|
|
235
|
+
`sourceMapCode + sourceCellX + sourceCellY` links an Action to a specific entity cell in a specific map. During instance initialization:
|
|
236
|
+
|
|
237
|
+
1. `instance_loader.go` reads each `CyberiaEntity` at its `initCellX/initCellY`.
|
|
238
|
+
2. For entities with matching Action source coordinates, the Go server attaches the Action payload to the runtime entity.
|
|
239
|
+
3. The entity's `entityStatus` is set to `action-provider` (ESI id=8) — the bouncing chat icon renders above its nameplate.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Dialogue System
|
|
244
|
+
|
|
245
|
+
Dialogue groups allow multi-line sequential NPC speech:
|
|
246
|
+
|
|
247
|
+
```json
|
|
248
|
+
[
|
|
249
|
+
{
|
|
250
|
+
"code": "wason-intro",
|
|
251
|
+
"order": 0,
|
|
252
|
+
"speaker": "Wason",
|
|
253
|
+
"text": "Young traveler... you've finally arrived.",
|
|
254
|
+
"mood": "neutral"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"code": "wason-intro",
|
|
258
|
+
"order": 1,
|
|
259
|
+
"speaker": "Wason",
|
|
260
|
+
"text": "The village is in danger. I need your help.",
|
|
261
|
+
"mood": "sad"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"code": "wason-intro",
|
|
265
|
+
"order": 2,
|
|
266
|
+
"speaker": "Wason",
|
|
267
|
+
"text": "Collect 5 herbs from the forest and return to me.",
|
|
268
|
+
"mood": "neutral"
|
|
269
|
+
}
|
|
270
|
+
]
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
The C client fetches the full `code` group sorted by `order`, then renders lines one at a time in `modal_dialogue.c`. The player advances through lines by tapping.
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Indexes
|
|
278
|
+
|
|
279
|
+
```javascript
|
|
280
|
+
// CyberiaAction
|
|
281
|
+
{ code: 1 } // unique
|
|
282
|
+
{ sourceMapCode: 1, sourceCellX: 1, sourceCellY: 1 }
|
|
283
|
+
|
|
284
|
+
// CyberiaDialogue
|
|
285
|
+
{ code: 1 }
|
|
286
|
+
{ code: 1, order: 1 }
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Example Action Document
|
|
292
|
+
|
|
293
|
+
```json
|
|
294
|
+
{
|
|
295
|
+
"code": "wason-npc",
|
|
296
|
+
"type": "quest-talk",
|
|
297
|
+
"label": "Talk",
|
|
298
|
+
"sourceMapCode": "cyberia-village",
|
|
299
|
+
"sourceCellX": 12,
|
|
300
|
+
"sourceCellY": 8,
|
|
301
|
+
"dialogCode": "default-wason",
|
|
302
|
+
"questDialogueCodes": ["default-wason"],
|
|
303
|
+
"shopItems": [],
|
|
304
|
+
"craftRecipes": [],
|
|
305
|
+
"storageSlots": 0
|
|
306
|
+
}
|
|
307
|
+
```
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
# Cyberia — Architecture
|
|
2
|
+
|
|
3
|
+
Cyberia is the real-time MMO extension that runs on Underpost Platform. This document describes the three Cyberia processes, their boundaries, the data flow between them, and the canonical model for tick, snapshot, prediction, reconciliation, interpolation, and replication.
|
|
4
|
+
|
|
5
|
+
Underpost Platform provides the toolchain, deployment surface, PWA delivery, and base infrastructure. The three Cyberia processes operate on top of it.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Process model
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
┌─────────────────────────────────────────────────────────────────────────┐
|
|
13
|
+
│ UNDERPOST PLATFORM (infra · toolchain · deploy · PWA/Workbox) │
|
|
14
|
+
│ │
|
|
15
|
+
│ ┌─────────────────────┐ │
|
|
16
|
+
│ │ Persistent backend │ ← Cyberia content authority + asset backend │
|
|
17
|
+
│ │ ────────────────── │ │
|
|
18
|
+
│ │ engine-cyberia │ Node.js │
|
|
19
|
+
│ │ MongoDB │ │
|
|
20
|
+
│ │ IPFS / Cloudinary │ │
|
|
21
|
+
│ │ ObjectLayerToken │ Hyperledger Besu (off-line dependency) │
|
|
22
|
+
│ └─────────┬───────────┘ │
|
|
23
|
+
│ │ gRPC · REST boot fallback (world load, hot reload) │
|
|
24
|
+
│ ▼ │
|
|
25
|
+
│ ┌─────────────────────┐ │
|
|
26
|
+
│ │ Authoritative │ ← Cyberia simulation authority │
|
|
27
|
+
│ │ simulation runtime │ │
|
|
28
|
+
│ │ ────────────────── │ │
|
|
29
|
+
│ │ cyberia-server │ Go │
|
|
30
|
+
│ └─────────┬───────────┘ │
|
|
31
|
+
│ │ WebSocket (binary AOI snapshots, typed input commands) │
|
|
32
|
+
│ ▼ │
|
|
33
|
+
│ ┌─────────────────────┐ │
|
|
34
|
+
│ │ Presentation │ ← Cyberia render + prediction client │
|
|
35
|
+
│ │ runtime │ │
|
|
36
|
+
│ │ ────────────────── │ │
|
|
37
|
+
│ │ cyberia-client │ C / WebAssembly (Raylib · Emscripten) │
|
|
38
|
+
│ └─────────────────────┘ │
|
|
39
|
+
│ │ │
|
|
40
|
+
│ │ REST (atlas frames, asset metadata, client hints, │
|
|
41
|
+
│ │ instance-map static presence + capability activity) │
|
|
42
|
+
│ └──→ engine-cyberia │
|
|
43
|
+
└─────────────────────────────────────────────────────────────────────────┘
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Three processes, strict role separation. The ecosystem is fully operational only when all three are running and healthy at the same time.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Role definitions
|
|
51
|
+
|
|
52
|
+
### engine-cyberia (Node.js) — content authority
|
|
53
|
+
|
|
54
|
+
The content-authoring backend and persistence layer for Cyberia. Owns persisted data and exposes it through two transports: gRPC (consumed by `cyberia-server` at boot and during hot reload) and REST (consumed by `cyberia-client` for asset distribution and optional presentation overrides).
|
|
55
|
+
|
|
56
|
+
What it owns:
|
|
57
|
+
|
|
58
|
+
- Content generation, validation, and persistence.
|
|
59
|
+
- Maps, portals, object layers, atlas/sprite-sheet metadata.
|
|
60
|
+
- World configuration: AOI radius, economy rules, skill rules, equipment rules, entity gameplay defaults.
|
|
61
|
+
- Persisted character/quest/dialogue/action data.
|
|
62
|
+
- gRPC `CyberiaDataService` for world load and content streaming.
|
|
63
|
+
- REST boot fallback (`/api/cyberia-instance/boot/*`): the same world-load / hot-reload payloads as the gRPC service, served over REST for deploys where the engine gRPC server is not enabled.
|
|
64
|
+
- REST APIs for assets and the optional client-hints overrides.
|
|
65
|
+
- Instance Map REST (`/api/cyberia-instance/instance-map/:code/{static,dynamic}`): static map topology plus authored presence POIs, `sumStatsLimit`-capped baseline ObjectLayer stat sums, and capability membership; the dynamic response supplies only per-player capability activity. Never live positions or simulation stats — those stay client-side.
|
|
66
|
+
- Static content distribution + Cloudinary-backed asset flow.
|
|
67
|
+
- Editor and CLI integration for content workflows.
|
|
68
|
+
|
|
69
|
+
What it does NOT own:
|
|
70
|
+
|
|
71
|
+
- Real-time simulation. It is not a gameplay runtime.
|
|
72
|
+
- Per-tick state advancement.
|
|
73
|
+
- Client presentation policy (palette, camera, dev overlay, icon visuals).
|
|
74
|
+
- World mutation during gameplay.
|
|
75
|
+
|
|
76
|
+
### cyberia-server (Go) — authoritative simulation runtime
|
|
77
|
+
|
|
78
|
+
The tick-based authoritative simulation. Owns world state and the gameplay rules that mutate it.
|
|
79
|
+
|
|
80
|
+
What it owns:
|
|
81
|
+
|
|
82
|
+
- Authoritative world state.
|
|
83
|
+
- The tick: a `uint32` advanced once per simulation step at a fixed `tickRate`.
|
|
84
|
+
- Simulation phases — the only allowed mutators of world state.
|
|
85
|
+
- AOI replication: per-player interest filtering and snapshot emission.
|
|
86
|
+
- Input command processing: typed input commands drained from per-player queues each tick.
|
|
87
|
+
- Snapshot generation and delivery via WebSocket.
|
|
88
|
+
|
|
89
|
+
What it does NOT own:
|
|
90
|
+
|
|
91
|
+
- Persistence (loaded once at boot from engine-cyberia).
|
|
92
|
+
- Client presentation. The server holds no palette, no camera knobs, no dev-overlay flag, no status-icon visuals.
|
|
93
|
+
|
|
94
|
+
### cyberia-client (C / WebAssembly) — presentation runtime
|
|
95
|
+
|
|
96
|
+
The render and interactive runtime. Compiled to WASM via Emscripten and served as a Progressive Web App through the Underpost Platform delivery pipeline.
|
|
97
|
+
|
|
98
|
+
What it owns:
|
|
99
|
+
|
|
100
|
+
- Rendering and UI.
|
|
101
|
+
- Input capture: raw OS events → typed input commands with monotonic sequence numbers.
|
|
102
|
+
- Prediction of the local player.
|
|
103
|
+
- Reconciliation against authoritative snapshots.
|
|
104
|
+
- Interpolation of remote entities.
|
|
105
|
+
- Presentation defaults (palette, status-icon visuals, camera knobs, interpolation window, dev-overlay flag) — loaded at startup from the client-hints REST endpoint.
|
|
106
|
+
- Optional client-hints fetch for per-instance presentation overrides.
|
|
107
|
+
|
|
108
|
+
What it does NOT own:
|
|
109
|
+
|
|
110
|
+
- World simulation.
|
|
111
|
+
- Economy outcomes, combat resolution, skill dispatch decisions.
|
|
112
|
+
- Any state another client depends on for correctness.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Runtime operating model
|
|
117
|
+
|
|
118
|
+
The three processes are supervised independently. Each service owns its own monitor and reconnector. The game is playable only when all three are healthy at the same time.
|
|
119
|
+
|
|
120
|
+
| State | Meaning |
|
|
121
|
+
| ---------- | -------------------------------------------------------------------- |
|
|
122
|
+
| `healthy` | all three Cyberia services are up and connected |
|
|
123
|
+
| `degraded` | at least one service is reconnecting or unavailable |
|
|
124
|
+
| `standby` | gameplay is paused because the full three-service set is not healthy |
|
|
125
|
+
|
|
126
|
+
Dependency between services is handled by supervision and reconnect loops:
|
|
127
|
+
|
|
128
|
+
- `cyberia-server` dials `engine-cyberia` gRPC at boot; on dial or load failure it retries over the REST boot fallback (`ENGINE_API_BASE_URL`, `/api/cyberia-instance/boot/*`) and exits only when both transports fail rather than fabricate a world. On reconnect, it reloads world configuration.
|
|
129
|
+
- `cyberia-client` reconnects to `cyberia-server` over WebSocket and re-fetches content from `engine-cyberia` over REST independently.
|
|
130
|
+
- If any one of the three services goes unhealthy, the game moves to standby until all three recover.
|
|
131
|
+
|
|
132
|
+
Underpost Platform deploy orchestration ensures the backend layer is ready before the simulation layer is started, and the simulation layer is ready before the presentation layer connects. This ordering is an infrastructure concern, not a documentation model: the processes themselves are supervised and reconnect without requiring a manual restart chain.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Tick model
|
|
137
|
+
|
|
138
|
+
The tick is the universal coordinate of the simulation. Every server→client snapshot and every client→server input command carries a tick value.
|
|
139
|
+
|
|
140
|
+
| Concept | Value | Notes |
|
|
141
|
+
| ------------------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
142
|
+
| **tick** | `uint32` | Monotonic simulation step counter on `cyberia-server`. Resets only on world rebuild. |
|
|
143
|
+
| **tick rate** | Hz (default `30`) | Simulation frequency. Authoritative; comes from world configuration. The string "fps" is never used to describe the server. |
|
|
144
|
+
| **snapshot rate** | Hz (default `20`) | AOI replication frequency. Decoupled from tick rate so bandwidth scales independently of simulation fidelity. |
|
|
145
|
+
| **tick duration** | `1 / tick_rate` | The dt used by every simulation phase. |
|
|
146
|
+
| **client tick estimate** | derived | Client estimate of the server's current tick, used to stamp outgoing input commands. |
|
|
147
|
+
| **render tick** | `server_tick_estimate − INTERP_TICKS` | The tick the interpolation module samples remote entities at. |
|
|
148
|
+
|
|
149
|
+
Three clocks, one tick number: simulation tick (server), snapshot tick (server replication), render frame (client). The tick number is the only synchronization point.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Simulation phases
|
|
154
|
+
|
|
155
|
+
Inside one simulation tick, `cyberia-server` runs the following phases in fixed order. These are the only functions that mutate authoritative world state:
|
|
156
|
+
|
|
157
|
+
1. `phaseInput` — drain each player's `InputQueue`; dispatch typed input commands to gameplay handlers.
|
|
158
|
+
2. `phaseLifecycle` — respawn timers, despawn expirations.
|
|
159
|
+
3. `phaseSkills` — skill projectile collisions.
|
|
160
|
+
4. `phaseAI` — bot behaviour decisions.
|
|
161
|
+
5. `phaseMovement` — integrate positions using `tickDuration`.
|
|
162
|
+
6. `phasePortals` — portal entry and teleport.
|
|
163
|
+
|
|
164
|
+
A separate ticker runs replication independently of the simulation:
|
|
165
|
+
|
|
166
|
+
- `phaseReplication` — per player: compute AOI, encode snapshot, dispatch. Runs at `snapshotRate`.
|
|
167
|
+
|
|
168
|
+
Phases never read presentation data. They consume world configuration loaded at boot (gameplay rules) and the input queue.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Client render frame
|
|
173
|
+
|
|
174
|
+
The render frame runs at vsync. Inside one render frame, `cyberia-client` performs:
|
|
175
|
+
|
|
176
|
+
1. Poll any pending optional client-hints fetch.
|
|
177
|
+
2. Capture raw input → build typed input command (`kind`, `clientTick`, `sequence`, payload) → apply to prediction → send on the wire.
|
|
178
|
+
3. Reconcile against the latest snapshot: drop input commands ≤ `lastAckedSequence`, rewind self to authoritative position, replay unacked commands.
|
|
179
|
+
4. Fixed-timestep simulation: while accumulator ≥ `tickDuration`, advance prediction one tick.
|
|
180
|
+
5. Interpolation: compute remote-entity view positions at `renderTick`.
|
|
181
|
+
6. Render. Read view models; never mutate world state.
|
|
182
|
+
|
|
183
|
+
Render frame rate is independent of simulation tick rate. The fixed-timestep accumulator ensures the predicted simulation advances at the authoritative `tickRate` regardless of FPS.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Wire protocol — AOI snapshot header
|
|
188
|
+
|
|
189
|
+
Snapshots travel as binary WebSocket frames. The header carries the simulation tick and the per-player acknowledged input sequence.
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
Header (binary, little-endian, 11 bytes for AOI snapshots):
|
|
193
|
+
[0] u8 msgType 0x01 = aoi_update, 0x03 = full_aoi
|
|
194
|
+
[1..4] u32 tick simulation tick at which the snapshot was produced
|
|
195
|
+
[5..8] u32 lastAcked highest InputCommand.Sequence applied for this player
|
|
196
|
+
[9..10] u16 entityCount entity blocks that follow
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Other message types (init data, FCT) use their own headers and are not part of the per-tick replication stream.
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Input command pipeline
|
|
204
|
+
|
|
205
|
+
Client input flows through a typed pipeline. There is no JSON intermediate on the binary path. The simulation tick is the only consumer.
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
WS frame (binary) → decode → typed InputCommand{kind, clientTick, sequence, payload}
|
|
209
|
+
↓
|
|
210
|
+
dispatchInputCommand
|
|
211
|
+
↓
|
|
212
|
+
PlayerState.InputQueue (per-player, bounded)
|
|
213
|
+
↓
|
|
214
|
+
phaseInput (under world mutex, once per simulation tick)
|
|
215
|
+
↓
|
|
216
|
+
phase_input_handlers.go — typed dispatch per InputKind
|
|
217
|
+
↓
|
|
218
|
+
authoritative world state
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
`InputCommand.Sequence` is monotonic per client. The server tracks the highest applied sequence per player; `phaseReplication` writes it into every snapshot header. The client drops acknowledged input commands from its prediction replay buffer using this value.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Presentation metadata ownership
|
|
226
|
+
|
|
227
|
+
Presentation is client-owned. The authoritative server holds no presentation state.
|
|
228
|
+
|
|
229
|
+
| Concern | Owner | Mechanism |
|
|
230
|
+
| ------------------------------------------------ | --------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
231
|
+
| Palette (named ColorRGBA entries) | engine-cyberia (REST) | served by `GET /api/cyberia-client-hints/:CYBERIA_CLIENT_HINTS_CODE`. Source schema: `SharedDefaultsCyberia.js`. |
|
|
232
|
+
| Status-icon visuals (icon stems + border colors) | engine-cyberia (REST) | same |
|
|
233
|
+
| Per-entity-type fallback color keys | engine-cyberia (REST) | same |
|
|
234
|
+
| Camera defaults (smoothing, zoom) | engine-cyberia (REST) | same |
|
|
235
|
+
| Cell-pixel size, default object dims | engine-cyberia (REST) | same |
|
|
236
|
+
| Interpolation window | engine-cyberia (REST) | same |
|
|
237
|
+
| Dev-overlay flag | engine-cyberia (REST) | same |
|
|
238
|
+
| World configuration (gameplay rules) | engine-cyberia (gRPC) | `CyberiaInstanceConf` — no presentation; only simulation |
|
|
239
|
+
|
|
240
|
+
The cyberia-client carries **no** compile-time palette. `domain/presentation_runtime.{c,h}` fetches the full presentation surface on startup; until the fetch settles the runtime returns a tiny inline neutral-grey bootstrap so the splash screen has something to draw. The simulation is unaffected by the fetch outcome.
|
|
241
|
+
|
|
242
|
+
`cyberia-server` never reads any presentation field. The only "representational" data on the simulation wire is the **active item IDs** carried inside each AOI snapshot. Everything else visual is the client's job, fed by the hints REST endpoint.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Canonical vocabulary
|
|
247
|
+
|
|
248
|
+
Every Cyberia document uses the same terms. Aliases are not permitted.
|
|
249
|
+
|
|
250
|
+
| Term | Definition |
|
|
251
|
+
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
252
|
+
| **tick** | Monotonic simulation step counter. |
|
|
253
|
+
| **tick rate** | Simulation Hz on `cyberia-server`. |
|
|
254
|
+
| **snapshot** | AOI-filtered world view at one tick for one player. |
|
|
255
|
+
| **prediction** | Optimistic local apply of input commands to the predicted self entity. |
|
|
256
|
+
| **reconciliation** | Drop acknowledged inputs, rewind self to authoritative position, replay unacked inputs. |
|
|
257
|
+
| **display smoothing** | Per-render-frame exponential lerp from the discrete predicted self position to a continuous on-screen position. Decouples the visible main player from sim-tick boundaries. |
|
|
258
|
+
| **interpolation** | Render-time smoothing of remote entities, sampled from snapshot history. |
|
|
259
|
+
| **authoritative server** | `cyberia-server`. Sole authority on world state. |
|
|
260
|
+
| **content authority** | `engine-cyberia`. Sole authority on persisted content and world configuration. |
|
|
261
|
+
| **client hints** | Optional presentation overrides served by engine-cyberia. |
|
|
262
|
+
| **world configuration** | Gameplay parameters loaded at server boot from engine-cyberia. |
|
|
263
|
+
| **presentation metadata** | Render-only data. Client-owned. |
|
|
264
|
+
| **input command** | Typed client→server frame with kind, clientTick, sequence, payload. |
|
|
265
|
+
| **AOI** | Area of interest — the spatial filter that defines which entities a given player receives. |
|
|
266
|
+
| **Instance Map** | Client strategic overlay of packed map tiles and authored presence POIs. The static REST response supplies topology, presence, baseline ObjectLayer stat sums, and capability membership; the dynamic response supplies per-player capability activity. Live player presence and stats remain client-side. |
|
|
267
|
+
| **replication** | Production and delivery of snapshots from server to clients. |
|
|
268
|
+
| **simulation phase** | A named step inside one simulation tick. |
|
|
269
|
+
| **healthy** | All three Cyberia services up and connected; game is playable. |
|
|
270
|
+
| **standby** | Game paused because at least one of the three services is not healthy. |
|
|
271
|
+
|
|
272
|
+
Forbidden usages:
|
|
273
|
+
|
|
274
|
+
- "fps" on `cyberia-server` (use **tick rate**).
|
|
275
|
+
- "frame-based" simulation language on the server.
|
|
276
|
+
- "game_state" as a god object on the client.
|
|
277
|
+
- Render metadata in `cyberia-server` state.
|
|
278
|
+
- "engine" without qualifier when the project name is intended. Use **engine-cyberia** for the Cyberia content backend; use **Underpost Platform** for the umbrella product.
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Instance topology
|
|
283
|
+
|
|
284
|
+
A `CyberiaInstance` (persisted in MongoDB, served by engine-cyberia) is a directed graph:
|
|
285
|
+
|
|
286
|
+
- **Vertices** — `CyberiaMap` documents (grid-based maps).
|
|
287
|
+
- **Edges** — `PortalEdge` records connecting source cell → target map/cell.
|
|
288
|
+
|
|
289
|
+
Portal modes:
|
|
290
|
+
|
|
291
|
+
| Mode | Behaviour |
|
|
292
|
+
| -------------- | ----------------------------------------------- |
|
|
293
|
+
| `inter-portal` | Teleport to a specific cell on a target map |
|
|
294
|
+
| `inter-random` | Teleport to a random valid cell on a target map |
|
|
295
|
+
| `intra-portal` | Teleport within the same map to a specific cell |
|
|
296
|
+
| `intra-random` | Teleport within the same map to a random cell |
|
|
297
|
+
|
|
298
|
+
Topology modes: `linear`, `hub-spoke`, `open`, `grid`.
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## Entity types
|
|
303
|
+
|
|
304
|
+
| Type | Behavior | Description |
|
|
305
|
+
| -------------- | --------------------- | -------------------------- |
|
|
306
|
+
| `player` | interactive | Local player (self) |
|
|
307
|
+
| `other_player` | interactive | Remote players inside AOI |
|
|
308
|
+
| `bot` | `hostile` / `passive` | AI-controlled entities |
|
|
309
|
+
| `skill` | `skill` | Runtime-spawned projectile |
|