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.
Files changed (381) hide show
  1. package/.github/workflows/engine-cyberia.cd.yml +8 -2
  2. package/.github/workflows/npmpkg.ci.yml +1 -0
  3. package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
  4. package/.github/workflows/release.cd.yml +2 -2
  5. package/.vscode/extensions.json +9 -9
  6. package/.vscode/settings.json +20 -4
  7. package/CHANGELOG.md +563 -1
  8. package/CLI-HELP.md +130 -34
  9. package/Dockerfile +0 -4
  10. package/README.md +194 -607
  11. package/bin/build.js +42 -12
  12. package/bin/build.template.js +187 -0
  13. package/bin/cyberia.js +1367 -281
  14. package/bin/deploy.js +582 -3
  15. package/bin/index.js +1367 -281
  16. package/bump.config.js +26 -0
  17. package/conf.js +195 -111
  18. package/deployment.yaml +6 -222
  19. package/hardhat/package-lock.json +118 -149
  20. package/hardhat/package.json +5 -4
  21. package/jsconfig.json +1 -1
  22. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -2
  23. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +2 -2
  24. package/manifests/deployment/dd-cyberia-development/deployment.yaml +6 -222
  25. package/manifests/deployment/dd-cyberia-development/proxy.yaml +10 -118
  26. package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
  27. package/manifests/deployment/dd-test-development/deployment.yaml +138 -66
  28. package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
  29. package/manifests/kind-config-dev.yaml +8 -0
  30. package/manifests/lxd/lxd-admin-profile.yaml +12 -3
  31. package/manifests/mongodb/pv-pvc.yaml +44 -8
  32. package/manifests/mongodb/statefulset.yaml +55 -68
  33. package/manifests/mongodb-4.4/headless-service.yaml +10 -0
  34. package/manifests/mongodb-4.4/kustomization.yaml +3 -1
  35. package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
  36. package/manifests/mongodb-4.4/pv-pvc.yaml +10 -14
  37. package/manifests/mongodb-4.4/statefulset.yaml +79 -0
  38. package/manifests/mongodb-4.4/storage-class.yaml +9 -0
  39. package/manifests/valkey/statefulset.yaml +1 -1
  40. package/manifests/valkey/valkey-nodeport.yaml +17 -0
  41. package/package.json +45 -24
  42. package/proxy.yaml +10 -118
  43. package/scripts/ipxe-setup.sh +52 -49
  44. package/scripts/k3s-node-setup.sh +83 -48
  45. package/scripts/lxd-vm-setup.sh +193 -8
  46. package/scripts/maas-nat-firewalld.sh +145 -0
  47. package/scripts/nat-iptables.sh +103 -18
  48. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +18 -18
  49. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +7 -14
  50. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +38 -33
  51. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +91 -36
  52. package/src/api/core/core.controller.js +10 -10
  53. package/src/api/core/core.router.js +19 -14
  54. package/src/api/core/core.service.js +15 -15
  55. package/src/api/crypto/crypto.controller.js +8 -8
  56. package/src/api/crypto/crypto.router.js +18 -12
  57. package/src/api/crypto/crypto.service.js +11 -11
  58. package/src/api/cyberia-action/cyberia-action.controller.js +74 -0
  59. package/src/api/cyberia-action/cyberia-action.model.js +87 -0
  60. package/src/api/cyberia-action/cyberia-action.router.js +31 -0
  61. package/src/api/cyberia-action/cyberia-action.service.js +42 -0
  62. package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +74 -0
  63. package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +99 -0
  64. package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +98 -0
  65. package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
  66. package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +13 -13
  67. package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +11 -11
  68. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +25 -20
  69. package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +22 -22
  70. package/src/api/cyberia-entity/cyberia-entity.controller.js +10 -10
  71. package/src/api/cyberia-entity/cyberia-entity.router.js +22 -18
  72. package/src/api/cyberia-entity/cyberia-entity.service.js +15 -15
  73. package/src/api/cyberia-instance/cyberia-fallback-world.js +83 -198
  74. package/src/api/cyberia-instance/cyberia-instance.controller.js +14 -14
  75. package/src/api/cyberia-instance/cyberia-instance.model.js +3 -0
  76. package/src/api/cyberia-instance/cyberia-instance.router.js +57 -52
  77. package/src/api/cyberia-instance/cyberia-instance.service.js +32 -67
  78. package/src/api/cyberia-instance/cyberia-portal-connector.js +20 -246
  79. package/src/api/cyberia-instance/cyberia-world-generator.js +505 -0
  80. package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +10 -10
  81. package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +18 -49
  82. package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +22 -18
  83. package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +19 -15
  84. package/src/api/cyberia-map/cyberia-map.controller.js +10 -10
  85. package/src/api/cyberia-map/cyberia-map.router.js +35 -30
  86. package/src/api/cyberia-map/cyberia-map.service.js +17 -17
  87. package/src/api/cyberia-quest/cyberia-quest.controller.js +74 -0
  88. package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
  89. package/src/api/cyberia-quest/cyberia-quest.router.js +31 -0
  90. package/src/api/cyberia-quest/cyberia-quest.service.js +42 -0
  91. package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +74 -0
  92. package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
  93. package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +31 -0
  94. package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
  95. package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +451 -0
  96. package/src/api/default/default.controller.js +10 -10
  97. package/src/api/default/default.router.js +22 -18
  98. package/src/api/default/default.service.js +15 -15
  99. package/src/api/document/document.controller.js +12 -12
  100. package/src/api/document/document.model.js +10 -16
  101. package/src/api/document/document.router.js +28 -23
  102. package/src/api/document/document.service.js +100 -23
  103. package/src/api/file/file.controller.js +8 -8
  104. package/src/api/file/file.model.js +10 -10
  105. package/src/api/file/file.router.js +19 -13
  106. package/src/api/file/file.service.js +45 -43
  107. package/src/api/instance/instance.controller.js +10 -10
  108. package/src/api/instance/instance.model.js +4 -10
  109. package/src/api/instance/instance.router.js +29 -24
  110. package/src/api/instance/instance.service.js +16 -16
  111. package/src/api/ipfs/ipfs.controller.js +12 -12
  112. package/src/api/ipfs/ipfs.model.js +4 -13
  113. package/src/api/ipfs/ipfs.router.js +21 -16
  114. package/src/api/ipfs/ipfs.service.js +22 -36
  115. package/src/api/object-layer/object-layer.controller.js +12 -12
  116. package/src/api/object-layer/object-layer.model.js +4 -17
  117. package/src/api/object-layer/object-layer.router.js +512 -507
  118. package/src/api/object-layer/object-layer.service.js +29 -26
  119. package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +10 -10
  120. package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +6 -16
  121. package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +22 -18
  122. package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +19 -15
  123. package/src/api/test/test.controller.js +8 -8
  124. package/src/api/test/test.router.js +17 -12
  125. package/src/api/test/test.service.js +8 -8
  126. package/src/api/types.js +24 -0
  127. package/src/api/user/guest.service.js +100 -0
  128. package/src/api/user/user.controller.js +6 -6
  129. package/src/api/user/user.model.js +8 -13
  130. package/src/api/user/user.router.js +297 -288
  131. package/src/api/user/user.service.js +103 -55
  132. package/src/cli/baremetal.js +132 -101
  133. package/src/cli/cluster.js +732 -217
  134. package/src/cli/db.js +106 -62
  135. package/src/cli/deploy.js +260 -149
  136. package/src/cli/fs.js +90 -9
  137. package/src/cli/image.js +43 -1
  138. package/src/cli/index.js +106 -16
  139. package/src/cli/ipfs.js +4 -6
  140. package/src/cli/kubectl.js +4 -1
  141. package/src/cli/lxd.js +1099 -223
  142. package/src/cli/monitor.js +9 -3
  143. package/src/cli/release.js +336 -86
  144. package/src/cli/repository.js +136 -53
  145. package/src/cli/run.js +599 -76
  146. package/src/cli/secrets.js +11 -2
  147. package/src/cli/ssh.js +1 -1
  148. package/src/cli/static.js +43 -115
  149. package/src/cli/test.js +9 -3
  150. package/src/client/Cryptokoyn.index.js +18 -21
  151. package/src/client/CyberiaPortal.index.js +19 -23
  152. package/src/client/Default.index.js +30 -36
  153. package/src/client/Itemledger.index.js +20 -26
  154. package/src/client/Underpost.index.js +19 -23
  155. package/src/client/components/core/404.js +4 -4
  156. package/src/client/components/core/500.js +4 -4
  157. package/src/client/components/core/Account.js +73 -60
  158. package/src/client/components/core/AgGrid.js +23 -33
  159. package/src/client/components/core/Alert.js +12 -13
  160. package/src/client/components/core/AppStore.js +1 -1
  161. package/src/client/components/core/Auth.js +40 -37
  162. package/src/client/components/core/Badge.js +7 -13
  163. package/src/client/components/core/BtnIcon.js +15 -17
  164. package/src/client/components/core/CalendarCore.js +42 -63
  165. package/src/client/components/core/Chat.js +13 -15
  166. package/src/client/components/core/ClientEvents.js +163 -0
  167. package/src/client/components/core/ColorPaletteElement.js +309 -0
  168. package/src/client/components/core/Content.js +17 -14
  169. package/src/client/components/core/Css.js +15 -71
  170. package/src/client/components/core/CssCore.js +12 -16
  171. package/src/client/components/core/D3Chart.js +4 -4
  172. package/src/client/components/core/Docs.js +64 -91
  173. package/src/client/components/core/DropDown.js +69 -91
  174. package/src/client/components/core/EventBus.js +96 -0
  175. package/src/client/components/core/EventsUI.js +14 -17
  176. package/src/client/components/core/FileExplorer.js +96 -228
  177. package/src/client/components/core/FullScreen.js +47 -75
  178. package/src/client/components/core/Input.js +24 -69
  179. package/src/client/components/core/Keyboard.js +25 -18
  180. package/src/client/components/core/KeyboardAvoidance.js +145 -0
  181. package/src/client/components/core/LoadingAnimation.js +25 -31
  182. package/src/client/components/core/LogIn.js +41 -41
  183. package/src/client/components/core/LogOut.js +23 -14
  184. package/src/client/components/core/Modal.js +544 -219
  185. package/src/client/components/core/NotificationManager.js +14 -18
  186. package/src/client/components/core/Panel.js +54 -50
  187. package/src/client/components/core/PanelForm.js +81 -177
  188. package/src/client/components/core/Polyhedron.js +110 -214
  189. package/src/client/components/core/PublicProfile.js +39 -32
  190. package/src/client/components/core/Recover.js +48 -44
  191. package/src/client/components/core/Responsive.js +88 -32
  192. package/src/client/components/core/RichText.js +9 -18
  193. package/src/client/components/core/Router.js +24 -3
  194. package/src/client/components/core/SearchBox.js +37 -37
  195. package/src/client/components/core/SignUp.js +39 -30
  196. package/src/client/components/core/SocketIo.js +31 -2
  197. package/src/client/components/core/SocketIoHandler.js +6 -6
  198. package/src/client/components/core/ToggleSwitch.js +8 -20
  199. package/src/client/components/core/ToolTip.js +5 -17
  200. package/src/client/components/core/Translate.js +56 -59
  201. package/src/client/components/core/Validator.js +26 -16
  202. package/src/client/components/core/Wallet.js +15 -26
  203. package/src/client/components/core/Worker.js +211 -276
  204. package/src/client/components/core/windowGetDimensions.js +7 -7
  205. package/src/client/components/cryptokoyn/{MenuCryptokoyn.js → AppShellCryptokoyn.js} +57 -57
  206. package/src/client/components/cryptokoyn/CssCryptokoyn.js +15 -15
  207. package/src/client/components/cryptokoyn/LogInCryptokoyn.js +6 -4
  208. package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +6 -4
  209. package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
  210. package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +4 -4
  211. package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +6 -4
  212. package/src/client/components/cyberia/InstanceEngineCyberia.js +141 -60
  213. package/src/client/components/cyberia/MapEngineCyberia.js +691 -214
  214. package/src/client/components/cyberia/ObjectLayerEngine.js +19 -0
  215. package/src/client/components/cyberia/ObjectLayerEngineModal.js +1204 -94
  216. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +196 -298
  217. package/src/client/components/cyberia/SharedDefaultsCyberia.js +330 -0
  218. package/src/client/components/cyberia-portal/{MenuCyberiaPortal.js → AppShellCyberiaPortal.js} +102 -102
  219. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +15 -15
  220. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +6 -4
  221. package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +6 -4
  222. package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +4 -4
  223. package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +60 -0
  224. package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +4 -4
  225. package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +6 -4
  226. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -4
  227. package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
  228. package/src/client/components/default/CssDefault.js +12 -12
  229. package/src/client/components/default/LogInDefault.js +6 -4
  230. package/src/client/components/default/LogOutDefault.js +6 -4
  231. package/src/client/components/default/RouterDefault.js +47 -0
  232. package/src/client/components/default/SettingsDefault.js +4 -4
  233. package/src/client/components/default/SignUpDefault.js +6 -4
  234. package/src/client/components/default/TranslateDefault.js +3 -3
  235. package/src/client/components/itemledger/{MenuItemledger.js → AppShellItemledger.js} +57 -57
  236. package/src/client/components/itemledger/CssItemledger.js +15 -15
  237. package/src/client/components/itemledger/LogInItemledger.js +6 -4
  238. package/src/client/components/itemledger/LogOutItemledger.js +6 -4
  239. package/src/client/components/itemledger/RouterItemledger.js +38 -0
  240. package/src/client/components/itemledger/SettingsItemledger.js +4 -4
  241. package/src/client/components/itemledger/SignUpItemledger.js +6 -4
  242. package/src/client/components/itemledger/TranslateItemledger.js +3 -3
  243. package/src/client/components/underpost/{MenuUnderpost.js → AppShellUnderpost.js} +88 -88
  244. package/src/client/components/underpost/CssUnderpost.js +14 -14
  245. package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +4 -4
  246. package/src/client/components/underpost/DocumentSearchProvider.js +1 -1
  247. package/src/client/components/underpost/LabGalleryUnderpost.js +12 -15
  248. package/src/client/components/underpost/LogInUnderpost.js +6 -4
  249. package/src/client/components/underpost/LogOutUnderpost.js +6 -4
  250. package/src/client/components/underpost/RouterUnderpost.js +45 -0
  251. package/src/client/components/underpost/SettingsUnderpost.js +4 -4
  252. package/src/client/components/underpost/SignUpUnderpost.js +6 -4
  253. package/src/client/components/underpost/TranslateUnderpost.js +4 -4
  254. package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +235 -0
  255. package/src/client/public/cyberia-docs/ARCHITECTURE.md +83 -0
  256. package/src/client/public/cyberia-docs/CYBERIA-CLI.md +204 -0
  257. package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +291 -0
  258. package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +278 -0
  259. package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
  260. package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +241 -0
  261. package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
  262. package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +279 -0
  263. package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +206 -0
  264. package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
  265. package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
  266. package/src/client/public/cyberia-docs/WHITE-PAPER.md +732 -0
  267. package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +14 -20
  268. package/src/client/services/core/core.service.js +17 -49
  269. package/src/client/services/crypto/crypto.service.js +8 -13
  270. package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
  271. package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
  272. package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +10 -16
  273. package/src/client/services/cyberia-entity/cyberia-entity.management.js +5 -5
  274. package/src/client/services/cyberia-entity/cyberia-entity.service.js +10 -16
  275. package/src/client/services/cyberia-instance/cyberia-instance.management.js +6 -6
  276. package/src/client/services/cyberia-instance/cyberia-instance.service.js +12 -18
  277. package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +10 -16
  278. package/src/client/services/cyberia-map/cyberia-map.management.js +6 -6
  279. package/src/client/services/cyberia-map/cyberia-map.service.js +12 -18
  280. package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
  281. package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
  282. package/src/client/services/default/default.management.js +159 -267
  283. package/src/client/services/default/default.service.js +10 -16
  284. package/src/client/services/document/document.service.js +14 -19
  285. package/src/client/services/file/file.service.js +8 -13
  286. package/src/client/services/instance/instance.management.js +5 -5
  287. package/src/client/services/instance/instance.service.js +10 -15
  288. package/src/client/services/ipfs/ipfs.service.js +12 -18
  289. package/src/client/services/object-layer/object-layer.management.js +12 -12
  290. package/src/client/services/object-layer/object-layer.service.js +20 -26
  291. package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +10 -16
  292. package/src/client/services/test/test.service.js +8 -13
  293. package/src/client/services/user/guest.service.js +86 -0
  294. package/src/client/services/user/user.management.js +5 -5
  295. package/src/client/services/user/user.service.js +14 -20
  296. package/src/client/ssr/body/404.js +3 -3
  297. package/src/client/ssr/body/500.js +3 -3
  298. package/src/client/ssr/body/CacheControl.js +5 -2
  299. package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
  300. package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +13 -6
  301. package/src/client/ssr/head/PwaItemledger.js +197 -60
  302. package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
  303. package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
  304. package/src/client/ssr/views/CyberiaServerMetrics.js +982 -0
  305. package/src/client/ssr/{offline → views}/Maintenance.js +12 -11
  306. package/src/client/ssr/{offline → views}/NoNetworkConnection.js +3 -3
  307. package/src/client/ssr/{pages → views}/Test.js +2 -2
  308. package/src/client/sw/core.sw.js +274 -0
  309. package/src/db/DataBaseProvider.js +115 -15
  310. package/src/db/mariadb/MariaDB.js +2 -1
  311. package/src/db/mongo/MongoBootstrap.js +657 -0
  312. package/src/db/mongo/MongooseDB.js +129 -21
  313. package/src/grpc/cyberia/grpc-server.js +185 -105
  314. package/src/index.js +1 -1
  315. package/src/runtime/cyberia-client/Dockerfile +101 -0
  316. package/src/runtime/cyberia-client/Dockerfile.dev +82 -0
  317. package/src/runtime/cyberia-server/Dockerfile +62 -0
  318. package/src/runtime/cyberia-server/Dockerfile.dev +71 -0
  319. package/src/runtime/express/Dockerfile +4 -4
  320. package/src/runtime/express/Express.js +2 -2
  321. package/src/runtime/lampp/Dockerfile +8 -7
  322. package/src/runtime/wp/Dockerfile +11 -17
  323. package/src/runtime/wp/Wp.js +8 -5
  324. package/src/server/atlas-sprite-sheet-generator.js +4 -2
  325. package/src/server/auth.js +2 -2
  326. package/src/server/client-build-docs.js +46 -47
  327. package/src/server/client-build.js +371 -132
  328. package/src/server/client-formatted.js +47 -16
  329. package/src/server/conf.js +91 -87
  330. package/src/server/data-query.js +32 -20
  331. package/src/server/dns.js +22 -0
  332. package/src/server/ipfs-client.js +232 -91
  333. package/src/server/object-layer.js +1 -6
  334. package/src/server/process.js +192 -45
  335. package/src/server/proxy.js +9 -2
  336. package/src/server/runtime.js +1 -1
  337. package/src/server/semantic-layer-generator-floor.js +11 -51
  338. package/src/server/semantic-layer-generator-resource.js +259 -0
  339. package/src/server/semantic-layer-generator-skin.js +41 -171
  340. package/src/server/semantic-layer-generator.js +122 -14
  341. package/src/server/shape-generator.js +108 -0
  342. package/src/server/start.js +34 -8
  343. package/src/server/valkey.js +143 -235
  344. package/src/ws/IoInterface.js +16 -16
  345. package/src/ws/core/channels/core.ws.chat.js +11 -11
  346. package/src/ws/core/channels/core.ws.mailer.js +29 -29
  347. package/src/ws/core/channels/core.ws.stream.js +19 -19
  348. package/src/ws/core/core.ws.connection.js +8 -8
  349. package/src/ws/core/core.ws.server.js +6 -5
  350. package/src/ws/default/channels/default.ws.main.js +10 -10
  351. package/src/ws/default/default.ws.connection.js +4 -4
  352. package/src/ws/default/default.ws.server.js +4 -3
  353. package/tsconfig.docs.json +15 -0
  354. package/typedoc.dd-cyberia.json +29 -0
  355. package/typedoc.json +29 -0
  356. package/WHITE-PAPER.md +0 -1540
  357. package/bin/file.js +0 -196
  358. package/bin/vs.js +0 -74
  359. package/bin/zed.js +0 -84
  360. package/hardhat/README.md +0 -531
  361. package/hardhat/WHITE-PAPER.md +0 -1540
  362. package/jsdoc.dd-cyberia.json +0 -68
  363. package/jsdoc.json +0 -68
  364. package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +0 -413
  365. package/src/api/object-layer/README.md +0 -672
  366. package/src/client/components/core/ColorPalette.js +0 -5267
  367. package/src/client/components/core/JoyStick.js +0 -80
  368. package/src/client/components/cryptokoyn/RoutesCryptokoyn.js +0 -39
  369. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +0 -223
  370. package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +0 -62
  371. package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +0 -136
  372. package/src/client/components/default/RoutesDefault.js +0 -49
  373. package/src/client/components/itemledger/RoutesItemledger.js +0 -40
  374. package/src/client/components/underpost/RoutesUnderpost.js +0 -47
  375. package/src/client/ssr/email/DefaultRecoverEmail.js +0 -21
  376. package/src/client/ssr/email/DefaultVerifyEmail.js +0 -17
  377. package/src/client/ssr/pages/CyberiaServerMetrics.js +0 -461
  378. package/src/client/sw/default.sw.js +0 -127
  379. package/src/client/sw/template.sw.js +0 -84
  380. package/src/grpc/cyberia/OFF_CHAIN_ECONOMY.md +0 -305
  381. package/src/grpc/cyberia/README.md +0 -326
