gnoman 0.1.0
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/.eslintrc.cjs +24 -0
- package/.gnoman/contracts.json +4094 -0
- package/.gnoman/exec_package/runtime-debug.jsonl +45 -0
- package/.gnoman/holds.sqlite +0 -0
- package/.gnoman/license.json +7 -0
- package/.gnoman/safes.json +37 -0
- package/.gnoman/vanity-jobs.json +67 -0
- package/.gnoman/wallets.db +0 -0
- package/.prettierrc.json +6 -0
- package/CODex_TASKS.md +124 -0
- package/LICENSE.md +164 -0
- package/README.md +95 -0
- package/assets/GnoLogo.jpg +0 -0
- package/assets/self.png +0 -0
- package/backend/controllers/contractController.ts +49 -0
- package/backend/controllers/devToolsController.ts +76 -0
- package/backend/controllers/etherscanController.ts +59 -0
- package/backend/controllers/historyController.ts +7 -0
- package/backend/controllers/keyringController.ts +134 -0
- package/backend/controllers/robinhoodController.ts +80 -0
- package/backend/controllers/safeController.ts +167 -0
- package/backend/controllers/sandboxController.ts +63 -0
- package/backend/controllers/settingsController.ts +38 -0
- package/backend/controllers/walletController.ts +151 -0
- package/backend/index.ts +133 -0
- package/backend/licenses/license_public.pem +3 -0
- package/backend/licenses/verify_license.py +43 -0
- package/backend/routes/contractRoutes.ts +11 -0
- package/backend/routes/devToolsRoutes.ts +11 -0
- package/backend/routes/etherscanRoutes.ts +11 -0
- package/backend/routes/historyRoutes.ts +8 -0
- package/backend/routes/keyringRoutes.ts +25 -0
- package/backend/routes/licenseRoutes.ts +35 -0
- package/backend/routes/robinhoodRoutes.ts +22 -0
- package/backend/routes/runtimeRoutes.ts +29 -0
- package/backend/routes/safeRoutes.ts +28 -0
- package/backend/routes/sandboxRoutes.ts +17 -0
- package/backend/routes/settingsRoutes.ts +14 -0
- package/backend/routes/walletRoutes.ts +21 -0
- package/backend/services/chainlinkService.ts +65 -0
- package/backend/services/contractRegistryService.ts +205 -0
- package/backend/services/devToolsService.ts +251 -0
- package/backend/services/diagnosticsService.ts +350 -0
- package/backend/services/etherscanService.ts +152 -0
- package/backend/services/historyService.ts +89 -0
- package/backend/services/keyringAccessor.ts +4 -0
- package/backend/services/licenseService.ts +163 -0
- package/backend/services/onchain/abiRegistry.ts +57 -0
- package/backend/services/onchain/chainlinkClient.ts +56 -0
- package/backend/services/onchain/errors.ts +16 -0
- package/backend/services/onchain/etherscanClient.ts +94 -0
- package/backend/services/onchain/index.ts +76 -0
- package/backend/services/onchain/tenderlyRpcClient.ts +74 -0
- package/backend/services/onchain/types.ts +33 -0
- package/backend/services/onchainAutomationService.ts +424 -0
- package/backend/services/robinhood/auth.ts +42 -0
- package/backend/services/robinhood/client.ts +123 -0
- package/backend/services/robinhood/integrationService.ts +140 -0
- package/backend/services/robinhood/provider.ts +22 -0
- package/backend/services/robinhood/unofficialClient.ts +66 -0
- package/backend/services/rpcService.ts +44 -0
- package/backend/services/runtimeTelemetryService.ts +158 -0
- package/backend/services/safeConfigRepository.ts +205 -0
- package/backend/services/safeService.ts +588 -0
- package/backend/services/sandboxService.ts +157 -0
- package/backend/services/secureSettingsService.ts +45 -0
- package/backend/services/transactionHoldService.ts +223 -0
- package/backend/services/vanityService.ts +293 -0
- package/backend/services/walletService.ts +290 -0
- package/backend/services/walletStore.ts +179 -0
- package/backend/types/express-async-handler.d.ts +13 -0
- package/backend/types/keyring.d.ts +19 -0
- package/backend/utils/abiResolver.ts +208 -0
- package/backend/utils/http.ts +6 -0
- package/backend/utils/secretsResolver.ts +150 -0
- package/backend/utils/signer.ts +11 -0
- package/backend/workers/vanityWorker.ts +76 -0
- package/capacitor.config.ts +13 -0
- package/cli/gnoman.ts +424 -0
- package/contracts/OracleConsumer.sol +20 -0
- package/contracts/PriceFeedConsumer.sol +22 -0
- package/dist/backend/backend/controllers/contractController.js +41 -0
- package/dist/backend/backend/controllers/contractController.js.map +1 -0
- package/dist/backend/backend/controllers/devToolsController.js +63 -0
- package/dist/backend/backend/controllers/devToolsController.js.map +1 -0
- package/dist/backend/backend/controllers/etherscanController.js +53 -0
- package/dist/backend/backend/controllers/etherscanController.js.map +1 -0
- package/dist/backend/backend/controllers/historyController.js +12 -0
- package/dist/backend/backend/controllers/historyController.js.map +1 -0
- package/dist/backend/backend/controllers/keyringController.js +126 -0
- package/dist/backend/backend/controllers/keyringController.js.map +1 -0
- package/dist/backend/backend/controllers/robinhoodController.js +69 -0
- package/dist/backend/backend/controllers/robinhoodController.js.map +1 -0
- package/dist/backend/backend/controllers/safeController.js +137 -0
- package/dist/backend/backend/controllers/safeController.js.map +1 -0
- package/dist/backend/backend/controllers/sandboxController.js +48 -0
- package/dist/backend/backend/controllers/sandboxController.js.map +1 -0
- package/dist/backend/backend/controllers/settingsController.js +34 -0
- package/dist/backend/backend/controllers/settingsController.js.map +1 -0
- package/dist/backend/backend/controllers/walletController.js +140 -0
- package/dist/backend/backend/controllers/walletController.js.map +1 -0
- package/dist/backend/backend/index.js +119 -0
- package/dist/backend/backend/index.js.map +1 -0
- package/dist/backend/backend/routes/contractRoutes.js +44 -0
- package/dist/backend/backend/routes/contractRoutes.js.map +1 -0
- package/dist/backend/backend/routes/devToolsRoutes.js +44 -0
- package/dist/backend/backend/routes/devToolsRoutes.js.map +1 -0
- package/dist/backend/backend/routes/etherscanRoutes.js +44 -0
- package/dist/backend/backend/routes/etherscanRoutes.js.map +1 -0
- package/dist/backend/backend/routes/historyRoutes.js +41 -0
- package/dist/backend/backend/routes/historyRoutes.js.map +1 -0
- package/dist/backend/backend/routes/keyringRoutes.js +18 -0
- package/dist/backend/backend/routes/keyringRoutes.js.map +1 -0
- package/dist/backend/backend/routes/licenseRoutes.js +30 -0
- package/dist/backend/backend/routes/licenseRoutes.js.map +1 -0
- package/dist/backend/backend/routes/robinhoodRoutes.js +14 -0
- package/dist/backend/backend/routes/robinhoodRoutes.js.map +1 -0
- package/dist/backend/backend/routes/runtimeRoutes.js +26 -0
- package/dist/backend/backend/routes/runtimeRoutes.js.map +1 -0
- package/dist/backend/backend/routes/safeRoutes.js +61 -0
- package/dist/backend/backend/routes/safeRoutes.js.map +1 -0
- package/dist/backend/backend/routes/sandboxRoutes.js +50 -0
- package/dist/backend/backend/routes/sandboxRoutes.js.map +1 -0
- package/dist/backend/backend/routes/settingsRoutes.js +10 -0
- package/dist/backend/backend/routes/settingsRoutes.js.map +1 -0
- package/dist/backend/backend/routes/walletRoutes.js +54 -0
- package/dist/backend/backend/routes/walletRoutes.js.map +1 -0
- package/dist/backend/backend/services/chainlinkService.js +48 -0
- package/dist/backend/backend/services/chainlinkService.js.map +1 -0
- package/dist/backend/backend/services/contractRegistryService.js +138 -0
- package/dist/backend/backend/services/contractRegistryService.js.map +1 -0
- package/dist/backend/backend/services/devToolsService.js +213 -0
- package/dist/backend/backend/services/devToolsService.js.map +1 -0
- package/dist/backend/backend/services/diagnosticsService.js +286 -0
- package/dist/backend/backend/services/diagnosticsService.js.map +1 -0
- package/dist/backend/backend/services/etherscanService.js +125 -0
- package/dist/backend/backend/services/etherscanService.js.map +1 -0
- package/dist/backend/backend/services/historyService.js +75 -0
- package/dist/backend/backend/services/historyService.js.map +1 -0
- package/dist/backend/backend/services/keyringAccessor.js +40 -0
- package/dist/backend/backend/services/keyringAccessor.js.map +1 -0
- package/dist/backend/backend/services/licenseService.js +130 -0
- package/dist/backend/backend/services/licenseService.js.map +1 -0
- package/dist/backend/backend/services/onchain/abiRegistry.js +47 -0
- package/dist/backend/backend/services/onchain/abiRegistry.js.map +1 -0
- package/dist/backend/backend/services/onchain/chainlinkClient.js +43 -0
- package/dist/backend/backend/services/onchain/chainlinkClient.js.map +1 -0
- package/dist/backend/backend/services/onchain/errors.js +13 -0
- package/dist/backend/backend/services/onchain/errors.js.map +1 -0
- package/dist/backend/backend/services/onchain/etherscanClient.js +82 -0
- package/dist/backend/backend/services/onchain/etherscanClient.js.map +1 -0
- package/dist/backend/backend/services/onchain/index.js +79 -0
- package/dist/backend/backend/services/onchain/index.js.map +1 -0
- package/dist/backend/backend/services/onchain/tenderlyRpcClient.js +60 -0
- package/dist/backend/backend/services/onchain/tenderlyRpcClient.js.map +1 -0
- package/dist/backend/backend/services/onchain/types.js +14 -0
- package/dist/backend/backend/services/onchain/types.js.map +1 -0
- package/dist/backend/backend/services/onchainAutomationService.js +316 -0
- package/dist/backend/backend/services/onchainAutomationService.js.map +1 -0
- package/dist/backend/backend/services/robinhood/auth.js +26 -0
- package/dist/backend/backend/services/robinhood/auth.js.map +1 -0
- package/dist/backend/backend/services/robinhood/client.js +73 -0
- package/dist/backend/backend/services/robinhood/client.js.map +1 -0
- package/dist/backend/backend/services/robinhood/integrationService.js +119 -0
- package/dist/backend/backend/services/robinhood/integrationService.js.map +1 -0
- package/dist/backend/backend/services/robinhood/provider.js +17 -0
- package/dist/backend/backend/services/robinhood/provider.js.map +1 -0
- package/dist/backend/backend/services/robinhood/unofficialClient.js +61 -0
- package/dist/backend/backend/services/robinhood/unofficialClient.js.map +1 -0
- package/dist/backend/backend/services/rpcService.js +48 -0
- package/dist/backend/backend/services/rpcService.js.map +1 -0
- package/dist/backend/backend/services/runtimeTelemetryService.js +96 -0
- package/dist/backend/backend/services/runtimeTelemetryService.js.map +1 -0
- package/dist/backend/backend/services/safeConfigRepository.js +147 -0
- package/dist/backend/backend/services/safeConfigRepository.js.map +1 -0
- package/dist/backend/backend/services/safeService.js +527 -0
- package/dist/backend/backend/services/safeService.js.map +1 -0
- package/dist/backend/backend/services/sandboxService.js +135 -0
- package/dist/backend/backend/services/sandboxService.js.map +1 -0
- package/dist/backend/backend/services/secureSettingsService.js +50 -0
- package/dist/backend/backend/services/secureSettingsService.js.map +1 -0
- package/dist/backend/backend/services/transactionHoldService.js +184 -0
- package/dist/backend/backend/services/transactionHoldService.js.map +1 -0
- package/dist/backend/backend/services/vanityService.js +235 -0
- package/dist/backend/backend/services/vanityService.js.map +1 -0
- package/dist/backend/backend/services/walletService.js +202 -0
- package/dist/backend/backend/services/walletService.js.map +1 -0
- package/dist/backend/backend/services/walletStore.js +132 -0
- package/dist/backend/backend/services/walletStore.js.map +1 -0
- package/dist/backend/backend/utils/abiResolver.js +182 -0
- package/dist/backend/backend/utils/abiResolver.js.map +1 -0
- package/dist/backend/backend/utils/http.js +12 -0
- package/dist/backend/backend/utils/http.js.map +1 -0
- package/dist/backend/backend/utils/secretsResolver.js +137 -0
- package/dist/backend/backend/utils/secretsResolver.js.map +1 -0
- package/dist/backend/backend/utils/signer.js +15 -0
- package/dist/backend/backend/utils/signer.js.map +1 -0
- package/dist/backend/backend/workers/vanityWorker.js +63 -0
- package/dist/backend/backend/workers/vanityWorker.js.map +1 -0
- package/dist/backend/cli/gnoman.js +387 -0
- package/dist/backend/cli/gnoman.js.map +1 -0
- package/dist/backend/modules/sandbox/abiLoader.js +78 -0
- package/dist/backend/modules/sandbox/abiLoader.js.map +1 -0
- package/dist/backend/modules/sandbox/contractSimulator.js +205 -0
- package/dist/backend/modules/sandbox/contractSimulator.js.map +1 -0
- package/dist/backend/modules/sandbox/formBuilder.js +14 -0
- package/dist/backend/modules/sandbox/formBuilder.js.map +1 -0
- package/dist/backend/modules/sandbox/index.js +24 -0
- package/dist/backend/modules/sandbox/index.js.map +1 -0
- package/dist/backend/modules/sandbox/localFork.js +103 -0
- package/dist/backend/modules/sandbox/localFork.js.map +1 -0
- package/dist/backend/modules/sandbox/sandboxManager.js +130 -0
- package/dist/backend/modules/sandbox/sandboxManager.js.map +1 -0
- package/dist/backend/modules/sandbox/types.js +3 -0
- package/dist/backend/modules/sandbox/types.js.map +1 -0
- package/dist/backend/src/core/backends/fileBackend.js +136 -0
- package/dist/backend/src/core/backends/fileBackend.js.map +1 -0
- package/dist/backend/src/core/backends/memoryBackend.js +26 -0
- package/dist/backend/src/core/backends/memoryBackend.js.map +1 -0
- package/dist/backend/src/core/backends/systemBackend.js +86 -0
- package/dist/backend/src/core/backends/systemBackend.js.map +1 -0
- package/dist/backend/src/core/backends/types.js +12 -0
- package/dist/backend/src/core/backends/types.js.map +1 -0
- package/dist/backend/src/core/keyringManager.js +178 -0
- package/dist/backend/src/core/keyringManager.js.map +1 -0
- package/dist/backend/src/utils/abiResolver.js +180 -0
- package/dist/backend/src/utils/abiResolver.js.map +1 -0
- package/dist/backend/src/utils/runtimeObservability.js +78 -0
- package/dist/backend/src/utils/runtimeObservability.js.map +1 -0
- package/dist/backend/src/utils/secretsResolver.js +138 -0
- package/dist/backend/src/utils/secretsResolver.js.map +1 -0
- package/dist/cli/backend/services/diagnosticsService.js +286 -0
- package/dist/cli/backend/services/diagnosticsService.js.map +1 -0
- package/dist/cli/backend/services/keyringAccessor.js +40 -0
- package/dist/cli/backend/services/keyringAccessor.js.map +1 -0
- package/dist/cli/backend/services/rpcService.js +48 -0
- package/dist/cli/backend/services/rpcService.js.map +1 -0
- package/dist/cli/backend/services/runtimeTelemetryService.js +96 -0
- package/dist/cli/backend/services/runtimeTelemetryService.js.map +1 -0
- package/dist/cli/backend/services/walletService.js +202 -0
- package/dist/cli/backend/services/walletService.js.map +1 -0
- package/dist/cli/backend/services/walletStore.js +132 -0
- package/dist/cli/backend/services/walletStore.js.map +1 -0
- package/dist/cli/backend/utils/http.js +12 -0
- package/dist/cli/backend/utils/http.js.map +1 -0
- package/dist/cli/backend/utils/secretsResolver.js +137 -0
- package/dist/cli/backend/utils/secretsResolver.js.map +1 -0
- package/dist/cli/cli/gnoman.js +387 -0
- package/dist/cli/cli/gnoman.js.map +1 -0
- package/dist/cli/src/core/backends/fileBackend.js +136 -0
- package/dist/cli/src/core/backends/fileBackend.js.map +1 -0
- package/dist/cli/src/core/backends/memoryBackend.js +26 -0
- package/dist/cli/src/core/backends/memoryBackend.js.map +1 -0
- package/dist/cli/src/core/backends/systemBackend.js +86 -0
- package/dist/cli/src/core/backends/systemBackend.js.map +1 -0
- package/dist/cli/src/core/backends/types.js +12 -0
- package/dist/cli/src/core/backends/types.js.map +1 -0
- package/dist/cli/src/core/keyringManager.js +178 -0
- package/dist/cli/src/core/keyringManager.js.map +1 -0
- package/dist/cli/src/utils/abiResolver.js +180 -0
- package/dist/cli/src/utils/abiResolver.js.map +1 -0
- package/dist/cli/src/utils/runtimeObservability.js +78 -0
- package/dist/cli/src/utils/runtimeObservability.js.map +1 -0
- package/dist/cli/src/utils/secretsResolver.js +138 -0
- package/dist/cli/src/utils/secretsResolver.js.map +1 -0
- package/dist/main/backend/services/keyringAccessor.js +40 -0
- package/dist/main/backend/services/keyringAccessor.js.map +1 -0
- package/dist/main/backend/utils/http.js +12 -0
- package/dist/main/backend/utils/http.js.map +1 -0
- package/dist/main/main/ipcHandlers/index.js +26 -0
- package/dist/main/main/ipcHandlers/index.js.map +1 -0
- package/dist/main/main/keyring/keyringmanager.js +101 -0
- package/dist/main/main/keyring/keyringmanager.js.map +1 -0
- package/dist/main/main/main.js +224 -0
- package/dist/main/main/main.js.map +1 -0
- package/dist/main/main/preload/index.js +19 -0
- package/dist/main/main/preload/index.js.map +1 -0
- package/dist/main/main/preload/licenseBridge.js +105 -0
- package/dist/main/main/preload/licenseBridge.js.map +1 -0
- package/dist/main/src/core/backends/fileBackend.js +136 -0
- package/dist/main/src/core/backends/fileBackend.js.map +1 -0
- package/dist/main/src/core/backends/memoryBackend.js +26 -0
- package/dist/main/src/core/backends/memoryBackend.js.map +1 -0
- package/dist/main/src/core/backends/systemBackend.js +86 -0
- package/dist/main/src/core/backends/systemBackend.js.map +1 -0
- package/dist/main/src/core/backends/types.js +12 -0
- package/dist/main/src/core/backends/types.js.map +1 -0
- package/dist/main/src/core/keyringManager.js +178 -0
- package/dist/main/src/core/keyringManager.js.map +1 -0
- package/dist/main/src/utils/abiResolver.js +180 -0
- package/dist/main/src/utils/abiResolver.js.map +1 -0
- package/dist/main/src/utils/runtimeObservability.js +78 -0
- package/dist/main/src/utils/runtimeObservability.js.map +1 -0
- package/dist/main/src/utils/secretsResolver.js +138 -0
- package/dist/main/src/utils/secretsResolver.js.map +1 -0
- package/docs/development-guide.md +203 -0
- package/docs/etherscan-chainlink-integration.md +44 -0
- package/docs/gnoman-20-user-manual-STANDARD-PRINT-READY.pdf +0 -0
- package/docs/gnoman-20-user-manual-STANDARD.pdf +0 -0
- package/docs/license-dev-guide.md +106 -0
- package/docs/robinhood-integration.md +30 -0
- package/docs/system-audit-gpt-guide.md +208 -0
- package/docs/system-robustness-audit.md +50 -0
- package/docs/user-guide.md +73 -0
- package/docs/wiki/development-guide.md +203 -0
- package/docs/wiki/license-dev-guide.md +106 -0
- package/docs/wiki/user-guide.md +73 -0
- package/eslint.config.js +85 -0
- package/gnoman2.0/.eslintrc.cjs +24 -0
- package/gnoman2.0/.prettierrc.json +6 -0
- package/gnoman2.0/CODex_TASKS.md +124 -0
- package/gnoman2.0/LICENSE.md +164 -0
- package/gnoman2.0/README.md +95 -0
- package/gnoman2.0/assets/GnoLogo.jpg +0 -0
- package/gnoman2.0/assets/self.png +0 -0
- package/gnoman2.0/backend/controllers/contractController.ts +49 -0
- package/gnoman2.0/backend/controllers/devToolsController.ts +76 -0
- package/gnoman2.0/backend/controllers/etherscanController.ts +59 -0
- package/gnoman2.0/backend/controllers/historyController.ts +7 -0
- package/gnoman2.0/backend/controllers/keyringController.ts +134 -0
- package/gnoman2.0/backend/controllers/robinhoodController.ts +80 -0
- package/gnoman2.0/backend/controllers/safeController.ts +167 -0
- package/gnoman2.0/backend/controllers/sandboxController.ts +63 -0
- package/gnoman2.0/backend/controllers/settingsController.ts +38 -0
- package/gnoman2.0/backend/controllers/walletController.ts +151 -0
- package/gnoman2.0/backend/index.ts +133 -0
- package/gnoman2.0/backend/licenses/license_public.pem +3 -0
- package/gnoman2.0/backend/licenses/verify_license.py +43 -0
- package/gnoman2.0/backend/routes/contractRoutes.ts +11 -0
- package/gnoman2.0/backend/routes/devToolsRoutes.ts +11 -0
- package/gnoman2.0/backend/routes/etherscanRoutes.ts +11 -0
- package/gnoman2.0/backend/routes/historyRoutes.ts +8 -0
- package/gnoman2.0/backend/routes/keyringRoutes.ts +25 -0
- package/gnoman2.0/backend/routes/licenseRoutes.ts +35 -0
- package/gnoman2.0/backend/routes/robinhoodRoutes.ts +22 -0
- package/gnoman2.0/backend/routes/runtimeRoutes.ts +29 -0
- package/gnoman2.0/backend/routes/safeRoutes.ts +28 -0
- package/gnoman2.0/backend/routes/sandboxRoutes.ts +17 -0
- package/gnoman2.0/backend/routes/settingsRoutes.ts +14 -0
- package/gnoman2.0/backend/routes/walletRoutes.ts +21 -0
- package/gnoman2.0/backend/services/chainlinkService.ts +65 -0
- package/gnoman2.0/backend/services/contractRegistryService.ts +205 -0
- package/gnoman2.0/backend/services/devToolsService.ts +251 -0
- package/gnoman2.0/backend/services/diagnosticsService.ts +350 -0
- package/gnoman2.0/backend/services/etherscanService.ts +152 -0
- package/gnoman2.0/backend/services/historyService.ts +89 -0
- package/gnoman2.0/backend/services/keyringAccessor.ts +4 -0
- package/gnoman2.0/backend/services/licenseService.ts +163 -0
- package/gnoman2.0/backend/services/onchain/abiRegistry.ts +57 -0
- package/gnoman2.0/backend/services/onchain/chainlinkClient.ts +56 -0
- package/gnoman2.0/backend/services/onchain/errors.ts +16 -0
- package/gnoman2.0/backend/services/onchain/etherscanClient.ts +94 -0
- package/gnoman2.0/backend/services/onchain/index.ts +76 -0
- package/gnoman2.0/backend/services/onchain/tenderlyRpcClient.ts +74 -0
- package/gnoman2.0/backend/services/onchain/types.ts +33 -0
- package/gnoman2.0/backend/services/onchainAutomationService.ts +424 -0
- package/gnoman2.0/backend/services/robinhood/auth.ts +42 -0
- package/gnoman2.0/backend/services/robinhood/client.ts +123 -0
- package/gnoman2.0/backend/services/robinhood/integrationService.ts +140 -0
- package/gnoman2.0/backend/services/robinhood/provider.ts +22 -0
- package/gnoman2.0/backend/services/robinhood/unofficialClient.ts +66 -0
- package/gnoman2.0/backend/services/rpcService.ts +44 -0
- package/gnoman2.0/backend/services/runtimeTelemetryService.ts +158 -0
- package/gnoman2.0/backend/services/safeConfigRepository.ts +205 -0
- package/gnoman2.0/backend/services/safeService.ts +588 -0
- package/gnoman2.0/backend/services/sandboxService.ts +157 -0
- package/gnoman2.0/backend/services/secureSettingsService.ts +45 -0
- package/gnoman2.0/backend/services/transactionHoldService.ts +223 -0
- package/gnoman2.0/backend/services/vanityService.ts +293 -0
- package/gnoman2.0/backend/services/walletService.ts +290 -0
- package/gnoman2.0/backend/services/walletStore.ts +179 -0
- package/gnoman2.0/backend/types/express-async-handler.d.ts +13 -0
- package/gnoman2.0/backend/types/keyring.d.ts +19 -0
- package/gnoman2.0/backend/utils/abiResolver.ts +208 -0
- package/gnoman2.0/backend/utils/http.ts +6 -0
- package/gnoman2.0/backend/utils/secretsResolver.ts +150 -0
- package/gnoman2.0/backend/utils/signer.ts +11 -0
- package/gnoman2.0/backend/workers/vanityWorker.ts +76 -0
- package/gnoman2.0/capacitor.config.ts +13 -0
- package/gnoman2.0/cli/gnoman.ts +424 -0
- package/gnoman2.0/contracts/OracleConsumer.sol +20 -0
- package/gnoman2.0/contracts/PriceFeedConsumer.sol +22 -0
- package/gnoman2.0/docs/development-guide.md +203 -0
- package/gnoman2.0/docs/etherscan-chainlink-integration.md +44 -0
- package/gnoman2.0/docs/gnoman-20-user-manual-STANDARD-PRINT-READY.pdf +0 -0
- package/gnoman2.0/docs/gnoman-20-user-manual-STANDARD.pdf +0 -0
- package/gnoman2.0/docs/license-dev-guide.md +106 -0
- package/gnoman2.0/docs/robinhood-integration.md +30 -0
- package/gnoman2.0/docs/system-audit-gpt-guide.md +208 -0
- package/gnoman2.0/docs/system-robustness-audit.md +50 -0
- package/gnoman2.0/docs/user-guide.md +73 -0
- package/gnoman2.0/docs/wiki/development-guide.md +203 -0
- package/gnoman2.0/docs/wiki/license-dev-guide.md +106 -0
- package/gnoman2.0/docs/wiki/user-guide.md +73 -0
- package/gnoman2.0/eslint.config.js +85 -0
- package/gnoman2.0/gnomon/__init__.py +0 -0
- package/gnoman2.0/gnomon/api/__init__.py +0 -0
- package/gnoman2.0/gnomon/api/etherscan_tracker.py +72 -0
- package/gnoman2.0/gnomon/core/__init__.py +0 -0
- package/gnoman2.0/gnomon/core/safe_manager.py +111 -0
- package/gnoman2.0/gnomon/tests/test_abi_resolver.py +181 -0
- package/gnoman2.0/gnomon/tests/test_safe_persistence_and_etherscan.py +97 -0
- package/gnoman2.0/gnomon/utils/__init__.py +5 -0
- package/gnoman2.0/gnomon/utils/abi_resolver.py +255 -0
- package/gnoman2.0/ios/ExportOptions.plist +16 -0
- package/gnoman2.0/ios/README.md +33 -0
- package/gnoman2.0/jest.config.ts +18 -0
- package/gnoman2.0/keyring/__init__.py +17 -0
- package/gnoman2.0/licensingServer/package.json +23 -0
- package/gnoman2.0/licensingServer/src/config/keys.ts +84 -0
- package/gnoman2.0/licensingServer/src/index.ts +30 -0
- package/gnoman2.0/licensingServer/src/lib/canonicalize.ts +5 -0
- package/gnoman2.0/licensingServer/src/lib/crypto.ts +25 -0
- package/gnoman2.0/licensingServer/src/lib/validate.ts +62 -0
- package/gnoman2.0/licensingServer/src/middleware/auth.ts +20 -0
- package/gnoman2.0/licensingServer/src/routes/licenses.ts +110 -0
- package/gnoman2.0/licensingServer/tsconfig.json +12 -0
- package/gnoman2.0/main/ipcHandlers/index.ts +23 -0
- package/gnoman2.0/main/keyring/keyringmanager.ts +154 -0
- package/gnoman2.0/main/main.ts +234 -0
- package/gnoman2.0/main/preload/index.ts +31 -0
- package/gnoman2.0/main/preload/licenseBridge.ts +73 -0
- package/gnoman2.0/modules/sandbox/abiLoader.ts +78 -0
- package/gnoman2.0/modules/sandbox/contractSimulator.ts +241 -0
- package/gnoman2.0/modules/sandbox/formBuilder.ts +16 -0
- package/gnoman2.0/modules/sandbox/index.ts +6 -0
- package/gnoman2.0/modules/sandbox/localFork.ts +129 -0
- package/gnoman2.0/modules/sandbox/safe.abi.json +82 -0
- package/gnoman2.0/modules/sandbox/sandboxManager.ts +154 -0
- package/gnoman2.0/modules/sandbox/types.ts +84 -0
- package/gnoman2.0/modules/sandbox/ui/LogViewer.tsx +30 -0
- package/gnoman2.0/modules/sandbox/ui/ParameterForm.tsx +49 -0
- package/gnoman2.0/modules/sandbox/ui/SandboxPanel.tsx +568 -0
- package/gnoman2.0/package-lock.json +10904 -0
- package/gnoman2.0/package.json +82 -0
- package/gnoman2.0/renderer/components/LicenseScreen.tsx +134 -0
- package/gnoman2.0/renderer/index.html +12 -0
- package/gnoman2.0/renderer/package-lock.json +4104 -0
- package/gnoman2.0/renderer/package.json +35 -0
- package/gnoman2.0/renderer/postcss.config.cjs +6 -0
- package/gnoman2.0/renderer/src/App.tsx +229 -0
- package/gnoman2.0/renderer/src/context/KeyringContext.tsx +217 -0
- package/gnoman2.0/renderer/src/context/SafeContext.tsx +49 -0
- package/gnoman2.0/renderer/src/context/ThemeContext.tsx +60 -0
- package/gnoman2.0/renderer/src/context/WalletContext.tsx +50 -0
- package/gnoman2.0/renderer/src/context/main.tsx +18 -0
- package/gnoman2.0/renderer/src/main.tsx +18 -0
- package/gnoman2.0/renderer/src/pages/Contracts.tsx +482 -0
- package/gnoman2.0/renderer/src/pages/Dashboard.tsx +653 -0
- package/gnoman2.0/renderer/src/pages/DeveloperTools.tsx +270 -0
- package/gnoman2.0/renderer/src/pages/History.tsx +149 -0
- package/gnoman2.0/renderer/src/pages/Keyring.tsx +449 -0
- package/gnoman2.0/renderer/src/pages/Safes.tsx +1089 -0
- package/gnoman2.0/renderer/src/pages/Sandbox.tsx +146 -0
- package/gnoman2.0/renderer/src/pages/Settings.tsx +871 -0
- package/gnoman2.0/renderer/src/pages/Wallets.tsx +752 -0
- package/gnoman2.0/renderer/src/pages/WikiGuide.tsx +75 -0
- package/gnoman2.0/renderer/src/styles.css +32 -0
- package/gnoman2.0/renderer/src/types/gnoman.d.ts +9 -0
- package/gnoman2.0/renderer/src/types/license.ts +8 -0
- package/gnoman2.0/renderer/src/types/safevault.d.ts +17 -0
- package/gnoman2.0/renderer/src/utils/backend.ts +88 -0
- package/gnoman2.0/renderer/tailwind.config.cjs +8 -0
- package/gnoman2.0/renderer/tsconfig.json +13 -0
- package/gnoman2.0/renderer/tsconfig.node.json +9 -0
- package/gnoman2.0/renderer/vite.config.ts +19 -0
- package/gnoman2.0/requests/__init__.py +35 -0
- package/gnoman2.0/scripts/build-ios.sh +30 -0
- package/gnoman2.0/scripts/copyBackendAssets.js +24 -0
- package/gnoman2.0/scripts/copyRenderer.js +87 -0
- package/gnoman2.0/scripts/launchElectron.js +51 -0
- package/gnoman2.0/src/core/backends/fileBackend.ts +154 -0
- package/gnoman2.0/src/core/backends/memoryBackend.ts +27 -0
- package/gnoman2.0/src/core/backends/systemBackend.ts +66 -0
- package/gnoman2.0/src/core/backends/types.ts +17 -0
- package/gnoman2.0/src/core/keyringManager.ts +208 -0
- package/gnoman2.0/src/utils/abiCache/.gitkeep +0 -0
- package/gnoman2.0/src/utils/abiResolver.ts +200 -0
- package/gnoman2.0/src/utils/runtimeObservability.ts +110 -0
- package/gnoman2.0/src/utils/secretsResolver.ts +144 -0
- package/gnoman2.0/tests/chainlinkService.test.ts +32 -0
- package/gnoman2.0/tests/diagnosticsService.test.ts +68 -0
- package/gnoman2.0/tests/etherscanController.test.ts +99 -0
- package/gnoman2.0/tests/etherscanService.test.ts +116 -0
- package/gnoman2.0/tests/keyringManager.test.ts +135 -0
- package/gnoman2.0/tests/onchainToolkit.test.ts +71 -0
- package/gnoman2.0/tests/robinhoodClient.test.ts +54 -0
- package/gnoman2.0/tests/robinhoodController.test.ts +81 -0
- package/gnoman2.0/tests/robinhoodIntegrationService.test.ts +50 -0
- package/gnoman2.0/tests/safeServicePersistence.test.ts +81 -0
- package/gnoman2.0/tests/test_contract_sandbox/sandbox.test.js +407 -0
- package/gnoman2.0/tests/walletController.test.ts +57 -0
- package/gnoman2.0/tsconfig.backend.json +7 -0
- package/gnoman2.0/tsconfig.cli.json +7 -0
- package/gnoman2.0/tsconfig.json +18 -0
- package/gnoman2.0/tsconfig.main.json +7 -0
- package/gnomon/__init__.py +0 -0
- package/gnomon/__pycache__/__init__.cpython-310.pyc +0 -0
- package/gnomon/api/__init__.py +0 -0
- package/gnomon/api/__pycache__/__init__.cpython-310.pyc +0 -0
- package/gnomon/api/__pycache__/etherscan_tracker.cpython-310.pyc +0 -0
- package/gnomon/api/etherscan_tracker.py +72 -0
- package/gnomon/core/__init__.py +0 -0
- package/gnomon/core/safe_manager.py +111 -0
- package/gnomon/tests/__pycache__/test_safe_persistence_and_etherscan.cpython-310-pytest-8.3.3.pyc +0 -0
- package/gnomon/tests/test_abi_resolver.py +181 -0
- package/gnomon/tests/test_safe_persistence_and_etherscan.py +97 -0
- package/gnomon/utils/__init__.py +5 -0
- package/gnomon/utils/abi_resolver.py +255 -0
- package/ios/ExportOptions.plist +16 -0
- package/ios/README.md +33 -0
- package/jest.config.ts +18 -0
- package/keyring/__init__.py +17 -0
- package/launcher.sh +57 -0
- package/license.env +2 -0
- package/licensingServer/package.json +23 -0
- package/licensingServer/src/config/keys.ts +84 -0
- package/licensingServer/src/index.ts +30 -0
- package/licensingServer/src/lib/canonicalize.ts +5 -0
- package/licensingServer/src/lib/crypto.ts +25 -0
- package/licensingServer/src/lib/validate.ts +62 -0
- package/licensingServer/src/middleware/auth.ts +20 -0
- package/licensingServer/src/routes/licenses.ts +110 -0
- package/licensingServer/tsconfig.json +12 -0
- package/main/ipcHandlers/index.ts +23 -0
- package/main/keyring/keyringmanager.ts +154 -0
- package/main/main.ts +234 -0
- package/main/preload/index.ts +31 -0
- package/main/preload/licenseBridge.ts +73 -0
- package/modules/sandbox/abiLoader.ts +78 -0
- package/modules/sandbox/contractSimulator.ts +241 -0
- package/modules/sandbox/formBuilder.ts +16 -0
- package/modules/sandbox/index.ts +6 -0
- package/modules/sandbox/localFork.ts +129 -0
- package/modules/sandbox/safe.abi.json +82 -0
- package/modules/sandbox/sandboxManager.ts +154 -0
- package/modules/sandbox/types.ts +84 -0
- package/modules/sandbox/ui/LogViewer.tsx +30 -0
- package/modules/sandbox/ui/ParameterForm.tsx +49 -0
- package/modules/sandbox/ui/SandboxPanel.tsx +568 -0
- package/package.json +82 -0
- package/renderer/components/LicenseScreen.tsx +134 -0
- package/renderer/index.html +12 -0
- package/renderer/package-lock.json +4104 -0
- package/renderer/package.json +35 -0
- package/renderer/postcss.config.cjs +6 -0
- package/renderer/src/App.tsx +229 -0
- package/renderer/src/context/KeyringContext.tsx +217 -0
- package/renderer/src/context/SafeContext.tsx +49 -0
- package/renderer/src/context/ThemeContext.tsx +60 -0
- package/renderer/src/context/WalletContext.tsx +50 -0
- package/renderer/src/context/main.tsx +18 -0
- package/renderer/src/main.tsx +18 -0
- package/renderer/src/pages/Contracts.tsx +482 -0
- package/renderer/src/pages/Dashboard.tsx +653 -0
- package/renderer/src/pages/DeveloperTools.tsx +270 -0
- package/renderer/src/pages/History.tsx +149 -0
- package/renderer/src/pages/Keyring.tsx +449 -0
- package/renderer/src/pages/Safes.tsx +1089 -0
- package/renderer/src/pages/Sandbox.tsx +146 -0
- package/renderer/src/pages/Settings.tsx +871 -0
- package/renderer/src/pages/Wallets.tsx +752 -0
- package/renderer/src/pages/WikiGuide.tsx +75 -0
- package/renderer/src/styles.css +32 -0
- package/renderer/src/types/gnoman.d.ts +9 -0
- package/renderer/src/types/license.ts +8 -0
- package/renderer/src/types/safevault.d.ts +17 -0
- package/renderer/src/utils/backend.ts +88 -0
- package/renderer/tailwind.config.cjs +8 -0
- package/renderer/tsconfig.json +13 -0
- package/renderer/tsconfig.node.json +9 -0
- package/renderer/vite.config.ts +19 -0
- package/requests/__init__.py +35 -0
- package/requests/__pycache__/__init__.cpython-310.pyc +0 -0
- package/scripts/build-ios.sh +30 -0
- package/scripts/copyBackendAssets.js +24 -0
- package/scripts/copyRenderer.js +87 -0
- package/scripts/deployBackend.sh +24 -0
- package/scripts/launchElectron.js +51 -0
- package/src/core/backends/fileBackend.ts +154 -0
- package/src/core/backends/memoryBackend.ts +27 -0
- package/src/core/backends/systemBackend.ts +66 -0
- package/src/core/backends/types.ts +17 -0
- package/src/core/keyringManager.ts +208 -0
- package/src/utils/abiCache/.gitkeep +0 -0
- package/src/utils/abiResolver.ts +200 -0
- package/src/utils/runtimeObservability.ts +110 -0
- package/src/utils/secretsResolver.ts +144 -0
- package/tests/chainlinkService.test.ts +32 -0
- package/tests/diagnosticsService.test.ts +68 -0
- package/tests/etherscanController.test.ts +99 -0
- package/tests/etherscanService.test.ts +116 -0
- package/tests/keyringManager.test.ts +135 -0
- package/tests/onchainToolkit.test.ts +71 -0
- package/tests/robinhoodClient.test.ts +54 -0
- package/tests/robinhoodController.test.ts +81 -0
- package/tests/robinhoodIntegrationService.test.ts +50 -0
- package/tests/safeServicePersistence.test.ts +81 -0
- package/tests/test_contract_sandbox/sandbox.test.js +407 -0
- package/tests/walletController.test.ts +57 -0
- package/touch +14 -0
- package/tsconfig.backend.json +7 -0
- package/tsconfig.cli.json +7 -0
- package/tsconfig.json +18 -0
- package/tsconfig.main.json +7 -0
- package/webhook-shim.js +50 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T03:32:12.231Z","payload":[{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"}]}
|
|
2
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T03:32:12.237Z","payload":[{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
3
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T03:32:12.240Z","payload":[{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
4
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T03:32:12.241Z","payload":[{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"}]}
|
|
5
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T03:32:12.247Z","payload":[{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"}]}
|
|
6
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T03:32:12.247Z","payload":[{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"}]}
|
|
7
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T03:32:12.247Z","payload":[{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"},{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
8
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T03:32:12.256Z","payload":[{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"},{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
9
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T03:32:12.261Z","payload":[{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"},{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
10
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T05:19:53.985Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
11
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T05:19:53.998Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"}]}
|
|
12
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T05:19:53.999Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
13
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T05:19:54.001Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"}]}
|
|
14
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T05:19:54.001Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
15
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T05:19:54.017Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
16
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T05:19:54.017Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
17
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T05:19:54.017Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
18
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T05:19:54.019Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"keyring","redacted":"****U8SG"},{"key":"GNOMAN_RPC_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
19
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:26.962Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
20
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:26.970Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"}]}
|
|
21
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:26.971Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"}]}
|
|
22
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:26.972Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"}]}
|
|
23
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:26.975Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"}]}
|
|
24
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:26.975Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"}]}
|
|
25
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:26.975Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"}]}
|
|
26
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:26.984Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"}]}
|
|
27
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:26.986Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
28
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:31.666Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
29
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:31.669Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
30
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:32.189Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
31
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:07:32.189Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
32
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:27:29.340Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
33
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:27:29.340Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
34
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:27:29.341Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
35
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-26T07:27:35.720Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
36
|
+
{"kind":"SAFE_RUNTIME","ts":"2026-02-26T07:29:26.406Z","payload":{"version":"1.3.x-compatible","moduleEnabled":true}}
|
|
37
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-27T21:51:17.516Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
38
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-27T21:51:17.527Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"}]}
|
|
39
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-27T21:51:17.528Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"}]}
|
|
40
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-27T21:51:17.529Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"}]}
|
|
41
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-27T21:51:17.530Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"}]}
|
|
42
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-27T21:51:17.531Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"}]}
|
|
43
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-27T21:51:17.531Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"}]}
|
|
44
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-27T21:51:17.545Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"}]}
|
|
45
|
+
{"kind":"SECRETS_STATUS","ts":"2026-02-27T21:51:17.545Z","payload":[{"key":"ROBINHOOD_CRYPTO_API_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"ETHERSCAN_API_KEY","required":false,"present":true,"source":"project-env","redacted":"****U8SG"},{"key":"RPC_URL","required":false,"present":true,"source":"keyring","redacted":"****nXkQ"},{"key":"GNOMAN_RPC_URL","required":false,"present":true,"source":"project-env","redacted":"****nXkQ"},{"key":"ROBINHOOD_CRYPTO_PRIVATE_KEY","required":false,"present":false,"source":"missing","redacted":"****"},{"key":"DISCORD_WEBHOOK_URL","required":false,"present":true,"source":"project-env","redacted":"****mNAk"}]}
|
|
Binary file
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"safes": [
|
|
4
|
+
{
|
|
5
|
+
"address": "0xC6139506fa54c450948D9D2d8cCf269453A54f17",
|
|
6
|
+
"rpcUrl": "https://eth-mainnet.g.alchemy.com/v2/RBCHdCUROomscVSMZQeNX9H2MXBknXkQ",
|
|
7
|
+
"owners": [
|
|
8
|
+
"0xC0efDe592c746447b0C3A0CaDc64dc4FfebF4c69",
|
|
9
|
+
"0xFe5e9482D280A0c005c4Db90F54c4218583a9eF4",
|
|
10
|
+
"0xF0c6fd9AE61B9Da9E34538Af48C735515C084B2C"
|
|
11
|
+
],
|
|
12
|
+
"threshold": 2,
|
|
13
|
+
"modules": [
|
|
14
|
+
"0xf808A1d35a1a509ed943BDf450f53Acc7056BCab",
|
|
15
|
+
"0x790aba2869D56D80eB00170de7dB981CfA7E7f25",
|
|
16
|
+
"0xDD5062EB70d1e1A721Ff06a8Cfc69535eC3b87AB",
|
|
17
|
+
"0x0D39ba77DA145c3e5A93E361958fcb1a6Ec226D9"
|
|
18
|
+
],
|
|
19
|
+
"delegates": [],
|
|
20
|
+
"network": "mainnet",
|
|
21
|
+
"transactions": [
|
|
22
|
+
{
|
|
23
|
+
"hash": "0x00fb0de14abcb930b19bd332f683599c91fae3b38c0fdcf347304a1d238b8e39",
|
|
24
|
+
"payload": {
|
|
25
|
+
"to": "0xf808A1d35a1a509ed943BDf450f53Acc7056BCab"
|
|
26
|
+
},
|
|
27
|
+
"approvals": [],
|
|
28
|
+
"createdAt": "2026-02-25T16:02:25.541Z",
|
|
29
|
+
"executed": false,
|
|
30
|
+
"meta": {
|
|
31
|
+
"createdBy": "gui"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "7de1d29543edc63f91beafd2507cbc71",
|
|
4
|
+
"status": "failed",
|
|
5
|
+
"attempts": 0,
|
|
6
|
+
"startedAt": "2026-01-16T11:31:04.699Z",
|
|
7
|
+
"updatedAt": "2026-01-16T11:31:04.699Z",
|
|
8
|
+
"attemptRate": 0,
|
|
9
|
+
"targetAttempts": 18446744073709552000,
|
|
10
|
+
"label": "VANITY",
|
|
11
|
+
"pattern": {
|
|
12
|
+
"prefix": "0xfaded420",
|
|
13
|
+
"suffix": "deadbeef",
|
|
14
|
+
"derivationPath": "m/44'/60'/0'/0/0"
|
|
15
|
+
},
|
|
16
|
+
"message": "Job interrupted by restart",
|
|
17
|
+
"completedAt": "2026-01-17T07:47:56.630Z"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "f98029cbcf275a0772ef1f7cb7189e28",
|
|
21
|
+
"status": "cancelled",
|
|
22
|
+
"attempts": 1398,
|
|
23
|
+
"startedAt": "2026-01-17T07:50:13.530Z",
|
|
24
|
+
"updatedAt": "2026-01-17T07:50:40.079Z",
|
|
25
|
+
"attemptRate": 57.9722164627825,
|
|
26
|
+
"targetAttempts": 18446744073709552000,
|
|
27
|
+
"pattern": {
|
|
28
|
+
"prefix": "0xdeadfadedbeef247",
|
|
29
|
+
"derivationPath": "m/44'/60'/0'/0/0"
|
|
30
|
+
},
|
|
31
|
+
"etaMs": 318199737723537800000,
|
|
32
|
+
"completedAt": "2026-01-17T07:50:40.079Z",
|
|
33
|
+
"message": "Cancellation requested"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "afbe3bfee6f1f26c3bdfd4e92d1eca27",
|
|
37
|
+
"status": "failed",
|
|
38
|
+
"attempts": 0,
|
|
39
|
+
"startedAt": "2026-02-05T08:27:30.759Z",
|
|
40
|
+
"updatedAt": "2026-02-05T08:27:30.759Z",
|
|
41
|
+
"attemptRate": 0,
|
|
42
|
+
"targetAttempts": 1152921504606847000,
|
|
43
|
+
"label": "VANITY_PRACTICE",
|
|
44
|
+
"pattern": {
|
|
45
|
+
"prefix": "0xdefea7ed",
|
|
46
|
+
"suffix": "beef007",
|
|
47
|
+
"derivationPath": "m/44'/60'/0'/0/0"
|
|
48
|
+
},
|
|
49
|
+
"message": "Job interrupted by restart",
|
|
50
|
+
"completedAt": "2026-02-25T15:48:14.558Z"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "a1ec7ccfe7162f0536cfc031e544e86c",
|
|
54
|
+
"status": "completed",
|
|
55
|
+
"attempts": 1,
|
|
56
|
+
"startedAt": "2026-02-25T16:10:13.517Z",
|
|
57
|
+
"updatedAt": "2026-02-25T16:10:13.818Z",
|
|
58
|
+
"attemptRate": 9.00900900900901,
|
|
59
|
+
"pattern": {
|
|
60
|
+
"derivationPath": "m/44'/60'/0'/0/0"
|
|
61
|
+
},
|
|
62
|
+
"completedAt": "2026-02-25T16:10:13.805Z",
|
|
63
|
+
"address": "0x86fcdfB07420Ffb8e0E2418d4CD7e6B0b9eA8d49",
|
|
64
|
+
"etaMs": 0,
|
|
65
|
+
"mnemonicAlias": "VANITY_a1ec7ccfe7162f0536cfc031e544e86c"
|
|
66
|
+
}
|
|
67
|
+
]
|
|
Binary file
|
package/.prettierrc.json
ADDED
package/CODex_TASKS.md
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
Codex: You are upgrading GNOMAN 2.0 into a fully self-sufficient, multi-platform application.
|
|
2
|
+
|
|
3
|
+
Your tasks:
|
|
4
|
+
|
|
5
|
+
────────────────────────────────────────
|
|
6
|
+
1) CORE ARCHITECTURE
|
|
7
|
+
────────────────────────────────────────
|
|
8
|
+
Convert GNOMAN 2.0 into a modular, self-contained system with:
|
|
9
|
+
|
|
10
|
+
- A unified backend service (Node.js, Python, or Rust — use existing project language)
|
|
11
|
+
- A cross-platform UI layer
|
|
12
|
+
- A shared API layer for all platforms
|
|
13
|
+
- A plugin system for future extensions
|
|
14
|
+
|
|
15
|
+
Ensure the backend can run:
|
|
16
|
+
- As a local service
|
|
17
|
+
- As a remote server
|
|
18
|
+
- As a bundled embedded service inside desktop/mobile apps
|
|
19
|
+
|
|
20
|
+
────────────────────────────────────────
|
|
21
|
+
2) CROSS-PLATFORM BUILD TARGETS
|
|
22
|
+
────────────────────────────────────────
|
|
23
|
+
Add build support for:
|
|
24
|
+
|
|
25
|
+
✔ Windows (x64 + ARM64)
|
|
26
|
+
✔ Linux (x64 + ARM64)
|
|
27
|
+
✔ macOS (Intel + Apple Silicon)
|
|
28
|
+
✔ Android (APK)
|
|
29
|
+
✔ iOS (IPA) — MOST IMPORTANT
|
|
30
|
+
|
|
31
|
+
Use the following technologies:
|
|
32
|
+
|
|
33
|
+
Desktop:
|
|
34
|
+
- Electron OR Tauri (prefer Tauri for smaller footprint)
|
|
35
|
+
Mobile:
|
|
36
|
+
- React Native OR Flutter (choose whichever integrates best with existing code)
|
|
37
|
+
Backend:
|
|
38
|
+
- Package backend as a standalone binary AND as a library callable from mobile/desktop.
|
|
39
|
+
|
|
40
|
+
────────────────────────────────────────
|
|
41
|
+
3) SELF-SUFFICIENCY REQUIREMENTS
|
|
42
|
+
────────────────────────────────────────
|
|
43
|
+
GNOMAN 2.0 must run with:
|
|
44
|
+
|
|
45
|
+
- No external dependencies except:
|
|
46
|
+
- Configured APIs (Etherscan, Chainlink, Tenderly, etc.)
|
|
47
|
+
- Local database (SQLite recommended)
|
|
48
|
+
- Local caching layer
|
|
49
|
+
- Built-in update checker
|
|
50
|
+
- Built-in logging + diagnostics
|
|
51
|
+
- Built-in configuration UI
|
|
52
|
+
|
|
53
|
+
Add:
|
|
54
|
+
- Auto-migration for DB schema
|
|
55
|
+
- Auto-recovery if config is missing or corrupted
|
|
56
|
+
|
|
57
|
+
────────────────────────────────────────
|
|
58
|
+
4) SERVER MODE
|
|
59
|
+
────────────────────────────────────────
|
|
60
|
+
Add a “server mode” where GNOMAN 2.0 can run as:
|
|
61
|
+
|
|
62
|
+
- A headless daemon
|
|
63
|
+
- A system service (systemd, Windows service, macOS launchd)
|
|
64
|
+
- A remote API endpoint
|
|
65
|
+
|
|
66
|
+
Expose:
|
|
67
|
+
- REST API
|
|
68
|
+
- WebSocket events
|
|
69
|
+
- Authentication (token-based)
|
|
70
|
+
|
|
71
|
+
────────────────────────────────────────
|
|
72
|
+
5) MOBILE (iOS PRIORITY)
|
|
73
|
+
────────────────────────────────────────
|
|
74
|
+
For iOS:
|
|
75
|
+
|
|
76
|
+
- Use React Native or Flutter with a native bridge to the backend library.
|
|
77
|
+
- Backend must compile to iOS ARM64.
|
|
78
|
+
- Provide a local HTTP or direct native bridge for API calls.
|
|
79
|
+
- Ensure sandbox-safe storage for config + DB.
|
|
80
|
+
- Add offline mode.
|
|
81
|
+
- Add background task support where allowed by iOS.
|
|
82
|
+
|
|
83
|
+
For Android:
|
|
84
|
+
- Mirror the iOS architecture.
|
|
85
|
+
- Use the same shared backend library.
|
|
86
|
+
|
|
87
|
+
────────────────────────────────────────
|
|
88
|
+
6) INSTALLERS + PACKAGING
|
|
89
|
+
────────────────────────────────────────
|
|
90
|
+
Generate installers for:
|
|
91
|
+
|
|
92
|
+
Windows:
|
|
93
|
+
- MSI or EXE installer
|
|
94
|
+
Linux:
|
|
95
|
+
- .deb, .rpm, AppImage
|
|
96
|
+
macOS:
|
|
97
|
+
- .dmg or .pkg
|
|
98
|
+
Android:
|
|
99
|
+
- .apk
|
|
100
|
+
iOS:
|
|
101
|
+
- Xcode project + build scripts for IPA generation
|
|
102
|
+
|
|
103
|
+
────────────────────────────────────────
|
|
104
|
+
7) CONFIG + ENV
|
|
105
|
+
────────────────────────────────────────
|
|
106
|
+
Wire in all existing .env keys and ensure:
|
|
107
|
+
|
|
108
|
+
- Desktop apps read from local config file
|
|
109
|
+
- Mobile apps use secure storage
|
|
110
|
+
- Server mode uses environment variables
|
|
111
|
+
|
|
112
|
+
────────────────────────────────────────
|
|
113
|
+
8) VALIDATION
|
|
114
|
+
────────────────────────────────────────
|
|
115
|
+
After implementing:
|
|
116
|
+
|
|
117
|
+
- Confirm all platforms build successfully
|
|
118
|
+
- Confirm backend runs identically on all platforms
|
|
119
|
+
- Confirm mobile apps can call the backend
|
|
120
|
+
- Confirm server mode works remotely
|
|
121
|
+
- Confirm no breaking changes to existing features
|
|
122
|
+
|
|
123
|
+
Do NOT redesign existing logic.
|
|
124
|
+
Extend GNOMAN 2.0 to be fully self-sufficient and multi-platform.
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# **PROPRIETARY LICENSE AGREEMENT — GNOMAN 2.0 SECURITY & ADMINISTRATION PLATFORM**
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0 **Effective Date:** 10.26.2025
|
|
4
|
+
|
|
5
|
+
**Licensor:** **C. Hirschauer**, an individual residing in Iowa (“Licensor”)
|
|
6
|
+
|
|
7
|
+
**Licensee:** The purchaser, recipient, or authorized operator of a valid GNOMAN 2.0 license (“Licensee”).
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. Definitions
|
|
12
|
+
|
|
13
|
+
1.1 **“Software”** means the GNOMAN 2.0 desktop application, associated executables, libraries, Electron/React renderer, backend services, modules, APIs, plug-ins, data stores, simulation tools, key-management utilities, documentation, and any updates, patches, or derivatives provided by Licensor (including object and source code).
|
|
14
|
+
1.2 **“Documentation”** means all user guides, technical manuals, wiki pages, and other written or electronic materials accompanying the Software.
|
|
15
|
+
1.3 **“Personal License”** means a non-transferable license limited to one natural person for personal or educational use only.
|
|
16
|
+
1.4 **“Business License”** means a non-exclusive license to deploy and operate the Software for the internal operations of one legal entity (including its employees and contractors under NDA), subject to this Agreement.
|
|
17
|
+
1.5 **“License Fee”** means the non-refundable payment required to obtain a License.
|
|
18
|
+
1.6 **“License Token”** means a digitally-signed activation string generated by Licensor’s Ed25519 private key and verified by the Software offline using its embedded public key.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 2. Grant of License — Limited and Conditional
|
|
23
|
+
|
|
24
|
+
2.1 **Personal License.** Upon full payment and acceptance of this Agreement, Licensor grants Licensee a limited, non-transferable, non-sublicensable, revocable license to install and use one copy of the Software solely for personal, non-commercial purposes on a single device.
|
|
25
|
+
2.2 **Business License.** Upon full payment and compliance, Licensor grants Licensee a limited, non-transferable (except as provided in §16), non-sublicensable, revocable license to use the Software solely for internal business operations on the number of devices or environments purchased.
|
|
26
|
+
2.3 **Reservation of Rights.** All rights not expressly granted remain with Licensor. The Software and Documentation are licensed, not sold.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 3. Prohibited Uses — Zero Tolerance
|
|
31
|
+
|
|
32
|
+
Licensee shall not, and shall not permit others to:
|
|
33
|
+
a) Copy, distribute, rent, lease, sell, sublicense, or transfer the Software or Documentation;
|
|
34
|
+
b) Reverse-engineer, decompile, disassemble, or modify the Software (except as required by law after notice to Licensor);
|
|
35
|
+
c) Use the Software to offer third-party services (e.g., hosting, SaaS, multi-tenant management) without a separate commercial agreement;
|
|
36
|
+
d) Remove or obscure any copyright or proprietary markings;
|
|
37
|
+
e) Bypass, disable, or tamper with license-verification or cryptographic controls, including Ed25519 signature checks or token validation;
|
|
38
|
+
f) Combine the Software with open-source components in a manner that would require disclosure of its source; or
|
|
39
|
+
g) Use the Software in violation of any law or third-party rights.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 4. Delivery, Activation, and Fees
|
|
44
|
+
|
|
45
|
+
4.1 **Delivery.** The Software is delivered electronically after receipt of payment and identity verification (if applicable).
|
|
46
|
+
4.2 **Fees.** License Fees are non-refundable unless expressly agreed in writing. Failure to pay when due constitutes material breach.
|
|
47
|
+
4.3 **Activation.** Each license requires a valid offline License Token digitally signed by Licensor. The Software verifies the token using its embedded public key without internet communication. Tampering with this mechanism voids the License.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 5. Ownership and Intellectual Property
|
|
52
|
+
|
|
53
|
+
Licensor retains all title, ownership, and intellectual-property rights in the Software and Documentation. This Agreement conveys only the limited rights expressly granted.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 6. Audit and Verification
|
|
58
|
+
|
|
59
|
+
Licensor may request reasonable evidence of proper license activation or valid License Token(s). Licensee must cooperate by providing token files or logs on request. Non-compliance is a material breach.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 7. Support and Updates
|
|
64
|
+
|
|
65
|
+
Support or maintenance is not included unless purchased separately. Licensor may release updates at its sole discretion. Nothing herein obligates Licensor to continue development or compatibility.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 8. Confidentiality
|
|
70
|
+
|
|
71
|
+
Licensee shall treat the Software, Documentation, and licensing utilities as confidential, using no less care than for its own confidential information.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 9. Warranties and Disclaimers
|
|
76
|
+
|
|
77
|
+
9.1 **Limited Warranty.** For thirty (30) days after delivery, Licensor warrants the Software will substantially conform to the Documentation. Remedy: repair or replacement at Licensor’s option.
|
|
78
|
+
9.2 **Disclaimer.** EXCEPT AS SET FORTH ABOVE, THE SOFTWARE IS PROVIDED “AS IS.” ALL OTHER WARRANTIES, EXPRESS OR IMPLIED (INCLUDING MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE), ARE DISCLAIMED TO THE MAXIMUM EXTENT PERMITTED BY LAW.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 10. Indemnification
|
|
83
|
+
|
|
84
|
+
Licensee shall indemnify and hold Licensor harmless from all claims, damages, or expenses (including attorneys’ fees) arising from Licensee’s use or breach of this Agreement.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 11. Limitation of Liability
|
|
89
|
+
|
|
90
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, LICENSOR WILL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES (INCLUDING LOSS OF PROFITS OR DATA). TOTAL LIABILITY WILL NOT EXCEED THE LICENSE FEE PAID BY LICENSEE.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 12. Remedies and Equitable Relief
|
|
95
|
+
|
|
96
|
+
12.1 **Injunctive Relief.** Breach of Sections 3, 5, or 8 causes irreparable harm. Licensor may seek injunction or specific performance without bond.
|
|
97
|
+
12.2 **Liquidated Damages.** Each intentional breach of Sections 3 or 8 incurs liquidated damages of USD $50,000 (or greater actual damages proven), plus costs and attorneys’ fees.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 13. Enforcement and Attorneys’ Fees
|
|
102
|
+
|
|
103
|
+
The prevailing party in any enforcement action arising from this Agreement is entitled to recover reasonable attorneys’ fees and costs, including appeals and collection.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 14. Termination
|
|
108
|
+
|
|
109
|
+
Upon any material breach, this Agreement terminates immediately. Licensee must cease all use, destroy all copies, and certify destruction in writing. Licensor may invalidate tokens or disable verification where legally permitted.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 15. Export and Compliance
|
|
114
|
+
|
|
115
|
+
Licensee shall comply with all export, import, and sanctions laws. The Software shall not be exported to prohibited regions or persons.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 16. Transfer and Assignment
|
|
120
|
+
|
|
121
|
+
Licenses are non-transferable without Licensor’s written consent. Business License assignment to a successor in interest requires Licensor’s prior approval and assumption of this Agreement.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 17. Severability
|
|
126
|
+
|
|
127
|
+
If any provision is held invalid, the remainder remains in force. The parties shall replace invalid terms with ones closest in intent and effect.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 18. Governing Law and Venue
|
|
132
|
+
|
|
133
|
+
This Agreement is governed by the laws of [STATE/COUNTRY OF RESIDENCE]. Exclusive venue for disputes shall be the state or federal courts of that jurisdiction. Each party waives objection to inconvenient forum.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 19. Notices
|
|
138
|
+
|
|
139
|
+
All notices must be in writing and sent to the addresses listed in the invoice or order. Notices take effect upon receipt.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 20. Entire Agreement and Amendment
|
|
144
|
+
|
|
145
|
+
This document is the entire agreement regarding the Software and supersedes all prior understandings. Amendments require a written instrument signed by both parties.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 21. Miscellaneous
|
|
150
|
+
|
|
151
|
+
21.1 **No Implied Licenses.** None are granted by implication or estoppel.
|
|
152
|
+
21.2 **Publicity.** Licensee shall not use Licensor’s name or trademarks without written consent.
|
|
153
|
+
21.3 **Survival.** Ownership, confidentiality, indemnity, liability, and other provisions that by their nature should survive termination will do so.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## 22. Signature and Acceptance
|
|
158
|
+
|
|
159
|
+
By installing, activating, or using GNOMAN 2.0, Licensee acknowledges having read and agreed to be bound by this Agreement.
|
|
160
|
+
Activation of the Software with a valid Ed25519-signed License Token constitutes electronic acceptance of this Agreement.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
*(End of Agreement — GNOMAN 2.0 v1.0 — Licensor: C. Hirschauer, Individual)*
|
package/README.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
GNOMAN 2.0 is a cross-platform Electron desktop application that combines a local Express API with a React
|
|
4
|
+
renderer to manage Gnosis Safe workflows from a single secured workspace. The project is written entirely
|
|
5
|
+
in TypeScript and ships with tooling for simulating Safe transactions, managing wallets, and enforcing
|
|
6
|
+
offline license policies before operators can act on production Safes.
|
|
7
|
+
|
|
8
|
+
## Graphical-first operations
|
|
9
|
+
|
|
10
|
+
The graphical client is the primary control plane. Every historic `gnoman` CLI capability now maps to a
|
|
11
|
+
dedicated UI workflow—keyring management, wallet administration, Safe tooling, sandbox orchestration, and
|
|
12
|
+
configuration live behind buttons, panels, and activity feeds. The CLI continues to exist for legacy
|
|
13
|
+
automation, but receives no new features and is treated as a fallback transport only.
|
|
14
|
+
|
|
15
|
+
## Tech stack
|
|
16
|
+
|
|
17
|
+
- **Electron 28** for the desktop shell, preload isolation, and IPC keyring bridge (`main/`).
|
|
18
|
+
- **Electron 28** for the desktop shell, preload isolation, and IPC keyring bridge (`main/`). Legacy IPC
|
|
19
|
+
handlers remain for backwards compatibility but all user journeys originate in the renderer.
|
|
20
|
+
- **Express** with TypeScript for the local API that powers wallet, Safe, sandbox, and license flows
|
|
21
|
+
(`backend/`).
|
|
22
|
+
- **React + Tailwind (Vite)** for the renderer UI (`renderer/`).
|
|
23
|
+
- **Better SQLite3** for persisting transaction holds and vanity job history under a local
|
|
24
|
+
`.gnoman/` directory.
|
|
25
|
+
- **Ethers v6** for wallet creation, encryption, and contract simulation utilities.
|
|
26
|
+
|
|
27
|
+
## Repository layout
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
/ (root)
|
|
31
|
+
├── backend/ # Express API, services, and route handlers
|
|
32
|
+
├── main/ # Electron entrypoint, preload, and AES keyring integration
|
|
33
|
+
├── modules/sandbox/ # Shared sandbox engine, ABI parser, local fork helper, and UI panel
|
|
34
|
+
├── renderer/ # React renderer bundled with Vite
|
|
35
|
+
├── scripts/ # Build utilities for packaging renderer output and launching Electron
|
|
36
|
+
├── docs/ # Markdown documentation surfaced in the app and project wiki
|
|
37
|
+
├── tests/ # API smoke tests and fixtures
|
|
38
|
+
├── package.json # Root npm scripts and dependencies
|
|
39
|
+
└── tsconfig*.json # TypeScript project references for each process
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Prerequisites
|
|
43
|
+
|
|
44
|
+
| Requirement | Notes |
|
|
45
|
+
@@ -155,47 +163,48 @@ The sandbox writes JSON logs to `modules/sandbox/logs/` and coordinates optional
|
|
46
|
+
|
|
47
|
+
Validated tokens are re-verified at startup through the preload bridge and persist as a simple
|
|
48
|
+
`.safevault/license.env` file that contains the raw token and a timestamp indicating when the
|
|
49
|
+
desktop client last confirmed the signature. The REST endpoint continues to mirror metadata to
|
|
50
|
+
`.gnoman/license.json` for legacy automation that reads the old format.
|
|
51
|
+
|
|
52
|
+
### Offline license workflow (developer tooling)
|
|
53
|
+
|
|
54
|
+
| Purpose | Command | Output |
|
|
55
|
+
| --- | --- | --- |
|
|
56
|
+
| Generate keypair (one-time) | `python backend/licenses/make_keys.py` | `license_private.pem`, `license_public.pem` |
|
|
57
|
+
| Generate license token | `python backend/licenses/gen_license.py --id "Customer"` | Signed token (raw + Base32) |
|
|
58
|
+
| Embed public key | Ship the checked-in `backend/licenses/license_public.pem` alongside the backend build | Used by verifier |
|
|
59
|
+
| Validate offline | `python -c "from backend.licenses.verify_license import verify_token; print(verify_token('backend/licenses/license_public.pem', '<token>', 'GNOMAN', '2.0.0'))"` | Prints `True`/`False` |
|
|
60
|
+
|
|
61
|
+
## Desktop application features
|
|
62
|
+
|
|
63
|
+
- **Dashboard** – high-level overview of stored wallets and the currently connected Safe.
|
|
64
|
+
- **Wallets** – generate encrypted wallets with optional aliases, hidden flag, and password overrides, then
|
|
65
|
+
list stored metadata.
|
|
66
|
+
- **Safes** – connect to a Safe, review owners/modules, audit hold policy summaries, and monitor queued
|
|
67
|
+
transactions with live countdowns.
|
|
68
|
+
- **Sandbox** – switch between the legacy Safe callStatic form and the advanced sandbox panel powered by
|
|
69
|
+
`modules/sandbox/ui`. Upload or paste ABIs, choose functions, provide parameters, replay historical
|
|
70
|
+
simulations, and manage an optional local fork.
|
|
71
|
+
- **Keyring** – interact with the Electron IPC bridge (`window.gnoman`) to list and reveal secrets stored
|
|
72
|
+
in the AES keyring service (with a logged warning and in-memory fallback when the `keyring` module is unavailable).
|
|
73
|
+
- **Keyring** – encrypt, reveal, switch, and audit secrets directly inside the UI. Requests flow through
|
|
74
|
+
the local REST API so every operation is recorded in the on-screen activity log. The CLI bridge remains
|
|
75
|
+
available for legacy scripts but no longer surfaces new behavior.
|
|
76
|
+
- **Settings** – activate offline licensing, configure global hold defaults, launch vanity generators, and
|
|
77
|
+
jump to the in-app wiki.
|
|
78
|
+
- **Wiki Guide** – render Markdown documentation from `docs/wiki` directly inside the renderer.
|
|
79
|
+
|
|
80
|
+
## Data directories & security
|
|
81
|
+
|
|
82
|
+
- Transaction-hold records and vanity job ledgers are stored under `.gnoman/` in the project working
|
|
83
|
+
directory (`holds.sqlite`, `vanity-jobs.json`), while validated license tokens live in
|
|
84
|
+
`.safevault/license.env`.
|
|
85
|
+
- Sandbox logs persist to `modules/sandbox/logs/` for replay and auditing purposes.
|
|
86
|
+
- Wallet private keys stay encrypted in-memory using AES-256-GCM with PBKDF2 key derivation. Exported
|
|
87
|
+
keystores require the caller-supplied password.
|
|
88
|
+
- The Electron preload exposes a minimal `window.gnoman.invoke` surface to keep privileged operations
|
|
89
|
+
isolated from the renderer context.
|
|
90
|
+
|
|
91
|
+
## Documentation
|
|
92
|
+
|
|
93
|
+
Additional guides live under `docs/`. Start with `docs/user-guide.md` for a comprehensive walkthrough,
|
|
94
|
+
`docs/license-dev-guide.md` for offline licensing workflows, and `docs/wiki/` for content surfaced in the
|
|
95
|
+
in-app knowledge base.
|
|
Binary file
|
package/assets/self.png
ADDED
|
Binary file
|