cyberia 3.1.3 → 3.2.9

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.
Files changed (377) hide show
  1. package/.env.example +0 -2
  2. package/.github/workflows/engine-cyberia.cd.yml +10 -8
  3. package/.github/workflows/engine-cyberia.ci.yml +12 -29
  4. package/.github/workflows/ghpkg.ci.yml +4 -4
  5. package/.github/workflows/npmpkg.ci.yml +28 -11
  6. package/.github/workflows/publish.ci.yml +21 -2
  7. package/.github/workflows/pwa-microservices-template-page.cd.yml +4 -5
  8. package/.github/workflows/pwa-microservices-template-test.ci.yml +3 -3
  9. package/.github/workflows/release.cd.yml +14 -10
  10. package/CHANGELOG.md +783 -1
  11. package/CLI-HELP.md +95 -18
  12. package/Dockerfile +0 -2
  13. package/README.md +290 -220
  14. package/bin/build.js +24 -7
  15. package/bin/cyberia.js +2838 -252
  16. package/bin/deploy.js +747 -125
  17. package/bin/file.js +9 -0
  18. package/bin/index.js +2838 -252
  19. package/bin/vs.js +1 -1
  20. package/conf.js +99 -65
  21. package/deployment.yaml +18 -164
  22. package/hardhat/hardhat.config.js +13 -13
  23. package/hardhat/ignition/modules/ObjectLayerToken.js +1 -1
  24. package/hardhat/package-lock.json +2559 -5864
  25. package/hardhat/package.json +14 -23
  26. package/hardhat/scripts/deployObjectLayerToken.js +1 -1
  27. package/hardhat/test/ObjectLayerToken.js +4 -2
  28. package/hardhat/types/ethers-contracts/ObjectLayerToken.ts +690 -0
  29. package/hardhat/types/ethers-contracts/common.ts +92 -0
  30. package/hardhat/types/ethers-contracts/factories/ObjectLayerToken__factory.ts +1055 -0
  31. package/hardhat/types/ethers-contracts/factories/index.ts +4 -0
  32. package/hardhat/types/ethers-contracts/hardhat.d.ts +47 -0
  33. package/hardhat/types/ethers-contracts/index.ts +6 -0
  34. package/jsconfig.json +1 -1
  35. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +6 -5
  36. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +6 -5
  37. package/manifests/deployment/dd-cyberia-development/deployment.yaml +18 -164
  38. package/manifests/deployment/dd-cyberia-development/proxy.yaml +7 -79
  39. package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
  40. package/manifests/deployment/dd-test-development/deployment.yaml +112 -28
  41. package/manifests/deployment/dd-test-development/proxy.yaml +46 -1
  42. package/manifests/deployment/playwright/deployment.yaml +1 -1
  43. package/nodemon.json +1 -1
  44. package/package.json +39 -24
  45. package/proxy.yaml +7 -79
  46. package/scripts/k3s-node-setup.sh +2 -2
  47. package/scripts/nat-iptables.sh +103 -18
  48. package/scripts/rhel-grpc-setup.sh +56 -0
  49. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +58 -14
  50. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +23 -14
  51. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +5 -0
  52. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +148 -20
  53. package/src/api/core/core.controller.js +10 -10
  54. package/src/api/core/core.service.js +10 -10
  55. package/src/api/crypto/crypto.controller.js +8 -8
  56. package/src/api/crypto/crypto.service.js +8 -8
  57. package/src/api/cyberia-action/cyberia-action.controller.js +74 -0
  58. package/src/api/cyberia-action/cyberia-action.model.js +87 -0
  59. package/src/api/cyberia-action/cyberia-action.router.js +27 -0
  60. package/src/api/cyberia-action/cyberia-action.service.js +42 -0
  61. package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +93 -0
  62. package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +36 -0
  63. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +29 -0
  64. package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +51 -0
  65. package/src/api/cyberia-entity/cyberia-entity.controller.js +74 -0
  66. package/src/api/cyberia-entity/cyberia-entity.model.js +24 -0
  67. package/src/api/cyberia-entity/cyberia-entity.router.js +27 -0
  68. package/src/api/cyberia-entity/cyberia-entity.service.js +42 -0
  69. package/src/api/cyberia-instance/cyberia-fallback-world.js +178 -0
  70. package/src/api/cyberia-instance/cyberia-instance.controller.js +92 -0
  71. package/src/api/cyberia-instance/cyberia-instance.model.js +87 -0
  72. package/src/api/cyberia-instance/cyberia-instance.router.js +63 -0
  73. package/src/api/cyberia-instance/cyberia-instance.service.js +156 -0
  74. package/src/api/cyberia-instance/cyberia-portal-connector.js +260 -0
  75. package/src/api/cyberia-instance/cyberia-world-generator.js +505 -0
  76. package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +74 -0
  77. package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +574 -0
  78. package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +231 -0
  79. package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +27 -0
  80. package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +46 -0
  81. package/src/api/cyberia-map/cyberia-map.controller.js +79 -0
  82. package/src/api/cyberia-map/cyberia-map.model.js +30 -0
  83. package/src/api/cyberia-map/cyberia-map.router.js +40 -0
  84. package/src/api/cyberia-map/cyberia-map.service.js +74 -0
  85. package/src/api/cyberia-quest/cyberia-quest.controller.js +74 -0
  86. package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
  87. package/src/api/cyberia-quest/cyberia-quest.router.js +27 -0
  88. package/src/api/cyberia-quest/cyberia-quest.service.js +42 -0
  89. package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +74 -0
  90. package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
  91. package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +27 -0
  92. package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
  93. package/src/api/default/default.controller.js +10 -10
  94. package/src/api/default/default.service.js +10 -10
  95. package/src/api/document/document.controller.js +12 -12
  96. package/src/api/document/document.model.js +10 -16
  97. package/src/api/file/file.controller.js +8 -8
  98. package/src/api/file/file.model.js +10 -10
  99. package/src/api/file/file.ref.json +18 -0
  100. package/src/api/file/file.service.js +36 -36
  101. package/src/api/instance/instance.controller.js +10 -10
  102. package/src/api/instance/instance.model.js +4 -10
  103. package/src/api/instance/instance.service.js +10 -10
  104. package/src/api/ipfs/ipfs.controller.js +15 -36
  105. package/src/api/ipfs/ipfs.model.js +47 -47
  106. package/src/api/ipfs/ipfs.router.js +8 -13
  107. package/src/api/ipfs/ipfs.service.js +67 -129
  108. package/src/api/object-layer/object-layer.controller.js +12 -12
  109. package/src/api/object-layer/object-layer.model.js +4 -17
  110. package/src/api/object-layer/object-layer.router.js +30 -0
  111. package/src/api/object-layer/object-layer.service.js +126 -43
  112. package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +10 -10
  113. package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +6 -16
  114. package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +18 -14
  115. package/src/api/test/test.controller.js +8 -8
  116. package/src/api/test/test.service.js +8 -8
  117. package/src/api/user/guest.service.js +99 -0
  118. package/src/api/user/user.controller.js +6 -6
  119. package/src/api/user/user.model.js +8 -13
  120. package/src/api/user/user.service.js +11 -27
  121. package/src/cli/cluster.js +68 -21
  122. package/src/cli/db.js +753 -825
  123. package/src/cli/deploy.js +215 -125
  124. package/src/cli/env.js +29 -0
  125. package/src/cli/fs.js +82 -8
  126. package/src/cli/image.js +43 -1
  127. package/src/cli/index.js +74 -3
  128. package/src/cli/kubectl.js +211 -0
  129. package/src/cli/release.js +340 -0
  130. package/src/cli/repository.js +475 -74
  131. package/src/cli/run.js +582 -43
  132. package/src/cli/secrets.js +73 -0
  133. package/src/cli/ssh.js +1 -1
  134. package/src/cli/static.js +43 -115
  135. package/src/cli/test.js +3 -3
  136. package/src/client/Cryptokoyn.index.js +18 -22
  137. package/src/client/CyberiaPortal.index.js +19 -24
  138. package/src/client/Default.index.js +21 -34
  139. package/src/client/Itemledger.index.js +20 -27
  140. package/src/client/Underpost.index.js +19 -24
  141. package/src/client/components/core/404.js +4 -4
  142. package/src/client/components/core/500.js +4 -4
  143. package/src/client/components/core/Account.js +73 -60
  144. package/src/client/components/core/AgGrid.js +23 -33
  145. package/src/client/components/core/Alert.js +12 -13
  146. package/src/client/components/core/AppStore.js +69 -0
  147. package/src/client/components/core/Auth.js +35 -37
  148. package/src/client/components/core/Badge.js +7 -13
  149. package/src/client/components/core/BtnIcon.js +15 -17
  150. package/src/client/components/core/CalendarCore.js +43 -64
  151. package/src/client/components/core/Chat.js +13 -15
  152. package/src/client/components/core/ClientEvents.js +87 -0
  153. package/src/client/components/core/ColorPaletteElement.js +309 -0
  154. package/src/client/components/core/Content.js +17 -14
  155. package/src/client/components/core/Css.js +15 -71
  156. package/src/client/components/core/CssCore.js +12 -16
  157. package/src/client/components/core/D3Chart.js +4 -4
  158. package/src/client/components/core/Docs.js +64 -91
  159. package/src/client/components/core/DropDown.js +194 -96
  160. package/src/client/components/core/EventBus.js +92 -0
  161. package/src/client/components/core/EventsUI.js +14 -17
  162. package/src/client/components/core/FileExplorer.js +96 -228
  163. package/src/client/components/core/FullScreen.js +47 -75
  164. package/src/client/components/core/Input.js +24 -69
  165. package/src/client/components/core/Keyboard.js +26 -19
  166. package/src/client/components/core/KeyboardAvoidance.js +145 -0
  167. package/src/client/components/core/LoadingAnimation.js +25 -31
  168. package/src/client/components/core/LogIn.js +43 -43
  169. package/src/client/components/core/LogOut.js +25 -16
  170. package/src/client/components/core/Modal.js +462 -179
  171. package/src/client/components/core/NotificationManager.js +14 -18
  172. package/src/client/components/core/Panel.js +54 -51
  173. package/src/client/components/core/PanelForm.js +44 -144
  174. package/src/client/components/core/Polyhedron.js +110 -214
  175. package/src/client/components/core/PublicProfile.js +39 -32
  176. package/src/client/components/core/Recover.js +48 -44
  177. package/src/client/components/core/Responsive.js +88 -32
  178. package/src/client/components/core/RichText.js +9 -18
  179. package/src/client/components/core/Router.js +24 -3
  180. package/src/client/components/core/SearchBox.js +37 -37
  181. package/src/client/components/core/SignUp.js +39 -30
  182. package/src/client/components/core/SocketIo.js +112 -30
  183. package/src/client/components/core/SocketIoHandler.js +75 -0
  184. package/src/client/components/core/Stream.js +143 -95
  185. package/src/client/components/core/ToggleSwitch.js +8 -20
  186. package/src/client/components/core/ToolTip.js +5 -17
  187. package/src/client/components/core/Translate.js +56 -59
  188. package/src/client/components/core/Validator.js +26 -16
  189. package/src/client/components/core/Wallet.js +15 -26
  190. package/src/client/components/core/Webhook.js +40 -7
  191. package/src/client/components/core/Worker.js +163 -27
  192. package/src/client/components/core/windowGetDimensions.js +7 -7
  193. package/src/client/components/cryptokoyn/{MenuCryptokoyn.js → AppShellCryptokoyn.js} +59 -59
  194. package/src/client/components/cryptokoyn/AppStoreCryptokoyn.js +5 -0
  195. package/src/client/components/cryptokoyn/CssCryptokoyn.js +15 -15
  196. package/src/client/components/cryptokoyn/LogInCryptokoyn.js +9 -7
  197. package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +8 -6
  198. package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
  199. package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +4 -4
  200. package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +6 -4
  201. package/src/client/components/cryptokoyn/SocketIoCryptokoyn.js +3 -51
  202. package/src/client/components/cyberia/InstanceEngineCyberia.js +781 -0
  203. package/src/client/components/cyberia/MapEngineCyberia.js +1836 -2
  204. package/src/client/components/cyberia/ObjectLayerEngine.js +19 -0
  205. package/src/client/components/cyberia/ObjectLayerEngineModal.js +1220 -99
  206. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +252 -316
  207. package/src/client/components/cyberia-portal/{MenuCyberiaPortal.js → AppShellCyberiaPortal.js} +136 -103
  208. package/src/client/components/cyberia-portal/AppStoreCyberiaPortal.js +5 -0
  209. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +462 -32
  210. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +15 -15
  211. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +9 -7
  212. package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +8 -6
  213. package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +4 -4
  214. package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +60 -0
  215. package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +4 -4
  216. package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +6 -4
  217. package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +3 -49
  218. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +8 -4
  219. package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +91 -91
  220. package/src/client/components/default/AppStoreDefault.js +5 -0
  221. package/src/client/components/default/CssDefault.js +12 -12
  222. package/src/client/components/default/LogInDefault.js +9 -7
  223. package/src/client/components/default/LogOutDefault.js +8 -6
  224. package/src/client/components/default/RouterDefault.js +47 -0
  225. package/src/client/components/default/SettingsDefault.js +4 -4
  226. package/src/client/components/default/SignUpDefault.js +6 -4
  227. package/src/client/components/default/SocketIoDefault.js +3 -51
  228. package/src/client/components/default/TranslateDefault.js +3 -3
  229. package/src/client/components/itemledger/{MenuItemledger.js → AppShellItemledger.js} +59 -59
  230. package/src/client/components/itemledger/AppStoreItemledger.js +5 -0
  231. package/src/client/components/itemledger/CssItemledger.js +15 -15
  232. package/src/client/components/itemledger/LogInItemledger.js +9 -7
  233. package/src/client/components/itemledger/LogOutItemledger.js +8 -6
  234. package/src/client/components/itemledger/RouterItemledger.js +38 -0
  235. package/src/client/components/itemledger/SettingsItemledger.js +4 -4
  236. package/src/client/components/itemledger/SignUpItemledger.js +6 -4
  237. package/src/client/components/itemledger/SocketIoItemledger.js +3 -51
  238. package/src/client/components/itemledger/TranslateItemledger.js +3 -3
  239. package/src/client/components/underpost/{MenuUnderpost.js → AppShellUnderpost.js} +92 -92
  240. package/src/client/components/underpost/AppStoreUnderpost.js +5 -0
  241. package/src/client/components/underpost/CssUnderpost.js +14 -14
  242. package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +4 -4
  243. package/src/client/components/underpost/DocumentSearchProvider.js +1 -1
  244. package/src/client/components/underpost/LabGalleryUnderpost.js +12 -15
  245. package/src/client/components/underpost/LogInUnderpost.js +9 -7
  246. package/src/client/components/underpost/LogOutUnderpost.js +8 -6
  247. package/src/client/components/underpost/RouterUnderpost.js +45 -0
  248. package/src/client/components/underpost/SettingsUnderpost.js +4 -4
  249. package/src/client/components/underpost/SignUpUnderpost.js +6 -4
  250. package/src/client/components/underpost/SocketIoUnderpost.js +3 -51
  251. package/src/client/components/underpost/TranslateUnderpost.js +4 -4
  252. package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +235 -0
  253. package/src/client/public/cyberia-docs/ARCHITECTURE.md +443 -0
  254. package/src/client/public/cyberia-docs/CYBERIA-CLI.md +417 -0
  255. package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +313 -0
  256. package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +260 -0
  257. package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +241 -0
  258. package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
  259. package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +279 -0
  260. package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +206 -0
  261. package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
  262. package/src/client/public/cyberia-docs/WHITE-PAPER.md +732 -0
  263. package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +14 -20
  264. package/src/client/services/core/core.service.js +35 -55
  265. package/src/client/services/crypto/crypto.service.js +8 -13
  266. package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
  267. package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +99 -0
  268. package/src/client/services/cyberia-entity/cyberia-entity.management.js +57 -0
  269. package/src/client/services/cyberia-entity/cyberia-entity.service.js +99 -0
  270. package/src/client/services/cyberia-instance/cyberia-instance.management.js +194 -0
  271. package/src/client/services/cyberia-instance/cyberia-instance.service.js +116 -0
  272. package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +99 -0
  273. package/src/client/services/cyberia-map/cyberia-map.management.js +193 -0
  274. package/src/client/services/cyberia-map/cyberia-map.service.js +120 -0
  275. package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
  276. package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
  277. package/src/client/services/default/default.management.js +159 -267
  278. package/src/client/services/default/default.service.js +10 -16
  279. package/src/client/services/document/document.service.js +14 -19
  280. package/src/client/services/file/file.service.js +8 -13
  281. package/src/client/services/instance/instance.management.js +6 -6
  282. package/src/client/services/instance/instance.service.js +10 -15
  283. package/src/client/services/ipfs/ipfs.service.js +14 -40
  284. package/src/client/services/object-layer/object-layer.management.js +14 -14
  285. package/src/client/services/object-layer/object-layer.service.js +39 -24
  286. package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +10 -16
  287. package/src/client/services/test/test.service.js +8 -13
  288. package/src/client/services/user/guest.service.js +86 -0
  289. package/src/client/services/user/user.management.js +6 -6
  290. package/src/client/services/user/user.service.js +14 -20
  291. package/src/client/ssr/body/404.js +3 -3
  292. package/src/client/ssr/body/500.js +3 -3
  293. package/src/client/ssr/body/CacheControl.js +5 -2
  294. package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
  295. package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +13 -6
  296. package/src/client/ssr/head/PwaItemledger.js +197 -60
  297. package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
  298. package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
  299. package/src/client/ssr/offline/Maintenance.js +12 -11
  300. package/src/client/ssr/offline/NoNetworkConnection.js +3 -3
  301. package/src/client/ssr/pages/CyberiaServerMetrics.js +1 -1
  302. package/src/client/ssr/pages/Test.js +2 -2
  303. package/src/client/sw/core.sw.js +212 -0
  304. package/src/grpc/cyberia/grpc-server.js +642 -0
  305. package/src/index.js +24 -1
  306. package/src/runtime/cyberia-client/Dockerfile +80 -0
  307. package/src/runtime/cyberia-server/Dockerfile +37 -0
  308. package/src/runtime/express/Dockerfile +5 -1
  309. package/src/runtime/express/Express.js +18 -1
  310. package/src/runtime/lampp/Dockerfile +17 -5
  311. package/src/runtime/lampp/Lampp.js +27 -4
  312. package/src/runtime/wp/Dockerfile +62 -0
  313. package/src/runtime/wp/Wp.js +639 -0
  314. package/src/server/atlas-sprite-sheet-generator.js +4 -2
  315. package/src/server/auth.js +24 -1
  316. package/src/server/backup.js +37 -9
  317. package/src/server/client-build-docs.js +52 -46
  318. package/src/server/client-build.js +356 -82
  319. package/src/server/client-formatted.js +140 -57
  320. package/src/server/conf.js +29 -13
  321. package/src/server/cron.js +25 -23
  322. package/src/server/data-query.js +32 -20
  323. package/src/server/dns.js +24 -1
  324. package/src/server/ipfs-client.js +253 -89
  325. package/src/server/object-layer.js +150 -114
  326. package/src/server/peer.js +8 -0
  327. package/src/server/process.js +13 -27
  328. package/src/server/runtime.js +25 -1
  329. package/src/server/semantic-layer-generator-floor.js +319 -0
  330. package/src/server/semantic-layer-generator-resource.js +259 -0
  331. package/src/server/semantic-layer-generator-skin.js +1164 -0
  332. package/src/server/semantic-layer-generator.js +211 -542
  333. package/src/server/shape-generator.js +108 -0
  334. package/src/server/start.js +19 -5
  335. package/src/server/valkey.js +141 -235
  336. package/src/ws/IoInterface.js +1 -10
  337. package/src/ws/IoServer.js +14 -33
  338. package/src/ws/core/channels/core.ws.chat.js +65 -20
  339. package/src/ws/core/channels/core.ws.mailer.js +113 -32
  340. package/src/ws/core/channels/core.ws.stream.js +90 -31
  341. package/src/ws/core/core.ws.connection.js +12 -33
  342. package/src/ws/core/core.ws.emit.js +10 -26
  343. package/src/ws/core/core.ws.server.js +25 -58
  344. package/src/ws/default/channels/default.ws.main.js +53 -12
  345. package/src/ws/default/default.ws.connection.js +26 -13
  346. package/src/ws/default/default.ws.server.js +30 -12
  347. package/tsconfig.docs.json +15 -0
  348. package/typedoc.dd-cyberia.json +29 -0
  349. package/typedoc.json +29 -0
  350. package/WHITE-PAPER.md +0 -1540
  351. package/hardhat/README.md +0 -531
  352. package/hardhat/WHITE-PAPER.md +0 -1540
  353. package/jsdoc.dd-cyberia.json +0 -59
  354. package/jsdoc.json +0 -59
  355. package/src/api/object-layer/README.md +0 -347
  356. package/src/client/components/core/ColorPalette.js +0 -5267
  357. package/src/client/components/core/JoyStick.js +0 -80
  358. package/src/client/components/cryptokoyn/CommonCryptokoyn.js +0 -29
  359. package/src/client/components/cryptokoyn/ElementsCryptokoyn.js +0 -38
  360. package/src/client/components/cryptokoyn/RoutesCryptokoyn.js +0 -39
  361. package/src/client/components/cyberia-portal/ElementsCyberiaPortal.js +0 -38
  362. package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +0 -58
  363. package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +0 -136
  364. package/src/client/components/default/ElementsDefault.js +0 -38
  365. package/src/client/components/default/RoutesDefault.js +0 -49
  366. package/src/client/components/itemledger/CommonItemledger.js +0 -29
  367. package/src/client/components/itemledger/ElementsItemledger.js +0 -38
  368. package/src/client/components/itemledger/RoutesItemledger.js +0 -40
  369. package/src/client/components/underpost/CommonUnderpost.js +0 -29
  370. package/src/client/components/underpost/ElementsUnderpost.js +0 -38
  371. package/src/client/components/underpost/RoutesUnderpost.js +0 -47
  372. package/src/client/sw/default.sw.js +0 -127
  373. package/src/client/sw/template.sw.js +0 -84
  374. package/src/ws/core/management/core.ws.chat.js +0 -8
  375. package/src/ws/core/management/core.ws.mailer.js +0 -16
  376. package/src/ws/core/management/core.ws.stream.js +0 -8
  377. package/src/ws/default/management/default.ws.main.js +0 -8
