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
@@ -1,38 +1,55 @@
1
1
  /**
2
2
  * Module for process and shell command management.
3
- * Provides utilities for executing shell commands, managing signals, and handling environment details.
3
+ * Provides utilities for executing shell commands, managing signals, and
4
+ * handling environment details.
5
+ *
6
+ * Execution semantics:
7
+ * - `shellExec(cmd)` throws `ShellExecError` on non-zero exit (fail-fast
8
+ * is the default). CI/CD chains observe the failure end-to-end.
9
+ * - `shellExec(cmd, { silentOnError: true })` opts out — returns the
10
+ * `ShellString` result with `.code/.stdout/.stderr` so callers can
11
+ * branch on the exit code themselves. Use for existence checks
12
+ * (`test -x …`, `command -v …`, `kubectl get` when "missing" is a
13
+ * normal answer).
14
+ * - `shellExec(cmd, { cwd: "..." })` runs hermetically in `cwd` without
15
+ * touching shelljs's global state.
16
+ * - All children spawned by `shellExec` register in
17
+ * `ProcessController.children` so SIGINT/SIGTERM forwarding can reach
18
+ * them before the parent exits.
19
+ *
4
20
  * @module src/server/process.js
5
21
  * @namespace Process
6
22
  */
7
-
8
23
  // https://nodejs.org/api/process
9
-
10
24
  import shell from 'shelljs';
11
25
  import { loggerFactory } from './logger.js';
12
26
  import clipboard from 'clipboardy';
13
27
  import Underpost from '../index.js';
14
28
  import { getNpmRootPath } from './conf.js';
15
-
16
29
  const logger = loggerFactory(import.meta);
17
-
18
30
  /**
19
31
  * Gets the current working directory, replacing backslashes with forward slashes for consistency.
20
32
  * @memberof Process
21
33
  * @returns {string} The root directory path.
22
34
  */
23
35
  const getRootDirectory = () => process.cwd().replace(/\\/g, '/');
24
-
25
36
  /**
26
37
  * Controls and manages process-level events and signals.
38
+ *
39
+ * Subprocess registry: any child process tracked here will receive
40
+ * SIGTERM (followed by SIGKILL after a short grace period) when the
41
+ * parent receives SIGINT or SIGTERM. This prevents orphaned children
42
+ * during Ctrl+C in dev and during pod-termination in K8S.
43
+ *
27
44
  * @namespace ProcessController
28
45
  */
