@underpostnet/cyberia 3.3.0 → 3.3.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +1 -0
- package/.github/workflows/coverall.cyberia.ci.yml +34 -14
- package/.github/workflows/cyberia-client.cd.yml +5 -0
- package/.github/workflows/cyberia-server.cd.yml +5 -0
- package/.github/workflows/docker-image.cyberia-client.ci.yml +8 -5
- package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +8 -3
- package/.github/workflows/docker-image.cyberia-server.ci.yml +8 -5
- package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +8 -5
- package/.github/workflows/docker-image.engine-cyberia.ci.yml +15 -1
- package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +15 -1
- package/.github/workflows/engine-cyberia.cd.yml +3 -0
- package/.github/workflows/engine-cyberia.ci.yml +4 -5
- package/.github/workflows/ghpkg.ci.yml +35 -20
- package/.github/workflows/hardhat.ci.yml +12 -11
- package/.github/workflows/npmpkg.ci.yml +17 -15
- package/.github/workflows/pwa-microservices-template-test.ci.yml +2 -2
- package/.github/workflows/release.cd.yml +1 -0
- package/.prettierignore +1 -0
- package/AGENTS.md +47 -0
- package/CHANGELOG.md +565 -2510
- package/CLI-HELP.md +306 -147
- package/Dockerfile +25 -9
- package/Dockerfile.dev +25 -9
- package/Dockerfile.test +4 -4
- package/README.md +21 -1
- package/bin/build.js +66 -41
- package/bin/build.template.js +8 -3
- package/bin/cyberia.js +308 -91
- package/bin/deploy.js +18 -104
- package/bin/index.js +308 -91
- package/conf.js +91 -4
- package/deploy/cyberia-client/deploy.sh +47 -0
- package/deploy/cyberia-client/package.sh +18 -0
- package/deploy/cyberia-client/state.sh +14 -0
- package/deploy/cyberia-server/deploy.sh +47 -0
- package/deploy/cyberia-server/package.sh +18 -0
- package/deploy/cyberia-server/state.sh +14 -0
- package/deploy/dd-cyberia/deploy.sh +6 -26
- package/deploy/dd-cyberia/init.sh +35 -43
- package/deploy/dd-cyberia/package.sh +17 -0
- package/deploy/dd-cyberia/state.sh +14 -0
- package/deploy/dd-cyberia/sync-deploy.sh +92 -170
- package/deploy/lib/github-actions-logging.sh +594 -0
- package/deploy/lib/host.sh +185 -0
- package/deploy/lib/state.sh +62 -0
- package/deploy/pwa-microservices-template/deploy.sh +12 -39
- package/deploy/release/deploy.sh +9 -39
- package/deployment.yaml +7 -2
- package/docker-compose.yml +7 -7
- package/examples/static-page/README.md +19 -19
- package/examples/static-page/ssr-components/CustomPage.js +2 -2
- package/hardhat/hardhat.config.js +1 -6
- package/hardhat/package-lock.json +101 -40
- package/hardhat/package.json +2 -2
- package/manifests/alertmanager/deployment.yaml +81 -0
- package/manifests/blackbox-exporter/deployment.yaml +75 -0
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +32 -7
- package/manifests/cronjobs/dd-cron/dd-cron-vultr.yaml +32 -7
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +7 -2
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
- package/manifests/grafana/deployment.yaml +26 -7
- package/manifests/grafana/kustomization.yaml +1 -0
- package/manifests/grafana/service.yaml +6 -1
- package/manifests/mariadb/pv.yaml +1 -0
- package/manifests/mongodb/statefulset.yaml +9 -2
- package/manifests/mysql/pv-pvc.yaml +14 -1
- package/manifests/postgresql/pv.yaml +12 -1
- package/manifests/postgresql/pvc.yaml +1 -0
- package/manifests/prometheus/deployment.yaml +18 -22
- package/package.json +83 -10
- package/scripts/event-monitor.sh +56 -0
- package/scripts/k3s-node-setup.sh +27 -14
- package/scripts/kubeadm-node-setup.sh +31 -11
- package/scripts/maas-setup.sh +8 -8
- package/scripts/selinux-normalize.sh +907 -0
- package/scripts/shutdown-machine.sh +843 -0
- package/scripts/test-monitor.sh +3 -3
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +1 -1
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +2 -2
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +2 -2
- package/src/api/core/core.controller.js +1 -1
- package/src/api/core/core.router.js +2 -2
- package/src/api/core/core.service.js +2 -2
- package/src/api/crypto/crypto.controller.js +1 -1
- package/src/api/crypto/crypto.service.js +1 -1
- package/src/api/cyberia-action/cyberia-action.controller.js +1 -1
- package/src/api/cyberia-action/cyberia-action.router.js +1 -1
- package/src/api/cyberia-action/cyberia-action.service.js +2 -2
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +1 -1
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +1 -1
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +2 -2
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +1 -1
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +1 -1
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +2 -2
- package/src/api/cyberia-entity/cyberia-entity.controller.js +1 -1
- package/src/api/cyberia-entity/cyberia-entity.router.js +1 -1
- package/src/api/cyberia-entity/cyberia-entity.service.js +2 -2
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +1 -1
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +1 -1
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +2 -2
- package/src/api/cyberia-instance/cyberia-fallback-capture.js +466 -0
- package/src/api/cyberia-instance/cyberia-fallback-world.js +8 -0
- package/src/api/cyberia-instance/cyberia-instance-map.service.js +1 -1
- package/src/api/cyberia-instance/cyberia-instance.controller.js +1 -1
- package/src/api/cyberia-instance/cyberia-instance.router.js +2 -2
- package/src/api/cyberia-instance/cyberia-instance.service.js +2 -2
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +1 -1
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +1 -1
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +2 -2
- package/src/api/cyberia-map/cyberia-map.controller.js +1 -1
- package/src/api/cyberia-map/cyberia-map.router.js +1 -1
- package/src/api/cyberia-map/cyberia-map.service.js +2 -2
- package/src/api/cyberia-quest/cyberia-quest.controller.js +1 -1
- package/src/api/cyberia-quest/cyberia-quest.router.js +1 -1
- package/src/api/cyberia-quest/cyberia-quest.service.js +2 -2
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +1 -1
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +1 -1
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +2 -2
- package/src/api/cyberia-saga/cyberia-saga.controller.js +1 -1
- package/src/api/cyberia-saga/cyberia-saga.router.js +1 -1
- package/src/api/cyberia-saga/cyberia-saga.service.js +2 -2
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +0 -26
- package/src/api/cyberia-skill/cyberia-skill.controller.js +1 -1
- package/src/api/cyberia-skill/cyberia-skill.router.js +1 -1
- package/src/api/cyberia-skill/cyberia-skill.service.js +2 -2
- package/src/api/default/default.controller.js +1 -1
- package/src/api/default/default.router.js +1 -1
- package/src/api/default/default.service.js +2 -2
- package/src/api/document/document.controller.js +1 -1
- package/src/api/document/document.router.js +1 -1
- package/src/api/document/document.service.js +2 -2
- package/src/api/file/file.controller.js +1 -1
- package/src/api/file/file.router.js +1 -1
- package/src/api/file/file.service.js +2 -2
- package/src/api/instance/instance.controller.js +1 -1
- package/src/api/instance/instance.router.js +1 -1
- package/src/api/instance/instance.service.js +2 -2
- package/src/api/ipfs/ipfs.controller.js +1 -1
- package/src/api/ipfs/ipfs.router.js +2 -2
- package/src/api/ipfs/ipfs.service.js +2 -2
- package/src/api/object-layer/object-layer.controller.js +1 -1
- package/src/api/object-layer/object-layer.router.js +2 -2
- package/src/api/object-layer/object-layer.service.js +3 -3
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +1 -1
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +1 -1
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +2 -2
- package/src/api/test/test.controller.js +1 -1
- package/src/api/test/test.service.js +1 -1
- package/src/api/user/guest.service.js +3 -3
- package/src/api/user/user.controller.js +1 -1
- package/src/api/user/user.router.js +2 -2
- package/src/api/user/user.service.js +4 -4
- package/src/api.js +5 -9
- package/src/cli/app.js +391 -0
- package/src/cli/baremetal.js +30 -35
- package/src/cli/client.js +306 -0
- package/src/cli/cloud-init.js +3 -3
- package/src/cli/cluster.js +184 -82
- package/src/cli/db.js +120 -68
- package/src/cli/deploy.js +153 -71
- package/src/cli/docker-compose.js +5 -5
- package/src/cli/domains.js +184 -0
- package/src/cli/dotenv-store.js +143 -0
- package/src/cli/event.js +2281 -0
- package/src/cli/fs.js +3 -3
- package/src/cli/host.js +672 -0
- package/src/cli/image.js +4 -6
- package/src/cli/index.js +322 -142
- package/src/cli/ipfs.js +34 -30
- package/src/cli/kickstart.js +1 -1
- package/src/cli/kubectl.js +218 -41
- package/src/cli/lxd.js +3 -3
- package/src/cli/monitor.js +1359 -26
- package/src/cli/package.js +90 -0
- package/src/cli/release.js +16 -12
- package/src/cli/repository.js +558 -363
- package/src/cli/run.js +331 -650
- package/src/cli/secrets.js +2158 -964
- package/src/cli/ssh.js +478 -279
- package/src/cli/state.js +394 -0
- package/src/cli/static.js +2 -2
- package/src/cli/system.js +1 -1
- package/src/cli/test.js +199 -125
- package/src/cli/vultr.js +61 -21
- package/src/cli/wireguard.js +1111 -306
- package/src/client/components/core/CalendarCore.js +53 -96
- package/src/client/components/core/Docs.js +258 -211
- package/src/client/components/core/FileExplorer.js +0 -21
- package/src/client/components/core/PanelForm.js +4 -4
- package/src/client/components/core/Repository.js +56 -0
- package/src/client/components/core/Translate.js +7 -0
- package/src/client/components/core/{FullScreen.js → ViewModeController.js} +42 -39
- package/src/client/components/core/Wallet.js +0 -11
- package/src/client/components/core/Worker.js +7 -1
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +2 -2
- package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +2 -1
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +2 -2
- package/src/client/components/default/AppShellDefault.js +1 -1
- package/src/client/components/default/SettingsDefault.js +2 -2
- package/src/client/components/itemledger/SettingsItemledger.js +2 -2
- package/src/client/components/underpost/AppShellUnderpost.js +3 -2
- package/src/client/components/underpost/SettingsUnderpost.js +2 -2
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +32 -5
- package/src/client/public/cyberia-docs/CYBERIA.md +21 -1
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +23 -6
- package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +1 -1
- package/src/client/public/default/android-chrome-144x144.png +0 -0
- package/src/client/public/default/android-chrome-192x192.png +0 -0
- package/src/client/public/default/android-chrome-256x256.png +0 -0
- package/src/client/public/default/android-chrome-36x36.png +0 -0
- package/src/client/public/default/android-chrome-384x384.png +0 -0
- package/src/client/public/default/android-chrome-48x48.png +0 -0
- package/src/client/public/default/android-chrome-512x512.png +0 -0
- package/src/client/public/default/android-chrome-72x72.png +0 -0
- package/src/client/public/default/android-chrome-96x96.png +0 -0
- package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
- package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
- package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
- package/src/client/public/default/assets/background/white.jpg +0 -0
- package/src/client/public/default/browserconfig.xml +1 -1
- package/src/client/public/default/favicon-16x16.png +0 -0
- package/src/client/public/default/favicon-32x32.png +0 -0
- package/src/client/public/default/favicon-48x48.png +0 -0
- package/src/client/public/default/favicon.ico +0 -0
- package/src/client/public/default/manifest.webmanifest +5 -5
- package/src/client/public/default/mstile-144x144.png +0 -0
- package/src/client/public/default/mstile-150x150.png +0 -0
- package/src/client/public/default/mstile-310x150.png +0 -0
- package/src/client/public/default/mstile-310x310.png +0 -0
- package/src/client/public/default/mstile-70x70.png +0 -0
- package/src/client/public/default/yandex-browser-50x50.png +0 -0
- package/src/client/public/default/yandex-browser-manifest.json +1 -1
- package/src/client/ssr/RootDocument.js +1 -1
- package/src/client/ssr/body/404.js +1 -1
- package/src/client/ssr/body/500.js +1 -1
- package/src/client/ssr/body/CacheControl.js +1 -1
- package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +1 -1
- package/src/client/ssr/body/DefaultSplashScreen.js +1 -1
- package/src/client/ssr/body/SwaggerDarkMode.js +1 -1
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +1 -1
- package/src/client/ssr/head/CryptokoynScripts.js +1 -1
- package/src/client/ssr/head/Css.js +1 -1
- package/src/client/ssr/head/CyberiaPortalScripts.js +1 -1
- package/src/client/ssr/head/DefaultScripts.js +1 -1
- package/src/client/ssr/head/ItemledgerScripts.js +1 -1
- package/src/client/ssr/head/Microdata.js +1 -1
- package/src/client/ssr/head/Production.js +1 -1
- package/src/client/ssr/head/Pwa.js +1 -1
- package/src/client/ssr/head/PwaItemledger.js +1 -1
- package/src/client/ssr/head/Seo.js +1 -1
- package/src/client/ssr/head/UnderpostScripts.js +1 -1
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +1 -1
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +1 -1
- package/src/client/ssr/views/Cyberia404.js +7 -5
- package/src/client/ssr/views/CyberiaServerMetrics.js +1 -1
- package/src/client/ssr/views/Maintenance.js +1 -1
- package/src/client/ssr/views/NoNetworkConnection.js +1 -1
- package/src/client/ssr/views/Test.js +1 -1
- package/src/client/sw/core.sw.js +20 -14
- package/src/client-builder/client-build-docs.js +61 -46
- package/src/client-builder/client-build-live.js +2 -2
- package/src/client-builder/client-build.js +38 -30
- package/src/client-builder/client-dev-server.js +3 -3
- package/src/client-builder/client-icons.js +2 -2
- package/src/client-builder/ssr.js +3 -3
- package/src/client.build.js +3 -6
- package/src/client.dev.js +3 -6
- package/src/db/DataBaseProvider.js +186 -3
- package/src/db/mariadb/MariaDB.js +3 -2
- package/src/db/mongo/MongoBootstrap.js +273 -101
- package/src/db/mongo/MongooseDB.js +7 -8
- package/src/{server/valkey.js → db/valkey/Valkey.js} +5 -4
- package/src/grpc/cyberia/grpc-server.js +1 -1
- package/src/index.js +79 -23
- package/src/mailer/EmailRender.js +2 -2
- package/src/mailer/MailerInterceptor.js +87 -0
- package/src/mailer/MailerProvider.js +50 -6
- package/src/projects/cyberia/atlas-sprite-sheet-generator.js +1 -1
- package/src/projects/cyberia/besu-genesis-generator.js +3 -3
- package/src/projects/cyberia/catalog-cyberia.js +53 -10
- package/src/projects/cyberia/gemini-client.js +1 -1
- package/src/projects/cyberia/generate-saga.js +1 -1
- package/src/projects/cyberia/hot-reload-trigger.js +1 -1
- package/src/projects/cyberia/instance-data.js +1 -1
- package/src/projects/cyberia/ipfs-client.js +4 -4
- package/src/projects/cyberia/map-preview-generator.js +1 -1
- package/src/projects/cyberia/object-layer.js +1 -1
- package/src/projects/cyberia/semantic-layer-generator.js +1 -1
- package/src/projects/underpost/catalog-underpost.js +9 -1
- package/src/proxy.js +4 -7
- package/src/runtime/cyberia-client/Dockerfile +9 -4
- package/src/runtime/cyberia-client/Dockerfile.dev +8 -2
- package/src/runtime/cyberia-server/Dockerfile +9 -4
- package/src/runtime/cyberia-server/Dockerfile.dev +8 -2
- package/src/runtime/engine-cyberia/Dockerfile +25 -9
- package/src/runtime/engine-cyberia/Dockerfile.dev +25 -9
- package/src/runtime/engine-cyberia/Dockerfile.test +4 -4
- package/src/runtime/engine-cyberia/docker-compose.yml +7 -7
- package/src/runtime/express/Express.js +32 -27
- package/src/runtime/lampp/Lampp.js +22 -70
- package/src/runtime/nginx/Nginx.js +1 -1
- package/src/runtime/wp/Wp.js +16 -48
- package/src/server/{catalog.js → build/catalog.js} +15 -5
- package/src/server/build/coverage.js +117 -0
- package/src/server/build/execution.js +402 -0
- package/src/server/build/package.js +465 -0
- package/src/server/build/testing.js +528 -0
- package/src/server/{dns.js → network/dns.js} +144 -11
- package/src/server/{forward-proxy.js → network/forward-proxy.js} +10 -18
- package/src/server/{middlewares.js → network/middlewares.js} +3 -3
- package/src/server/network/node-capability.js +98 -0
- package/src/server/{peer.js → network/peer.js} +3 -3
- package/src/server/{proxy.js → network/proxy.js} +7 -13
- package/src/server/network/router.js +356 -0
- package/src/server/{tls.js → network/tls.js} +2 -2
- package/src/server/{underpost-compression.js → network/underpost-compression.js} +1 -1
- package/src/server/{underpost-gateway.js → network/underpost-gateway.js} +7 -7
- package/src/server/{underpost-ingress.js → network/underpost-ingress.js} +2 -2
- package/src/server/{cri.js → ops/cri.js} +2 -2
- package/src/server/{cron.js → ops/cron.js} +349 -74
- package/src/server/ops/event-notification.js +284 -0
- package/src/server/{logger.js → ops/logger.js} +108 -23
- package/src/server/ops/monitoring.js +1724 -0
- package/src/server/{systemd.js → ops/systemd.js} +55 -1
- package/src/server/{conf.js → runtime/conf.js} +513 -422
- package/src/server/runtime/config-scope.js +215 -0
- package/src/server/runtime/environment.js +149 -0
- package/src/server/{process.js → runtime/process.js} +153 -12
- package/src/server/{runtime-status.js → runtime/runtime-status.js} +155 -16
- package/src/server/{runtime.js → runtime/runtime.js} +12 -8
- package/src/server/{start.js → runtime/start.js} +128 -39
- package/src/server/{auth.js → security/auth.js} +7 -8
- package/src/server/security/container-storage.js +382 -0
- package/src/server/{crypto.js → security/crypto.js} +1 -1
- package/src/server/{selinux.js → security/selinux.js} +1 -1
- package/src/server/{backup.js → storage/backup.js} +17 -8
- package/src/server/{data-query.js → storage/data-query.js} +1 -1
- package/src/server/{downloader.js → storage/downloader.js} +2 -2
- package/src/server/storage/repository.js +68 -0
- package/src/server.js +4 -7
- package/src/ws/IoInterface.js +1 -1
- package/src/ws/IoServer.js +1 -1
- package/src/ws/core/core.ws.connection.js +1 -1
- package/src/ws/core/core.ws.emit.js +1 -1
- package/src/ws/core/core.ws.server.js +1 -1
- package/src/ws/default/default.ws.connection.js +1 -1
- package/src/ws/default/default.ws.emit.js +1 -1
- package/src/ws/default/default.ws.server.js +1 -1
- package/test/e2e/event-e2e-public-ingress-down.js +45 -0
- package/test/e2e/event-e2e-wireguard-server-down.js +38 -0
- package/test/e2e/event-e2e-wireguard-spoke-down.js +40 -0
- package/test/{api.test.js → integration/app/api.test.js} +33 -14
- package/test/integration/app/cyberia/cyberia-cli-plain-reads.test.js +30 -0
- package/test/{cyberia-instance-conf-defaults.test.js → integration/app/cyberia/cyberia-instance-conf-defaults.test.js} +1 -1
- package/test/integration/app/cyberia/cyberia-load.test.js +467 -0
- package/test/integration/app/cyberia/fallback-world-capture.test.js +253 -0
- package/test/integration/app/cyberia/object-layer-item-id.test.js +327 -0
- package/test/{shape-generator.test.js → integration/app/cyberia/shape-generator.test.js} +1 -1
- package/test/integration/infra/1-security/config-scope.test.js +305 -0
- package/test/integration/infra/1-security/container-storage.test.js +356 -0
- package/test/integration/infra/1-security/in-pod-cli-surface.test.js +86 -0
- package/test/integration/infra/1-security/secret-onboarding.test.js +930 -0
- package/test/{selinux.test.js → integration/infra/1-security/selinux.test.js} +2 -4
- package/test/{sops-secret-store.test.js → integration/infra/1-security/sops-secret-store.test.js} +415 -61
- package/test/integration/infra/1-security/systemd-service.test.js +70 -0
- package/test/integration/infra/1-security/underpost-config-secret.test.js +367 -0
- package/test/integration/infra/2-network/dns-firewall.test.js +566 -0
- package/test/integration/infra/2-network/node-capability.test.js +182 -0
- package/test/integration/infra/2-network/wireguard-cli.test.js +1163 -0
- package/test/{wireguard-edge.test.js → integration/infra/2-network/wireguard-edge.test.js} +609 -55
- package/test/{cluster-instances.test.js → integration/infra/3-cluster/cluster-instances.test.js} +11 -15
- package/test/{deploy-node-placement.test.js → integration/infra/3-cluster/deploy-node-placement.test.js} +3 -3
- package/test/integration/infra/3-cluster/docker-compose-stack.test.js +313 -0
- package/test/integration/infra/4-ingress/deploy-routes.test.js +379 -0
- package/test/integration/infra/4-ingress/gateway-static-assets.test.js +453 -0
- package/test/{instance-traffic-plan.test.js → integration/infra/4-ingress/instance-traffic-plan.test.js} +10 -6
- package/test/{underpost-gateway.test.js → integration/infra/4-ingress/underpost-gateway.test.js} +6 -6
- package/test/{underpost-ingress.test.js → integration/infra/4-ingress/underpost-ingress.test.js} +4 -4
- package/test/integration/infra/5-observability/cron-jobs.test.js +652 -0
- package/test/{deploy-monitor.test.js → integration/infra/5-observability/deploy-monitor.test.js} +29 -31
- package/test/integration/infra/5-observability/event-notification.test.js +197 -0
- package/test/integration/infra/5-observability/event-remediation.test.js +502 -0
- package/test/integration/infra/5-observability/event-targets.test.js +1174 -0
- package/test/integration/infra/5-observability/monitoring-stack.test.js +902 -0
- package/test/support/shell-harness.js +73 -0
- package/test/unit/build-template.test.js +97 -0
- package/test/unit/build-workflow-offline.test.js +132 -0
- package/test/unit/catalog.test.js +71 -0
- package/test/unit/client-build-docs.test.js +334 -0
- package/test/unit/conf-loading.test.js +303 -0
- package/test/unit/conf-resolution.test.js +979 -0
- package/test/unit/coverage-artifact.test.js +130 -0
- package/test/{crypto.test.js → unit/crypto.test.js} +1 -1
- package/test/unit/deploy-env-resolution.test.js +38 -0
- package/test/unit/deploy-log-table.test.js +447 -0
- package/test/unit/execution-profiles.test.js +219 -0
- package/test/unit/fleet-sync-source.test.js +149 -0
- package/test/unit/logger-redaction.test.js +112 -0
- package/test/unit/package.test.js +403 -0
- package/test/unit/prepare-host.test.js +299 -0
- package/test/unit/process-environment.test.js +18 -0
- package/test/unit/propagation-message.test.js +78 -0
- package/test/unit/redeploy-plan.test.js +24 -0
- package/test/unit/release-bump.test.js +474 -0
- package/test/unit/ssh-output-redaction.test.js +28 -0
- package/test/unit/start-options.test.js +46 -0
- package/test/unit/test-tiers.test.js +193 -0
- package/vitest.config.js +58 -0
- package/.nycrc +0 -9
- package/deploy/lib/logging.sh +0 -96
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +0 -48
- package/manifests/mongodb/pv-pvc.yaml +0 -59
- package/scripts/coverall-test-cyberia.sh +0 -24
- package/scripts/coverall-test.sh +0 -24
- package/scripts/link-local-underpost-cli.sh +0 -6
- package/src/api/user/user.build.js +0 -16
- package/src/cli/env.js +0 -177
- package/src/client/components/core/Blockchain.js +0 -41
- package/src/client/components/core/Blog.js +0 -9
- package/src/client/components/core/KeyboardAvoidance.js +0 -145
- package/src/client/public/default/assets/background/dark.jpg +0 -0
- package/src/client/public/default/assets/background/white0-min.jpg +0 -0
- package/src/client/public/default/assets/background/white0.jpg +0 -0
- package/src/client/public/doc/favicon.ico +0 -0
- package/src/client/public/doc/sitemap +0 -148
- package/src/server/environment.js +0 -98
package/.dockerignore
CHANGED
|
@@ -9,11 +9,14 @@ on:
|
|
|
9
9
|
jobs:
|
|
10
10
|
test:
|
|
11
11
|
name: Coverall Cyberia Test
|
|
12
|
+
# Deliberately not the engine repository: two coverage workflows on one commit
|
|
13
|
+
# are two Coveralls builds, and the badge then shows whichever landed last
|
|
14
|
+
# rather than the tree's coverage. The engine is served by coverall.ci.yml.
|
|
12
15
|
if: |
|
|
13
16
|
github.actor != 'dependabot[bot]' &&
|
|
14
|
-
(github.repository == 'underpostnet/engine' ||
|
|
15
|
-
github.repository == 'underpostnet/engine-cyberia' ||
|
|
16
|
-
github.repository == 'underpostnet/engine-
|
|
17
|
+
(github.repository == 'underpostnet/engine-cyberia' ||
|
|
18
|
+
github.repository == 'underpostnet/engine-ghpkg-cyberia' ||
|
|
19
|
+
github.repository == 'underpostnet/engine-test-cyberia')
|
|
17
20
|
runs-on: ubuntu-latest
|
|
18
21
|
container:
|
|
19
22
|
image: quay.io/rockylinux/rockylinux:9
|
|
@@ -34,11 +37,18 @@ jobs:
|
|
|
34
37
|
- name: Install project dependencies
|
|
35
38
|
run: npm install
|
|
36
39
|
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
# Set the COVERAGE_MIN repository variable to gate below the shipped
|
|
41
|
+
# default while the suite is catching up to it.
|
|
42
|
+
- name: Run tests and enforce coverage threshold
|
|
43
|
+
run: COVERAGE_ENFORCE=1 node bin test unit,infra,app,cyberia
|
|
44
|
+
env:
|
|
45
|
+
COVERAGE_MIN: ${{ vars.COVERAGE_MIN }}
|
|
39
46
|
|
|
47
|
+
# Stored even when the threshold step failed — that step still fails the
|
|
48
|
+
# job, but without the report the badge freezes at the last passing build.
|
|
40
49
|
- name: Store coverage report
|
|
41
|
-
|
|
50
|
+
if: '!cancelled()'
|
|
51
|
+
uses: actions/upload-artifact@v7
|
|
42
52
|
with:
|
|
43
53
|
name: coverall-cyberia-lcov
|
|
44
54
|
path: ./coverage/lcov.info
|
|
@@ -47,18 +57,23 @@ jobs:
|
|
|
47
57
|
upload:
|
|
48
58
|
name: Upload Cyberia Coverage to Coveralls
|
|
49
59
|
needs: test
|
|
60
|
+
# Host runner, not the Rocky container the suite runs in: every step of the
|
|
61
|
+
# Coveralls action declares `shell: bash`, which the runner execs inside the
|
|
62
|
+
# job container and cannot resolve there.
|
|
50
63
|
if: |
|
|
64
|
+
!cancelled() &&
|
|
51
65
|
github.actor != 'dependabot[bot]' &&
|
|
52
|
-
(github.repository == 'underpostnet/engine' ||
|
|
53
|
-
github.repository == 'underpostnet/engine-cyberia' ||
|
|
54
|
-
github.repository == 'underpostnet/engine-
|
|
66
|
+
(github.repository == 'underpostnet/engine-cyberia' ||
|
|
67
|
+
github.repository == 'underpostnet/engine-ghpkg-cyberia' ||
|
|
68
|
+
github.repository == 'underpostnet/engine-test-cyberia')
|
|
55
69
|
runs-on: ubuntu-latest
|
|
56
70
|
steps:
|
|
71
|
+
# Coveralls reads the commit and branch metadata from the checkout.
|
|
57
72
|
- name: Clone repository
|
|
58
73
|
uses: actions/checkout@v7
|
|
59
74
|
|
|
60
75
|
- name: Restore coverage report
|
|
61
|
-
uses: actions/download-artifact@
|
|
76
|
+
uses: actions/download-artifact@v8
|
|
62
77
|
with:
|
|
63
78
|
name: coverall-cyberia-lcov
|
|
64
79
|
path: ./coverage
|
|
@@ -68,16 +83,21 @@ jobs:
|
|
|
68
83
|
with:
|
|
69
84
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
70
85
|
file: ./coverage/lcov.info
|
|
71
|
-
|
|
86
|
+
format: lcov
|
|
72
87
|
parallel: true
|
|
88
|
+
fail-on-error: true
|
|
73
89
|
|
|
74
90
|
finish:
|
|
91
|
+
name: Finish Cyberia Coveralls build
|
|
75
92
|
needs: upload
|
|
93
|
+
# The build stays open until this webhook lands, so it runs on any upload
|
|
94
|
+
# outcome rather than leaving a half-reported build behind.
|
|
76
95
|
if: |
|
|
96
|
+
!cancelled() &&
|
|
77
97
|
github.actor != 'dependabot[bot]' &&
|
|
78
|
-
(github.repository == 'underpostnet/engine' ||
|
|
79
|
-
github.repository == 'underpostnet/engine-cyberia' ||
|
|
80
|
-
github.repository == 'underpostnet/engine-
|
|
98
|
+
(github.repository == 'underpostnet/engine-cyberia' ||
|
|
99
|
+
github.repository == 'underpostnet/engine-ghpkg-cyberia' ||
|
|
100
|
+
github.repository == 'underpostnet/engine-test-cyberia')
|
|
81
101
|
runs-on: ubuntu-latest
|
|
82
102
|
steps:
|
|
83
103
|
- name: Notify Coveralls Finished
|
|
@@ -32,4 +32,9 @@ jobs:
|
|
|
32
32
|
script: |
|
|
33
33
|
set -e
|
|
34
34
|
set -o pipefail
|
|
35
|
+
# Carried across the SSH hop so the far side reports in GitHub Actions form:
|
|
36
|
+
# deploy/lib/github-actions-logging.sh folds its monitor frames into collapsed groups, and the
|
|
37
|
+
# state domain's telemetry export emits ::notice::/::error:: annotations this job
|
|
38
|
+
# surfaces. GITHUB_ACTIONS itself is a runner-local variable and does not travel.
|
|
39
|
+
export RUN_QUIET_CI=github
|
|
35
40
|
bash /home/dd/engine/deploy/cyberia-client/deploy.sh
|
|
@@ -32,4 +32,9 @@ jobs:
|
|
|
32
32
|
script: |
|
|
33
33
|
set -e
|
|
34
34
|
set -o pipefail
|
|
35
|
+
# Carried across the SSH hop so the far side reports in GitHub Actions form:
|
|
36
|
+
# deploy/lib/github-actions-logging.sh folds its monitor frames into collapsed groups, and the
|
|
37
|
+
# state domain's telemetry export emits ::notice::/::error:: annotations this job
|
|
38
|
+
# surfaces. GITHUB_ACTIONS itself is a runner-local variable and does not travel.
|
|
39
|
+
export RUN_QUIET_CI=github
|
|
35
40
|
bash /home/dd/engine/deploy/cyberia-server/deploy.sh
|
|
@@ -4,7 +4,7 @@ on:
|
|
|
4
4
|
workflow_dispatch:
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
-
UNDERPOST_VERSION: '3.3.
|
|
7
|
+
UNDERPOST_VERSION: '3.3.73'
|
|
8
8
|
|
|
9
9
|
jobs:
|
|
10
10
|
build-and-push:
|
|
@@ -34,9 +34,15 @@ jobs:
|
|
|
34
34
|
- name: Build cyberia-server SSR dashboard
|
|
35
35
|
working-directory: engine
|
|
36
36
|
run: |
|
|
37
|
-
node bin
|
|
37
|
+
node bin package dd-cyberia --install
|
|
38
38
|
node bin/cyberia run-workflow build-cyberia-404 --output-path ../assets/404/index.html
|
|
39
39
|
|
|
40
|
+
- name: Stage underpost CLI package
|
|
41
|
+
working-directory: engine
|
|
42
|
+
# Bakes the CLI into the runtime image from this checkout instead of the registry, so a
|
|
43
|
+
# starting pod never fetches it. The Dockerfiles COPY ../underpost-cli.tgz.
|
|
44
|
+
run: node bin/cyberia run-workflow stage-cli --output-path ..
|
|
45
|
+
|
|
40
46
|
- name: Set up Docker Buildx
|
|
41
47
|
uses: docker/setup-buildx-action@v4
|
|
42
48
|
|
|
@@ -65,7 +71,4 @@ jobs:
|
|
|
65
71
|
push: true
|
|
66
72
|
tags: ${{ steps.meta.outputs.tags }}
|
|
67
73
|
labels: ${{ steps.meta.outputs.labels }}
|
|
68
|
-
|
|
69
|
-
build-args: |
|
|
70
|
-
UNDERPOST_VERSION=${{ env.UNDERPOST_VERSION }}
|
|
71
74
|
BUILD_MODE=RELEASE
|
|
@@ -4,7 +4,7 @@ on:
|
|
|
4
4
|
workflow_dispatch:
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
-
UNDERPOST_VERSION: '3.3.
|
|
7
|
+
UNDERPOST_VERSION: '3.3.73'
|
|
8
8
|
|
|
9
9
|
jobs:
|
|
10
10
|
build-and-push:
|
|
@@ -34,9 +34,15 @@ jobs:
|
|
|
34
34
|
- name: Build cyberia-server SSR dashboard
|
|
35
35
|
working-directory: engine
|
|
36
36
|
run: |
|
|
37
|
-
node bin
|
|
37
|
+
node bin package dd-cyberia --install
|
|
38
38
|
node bin/cyberia run-workflow build-cyberia-404 --output-path ../assets/404/index.html
|
|
39
39
|
|
|
40
|
+
- name: Stage underpost CLI package
|
|
41
|
+
working-directory: engine
|
|
42
|
+
# Bakes the CLI into the runtime image from this checkout instead of the registry, so a
|
|
43
|
+
# starting pod never fetches it. The Dockerfiles COPY ../underpost-cli.tgz.
|
|
44
|
+
run: node bin/cyberia run-workflow stage-cli --output-path ..
|
|
45
|
+
|
|
40
46
|
- name: Set up Docker Buildx
|
|
41
47
|
uses: docker/setup-buildx-action@v4
|
|
42
48
|
|
|
@@ -66,5 +72,4 @@ jobs:
|
|
|
66
72
|
tags: ${{ steps.meta.outputs.tags }}
|
|
67
73
|
labels: ${{ steps.meta.outputs.labels }}
|
|
68
74
|
build-args: |
|
|
69
|
-
UNDERPOST_VERSION=${{ env.UNDERPOST_VERSION }}
|
|
70
75
|
BUILD_MODE=DEBUG
|
|
@@ -4,7 +4,7 @@ on:
|
|
|
4
4
|
workflow_dispatch:
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
-
UNDERPOST_VERSION: '3.3.
|
|
7
|
+
UNDERPOST_VERSION: '3.3.73'
|
|
8
8
|
|
|
9
9
|
jobs:
|
|
10
10
|
build-and-push:
|
|
@@ -34,10 +34,16 @@ jobs:
|
|
|
34
34
|
- name: Build cyberia-server SSR dashboard
|
|
35
35
|
working-directory: engine
|
|
36
36
|
run: |
|
|
37
|
-
node bin
|
|
37
|
+
node bin package dd-cyberia --install
|
|
38
38
|
node bin/cyberia run-workflow build-server-dashboard --output-path ../public/index.html
|
|
39
39
|
node bin/cyberia run-workflow build-cyberia-404 --output-path ../public/404/index.html
|
|
40
40
|
|
|
41
|
+
- name: Stage underpost CLI package
|
|
42
|
+
working-directory: engine
|
|
43
|
+
# Bakes the CLI into the runtime image from this checkout instead of the registry, so a
|
|
44
|
+
# starting pod never fetches it. The Dockerfiles COPY ../underpost-cli.tgz.
|
|
45
|
+
run: node bin/cyberia run-workflow stage-cli --output-path ..
|
|
46
|
+
|
|
41
47
|
- name: Set up Docker Buildx
|
|
42
48
|
uses: docker/setup-buildx-action@v4
|
|
43
49
|
|
|
@@ -66,6 +72,3 @@ jobs:
|
|
|
66
72
|
push: true
|
|
67
73
|
tags: ${{ steps.meta.outputs.tags }}
|
|
68
74
|
labels: ${{ steps.meta.outputs.labels }}
|
|
69
|
-
|
|
70
|
-
build-args: |
|
|
71
|
-
UNDERPOST_VERSION=${{ env.UNDERPOST_VERSION }}
|
|
@@ -4,7 +4,7 @@ on:
|
|
|
4
4
|
workflow_dispatch:
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
-
UNDERPOST_VERSION: '3.3.
|
|
7
|
+
UNDERPOST_VERSION: '3.3.73'
|
|
8
8
|
|
|
9
9
|
jobs:
|
|
10
10
|
build-and-push:
|
|
@@ -34,10 +34,16 @@ jobs:
|
|
|
34
34
|
- name: Build cyberia-server SSR dashboard (dev)
|
|
35
35
|
working-directory: engine
|
|
36
36
|
run: |
|
|
37
|
-
node bin
|
|
37
|
+
node bin package dd-cyberia --install
|
|
38
38
|
node bin/cyberia run-workflow build-server-dashboard --dev --output-path ../public/index.html
|
|
39
39
|
node bin/cyberia run-workflow build-cyberia-404 --output-path ../public/404/index.html
|
|
40
40
|
|
|
41
|
+
- name: Stage underpost CLI package
|
|
42
|
+
working-directory: engine
|
|
43
|
+
# Bakes the CLI into the runtime image from this checkout instead of the registry, so a
|
|
44
|
+
# starting pod never fetches it. The Dockerfiles COPY ../underpost-cli.tgz.
|
|
45
|
+
run: node bin/cyberia run-workflow stage-cli --output-path ..
|
|
46
|
+
|
|
41
47
|
- name: Set up Docker Buildx
|
|
42
48
|
uses: docker/setup-buildx-action@v4
|
|
43
49
|
|
|
@@ -66,6 +72,3 @@ jobs:
|
|
|
66
72
|
push: true
|
|
67
73
|
tags: ${{ steps.meta.outputs.tags }}
|
|
68
74
|
labels: ${{ steps.meta.outputs.labels }}
|
|
69
|
-
|
|
70
|
-
build-args: |
|
|
71
|
-
UNDERPOST_VERSION=${{ env.UNDERPOST_VERSION }}
|
|
@@ -4,7 +4,7 @@ on:
|
|
|
4
4
|
workflow_dispatch:
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
-
UNDERPOST_VERSION: '3.3.
|
|
7
|
+
UNDERPOST_VERSION: '3.3.73'
|
|
8
8
|
|
|
9
9
|
jobs:
|
|
10
10
|
build-and-push:
|
|
@@ -16,6 +16,20 @@ jobs:
|
|
|
16
16
|
steps:
|
|
17
17
|
- uses: actions/checkout@v7
|
|
18
18
|
|
|
19
|
+
- name: Setup Node.js
|
|
20
|
+
uses: actions/setup-node@v7
|
|
21
|
+
with:
|
|
22
|
+
node-version: '24.x'
|
|
23
|
+
|
|
24
|
+
- name: Install engine dependencies
|
|
25
|
+
run: npm ci --ignore-scripts
|
|
26
|
+
|
|
27
|
+
- name: Stage underpost CLI package
|
|
28
|
+
# Bakes the CLI into the image from this checkout instead of the registry, so a starting
|
|
29
|
+
# pod never fetches it. The Dockerfiles COPY underpost-cli.tgz from the build context,
|
|
30
|
+
# which for this workflow is the repository root.
|
|
31
|
+
run: node bin/cyberia run-workflow stage-cli --output-path .
|
|
32
|
+
|
|
19
33
|
- name: Set up Docker Buildx
|
|
20
34
|
uses: docker/setup-buildx-action@v4
|
|
21
35
|
|
|
@@ -4,7 +4,7 @@ on:
|
|
|
4
4
|
workflow_dispatch:
|
|
5
5
|
|
|
6
6
|
env:
|
|
7
|
-
UNDERPOST_VERSION: '3.3.
|
|
7
|
+
UNDERPOST_VERSION: '3.3.73'
|
|
8
8
|
|
|
9
9
|
jobs:
|
|
10
10
|
build-and-push:
|
|
@@ -16,6 +16,20 @@ jobs:
|
|
|
16
16
|
steps:
|
|
17
17
|
- uses: actions/checkout@v7
|
|
18
18
|
|
|
19
|
+
- name: Setup Node.js
|
|
20
|
+
uses: actions/setup-node@v7
|
|
21
|
+
with:
|
|
22
|
+
node-version: '24.x'
|
|
23
|
+
|
|
24
|
+
- name: Install engine dependencies
|
|
25
|
+
run: npm ci --ignore-scripts
|
|
26
|
+
|
|
27
|
+
- name: Stage underpost CLI package
|
|
28
|
+
# Bakes the CLI into the image from this checkout instead of the registry, so a starting
|
|
29
|
+
# pod never fetches it. The Dockerfiles COPY underpost-cli.tgz from the build context,
|
|
30
|
+
# which for this workflow is the repository root.
|
|
31
|
+
run: node bin/cyberia run-workflow stage-cli --output-path .
|
|
32
|
+
|
|
19
33
|
- name: Set up Docker Buildx
|
|
20
34
|
uses: docker/setup-buildx-action@v4
|
|
21
35
|
|
|
@@ -40,6 +40,7 @@ jobs:
|
|
|
40
40
|
script: |
|
|
41
41
|
set -e
|
|
42
42
|
set -o pipefail
|
|
43
|
+
export RUN_QUIET_CI=github
|
|
43
44
|
bash /home/dd/engine/deploy/dd-cyberia/deploy.sh
|
|
44
45
|
sync-and-deploy:
|
|
45
46
|
if: github.event.inputs.job == 'sync-and-deploy'
|
|
@@ -65,6 +66,7 @@ jobs:
|
|
|
65
66
|
script: |
|
|
66
67
|
set -e
|
|
67
68
|
set -o pipefail
|
|
69
|
+
export RUN_QUIET_CI=github
|
|
68
70
|
bash /home/dd/engine/deploy/dd-cyberia/sync-deploy.sh
|
|
69
71
|
init:
|
|
70
72
|
if: github.event.inputs.job == 'init'
|
|
@@ -90,4 +92,5 @@ jobs:
|
|
|
90
92
|
script: |
|
|
91
93
|
set -e
|
|
92
94
|
set -o pipefail
|
|
95
|
+
export RUN_QUIET_CI=github
|
|
93
96
|
bash /home/dd/engine/deploy/dd-cyberia/init.sh
|
|
@@ -62,13 +62,12 @@ jobs:
|
|
|
62
62
|
env:
|
|
63
63
|
GITHUB_TOKEN: ${{ secrets.GIT_AUTH_TOKEN }}
|
|
64
64
|
GITHUB_USERNAME: ${{ github.repository_owner }}
|
|
65
|
+
# Never interpolated into the script: the propagated payload is multi-line and a shell
|
|
66
|
+
# expansion would corrupt entries holding `$` and execute anything in `$(...)`.
|
|
67
|
+
PROPAGATED_MESSAGE: ${{ github.event.inputs.message }}
|
|
65
68
|
run: |
|
|
66
69
|
cd .. && node engine/bin clone underpostnet/pwa-microservices-template
|
|
67
|
-
|
|
68
|
-
LAST_COMMIT_MESSAGE="${{ github.event.inputs.message }}"
|
|
69
|
-
else
|
|
70
|
-
LAST_COMMIT_MESSAGE=$(cd engine && node bin cmt --changelog-msg --from-n-commit 1 --changelog-no-hash 2>/dev/null || echo "")
|
|
71
|
-
fi
|
|
70
|
+
LAST_COMMIT_MESSAGE=$(cd engine && node bin cmt --propagate-msg 2>/dev/null || echo "")
|
|
72
71
|
SHOULD_CD="${{ github.event.inputs.sync }}"
|
|
73
72
|
DEPLOY_TYPE="${{ github.event.inputs.deploy_type }}"
|
|
74
73
|
if [ -z "$LAST_COMMIT_MESSAGE" ]; then
|
|
@@ -48,20 +48,30 @@ jobs:
|
|
|
48
48
|
curl -fsSL https://rpm.nodesource.com/setup_24.x | bash -
|
|
49
49
|
dnf install nodejs -y
|
|
50
50
|
|
|
51
|
-
- name: Capture commit message
|
|
52
|
-
run: |
|
|
53
|
-
FULL_MSG="${{ github.event.head_commit.message }}"
|
|
54
|
-
LAST_COMMIT_MESSAGE="${FULL_MSG:-update package}"
|
|
55
|
-
echo "LAST_COMMIT_MESSAGE<<EOF" >> $GITHUB_ENV
|
|
56
|
-
echo "$LAST_COMMIT_MESSAGE" >> $GITHUB_ENV
|
|
57
|
-
echo "EOF" >> $GITHUB_ENV
|
|
58
|
-
echo "[INFO] Commit message: $LAST_COMMIT_MESSAGE"
|
|
59
|
-
|
|
60
51
|
- name: Install dependencies and set repo configuration
|
|
61
52
|
run: |
|
|
62
53
|
npm install
|
|
63
|
-
node ./bin
|
|
64
|
-
node ./bin
|
|
54
|
+
node ./bin package --rename @underpostnet/underpost
|
|
55
|
+
node ./bin package --set-repo underpostnet/pwa-microservices-template-ghpkg
|
|
56
|
+
|
|
57
|
+
# Placed after the install because it resolves the payload through the CLI, which needs the
|
|
58
|
+
# dependencies. The push that triggers this job carries the payload the engine propagated.
|
|
59
|
+
- name: Capture commit message
|
|
60
|
+
env:
|
|
61
|
+
# Never interpolated into the script: the propagated payload is multi-line and a shell
|
|
62
|
+
# expansion would corrupt entries holding `$` and execute anything in `$(...)`.
|
|
63
|
+
PROPAGATED_MESSAGE: ${{ github.event.head_commit.message }}
|
|
64
|
+
run: |
|
|
65
|
+
LAST_COMMIT_MESSAGE=$(node ./bin cmt --propagate-msg 2>/dev/null || echo "")
|
|
66
|
+
if [ -z "$LAST_COMMIT_MESSAGE" ]; then
|
|
67
|
+
LAST_COMMIT_MESSAGE="update package"
|
|
68
|
+
fi
|
|
69
|
+
{
|
|
70
|
+
echo "LAST_COMMIT_MESSAGE<<PROPAGATION_EOF"
|
|
71
|
+
echo "$LAST_COMMIT_MESSAGE"
|
|
72
|
+
echo "PROPAGATION_EOF"
|
|
73
|
+
} >> $GITHUB_ENV
|
|
74
|
+
echo "[INFO] Commit message: $LAST_COMMIT_MESSAGE"
|
|
65
75
|
|
|
66
76
|
- name: Set git global credentials
|
|
67
77
|
run: |
|
|
@@ -124,15 +134,20 @@ jobs:
|
|
|
124
134
|
echo "[INFO] Canonical github package repo: underpostnet/engine-ghpkg-$CONF_ID"
|
|
125
135
|
|
|
126
136
|
- name: Capture commit message
|
|
137
|
+
env:
|
|
138
|
+
# Never interpolated into the script: the propagated payload is multi-line and a shell
|
|
139
|
+
# expansion would corrupt entries holding `$` and execute anything in `$(...)`.
|
|
140
|
+
PROPAGATED_MESSAGE: ${{ github.event.inputs.message }}
|
|
127
141
|
run: |
|
|
128
|
-
|
|
129
|
-
if [ -z "$
|
|
130
|
-
|
|
142
|
+
LAST_COMMIT_MESSAGE=$(node bin cmt --propagate-msg 2>/dev/null || echo "")
|
|
143
|
+
if [ -z "$LAST_COMMIT_MESSAGE" ]; then
|
|
144
|
+
LAST_COMMIT_MESSAGE="Update canonical github package repo"
|
|
131
145
|
fi
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
146
|
+
{
|
|
147
|
+
echo "LAST_COMMIT_MESSAGE<<PROPAGATION_EOF"
|
|
148
|
+
echo "$LAST_COMMIT_MESSAGE"
|
|
149
|
+
echo "PROPAGATION_EOF"
|
|
150
|
+
} >> $GITHUB_ENV
|
|
136
151
|
echo "[INFO] Commit message: $LAST_COMMIT_MESSAGE"
|
|
137
152
|
|
|
138
153
|
- name: Set git global credentials
|
|
@@ -152,8 +167,8 @@ jobs:
|
|
|
152
167
|
cd engine-$CONF_ID
|
|
153
168
|
rm -rf ./.git
|
|
154
169
|
mv ../$GHPKG_REPO.git ./.git
|
|
155
|
-
node ../engine/bin
|
|
156
|
-
node ../engine/bin
|
|
170
|
+
node ../engine/bin package --rename "$PACKAGE_NAME"
|
|
171
|
+
node ../engine/bin package --set-repo underpostnet/$GHPKG_REPO
|
|
157
172
|
git init
|
|
158
173
|
git config user.name 'underpostnet'
|
|
159
174
|
git config user.email 'development@underpost.net'
|
|
@@ -5,13 +5,10 @@ name: CI | Hardhat
|
|
|
5
5
|
|
|
6
6
|
on:
|
|
7
7
|
push:
|
|
8
|
-
|
|
9
|
-
- 'hardhat/**'
|
|
10
|
-
- '.github/workflows/hardhat.ci.yml'
|
|
8
|
+
branches: ['master', 'main']
|
|
11
9
|
pull_request:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- '.github/workflows/hardhat.ci.yml'
|
|
10
|
+
branches: ['master', 'main']
|
|
11
|
+
|
|
15
12
|
workflow_dispatch:
|
|
16
13
|
|
|
17
14
|
permissions:
|
|
@@ -20,6 +17,11 @@ permissions:
|
|
|
20
17
|
jobs:
|
|
21
18
|
build-and-test:
|
|
22
19
|
name: Compile, Test & Audit
|
|
20
|
+
if: |
|
|
21
|
+
github.actor != 'dependabot[bot]' &&
|
|
22
|
+
(github.repository == 'underpostnet/engine-cyberia' ||
|
|
23
|
+
github.repository == 'underpostnet/engine-ghpkg-cyberia' ||
|
|
24
|
+
github.repository == 'underpostnet/engine-test-cyberia')
|
|
23
25
|
runs-on: ubuntu-latest
|
|
24
26
|
defaults:
|
|
25
27
|
run:
|
|
@@ -59,18 +61,17 @@ jobs:
|
|
|
59
61
|
|
|
60
62
|
# ── Compile ──────────────────────────────────────────────────────────
|
|
61
63
|
- name: Compile Solidity contracts
|
|
62
|
-
run:
|
|
64
|
+
run: npm run compile
|
|
63
65
|
|
|
64
66
|
# ── Test ─────────────────────────────────────────────────────────────
|
|
65
67
|
- name: Run tests
|
|
66
|
-
run:
|
|
68
|
+
run: npm test
|
|
67
69
|
env:
|
|
68
70
|
REPORT_GAS: 'true'
|
|
69
71
|
|
|
70
|
-
# ── Coverage
|
|
72
|
+
# ── Coverage ─────────────────────────────────────────────────────────
|
|
71
73
|
- name: Solidity coverage
|
|
72
|
-
|
|
73
|
-
run: npx hardhat coverage
|
|
74
|
+
run: npm run coverage
|
|
74
75
|
|
|
75
76
|
# ── Lockfile integrity check ─────────────────────────────────────────
|
|
76
77
|
# Fail if package-lock.json is out of sync with package.json
|
|
@@ -51,26 +51,28 @@ jobs:
|
|
|
51
51
|
curl -fsSL https://rpm.nodesource.com/setup_24.x | bash -
|
|
52
52
|
dnf install nodejs -y
|
|
53
53
|
|
|
54
|
+
- name: Install dependencies
|
|
55
|
+
run: npm install
|
|
56
|
+
|
|
57
|
+
# Placed after the install because it resolves the payload through the CLI, which needs the
|
|
58
|
+
# dependencies. The dispatch input wins; a push carries its own commit message instead.
|
|
54
59
|
- name: Capture commit message
|
|
60
|
+
env:
|
|
61
|
+
# Never interpolated into the script: the propagated payload is multi-line and a shell
|
|
62
|
+
# expansion would corrupt entries holding `$` and execute anything in `$(...)`.
|
|
63
|
+
PROPAGATED_MESSAGE: ${{ github.event.inputs.message || github.event.head_commit.message }}
|
|
55
64
|
run: |
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
LAST_COMMIT_MESSAGE="Update repository"
|
|
60
|
-
fi
|
|
61
|
-
else
|
|
62
|
-
FULL_MSG="${{ github.event.head_commit.message }}"
|
|
63
|
-
REST="$(echo "$FULL_MSG" | tail -n +2 | awk 'NR==1{first=$0; has_first=1; next} NR==2{print first " " $0; has_first=0; next} {print} END{if(has_first) print first}')"
|
|
64
|
-
LAST_COMMIT_MESSAGE="${REST:-$FULL_MSG}"
|
|
65
|
+
LAST_COMMIT_MESSAGE=$(node bin cmt --propagate-msg 2>/dev/null || echo "")
|
|
66
|
+
if [ -z "$LAST_COMMIT_MESSAGE" ]; then
|
|
67
|
+
LAST_COMMIT_MESSAGE="Update repository"
|
|
65
68
|
fi
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
{
|
|
70
|
+
echo "LAST_COMMIT_MESSAGE<<PROPAGATION_EOF"
|
|
71
|
+
echo "$LAST_COMMIT_MESSAGE"
|
|
72
|
+
echo "PROPAGATION_EOF"
|
|
73
|
+
} >> $GITHUB_ENV
|
|
69
74
|
echo "[INFO] Extracted payload: $LAST_COMMIT_MESSAGE"
|
|
70
75
|
|
|
71
|
-
- name: Install dependencies
|
|
72
|
-
run: npm install
|
|
73
|
-
|
|
74
76
|
- name: Set git global credentials
|
|
75
77
|
run: |
|
|
76
78
|
git config --global --add safe.directory '*'
|
package/.prettierignore
CHANGED
package/AGENTS.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
## Commenting policy
|
|
2
|
+
|
|
3
|
+
- Keep code comments minimal, no redundant or lengthy comment.
|
|
4
|
+
- Prefer clear names, small functions, and extracted helpers over explanatory comments.
|
|
5
|
+
- Comment only non-obvious intent: invariants, protocol boundaries, security constraints, cross-process contracts, or temporary workarounds.
|
|
6
|
+
- Remove stale, redundant, or narrative comments during refactors.
|
|
7
|
+
- Use `TODO:` only for concrete, actionable follow-ups.
|
|
8
|
+
|
|
9
|
+
## Consistency guardrails
|
|
10
|
+
|
|
11
|
+
- Keep one source of truth for config, deploy IDs, runtime selection, startup order, and generated assets.
|
|
12
|
+
- Reuse existing helpers, conventions, and resolution logic instead of introducing parallel implementations.
|
|
13
|
+
- Do not duplicate parsing, environment resolution, or path normalization.
|
|
14
|
+
- Keep generated artifacts read-only outputs; never hand-edit them.
|
|
15
|
+
- No dead code, no legacy code, and no legacy concepts.
|
|
16
|
+
- Keep responsibilities explicit and avoid introducing abstractions without a concrete ownership boundary.
|
|
17
|
+
|
|
18
|
+
## Host, LXD, and orchestration safety
|
|
19
|
+
|
|
20
|
+
- Treat every host-level change as idempotent, reversible, and explicit.
|
|
21
|
+
- Validate target paths, permissions, ownership, mounts, users, groups, namespaces, and volumes before mutating.
|
|
22
|
+
- Never assume host resources already exist.
|
|
23
|
+
- Prefer dry-run, guarded cleanup, and rollback paths over destructive operations.
|
|
24
|
+
- Protect host-mounted volumes and VM bootstrap flows from partial configuration.
|
|
25
|
+
- Make orchestration safe to interrupt and safe to rerun.
|
|
26
|
+
|
|
27
|
+
## Testing and verification
|
|
28
|
+
|
|
29
|
+
- When changing orchestration, bootstrap, config loading, or runtime startup order, add or update focused tests for parsing, validation, and selection logic.
|
|
30
|
+
- For live-service tests, document the required runtime environment and keep execution deterministic.
|
|
31
|
+
- Prefer small, targeted verification over broad manual validation.
|
|
32
|
+
- Verify changed behavior at the closest layer that owns it.
|
|
33
|
+
|
|
34
|
+
## Cyberia architecture boundaries
|
|
35
|
+
|
|
36
|
+
- `engine-cyberia` owns content, validation, persistence, gRPC/REST data services, and asset metadata.
|
|
37
|
+
- `cyberia-server` owns authoritative real-time simulation and tick processing.
|
|
38
|
+
- `cyberia-client` owns rendering, input, prediction, reconciliation, and presentation.
|
|
39
|
+
- Keep authoritative simulation out of the client.
|
|
40
|
+
- Keep content-authority and persistence concerns out of the Go runtime.
|
|
41
|
+
- Preserve these boundaries when introducing new flows, APIs, or shared helpers.
|
|
42
|
+
|
|
43
|
+
## Documentation hot paths
|
|
44
|
+
|
|
45
|
+
- `src/client/public/nexodev/docs/references/` — Underpost CLI, cluster, baremetal, DB, cron, image, LXD, SSH, and static-generator references.
|
|
46
|
+
- `src/client/public/cyberia-docs/` — Cyberia architecture, server, client, CLI, action, quest, economy, whitepaper, and roadmap documentation.
|
|
47
|
+
- `engine-private/` is private. Do not assume it exists locally; treat references to it as external/private context.
|