package/README.md CHANGED
@@ -1,347 +1,417 @@
1
1
  <p align="center">
2
- <img src="https://www.cyberiaonline.com/assets/splash/apple-touch-icon-precomposed.png" alt="CYBERIA Network Object Layer Engine CLI"/>
2
+ <img src="https://www.cyberiaonline.com/assets/splash/apple-touch-icon-precomposed.png" alt="CYBERIA Network Object Layer Engine"/>
3
3
  </p>
4
4
 
5
5
  <div align="center">
6
6
 
7
- <h1>cyberia</h1>
7
+ ### CYBERIA
8
8
 
9
- <h2>Network Object Layer Engine CLI</h2>
9
+ **Network Object Layers**
10
10
 
11
- [![Downloads](https://img.shields.io/npm/dm/cyberia.svg)](https://www.npmjs.com/package/cyberia) [![Version](https://img.shields.io/npm/v/cyberia.svg)](https://www.npmjs.org/package/cyberia)
11
+ _Stackable Rendering Layers as a Unified Tokenized Reality_
12
+
13
+ [![Version](https://img.shields.io/npm/v/cyberia.svg)](https://www.npmjs.org/package/cyberia)
12
14
 
13
15
  </div>
14
16
 
15
- This Command Line Interface (CLI) is a core tool for the **Cyberia Network Object Layer Engine**, specifically designed for processing, generating, and managing game assets, primarily **Object Layer** elements like skins, floors, and weapons.
17
+ # Cyberia CLI
16
18
 
17
- It handles image asset quantization, generates data matrices and color palettes, creates separate render frame documents, and persists the resulting structured data into the game's database with top-level references to render frames and atlas sprite sheets.
19
+ **Path:** `bin/cyberia.js`
18
20
 
19
- ## What this tool does
21
+ ---
20
22
 
21
- The CLI scans the local asset folders (`./src/client/public/cyberia/assets/{type}/{id}/{direction}/{frame}`), quantizes images to a tile matrix and color palette, creates separate ObjectLayerRenderFrames documents, and persists the resulting object-layer documents with references to your configured MongoDB. It also supports reconstructing a visual PNG from the stored matrix for inspection.
23
+ ## Overview
22
24
 
23
- Key features:
25
+ The Cyberia CLI (`cyberia`) is an extension of the **Underpost CLI** specifically for the Cyberia MMORPG ecosystem. Underpost is the end-to-end bare-metal infrastructure platform for general-purpose applications; `cyberia` extends it with tooling for the game's content pipeline, economy, and MMO engine toolchain. Unrecognized commands are transparently passed through to `underpost` for infrastructure operations.
24
26
 
25
- - Walks the asset directory structure and processes PNG/GIF files.
26
- - Produces `frame_matrix` and `map_color` arrays from images.
27
- - **Procedurally generates object layers** from semantic item-id descriptors with deterministic seeds and temporal coherence.
28
- - Saves processed objects to the `ObjectLayer` model with top-level references to `ObjectLayerRenderFrames`.
29
- - Creates separate `ObjectLayerRenderFrames` documents for render data.
30
- - Links ObjectLayers to AtlasSpriteSheet documents via top-level `atlasSpriteSheetId`.
31
- - Generates unique UUID v4 seeds (via `crypto.randomUUID()`) for SHA256 hash uniqueness.
32
- - Generates SHA256 hash using `fast-json-stable-stringify` for deterministic serialization.
33
- - Reconstructs PNG frames from stored tile data for debugging.
34
- - Writes static asset PNGs, atlas sprite sheets, and metadata to the conventional directory structure.
27
+ The CLI manages:
35
28
 
36
- ## Getting Started
29
+ - **Object Layer (`ol`)** — import, generate, and manage game item definitions and sprite atlases.
30
+ - **Instance (`instance`)** — export/import/seed game instance data (maps, entities, configs).
31
+ - **Chain (`chain`)** — Hyperledger Besu deployment and ERC-1155 ObjectLayerToken lifecycle.
32
+ - **Run-Workflow (`run-workflow`)** — execute named operational scripts (seed defaults, build manifests).
37
33
 
38
- ### Prerequisites
34
+ ---
39
35
 
40
- You must have the following installed in your environment:
36
+ ## Global Usage
41
37
 
42
- - **Node.js** (v24.10.0 recommended)
43
- - **npm** or **yarn**
44
- - **MongoDB** (or access to the configured MongoDB instance)
38
+ ```bash
39
+ node bin/cyberia.js <command> [subcommand] [options]
40
+ # or if installed globally:
41
+ cyberia <command> [subcommand] [options]
42
+ ```
45
43
 
46
- ### **Installation**
44
+ ---
47
45
 
48
- ```bash
46
+ ## `cyberia ol` — Object Layer Management
49
47
 
50
- npm install -g cyberia
48
+ Manages the Object Layer content pipeline: import PNG assets, generate procedural layers, build atlas sprite sheets, and push to IPFS/MongoDB.
49
+
50
+ ```bash
51
+ cyberia ol [item-id] [options]
51
52
  ```
52
53
 
53
- ### **Environment Setup**
54
+ ### Options
55
+
56
+ | Option | Description |
57
+ | ------------------------------- | --------------------------------------------------------------------------------------------- |
58
+ | `--import` | Import specific item-id(s) (comma-separated) from the PNG asset directory into MongoDB + IPFS |
59
+ | `--import-types [types]` | Batch import by type (e.g. `skin,floor`) or `all` |
60
+ | `--generate` | Generate procedural layers for a semantic item-id (see Semantic Registry below) |
61
+ | `--count <n>` | Shape element count multiplier for `--generate` (default: `3`) |
62
+ | `--seed <seed>` | Deterministic seed string for `--generate` (e.g. `fx-42`) |
63
+ | `--frame-index <n>` | Starting frame index for `--generate` (default: `0`) |
64
+ | `--frame-count <n>` | Number of frames to generate for `--generate` (default: `1`) |
65
+ | `--density <0..1>` | Shape density factor for `--generate` (default: `0.5`) |
66
+ | `--to-atlas-sprite-sheet [dim]` | Convert ObjectLayer frames to a consolidated atlas PNG |
67
+ | `--show-atlas-sprite-sheet` | Display the atlas PNG for the given item-id |
68
+ | `--show-frame [dir_frame]` | View a single frame (e.g. `08_0`; default: `08_0`) |
69
+ | `--drop` | Drop existing data before importing |
70
+ | `--client-public` | With `--drop`: also remove static client asset folders |
71
+ | `--git-clean` | With `--drop`: run clean on the cyberia asset directory |
72
+ | `--dev` | Force development env (uses `.env.development` for localhost IPFS) |
73
+ | `--env-path <path>` | Path to `.env` file (e.g. `./engine-private/conf/dd-cyberia/.env.development`) |
74
+ | `--mongo-host <host>` | MongoDB host override |
75
+ | `--storage-file-path <path>` | Storage filter JSON path override |
76
+
77
+ ### Examples
54
78
 
55
- Ensure your required environment variables (e.g., `DEFAULT_DEPLOY_ID`, `DEFAULT_DEPLOY_HOST`, `DEFAULT_DEPLOY_PATH`) are correctly configured, typically in a .env file, to point the CLI to the correct database instance defined in conf.server.json.
79
+ ```bash
80
+ # Import a single item from PNG source
81
+ cyberia ol hatchet --import --env-path ./engine-private/conf/dd-cyberia/.env.development
56
82
 
57
- ## Usage
83
+ # Import all items of type 'skin' and 'floor'
84
+ cyberia ol --import-types skin,floor
58
85
 
59
- The CLI is executed from the project root via the `cyberia.js` script.
86
+ # Import all types
87
+ cyberia ol --import-types all
60
88
 
61
- ### Process and import object-layer assets
89
+ # Generate a procedural floor tile (desert biome, seed fx-42)
90
+ cyberia ol floor-desert --generate --seed fx-42
62
91
 
63
- This will iterate asset folders for the given types and store processed objects in MongoDB.
92
+ # Generate 4 frames of a procedural floor with custom count and density
93
+ cyberia ol floor-grass --generate --frame-count 4 --count 5 --density 0.7
64
94
 
65
- ```bash
66
- # Process specific types (comma-separated)
67
- cyberia ol --import skin,floor
95
+ # Generate a character skin
96
+ cyberia ol skin-dark-001 --generate --seed my-seed
68
97
 
69
- # Process all recognized types
70
- cyberia ol --import all
98
+ # View a specific frame of an item
99
+ cyberia ol hatchet --show-frame 08_0
100
+
101
+ # Rebuild atlas sprite sheet for an item
102
+ cyberia ol hatchet --to-atlas-sprite-sheet
103
+
104
+ # Drop and re-import a single item
105
+ cyberia ol hatchet --drop --import
71
106
  ```
72
107
 
73
- ### Procedural generation with `--generate`
108
+ ---
74
109
 
75
- Produces semantically consistent object layers with controlled, reproducible variation and short-term temporal coherence (consecutive frames stay visually consistent). Uses the parametric shape generator and object layer engine under the hood.
110
+ ## Semantic Item-ID Registry
76
111
 
77
- ```bash
78
- # Generate a desert floor tile (single frame, auto seed)
79
- cyberia ol floor-desert --generate
112
+ The `--generate` flag uses item-id prefixes to look up a procedural descriptor from the semantic registry.
80
113
 
81
- # Full control: 3 frames, explicit seed, density
82
- cyberia ol floor-desert --generate --count 3 --seed fx-42 --frame-index 0 --frame-count 3 --density 0.5
114
+ ### Floor Prefixes
83
115
 
84
- # Grass terrain, sparse, 5 frames
85
- cyberia ol floor-grass --generate --seed meadow-7 --frame-count 5 --density 0.3
116
+ | Prefix | Biome | Description |
117
+ | -------------- | ------ | ----------------------------------------------- |
118
+ | `floor-desert` | Desert | Sandy, arid tile with warm yellow/brown palette |
119
+ | `floor-grass` | Grass | Meadow tile with green/earth tones |
120
+ | `floor-water` | Water | Ocean/lake tile with blue/teal palette |
121
+ | `floor-stone` | Stone | Rock/cobble tile with grey palette |
122
+ | `floor-lava` | Lava | Magma tile with red/orange palette |
86
123
 
87
- # Water surface, dense, high element count
88
- cyberia ol floor-water --generate --seed ocean-1 --count 5 --density 0.8 --frame-count 4
124
+ ### Skin Prefixes
89
125
 
90
- # Stone cobblestone
91
- cyberia ol floor-stone --generate --seed cobble-99 --count 4 --density 0.6
126
+ | Prefix | Description |
127
+ | -------------- | ----------------------------------------------- |
128
+ | `skin-random` | Fully random skin tone and hair |
129
+ | `skin-dark` | Dark skin tones |
130
+ | `skin-light` | Light / pale skin tones |
131
+ | `skin-vivid` | Vivid / exotic hair colours (blue, red, green…) |
132
+ | `skin-natural` | Natural hair colours (brown, blond, grey…) |
133
+ | `skin-shaved` | Shaved / bald head — no hair |
92
134
 
93
- # Lava flow, 3-frame animation
94
- cyberia ol floor-lava --generate --seed magma-3 --frame-count 3 --density 0.7
95
- ```
135
+ ### Resource Prefixes
96
136
 
97
- **`--generate` options:**
137
+ Resource prefixes follow the pattern `resource-{biome}-{shape}`:
98
138
 
99
- | Option | Default | Description |
100
- |---|---|---|
101
- | `--seed <str>` | auto UUID | Deterministic seed string. Same seed → same output. |
102
- | `--count <n>` | `3` | Shape element count multiplier per layer. |
103
- | `--frame-index <n>` | `0` | Starting frame index. |
104
- | `--frame-count <n>` | `1` | Number of consecutive frames to generate. |
105
- | `--density <f>` | `0.5` | Overall density factor (`0`–`1`). Lower = sparser. |
139
+ | Shape Family | Description |
140
+ | ------------ | -------------------------------------- |
141
+ | `petal` | Parabolic arc shapes coloured petals |
142
+ | `stone` | Hard, angular mineral shapes |
143
+ | `polygon` | Crystal/geometric faceted shapes |
144
+ | `thread` | Thin, wispy Bézier lines |
106
145
 
107
- **Available semantic item-id prefixes:**
146
+ **Biomes:** `desert`, `grass`, `water`, `stone`, `lava`
108
147
 
109
- | Prefix | Type | Tags | Palette |
110
- |---|---|---|---|
111
- | `floor-desert` | floor | sand, dune, arid | warm ochres, sand tones |
112
- | `floor-grass` | floor | grass, meadow, earth | greens, earth browns |
113
- | `floor-water` | floor | water, ocean, wave | blues, foam whites |
114
- | `floor-stone` | floor | stone, rock, cobble | greys, warm/cool stone |
115
- | `floor-lava` | floor | lava, magma, fire | reds, oranges, dark crust |
116
- | `skin-*` | skin | character, body | skin tones, clothing darks |
148
+ **Full matrix (20 prefixes):**
149
+
150
+ ```
151
+ resource-desert-petal resource-grass-petal resource-water-petal
152
+ resource-desert-stone resource-grass-stone resource-water-stone
153
+ resource-desert-polygon resource-grass-polygon resource-water-polygon
154
+ resource-desert-thread resource-grass-thread resource-water-thread
155
+
156
+ resource-stone-petal resource-lava-petal
157
+ resource-stone-stone resource-lava-stone
158
+ resource-stone-polygon resource-lava-polygon
159
+ resource-stone-thread resource-lava-thread
160
+ ```
117
161
 
118
- #### How generation works
162
+ ---
119
163
 
120
- Each item-id maps to a **semantic descriptor** that provides `semanticTags`, `paletteHints`, `preferredShapes`, and named **layer specs** (e.g. `base`, `dunes`, `rocks`, `tufts` for `floor-desert`).
164
+ ## `cyberia instance` Instance Management
121
165
 
122
- **Seed derivation** deterministic at every level:
166
+ Manages game instance documents (maps, entities, actions, quests, skill config) in MongoDB.
123
167
 
168
+ ```bash
169
+ cyberia instance [instance-code] [options]
124
170
  ```
125
- layerSeed = hash(seed + ':' + itemId + ':' + layerKey)
126
- frameSeed = hash(layerSeed + ':' + frameIndex)
171
+
172
+ ### Options
173
+
174
+ | Option | Description |
175
+ | --------------------- | ----------------------------------------------------------------------------------------------------------------- |
176
+ | `--export [path]` | Export instance and all related documents to a backup directory |
177
+ | `--import [path]` | Import instance documents from a backup directory (upsert, preserves UUIDs) |
178
+ | `--conf` | With `--export`/`--import`: only process instance and instance-conf documents (skip maps, entities, ObjectLayers) |
179
+ | `--drop` | Drop all documents associated with the instance code |
180
+ | `--env-path <path>` | Path to `.env` file |
181
+ | `--mongo-host <host>` | MongoDB host override |
182
+ | `--dev` | Force development environment |
183
+
184
+ ### Examples
185
+
186
+ ```bash
187
+ # Export instance to backup
188
+ cyberia instance cyberia-main --export ./backups/cyberia-main
189
+
190
+ # Import instance from backup
191
+ cyberia instance cyberia-main --import ./backups/cyberia-main
192
+
193
+ # Drop instance data
194
+ cyberia instance cyberia-main --drop
127
195
  ```
128
196
 
129
- **Temporal coherence** — shape topology (which shapes, how many, where) is locked to `layerSeed` and never changes between frames. Only smooth, low-frequency noise perturbations (position jitter, slight rotation/scale wobble) are derived from `frameSeed`, so frame N and N+1 differ by ~2% of cells.
197
+ ---
130
198
 
131
- **Layer naming**every generated layer gets an id: `<itemId>-<layerKey>` (e.g. `floor-desert-dunes`).
199
+ ## `cyberia chain` Blockchain Lifecycle
132
200
 
133
- **Generation pipeline per layer:**
201
+ Full lifecycle management for the Hyperledger Besu network and `ObjectLayerToken` ERC-1155 contract.
134
202
 
135
- 1. Pick generator type (`noise-field` for base fills, `shape` for element placement).
136
- 2. Select palette colors deterministically from `paletteHints` with per-element `colorShift`.
137
- 3. For shape layers: pick shape via weighted `preferredShapes`, compute stable base transform `(x, y, scale, rotation)`, apply frame-level smooth noise.
138
- 4. Stamp shapes onto a 24×24 grid via `intCoords` rasterization from the parametric shape generator.
139
- 5. Composite all layers into a final `frame_matrix` + unified `colors` palette.
203
+ ### Network Commands
140
204
 
141
- **Variability factors per layer:**
142
- `scaleVariance`, `rotationVariance`, `colorShift`, `jitter`, `noiseLevel`, `detailLevel`, `sparsity` — small, deterministic variations that keep each generation unique but semantically coherent.
205
+ #### `cyberia chain deploy`
143
206
 
144
- #### What `--generate` persists
207
+ Deploy a new Hyperledger Besu IBFT2 network to Kubernetes:
145
208
 
146
- The full pipeline runs automatically:
209
+ ```bash
210
+ cyberia chain deploy [options]
211
+ ```
147
212
 
148
- 1. **Static assets** — PNGs written to `./src/client/public/cyberia/assets/{type}/{itemId}/{dirCode}/{frame}.png` + `metadata.json`.
149
- 2. **MongoDB** `ObjectLayerRenderFrames` + `ObjectLayer` documents created with SHA-256 hash.
150
- 3. **Atlas sprite sheet** — generated, saved to `File` + `AtlasSpriteSheet` collections, and linked via `atlasSpriteSheetId`.
213
+ | Option | Default | Description |
214
+ | ------------------------ | -------------------------- | ----------------------------------------- |
215
+ | `--validators <n>` | `4` | Number of IBFT2 validators |
216
+ | `--chain-id <id>` | `777771` | EVM chain ID |
217
+ | `--block-period <s>` | `5` | IBFT2 block period in seconds |
218
+ | `--epoch-length <n>` | `30000` | IBFT2 epoch length |
219
+ | `--besu-image <img>` | `hyperledger/besu:24.12.1` | Besu container image |
220
+ | `--node-port-rpc <port>` | `30545` | Kubernetes NodePort for JSON-RPC |
221
+ | `--node-port-ws <port>` | `30546` | Kubernetes NodePort for WebSocket |
222
+ | `--namespace <ns>` | `besu` | Kubernetes namespace |
223
+ | `--pull-image` | — | Pull Besu images before deploying |
224
+ | `--skip-generate` | — | Use existing `manifests/besu/` as-is |
225
+ | `--skip-wait` | — | Skip waiting for validators to be Running |
151
226
 
152
- #### Reproducibility example
227
+ #### `cyberia chain remove`
153
228
 
154
- Running the same command twice produces byte-identical output:
229
+ Remove the Besu network from Kubernetes:
155
230
 
156
231
  ```bash
157
- # Run 1
158
- cyberia ol floor-desert --generate --seed fx-42 --count 3 --frame-count 2
232
+ cyberia chain remove [--namespace besu] [--clean-keys] [--clean-manifests]
233
+ ```
159
234
 
160
- # Run 2 (identical output)
161
- cyberia ol floor-desert --generate --seed fx-42 --count 3 --frame-count 2
235
+ #### `cyberia chain generate-manifests`
236
+
237
+ Generate Kubernetes manifests without deploying:
238
+
239
+ ```bash
240
+ cyberia chain generate-manifests [options] # same options as deploy
162
241
  ```
163
242
 
164
- Different seeds produce different but semantically consistent results:
243
+ ---
244
+
245
+ ### Contract Commands
246
+
247
+ #### `cyberia chain compile`
248
+
249
+ Compile the Solidity contracts:
165
250
 
166
251
  ```bash
167
- cyberia ol floor-desert --generate --seed fx-42 # variant A
168
- cyberia ol floor-desert --generate --seed fx-99 # variant B (same style, different arrangement)
252
+ cyberia chain compile
169
253
  ```
170
254
 
171
- ## Visualize a processed frame
255
+ #### `cyberia chain deploy-contract`
172
256
 
173
- Reconstructs and opens a PNG from the database-stored frame data. Requires item-id as the first positional argument, followed by direction and frame index in the format `[direction]_[frameIndex]`.
257
+ Deploy `ObjectLayerToken` to a Besu network (mints 10M CKY to the coinbase address):
174
258
 
175
259
  ```bash
176
- # Show frame with default direction and frame (08_0)
177
- cyberia ol anon --show-frame
260
+ cyberia chain deploy-contract --network besu-k8s
261
+ ```
178
262
 
179
- # Show specific direction and frame
180
- cyberia ol anon --show-frame 08_0
263
+ | Option | Default | Description |
264
+ | ------------------ | ---------- | ------------------------------------------------------------ |
265
+ | `--network <name>` | `besu-k8s` | Hardhat network name (`besu-ibft2`, `besu-qbft`, `besu-k8s`) |
181
266
 
182
- # Show different directions
183
- cyberia ol anon --show-frame 02_0 # up_idle
184
- cyberia ol anon --show-frame 04_1 # left_idle (second frame)
267
+ #### `cyberia chain test`
268
+
269
+ Run the Hardhat contract test suite:
270
+
271
+ ```bash
272
+ cyberia chain test
185
273
  ```
186
274
 
187
- **Valid direction codes:**
188
- - `08`: down_idle, none_idle, default_idle
189
- - `18`: down_walking
190
- - `02`: up_idle
191
- - `12`: up_walking
192
- - `04`: left_idle, up_left_idle, down_left_idle
193
- - `14`: left_walking, up_left_walking, down_left_walking
194
- - `06`: right_idle, up_right_idle, down_right_idle
195
- - `16`: right_walking, up_right_walking, down_right_walking
275
+ ---
196
276
 
197
- This command:
198
- - Finds the ObjectLayer by item-id
199
- - Loads the associated ObjectLayerRenderFrames document
200
- - Reconstructs the PNG from the stored `frame_matrix` and `map_color`
201
- - Saves it temporarily to disk as `{item-id}_{direction}_{frame}.png`
202
- - Opens it with Firefox for visual inspection
277
+ ### Key Management
203
278
 
204
- ### Generate Atlas Sprite Sheet
279
+ #### `cyberia chain key-gen`
205
280
 
206
- Consolidates all frames (8 directions, multiple modes) from an object layer's render frames into a single optimized PNG atlas with metadata.
281
+ Generate a new secp256k1 Ethereum key pair for the coinbase deployer account:
207
282
 
208
283
  ```bash
209
- # Generate atlas sprite sheet with auto-calculated dimensions (recommended)
210
- cyberia ol anon --to-atlas-sprite-sheet
284
+ cyberia chain key-gen
285
+ # Output: address + private key + key file written to engine-private/
286
+ ```
211
287
 
212
- # Generate atlas with custom dimensions (manual override)
213
- cyberia ol anon --to-atlas-sprite-sheet 4096
288
+ #### `cyberia chain set-coinbase`
214
289
 
290
+ Set the active coinbase key used for contract deployment and minting:
215
291
 
292
+ ```bash
293
+ cyberia chain set-coinbase --private-key 0xYOUR_KEY
294
+ cyberia chain set-coinbase --from-file ./engine-private/eth-networks/besu/<address>.key.json
216
295
  ```
217
296
 
218
- This command:
219
- - Finds the ObjectLayer by item-id or MongoDB `_id`
220
- - Loads the associated ObjectLayerRenderFrames document
221
- - **Auto-calculates optimal atlas dimensions** based on total frame count (8 directions × all animation modes)
222
- - Generates a consolidated PNG with all animation frames properly arranged
223
- - Stores the PNG in the File collection
224
- - Creates/updates an AtlasSpriteSheet document with frame positions
225
- - Updates the ObjectLayer with top-level `atlasSpriteSheetId` reference
226
- - Uses power-of-2 dimensions for GPU efficiency
297
+ ---
227
298
 
228
- **Atlas Dimension Calculation:**
229
- - **Auto (default)**: Dynamically calculates optimal size based on:
230
- - Total number of frames across all directions and modes
231
- - Individual frame dimensions
232
- - Grid layout to minimize wasted space
233
- - Power-of-2 optimization (1024, 2048, 4096, etc.)
234
- - **Manual override**: Specify exact dimension (e.g., `--to-atlas-sprite-sheet 4096`)
299
+ ### Token Commands
235
300
 
236
- **Common Atlas Sizes:**
237
- - **1024x1024**: ~6-10 frames
238
- - **2048x2048**: ~20-40 frames (typical for character sprites)
239
- - **4096x4096**: ~80-160 frames (complex animations)
240
- - **8192x8192**: Maximum, for extreme cases
301
+ #### `cyberia chain register`
241
302
 
242
- The tool automatically warns if frames exceed the specified dimension and suggests a larger size.
303
+ Register a single Object Layer item on-chain:
243
304
 
244
- ### View Atlas Sprite Sheet
305
+ ```bash
306
+ cyberia chain register <item-id> [options]
307
+ ```
245
308
 
246
- Opens the consolidated atlas sprite sheet PNG for inspection.
309
+ | Option | Default | Description |
310
+ | ---------------------- | ---------- | ----------------------------------------------------- |
311
+ | `--from-db` | — | Resolve canonical IPFS CID from MongoDB (recommended) |
312
+ | `--metadata-cid <cid>` | `""` | Manual CID override (ignored when `--from-db` is set) |
313
+ | `--supply <n>` | `1` | Initial token supply (1 = NFT, >1 = semi-fungible) |
314
+ | `--network <name>` | `besu-k8s` | Hardhat network name |
315
+ | `--env-path <path>` | `./.env` | Path to `.env` file |
316
+ | `--mongo-host <host>` | — | MongoDB host override |
247
317
 
248
318
  ```bash
249
- # Show atlas sprite sheet by item-id
250
- cyberia ol anon --show-atlas-sprite-sheet
319
+ # Register unique NFT item (non-fungible)
320
+ cyberia chain register legendary-hatchet --from-db --supply 1
251
321
 
322
+ # Register stackable resource (semi-fungible)
323
+ cyberia chain register gold-ore --from-db --supply 1000000
252
324
  ```
253
325
 
254
- This command:
255
- - Finds the ObjectLayer by item-id
256
- - Retrieves the associated AtlasSpriteSheet via top-level `atlasSpriteSheetId` or by matching `metadata.itemKey`
257
- - Saves it temporarily to disk
258
- - Opens it with Firefox for visual inspection
259
- - Displays atlas dimensions in the console
326
+ #### `cyberia chain batch-register`
260
327
 
261
- ## Common Workflows
262
-
263
- ### Complete Asset Processing Pipeline
264
-
265
- Process assets from source files through to atlas generation:
328
+ Register multiple items in a single batch transaction:
266
329
 
267
330
  ```bash
268
- # 1. Import object layers from asset directories
269
- cyberia ol --import skin
331
+ cyberia chain batch-register --from-db --items '[{"itemId":"wood","supply":500000},{"itemId":"stone","supply":500000}]'
332
+ ```
270
333
 
271
- # 2. Verify a specific frame was imported correctly
272
- cyberia ol anon --show-frame 08_0
334
+ #### `cyberia chain mint`
273
335
 
274
- # 3. Generate optimized atlas sprite sheet
275
- cyberia ol anon --to-atlas-sprite-sheet
336
+ Mint additional tokens for an existing token ID:
276
337
 
277
- # 4. View the generated atlas
278
- cyberia ol anon --show-atlas-sprite-sheet
338
+ ```bash
339
+ cyberia chain mint --token-id 0 --to 0xABCD...1234 --amount 1000000000000000000000
340
+ cyberia chain mint --token-id <tokenId> --to <address> --amount <uint256>
279
341
  ```
280
342
 
281
- ### Procedural Generation Pipeline
343
+ #### `cyberia chain balance`
282
344
 
283
- Generate an object layer entirely from a semantic descriptor — no source PNGs needed:
345
+ Query the token balance of an address:
284
346
 
285
347
  ```bash
286
- # 1. Generate a 3-frame desert floor with explicit seed
287
- cyberia ol floor-desert --generate --seed fx-42 --frame-count 3 --density 0.5
348
+ cyberia chain balance --address 0xABCD...1234 --token-id 0
349
+ ```
288
350
 
289
- # 2. Inspect the generated frame
290
- cyberia ol floor-desert --show-frame 08_0
351
+ #### `cyberia chain transfer`
291
352
 
292
- # 3. View the auto-generated atlas
293
- cyberia ol floor-desert --show-atlas-sprite-sheet
353
+ Transfer tokens between addresses:
354
+
355
+ ```bash
356
+ cyberia chain transfer --from 0x... --to 0x... --token-id 0 --amount 1000
294
357
  ```
295
358
 
296
- ### Batch Procedural Generation
359
+ #### `cyberia chain burn`
297
360
 
298
- Generate a full tileset family with consistent seeds:
361
+ Burn tokens from an address:
299
362
 
300
363
  ```bash
301
- cyberia ol floor-desert --generate --seed world-1 --frame-count 3
302
- cyberia ol floor-grass --generate --seed world-1 --frame-count 3
303
- cyberia ol floor-water --generate --seed world-1 --frame-count 4
304
- cyberia ol floor-stone --generate --seed world-1 --frame-count 2
305
- cyberia ol floor-lava --generate --seed world-1 --frame-count 3
364
+ cyberia chain burn --token-id 0 --amount 500 --address 0x...
306
365
  ```
307
366
 
308
- ### Exploring Seed Variations
367
+ #### `cyberia chain status`
309
368
 
310
- ```bash
311
- # Same item, different seeds — compare visual output
312
- cyberia ol floor-desert --generate --seed alpha --frame-count 1
313
- cyberia ol floor-desert --generate --seed beta --frame-count 1
314
- cyberia ol floor-desert --generate --seed gamma --frame-count 1
369
+ Query chain and contract status:
315
370
 
316
- # Inspect each
317
- cyberia ol floor-desert --show-frame 08_0
371
+ ```bash
372
+ cyberia chain status [--network besu-k8s]
373
+ # Outputs: chain ID, block number, CKY total supply, deployer address, pause state
318
374
  ```
319
375
 
320
- ### Debugging Asset Issues
376
+ #### `cyberia chain pause` / `cyberia chain unpause`
377
+
378
+ Emergency transfer freeze / resume (owner only):
321
379
 
322
380
  ```bash
323
- # Check if frame data is correct for all directions
324
- cyberia ol anon --show-frame 08_0 # down_idle
325
- cyberia ol anon --show-frame 02_0 # up_idle
326
- cyberia ol anon --show-frame 04_0 # left_idle
327
- cyberia ol anon --show-frame 06_0 # right_idle
328
-
329
- # Verify walking animations
330
- cyberia ol anon --show-frame 18_0 # down_walking
331
- cyberia ol anon --show-frame 12_0 # up_walking
332
- cyberia ol anon --show-frame 14_0 # left_walking
333
- cyberia ol anon --show-frame 16_0 # right_walking
381
+ cyberia chain pause [--network besu-k8s]
382
+ cyberia chain unpause [--network besu-k8s]
334
383
  ```
335
384
 
336
- ### Working with Multiple Items
385
+ ---
386
+
387
+ ## `cyberia run-workflow` — Operational Scripts
388
+
389
+ Pre-built operational workflows for seeding and maintenance:
390
+
391
+ | Subcommand | Description |
392
+ | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
393
+ | `import-default-items` | Import the canonical default item set (`DefaultCyberiaItems`) into MongoDB + IPFS, then seed skill config and dialogues |
394
+ | `seed-skill-config` | Upsert `DefaultSkillConfig` into `CyberiaInstanceConf` for the target instance |
395
+ | `seed-dialogues` | Upsert `DefaultCyberiaDialogues` (NPC dialogue lines) into the `cyberia-dialogue` collection |
396
+ | `generate-semantic-examples` | Generate procedural examples for skin prefixes (`skin-*`); floor and resource generation is available but commented out by default |
397
+ | `build-manifest` | Build Kubernetes Deployment + Service YAML manifests for mmo-client and mmo-server instances (kubeadm + kind variants) |
337
398
 
338
399
  ```bash
339
- # Import multiple types at once
340
- cyberia ol --import skin,floor,weapon
341
-
342
- # Process individual items
343
- cyberia ol sword --show-frame 08_0
344
- cyberia ol sword --to-atlas-sprite-sheet
345
- cyberia ol shield --show-frame 08_0
346
- cyberia ol shield --to-atlas-sprite-sheet
400
+ cyberia run-workflow import-default-items --env-path ./engine-private/conf/dd-cyberia/.env.development
401
+ cyberia run-workflow seed-skill-config --env-path ./engine-private/conf/dd-cyberia/.env.development
402
+ cyberia run-workflow build-manifest
347
403
  ```
404
+
405
+ ---
406
+
407
+ ## Environment Variables
408
+
409
+ The CLI respects the following environment variables (typically loaded from an `--env-path` file):
410
+
411
+ | Variable | Description |
412
+ | --------------------- | ---------------------------------------------------------------- |
413
+ | `DEFAULT_DEPLOY_ID` | Engine deployment ID — resolves to `engine-private/conf/{id}/` |
414
+ | `DEFAULT_DEPLOY_HOST` | Deploy host (used to index the conf object) |
415
+ | `DEFAULT_DEPLOY_PATH` | Deploy path (used to index the conf object) |
416
+ | `MONGODB_URI` | MongoDB connection string (loaded from conf if not set directly) |
417
+ | `IPFS_API_URL` | IPFS API URL for pinning (e.g. `http://localhost:5001`) |