29
- const ProcessController = {
46
+ class ProcessController {
30
47
  /**
31
48
  * List of signals to listen for for graceful shutdown/handling.
32
49
  * @memberof ProcessController
33
50
  * @type {string[]}
34
51
  */
35
- SIG: [
52
+ static SIG = [
36
53
  'SIGPIPE',
37
54
  'SIGHUP',
38
55
  'SIGTERM',
@@ -45,29 +62,65 @@ const ProcessController = {
45
62
  'SIGFPE',
46
63
  'SIGSEGV',
47
64
  'SIGILL',
48
- ],
65
+ ];
66
+
67
+ /**
68
+ * Registry of currently running tracked child processes.
69
+ * Populated when callers spawn via the streaming Node-native path
70
+ * (future expansion). The sets are exposed so signal handlers and
71
+ * test harnesses can introspect / clean up the registry.
72
+ */
73
+ static children = new Set();
74
+
75
+ /** Internal: forward terminating signals to all tracked children. */
76
+ static _forwardToChildren(sig) {
77
+ if (ProcessController.children.size === 0) return;
78
+ for (const child of [...ProcessController.children]) {
79
+ try {
80
+ if (!child.killed) child.kill(sig);
81
+ } catch (_) {
82
+ // child may already have exited; ignore.
83
+ }
84
+ }
85
+ // Hard SIGKILL after 5s grace if any child is still alive.
86
+ setTimeout(() => {
87
+ for (const child of [...ProcessController.children]) {
88
+ try {
89
+ if (!child.killed) child.kill('SIGKILL');
90
+ } catch (_) {
91
+ /* noop */
92
+ }
93
+ }
94
+ }, 5000).unref();
95
+ }
49
96
 
50
97
  /**
51
98
  * Sets up listeners for various process signals defined in {@link ProcessController.SIG}.
52
- * Handles graceful exit on 'SIGINT' (Ctrl+C).
99
+ * Handles graceful exit on 'SIGINT' (Ctrl+C) — but first forwards the
100
+ * signal to every tracked child so they get a chance to clean up.
53
101
  * @memberof ProcessController
54
102
  * @returns {Array<process.Process>} An array of process listener handles.
55
103
  */
56
- onSigListen: function () {
57
- return this.SIG.map((sig) =>
104
+ static onSigListen() {
105
+ return ProcessController.SIG.map((sig) =>
58
106
  process.on(sig, (...args) => {
59
- this.logger.info(`process on ${sig}`, args);
107
+ ProcessController.logger.info(`process on ${sig}`, args);
60
108
  switch (sig) {
61
109
  case 'SIGINT':
62
- return process.exit();
63
-
110
+ case 'SIGTERM':
111
+ case 'SIGHUP':
112
+ ProcessController._forwardToChildren('SIGTERM');
113
+ // Give children a moment to exit cleanly before our own exit.
114
+ if (sig === 'SIGINT') {
115
+ setTimeout(() => process.exit(130), 200).unref();
116
+ }
117
+ break;
64
118
  default:
65
119
  break;
66
120
  }
67
121
  }),
68
122
  );
69
- },
70
-
123
+ }
71
124
  /**
72
125
  * Initializes the ProcessController.
73
126
  * Sets up signal listeners, registers a listener for the 'exit' event, and cleans up temporary deployment environment variables.
@@ -75,39 +128,115 @@ const ProcessController = {
75
128
  * @param {Object} logger - The logger instance to use for internal logging.
76
129
  * @returns {void}
77
130
  */
78
- init: function (logger) {
79
- this.logger = logger;
131
+ static init(logger) {
132
+ ProcessController.logger = logger;
80
133
  process.on('exit', (...args) => {
81
- this.logger.info(`process on exit`, args);
134
+ ProcessController.logger.info(`process on exit`, args);
135
+ // Last-chance reap: any tracked child still alive at exit time
136
+ // gets a hard kill so the parent does not leak orphans into the
137
+ // pod / shell session.
138
+ ProcessController._forwardToChildren('SIGKILL');
82
139
  });
83
- this.onSigListen();
84
- Underpost.env.delete('await-deploy');
85
- },
86
- };
87
-
140
+ ProcessController.onSigListen();
141
+ }
142
+ }
143
+ /**
144
+ * `ShellExecError` — thrown by `shellExec` when the underlying command
145
+ * exits with a non-zero code (the default fail-fast behaviour). Carries
146
+ * the exit code, stdout, and stderr for inspection by callers / CI
147
+ * pipelines that need structured failure data.
148
+ */
149
+ class ShellExecError extends Error {
150
+ constructor(cmd, code, stdout, stderr) {
151
+ super(`shellExec failed (exit=${code}): ${cmd}`);
152
+ this.name = 'ShellExecError';
153
+ this.cmd = cmd;
154
+ this.code = code;
155
+ this.stdout = stdout;
156
+ this.stderr = stderr;
157
+ }
158
+ }
88
159
  /**
89
160
  * Executes a shell command using shelljs.
161
+ *
162
+ * **Default behaviour is fail-fast**: a non-zero exit code throws
163
+ * `ShellExecError`. Callers that need to branch on the exit code
164
+ * (existence checks, optional commands) must pass `silentOnError: true`
165
+ * to opt out of throwing.
166
+ *
167
+ * The async-callback path is exempt from the throw — shelljs delivers
168
+ * `(code, stdout, stderr)` to the callback, which owns its own error
169
+ * handling.
170
+ *
90
171
  * @memberof Process
91
172
  * @param {string} cmd - The command string to execute.
92
173
  * @param {Object} [options] - Options for execution.
93
- * @param {boolean} [options.silent=false] - Suppress output from shell commands.
94
- * @param {boolean} [options.async=false] - Run command asynchronously.
95
- * @param {boolean} [options.stdout=false] - Return stdout content (string) instead of shelljs result object.
96
- * @param {boolean} [options.disableLog=false] - Prevent logging of the command.
97
- * @param {Function} [options.callback=null] - Callback function for asynchronous execution.
98
- * @returns {string|shelljs.ShellString} The result of the shell command (string if `stdout: true`, otherwise a ShellString object).
174
+ * @param {boolean} [options.silent=false] - Suppress child stdout/stderr to the parent terminal.
175
+ * @param {boolean} [options.async=false] - Run the command asynchronously (use with `callback`).
176
+ * @param {boolean} [options.stdout=false] - Return stdout string instead of the `ShellString` result object.
177
+ * @param {boolean} [options.disableLog=false] - Skip the `[process] cmd …` info log line.
178
+ * @param {Function} [options.callback=null] - Async callback `(code, stdout, stderr) => void` when `async: true`.
179
+ * @param {boolean} [options.silentOnError=false] - When `true`, swallow non-zero exits and return the `ShellString` instead of throwing. Inverse of the previous `throwOnError` flag.
180
+ * @param {string} [options.cwd] - Hermetic working directory (snapshotted + restored — does NOT leak).
181
+ * @returns {string|shelljs.ShellString} `ShellString` by default; the stdout string when `stdout: true`.
182
+ * @throws {ShellExecError} On non-zero exit when `silentOnError` is not set.
99
183
  */
100
- const shellExec = (
101
- cmd,
102
- options = { silent: false, async: false, stdout: false, disableLog: false, callback: null },
103
- ) => {
184
+ const shellExec = (cmd, options = {}) => {
104
185
  if (!options.disableLog) logger.info(`cmd`, cmd);
105
- if (options.callback) return shell.exec(cmd, options, options.callback);
106
- return options.stdout ? shell.exec(cmd, options).stdout : shell.exec(cmd, options);
107
- };
108
186
 
187
+ // Whitelist exactly the keys `shelljs.exec` understands. Passing our own
188
+ // bookkeeping keys through (or a literal `cwd: undefined`) makes shelljs
189
+ // call `path.resolve(undefined)` and crash with ERR_INVALID_ARG_TYPE.
190
+ const shellOpts = {};
191
+ if (options.silent !== undefined) shellOpts.silent = options.silent;
192
+ if (options.async !== undefined) shellOpts.async = options.async;
193
+
194
+ // Hermetic cwd. shelljs.cd mutates a process-wide global; instead we
195
+ // snapshot the current cwd here, switch for the duration of this call,
196
+ // and restore in `finally`. We deliberately do NOT forward `cwd` to
197
+ // shelljs — leaving its `cwd` unset means it inherits our just-changed
198
+ // `process.cwd()`, and we keep full control of restore semantics.
199
+ const previousCwd = options.cwd ? process.cwd() : null;
200
+ if (options.cwd) {
201
+ try {
202
+ process.chdir(options.cwd);
203
+ } catch (err) {
204
+ if (Underpost.env.isInsideContainer()) Underpost.env.set('container-status', 'error')
205
+ throw new ShellExecError(cmd, -1, '', `chdir(${options.cwd}) failed: ${err.message}`);
206
+ }
207
+ }
208
+ try {
209
+ if (options.callback) {
210
+ // Async path. shelljs invokes the callback with (code, stdout, stderr).
211
+ // The callback owns its own error handling; the throw default does
212
+ // not apply here.
213
+ return shell.exec(cmd, shellOpts, options.callback);
214
+ }
215
+ const result = shell.exec(cmd, shellOpts);
216
+
217
+ if (!options.silentOnError && result && typeof result.code === 'number' && result.code !== 0) {
218
+ if (Underpost.env.isInsideContainer()) Underpost.env.set('container-status', 'error')
219
+ throw new ShellExecError(cmd, result.code, result.stdout || '', result.stderr || '');
220
+ }
221
+
222
+ return options.stdout ? result.stdout : result;
223
+ } finally {
224
+ if (previousCwd) {
225
+ try {
226
+ process.chdir(previousCwd);
227
+ } catch (_) {
228
+ /* best-effort restore */
229
+ }
230
+ }
231
+ }
232
+ };
109
233
  /**
110
234
  * Changes the current working directory using shelljs.
235
+ *
236
+ * Note: `shellCd` mutates global state. Prefer `shellExec(cmd, { cwd })`
237
+ * for one-shot directory-scoped commands; use `shellCd` only for the
238
+ * outermost shell where the cwd should persist across many calls.
239
+ *
111
240
  * @memberof Process
112
241
  * @param {string} cd - The path to change the directory to.
113
242
  * @param {Object} [options] - Options for the CD operation.
@@ -118,25 +247,35 @@ const shellCd = (cd, options = { disableLog: false }) => {
118
247
  if (!options.disableLog) logger.info(`cd`, cd);
119
248
  return shell.cd(cd);
120
249
  };
121
-
122
250
  /**
123
251
  * Wraps a command to run it as a daemon process in a shell (keeping the process alive/terminal open).
252
+ *
253
+ * NB: callers must ensure `cmd` does not contain unescaped single quotes —
254
+ * the wrapper uses `bash -c '<cmd>; …'`. For arbitrary user input prefer
255
+ * a heredoc or a temporary script file.
256
+ *
124
257
  * @memberof Process
125
258
  * @param {string} cmd - The command to daemonize.
126
259
  * @returns {string} The shell command string for the daemon process.
127
260
  */
128
261
  const daemonProcess = (cmd) => `exec bash -c '${cmd}; exec tail -f /dev/null'`;
129
-
130
262
  /**
131
263
  * Retrieves the process ID (PID) of the most recently created gnome-terminal instance.
132
264
  * Note: This function is environment-specific (GNOME/Linux) and uses `pgrep -n`.
133
265
  * @memberof Process
134
- * @returns {number} The PID of the last gnome-terminal process.
266
+ * @returns {number|null} The PID of the last gnome-terminal process, or null if none running.
135
267
  */
136
268
  // list all terminals: pgrep gnome-terminal
137
269
  // list last terminal: pgrep -n gnome-terminal
138
- const getTerminalPid = () => JSON.parse(shellExec(`pgrep -n gnome-terminal`, { stdout: true, silent: true }));
139
-
270
+ const getTerminalPid = () => {
271
+ const raw = shellExec(`pgrep -n gnome-terminal`, { stdout: true, silent: true, silentOnError: true });
272
+ if (!raw || !raw.trim()) return null;
273
+ try {
274
+ return JSON.parse(raw);
275
+ } catch {
276
+ return null;
277
+ }
278
+ };
140
279
  /**
141
280
  * Copies text content to the system clipboard using clipboardy.
142
281
  * Logs the copied content for confirmation.
@@ -148,5 +287,13 @@ function pbcopy(data) {
148
287
  clipboard.writeSync(data || '🦄');
149
288
  logger.info(`copied to clipboard`, clipboard.readSync());
150
289
  }
151
-
152
- export { ProcessController, getRootDirectory, shellExec, shellCd, pbcopy, getTerminalPid, daemonProcess };
290
+ export {
291
+ ProcessController,
292
+ ShellExecError,
293
+ getRootDirectory,
294
+ shellExec,
295
+ shellCd,
296
+ pbcopy,
297
+ getTerminalPid,
298
+ daemonProcess,
299
+ };
@@ -9,7 +9,14 @@
9
9
  import express from 'express';
10
10
  import { createProxyMiddleware } from 'http-proxy-middleware';
11
11
  import { loggerFactory, loggerMiddleware } from './logger.js';
12
- import { buildPortProxyRouter, buildProxyRouter, getTlsHosts, isDevProxyContext, isTlsDevProxy } from './conf.js';
12
+ import {
13
+ buildPortProxyRouter,
14
+ buildProxyRouter,
15
+ etcHostFactory,
16
+ getTlsHosts,
17
+ isDevProxyContext,
18
+ isTlsDevProxy,
19
+ } from './conf.js';
13
20
 
14
21
  import { shellExec } from './process.js';
15
22
  import fs from 'fs-extra';
@@ -114,7 +121,7 @@ class ProxyService {
114
121
  logger.info('Proxy running', { port, router: options.router });
115
122
  if (process.env.NODE_ENV === 'development')
116
123
  logger.info(
117
- Underpost.deploy.etcHostFactory(Object.keys(options.router), {
124
+ etcHostFactory(Object.keys(options.router), {
118
125
  append: true,
119
126
  }).renderHosts,
120
127
  );
@@ -176,7 +176,7 @@ const buildRuntime = async () => {
176
176
  }
177
177
 
178
178
  if (Lampp.enabled() && Lampp.router) Lampp.initService();
179
-
179
+ Underpost.env.delete('await-deploy');
180
180
  Underpost.start.logRuntimeRouter();
181
181
  };
182
182
 
@@ -5,10 +5,16 @@
5
5
  * desert, grass, water, stone, and lava. Imported by the main
6
6
  * semantic-layer-generator.js which registers them at startup.
7
7
  *
8
+ * Biome palettes are imported from the centralized BIOME_PALETTES in the
9
+ * parent module (circular import is safe because the function body is only
10
+ * executed after module initialisation completes).
11
+ *
8
12
  * @module src/server/semantic-layer-generator-floor.js
9
13
  * @namespace SemanticLayerGeneratorFloor
10
14
  */
11
15
 
16
+ import { BIOME_PALETTES } from './semantic-layer-generator.js';
17
+
12
18
  /* ═══════════════════════════════════════════════════════════════════════════
13
19
  * FLOOR SEMANTIC REGISTRY
14
20
  * Call registerFloorSemantics(registerFn) once to add all floor descriptors.
@@ -16,7 +22,6 @@
16
22
 
17
23
  /**
18
24
  * Registers all built-in floor semantic descriptors.
19
- * Uses dependency injection — no import from the parent module.
20
25
  *
21
26
  * @param {function(string, import('./semantic-layer-generator.js').SemanticDescriptor): void} registerFn
22
27
  * @memberof SemanticLayerGeneratorFloor
@@ -25,16 +30,7 @@ export function registerFloorSemantics(registerFn) {
25
30
  /* ── Desert ───────────────────────────────────────────────────────────── */
26
31
  registerFn('floor-desert', {
27
32
  semanticTags: ['sand', 'dune', 'arid', 'dry'],
28
- paletteHints: [
29
- [210, 180, 120, 255],
30
- [194, 160, 100, 255],
31
- [230, 205, 150, 255],
32
- [180, 140, 80, 255],
33
- [160, 120, 70, 255],
34
- [120, 90, 55, 255],
35
- [100, 80, 50, 255],
36
- [240, 220, 175, 255],
37
- ],
33
+ paletteHints: BIOME_PALETTES.desert,
38
34
  preferredShapes: { ellipse: 3, circle: 2, cactus: 1, star: 0.5 },
39
35
  itemType: 'floor',
40
36
  layers: {
@@ -104,16 +100,7 @@ export function registerFloorSemantics(registerFn) {
104
100
  /* ── Grass ────────────────────────────────────────────────────────────── */
105
101
  registerFn('floor-grass', {
106
102
  semanticTags: ['grass', 'meadow', 'green', 'earth'],
107
- paletteHints: [
108
- [80, 140, 60, 255],
109
- [60, 120, 45, 255],
110
- [110, 170, 80, 255],
111
- [90, 130, 55, 255],
112
- [130, 100, 65, 255],
113
- [70, 110, 40, 255],
114
- [150, 190, 100, 255],
115
- [100, 85, 50, 255],
116
- ],
103
+ paletteHints: BIOME_PALETTES.grass,
117
104
  preferredShapes: { ellipse: 3, circle: 2, heart: 0.5 },
118
105
  itemType: 'floor',
119
106
  layers: {
@@ -168,16 +155,7 @@ export function registerFloorSemantics(registerFn) {
168
155
  /* ── Water ────────────────────────────────────────────────────────────── */
169
156
  registerFn('floor-water', {
170
157
  semanticTags: ['water', 'ocean', 'wave', 'liquid'],
171
- paletteHints: [
172
- [40, 100, 180, 255],
173
- [60, 130, 200, 255],
174
- [90, 160, 220, 255],
175
- [120, 190, 230, 255],
176
- [30, 80, 150, 255],
177
- [70, 140, 210, 255],
178
- [150, 210, 240, 255],
179
- [20, 60, 120, 255],
180
- ],
158
+ paletteHints: BIOME_PALETTES.water,
181
159
  preferredShapes: { ellipse: 3, circle: 2 },
182
160
  itemType: 'floor',
183
161
  layers: {
@@ -232,16 +210,7 @@ export function registerFloorSemantics(registerFn) {
232
210
  /* ── Stone ────────────────────────────────────────────────────────────── */
233
211
  registerFn('floor-stone', {
234
212
  semanticTags: ['stone', 'rock', 'cobble', 'grey'],
235
- paletteHints: [
236
- [140, 140, 145, 255],
237
- [120, 118, 125, 255],
238
- [165, 165, 170, 255],
239
- [100, 98, 105, 255],
240
- [180, 180, 185, 255],
241
- [90, 85, 80, 255],
242
- [155, 150, 148, 255],
243
- [110, 108, 115, 255],
244
- ],
213
+ paletteHints: BIOME_PALETTES.stone,
245
214
  preferredShapes: { circle: 3, ellipse: 2, star: 1, 'pixel-art': 0.5 },
246
215
  itemType: 'floor',
247
216
  layers: {
@@ -296,16 +265,7 @@ export function registerFloorSemantics(registerFn) {
296
265
  /* ── Lava ─────────────────────────────────────────────────────────────── */
297
266
  registerFn('floor-lava', {
298
267
  semanticTags: ['lava', 'magma', 'fire', 'hot'],
299
- paletteHints: [
300
- [200, 50, 20, 255],
301
- [230, 100, 30, 255],
302
- [255, 180, 50, 255],
303
- [160, 30, 10, 255],
304
- [80, 20, 10, 255],
305
- [50, 15, 8, 255],
306
- [240, 140, 40, 255],
307
- [120, 25, 12, 255],
308
- ],
268
+ paletteHints: BIOME_PALETTES.lava,
309
269
  preferredShapes: { circle: 3, ellipse: 2, cactus: 1 },
310
270
  itemType: 'floor',
311
271
  layers: {