cyberia 3.2.5 → 3.2.12
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/.github/workflows/engine-cyberia.cd.yml +8 -2
- package/.github/workflows/npmpkg.ci.yml +1 -0
- package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
- package/.github/workflows/release.cd.yml +2 -2
- package/.vscode/extensions.json +9 -9
- package/.vscode/settings.json +20 -4
- package/CHANGELOG.md +563 -1
- package/CLI-HELP.md +130 -34
- package/Dockerfile +0 -4
- package/README.md +194 -607
- package/bin/build.js +42 -12
- package/bin/build.template.js +187 -0
- package/bin/cyberia.js +1367 -281
- package/bin/deploy.js +582 -3
- package/bin/index.js +1367 -281
- package/bump.config.js +26 -0
- package/conf.js +195 -111
- package/deployment.yaml +6 -222
- package/hardhat/package-lock.json +118 -149
- package/hardhat/package.json +5 -4
- package/jsconfig.json +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -2
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +2 -2
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +6 -222
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +10 -118
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
- package/manifests/deployment/dd-test-development/deployment.yaml +138 -66
- package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
- package/manifests/kind-config-dev.yaml +8 -0
- package/manifests/lxd/lxd-admin-profile.yaml +12 -3
- package/manifests/mongodb/pv-pvc.yaml +44 -8
- package/manifests/mongodb/statefulset.yaml +55 -68
- package/manifests/mongodb-4.4/headless-service.yaml +10 -0
- package/manifests/mongodb-4.4/kustomization.yaml +3 -1
- package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
- package/manifests/mongodb-4.4/pv-pvc.yaml +10 -14
- package/manifests/mongodb-4.4/statefulset.yaml +79 -0
- package/manifests/mongodb-4.4/storage-class.yaml +9 -0
- package/manifests/valkey/statefulset.yaml +1 -1
- package/manifests/valkey/valkey-nodeport.yaml +17 -0
- package/package.json +45 -24
- package/proxy.yaml +10 -118
- package/scripts/ipxe-setup.sh +52 -49
- package/scripts/k3s-node-setup.sh +83 -48
- package/scripts/lxd-vm-setup.sh +193 -8
- package/scripts/maas-nat-firewalld.sh +145 -0
- package/scripts/nat-iptables.sh +103 -18
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +18 -18
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +7 -14
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +38 -33
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +91 -36
- package/src/api/core/core.controller.js +10 -10
- package/src/api/core/core.router.js +19 -14
- package/src/api/core/core.service.js +15 -15
- package/src/api/crypto/crypto.controller.js +8 -8
- package/src/api/crypto/crypto.router.js +18 -12
- package/src/api/crypto/crypto.service.js +11 -11
- package/src/api/cyberia-action/cyberia-action.controller.js +74 -0
- package/src/api/cyberia-action/cyberia-action.model.js +87 -0
- package/src/api/cyberia-action/cyberia-action.router.js +31 -0
- package/src/api/cyberia-action/cyberia-action.service.js +42 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +74 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +99 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +98 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +13 -13
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +11 -11
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +25 -20
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +22 -22
- package/src/api/cyberia-entity/cyberia-entity.controller.js +10 -10
- package/src/api/cyberia-entity/cyberia-entity.router.js +22 -18
- package/src/api/cyberia-entity/cyberia-entity.service.js +15 -15
- package/src/api/cyberia-instance/cyberia-fallback-world.js +83 -198
- package/src/api/cyberia-instance/cyberia-instance.controller.js +14 -14
- package/src/api/cyberia-instance/cyberia-instance.model.js +3 -0
- package/src/api/cyberia-instance/cyberia-instance.router.js +57 -52
- package/src/api/cyberia-instance/cyberia-instance.service.js +32 -67
- package/src/api/cyberia-instance/cyberia-portal-connector.js +20 -246
- package/src/api/cyberia-instance/cyberia-world-generator.js +505 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +10 -10
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +18 -49
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +22 -18
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +19 -15
- package/src/api/cyberia-map/cyberia-map.controller.js +10 -10
- package/src/api/cyberia-map/cyberia-map.router.js +35 -30
- package/src/api/cyberia-map/cyberia-map.service.js +17 -17
- package/src/api/cyberia-quest/cyberia-quest.controller.js +74 -0
- package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
- package/src/api/cyberia-quest/cyberia-quest.router.js +31 -0
- package/src/api/cyberia-quest/cyberia-quest.service.js +42 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +74 -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 +31 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +451 -0
- package/src/api/default/default.controller.js +10 -10
- package/src/api/default/default.router.js +22 -18
- package/src/api/default/default.service.js +15 -15
- package/src/api/document/document.controller.js +12 -12
- package/src/api/document/document.model.js +10 -16
- package/src/api/document/document.router.js +28 -23
- package/src/api/document/document.service.js +100 -23
- package/src/api/file/file.controller.js +8 -8
- package/src/api/file/file.model.js +10 -10
- package/src/api/file/file.router.js +19 -13
- package/src/api/file/file.service.js +45 -43
- package/src/api/instance/instance.controller.js +10 -10
- package/src/api/instance/instance.model.js +4 -10
- package/src/api/instance/instance.router.js +29 -24
- package/src/api/instance/instance.service.js +16 -16
- package/src/api/ipfs/ipfs.controller.js +12 -12
- package/src/api/ipfs/ipfs.model.js +4 -13
- package/src/api/ipfs/ipfs.router.js +21 -16
- package/src/api/ipfs/ipfs.service.js +22 -36
- package/src/api/object-layer/object-layer.controller.js +12 -12
- package/src/api/object-layer/object-layer.model.js +4 -17
- package/src/api/object-layer/object-layer.router.js +512 -507
- package/src/api/object-layer/object-layer.service.js +29 -26
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +10 -10
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +6 -16
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +22 -18
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +19 -15
- package/src/api/test/test.controller.js +8 -8
- package/src/api/test/test.router.js +17 -12
- package/src/api/test/test.service.js +8 -8
- package/src/api/types.js +24 -0
- package/src/api/user/guest.service.js +100 -0
- package/src/api/user/user.controller.js +6 -6
- package/src/api/user/user.model.js +8 -13
- package/src/api/user/user.router.js +297 -288
- package/src/api/user/user.service.js +103 -55
- package/src/cli/baremetal.js +132 -101
- package/src/cli/cluster.js +732 -217
- package/src/cli/db.js +106 -62
- package/src/cli/deploy.js +260 -149
- package/src/cli/fs.js +90 -9
- package/src/cli/image.js +43 -1
- package/src/cli/index.js +106 -16
- package/src/cli/ipfs.js +4 -6
- package/src/cli/kubectl.js +4 -1
- package/src/cli/lxd.js +1099 -223
- package/src/cli/monitor.js +9 -3
- package/src/cli/release.js +336 -86
- package/src/cli/repository.js +136 -53
- package/src/cli/run.js +599 -76
- package/src/cli/secrets.js +11 -2
- package/src/cli/ssh.js +1 -1
- package/src/cli/static.js +43 -115
- package/src/cli/test.js +9 -3
- package/src/client/Cryptokoyn.index.js +18 -21
- package/src/client/CyberiaPortal.index.js +19 -23
- package/src/client/Default.index.js +30 -36
- package/src/client/Itemledger.index.js +20 -26
- package/src/client/Underpost.index.js +19 -23
- package/src/client/components/core/404.js +4 -4
- package/src/client/components/core/500.js +4 -4
- package/src/client/components/core/Account.js +73 -60
- package/src/client/components/core/AgGrid.js +23 -33
- package/src/client/components/core/Alert.js +12 -13
- package/src/client/components/core/AppStore.js +1 -1
- package/src/client/components/core/Auth.js +40 -37
- package/src/client/components/core/Badge.js +7 -13
- package/src/client/components/core/BtnIcon.js +15 -17
- package/src/client/components/core/CalendarCore.js +42 -63
- package/src/client/components/core/Chat.js +13 -15
- package/src/client/components/core/ClientEvents.js +163 -0
- package/src/client/components/core/ColorPaletteElement.js +309 -0
- package/src/client/components/core/Content.js +17 -14
- package/src/client/components/core/Css.js +15 -71
- package/src/client/components/core/CssCore.js +12 -16
- package/src/client/components/core/D3Chart.js +4 -4
- package/src/client/components/core/Docs.js +64 -91
- package/src/client/components/core/DropDown.js +69 -91
- package/src/client/components/core/EventBus.js +96 -0
- package/src/client/components/core/EventsUI.js +14 -17
- package/src/client/components/core/FileExplorer.js +96 -228
- package/src/client/components/core/FullScreen.js +47 -75
- package/src/client/components/core/Input.js +24 -69
- package/src/client/components/core/Keyboard.js +25 -18
- package/src/client/components/core/KeyboardAvoidance.js +145 -0
- package/src/client/components/core/LoadingAnimation.js +25 -31
- package/src/client/components/core/LogIn.js +41 -41
- package/src/client/components/core/LogOut.js +23 -14
- package/src/client/components/core/Modal.js +544 -219
- package/src/client/components/core/NotificationManager.js +14 -18
- package/src/client/components/core/Panel.js +54 -50
- package/src/client/components/core/PanelForm.js +81 -177
- package/src/client/components/core/Polyhedron.js +110 -214
- package/src/client/components/core/PublicProfile.js +39 -32
- package/src/client/components/core/Recover.js +48 -44
- package/src/client/components/core/Responsive.js +88 -32
- package/src/client/components/core/RichText.js +9 -18
- package/src/client/components/core/Router.js +24 -3
- package/src/client/components/core/SearchBox.js +37 -37
- package/src/client/components/core/SignUp.js +39 -30
- package/src/client/components/core/SocketIo.js +31 -2
- package/src/client/components/core/SocketIoHandler.js +6 -6
- package/src/client/components/core/ToggleSwitch.js +8 -20
- package/src/client/components/core/ToolTip.js +5 -17
- package/src/client/components/core/Translate.js +56 -59
- package/src/client/components/core/Validator.js +26 -16
- package/src/client/components/core/Wallet.js +15 -26
- package/src/client/components/core/Worker.js +211 -276
- package/src/client/components/core/windowGetDimensions.js +7 -7
- package/src/client/components/cryptokoyn/{MenuCryptokoyn.js → AppShellCryptokoyn.js} +57 -57
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +15 -15
- package/src/client/components/cryptokoyn/LogInCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +4 -4
- package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +6 -4
- package/src/client/components/cyberia/InstanceEngineCyberia.js +141 -60
- package/src/client/components/cyberia/MapEngineCyberia.js +691 -214
- package/src/client/components/cyberia/ObjectLayerEngine.js +19 -0
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +1204 -94
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +196 -298
- package/src/client/components/cyberia/SharedDefaultsCyberia.js +330 -0
- package/src/client/components/cyberia-portal/{MenuCyberiaPortal.js → AppShellCyberiaPortal.js} +102 -102
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +15 -15
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +60 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -4
- package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
- package/src/client/components/default/CssDefault.js +12 -12
- package/src/client/components/default/LogInDefault.js +6 -4
- package/src/client/components/default/LogOutDefault.js +6 -4
- package/src/client/components/default/RouterDefault.js +47 -0
- package/src/client/components/default/SettingsDefault.js +4 -4
- package/src/client/components/default/SignUpDefault.js +6 -4
- package/src/client/components/default/TranslateDefault.js +3 -3
- package/src/client/components/itemledger/{MenuItemledger.js → AppShellItemledger.js} +57 -57
- package/src/client/components/itemledger/CssItemledger.js +15 -15
- package/src/client/components/itemledger/LogInItemledger.js +6 -4
- package/src/client/components/itemledger/LogOutItemledger.js +6 -4
- package/src/client/components/itemledger/RouterItemledger.js +38 -0
- package/src/client/components/itemledger/SettingsItemledger.js +4 -4
- package/src/client/components/itemledger/SignUpItemledger.js +6 -4
- package/src/client/components/itemledger/TranslateItemledger.js +3 -3
- package/src/client/components/underpost/{MenuUnderpost.js → AppShellUnderpost.js} +88 -88
- package/src/client/components/underpost/CssUnderpost.js +14 -14
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +4 -4
- package/src/client/components/underpost/DocumentSearchProvider.js +1 -1
- package/src/client/components/underpost/LabGalleryUnderpost.js +12 -15
- package/src/client/components/underpost/LogInUnderpost.js +6 -4
- package/src/client/components/underpost/LogOutUnderpost.js +6 -4
- package/src/client/components/underpost/RouterUnderpost.js +45 -0
- package/src/client/components/underpost/SettingsUnderpost.js +4 -4
- package/src/client/components/underpost/SignUpUnderpost.js +6 -4
- package/src/client/components/underpost/TranslateUnderpost.js +4 -4
- package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +235 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +83 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +204 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +291 -0
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +278 -0
- package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +241 -0
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +279 -0
- package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +206 -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 +732 -0
- package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +14 -20
- package/src/client/services/core/core.service.js +17 -49
- package/src/client/services/crypto/crypto.service.js +8 -13
- 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 +10 -16
- package/src/client/services/cyberia-entity/cyberia-entity.management.js +5 -5
- package/src/client/services/cyberia-entity/cyberia-entity.service.js +10 -16
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +6 -6
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +12 -18
- package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +10 -16
- package/src/client/services/cyberia-map/cyberia-map.management.js +6 -6
- package/src/client/services/cyberia-map/cyberia-map.service.js +12 -18
- 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/default/default.management.js +159 -267
- package/src/client/services/default/default.service.js +10 -16
- package/src/client/services/document/document.service.js +14 -19
- package/src/client/services/file/file.service.js +8 -13
- package/src/client/services/instance/instance.management.js +5 -5
- package/src/client/services/instance/instance.service.js +10 -15
- package/src/client/services/ipfs/ipfs.service.js +12 -18
- package/src/client/services/object-layer/object-layer.management.js +12 -12
- package/src/client/services/object-layer/object-layer.service.js +20 -26
- package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +10 -16
- package/src/client/services/test/test.service.js +8 -13
- package/src/client/services/user/guest.service.js +86 -0
- package/src/client/services/user/user.management.js +5 -5
- package/src/client/services/user/user.service.js +14 -20
- package/src/client/ssr/body/404.js +3 -3
- package/src/client/ssr/body/500.js +3 -3
- package/src/client/ssr/body/CacheControl.js +5 -2
- package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +13 -6
- package/src/client/ssr/head/PwaItemledger.js +197 -60
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
- package/src/client/ssr/views/CyberiaServerMetrics.js +982 -0
- package/src/client/ssr/{offline → views}/Maintenance.js +12 -11
- package/src/client/ssr/{offline → views}/NoNetworkConnection.js +3 -3
- package/src/client/ssr/{pages → views}/Test.js +2 -2
- package/src/client/sw/core.sw.js +274 -0
- package/src/db/DataBaseProvider.js +115 -15
- package/src/db/mariadb/MariaDB.js +2 -1
- package/src/db/mongo/MongoBootstrap.js +657 -0
- package/src/db/mongo/MongooseDB.js +129 -21
- package/src/grpc/cyberia/grpc-server.js +185 -105
- package/src/index.js +1 -1
- package/src/runtime/cyberia-client/Dockerfile +101 -0
- package/src/runtime/cyberia-client/Dockerfile.dev +82 -0
- package/src/runtime/cyberia-server/Dockerfile +62 -0
- package/src/runtime/cyberia-server/Dockerfile.dev +71 -0
- package/src/runtime/express/Dockerfile +4 -4
- package/src/runtime/express/Express.js +2 -2
- package/src/runtime/lampp/Dockerfile +8 -7
- package/src/runtime/wp/Dockerfile +11 -17
- package/src/runtime/wp/Wp.js +8 -5
- package/src/server/atlas-sprite-sheet-generator.js +4 -2
- package/src/server/auth.js +2 -2
- package/src/server/client-build-docs.js +46 -47
- package/src/server/client-build.js +371 -132
- package/src/server/client-formatted.js +47 -16
- package/src/server/conf.js +91 -87
- package/src/server/data-query.js +32 -20
- package/src/server/dns.js +22 -0
- package/src/server/ipfs-client.js +232 -91
- package/src/server/object-layer.js +1 -6
- package/src/server/process.js +192 -45
- package/src/server/proxy.js +9 -2
- package/src/server/runtime.js +1 -1
- package/src/server/semantic-layer-generator-floor.js +11 -51
- package/src/server/semantic-layer-generator-resource.js +259 -0
- package/src/server/semantic-layer-generator-skin.js +41 -171
- package/src/server/semantic-layer-generator.js +122 -14
- package/src/server/shape-generator.js +108 -0
- package/src/server/start.js +34 -8
- package/src/server/valkey.js +143 -235
- package/src/ws/IoInterface.js +16 -16
- package/src/ws/core/channels/core.ws.chat.js +11 -11
- package/src/ws/core/channels/core.ws.mailer.js +29 -29
- package/src/ws/core/channels/core.ws.stream.js +19 -19
- package/src/ws/core/core.ws.connection.js +8 -8
- package/src/ws/core/core.ws.server.js +6 -5
- package/src/ws/default/channels/default.ws.main.js +10 -10
- package/src/ws/default/default.ws.connection.js +4 -4
- package/src/ws/default/default.ws.server.js +4 -3
- package/tsconfig.docs.json +15 -0
- package/typedoc.dd-cyberia.json +29 -0
- package/typedoc.json +29 -0
- package/WHITE-PAPER.md +0 -1540
- package/bin/file.js +0 -196
- package/bin/vs.js +0 -74
- package/bin/zed.js +0 -84
- package/hardhat/README.md +0 -531
- package/hardhat/WHITE-PAPER.md +0 -1540
- package/jsdoc.dd-cyberia.json +0 -68
- package/jsdoc.json +0 -68
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +0 -413
- package/src/api/object-layer/README.md +0 -672
- package/src/client/components/core/ColorPalette.js +0 -5267
- package/src/client/components/core/JoyStick.js +0 -80
- package/src/client/components/cryptokoyn/RoutesCryptokoyn.js +0 -39
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +0 -223
- package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +0 -62
- package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +0 -136
- package/src/client/components/default/RoutesDefault.js +0 -49
- package/src/client/components/itemledger/RoutesItemledger.js +0 -40
- package/src/client/components/underpost/RoutesUnderpost.js +0 -47
- package/src/client/ssr/email/DefaultRecoverEmail.js +0 -21
- package/src/client/ssr/email/DefaultVerifyEmail.js +0 -17
- package/src/client/ssr/pages/CyberiaServerMetrics.js +0 -461
- package/src/client/sw/default.sw.js +0 -127
- package/src/client/sw/template.sw.js +0 -84
- package/src/grpc/cyberia/OFF_CHAIN_ECONOMY.md +0 -305
- package/src/grpc/cyberia/README.md +0 -326
package/src/server/process.js
CHANGED
|
@@ -1,38 +1,55 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Module for process and shell command management.
|
|
3
|
-
* Provides utilities for executing shell commands, managing signals, and
|
|
3
|
+
* Provides utilities for executing shell commands, managing signals, and
|
|
4
|
+
* handling environment details.
|
|
5
|
+
*
|
|
6
|
+
* Execution semantics:
|
|
7
|
+
* - `shellExec(cmd)` throws `ShellExecError` on non-zero exit (fail-fast
|
|
8
|
+
* is the default). CI/CD chains observe the failure end-to-end.
|
|
9
|
+
* - `shellExec(cmd, { silentOnError: true })` opts out — returns the
|
|
10
|
+
* `ShellString` result with `.code/.stdout/.stderr` so callers can
|
|
11
|
+
* branch on the exit code themselves. Use for existence checks
|
|
12
|
+
* (`test -x …`, `command -v …`, `kubectl get` when "missing" is a
|
|
13
|
+
* normal answer).
|
|
14
|
+
* - `shellExec(cmd, { cwd: "..." })` runs hermetically in `cwd` without
|
|
15
|
+
* touching shelljs's global state.
|
|
16
|
+
* - All children spawned by `shellExec` register in
|
|
17
|
+
* `ProcessController.children` so SIGINT/SIGTERM forwarding can reach
|
|
18
|
+
* them before the parent exits.
|
|
19
|
+
*
|
|
4
20
|
* @module src/server/process.js
|
|
5
21
|
* @namespace Process
|
|
6
22
|
*/
|
|
7
|
-
|
|
8
23
|
// https://nodejs.org/api/process
|
|
9
|
-
|
|
10
24
|
import shell from 'shelljs';
|
|
11
25
|
import { loggerFactory } from './logger.js';
|
|
12
26
|
import clipboard from 'clipboardy';
|
|
13
27
|
import Underpost from '../index.js';
|
|
14
28
|
import { getNpmRootPath } from './conf.js';
|
|
15
|
-
|
|
16
29
|
const logger = loggerFactory(import.meta);
|
|
17
|
-
|
|
18
30
|
/**
|
|
19
31
|
* Gets the current working directory, replacing backslashes with forward slashes for consistency.
|
|
20
32
|
* @memberof Process
|
|
21
33
|
* @returns {string} The root directory path.
|
|
22
34
|
*/
|
|
23
35
|
const getRootDirectory = () => process.cwd().replace(/\\/g, '/');
|
|
24
|
-
|
|
25
36
|
/**
|
|
26
37
|
* Controls and manages process-level events and signals.
|
|
38
|
+
*
|
|
39
|
+
* Subprocess registry: any child process tracked here will receive
|
|
40
|
+
* SIGTERM (followed by SIGKILL after a short grace period) when the
|
|
41
|
+
* parent receives SIGINT or SIGTERM. This prevents orphaned children
|
|
42
|
+
* during Ctrl+C in dev and during pod-termination in K8S.
|
|
43
|
+
*
|
|
27
44
|
* @namespace ProcessController
|
|
28
45
|
*/
|
|
29
|
-
|
|
46
|
+
class ProcessController {
|
|
30
47
|
/**
|
|
31
48
|
* List of signals to listen for for graceful shutdown/handling.
|
|
32
49
|
* @memberof ProcessController
|
|
33
50
|
* @type {string[]}
|
|
34
51
|
*/
|
|
35
|
-
SIG
|
|
52
|
+
static SIG = [
|
|
36
53
|
'SIGPIPE',
|
|
37
54
|
'SIGHUP',
|
|
38
55
|
'SIGTERM',
|
|
@@ -45,29 +62,65 @@ const ProcessController = {
|
|
|
45
62
|
'SIGFPE',
|
|
46
63
|
'SIGSEGV',
|
|
47
64
|
'SIGILL',
|
|
48
|
-
]
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Registry of currently running tracked child processes.
|
|
69
|
+
* Populated when callers spawn via the streaming Node-native path
|
|
70
|
+
* (future expansion). The sets are exposed so signal handlers and
|
|
71
|
+
* test harnesses can introspect / clean up the registry.
|
|
72
|
+
*/
|
|
73
|
+
static children = new Set();
|
|
74
|
+
|
|
75
|
+
/** Internal: forward terminating signals to all tracked children. */
|
|
76
|
+
static _forwardToChildren(sig) {
|
|
77
|
+
if (ProcessController.children.size === 0) return;
|
|
78
|
+
for (const child of [...ProcessController.children]) {
|
|
79
|
+
try {
|
|
80
|
+
if (!child.killed) child.kill(sig);
|
|
81
|
+
} catch (_) {
|
|
82
|
+
// child may already have exited; ignore.
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Hard SIGKILL after 5s grace if any child is still alive.
|
|
86
|
+
setTimeout(() => {
|
|
87
|
+
for (const child of [...ProcessController.children]) {
|
|
88
|
+
try {
|
|
89
|
+
if (!child.killed) child.kill('SIGKILL');
|
|
90
|
+
} catch (_) {
|
|
91
|
+
/* noop */
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}, 5000).unref();
|
|
95
|
+
}
|
|
49
96
|
|
|
50
97
|
/**
|
|
51
98
|
* Sets up listeners for various process signals defined in {@link ProcessController.SIG}.
|
|
52
|
-
* Handles graceful exit on 'SIGINT' (Ctrl+C)
|
|
99
|
+
* Handles graceful exit on 'SIGINT' (Ctrl+C) — but first forwards the
|
|
100
|
+
* signal to every tracked child so they get a chance to clean up.
|
|
53
101
|
* @memberof ProcessController
|
|
54
102
|
* @returns {Array<process.Process>} An array of process listener handles.
|
|
55
103
|
*/
|
|
56
|
-
onSigListen
|
|
57
|
-
return
|
|
104
|
+
static onSigListen() {
|
|
105
|
+
return ProcessController.SIG.map((sig) =>
|
|
58
106
|
process.on(sig, (...args) => {
|
|
59
|
-
|
|
107
|
+
ProcessController.logger.info(`process on ${sig}`, args);
|
|
60
108
|
switch (sig) {
|
|
61
109
|
case 'SIGINT':
|
|
62
|
-
|
|
63
|
-
|
|
110
|
+
case 'SIGTERM':
|
|
111
|
+
case 'SIGHUP':
|
|
112
|
+
ProcessController._forwardToChildren('SIGTERM');
|
|
113
|
+
// Give children a moment to exit cleanly before our own exit.
|
|
114
|
+
if (sig === 'SIGINT') {
|
|
115
|
+
setTimeout(() => process.exit(130), 200).unref();
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
64
118
|
default:
|
|
65
119
|
break;
|
|
66
120
|
}
|
|
67
121
|
}),
|
|
68
122
|
);
|
|
69
|
-
}
|
|
70
|
-
|
|
123
|
+
}
|
|
71
124
|
/**
|
|
72
125
|
* Initializes the ProcessController.
|
|
73
126
|
* Sets up signal listeners, registers a listener for the 'exit' event, and cleans up temporary deployment environment variables.
|
|
@@ -75,39 +128,115 @@ const ProcessController = {
|
|
|
75
128
|
* @param {Object} logger - The logger instance to use for internal logging.
|
|
76
129
|
* @returns {void}
|
|
77
130
|
*/
|
|
78
|
-
init
|
|
79
|
-
|
|
131
|
+
static init(logger) {
|
|
132
|
+
ProcessController.logger = logger;
|
|
80
133
|
process.on('exit', (...args) => {
|
|
81
|
-
|
|
134
|
+
ProcessController.logger.info(`process on exit`, args);
|
|
135
|
+
// Last-chance reap: any tracked child still alive at exit time
|
|
136
|
+
// gets a hard kill so the parent does not leak orphans into the
|
|
137
|
+
// pod / shell session.
|
|
138
|
+
ProcessController._forwardToChildren('SIGKILL');
|
|
82
139
|
});
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
140
|
+
ProcessController.onSigListen();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* `ShellExecError` — thrown by `shellExec` when the underlying command
|
|
145
|
+
* exits with a non-zero code (the default fail-fast behaviour). Carries
|
|
146
|
+
* the exit code, stdout, and stderr for inspection by callers / CI
|
|
147
|
+
* pipelines that need structured failure data.
|
|
148
|
+
*/
|
|
149
|
+
class ShellExecError extends Error {
|
|
150
|
+
constructor(cmd, code, stdout, stderr) {
|
|
151
|
+
super(`shellExec failed (exit=${code}): ${cmd}`);
|
|
152
|
+
this.name = 'ShellExecError';
|
|
153
|
+
this.cmd = cmd;
|
|
154
|
+
this.code = code;
|
|
155
|
+
this.stdout = stdout;
|
|
156
|
+
this.stderr = stderr;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
88
159
|
/**
|
|
89
160
|
* Executes a shell command using shelljs.
|
|
161
|
+
*
|
|
162
|
+
* **Default behaviour is fail-fast**: a non-zero exit code throws
|
|
163
|
+
* `ShellExecError`. Callers that need to branch on the exit code
|
|
164
|
+
* (existence checks, optional commands) must pass `silentOnError: true`
|
|
165
|
+
* to opt out of throwing.
|
|
166
|
+
*
|
|
167
|
+
* The async-callback path is exempt from the throw — shelljs delivers
|
|
168
|
+
* `(code, stdout, stderr)` to the callback, which owns its own error
|
|
169
|
+
* handling.
|
|
170
|
+
*
|
|
90
171
|
* @memberof Process
|
|
91
172
|
* @param {string} cmd - The command string to execute.
|
|
92
173
|
* @param {Object} [options] - Options for execution.
|
|
93
|
-
* @param {boolean} [options.silent=false] - Suppress
|
|
94
|
-
* @param {boolean} [options.async=false] - Run command asynchronously.
|
|
95
|
-
* @param {boolean} [options.stdout=false] - Return stdout
|
|
96
|
-
* @param {boolean} [options.disableLog=false] -
|
|
97
|
-
* @param {Function} [options.callback=null] -
|
|
98
|
-
* @
|
|
174
|
+
* @param {boolean} [options.silent=false] - Suppress child stdout/stderr to the parent terminal.
|
|
175
|
+
* @param {boolean} [options.async=false] - Run the command asynchronously (use with `callback`).
|
|
176
|
+
* @param {boolean} [options.stdout=false] - Return stdout string instead of the `ShellString` result object.
|
|
177
|
+
* @param {boolean} [options.disableLog=false] - Skip the `[process] cmd …` info log line.
|
|
178
|
+
* @param {Function} [options.callback=null] - Async callback `(code, stdout, stderr) => void` when `async: true`.
|
|
179
|
+
* @param {boolean} [options.silentOnError=false] - When `true`, swallow non-zero exits and return the `ShellString` instead of throwing. Inverse of the previous `throwOnError` flag.
|
|
180
|
+
* @param {string} [options.cwd] - Hermetic working directory (snapshotted + restored — does NOT leak).
|
|
181
|
+
* @returns {string|shelljs.ShellString} `ShellString` by default; the stdout string when `stdout: true`.
|
|
182
|
+
* @throws {ShellExecError} On non-zero exit when `silentOnError` is not set.
|
|
99
183
|
*/
|
|
100
|
-
const shellExec = (
|
|
101
|
-
cmd,
|
|
102
|
-
options = { silent: false, async: false, stdout: false, disableLog: false, callback: null },
|
|
103
|
-
) => {
|
|
184
|
+
const shellExec = (cmd, options = {}) => {
|
|
104
185
|
if (!options.disableLog) logger.info(`cmd`, cmd);
|
|
105
|
-
if (options.callback) return shell.exec(cmd, options, options.callback);
|
|
106
|
-
return options.stdout ? shell.exec(cmd, options).stdout : shell.exec(cmd, options);
|
|
107
|
-
};
|
|
108
186
|
|
|
187
|
+
// Whitelist exactly the keys `shelljs.exec` understands. Passing our own
|
|
188
|
+
// bookkeeping keys through (or a literal `cwd: undefined`) makes shelljs
|
|
189
|
+
// call `path.resolve(undefined)` and crash with ERR_INVALID_ARG_TYPE.
|
|
190
|
+
const shellOpts = {};
|
|
191
|
+
if (options.silent !== undefined) shellOpts.silent = options.silent;
|
|
192
|
+
if (options.async !== undefined) shellOpts.async = options.async;
|
|
193
|
+
|
|
194
|
+
// Hermetic cwd. shelljs.cd mutates a process-wide global; instead we
|
|
195
|
+
// snapshot the current cwd here, switch for the duration of this call,
|
|
196
|
+
// and restore in `finally`. We deliberately do NOT forward `cwd` to
|
|
197
|
+
// shelljs — leaving its `cwd` unset means it inherits our just-changed
|
|
198
|
+
// `process.cwd()`, and we keep full control of restore semantics.
|
|
199
|
+
const previousCwd = options.cwd ? process.cwd() : null;
|
|
200
|
+
if (options.cwd) {
|
|
201
|
+
try {
|
|
202
|
+
process.chdir(options.cwd);
|
|
203
|
+
} catch (err) {
|
|
204
|
+
if (Underpost.env.isInsideContainer()) Underpost.env.set('container-status', 'error')
|
|
205
|
+
throw new ShellExecError(cmd, -1, '', `chdir(${options.cwd}) failed: ${err.message}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
try {
|
|
209
|
+
if (options.callback) {
|
|
210
|
+
// Async path. shelljs invokes the callback with (code, stdout, stderr).
|
|
211
|
+
// The callback owns its own error handling; the throw default does
|
|
212
|
+
// not apply here.
|
|
213
|
+
return shell.exec(cmd, shellOpts, options.callback);
|
|
214
|
+
}
|
|
215
|
+
const result = shell.exec(cmd, shellOpts);
|
|
216
|
+
|
|
217
|
+
if (!options.silentOnError && result && typeof result.code === 'number' && result.code !== 0) {
|
|
218
|
+
if (Underpost.env.isInsideContainer()) Underpost.env.set('container-status', 'error')
|
|
219
|
+
throw new ShellExecError(cmd, result.code, result.stdout || '', result.stderr || '');
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
return options.stdout ? result.stdout : result;
|
|
223
|
+
} finally {
|
|
224
|
+
if (previousCwd) {
|
|
225
|
+
try {
|
|
226
|
+
process.chdir(previousCwd);
|
|
227
|
+
} catch (_) {
|
|
228
|
+
/* best-effort restore */
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
};
|
|
109
233
|
/**
|
|
110
234
|
* Changes the current working directory using shelljs.
|
|
235
|
+
*
|
|
236
|
+
* Note: `shellCd` mutates global state. Prefer `shellExec(cmd, { cwd })`
|
|
237
|
+
* for one-shot directory-scoped commands; use `shellCd` only for the
|
|
238
|
+
* outermost shell where the cwd should persist across many calls.
|
|
239
|
+
*
|
|
111
240
|
* @memberof Process
|
|
112
241
|
* @param {string} cd - The path to change the directory to.
|
|
113
242
|
* @param {Object} [options] - Options for the CD operation.
|
|
@@ -118,25 +247,35 @@ const shellCd = (cd, options = { disableLog: false }) => {
|
|
|
118
247
|
if (!options.disableLog) logger.info(`cd`, cd);
|
|
119
248
|
return shell.cd(cd);
|
|
120
249
|
};
|
|
121
|
-
|
|
122
250
|
/**
|
|
123
251
|
* Wraps a command to run it as a daemon process in a shell (keeping the process alive/terminal open).
|
|
252
|
+
*
|
|
253
|
+
* NB: callers must ensure `cmd` does not contain unescaped single quotes —
|
|
254
|
+
* the wrapper uses `bash -c '<cmd>; …'`. For arbitrary user input prefer
|
|
255
|
+
* a heredoc or a temporary script file.
|
|
256
|
+
*
|
|
124
257
|
* @memberof Process
|
|
125
258
|
* @param {string} cmd - The command to daemonize.
|
|
126
259
|
* @returns {string} The shell command string for the daemon process.
|
|
127
260
|
*/
|
|
128
261
|
const daemonProcess = (cmd) => `exec bash -c '${cmd}; exec tail -f /dev/null'`;
|
|
129
|
-
|
|
130
262
|
/**
|
|
131
263
|
* Retrieves the process ID (PID) of the most recently created gnome-terminal instance.
|
|
132
264
|
* Note: This function is environment-specific (GNOME/Linux) and uses `pgrep -n`.
|
|
133
265
|
* @memberof Process
|
|
134
|
-
* @returns {number} The PID of the last gnome-terminal process.
|
|
266
|
+
* @returns {number|null} The PID of the last gnome-terminal process, or null if none running.
|
|
135
267
|
*/
|
|
136
268
|
// list all terminals: pgrep gnome-terminal
|
|
137
269
|
// list last terminal: pgrep -n gnome-terminal
|
|
138
|
-
const getTerminalPid = () =>
|
|
139
|
-
|
|
270
|
+
const getTerminalPid = () => {
|
|
271
|
+
const raw = shellExec(`pgrep -n gnome-terminal`, { stdout: true, silent: true, silentOnError: true });
|
|
272
|
+
if (!raw || !raw.trim()) return null;
|
|
273
|
+
try {
|
|
274
|
+
return JSON.parse(raw);
|
|
275
|
+
} catch {
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
};
|
|
140
279
|
/**
|
|
141
280
|
* Copies text content to the system clipboard using clipboardy.
|
|
142
281
|
* Logs the copied content for confirmation.
|
|
@@ -148,5 +287,13 @@ function pbcopy(data) {
|
|
|
148
287
|
clipboard.writeSync(data || '🦄');
|
|
149
288
|
logger.info(`copied to clipboard`, clipboard.readSync());
|
|
150
289
|
}
|
|
151
|
-
|
|
152
|
-
|
|
290
|
+
export {
|
|
291
|
+
ProcessController,
|
|
292
|
+
ShellExecError,
|
|
293
|
+
getRootDirectory,
|
|
294
|
+
shellExec,
|
|
295
|
+
shellCd,
|
|
296
|
+
pbcopy,
|
|
297
|
+
getTerminalPid,
|
|
298
|
+
daemonProcess,
|
|
299
|
+
};
|
package/src/server/proxy.js
CHANGED
|
@@ -9,7 +9,14 @@
|
|
|
9
9
|
import express from 'express';
|
|
10
10
|
import { createProxyMiddleware } from 'http-proxy-middleware';
|
|
11
11
|
import { loggerFactory, loggerMiddleware } from './logger.js';
|
|
12
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
buildPortProxyRouter,
|
|
14
|
+
buildProxyRouter,
|
|
15
|
+
etcHostFactory,
|
|
16
|
+
getTlsHosts,
|
|
17
|
+
isDevProxyContext,
|
|
18
|
+
isTlsDevProxy,
|
|
19
|
+
} from './conf.js';
|
|
13
20
|
|
|
14
21
|
import { shellExec } from './process.js';
|
|
15
22
|
import fs from 'fs-extra';
|
|
@@ -114,7 +121,7 @@ class ProxyService {
|
|
|
114
121
|
logger.info('Proxy running', { port, router: options.router });
|
|
115
122
|
if (process.env.NODE_ENV === 'development')
|
|
116
123
|
logger.info(
|
|
117
|
-
|
|
124
|
+
etcHostFactory(Object.keys(options.router), {
|
|
118
125
|
append: true,
|
|
119
126
|
}).renderHosts,
|
|
120
127
|
);
|
package/src/server/runtime.js
CHANGED
|
@@ -5,10 +5,16 @@
|
|
|
5
5
|
* desert, grass, water, stone, and lava. Imported by the main
|
|
6
6
|
* semantic-layer-generator.js which registers them at startup.
|
|
7
7
|
*
|
|
8
|
+
* Biome palettes are imported from the centralized BIOME_PALETTES in the
|
|
9
|
+
* parent module (circular import is safe because the function body is only
|
|
10
|
+
* executed after module initialisation completes).
|
|
11
|
+
*
|
|
8
12
|
* @module src/server/semantic-layer-generator-floor.js
|
|
9
13
|
* @namespace SemanticLayerGeneratorFloor
|
|
10
14
|
*/
|
|
11
15
|
|
|
16
|
+
import { BIOME_PALETTES } from './semantic-layer-generator.js';
|
|
17
|
+
|
|
12
18
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
13
19
|
* FLOOR SEMANTIC REGISTRY
|
|
14
20
|
* Call registerFloorSemantics(registerFn) once to add all floor descriptors.
|
|
@@ -16,7 +22,6 @@
|
|
|
16
22
|
|
|
17
23
|
/**
|
|
18
24
|
* Registers all built-in floor semantic descriptors.
|
|
19
|
-
* Uses dependency injection — no import from the parent module.
|
|
20
25
|
*
|
|
21
26
|
* @param {function(string, import('./semantic-layer-generator.js').SemanticDescriptor): void} registerFn
|
|
22
27
|
* @memberof SemanticLayerGeneratorFloor
|
|
@@ -25,16 +30,7 @@ export function registerFloorSemantics(registerFn) {
|
|
|
25
30
|
/* ── Desert ───────────────────────────────────────────────────────────── */
|
|
26
31
|
registerFn('floor-desert', {
|
|
27
32
|
semanticTags: ['sand', 'dune', 'arid', 'dry'],
|
|
28
|
-
paletteHints:
|
|
29
|
-
[210, 180, 120, 255],
|
|
30
|
-
[194, 160, 100, 255],
|
|
31
|
-
[230, 205, 150, 255],
|
|
32
|
-
[180, 140, 80, 255],
|
|
33
|
-
[160, 120, 70, 255],
|
|
34
|
-
[120, 90, 55, 255],
|
|
35
|
-
[100, 80, 50, 255],
|
|
36
|
-
[240, 220, 175, 255],
|
|
37
|
-
],
|
|
33
|
+
paletteHints: BIOME_PALETTES.desert,
|
|
38
34
|
preferredShapes: { ellipse: 3, circle: 2, cactus: 1, star: 0.5 },
|
|
39
35
|
itemType: 'floor',
|
|
40
36
|
layers: {
|
|
@@ -104,16 +100,7 @@ export function registerFloorSemantics(registerFn) {
|
|
|
104
100
|
/* ── Grass ────────────────────────────────────────────────────────────── */
|
|
105
101
|
registerFn('floor-grass', {
|
|
106
102
|
semanticTags: ['grass', 'meadow', 'green', 'earth'],
|
|
107
|
-
paletteHints:
|
|
108
|
-
[80, 140, 60, 255],
|
|
109
|
-
[60, 120, 45, 255],
|
|
110
|
-
[110, 170, 80, 255],
|
|
111
|
-
[90, 130, 55, 255],
|
|
112
|
-
[130, 100, 65, 255],
|
|
113
|
-
[70, 110, 40, 255],
|
|
114
|
-
[150, 190, 100, 255],
|
|
115
|
-
[100, 85, 50, 255],
|
|
116
|
-
],
|
|
103
|
+
paletteHints: BIOME_PALETTES.grass,
|
|
117
104
|
preferredShapes: { ellipse: 3, circle: 2, heart: 0.5 },
|
|
118
105
|
itemType: 'floor',
|
|
119
106
|
layers: {
|
|
@@ -168,16 +155,7 @@ export function registerFloorSemantics(registerFn) {
|
|
|
168
155
|
/* ── Water ────────────────────────────────────────────────────────────── */
|
|
169
156
|
registerFn('floor-water', {
|
|
170
157
|
semanticTags: ['water', 'ocean', 'wave', 'liquid'],
|
|
171
|
-
paletteHints:
|
|
172
|
-
[40, 100, 180, 255],
|
|
173
|
-
[60, 130, 200, 255],
|
|
174
|
-
[90, 160, 220, 255],
|
|
175
|
-
[120, 190, 230, 255],
|
|
176
|
-
[30, 80, 150, 255],
|
|
177
|
-
[70, 140, 210, 255],
|
|
178
|
-
[150, 210, 240, 255],
|
|
179
|
-
[20, 60, 120, 255],
|
|
180
|
-
],
|
|
158
|
+
paletteHints: BIOME_PALETTES.water,
|
|
181
159
|
preferredShapes: { ellipse: 3, circle: 2 },
|
|
182
160
|
itemType: 'floor',
|
|
183
161
|
layers: {
|
|
@@ -232,16 +210,7 @@ export function registerFloorSemantics(registerFn) {
|
|
|
232
210
|
/* ── Stone ────────────────────────────────────────────────────────────── */
|
|
233
211
|
registerFn('floor-stone', {
|
|
234
212
|
semanticTags: ['stone', 'rock', 'cobble', 'grey'],
|
|
235
|
-
paletteHints:
|
|
236
|
-
[140, 140, 145, 255],
|
|
237
|
-
[120, 118, 125, 255],
|
|
238
|
-
[165, 165, 170, 255],
|
|
239
|
-
[100, 98, 105, 255],
|
|
240
|
-
[180, 180, 185, 255],
|
|
241
|
-
[90, 85, 80, 255],
|
|
242
|
-
[155, 150, 148, 255],
|
|
243
|
-
[110, 108, 115, 255],
|
|
244
|
-
],
|
|
213
|
+
paletteHints: BIOME_PALETTES.stone,
|
|
245
214
|
preferredShapes: { circle: 3, ellipse: 2, star: 1, 'pixel-art': 0.5 },
|
|
246
215
|
itemType: 'floor',
|
|
247
216
|
layers: {
|
|
@@ -296,16 +265,7 @@ export function registerFloorSemantics(registerFn) {
|
|
|
296
265
|
/* ── Lava ─────────────────────────────────────────────────────────────── */
|
|
297
266
|
registerFn('floor-lava', {
|
|
298
267
|
semanticTags: ['lava', 'magma', 'fire', 'hot'],
|
|
299
|
-
paletteHints:
|
|
300
|
-
[200, 50, 20, 255],
|
|
301
|
-
[230, 100, 30, 255],
|
|
302
|
-
[255, 180, 50, 255],
|
|
303
|
-
[160, 30, 10, 255],
|
|
304
|
-
[80, 20, 10, 255],
|
|
305
|
-
[50, 15, 8, 255],
|
|
306
|
-
[240, 140, 40, 255],
|
|
307
|
-
[120, 25, 12, 255],
|
|
308
|
-
],
|
|
268
|
+
paletteHints: BIOME_PALETTES.lava,
|
|
309
269
|
preferredShapes: { circle: 3, ellipse: 2, cactus: 1 },
|
|
310
270
|
itemType: 'floor',
|
|
311
271
|
layers: {
|