@antseed/cli 0.1.179 → 0.1.180
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/README.md +2 -0
- package/dist/buyer-identities/store.d.ts +39 -2
- package/dist/buyer-identities/store.d.ts.map +1 -1
- package/dist/buyer-identities/store.js +99 -10
- package/dist/buyer-identities/store.js.map +1 -1
- package/dist/cli/commands/buyer/identity.d.ts +3 -1
- package/dist/cli/commands/buyer/identity.d.ts.map +1 -1
- package/dist/cli/commands/buyer/identity.js +55 -8
- package/dist/cli/commands/buyer/identity.js.map +1 -1
- package/dist/cli/commands/buyer/identity.test.d.ts +2 -0
- package/dist/cli/commands/buyer/identity.test.d.ts.map +1 -0
- package/dist/cli/commands/buyer/identity.test.js +168 -0
- package/dist/cli/commands/buyer/identity.test.js.map +1 -0
- package/dist/cli/commands/buyer/set-authorized-wallet.d.ts +10 -0
- package/dist/cli/commands/buyer/set-authorized-wallet.d.ts.map +1 -1
- package/dist/cli/commands/buyer/set-authorized-wallet.js +26 -4
- package/dist/cli/commands/buyer/set-authorized-wallet.js.map +1 -1
- package/dist/cli/commands/buyer/set-authorized-wallet.test.js +37 -2
- package/dist/cli/commands/buyer/set-authorized-wallet.test.js.map +1 -1
- package/dist/cli/commands/buyer/start.d.ts +15 -0
- package/dist/cli/commands/buyer/start.d.ts.map +1 -1
- package/dist/cli/commands/buyer/start.js +158 -48
- package/dist/cli/commands/buyer/start.js.map +1 -1
- package/dist/cli/commands/buyer/start.test.js +16 -1
- package/dist/cli/commands/buyer/start.test.js.map +1 -1
- package/dist/cli/commands/chat.d.ts +3 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +189 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/gateway/activity.d.ts +15 -0
- package/dist/cli/commands/gateway/activity.d.ts.map +1 -0
- package/dist/cli/commands/gateway/activity.js +233 -0
- package/dist/cli/commands/gateway/activity.js.map +1 -0
- package/dist/cli/commands/gateway/admin-token.d.ts +3 -0
- package/dist/cli/commands/gateway/admin-token.d.ts.map +1 -0
- package/dist/cli/commands/gateway/admin-token.js +90 -0
- package/dist/cli/commands/gateway/admin-token.js.map +1 -0
- package/dist/cli/commands/gateway/console-link.d.ts +20 -0
- package/dist/cli/commands/gateway/console-link.d.ts.map +1 -0
- package/dist/cli/commands/gateway/console-link.js +92 -0
- package/dist/cli/commands/gateway/console-link.js.map +1 -0
- package/dist/cli/commands/gateway/gateway-commands.test.d.ts +2 -0
- package/dist/cli/commands/gateway/gateway-commands.test.d.ts.map +1 -0
- package/dist/cli/commands/gateway/gateway-commands.test.js +230 -0
- package/dist/cli/commands/gateway/gateway-commands.test.js.map +1 -0
- package/dist/cli/commands/gateway/gateway-console-commands.test.d.ts +2 -0
- package/dist/cli/commands/gateway/gateway-console-commands.test.d.ts.map +1 -0
- package/dist/cli/commands/gateway/gateway-console-commands.test.js +373 -0
- package/dist/cli/commands/gateway/gateway-console-commands.test.js.map +1 -0
- package/dist/cli/commands/gateway/index.d.ts +8 -0
- package/dist/cli/commands/gateway/index.d.ts.map +1 -1
- package/dist/cli/commands/gateway/index.js +93 -14
- package/dist/cli/commands/gateway/index.js.map +1 -1
- package/dist/cli/commands/gateway/key.d.ts +4 -0
- package/dist/cli/commands/gateway/key.d.ts.map +1 -1
- package/dist/cli/commands/gateway/key.js +297 -182
- package/dist/cli/commands/gateway/key.js.map +1 -1
- package/dist/cli/commands/gateway/member.d.ts +3 -0
- package/dist/cli/commands/gateway/member.d.ts.map +1 -0
- package/dist/cli/commands/gateway/member.js +302 -0
- package/dist/cli/commands/gateway/member.js.map +1 -0
- package/dist/cli/commands/gateway/migrate.d.ts +18 -0
- package/dist/cli/commands/gateway/migrate.d.ts.map +1 -0
- package/dist/cli/commands/gateway/migrate.js +158 -0
- package/dist/cli/commands/gateway/migrate.js.map +1 -0
- package/dist/cli/commands/gateway/operator.d.ts +11 -0
- package/dist/cli/commands/gateway/operator.d.ts.map +1 -0
- package/dist/cli/commands/gateway/operator.js +199 -0
- package/dist/cli/commands/gateway/operator.js.map +1 -0
- package/dist/cli/commands/gateway/operator.test.d.ts +2 -0
- package/dist/cli/commands/gateway/operator.test.d.ts.map +1 -0
- package/dist/cli/commands/gateway/operator.test.js +151 -0
- package/dist/cli/commands/gateway/operator.test.js.map +1 -0
- package/dist/cli/commands/gateway/peer-list.d.ts +3 -0
- package/dist/cli/commands/gateway/peer-list.d.ts.map +1 -0
- package/dist/cli/commands/gateway/peer-list.js +107 -0
- package/dist/cli/commands/gateway/peer-list.js.map +1 -0
- package/dist/cli/commands/gateway/policy-options.d.ts +23 -0
- package/dist/cli/commands/gateway/policy-options.d.ts.map +1 -0
- package/dist/cli/commands/gateway/policy-options.js +156 -0
- package/dist/cli/commands/gateway/policy-options.js.map +1 -0
- package/dist/cli/commands/gateway/preset.d.ts +3 -0
- package/dist/cli/commands/gateway/preset.d.ts.map +1 -0
- package/dist/cli/commands/gateway/preset.js +181 -0
- package/dist/cli/commands/gateway/preset.js.map +1 -0
- package/dist/cli/commands/gateway/routing.d.ts +3 -0
- package/dist/cli/commands/gateway/routing.d.ts.map +1 -0
- package/dist/cli/commands/gateway/routing.js +110 -0
- package/dist/cli/commands/gateway/routing.js.map +1 -0
- package/dist/cli/commands/gateway/settings.d.ts +4 -0
- package/dist/cli/commands/gateway/settings.d.ts.map +1 -0
- package/dist/cli/commands/gateway/settings.js +314 -0
- package/dist/cli/commands/gateway/settings.js.map +1 -0
- package/dist/cli/commands/gateway/shared.d.ts +55 -6
- package/dist/cli/commands/gateway/shared.d.ts.map +1 -1
- package/dist/cli/commands/gateway/shared.js +206 -26
- package/dist/cli/commands/gateway/shared.js.map +1 -1
- package/dist/cli/commands/gateway/workspace.d.ts +3 -0
- package/dist/cli/commands/gateway/workspace.d.ts.map +1 -0
- package/dist/cli/commands/gateway/workspace.js +250 -0
- package/dist/cli/commands/gateway/workspace.js.map +1 -0
- package/dist/cli/commands/tunnel/start.d.ts.map +1 -1
- package/dist/cli/commands/tunnel/start.js +23 -5
- package/dist/cli/commands/tunnel/start.js.map +1 -1
- package/dist/cli/index.js +12 -44
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/program.d.ts +4 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +49 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/program.test.d.ts +2 -0
- package/dist/cli/program.test.d.ts.map +1 -0
- package/dist/cli/program.test.js +38 -0
- package/dist/cli/program.test.js.map +1 -0
- package/dist/cli/prompt-hidden.d.ts +3 -0
- package/dist/cli/prompt-hidden.d.ts.map +1 -0
- package/dist/cli/prompt-hidden.js +38 -0
- package/dist/cli/prompt-hidden.js.map +1 -0
- package/dist/cli/wallet-passphrase.d.ts +48 -0
- package/dist/cli/wallet-passphrase.d.ts.map +1 -0
- package/dist/cli/wallet-passphrase.js +119 -0
- package/dist/cli/wallet-passphrase.js.map +1 -0
- package/dist/cli/wallet-passphrase.test.d.ts +2 -0
- package/dist/cli/wallet-passphrase.test.d.ts.map +1 -0
- package/dist/cli/wallet-passphrase.test.js +79 -0
- package/dist/cli/wallet-passphrase.test.js.map +1 -0
- package/dist/config/effective.d.ts +12 -0
- package/dist/config/effective.d.ts.map +1 -1
- package/dist/config/effective.js +39 -6
- package/dist/config/effective.js.map +1 -1
- package/dist/config/effective.test.js +9 -1
- package/dist/config/effective.test.js.map +1 -1
- package/dist/config/loader.d.ts +6 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +12 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/loader.test.js +7 -1
- package/dist/config/loader.test.js.map +1 -1
- package/dist/config/types.d.ts +14 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +19 -0
- package/dist/config/validation.js.map +1 -1
- package/dist/gateway/accounting.d.ts +33 -3
- package/dist/gateway/accounting.d.ts.map +1 -1
- package/dist/gateway/accounting.js +86 -7
- package/dist/gateway/accounting.js.map +1 -1
- package/dist/gateway/admission-benchmark.test.d.ts +2 -0
- package/dist/gateway/admission-benchmark.test.d.ts.map +1 -0
- package/dist/gateway/admission-benchmark.test.js +75 -0
- package/dist/gateway/admission-benchmark.test.js.map +1 -0
- package/dist/gateway/auth/auth.test.d.ts +4 -0
- package/dist/gateway/auth/auth.test.d.ts.map +1 -0
- package/dist/gateway/auth/auth.test.js +337 -0
- package/dist/gateway/auth/auth.test.js.map +1 -0
- package/dist/gateway/auth/credentials.test.d.ts +2 -0
- package/dist/gateway/auth/credentials.test.d.ts.map +1 -0
- package/dist/gateway/auth/credentials.test.js +132 -0
- package/dist/gateway/auth/credentials.test.js.map +1 -0
- package/dist/gateway/auth/db.d.ts +156 -0
- package/dist/gateway/auth/db.d.ts.map +1 -0
- package/dist/gateway/auth/db.js +390 -0
- package/dist/gateway/auth/db.js.map +1 -0
- package/dist/gateway/auth/hardening.test.d.ts +2 -0
- package/dist/gateway/auth/hardening.test.d.ts.map +1 -0
- package/dist/gateway/auth/hardening.test.js +155 -0
- package/dist/gateway/auth/hardening.test.js.map +1 -0
- package/dist/gateway/auth/http.d.ts +53 -0
- package/dist/gateway/auth/http.d.ts.map +1 -0
- package/dist/gateway/auth/http.js +165 -0
- package/dist/gateway/auth/http.js.map +1 -0
- package/dist/gateway/auth/index.d.ts +26 -0
- package/dist/gateway/auth/index.d.ts.map +1 -0
- package/dist/gateway/auth/index.js +1014 -0
- package/dist/gateway/auth/index.js.map +1 -0
- package/dist/gateway/auth/oidc.d.ts +57 -0
- package/dist/gateway/auth/oidc.d.ts.map +1 -0
- package/dist/gateway/auth/oidc.js +159 -0
- package/dist/gateway/auth/oidc.js.map +1 -0
- package/dist/gateway/auth/oidc.test.d.ts +2 -0
- package/dist/gateway/auth/oidc.test.d.ts.map +1 -0
- package/dist/gateway/auth/oidc.test.js +223 -0
- package/dist/gateway/auth/oidc.test.js.map +1 -0
- package/dist/gateway/auth/reauth.test.d.ts +2 -0
- package/dist/gateway/auth/reauth.test.d.ts.map +1 -0
- package/dist/gateway/auth/reauth.test.js +108 -0
- package/dist/gateway/auth/reauth.test.js.map +1 -0
- package/dist/gateway/auth/store-integration.test.d.ts +2 -0
- package/dist/gateway/auth/store-integration.test.d.ts.map +1 -0
- package/dist/gateway/auth/store-integration.test.js +100 -0
- package/dist/gateway/auth/store-integration.test.js.map +1 -0
- package/dist/gateway/auth/test-helpers.d.ts +167 -0
- package/dist/gateway/auth/test-helpers.d.ts.map +1 -0
- package/dist/gateway/auth/test-helpers.js +368 -0
- package/dist/gateway/auth/test-helpers.js.map +1 -0
- package/dist/gateway/auth/types.d.ts +145 -0
- package/dist/gateway/auth/types.d.ts.map +1 -0
- package/dist/gateway/auth/types.js +2 -0
- package/dist/gateway/auth/types.js.map +1 -0
- package/dist/gateway/auth/wallet.d.ts +15 -0
- package/dist/gateway/auth/wallet.d.ts.map +1 -0
- package/dist/gateway/auth/wallet.js +43 -0
- package/dist/gateway/auth/wallet.js.map +1 -0
- package/dist/gateway/bundle.d.ts +127 -0
- package/dist/gateway/bundle.d.ts.map +1 -0
- package/dist/gateway/bundle.js +604 -0
- package/dist/gateway/bundle.js.map +1 -0
- package/dist/gateway/bundle.test.d.ts +2 -0
- package/dist/gateway/bundle.test.d.ts.map +1 -0
- package/dist/gateway/bundle.test.js +277 -0
- package/dist/gateway/bundle.test.js.map +1 -0
- package/dist/gateway/buyer-control.d.ts +33 -0
- package/dist/gateway/buyer-control.d.ts.map +1 -0
- package/dist/gateway/buyer-control.js +93 -0
- package/dist/gateway/buyer-control.js.map +1 -0
- package/dist/gateway/buyer-policy-probe.d.ts +41 -0
- package/dist/gateway/buyer-policy-probe.d.ts.map +1 -0
- package/dist/gateway/buyer-policy-probe.js +99 -0
- package/dist/gateway/buyer-policy-probe.js.map +1 -0
- package/dist/gateway/buyer-policy-probe.test.d.ts +2 -0
- package/dist/gateway/buyer-policy-probe.test.d.ts.map +1 -0
- package/dist/gateway/buyer-policy-probe.test.js +128 -0
- package/dist/gateway/buyer-policy-probe.test.js.map +1 -0
- package/dist/gateway/buyer-process.d.ts +30 -0
- package/dist/gateway/buyer-process.d.ts.map +1 -0
- package/dist/gateway/buyer-process.js +101 -0
- package/dist/gateway/buyer-process.js.map +1 -0
- package/dist/gateway/buyer-process.test.d.ts +2 -0
- package/dist/gateway/buyer-process.test.d.ts.map +1 -0
- package/dist/gateway/buyer-process.test.js +112 -0
- package/dist/gateway/buyer-process.test.js.map +1 -0
- package/dist/gateway/chat/routes.d.ts +45 -0
- package/dist/gateway/chat/routes.d.ts.map +1 -0
- package/dist/gateway/chat/routes.js +439 -0
- package/dist/gateway/chat/routes.js.map +1 -0
- package/dist/gateway/chat/routes.test.d.ts +2 -0
- package/dist/gateway/chat/routes.test.d.ts.map +1 -0
- package/dist/gateway/chat/routes.test.js +304 -0
- package/dist/gateway/chat/routes.test.js.map +1 -0
- package/dist/gateway/chat/tools.d.ts +35 -0
- package/dist/gateway/chat/tools.d.ts.map +1 -0
- package/dist/gateway/chat/tools.js +347 -0
- package/dist/gateway/chat/tools.js.map +1 -0
- package/dist/gateway/chat/tools.test.d.ts +2 -0
- package/dist/gateway/chat/tools.test.d.ts.map +1 -0
- package/dist/gateway/chat/tools.test.js +136 -0
- package/dist/gateway/chat/tools.test.js.map +1 -0
- package/dist/gateway/console-api/access.d.ts +52 -0
- package/dist/gateway/console-api/access.d.ts.map +1 -0
- package/dist/gateway/console-api/access.js +171 -0
- package/dist/gateway/console-api/access.js.map +1 -0
- package/dist/gateway/console-api/deps.d.ts +52 -0
- package/dist/gateway/console-api/deps.d.ts.map +1 -0
- package/dist/gateway/console-api/deps.js +2 -0
- package/dist/gateway/console-api/deps.js.map +1 -0
- package/dist/gateway/console-api/handlers/admin-tokens.d.ts +8 -0
- package/dist/gateway/console-api/handlers/admin-tokens.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/admin-tokens.js +48 -0
- package/dist/gateway/console-api/handlers/admin-tokens.js.map +1 -0
- package/dist/gateway/console-api/handlers/audit.d.ts +8 -0
- package/dist/gateway/console-api/handlers/audit.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/audit.js +19 -0
- package/dist/gateway/console-api/handlers/audit.js.map +1 -0
- package/dist/gateway/console-api/handlers/audit.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/audit.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/audit.test.js +241 -0
- package/dist/gateway/console-api/handlers/audit.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/data-settings.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/data-settings.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/data-settings.test.js +264 -0
- package/dist/gateway/console-api/handlers/data-settings.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/index.d.ts +4 -0
- package/dist/gateway/console-api/handlers/index.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/index.js +24 -0
- package/dist/gateway/console-api/handlers/index.js.map +1 -0
- package/dist/gateway/console-api/handlers/keys.d.ts +13 -0
- package/dist/gateway/console-api/handlers/keys.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/keys.js +128 -0
- package/dist/gateway/console-api/handlers/keys.js.map +1 -0
- package/dist/gateway/console-api/handlers/keys.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/keys.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/keys.test.js +166 -0
- package/dist/gateway/console-api/handlers/keys.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/network-buyer.d.ts +22 -0
- package/dist/gateway/console-api/handlers/network-buyer.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/network-buyer.js +39 -0
- package/dist/gateway/console-api/handlers/network-buyer.js.map +1 -0
- package/dist/gateway/console-api/handlers/network-mapping.d.ts +33 -0
- package/dist/gateway/console-api/handlers/network-mapping.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/network-mapping.js +219 -0
- package/dist/gateway/console-api/handlers/network-mapping.js.map +1 -0
- package/dist/gateway/console-api/handlers/network-test-helpers.d.ts +35 -0
- package/dist/gateway/console-api/handlers/network-test-helpers.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/network-test-helpers.js +121 -0
- package/dist/gateway/console-api/handlers/network-test-helpers.js.map +1 -0
- package/dist/gateway/console-api/handlers/network.d.ts +15 -0
- package/dist/gateway/console-api/handlers/network.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/network.js +57 -0
- package/dist/gateway/console-api/handlers/network.js.map +1 -0
- package/dist/gateway/console-api/handlers/network.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/network.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/network.test.js +383 -0
- package/dist/gateway/console-api/handlers/network.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/org.d.ts +10 -0
- package/dist/gateway/console-api/handlers/org.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/org.js +150 -0
- package/dist/gateway/console-api/handlers/org.js.map +1 -0
- package/dist/gateway/console-api/handlers/peer-lists.d.ts +5 -0
- package/dist/gateway/console-api/handlers/peer-lists.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/peer-lists.js +43 -0
- package/dist/gateway/console-api/handlers/peer-lists.js.map +1 -0
- package/dist/gateway/console-api/handlers/presets.d.ts +9 -0
- package/dist/gateway/console-api/handlers/presets.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/presets.js +79 -0
- package/dist/gateway/console-api/handlers/presets.js.map +1 -0
- package/dist/gateway/console-api/handlers/routing.d.ts +5 -0
- package/dist/gateway/console-api/handlers/routing.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/routing.js +20 -0
- package/dist/gateway/console-api/handlers/routing.js.map +1 -0
- package/dist/gateway/console-api/handlers/settings.d.ts +10 -0
- package/dist/gateway/console-api/handlers/settings.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/settings.js +38 -0
- package/dist/gateway/console-api/handlers/settings.js.map +1 -0
- package/dist/gateway/console-api/handlers/status.d.ts +9 -0
- package/dist/gateway/console-api/handlers/status.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/status.js +47 -0
- package/dist/gateway/console-api/handlers/status.js.map +1 -0
- package/dist/gateway/console-api/handlers/status.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/status.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/status.test.js +82 -0
- package/dist/gateway/console-api/handlers/status.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/usage.d.ts +10 -0
- package/dist/gateway/console-api/handlers/usage.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/usage.js +68 -0
- package/dist/gateway/console-api/handlers/usage.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-card-link.d.ts +29 -0
- package/dist/gateway/console-api/handlers/wallet-card-link.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-card-link.js +46 -0
- package/dist/gateway/console-api/handlers/wallet-card-link.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-chain.d.ts +26 -0
- package/dist/gateway/console-api/handlers/wallet-chain.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-chain.js +80 -0
- package/dist/gateway/console-api/handlers/wallet-chain.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-mapping.d.ts +45 -0
- package/dist/gateway/console-api/handlers/wallet-mapping.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-mapping.js +202 -0
- package/dist/gateway/console-api/handlers/wallet-mapping.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-operator.d.ts +41 -0
- package/dist/gateway/console-api/handlers/wallet-operator.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-operator.js +198 -0
- package/dist/gateway/console-api/handlers/wallet-operator.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-operator.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/wallet-operator.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet-operator.test.js +195 -0
- package/dist/gateway/console-api/handlers/wallet-operator.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet.d.ts +61 -0
- package/dist/gateway/console-api/handlers/wallet.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet.js +221 -0
- package/dist/gateway/console-api/handlers/wallet.js.map +1 -0
- package/dist/gateway/console-api/handlers/wallet.test.d.ts +2 -0
- package/dist/gateway/console-api/handlers/wallet.test.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/wallet.test.js +581 -0
- package/dist/gateway/console-api/handlers/wallet.test.js.map +1 -0
- package/dist/gateway/console-api/handlers/workspaces.d.ts +12 -0
- package/dist/gateway/console-api/handlers/workspaces.d.ts.map +1 -0
- package/dist/gateway/console-api/handlers/workspaces.js +96 -0
- package/dist/gateway/console-api/handlers/workspaces.js.map +1 -0
- package/dist/gateway/console-api/operator-types.d.ts +68 -0
- package/dist/gateway/console-api/operator-types.d.ts.map +1 -0
- package/dist/gateway/console-api/operator-types.js +21 -0
- package/dist/gateway/console-api/operator-types.js.map +1 -0
- package/dist/gateway/console-api/router.d.ts +97 -0
- package/dist/gateway/console-api/router.d.ts.map +1 -0
- package/dist/gateway/console-api/router.js +69 -0
- package/dist/gateway/console-api/router.js.map +1 -0
- package/dist/gateway/console-api/routes.test.d.ts +2 -0
- package/dist/gateway/console-api/routes.test.d.ts.map +1 -0
- package/dist/gateway/console-api/routes.test.js +331 -0
- package/dist/gateway/console-api/routes.test.js.map +1 -0
- package/dist/gateway/console-api/serialize.d.ts +33 -0
- package/dist/gateway/console-api/serialize.d.ts.map +1 -0
- package/dist/gateway/console-api/serialize.js +179 -0
- package/dist/gateway/console-api/serialize.js.map +1 -0
- package/dist/gateway/console-api/server.d.ts +38 -0
- package/dist/gateway/console-api/server.d.ts.map +1 -0
- package/dist/gateway/console-api/server.js +308 -0
- package/dist/gateway/console-api/server.js.map +1 -0
- package/dist/gateway/console-api/server.test.d.ts +2 -0
- package/dist/gateway/console-api/server.test.d.ts.map +1 -0
- package/dist/gateway/console-api/server.test.js +149 -0
- package/dist/gateway/console-api/server.test.js.map +1 -0
- package/dist/gateway/console-api/test-support.d.ts +59 -0
- package/dist/gateway/console-api/test-support.d.ts.map +1 -0
- package/dist/gateway/console-api/test-support.js +120 -0
- package/dist/gateway/console-api/test-support.js.map +1 -0
- package/dist/gateway/console-api/types.d.ts +779 -0
- package/dist/gateway/console-api/types.d.ts.map +1 -0
- package/dist/gateway/console-api/types.js +6 -0
- package/dist/gateway/console-api/types.js.map +1 -0
- package/dist/gateway/console-location.d.ts +21 -0
- package/dist/gateway/console-location.d.ts.map +1 -0
- package/dist/gateway/console-location.js +41 -0
- package/dist/gateway/console-location.js.map +1 -0
- package/dist/gateway/console-recovery.d.ts +34 -0
- package/dist/gateway/console-recovery.d.ts.map +1 -0
- package/dist/gateway/console-recovery.js +94 -0
- package/dist/gateway/console-recovery.js.map +1 -0
- package/dist/gateway/console-recovery.test.d.ts +2 -0
- package/dist/gateway/console-recovery.test.d.ts.map +1 -0
- package/dist/gateway/console-recovery.test.js +106 -0
- package/dist/gateway/console-recovery.test.js.map +1 -0
- package/dist/gateway/console.d.ts +18 -0
- package/dist/gateway/console.d.ts.map +1 -0
- package/dist/gateway/console.js +101 -0
- package/dist/gateway/console.js.map +1 -0
- package/dist/gateway/console.test.d.ts +2 -0
- package/dist/gateway/console.test.d.ts.map +1 -0
- package/dist/gateway/console.test.js +165 -0
- package/dist/gateway/console.test.js.map +1 -0
- package/dist/gateway/errors.d.ts +3 -0
- package/dist/gateway/errors.d.ts.map +1 -0
- package/dist/gateway/errors.js +5 -0
- package/dist/gateway/errors.js.map +1 -0
- package/dist/gateway/exposure.d.ts +33 -0
- package/dist/gateway/exposure.d.ts.map +1 -0
- package/dist/gateway/exposure.js +146 -0
- package/dist/gateway/exposure.js.map +1 -0
- package/dist/gateway/exposure.test.d.ts +2 -0
- package/dist/gateway/exposure.test.d.ts.map +1 -0
- package/dist/gateway/exposure.test.js +93 -0
- package/dist/gateway/exposure.test.js.map +1 -0
- package/dist/gateway/gateway-policy.test.d.ts +2 -0
- package/dist/gateway/gateway-policy.test.d.ts.map +1 -0
- package/dist/gateway/gateway-policy.test.js +404 -0
- package/dist/gateway/gateway-policy.test.js.map +1 -0
- package/dist/gateway/gateway.test.js +47 -25
- package/dist/gateway/gateway.test.js.map +1 -1
- package/dist/gateway/keys.d.ts +2 -0
- package/dist/gateway/keys.d.ts.map +1 -1
- package/dist/gateway/keys.js +2 -0
- package/dist/gateway/keys.js.map +1 -1
- package/dist/gateway/limits.d.ts +32 -8
- package/dist/gateway/limits.d.ts.map +1 -1
- package/dist/gateway/limits.js +27 -11
- package/dist/gateway/limits.js.map +1 -1
- package/dist/gateway/observability.d.ts +51 -0
- package/dist/gateway/observability.d.ts.map +1 -0
- package/dist/gateway/observability.js +136 -0
- package/dist/gateway/observability.js.map +1 -0
- package/dist/gateway/policy-resolver.d.ts +73 -0
- package/dist/gateway/policy-resolver.d.ts.map +1 -0
- package/dist/gateway/policy-resolver.js +142 -0
- package/dist/gateway/policy-resolver.js.map +1 -0
- package/dist/gateway/policy-resolver.test.d.ts +2 -0
- package/dist/gateway/policy-resolver.test.d.ts.map +1 -0
- package/dist/gateway/policy-resolver.test.js +273 -0
- package/dist/gateway/policy-resolver.test.js.map +1 -0
- package/dist/gateway/request-errors.test.d.ts +2 -0
- package/dist/gateway/request-errors.test.d.ts.map +1 -0
- package/dist/gateway/request-errors.test.js +108 -0
- package/dist/gateway/request-errors.test.js.map +1 -0
- package/dist/gateway/request-shaping.d.ts +25 -0
- package/dist/gateway/request-shaping.d.ts.map +1 -0
- package/dist/gateway/request-shaping.js +66 -0
- package/dist/gateway/request-shaping.js.map +1 -0
- package/dist/gateway/response-usage.d.ts +35 -0
- package/dist/gateway/response-usage.d.ts.map +1 -0
- package/dist/gateway/response-usage.js +167 -0
- package/dist/gateway/response-usage.js.map +1 -0
- package/dist/gateway/response-usage.test.d.ts +2 -0
- package/dist/gateway/response-usage.test.d.ts.map +1 -0
- package/dist/gateway/response-usage.test.js +78 -0
- package/dist/gateway/response-usage.test.js.map +1 -0
- package/dist/gateway/runtime.d.ts +25 -0
- package/dist/gateway/runtime.d.ts.map +1 -1
- package/dist/gateway/runtime.js +39 -19
- package/dist/gateway/runtime.js.map +1 -1
- package/dist/gateway/server.d.ts +68 -2
- package/dist/gateway/server.d.ts.map +1 -1
- package/dist/gateway/server.js +532 -116
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/services/audit.d.ts +16 -0
- package/dist/gateway/services/audit.d.ts.map +1 -0
- package/dist/gateway/services/audit.js +18 -0
- package/dist/gateway/services/audit.js.map +1 -0
- package/dist/gateway/services/context.d.ts +66 -0
- package/dist/gateway/services/context.d.ts.map +1 -0
- package/dist/gateway/services/context.js +52 -0
- package/dist/gateway/services/context.js.map +1 -0
- package/dist/gateway/services/keys.d.ts +78 -0
- package/dist/gateway/services/keys.d.ts.map +1 -0
- package/dist/gateway/services/keys.js +232 -0
- package/dist/gateway/services/keys.js.map +1 -0
- package/dist/gateway/services/members.d.ts +72 -0
- package/dist/gateway/services/members.d.ts.map +1 -0
- package/dist/gateway/services/members.js +161 -0
- package/dist/gateway/services/members.js.map +1 -0
- package/dist/gateway/services/network.d.ts +36 -0
- package/dist/gateway/services/network.d.ts.map +1 -0
- package/dist/gateway/services/network.js +147 -0
- package/dist/gateway/services/network.js.map +1 -0
- package/dist/gateway/services/operator.d.ts +98 -0
- package/dist/gateway/services/operator.d.ts.map +1 -0
- package/dist/gateway/services/operator.js +170 -0
- package/dist/gateway/services/operator.js.map +1 -0
- package/dist/gateway/services/operator.test.d.ts +2 -0
- package/dist/gateway/services/operator.test.d.ts.map +1 -0
- package/dist/gateway/services/operator.test.js +184 -0
- package/dist/gateway/services/operator.test.js.map +1 -0
- package/dist/gateway/services/peer-lists.d.ts +20 -0
- package/dist/gateway/services/peer-lists.d.ts.map +1 -0
- package/dist/gateway/services/peer-lists.js +134 -0
- package/dist/gateway/services/peer-lists.js.map +1 -0
- package/dist/gateway/services/presets.d.ts +34 -0
- package/dist/gateway/services/presets.d.ts.map +1 -0
- package/dist/gateway/services/presets.js +134 -0
- package/dist/gateway/services/presets.js.map +1 -0
- package/dist/gateway/services/routing.d.ts +13 -0
- package/dist/gateway/services/routing.d.ts.map +1 -0
- package/dist/gateway/services/routing.js +18 -0
- package/dist/gateway/services/routing.js.map +1 -0
- package/dist/gateway/services/services.test.d.ts +2 -0
- package/dist/gateway/services/services.test.d.ts.map +1 -0
- package/dist/gateway/services/services.test.js +476 -0
- package/dist/gateway/services/services.test.js.map +1 -0
- package/dist/gateway/services/settings.d.ts +68 -0
- package/dist/gateway/services/settings.d.ts.map +1 -0
- package/dist/gateway/services/settings.js +580 -0
- package/dist/gateway/services/settings.js.map +1 -0
- package/dist/gateway/services/tokens.d.ts +29 -0
- package/dist/gateway/services/tokens.d.ts.map +1 -0
- package/dist/gateway/services/tokens.js +48 -0
- package/dist/gateway/services/tokens.js.map +1 -0
- package/dist/gateway/services/usage.d.ts +55 -0
- package/dist/gateway/services/usage.d.ts.map +1 -0
- package/dist/gateway/services/usage.js +225 -0
- package/dist/gateway/services/usage.js.map +1 -0
- package/dist/gateway/services/wallet-address-env.test.d.ts +2 -0
- package/dist/gateway/services/wallet-address-env.test.d.ts.map +1 -0
- package/dist/gateway/services/wallet-address-env.test.js +119 -0
- package/dist/gateway/services/wallet-address-env.test.js.map +1 -0
- package/dist/gateway/services/wallet-address.d.ts +40 -0
- package/dist/gateway/services/wallet-address.d.ts.map +1 -0
- package/dist/gateway/services/wallet-address.js +116 -0
- package/dist/gateway/services/wallet-address.js.map +1 -0
- package/dist/gateway/services/wallet-address.test.d.ts +2 -0
- package/dist/gateway/services/wallet-address.test.d.ts.map +1 -0
- package/dist/gateway/services/wallet-address.test.js +84 -0
- package/dist/gateway/services/wallet-address.test.js.map +1 -0
- package/dist/gateway/services/workspaces.d.ts +75 -0
- package/dist/gateway/services/workspaces.d.ts.map +1 -0
- package/dist/gateway/services/workspaces.js +228 -0
- package/dist/gateway/services/workspaces.js.map +1 -0
- package/dist/gateway/spend-durability.test.d.ts +2 -0
- package/dist/gateway/spend-durability.test.d.ts.map +1 -0
- package/dist/gateway/spend-durability.test.js +330 -0
- package/dist/gateway/spend-durability.test.js.map +1 -0
- package/dist/gateway/spend-feed.d.ts +11 -1
- package/dist/gateway/spend-feed.d.ts.map +1 -1
- package/dist/gateway/spend-feed.js +17 -4
- package/dist/gateway/spend-feed.js.map +1 -1
- package/dist/gateway/spend-feed.test.d.ts +2 -0
- package/dist/gateway/spend-feed.test.d.ts.map +1 -0
- package/dist/gateway/spend-feed.test.js +34 -0
- package/dist/gateway/spend-feed.test.js.map +1 -0
- package/dist/gateway/store-data.test.d.ts +2 -0
- package/dist/gateway/store-data.test.d.ts.map +1 -0
- package/dist/gateway/store-data.test.js +346 -0
- package/dist/gateway/store-data.test.js.map +1 -0
- package/dist/gateway/store-migrations.d.ts +6 -0
- package/dist/gateway/store-migrations.d.ts.map +1 -0
- package/dist/gateway/store-migrations.js +301 -0
- package/dist/gateway/store-migrations.js.map +1 -0
- package/dist/gateway/store.d.ts +595 -10
- package/dist/gateway/store.d.ts.map +1 -1
- package/dist/gateway/store.js +1242 -120
- package/dist/gateway/store.js.map +1 -1
- package/dist/gateway/store.test.d.ts +2 -0
- package/dist/gateway/store.test.d.ts.map +1 -0
- package/dist/gateway/store.test.js +185 -0
- package/dist/gateway/store.test.js.map +1 -0
- package/dist/proxy/buyer-chain-reader.d.ts +68 -0
- package/dist/proxy/buyer-chain-reader.d.ts.map +1 -0
- package/dist/proxy/buyer-chain-reader.js +152 -0
- package/dist/proxy/buyer-chain-reader.js.map +1 -0
- package/dist/proxy/buyer-chain-reader.test.d.ts +2 -0
- package/dist/proxy/buyer-chain-reader.test.d.ts.map +1 -0
- package/dist/proxy/buyer-chain-reader.test.js +102 -0
- package/dist/proxy/buyer-chain-reader.test.js.map +1 -0
- package/dist/proxy/buyer-proxy.d.ts +169 -3
- package/dist/proxy/buyer-proxy.d.ts.map +1 -1
- package/dist/proxy/buyer-proxy.js +873 -117
- package/dist/proxy/buyer-proxy.js.map +1 -1
- package/dist/proxy/buyer-proxy.test.js +31 -0
- package/dist/proxy/buyer-proxy.test.js.map +1 -1
- package/dist/proxy/chain-read-cache.d.ts +47 -0
- package/dist/proxy/chain-read-cache.d.ts.map +1 -0
- package/dist/proxy/chain-read-cache.js +110 -0
- package/dist/proxy/chain-read-cache.js.map +1 -0
- package/dist/proxy/chain-read-cache.test.d.ts +2 -0
- package/dist/proxy/chain-read-cache.test.d.ts.map +1 -0
- package/dist/proxy/chain-read-cache.test.js +75 -0
- package/dist/proxy/chain-read-cache.test.js.map +1 -0
- package/dist/proxy/chain-rpc-test-support.d.ts +31 -0
- package/dist/proxy/chain-rpc-test-support.d.ts.map +1 -0
- package/dist/proxy/chain-rpc-test-support.js +136 -0
- package/dist/proxy/chain-rpc-test-support.js.map +1 -0
- package/dist/proxy/chain-rpc.d.ts +121 -0
- package/dist/proxy/chain-rpc.d.ts.map +1 -0
- package/dist/proxy/chain-rpc.js +420 -0
- package/dist/proxy/chain-rpc.js.map +1 -0
- package/dist/proxy/chain-rpc.test.d.ts +2 -0
- package/dist/proxy/chain-rpc.test.d.ts.map +1 -0
- package/dist/proxy/chain-rpc.test.js +180 -0
- package/dist/proxy/chain-rpc.test.js.map +1 -0
- package/dist/proxy/deposit-watch-hub.d.ts +47 -0
- package/dist/proxy/deposit-watch-hub.d.ts.map +1 -0
- package/dist/proxy/deposit-watch-hub.js +111 -0
- package/dist/proxy/deposit-watch-hub.js.map +1 -0
- package/dist/proxy/deposit-watch-hub.test.d.ts +2 -0
- package/dist/proxy/deposit-watch-hub.test.d.ts.map +1 -0
- package/dist/proxy/deposit-watch-hub.test.js +133 -0
- package/dist/proxy/deposit-watch-hub.test.js.map +1 -0
- package/dist/proxy/deposit-watcher.d.ts +44 -4
- package/dist/proxy/deposit-watcher.d.ts.map +1 -1
- package/dist/proxy/deposit-watcher.js +76 -11
- package/dist/proxy/deposit-watcher.js.map +1 -1
- package/dist/proxy/deposit-watcher.test.js +54 -1
- package/dist/proxy/deposit-watcher.test.js.map +1 -1
- package/dist/proxy/gateway-policy.test.d.ts +2 -0
- package/dist/proxy/gateway-policy.test.d.ts.map +1 -0
- package/dist/proxy/gateway-policy.test.js +576 -0
- package/dist/proxy/gateway-policy.test.js.map +1 -0
- package/dist/proxy/network-models.d.ts +2 -0
- package/dist/proxy/network-models.d.ts.map +1 -1
- package/dist/proxy/network-models.js +3 -1
- package/dist/proxy/network-models.js.map +1 -1
- package/dist/proxy/route-policy.d.ts +97 -0
- package/dist/proxy/route-policy.d.ts.map +1 -0
- package/dist/proxy/route-policy.js +230 -0
- package/dist/proxy/route-policy.js.map +1 -0
- package/dist/proxy/route-policy.test.d.ts +2 -0
- package/dist/proxy/route-policy.test.d.ts.map +1 -0
- package/dist/proxy/route-policy.test.js +120 -0
- package/dist/proxy/route-policy.test.js.map +1 -0
- package/dist/proxy/spend-attribution.d.ts +41 -10
- package/dist/proxy/spend-attribution.d.ts.map +1 -1
- package/dist/proxy/spend-attribution.js +133 -37
- package/dist/proxy/spend-attribution.js.map +1 -1
- package/dist/proxy/tee-control.d.ts +3 -1
- package/dist/proxy/tee-control.d.ts.map +1 -1
- package/dist/proxy/tee-control.js +5 -3
- package/dist/proxy/tee-control.js.map +1 -1
- package/dist/proxy/telemetry.d.ts +2 -1
- package/dist/proxy/telemetry.d.ts.map +1 -1
- package/dist/proxy/telemetry.js +10 -5
- package/dist/proxy/telemetry.js.map +1 -1
- package/dist/routing-policy/policy.d.ts +149 -0
- package/dist/routing-policy/policy.d.ts.map +1 -0
- package/dist/routing-policy/policy.js +450 -0
- package/dist/routing-policy/policy.js.map +1 -0
- package/dist/routing-policy/policy.test.d.ts +2 -0
- package/dist/routing-policy/policy.test.d.ts.map +1 -0
- package/dist/routing-policy/policy.test.js +134 -0
- package/dist/routing-policy/policy.test.js.map +1 -0
- package/package.json +15 -7
package/README.md
CHANGED
|
@@ -91,6 +91,8 @@ antseed seller start
|
|
|
91
91
|
|
|
92
92
|
Buyer runtime state lives in the data directory, not just in the config file. By default that directory is `~/.antseed`, which contains `buyer.state.json`, SQLite databases, payment-channel state, and the fallback `identity.key`.
|
|
93
93
|
|
|
94
|
+
To keep `identity.key` (and every `buyer-identities/<name>/identity.key`) encrypted at rest, set `ANTSEED_PASSPHRASE`, or `ANTSEED_PASSPHRASE_FILE` to a file whose first line is the passphrase (at least 12 characters to encrypt keys with). New keys are then written encrypted; `antseed buyer identity protect --all` encrypts existing ones and `antseed buyer identity unprotect --all --yes` reverses it. An encrypted key cannot be read without the passphrase. When neither variable is set, `buyer start`, `gateway start`, `buyer identity protect` and `unprotect` ask for it on the terminal when they need it, hidden and never stored; without a terminal they fail instead. `ANTSEED_IDENTITY_HEX` still overrides the default key.
|
|
95
|
+
|
|
94
96
|
Use a separate data directory for each independent buyer node, service integration, test run, or concurrent process:
|
|
95
97
|
|
|
96
98
|
```bash
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Identity } from '@antseed/node';
|
|
1
|
+
import { FileIdentityStore, type Identity } from '@antseed/node';
|
|
2
2
|
export interface StoredBuyerIdentity {
|
|
3
3
|
name: string;
|
|
4
4
|
/** Null when the key cannot be read; `error` says why. */
|
|
@@ -34,8 +34,45 @@ export declare function readDefaultWallet(dataDir: string): Promise<{
|
|
|
34
34
|
address: string | null;
|
|
35
35
|
note: string;
|
|
36
36
|
}>;
|
|
37
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* The default identity exactly as the buyer loads it: ANTSEED_IDENTITY_HEX
|
|
39
|
+
* (how the desktop app hands the buyer its wallet) first, then the data
|
|
40
|
+
* dir's identity.key. Goes through the node's own loader, so a key it already
|
|
41
|
+
* took from the environment in this process is found too, but never creates
|
|
42
|
+
* a key. `fromEnv` says the key did not come from the data dir.
|
|
43
|
+
*/
|
|
44
|
+
export declare function loadDefaultBuyerIdentity(dataDir: string): Promise<{
|
|
45
|
+
identity: Identity | null;
|
|
46
|
+
fromEnv: boolean;
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* The desktop app keeps the default wallet encrypted (identity.enc) and hands
|
|
50
|
+
* it to the buyer in ANTSEED_IDENTITY_HEX; without that variable a CLI
|
|
51
|
+
* process cannot know which wallet the buyer pays from.
|
|
52
|
+
*/
|
|
53
|
+
export declare function hasDesktopIdentity(dataDir: string): Promise<boolean>;
|
|
54
|
+
/** The signing key of any identity, default included, as the buyer loads it; null when none is stored. */
|
|
55
|
+
export declare function loadBuyerSigningIdentity(dataDir: string, name: string): Promise<Identity | null>;
|
|
56
|
+
/** Wallet address of any identity, default included (honouring ANTSEED_IDENTITY_HEX); null when unknown or unreadable. */
|
|
38
57
|
export declare function buyerIdentityAddress(dataDir: string, name: string): Promise<string | null>;
|
|
58
|
+
/**
|
|
59
|
+
* The address of the default wallet stored in a data dir (its identity.key),
|
|
60
|
+
* never ANTSEED_IDENTITY_HEX: for a data dir that is not the one this
|
|
61
|
+
* process's buyer runs on, such as a freshly imported bundle. The node's
|
|
62
|
+
* loader keeps the variable's key for the whole process whatever dir it is
|
|
63
|
+
* asked about. An encrypted key is not decrypted for it. Null when there is
|
|
64
|
+
* no readable key.
|
|
65
|
+
*/
|
|
66
|
+
export declare function storedDefaultIdentityAddress(dataDir: string): Promise<string | null>;
|
|
67
|
+
/**
|
|
68
|
+
* The wallet key files stored in a data dir: the default identity.key, each
|
|
69
|
+
* buyer identity's and the archived ones, whose wallets may still hold funds.
|
|
70
|
+
* With `name`, that identity's only.
|
|
71
|
+
*/
|
|
72
|
+
export declare function storedWalletKeys(dataDir: string, name?: string): Promise<Array<{
|
|
73
|
+
name: string;
|
|
74
|
+
store: FileIdentityStore;
|
|
75
|
+
}>>;
|
|
39
76
|
/** Move an identity aside; its key is kept because the wallet may still hold funds. */
|
|
40
77
|
export declare function archiveBuyerIdentity(dataDir: string, name: string): Promise<string>;
|
|
41
78
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/buyer-identities/store.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/buyer-identities/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,iBAAiB,EAKjB,KAAK,QAAQ,EAEd,MAAM,eAAe,CAAA;AAgBtB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,0DAA0D;IAC1D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK1D;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnD;AAqBD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAevH;AAED,+EAA+E;AAC/E,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzF;AAWD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAY/F;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAuBzF;AAED,mEAAmE;AACnE,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAU1G;AAID;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAgBxH;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpE;AAED,0GAA0G;AAC1G,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAGtG;AAED,0HAA0H;AAC1H,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEhG;AAED;;;;;;;GAOG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE1F;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAAC,CAsBjI;AAED,uFAAuF;AACvF,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASzF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomBytes } from 'node:crypto';
|
|
2
2
|
import { access, mkdir, readdir, readFile, rename, stat, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { isAbsolute, join } from 'node:path';
|
|
4
|
-
import { DEFAULT_BUYER_IDENTITY, FileIdentityStore, identityFromPrivateKeyHex, isValidBuyerIdentityName, } from '@antseed/node';
|
|
4
|
+
import { DEFAULT_BUYER_IDENTITY, FileIdentityStore, identityFromPrivateKeyHex, isValidBuyerIdentityName, loadOrCreateIdentity, PASSPHRASE_ENV, } from '@antseed/node';
|
|
5
5
|
/**
|
|
6
6
|
* Extra buyer wallets live next to the default identity, one directory each:
|
|
7
7
|
* <dataDir>/buyer-identities/<name>/identity.key (the private key), or
|
|
@@ -129,9 +129,12 @@ export async function listBuyerIdentities(dataDir) {
|
|
|
129
129
|
const dir = buyerIdentityDir(dataDir, name);
|
|
130
130
|
const keyFrom = await readKeySourceRef(dir).catch(() => undefined);
|
|
131
131
|
try {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
// A key stored encrypted is listed by the address beside it, without the passphrase.
|
|
133
|
+
const address = keyFrom === null
|
|
134
|
+
? await new FileIdentityStore(dir).address()
|
|
135
|
+
: (await loadBuyerIdentity(dataDir, name))?.wallet.address;
|
|
136
|
+
if (address)
|
|
137
|
+
identities.push({ name, address, dir, ...(keyFrom ? { keyFrom } : {}) });
|
|
135
138
|
}
|
|
136
139
|
catch (err) {
|
|
137
140
|
identities.push({ name, address: null, dir, ...(keyFrom ? { keyFrom } : {}), error: err instanceof Error ? err.message : String(err) });
|
|
@@ -142,20 +145,106 @@ export async function listBuyerIdentities(dataDir) {
|
|
|
142
145
|
/** The default wallet's address, or why the CLI cannot read it. */
|
|
143
146
|
export async function readDefaultWallet(dataDir) {
|
|
144
147
|
try {
|
|
145
|
-
const
|
|
146
|
-
if (
|
|
147
|
-
return { address:
|
|
148
|
+
const { identity, fromEnv } = await loadDefaultBuyerIdentity(dataDir);
|
|
149
|
+
if (identity)
|
|
150
|
+
return { address: identity.wallet.address, note: fromEnv ? 'from ANTSEED_IDENTITY_HEX' : '' };
|
|
148
151
|
return { address: null, note: 'created on first buyer start' };
|
|
149
152
|
}
|
|
150
153
|
catch {
|
|
154
|
+
const locked = await storedDefaultIdentityAddress(dataDir);
|
|
155
|
+
if (locked)
|
|
156
|
+
return { address: locked, note: `encrypted; set ${PASSPHRASE_ENV} to use it` };
|
|
151
157
|
return { address: null, note: 'encrypted by the AI VPN' };
|
|
152
158
|
}
|
|
153
159
|
}
|
|
154
|
-
|
|
160
|
+
class NoStoredDefaultIdentity extends Error {
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* The default identity exactly as the buyer loads it: ANTSEED_IDENTITY_HEX
|
|
164
|
+
* (how the desktop app hands the buyer its wallet) first, then the data
|
|
165
|
+
* dir's identity.key. Goes through the node's own loader, so a key it already
|
|
166
|
+
* took from the environment in this process is found too, but never creates
|
|
167
|
+
* a key. `fromEnv` says the key did not come from the data dir.
|
|
168
|
+
*/
|
|
169
|
+
export async function loadDefaultBuyerIdentity(dataDir) {
|
|
170
|
+
let readDisk = false;
|
|
171
|
+
const store = {
|
|
172
|
+
load: () => {
|
|
173
|
+
readDisk = true;
|
|
174
|
+
return new FileIdentityStore(dataDir).load();
|
|
175
|
+
},
|
|
176
|
+
save: () => Promise.reject(new NoStoredDefaultIdentity()),
|
|
177
|
+
};
|
|
178
|
+
try {
|
|
179
|
+
const identity = await loadOrCreateIdentity(store);
|
|
180
|
+
return { identity, fromEnv: !readDisk };
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
if (err instanceof NoStoredDefaultIdentity)
|
|
184
|
+
return { identity: null, fromEnv: false };
|
|
185
|
+
throw err;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* The desktop app keeps the default wallet encrypted (identity.enc) and hands
|
|
190
|
+
* it to the buyer in ANTSEED_IDENTITY_HEX; without that variable a CLI
|
|
191
|
+
* process cannot know which wallet the buyer pays from.
|
|
192
|
+
*/
|
|
193
|
+
export function hasDesktopIdentity(dataDir) {
|
|
194
|
+
return exists(join(dataDir, 'identity.enc'));
|
|
195
|
+
}
|
|
196
|
+
/** The signing key of any identity, default included, as the buyer loads it; null when none is stored. */
|
|
197
|
+
export async function loadBuyerSigningIdentity(dataDir, name) {
|
|
198
|
+
if (name === DEFAULT_BUYER_IDENTITY)
|
|
199
|
+
return (await loadDefaultBuyerIdentity(dataDir)).identity;
|
|
200
|
+
return loadBuyerIdentity(dataDir, name);
|
|
201
|
+
}
|
|
202
|
+
/** Wallet address of any identity, default included (honouring ANTSEED_IDENTITY_HEX); null when unknown or unreadable. */
|
|
155
203
|
export async function buyerIdentityAddress(dataDir, name) {
|
|
204
|
+
return (await loadBuyerSigningIdentity(dataDir, name).catch(() => null))?.wallet.address ?? null;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* The address of the default wallet stored in a data dir (its identity.key),
|
|
208
|
+
* never ANTSEED_IDENTITY_HEX: for a data dir that is not the one this
|
|
209
|
+
* process's buyer runs on, such as a freshly imported bundle. The node's
|
|
210
|
+
* loader keeps the variable's key for the whole process whatever dir it is
|
|
211
|
+
* asked about. An encrypted key is not decrypted for it. Null when there is
|
|
212
|
+
* no readable key.
|
|
213
|
+
*/
|
|
214
|
+
export async function storedDefaultIdentityAddress(dataDir) {
|
|
215
|
+
return new FileIdentityStore(dataDir).address().catch(() => null);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* The wallet key files stored in a data dir: the default identity.key, each
|
|
219
|
+
* buyer identity's and the archived ones, whose wallets may still hold funds.
|
|
220
|
+
* With `name`, that identity's only.
|
|
221
|
+
*/
|
|
222
|
+
export async function storedWalletKeys(dataDir, name) {
|
|
156
223
|
if (name === DEFAULT_BUYER_IDENTITY)
|
|
157
|
-
return
|
|
158
|
-
|
|
224
|
+
return [{ name, store: new FileIdentityStore(dataDir) }];
|
|
225
|
+
if (name !== undefined) {
|
|
226
|
+
assertBuyerIdentityName(name);
|
|
227
|
+
const dir = buyerIdentityDir(dataDir, name);
|
|
228
|
+
const keyFrom = await readKeySourceRef(dir);
|
|
229
|
+
if (keyFrom)
|
|
230
|
+
throw new Error(`Buyer identity "${name}" reads its key from ${keyFrom}; nothing is stored in the data dir.`);
|
|
231
|
+
return [{ name, store: new FileIdentityStore(dir) }];
|
|
232
|
+
}
|
|
233
|
+
const dirs = [{ name: DEFAULT_BUYER_IDENTITY, dir: dataDir }];
|
|
234
|
+
const root = buyerIdentitiesDir(dataDir);
|
|
235
|
+
for (const entry of (await readdir(root).catch(() => [])).sort()) {
|
|
236
|
+
if (isValidBuyerIdentityName(entry) && entry !== DEFAULT_BUYER_IDENTITY)
|
|
237
|
+
dirs.push({ name: entry, dir: join(root, entry) });
|
|
238
|
+
}
|
|
239
|
+
for (const entry of (await readdir(join(root, ARCHIVE_DIR)).catch(() => [])).sort()) {
|
|
240
|
+
dirs.push({ name: `${ARCHIVE_DIR}/${entry}`, dir: join(root, ARCHIVE_DIR, entry) });
|
|
241
|
+
}
|
|
242
|
+
const stored = [];
|
|
243
|
+
for (const { name: keyName, dir } of dirs) {
|
|
244
|
+
if (await exists(join(dir, KEY_FILE)))
|
|
245
|
+
stored.push({ name: keyName, store: new FileIdentityStore(dir) });
|
|
246
|
+
}
|
|
247
|
+
return stored;
|
|
159
248
|
}
|
|
160
249
|
/** Move an identity aside; its key is kept because the wallet may still hold funds. */
|
|
161
250
|
export async function archiveBuyerIdentity(dataDir, name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/buyer-identities/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5F,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/buyer-identities/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { type Command } from 'commander';
|
|
2
|
-
|
|
2
|
+
import { type PassphrasePrompt } from '../../wallet-passphrase.js';
|
|
3
|
+
/** `prompt` replaces the terminal prompt for the passphrase, for tests. */
|
|
4
|
+
export declare function registerBuyerIdentityCommands(buyerCmd: Command, prompt?: PassphrasePrompt): void;
|
|
3
5
|
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAA;AAuB9D,OAAO,EAA+D,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAa/H,2EAA2E;AAC3E,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,IAAI,CA6IhG"}
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
import { InvalidArgumentError } from 'commander';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import Table from 'cli-table3';
|
|
4
|
-
import { DEFAULT_BUYER_IDENTITY, DepositsClient, resolveChainConfig } from '@antseed/node';
|
|
4
|
+
import { assertNewIdentityPassphrase, DEFAULT_BUYER_IDENTITY, DepositsClient, FileIdentityStore, MIN_PASSPHRASE_LENGTH, PASSPHRASE_ENV, PASSPHRASE_FILE_ENV, resolveChainConfig, } from '@antseed/node';
|
|
5
5
|
import { getGlobalOptions } from '../types.js';
|
|
6
6
|
import { loadConfig } from '../../../config/loader.js';
|
|
7
|
-
import { archiveBuyerIdentity, createBuyerIdentity, listBuyerIdentities, parseKeySource, readDefaultWallet } from '../../../buyer-identities/store.js';
|
|
7
|
+
import { archiveBuyerIdentity, createBuyerIdentity, listBuyerIdentities, parseKeySource, readDefaultWallet, storedWalletKeys, } from '../../../buyer-identities/store.js';
|
|
8
|
+
import { anyKeyEncrypted, verifiedWalletPassphrase, walletPassphrase } from '../../wallet-passphrase.js';
|
|
8
9
|
function formatUsdc(baseUnits) {
|
|
9
10
|
return (Number(baseUnits) / 1_000_000).toFixed(2);
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
+
async function walletKeysFor(dataDir, name, all) {
|
|
13
|
+
if (all && name)
|
|
14
|
+
throw new Error('Pass an identity name or --all, not both.');
|
|
15
|
+
const keys = await storedWalletKeys(dataDir, all ? undefined : (name ?? DEFAULT_BUYER_IDENTITY));
|
|
16
|
+
if (keys.length === 0)
|
|
17
|
+
throw new Error(`No wallet keys are stored in ${dataDir}.`);
|
|
18
|
+
return keys;
|
|
19
|
+
}
|
|
20
|
+
/** `prompt` replaces the terminal prompt for the passphrase, for tests. */
|
|
21
|
+
export function registerBuyerIdentityCommands(buyerCmd, prompt) {
|
|
12
22
|
const identity = buyerCmd
|
|
13
23
|
.command('identity')
|
|
14
24
|
.description('Extra buyer wallets one running buyer can pay as (select per request with x-antseed-buyer-identity)');
|
|
@@ -52,14 +62,15 @@ export function registerBuyerIdentityCommands(buyerCmd) {
|
|
|
52
62
|
const globalOpts = getGlobalOptions(buyerCmd);
|
|
53
63
|
const stored = await listBuyerIdentities(globalOpts.dataDir);
|
|
54
64
|
const defaultWallet = await readDefaultWallet(globalOpts.dataDir);
|
|
65
|
+
const encrypted = async (dir) => (await new FileIdentityStore(dir).format().catch(() => null)) === 'encrypted';
|
|
55
66
|
const rows = [
|
|
56
|
-
{ name: DEFAULT_BUYER_IDENTITY, address: defaultWallet.address },
|
|
57
|
-
...stored.map((entry) => ({
|
|
67
|
+
{ name: DEFAULT_BUYER_IDENTITY, address: defaultWallet.address, encrypted: await encrypted(globalOpts.dataDir) },
|
|
68
|
+
...await Promise.all(stored.map(async (entry) => ({
|
|
58
69
|
name: entry.name,
|
|
59
70
|
address: entry.address,
|
|
60
|
-
...(entry.keyFrom ? { keyFrom: entry.keyFrom } : {}),
|
|
71
|
+
...(entry.keyFrom ? { keyFrom: entry.keyFrom } : { encrypted: await encrypted(entry.dir) }),
|
|
61
72
|
...(entry.error ? { error: entry.error } : {}),
|
|
62
|
-
})),
|
|
73
|
+
}))),
|
|
63
74
|
];
|
|
64
75
|
if (options.balances) {
|
|
65
76
|
const config = await loadConfig(globalOpts.config);
|
|
@@ -96,12 +107,48 @@ export function registerBuyerIdentityCommands(buyerCmd) {
|
|
|
96
107
|
table.push([
|
|
97
108
|
row.name,
|
|
98
109
|
row.address ?? (row.error ? chalk.yellow(row.error) : chalk.dim(defaultWallet.note)),
|
|
99
|
-
row.keyFrom ?? 'data dir',
|
|
110
|
+
row.keyFrom ?? (row.encrypted ? 'data dir, encrypted' : 'data dir'),
|
|
100
111
|
...(options.balances ? [row.available ?? '-', row.reserved ?? '-'] : []),
|
|
101
112
|
]);
|
|
102
113
|
}
|
|
103
114
|
console.log(table.toString());
|
|
104
115
|
});
|
|
116
|
+
identity.command('protect')
|
|
117
|
+
.description(`Encrypt stored wallet keys with the passphrase in ${PASSPHRASE_ENV} (or the first line of ${PASSPHRASE_FILE_ENV}), asked on the terminal when neither is set; at least ${MIN_PASSPHRASE_LENGTH} characters`)
|
|
118
|
+
.argument('[name]', `identity to protect (default: ${DEFAULT_BUYER_IDENTITY})`)
|
|
119
|
+
.option('--all', 'every wallet key in the data dir, archived ones included', false)
|
|
120
|
+
.action(async (name, options) => {
|
|
121
|
+
const { dataDir } = getGlobalOptions(buyerCmd);
|
|
122
|
+
const keys = await walletKeysFor(dataDir, name, options.all);
|
|
123
|
+
// Checked against the keys already encrypted, so the data dir never holds keys under two passphrases.
|
|
124
|
+
const passphrase = await verifiedWalletPassphrase(dataDir, { confirmNew: true, ...(prompt ? { prompt } : {}) });
|
|
125
|
+
if (!passphrase) {
|
|
126
|
+
throw new Error(`Set ${PASSPHRASE_ENV} or ${PASSPHRASE_FILE_ENV} to the passphrase that should protect the keys.`);
|
|
127
|
+
}
|
|
128
|
+
assertNewIdentityPassphrase(passphrase);
|
|
129
|
+
for (const key of keys) {
|
|
130
|
+
const changed = await key.store.protect();
|
|
131
|
+
console.log(changed ? chalk.green(`Encrypted ${key.name}`) : chalk.dim(`${key.name} is already encrypted`));
|
|
132
|
+
}
|
|
133
|
+
console.log(chalk.dim(`Every process that uses these wallets (buyer, gateway) now needs ${PASSPHRASE_ENV} or ${PASSPHRASE_FILE_ENV}, or asks for the passphrase when started on a terminal. Keep the passphrase safe: without it the keys cannot be recovered.`));
|
|
134
|
+
});
|
|
135
|
+
identity.command('unprotect')
|
|
136
|
+
.description('Store encrypted wallet keys as plaintext again')
|
|
137
|
+
.argument('[name]', `identity to decrypt (default: ${DEFAULT_BUYER_IDENTITY})`)
|
|
138
|
+
.option('--all', 'every wallet key in the data dir, archived ones included', false)
|
|
139
|
+
.option('--yes', 'confirm writing the private keys to disk unencrypted', false)
|
|
140
|
+
.action(async (name, options) => {
|
|
141
|
+
const { dataDir } = getGlobalOptions(buyerCmd);
|
|
142
|
+
if (!options.yes)
|
|
143
|
+
throw new Error('This writes the private keys to disk unencrypted; pass --yes to confirm.');
|
|
144
|
+
const keys = await walletKeysFor(dataDir, name, options.all);
|
|
145
|
+
if (await anyKeyEncrypted(keys))
|
|
146
|
+
await walletPassphrase(prompt ? { prompt } : {});
|
|
147
|
+
for (const key of keys) {
|
|
148
|
+
const changed = await key.store.unprotect();
|
|
149
|
+
console.log(changed ? chalk.yellow(`Decrypted ${key.name}`) : chalk.dim(`${key.name} is not encrypted`));
|
|
150
|
+
}
|
|
151
|
+
});
|
|
105
152
|
identity.command('remove')
|
|
106
153
|
.description('Stop using a buyer identity; its key is archived, not deleted')
|
|
107
154
|
.argument('<name>', 'identity name')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAgB,MAAM,WAAW,CAAA;AAC9D,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,MAAM,YAAY,CAAA;AAC9B,OAAO,
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/identity.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { mkdtempSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import test, { afterEach, beforeEach, describe } from 'node:test';
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { FileIdentityStore, identityFromPrivateKeyHex, identityPassphraseEnv } from '@antseed/node';
|
|
8
|
+
import { archiveBuyerIdentity, createBuyerIdentity, listBuyerIdentities, loadBuyerIdentity, storedDefaultIdentityAddress, } from '../../../buyer-identities/store.js';
|
|
9
|
+
import { registerBuyerIdentityCommands } from './identity.js';
|
|
10
|
+
// The passphrase comes from a file here: unlike ANTSEED_PASSPHRASE, which the
|
|
11
|
+
// node takes out of the environment once, it can be switched off between tests.
|
|
12
|
+
let dataDir;
|
|
13
|
+
let passphraseFile;
|
|
14
|
+
function usePassphrase(passphrase) {
|
|
15
|
+
if (passphrase === null) {
|
|
16
|
+
delete process.env['ANTSEED_PASSPHRASE_FILE'];
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
writeFileSync(passphraseFile, `${passphrase}\n`);
|
|
20
|
+
process.env['ANTSEED_PASSPHRASE_FILE'] = passphraseFile;
|
|
21
|
+
}
|
|
22
|
+
async function run(...args) {
|
|
23
|
+
const program = new Command();
|
|
24
|
+
program.exitOverride().option('--data-dir <path>');
|
|
25
|
+
const buyer = program.command('buyer');
|
|
26
|
+
registerBuyerIdentityCommands(buyer);
|
|
27
|
+
const lines = [];
|
|
28
|
+
const original = console.log;
|
|
29
|
+
console.log = (...parts) => { lines.push(parts.map(String).join(' ')); };
|
|
30
|
+
try {
|
|
31
|
+
await program.parseAsync(['node', 'antseed', '--data-dir', dataDir, 'buyer', 'identity', ...args]);
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
console.log = original;
|
|
35
|
+
}
|
|
36
|
+
return lines.join('\n');
|
|
37
|
+
}
|
|
38
|
+
const keyFile = (...parts) => join(dataDir, ...parts, 'identity.key');
|
|
39
|
+
const isEncrypted = (path) => readFileSync(path, 'utf8').startsWith('{');
|
|
40
|
+
beforeEach(() => {
|
|
41
|
+
dataDir = mkdtempSync(join(tmpdir(), 'antseed-identity-protect-'));
|
|
42
|
+
passphraseFile = join(dataDir, 'passphrase');
|
|
43
|
+
usePassphrase(null);
|
|
44
|
+
});
|
|
45
|
+
afterEach(() => {
|
|
46
|
+
usePassphrase(null);
|
|
47
|
+
rmSync(dataDir, { recursive: true, force: true });
|
|
48
|
+
});
|
|
49
|
+
describe('buyer identities with a passphrase', () => {
|
|
50
|
+
test('are created encrypted, listed without it, and loaded only with it', async () => {
|
|
51
|
+
usePassphrase('correct horse');
|
|
52
|
+
const created = await createBuyerIdentity(dataDir, 'team-a');
|
|
53
|
+
assert.ok(isEncrypted(keyFile('buyer-identities', 'team-a')));
|
|
54
|
+
assert.equal(statSync(keyFile('buyer-identities', 'team-a')).mode & 0o777, 0o600);
|
|
55
|
+
assert.equal((await loadBuyerIdentity(dataDir, 'team-a'))?.wallet.address, created.address);
|
|
56
|
+
usePassphrase(null);
|
|
57
|
+
assert.deepEqual((await listBuyerIdentities(dataDir)).map((entry) => [entry.name, entry.address]), [['team-a', created.address]]);
|
|
58
|
+
await assert.rejects(loadBuyerIdentity(dataDir, 'team-a'), /encrypted; set ANTSEED_PASSPHRASE/);
|
|
59
|
+
usePassphrase('wrong horse');
|
|
60
|
+
await assert.rejects(loadBuyerIdentity(dataDir, 'team-a'), /Wrong passphrase/);
|
|
61
|
+
});
|
|
62
|
+
test('the default wallet address is read from an encrypted key without decrypting it', async () => {
|
|
63
|
+
const hex = '44'.repeat(32);
|
|
64
|
+
writeFileSync(keyFile(), hex, { mode: 0o600 });
|
|
65
|
+
usePassphrase('correct horse');
|
|
66
|
+
await run('protect');
|
|
67
|
+
usePassphrase(null);
|
|
68
|
+
assert.equal(await storedDefaultIdentityAddress(dataDir), identityFromPrivateKeyHex(hex).wallet.address);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe('buyer identity protect / unprotect', () => {
|
|
72
|
+
test('protect refuses without a passphrase', async () => {
|
|
73
|
+
writeFileSync(keyFile(), '55'.repeat(32), { mode: 0o600 });
|
|
74
|
+
await assert.rejects(run('protect'), /Set ANTSEED_PASSPHRASE/);
|
|
75
|
+
assert.ok(!isEncrypted(keyFile()));
|
|
76
|
+
});
|
|
77
|
+
test('protect --all encrypts every stored key in place; unprotect --all --yes reverses it', async () => {
|
|
78
|
+
const defaultHex = '66'.repeat(32);
|
|
79
|
+
writeFileSync(keyFile(), defaultHex, { mode: 0o600 });
|
|
80
|
+
const team = await createBuyerIdentity(dataDir, 'team-a');
|
|
81
|
+
const old = await createBuyerIdentity(dataDir, 'old');
|
|
82
|
+
const archived = await archiveBuyerIdentity(dataDir, 'old');
|
|
83
|
+
const files = [keyFile(), keyFile('buyer-identities', 'team-a'), join(archived, 'identity.key')];
|
|
84
|
+
usePassphrase('correct horse');
|
|
85
|
+
const output = await run('protect', '--all');
|
|
86
|
+
assert.match(output, /Encrypted default/);
|
|
87
|
+
assert.match(output, /Encrypted team-a/);
|
|
88
|
+
assert.match(output, /Encrypted \.archived\/old-/);
|
|
89
|
+
for (const file of files) {
|
|
90
|
+
assert.ok(isEncrypted(file), file);
|
|
91
|
+
assert.equal(statSync(file).mode & 0o777, 0o600, file);
|
|
92
|
+
}
|
|
93
|
+
assert.match(await run('protect', 'team-a'), /team-a is already encrypted/);
|
|
94
|
+
assert.equal((await loadBuyerIdentity(dataDir, 'team-a'))?.wallet.address, team.address);
|
|
95
|
+
assert.match(await run('list'), /data dir, encrypted/);
|
|
96
|
+
await assert.rejects(run('unprotect', '--all'), /--yes/);
|
|
97
|
+
assert.ok(isEncrypted(keyFile()));
|
|
98
|
+
await run('unprotect', '--all', '--yes');
|
|
99
|
+
assert.equal(readFileSync(keyFile(), 'utf8'), defaultHex);
|
|
100
|
+
assert.equal(identityFromPrivateKeyHex(readFileSync(join(archived, 'identity.key'), 'utf8')).wallet.address, old.address);
|
|
101
|
+
for (const file of files)
|
|
102
|
+
assert.ok(!isEncrypted(file), file);
|
|
103
|
+
assert.deepEqual(readdirSync(dataDir).filter((name) => name.endsWith('.tmp')), []);
|
|
104
|
+
});
|
|
105
|
+
test('protect takes a single identity by name and leaves the others alone', async () => {
|
|
106
|
+
writeFileSync(keyFile(), '77'.repeat(32), { mode: 0o600 });
|
|
107
|
+
await createBuyerIdentity(dataDir, 'team-a');
|
|
108
|
+
usePassphrase('correct horse');
|
|
109
|
+
await run('protect', 'team-a');
|
|
110
|
+
assert.ok(isEncrypted(keyFile('buyer-identities', 'team-a')));
|
|
111
|
+
assert.ok(!isEncrypted(keyFile()));
|
|
112
|
+
await assert.rejects(run('protect', 'team-a', '--all'), /not both/);
|
|
113
|
+
});
|
|
114
|
+
test('protect refuses a passphrase that does not open the keys already encrypted', async () => {
|
|
115
|
+
writeFileSync(keyFile(), '7a'.repeat(32), { mode: 0o600 });
|
|
116
|
+
await createBuyerIdentity(dataDir, 'team-a');
|
|
117
|
+
usePassphrase('correct horse battery');
|
|
118
|
+
await run('protect', 'team-a');
|
|
119
|
+
usePassphrase('correct horse batery!');
|
|
120
|
+
await assert.rejects(run('protect'), /does not unlock the encrypted wallet key "team-a"/);
|
|
121
|
+
assert.ok(!isEncrypted(keyFile()));
|
|
122
|
+
usePassphrase('correct horse battery');
|
|
123
|
+
await run('protect');
|
|
124
|
+
assert.ok(isEncrypted(keyFile()));
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
// Last: a passphrase asked on the terminal stays set for the rest of the process.
|
|
128
|
+
describe('buyer identity protect asks on the terminal when no passphrase is set', () => {
|
|
129
|
+
function fakePrompt(answers, available = true) {
|
|
130
|
+
const questions = [];
|
|
131
|
+
return { available, questions, ask: async (question) => { questions.push(question); return answers.shift() ?? ''; } };
|
|
132
|
+
}
|
|
133
|
+
async function runWith(prompt, ...args) {
|
|
134
|
+
const program = new Command();
|
|
135
|
+
program.exitOverride().option('--data-dir <path>');
|
|
136
|
+
registerBuyerIdentityCommands(program.command('buyer'), prompt);
|
|
137
|
+
await program.parseAsync(['node', 'antseed', '--data-dir', dataDir, 'buyer', 'identity', ...args]);
|
|
138
|
+
}
|
|
139
|
+
test('without a terminal it fails as before and asks nothing', async () => {
|
|
140
|
+
writeFileSync(keyFile(), '88'.repeat(32), { mode: 0o600 });
|
|
141
|
+
const prompt = fakePrompt(['correct horse battery'], false);
|
|
142
|
+
await assert.rejects(runWith(prompt, 'protect'), /Set ANTSEED_PASSPHRASE/);
|
|
143
|
+
assert.deepEqual(prompt.questions, []);
|
|
144
|
+
assert.ok(!isEncrypted(keyFile()));
|
|
145
|
+
});
|
|
146
|
+
test('a short or mistyped passphrase leaves the key as it was', async () => {
|
|
147
|
+
writeFileSync(keyFile(), '88'.repeat(32), { mode: 0o600 });
|
|
148
|
+
const short = fakePrompt(['too short']);
|
|
149
|
+
await assert.rejects(runWith(short, 'protect'), /at least 12 characters/);
|
|
150
|
+
assert.equal(short.questions.length, 1);
|
|
151
|
+
await assert.rejects(runWith(fakePrompt(['correct horse battery', 'correct horse batery']), 'protect'), /do not match/);
|
|
152
|
+
assert.ok(!isEncrypted(keyFile()));
|
|
153
|
+
});
|
|
154
|
+
test('asks twice, encrypts, and keeps the passphrase for this process only', async () => {
|
|
155
|
+
const hex = '99'.repeat(32);
|
|
156
|
+
writeFileSync(keyFile(), hex, { mode: 0o600 });
|
|
157
|
+
const prompt = fakePrompt(['correct horse battery', 'correct horse battery']);
|
|
158
|
+
await runWith(prompt, 'protect');
|
|
159
|
+
assert.equal(prompt.questions.length, 2);
|
|
160
|
+
assert.ok(isEncrypted(keyFile()));
|
|
161
|
+
assert.ok(!readFileSync(keyFile(), 'utf8').includes('correct horse battery'));
|
|
162
|
+
assert.equal(process.env['ANTSEED_PASSPHRASE'], undefined);
|
|
163
|
+
// Handed to a buyer the gateway starts, the same way as a passphrase from the environment.
|
|
164
|
+
assert.deepEqual(identityPassphraseEnv(), { ANTSEED_PASSPHRASE: 'correct horse battery' });
|
|
165
|
+
assert.equal(await new FileIdentityStore(dataDir).load(), hex);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=identity.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.test.js","sourceRoot":"","sources":["../../../../src/cli/commands/buyer/identity.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,15 +24,25 @@ interface AuthorizationServer {
|
|
|
24
24
|
interface BrowserAuthorizationInput {
|
|
25
25
|
dataDir: string;
|
|
26
26
|
configPath?: string;
|
|
27
|
+
/** Sign for this wallet instead of the data dir's default identity (a named buyer identity's key). */
|
|
28
|
+
identityHex?: string;
|
|
27
29
|
openBrowser?: (url: string) => Promise<unknown>;
|
|
28
30
|
createServer: (options: {
|
|
29
31
|
port: number;
|
|
30
32
|
dataDir: string;
|
|
31
33
|
configPath?: string;
|
|
34
|
+
identityHex?: string;
|
|
32
35
|
onPaymentCompleted: () => void;
|
|
33
36
|
}) => Promise<AuthorizationServer>;
|
|
34
37
|
log?: (message: string) => void;
|
|
35
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* The wallet to authorize for: the data dir's default identity, or a named
|
|
41
|
+
* buyer identity (a gateway workspace's wallet). Throws for an unknown name.
|
|
42
|
+
*/
|
|
43
|
+
export declare function loadAuthorizingIdentity(dataDir: string, name: string | undefined): Promise<Pick<CryptoContext, 'wallet' | 'address'> & {
|
|
44
|
+
identityHex?: string;
|
|
45
|
+
}>;
|
|
36
46
|
export declare function buildAuthorizedWalletUrl(port: number, token: string): string;
|
|
37
47
|
/** Open the existing wallet-connected authorization page and wait for confirmation. */
|
|
38
48
|
export declare function runBrowserWalletAuthorization(input: BrowserAuthorizationInput): Promise<void>;
|