From cc3f7f2018657673de4d62b1f0b5feea9dce67ef Mon Sep 17 00:00:00 2001 From: "Panche I." Date: Fri, 27 Mar 2026 18:14:40 +0100 Subject: [PATCH] fix: x402 fetch falls back to local signer config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SignerManager only read from env vars (AGENTA_API_SECRET, AGENTA_API_KEY), which meant `agenta sub x402 fetch` failed unless env vars were set — even though the secret was already saved in ~/.agenta/signers/. Now: env vars take priority (for MCP/CI), local signer config is the fallback (for CLI users). Matches how every other sub command works. --- packages/wallet/src/lib/signer-manager.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/wallet/src/lib/signer-manager.ts b/packages/wallet/src/lib/signer-manager.ts index b32f73e..88f655e 100644 --- a/packages/wallet/src/lib/signer-manager.ts +++ b/packages/wallet/src/lib/signer-manager.ts @@ -1,5 +1,6 @@ import { CGGMP24Scheme } from '@agentaos/engine'; import { AgentaApi, HttpClient, ThresholdSigner } from '@agentaos/sdk'; +import { loadSignerConfig, resolveApiSecret } from './config.js'; export class SignerManager { private signer: ThresholdSigner | null = null; @@ -9,13 +10,21 @@ export class SignerManager { private getConfig() { const apiSecret = process.env.AGENTA_API_SECRET; - const serverUrl = process.env.AGENTA_SERVER || 'https://api.agentaos.ai'; const apiKey = process.env.AGENTA_API_KEY; + const serverUrl = process.env.AGENTA_SERVER || 'https://api.agentaos.ai'; - if (!apiSecret) throw new Error('AGENTA_API_SECRET is required'); - if (!apiKey) throw new Error('AGENTA_API_KEY is required'); + // Env vars present — use them (MCP / CI mode) + if (apiSecret && apiKey) { + return { apiSecret, serverUrl, apiKey }; + } - return { apiSecret, serverUrl, apiKey }; + // Fall back to local signer config (~/.agenta/signers/) + const config = loadSignerConfig(); + return { + apiSecret: resolveApiSecret(config), + serverUrl: config.serverUrl, + apiKey: config.apiKey, + }; } async getSigner(): Promise {