@@ -21,7 +21,7 @@ import {
21
21
  buildReplicaId,
22
22
  writeEnv,
23
23
  } from '../server/conf.js';
24
- import { buildClient } from '../server/client-build.js';
24
+ import { buildClient, unzipClientBuild, mergeClientBuildZip } from '../server/client-build.js';
25
25
  import { DefaultConf } from '../../conf.js';
26
26
  import Underpost from '../index.js';
27
27
 
@@ -401,6 +401,7 @@ class UnderpostRepository {
401
401
 
402
402
  /**
403
403
  * Retrieves the message of the last Git commit.
404
+ * @param {number} [skip=0] - Number of commits to skip from HEAD (0 = most recent).
404
405
  * @returns {string} The last commit message.
405
406
  * @memberof UnderpostRepository
406
407
  */
@@ -642,6 +643,9 @@ class UnderpostRepository {
642
643
  * @param {boolean} [options.syncEnvPort=false] - If true, syncs environment port assignments across all deploy IDs.
643
644
  * @param {boolean} [options.singleReplica=false] - If true, builds single replica folders instead of full client.
644
645
  * @param {boolean} [options.buildZip=false] - If true, creates zip files of the builds.
646
+ * @param {string|number} [options.split=''] - Optional ZIP part size in MB. When set with buildZip, writes split parts.
647
+ * @param {string} [options.unzip=''] - Optional build ZIP prefix to extract from ./build.
648
+ * @param {string} [options.mergeZip=''] - Optional build prefix to merge split ZIP parts into a single ZIP.
645
649
  * @param {boolean} [options.liteBuild=false] - If true, skips full build (default is full build).
646
650
  * @param {boolean} [options.iconsBuild=false] - If true, builds icons.
647
651
  * @returns {Promise<boolean>} A promise that resolves when the build is complete.
@@ -656,12 +660,31 @@ class UnderpostRepository {
656
660
  syncEnvPort: false,
657
661
  singleReplica: false,
658
662
  buildZip: false,
663
+ split: '',
664
+ unzip: '',
665
+ mergeZip: '',
659
666
  liteBuild: false,
660
667
  iconsBuild: false,
661
668
  },
662
669
  ) {
663
670
  return new Promise(async (resolve, reject) => {
664
671
  try {
672
+ if (options.mergeZip) {
673
+ mergeClientBuildZip({
674
+ buildPrefix: options.mergeZip,
675
+ logger,
676
+ });
677
+ return resolve(true);
678
+ }
679
+
680
+ if (options.unzip) {
681
+ unzipClientBuild({
682
+ buildPrefix: options.unzip,
683
+ logger,
684
+ });
685
+ return resolve(true);
686
+ }
687
+
665
688
  // Handle singleReplica operation (must run before syncEnvPort to ensure replica dirs exist)
666
689
  if (options.singleReplica) {
667
690
  const replicaPath = path;
@@ -804,6 +827,9 @@ class UnderpostRepository {
804
827
  let argPath = path ? path.split(',') : [];
805
828
  let deployIdSingleReplicas = [];
806
829
  let singleReplicaHosts = [];
830
+ const isReplicaContext = resolvedDeployId
831
+ ? fs.existsSync(`./engine-private/replica/${resolvedDeployId}`)
832
+ : false;
807
833
  const serverConf = resolvedDeployId
808
834
  ? readConfJson(resolvedDeployId, 'server', { loadReplicas: true })
809
835
  : Config.default.server;
@@ -814,7 +840,7 @@ class UnderpostRepository {
814
840
  if (argHost.length && argPath.length && (!argHost.includes(host) || !argPath.includes(path))) {
815
841
  delete serverConf[host][path];
816
842
  } else {
817
- if (serverConf[host][path].singleReplica && serverConf[host][path].replicas) {
843
+ if (!isReplicaContext && serverConf[host][path].singleReplica && serverConf[host][path].replicas) {
818
844
  singleReplicaHosts.push({ host, path });
819
845
  deployIdSingleReplicas = deployIdSingleReplicas.concat(
820
846
  serverConf[host][path].replicas.map((replica) =>
@@ -827,10 +853,17 @@ class UnderpostRepository {
827
853
  }
828
854
  await buildClient({
829
855
  buildZip: options.buildZip || false,
856
+ split: options.split || '',
830
857
  fullBuild: options.liteBuild ? false : true,
831
858
  iconsBuild: options.iconsBuild || false,
832
859
  });
833
- for (const replicaDeployId of deployIdSingleReplicas) await Underpost.repo.client(replicaDeployId);
860
+ for (const replicaDeployId of deployIdSingleReplicas) {
861
+ if (!fs.existsSync(`./engine-private/replica/${replicaDeployId}`)) {
862
+ logger.warn('Skip replica client build: replica folder not found', { replicaDeployId });
863
+ continue;
864
+ }
865
+ await Underpost.repo.client(replicaDeployId);
866
+ }
834
867
 
835
868
  return resolve(true);
836
869
  }
@@ -891,8 +924,6 @@ class UnderpostRepository {
891
924
  shellExec(`cd ${privateRepoPath} && underpost pull . ${process.env.GITHUB_USERNAME}/${privateRepoName}`, {
892
925
  silent: true,
893
926
  });
894
- shellExec(`underpost run secret`);
895
- shellExec(`underpost run underpost-config`);
896
927
  const packageJsonDeploy = JSON.parse(fs.readFileSync(`./engine-private/conf/${deployId}/package.json`, 'utf8'));
897
928
  const packageJsonEngine = JSON.parse(fs.readFileSync(`./package.json`, 'utf8'));
898
929
  if (packageJsonDeploy.version !== packageJsonEngine.version) {
@@ -917,6 +948,7 @@ Prevent build private config repo.`,
917
948
  /**
918
949
  * Retrieves the Git commit history.
919
950
  * @param {number} [sinceCommit=1] - The number of recent commits to retrieve.
951
+ * @param {string} [repoPath='.'] - The path to the repository.
920
952
  * @returns {Array<{hash: string, message: string, files: string}>} An array of commit objects with hash, message, and files.
921
953
  * @memberof UnderpostRepository
922
954
  */
@@ -974,11 +1006,14 @@ Prevent build private config repo.`,
974
1006
  const host = 'default.net';
975
1007
  const path = '/';
976
1008
  DefaultConf.server[host][path].valkey = {
977
- port: 6379,
978
- host: 'valkey-service.default.svc.cluster.local',
1009
+ port: 'env:VALKEY_PORT:int:6379',
1010
+ host: 'env:VALKEY_HOST:127.0.0.1',
979
1011
  };
980
- // mongodb-0.mongodb-service
981
- DefaultConf.server[host][path].db.host = 'mongodb://mongodb-service:27017';
1012
+ DefaultConf.server[host][path].db.host = 'env:DB_HOST:mongodb://127.0.0.1:27017';
1013
+ DefaultConf.server[host][path].db.replicaSet = 'env:DB_REPLICA_SET:rs0';
1014
+ DefaultConf.server[host][path].db.authSource = 'env:DB_AUTH_SOURCE:admin';
1015
+ DefaultConf.server[host][path].db.user = 'env:DB_USER:';
1016
+ DefaultConf.server[host][path].db.password = 'env:DB_PASSWORD:';
982
1017
  defaultConf = true;
983
1018
  break;
984
1019
  }
@@ -1014,9 +1049,9 @@ Prevent build private config repo.`,
1014
1049
  */
1015
1050
  clean(options = { paths: [''] }) {
1016
1051
  for (const path of options.paths) {
1017
- shellExec(`cd ${path} && git reset`, { silent: true });
1018
- shellExec(`cd ${path} && git checkout .`, { silent: true });
1019
- shellExec(`cd ${path} && git clean -f -d`, { silent: true });
1052
+ shellExec(`cd ${path} && git reset`, { silentOnError: true, silent: true, disableLog: true });
1053
+ shellExec(`cd ${path} && git checkout .`, { silentOnError: true, silent: true, disableLog: true });
1054
+ shellExec(`cd ${path} && git clean -f -d`, { silentOnError: true, silent: true, disableLog: true });
1020
1055
  }
1021
1056
  },
1022
1057
 
@@ -1070,7 +1105,7 @@ Prevent build private config repo.`,
1070
1105
 
1071
1106
  try {
1072
1107
  // Fetch directory contents recursively
1073
- const copiedFiles = await this._fetchAndCopyGitHubDirectory({
1108
+ const copiedFiles = await this.fetchAndCopyGitHubDirectory({
1074
1109
  apiUrl,
1075
1110
  targetPath,
1076
1111
  basePath: directoryPath,
@@ -1106,7 +1141,7 @@ Prevent build private config repo.`,
1106
1141
  * @returns {Promise<array>} Array of copied file paths.
1107
1142
  * @memberof UnderpostRepository
1108
1143
  */
1109
- async _fetchAndCopyGitHubDirectory(options) {
1144
+ async fetchAndCopyGitHubDirectory(options) {
1110
1145
  const { apiUrl, targetPath, basePath, branch } = options;
1111
1146
  const copiedFiles = [];
1112
1147
 
@@ -1141,14 +1176,12 @@ Prevent build private config repo.`,
1141
1176
 
1142
1177
  logger.info(`Found ${contents.length} items in directory: ${basePath}`);
1143
1178
 
1144
- // Process each item in the directory
1145
1179
  for (const item of contents) {
1146
1180
  const itemTargetPath = `${targetPath}/${item.name}`;
1147
1181
 
1148
1182
  if (item.type === 'file') {
1149
1183
  logger.info(`Downloading file: ${item.path}`);
1150
1184
 
1151
- // Download file content
1152
1185
  const fileResponse = await fetch(item.download_url);
1153
1186
  if (!fileResponse.ok) {
1154
1187
  logger.error(`Failed to download: ${item.download_url}`);
@@ -1158,16 +1191,14 @@ Prevent build private config repo.`,
1158
1191
  const fileContent = await fileResponse.text();
1159
1192
  fs.writeFileSync(itemTargetPath, fileContent);
1160
1193
 
1161
- logger.info(`✓ Saved: ${itemTargetPath}`);
1194
+ logger.info(`Saved: ${itemTargetPath}`);
1162
1195
  copiedFiles.push(itemTargetPath);
1163
1196
  } else if (item.type === 'dir') {
1164
- logger.info(`📁 Processing directory: ${item.path}`);
1197
+ logger.info(`Processing directory: ${item.path}`);
1165
1198
 
1166
- // Create subdirectory
1167
1199
  fs.mkdirSync(itemTargetPath, { recursive: true });
1168
1200
 
1169
- // Recursively process subdirectory
1170
- const subFiles = await this._fetchAndCopyGitHubDirectory({
1201
+ const subFiles = await this.fetchAndCopyGitHubDirectory({
1171
1202
  apiUrl: item.url,
1172
1203
  targetPath: itemTargetPath,
1173
1204
  basePath: item.path,
@@ -1175,7 +1206,7 @@ Prevent build private config repo.`,
1175
1206
  });
1176
1207
 
1177
1208
  copiedFiles.push(...subFiles);
1178
- logger.info(`✓ Completed directory: ${item.path} (${subFiles.length} files)`);
1209
+ logger.info(`Completed directory: ${item.path} (${subFiles.length} files)`);
1179
1210
  } else {
1180
1211
  logger.warn(`Skipping unknown item type '${item.type}': ${item.path}`);
1181
1212
  }
@@ -1238,19 +1269,10 @@ Prevent build private config repo.`,
1238
1269
  },
1239
1270
 
1240
1271
  /**
1241
- * Returns metadata about unpushed commits in a git repository.
1242
- * Fetches from origin, then counts commits ahead of the remote branch.
1243
- * @param {string} [repoPath='.'] - Path to the git repository.
1244
- * @param {number} [fallback=1] - Value to return as `count` when no unpushed commits are detected.
1245
- * @returns {{ count: number, branch: string, hasUnpushed: boolean }} Unpush metadata.
1246
- * @memberof UnderpostRepository
1247
- */
1248
- /**
1249
- * Checks whether a remote Git repository URL is reachable.
1250
- * Uses `git ls-remote` with `|| true` so the process always exits 0.
1251
- * Injects `GITHUB_TOKEN` into GitHub HTTPS URLs when available.
1252
- * @param {string} url - Full HTTPS clone URL to test (e.g. "https://github.com/org/repo.git").
1253
- * @returns {boolean} `true` when the remote responded with at least one ref hash.
1272
+ * Resolves a Git remote URL, normalizing short-form owner/repo references to full
1273
+ * GitHub HTTPS URLs and injecting GITHUB_TOKEN when available.
1274
+ * @param {string} url - The repository URL or short-form (e.g. "owner/repo" or full HTTPS URL).
1275
+ * @returns {string} The resolved (and optionally authenticated) HTTPS URL.
1254
1276
  * @memberof UnderpostRepository
1255
1277
  */
1256
1278
  resolveAuthUrl(url) {
@@ -1268,20 +1290,36 @@ Prevent build private config repo.`,
1268
1290
  }
1269
1291
  return normalized;
1270
1292
  },
1271
-
1293
+ /**
1294
+ * Checks whether a remote Git repository URL is reachable.
1295
+ * Uses `silentOnError` so a non-reachable remote returns false instead of throwing.
1296
+ * Injects `GITHUB_TOKEN` into GitHub HTTPS URLs when available.
1297
+ * @param {string} url - Full HTTPS clone URL to test (e.g. "https://github.com/org/repo.git").
1298
+ * @returns {boolean} `true` when the remote responded with at least one ref hash.
1299
+ * @memberof UnderpostRepository
1300
+ */
1272
1301
  isRemoteRepo(url) {
1273
1302
  if (!url) return false;
1274
1303
  const authUrl = Underpost.repo.resolveAuthUrl(url);
1275
1304
  // GIT_TERMINAL_PROMPT=0 prevents git from hanging on credential prompts inside containers.
1276
- const raw = shellExec(`GIT_TERMINAL_PROMPT=0 git ls-remote "${authUrl}" HEAD 2>&1 || true`, {
1305
+ const raw = shellExec(`GIT_TERMINAL_PROMPT=0 git ls-remote "${authUrl}" HEAD 2>&1`, {
1277
1306
  stdout: true,
1278
1307
  silent: true,
1279
1308
  disableLog: true,
1309
+ silentOnError: true,
1280
1310
  });
1281
1311
  logger.info('isRemoteRepo', { url, raw: (raw || '').slice(0, 120) });
1282
1312
  return typeof raw === 'string' && /^[0-9a-f]{40}\t/m.test(raw);
1283
1313
  },
1284
1314
 
1315
+ /**
1316
+ * Returns metadata about unpushed commits in a git repository.
1317
+ * Fetches from origin, then counts commits ahead of the remote branch.
1318
+ * @param {string} [repoPath='.'] - Path to the git repository.
1319
+ * @param {number} [fallback=1] - Value to return as `count` when no unpushed commits are detected.
1320
+ * @returns {{ count: number, branch: string, hasUnpushed: boolean }} Unpush metadata.
1321
+ * @memberof UnderpostRepository
1322
+ */
1285
1323
  getUnpushedCount(repoPath = '.', fallback = 1) {
1286
1324
  const branch = shellExec(`cd ${repoPath} && git branch --show-current`, {
1287
1325
  stdout: true,
@@ -1321,19 +1359,6 @@ Prevent build private config repo.`,
1321
1359
  .trim()
1322
1360
  .replaceAll('] - ', '] ');
1323
1361
  },
1324
-
1325
- /**
1326
- * Manages a cron-backup Git repository: clone, pull, commit, or push.
1327
- * Resolves the repository path as `../<repoName>` relative to the CWD.
1328
- * Requires the `GITHUB_USERNAME` environment variable to be set.
1329
- * @param {object} params
1330
- * @param {string} params.repoName - Repository name (e.g. `engine-cyberia-cron-backups`).
1331
- * @param {'clone'|'pull'|'commit'|'push'} params.operation - Git operation to perform.
1332
- * @param {string} [params.message=''] - Commit message (used by the `commit` operation).
1333
- * @param {boolean} [params.forceClone=false] - Remove existing clone before re-cloning.
1334
- * @returns {boolean} `true` on success, `false` if GITHUB_USERNAME is unset or on error.
1335
- * @memberof UnderpostRepository
1336
- */
1337
1362
  /**
1338
1363
  * Initializes a git repository at the given path and configures user identity
1339
1364
  * from environment variables (`GITHUB_USERNAME` / `GITHUB_EMAIL`).
@@ -1353,11 +1378,12 @@ Prevent build private config repo.`,
1353
1378
  }
1354
1379
  shellExec(`cd "${repoPath}" && git config user.name '${gitUsername}'`);
1355
1380
  shellExec(`cd "${repoPath}" && git config user.email '${gitEmail}'`);
1356
-
1381
+ shellExec(`cd "${repoPath}" && git config core.filemode false`);
1357
1382
  if (origin) {
1358
- const currentRemote = shellExec(`cd "${repoPath}" && git remote get-url origin 2>/dev/null || true`, {
1383
+ const currentRemote = shellExec(`cd "${repoPath}" && git remote get-url origin`, {
1359
1384
  stdout: true,
1360
1385
  silent: true,
1386
+ silentOnError: true,
1361
1387
  }).trim();
1362
1388
  if (!currentRemote) {
1363
1389
  shellExec(`cd "${repoPath}" && git remote add origin "${origin}"`);
@@ -1366,7 +1392,18 @@ Prevent build private config repo.`,
1366
1392
  }
1367
1393
  }
1368
1394
  },
1369
-
1395
+ /**
1396
+ * Manages a cron-backup Git repository: clone, pull, commit, or push.
1397
+ * Resolves the repository path as `../<repoName>` relative to the CWD.
1398
+ * Requires the `GITHUB_USERNAME` environment variable to be set.
1399
+ * @param {object} params
1400
+ * @param {string} params.repoName - Repository name (e.g. `engine-cyberia-cron-backups`).
1401
+ * @param {'clone'|'pull'|'commit'|'push'} params.operation - Git operation to perform.
1402
+ * @param {string} [params.message=''] - Commit message (used by the `commit` operation).
1403
+ * @param {boolean} [params.forceClone=false] - Remove existing clone before re-cloning.
1404
+ * @returns {boolean} `true` on success, `false` if GITHUB_USERNAME is unset or on error.
1405
+ * @memberof UnderpostRepository
1406
+ */
1370
1407
  manageBackupRepo({ repoName, operation, message = '', forceClone = false }) {
1371
1408
  try {
1372
1409
  const username = process.env.GITHUB_USERNAME;
@@ -1570,6 +1607,52 @@ Prevent build private config repo.`,
1570
1607
  logger.info('engine-private in /home/dd removed');
1571
1608
  }
1572
1609
  },
1610
+
1611
+ /**
1612
+ * Resolves the GitHub repository for a given instance runtime by scanning
1613
+ * every `conf.instances.json` listed in `./engine-private/deploy/dd.router`.
1614
+ *
1615
+ * Resolution order:
1616
+ * 1. If `runtime` is falsy, returns `${GITHUB_USERNAME}/engine`.
1617
+ * 2. Iterates each deploy ID found in `dd.router` and looks for an instance
1618
+ * whose `runtime` field matches the supplied value.
1619
+ * 3. When a match is found, returns `instance.metadata.repository`.
1620
+ * 4. Falls back to `${GITHUB_USERNAME}/engine` when no match is found.
1621
+ *
1622
+ * @param {string} [runtime=''] - The runtime identifier to look up (e.g. `'cyberia-server'`, `'cyberia-client'`).
1623
+ * @returns {string} The resolved `owner/repo` string.
1624
+ * @memberof UnderpostRepository
1625
+ */
1626
+ resolveInstanceRepo(runtime = '') {
1627
+ const fallback = `${process.env.GITHUB_USERNAME}/engine`;
1628
+ if (!runtime) return fallback;
1629
+ const ddRouter = './engine-private/deploy/dd.router';
1630
+ const deployIds = fs.existsSync(ddRouter)
1631
+ ? fs
1632
+ .readFileSync(ddRouter, 'utf8')
1633
+ .split(',')
1634
+ .map((s) => s.trim())
1635
+ .filter(Boolean)
1636
+ : [];
1637
+ for (const deployId of deployIds) {
1638
+ const confPath = `./engine-private/conf/${deployId}/conf.instances.json`;
1639
+ if (!fs.existsSync(confPath)) continue;
1640
+ try {
1641
+ const instances = JSON.parse(fs.readFileSync(confPath, 'utf8'));
1642
+ const match = instances.find((i) => i && i.runtime === runtime);
1643
+ if (match && match.metadata && match.metadata.repository) {
1644
+ logger.info(`[resolveInstanceRepo] resolved from ${confPath}`, {
1645
+ runtime,
1646
+ repo: match.metadata.repository,
1647
+ });
1648
+ return match.metadata.repository;
1649
+ }
1650
+ } catch (err) {
1651
+ logger.warn(`[resolveInstanceRepo] failed to parse ${confPath}: ${err.message}`);
1652
+ }
1653
+ }
1654
+ return fallback;
1655
+ },
1573
1656
  };
1574
1657
  }
1575
1658