cyberia 3.2.5 → 3.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/engine-cyberia.cd.yml +2 -2
- package/.github/workflows/release.cd.yml +1 -2
- package/CHANGELOG.md +351 -1
- package/CLI-HELP.md +40 -13
- package/Dockerfile +0 -4
- package/README.md +242 -497
- package/bin/build.js +19 -5
- package/bin/cyberia.js +1149 -240
- package/bin/deploy.js +570 -1
- package/bin/file.js +6 -0
- package/bin/index.js +1149 -240
- package/bin/vs.js +1 -1
- package/conf.js +67 -89
- package/deployment.yaml +4 -222
- package/hardhat/package-lock.json +32 -32
- package/hardhat/package.json +3 -3
- package/jsconfig.json +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -2
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +2 -2
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +4 -222
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +10 -118
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
- package/manifests/deployment/dd-test-development/deployment.yaml +136 -66
- package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
- package/package.json +23 -14
- package/proxy.yaml +10 -118
- package/scripts/k3s-node-setup.sh +2 -2
- package/scripts/nat-iptables.sh +103 -18
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +18 -18
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +7 -14
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +76 -21
- package/src/api/core/core.controller.js +10 -10
- package/src/api/core/core.service.js +10 -10
- package/src/api/crypto/crypto.controller.js +8 -8
- package/src/api/crypto/crypto.service.js +8 -8
- package/src/api/cyberia-action/cyberia-action.controller.js +74 -0
- package/src/api/cyberia-action/cyberia-action.model.js +87 -0
- package/src/api/cyberia-action/cyberia-action.router.js +27 -0
- package/src/api/cyberia-action/cyberia-action.service.js +42 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +13 -13
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +11 -11
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +2 -2
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +16 -16
- package/src/api/cyberia-entity/cyberia-entity.controller.js +10 -10
- package/src/api/cyberia-entity/cyberia-entity.service.js +10 -10
- package/src/api/cyberia-instance/cyberia-fallback-world.js +19 -209
- package/src/api/cyberia-instance/cyberia-instance.controller.js +14 -14
- package/src/api/cyberia-instance/cyberia-instance.model.js +3 -0
- package/src/api/cyberia-instance/cyberia-instance.service.js +22 -57
- package/src/api/cyberia-instance/cyberia-portal-connector.js +20 -246
- package/src/api/cyberia-instance/cyberia-world-generator.js +505 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +10 -10
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +216 -55
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +4 -1
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +18 -14
- package/src/api/cyberia-map/cyberia-map.controller.js +10 -10
- package/src/api/cyberia-map/cyberia-map.service.js +10 -10
- package/src/api/cyberia-quest/cyberia-quest.controller.js +74 -0
- package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
- package/src/api/cyberia-quest/cyberia-quest.router.js +27 -0
- package/src/api/cyberia-quest/cyberia-quest.service.js +42 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +74 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +27 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
- package/src/api/default/default.controller.js +10 -10
- package/src/api/default/default.service.js +10 -10
- package/src/api/document/document.controller.js +12 -12
- package/src/api/document/document.model.js +10 -16
- package/src/api/file/file.controller.js +8 -8
- package/src/api/file/file.model.js +10 -10
- package/src/api/file/file.service.js +36 -36
- package/src/api/instance/instance.controller.js +10 -10
- package/src/api/instance/instance.model.js +4 -10
- package/src/api/instance/instance.service.js +10 -10
- package/src/api/ipfs/ipfs.controller.js +12 -12
- package/src/api/ipfs/ipfs.model.js +4 -13
- package/src/api/ipfs/ipfs.service.js +14 -28
- package/src/api/object-layer/object-layer.controller.js +12 -12
- package/src/api/object-layer/object-layer.model.js +4 -17
- package/src/api/object-layer/object-layer.service.js +12 -12
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +10 -10
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +6 -16
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +18 -14
- package/src/api/test/test.controller.js +8 -8
- package/src/api/test/test.service.js +8 -8
- package/src/api/user/guest.service.js +99 -0
- package/src/api/user/user.controller.js +6 -6
- package/src/api/user/user.model.js +8 -13
- package/src/api/user/user.service.js +3 -20
- package/src/cli/cluster.js +61 -14
- package/src/cli/db.js +47 -2
- package/src/cli/deploy.js +67 -35
- package/src/cli/fs.js +79 -8
- package/src/cli/image.js +43 -1
- package/src/cli/index.js +26 -1
- package/src/cli/release.js +57 -1
- package/src/cli/repository.js +69 -31
- package/src/cli/run.js +415 -36
- package/src/cli/ssh.js +1 -1
- package/src/cli/static.js +43 -115
- package/src/client/Cryptokoyn.index.js +18 -21
- package/src/client/CyberiaPortal.index.js +19 -23
- package/src/client/Default.index.js +21 -33
- package/src/client/Itemledger.index.js +20 -26
- package/src/client/Underpost.index.js +19 -23
- package/src/client/components/core/404.js +4 -4
- package/src/client/components/core/500.js +4 -4
- package/src/client/components/core/Account.js +73 -60
- package/src/client/components/core/AgGrid.js +23 -33
- package/src/client/components/core/Alert.js +12 -13
- package/src/client/components/core/AppStore.js +1 -1
- package/src/client/components/core/Auth.js +35 -37
- package/src/client/components/core/Badge.js +7 -13
- package/src/client/components/core/BtnIcon.js +15 -17
- package/src/client/components/core/CalendarCore.js +42 -63
- package/src/client/components/core/Chat.js +13 -15
- package/src/client/components/core/ClientEvents.js +87 -0
- package/src/client/components/core/ColorPaletteElement.js +309 -0
- package/src/client/components/core/Content.js +17 -14
- package/src/client/components/core/Css.js +15 -71
- package/src/client/components/core/CssCore.js +12 -16
- package/src/client/components/core/D3Chart.js +4 -4
- package/src/client/components/core/Docs.js +64 -91
- package/src/client/components/core/DropDown.js +69 -91
- package/src/client/components/core/EventBus.js +92 -0
- package/src/client/components/core/EventsUI.js +14 -17
- package/src/client/components/core/FileExplorer.js +96 -228
- package/src/client/components/core/FullScreen.js +47 -75
- package/src/client/components/core/Input.js +24 -69
- package/src/client/components/core/Keyboard.js +25 -18
- package/src/client/components/core/KeyboardAvoidance.js +145 -0
- package/src/client/components/core/LoadingAnimation.js +25 -31
- package/src/client/components/core/LogIn.js +41 -41
- package/src/client/components/core/LogOut.js +23 -14
- package/src/client/components/core/Modal.js +462 -178
- package/src/client/components/core/NotificationManager.js +14 -18
- package/src/client/components/core/Panel.js +54 -50
- package/src/client/components/core/PanelForm.js +25 -125
- package/src/client/components/core/Polyhedron.js +110 -214
- package/src/client/components/core/PublicProfile.js +39 -32
- package/src/client/components/core/Recover.js +48 -44
- package/src/client/components/core/Responsive.js +88 -32
- package/src/client/components/core/RichText.js +9 -18
- package/src/client/components/core/Router.js +24 -3
- package/src/client/components/core/SearchBox.js +37 -37
- package/src/client/components/core/SignUp.js +39 -30
- package/src/client/components/core/SocketIo.js +31 -2
- package/src/client/components/core/SocketIoHandler.js +6 -6
- package/src/client/components/core/ToggleSwitch.js +8 -20
- package/src/client/components/core/ToolTip.js +5 -17
- package/src/client/components/core/Translate.js +56 -59
- package/src/client/components/core/Validator.js +26 -16
- package/src/client/components/core/Wallet.js +15 -26
- package/src/client/components/core/Worker.js +163 -27
- package/src/client/components/core/windowGetDimensions.js +7 -7
- package/src/client/components/cryptokoyn/{MenuCryptokoyn.js → AppShellCryptokoyn.js} +57 -57
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +15 -15
- package/src/client/components/cryptokoyn/LogInCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +4 -4
- package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +6 -4
- package/src/client/components/cyberia/InstanceEngineCyberia.js +141 -60
- package/src/client/components/cyberia/MapEngineCyberia.js +691 -214
- package/src/client/components/cyberia/ObjectLayerEngine.js +19 -0
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +1204 -94
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +196 -298
- package/src/client/components/cyberia-portal/{MenuCyberiaPortal.js → AppShellCyberiaPortal.js} +102 -102
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +305 -61
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +15 -15
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +60 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -4
- package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
- package/src/client/components/default/CssDefault.js +12 -12
- package/src/client/components/default/LogInDefault.js +6 -4
- package/src/client/components/default/LogOutDefault.js +6 -4
- package/src/client/components/default/RouterDefault.js +47 -0
- package/src/client/components/default/SettingsDefault.js +4 -4
- package/src/client/components/default/SignUpDefault.js +6 -4
- package/src/client/components/default/TranslateDefault.js +3 -3
- package/src/client/components/itemledger/{MenuItemledger.js → AppShellItemledger.js} +57 -57
- package/src/client/components/itemledger/CssItemledger.js +15 -15
- package/src/client/components/itemledger/LogInItemledger.js +6 -4
- package/src/client/components/itemledger/LogOutItemledger.js +6 -4
- package/src/client/components/itemledger/RouterItemledger.js +38 -0
- package/src/client/components/itemledger/SettingsItemledger.js +4 -4
- package/src/client/components/itemledger/SignUpItemledger.js +6 -4
- package/src/client/components/itemledger/TranslateItemledger.js +3 -3
- package/src/client/components/underpost/{MenuUnderpost.js → AppShellUnderpost.js} +88 -88
- package/src/client/components/underpost/CssUnderpost.js +14 -14
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +4 -4
- package/src/client/components/underpost/DocumentSearchProvider.js +1 -1
- package/src/client/components/underpost/LabGalleryUnderpost.js +12 -15
- package/src/client/components/underpost/LogInUnderpost.js +6 -4
- package/src/client/components/underpost/LogOutUnderpost.js +6 -4
- package/src/client/components/underpost/RouterUnderpost.js +45 -0
- package/src/client/components/underpost/SettingsUnderpost.js +4 -4
- package/src/client/components/underpost/SignUpUnderpost.js +6 -4
- package/src/client/components/underpost/TranslateUnderpost.js +4 -4
- package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +235 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +443 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +417 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +313 -0
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +260 -0
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +241 -0
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +279 -0
- package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +206 -0
- package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +732 -0
- package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +14 -20
- package/src/client/services/core/core.service.js +17 -49
- package/src/client/services/crypto/crypto.service.js +8 -13
- package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
- package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +10 -16
- package/src/client/services/cyberia-entity/cyberia-entity.management.js +5 -5
- package/src/client/services/cyberia-entity/cyberia-entity.service.js +10 -16
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +6 -6
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +12 -18
- package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +10 -16
- package/src/client/services/cyberia-map/cyberia-map.management.js +6 -6
- package/src/client/services/cyberia-map/cyberia-map.service.js +12 -18
- package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
- package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
- package/src/client/services/default/default.management.js +159 -267
- package/src/client/services/default/default.service.js +10 -16
- package/src/client/services/document/document.service.js +14 -19
- package/src/client/services/file/file.service.js +8 -13
- package/src/client/services/instance/instance.management.js +5 -5
- package/src/client/services/instance/instance.service.js +10 -15
- package/src/client/services/ipfs/ipfs.service.js +12 -18
- package/src/client/services/object-layer/object-layer.management.js +12 -12
- package/src/client/services/object-layer/object-layer.service.js +20 -26
- package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +10 -16
- package/src/client/services/test/test.service.js +8 -13
- package/src/client/services/user/guest.service.js +86 -0
- package/src/client/services/user/user.management.js +5 -5
- package/src/client/services/user/user.service.js +14 -20
- package/src/client/ssr/body/404.js +3 -3
- package/src/client/ssr/body/500.js +3 -3
- package/src/client/ssr/body/CacheControl.js +5 -2
- package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +13 -6
- package/src/client/ssr/head/PwaItemledger.js +197 -60
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
- package/src/client/ssr/offline/Maintenance.js +12 -11
- package/src/client/ssr/offline/NoNetworkConnection.js +3 -3
- package/src/client/ssr/pages/Test.js +2 -2
- package/src/client/sw/core.sw.js +212 -0
- package/src/grpc/cyberia/grpc-server.js +179 -67
- package/src/index.js +1 -1
- package/src/runtime/cyberia-client/Dockerfile +80 -0
- package/src/runtime/cyberia-server/Dockerfile +37 -0
- package/src/runtime/express/Dockerfile +4 -4
- package/src/runtime/lampp/Dockerfile +8 -7
- package/src/runtime/wp/Dockerfile +11 -17
- package/src/server/atlas-sprite-sheet-generator.js +4 -2
- package/src/server/client-build-docs.js +45 -46
- package/src/server/client-build.js +334 -60
- package/src/server/client-formatted.js +47 -16
- package/src/server/conf.js +5 -4
- package/src/server/data-query.js +32 -20
- package/src/server/dns.js +22 -0
- package/src/server/ipfs-client.js +232 -91
- package/src/server/object-layer.js +1 -6
- package/src/server/process.js +13 -27
- package/src/server/semantic-layer-generator-floor.js +11 -51
- package/src/server/semantic-layer-generator-resource.js +259 -0
- package/src/server/semantic-layer-generator-skin.js +41 -171
- package/src/server/semantic-layer-generator.js +122 -14
- package/src/server/shape-generator.js +108 -0
- package/src/server/start.js +17 -3
- package/src/server/valkey.js +141 -235
- package/tsconfig.docs.json +15 -0
- package/typedoc.dd-cyberia.json +29 -0
- package/typedoc.json +29 -0
- package/WHITE-PAPER.md +0 -1540
- package/hardhat/README.md +0 -531
- package/hardhat/WHITE-PAPER.md +0 -1540
- package/jsdoc.dd-cyberia.json +0 -68
- package/jsdoc.json +0 -68
- package/src/api/object-layer/README.md +0 -672
- package/src/client/components/core/ColorPalette.js +0 -5267
- package/src/client/components/core/JoyStick.js +0 -80
- package/src/client/components/cryptokoyn/RoutesCryptokoyn.js +0 -39
- package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +0 -62
- package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +0 -136
- package/src/client/components/default/RoutesDefault.js +0 -49
- package/src/client/components/itemledger/RoutesItemledger.js +0 -40
- package/src/client/components/underpost/RoutesUnderpost.js +0 -47
- package/src/client/sw/default.sw.js +0 -127
- package/src/client/sw/template.sw.js +0 -84
- package/src/grpc/cyberia/OFF_CHAIN_ECONOMY.md +0 -305
- package/src/grpc/cyberia/README.md +0 -326
package/src/server/process.js
CHANGED
|
@@ -4,35 +4,30 @@
|
|
|
4
4
|
* @module src/server/process.js
|
|
5
5
|
* @namespace Process
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
7
|
// https://nodejs.org/api/process
|
|
9
|
-
|
|
10
8
|
import shell from 'shelljs';
|
|
11
9
|
import { loggerFactory } from './logger.js';
|
|
12
10
|
import clipboard from 'clipboardy';
|
|
13
11
|
import Underpost from '../index.js';
|
|
14
12
|
import { getNpmRootPath } from './conf.js';
|
|
15
|
-
|
|
16
13
|
const logger = loggerFactory(import.meta);
|
|
17
|
-
|
|
18
14
|
/**
|
|
19
15
|
* Gets the current working directory, replacing backslashes with forward slashes for consistency.
|
|
20
16
|
* @memberof Process
|
|
21
17
|
* @returns {string} The root directory path.
|
|
22
18
|
*/
|
|
23
19
|
const getRootDirectory = () => process.cwd().replace(/\\/g, '/');
|
|
24
|
-
|
|
25
20
|
/**
|
|
26
21
|
* Controls and manages process-level events and signals.
|
|
27
22
|
* @namespace ProcessController
|
|
28
23
|
*/
|
|
29
|
-
|
|
24
|
+
class ProcessController {
|
|
30
25
|
/**
|
|
31
26
|
* List of signals to listen for for graceful shutdown/handling.
|
|
32
27
|
* @memberof ProcessController
|
|
33
28
|
* @type {string[]}
|
|
34
29
|
*/
|
|
35
|
-
SIG
|
|
30
|
+
static SIG = [
|
|
36
31
|
'SIGPIPE',
|
|
37
32
|
'SIGHUP',
|
|
38
33
|
'SIGTERM',
|
|
@@ -45,29 +40,26 @@ const ProcessController = {
|
|
|
45
40
|
'SIGFPE',
|
|
46
41
|
'SIGSEGV',
|
|
47
42
|
'SIGILL',
|
|
48
|
-
]
|
|
49
|
-
|
|
43
|
+
];
|
|
50
44
|
/**
|
|
51
45
|
* Sets up listeners for various process signals defined in {@link ProcessController.SIG}.
|
|
52
46
|
* Handles graceful exit on 'SIGINT' (Ctrl+C).
|
|
53
47
|
* @memberof ProcessController
|
|
54
48
|
* @returns {Array<process.Process>} An array of process listener handles.
|
|
55
49
|
*/
|
|
56
|
-
onSigListen
|
|
57
|
-
return
|
|
50
|
+
static onSigListen() {
|
|
51
|
+
return ProcessController.SIG.map((sig) =>
|
|
58
52
|
process.on(sig, (...args) => {
|
|
59
|
-
|
|
53
|
+
ProcessController.logger.info(`process on ${sig}`, args);
|
|
60
54
|
switch (sig) {
|
|
61
55
|
case 'SIGINT':
|
|
62
56
|
return process.exit();
|
|
63
|
-
|
|
64
57
|
default:
|
|
65
58
|
break;
|
|
66
59
|
}
|
|
67
60
|
}),
|
|
68
61
|
);
|
|
69
|
-
}
|
|
70
|
-
|
|
62
|
+
}
|
|
71
63
|
/**
|
|
72
64
|
* Initializes the ProcessController.
|
|
73
65
|
* Sets up signal listeners, registers a listener for the 'exit' event, and cleans up temporary deployment environment variables.
|
|
@@ -75,16 +67,15 @@ const ProcessController = {
|
|
|
75
67
|
* @param {Object} logger - The logger instance to use for internal logging.
|
|
76
68
|
* @returns {void}
|
|
77
69
|
*/
|
|
78
|
-
init
|
|
79
|
-
|
|
70
|
+
static init(logger) {
|
|
71
|
+
ProcessController.logger = logger;
|
|
80
72
|
process.on('exit', (...args) => {
|
|
81
|
-
|
|
73
|
+
ProcessController.logger.info(`process on exit`, args);
|
|
82
74
|
});
|
|
83
|
-
|
|
75
|
+
ProcessController.onSigListen();
|
|
84
76
|
Underpost.env.delete('await-deploy');
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
77
|
+
}
|
|
78
|
+
}
|
|
88
79
|
/**
|
|
89
80
|
* Executes a shell command using shelljs.
|
|
90
81
|
* @memberof Process
|
|
@@ -105,7 +96,6 @@ const shellExec = (
|
|
|
105
96
|
if (options.callback) return shell.exec(cmd, options, options.callback);
|
|
106
97
|
return options.stdout ? shell.exec(cmd, options).stdout : shell.exec(cmd, options);
|
|
107
98
|
};
|
|
108
|
-
|
|
109
99
|
/**
|
|
110
100
|
* Changes the current working directory using shelljs.
|
|
111
101
|
* @memberof Process
|
|
@@ -118,7 +108,6 @@ const shellCd = (cd, options = { disableLog: false }) => {
|
|
|
118
108
|
if (!options.disableLog) logger.info(`cd`, cd);
|
|
119
109
|
return shell.cd(cd);
|
|
120
110
|
};
|
|
121
|
-
|
|
122
111
|
/**
|
|
123
112
|
* Wraps a command to run it as a daemon process in a shell (keeping the process alive/terminal open).
|
|
124
113
|
* @memberof Process
|
|
@@ -126,7 +115,6 @@ const shellCd = (cd, options = { disableLog: false }) => {
|
|
|
126
115
|
* @returns {string} The shell command string for the daemon process.
|
|
127
116
|
*/
|
|
128
117
|
const daemonProcess = (cmd) => `exec bash -c '${cmd}; exec tail -f /dev/null'`;
|
|
129
|
-
|
|
130
118
|
/**
|
|
131
119
|
* Retrieves the process ID (PID) of the most recently created gnome-terminal instance.
|
|
132
120
|
* Note: This function is environment-specific (GNOME/Linux) and uses `pgrep -n`.
|
|
@@ -136,7 +124,6 @@ const daemonProcess = (cmd) => `exec bash -c '${cmd}; exec tail -f /dev/null'`;
|
|
|
136
124
|
// list all terminals: pgrep gnome-terminal
|
|
137
125
|
// list last terminal: pgrep -n gnome-terminal
|
|
138
126
|
const getTerminalPid = () => JSON.parse(shellExec(`pgrep -n gnome-terminal`, { stdout: true, silent: true }));
|
|
139
|
-
|
|
140
127
|
/**
|
|
141
128
|
* Copies text content to the system clipboard using clipboardy.
|
|
142
129
|
* Logs the copied content for confirmation.
|
|
@@ -148,5 +135,4 @@ function pbcopy(data) {
|
|
|
148
135
|
clipboard.writeSync(data || '🦄');
|
|
149
136
|
logger.info(`copied to clipboard`, clipboard.readSync());
|
|
150
137
|
}
|
|
151
|
-
|
|
152
138
|
export { ProcessController, getRootDirectory, shellExec, shellCd, pbcopy, getTerminalPid, daemonProcess };
|
|
@@ -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: {
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource semantic descriptors for the Semantic Layer Generator.
|
|
3
|
+
*
|
|
4
|
+
* Provides procedural generation recipes for generic collectible resource
|
|
5
|
+
* object layers. Each colour palette is imported from the centralized
|
|
6
|
+
* BIOME_PALETTES (shared with floor descriptors).
|
|
7
|
+
*
|
|
8
|
+
* Each biome is paired with four distinct shape families:
|
|
9
|
+
*
|
|
10
|
+
* • **petal** — several parabolic arcs facing the same general direction,
|
|
11
|
+
* reminiscent of a semi-ring of Saturn. Open curves are
|
|
12
|
+
* scanline-filled so each arc reads as a coloured petal.
|
|
13
|
+
* • **stone** — hard, angular mineral shapes (circle, pixel-art); filled.
|
|
14
|
+
* • **polygon** — perfect regular geometric figures (triangles, squares,
|
|
15
|
+
* pentagons, hexagons); filled with near-zero noise.
|
|
16
|
+
* • **thread** — thin, wispy lines composed of Bézier curves and
|
|
17
|
+
* parabolas; NOT filled — rendered as outlines only.
|
|
18
|
+
*
|
|
19
|
+
* Naming convention: `resource-{biome}-{shape}`
|
|
20
|
+
* e.g. `resource-desert-petal`, `resource-grass-stone`, `resource-lava-thread`
|
|
21
|
+
*
|
|
22
|
+
* All descriptors use `itemType: 'floor'` so the default single-direction
|
|
23
|
+
* frame pipeline (`down_idle` / `default_idle`) is used — matching the
|
|
24
|
+
* stateless, non-directional nature of world-placed resource pickups.
|
|
25
|
+
*
|
|
26
|
+
* @module src/server/semantic-layer-generator-resource.js
|
|
27
|
+
* @namespace SemanticLayerGeneratorResource
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
import { BIOME_PALETTES } from './semantic-layer-generator.js';
|
|
31
|
+
|
|
32
|
+
/* ═══════════════════════════════════════════════════════════════════════════
|
|
33
|
+
* SHAPE FAMILY RECIPES
|
|
34
|
+
*
|
|
35
|
+
* Each recipe defines:
|
|
36
|
+
* tags — semantic tags appended to the biome tags
|
|
37
|
+
* preferredShapes — shape → weight map for the shape picker
|
|
38
|
+
* layers — ordered LayerSpec dict (rendered bottom→top)
|
|
39
|
+
* ═══════════════════════════════════════════════════════════════════════════ */
|
|
40
|
+
|
|
41
|
+
const SHAPE_FAMILIES = {
|
|
42
|
+
/* ── Petal — thick parabolic arcs all facing roughly the same direction ─
|
|
43
|
+
* Uses `thick-parabola` — a closed band shape that traces the outer
|
|
44
|
+
* parabola forward and the inner parabola backward, producing a thick
|
|
45
|
+
* filled crescent. Two layers with slightly different curvature &
|
|
46
|
+
* thickness overlap to build a bold Saturn-ring effect.
|
|
47
|
+
* ───────────────────────────────────────────────────────────────────── */
|
|
48
|
+
petal: {
|
|
49
|
+
tags: ['petal', 'arc', 'crescent', 'organic'],
|
|
50
|
+
preferredShapes: { 'thick-parabola': 5 },
|
|
51
|
+
layers: {
|
|
52
|
+
arcs: {
|
|
53
|
+
generator: 'shape',
|
|
54
|
+
shapes: ['thick-parabola'],
|
|
55
|
+
count: 2,
|
|
56
|
+
scaleBase: 0.45,
|
|
57
|
+
scaleRange: 0.15,
|
|
58
|
+
scaleVariance: 0.1,
|
|
59
|
+
rotationBase: 90, // vertical parabolas
|
|
60
|
+
rotationVariance: 10,
|
|
61
|
+
colorShift: 18,
|
|
62
|
+
jitter: 0.04,
|
|
63
|
+
noiseLevel: 0.04,
|
|
64
|
+
detailLevel: 1.2,
|
|
65
|
+
sparsity: 0.05,
|
|
66
|
+
centerBias: 0.6, // cluster near tile centre
|
|
67
|
+
frameJitter: 0.008,
|
|
68
|
+
frameRotation: 1.5,
|
|
69
|
+
frameScale: 0.004,
|
|
70
|
+
fill: true,
|
|
71
|
+
shapeParams: { a: 0.5, rangeX: 1.3, thickness: 0.35 },
|
|
72
|
+
},
|
|
73
|
+
inner: {
|
|
74
|
+
generator: 'shape',
|
|
75
|
+
shapes: ['thick-parabola'],
|
|
76
|
+
count: 1,
|
|
77
|
+
scaleBase: 0.35,
|
|
78
|
+
scaleRange: 0.15,
|
|
79
|
+
scaleVariance: 0.1,
|
|
80
|
+
rotationBase: 90,
|
|
81
|
+
rotationVariance: 6,
|
|
82
|
+
colorShift: 24,
|
|
83
|
+
jitter: 0.03,
|
|
84
|
+
noiseLevel: 0.03,
|
|
85
|
+
detailLevel: 1.0,
|
|
86
|
+
sparsity: 0.05,
|
|
87
|
+
centerBias: 0.6,
|
|
88
|
+
frameJitter: 0.006,
|
|
89
|
+
frameRotation: 1.0,
|
|
90
|
+
frameScale: 0.003,
|
|
91
|
+
fill: true,
|
|
92
|
+
shapeParams: { a: 0.6, rangeX: 1.2, thickness: 0.4 },
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
/* ── Stone — hard, angular mineral shapes (filled) ────────────────────── */
|
|
98
|
+
stone: {
|
|
99
|
+
tags: ['stone', 'mineral', 'rock', 'hard'],
|
|
100
|
+
preferredShapes: { circle: 3, 'pixel-art': 3, star: 1, ellipse: 1 },
|
|
101
|
+
layers: {
|
|
102
|
+
body: {
|
|
103
|
+
generator: 'shape',
|
|
104
|
+
shapes: ['circle', 'pixel-art'],
|
|
105
|
+
count: 3,
|
|
106
|
+
scaleVariance: 0.35,
|
|
107
|
+
rotationVariance: 90,
|
|
108
|
+
colorShift: 10,
|
|
109
|
+
jitter: 0.06,
|
|
110
|
+
noiseLevel: 0.18,
|
|
111
|
+
detailLevel: 1.2,
|
|
112
|
+
sparsity: 0.1,
|
|
113
|
+
frameJitter: 0.002,
|
|
114
|
+
frameRotation: 0.3,
|
|
115
|
+
frameScale: 0.002,
|
|
116
|
+
fill: true,
|
|
117
|
+
},
|
|
118
|
+
chips: {
|
|
119
|
+
generator: 'shape',
|
|
120
|
+
shapes: ['star', 'pixel-art'],
|
|
121
|
+
count: 4,
|
|
122
|
+
scaleVariance: 0.4,
|
|
123
|
+
rotationVariance: 180,
|
|
124
|
+
colorShift: 16,
|
|
125
|
+
jitter: 0.1,
|
|
126
|
+
noiseLevel: 0.2,
|
|
127
|
+
detailLevel: 0.9,
|
|
128
|
+
sparsity: 0.3,
|
|
129
|
+
frameJitter: 0.001,
|
|
130
|
+
frameRotation: 0.2,
|
|
131
|
+
frameScale: 0.001,
|
|
132
|
+
fill: true,
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
/* ── Polygon — one geometric shape repeated with variations ───────────
|
|
138
|
+
* A single regular polygon (square) repeated several times with
|
|
139
|
+
* varying scale, rotation, and colour — clearly geometric,
|
|
140
|
+
* possibly overlapping. Zero noise keeps edges ruler-straight.
|
|
141
|
+
* ───────────────────────────────────────────────────────────────────── */
|
|
142
|
+
polygon: {
|
|
143
|
+
tags: ['polygon', 'crystal', 'geometric', 'facet'],
|
|
144
|
+
preferredShapes: { 'regular-polygon': 6 },
|
|
145
|
+
layers: {
|
|
146
|
+
figures: {
|
|
147
|
+
generator: 'shape',
|
|
148
|
+
shapes: ['regular-polygon'],
|
|
149
|
+
count: 3,
|
|
150
|
+
scaleBase: 0.25,
|
|
151
|
+
scaleRange: 0.25,
|
|
152
|
+
scaleVariance: 0.15,
|
|
153
|
+
rotationVariance: 25,
|
|
154
|
+
colorShift: 20,
|
|
155
|
+
jitter: 0.02,
|
|
156
|
+
noiseLevel: 0.0,
|
|
157
|
+
detailLevel: 1.3,
|
|
158
|
+
sparsity: 0.0,
|
|
159
|
+
centerBias: 0.75, // stack near tile centre
|
|
160
|
+
frameJitter: 0.003,
|
|
161
|
+
frameRotation: 0.8,
|
|
162
|
+
frameScale: 0.002,
|
|
163
|
+
fill: true,
|
|
164
|
+
shapeParams: { sides: 4 },
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
/* ── Thread — thin, wispy wavy lines (outlines only, NOT filled) ──────
|
|
170
|
+
* Bézier curves and parabolas rendered as open contours. High count
|
|
171
|
+
* gives a tangle-of-threads appearance.
|
|
172
|
+
* ───────────────────────────────────────────────────────────────────── */
|
|
173
|
+
thread: {
|
|
174
|
+
tags: ['thread', 'fiber', 'sewing', 'wisp'],
|
|
175
|
+
preferredShapes: { 'bezier-path': 4, parabola: 3 },
|
|
176
|
+
layers: {
|
|
177
|
+
strands: {
|
|
178
|
+
generator: 'shape',
|
|
179
|
+
shapes: ['bezier-path', 'parabola'],
|
|
180
|
+
count: 7,
|
|
181
|
+
scaleVariance: 0.35,
|
|
182
|
+
rotationVariance: 180,
|
|
183
|
+
colorShift: 14,
|
|
184
|
+
jitter: 0.12,
|
|
185
|
+
noiseLevel: 0.15,
|
|
186
|
+
detailLevel: 1.0,
|
|
187
|
+
sparsity: 0.15,
|
|
188
|
+
frameJitter: 0.015,
|
|
189
|
+
frameRotation: 3.0,
|
|
190
|
+
frameScale: 0.006,
|
|
191
|
+
fill: false, // outlines only — wavy lines
|
|
192
|
+
shapeParams: { closed: false },
|
|
193
|
+
},
|
|
194
|
+
wisps: {
|
|
195
|
+
generator: 'shape',
|
|
196
|
+
shapes: ['bezier-path'],
|
|
197
|
+
count: 4,
|
|
198
|
+
scaleVariance: 0.3,
|
|
199
|
+
rotationVariance: 120,
|
|
200
|
+
colorShift: 10,
|
|
201
|
+
jitter: 0.1,
|
|
202
|
+
noiseLevel: 0.1,
|
|
203
|
+
detailLevel: 0.9,
|
|
204
|
+
sparsity: 0.3,
|
|
205
|
+
frameJitter: 0.01,
|
|
206
|
+
frameRotation: 2.0,
|
|
207
|
+
frameScale: 0.004,
|
|
208
|
+
fill: false,
|
|
209
|
+
shapeParams: { closed: false },
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
/* ═══════════════════════════════════════════════════════════════════════════
|
|
216
|
+
* BIOME SEMANTIC TAGS
|
|
217
|
+
* ═══════════════════════════════════════════════════════════════════════════ */
|
|
218
|
+
|
|
219
|
+
const BIOME_TAGS = {
|
|
220
|
+
desert: ['sand', 'arid', 'dry'],
|
|
221
|
+
grass: ['grass', 'meadow', 'earth'],
|
|
222
|
+
water: ['water', 'ocean', 'liquid'],
|
|
223
|
+
stone: ['rock', 'cobble', 'grey'],
|
|
224
|
+
lava: ['lava', 'magma', 'fire'],
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
/* ═══════════════════════════════════════════════════════════════════════════
|
|
228
|
+
* REGISTRATION
|
|
229
|
+
* ═══════════════════════════════════════════════════════════════════════════ */
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Registers all built-in resource semantic descriptors.
|
|
233
|
+
*
|
|
234
|
+
* Generates 5 biomes × 4 shape families = 20 descriptors, each registered
|
|
235
|
+
* under the prefix `resource-{biome}-{shape}`.
|
|
236
|
+
*
|
|
237
|
+
* @param {function(string, import('./semantic-layer-generator.js').SemanticDescriptor): void} registerFn
|
|
238
|
+
* @memberof SemanticLayerGeneratorResource
|
|
239
|
+
*/
|
|
240
|
+
export function registerResourceSemantics(registerFn) {
|
|
241
|
+
const biomes = Object.keys(BIOME_PALETTES);
|
|
242
|
+
const families = Object.keys(SHAPE_FAMILIES);
|
|
243
|
+
|
|
244
|
+
for (const biome of biomes) {
|
|
245
|
+
for (const family of families) {
|
|
246
|
+
const prefix = `resource-${biome}-${family}`;
|
|
247
|
+
const palette = BIOME_PALETTES[biome];
|
|
248
|
+
const recipe = SHAPE_FAMILIES[family];
|
|
249
|
+
|
|
250
|
+
registerFn(prefix, {
|
|
251
|
+
semanticTags: [...BIOME_TAGS[biome], ...recipe.tags, 'resource'],
|
|
252
|
+
paletteHints: palette,
|
|
253
|
+
preferredShapes: recipe.preferredShapes,
|
|
254
|
+
itemType: 'floor',
|
|
255
|
+
layers: recipe.layers,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|