diff --git a/packages/cli/package.json b/packages/cli/package.json index a64d1370..07661120 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@openrouter/spawn", - "version": "0.12.11", + "version": "0.12.12", "type": "module", "bin": { "spawn": "cli.js" diff --git a/packages/cli/src/daytona/daytona.ts b/packages/cli/src/daytona/daytona.ts index 2b73663f..f6e33523 100644 --- a/packages/cli/src/daytona/daytona.ts +++ b/packages/cli/src/daytona/daytona.ts @@ -108,10 +108,6 @@ async function saveTokenToConfig(token: string): Promise { }); } -function loadTokenFromConfig(): string | null { - return loadApiToken("daytona"); -} - async function testDaytonaToken(): Promise { if (!daytonaApiKey) { return false; @@ -138,7 +134,7 @@ export async function ensureDaytonaToken(): Promise { } // 2. Saved config - const saved = loadTokenFromConfig(); + const saved = loadApiToken("daytona"); if (saved) { daytonaApiKey = saved; if (await testDaytonaToken()) { diff --git a/packages/cli/src/digitalocean/digitalocean.ts b/packages/cli/src/digitalocean/digitalocean.ts index 0ab1e3e5..c6a857cf 100644 --- a/packages/cli/src/digitalocean/digitalocean.ts +++ b/packages/cli/src/digitalocean/digitalocean.ts @@ -18,6 +18,7 @@ import { defaultSpawnName, sanitizeTermValue, selectFromList, + loadApiToken, } from "../shared/ui"; import type { CloudInitTier } from "../shared/agents"; import { getPackagesForTier, needsNode, needsBun, NODE_INSTALL_CMD } from "../shared/cloud-init"; @@ -176,23 +177,6 @@ async function saveTokenToConfig(token: string, refreshToken?: string, expiresIn await saveConfig(config); } -function loadTokenFromConfig(): string | null { - const data = loadConfig(); - if (!data) { - return null; - } - const apiKey = isString(data.api_key) ? data.api_key : ""; - const tok = isString(data.token) ? data.token : ""; - const token = apiKey || tok; - if (!token) { - return null; - } - if (!/^[a-zA-Z0-9._/@:+=-]+$/.test(token)) { - return null; - } - return token; -} - function loadRefreshToken(): string | null { const data = loadConfig(); if (!data) { @@ -513,7 +497,7 @@ export async function ensureDoToken(): Promise { } // 2. Saved config (check expiry first, try refresh if needed) - const saved = loadTokenFromConfig(); + const saved = loadApiToken("digitalocean"); if (saved) { if (isTokenExpired()) { logWarn("Saved DigitalOcean token has expired, trying refresh..."); diff --git a/packages/cli/src/hetzner/hetzner.ts b/packages/cli/src/hetzner/hetzner.ts index d60a3056..476fdad7 100644 --- a/packages/cli/src/hetzner/hetzner.ts +++ b/packages/cli/src/hetzner/hetzner.ts @@ -105,10 +105,6 @@ async function saveTokenToConfig(token: string): Promise { }); } -function loadTokenFromConfig(): string | null { - return loadApiToken("hetzner"); -} - // ─── Token Validation ──────────────────────────────────────────────────────── async function testHcloudToken(): Promise { @@ -146,7 +142,7 @@ export async function ensureHcloudToken(): Promise { } // 2. Saved config - const saved = loadTokenFromConfig(); + const saved = loadApiToken("hetzner"); if (saved) { hcloudToken = saved; if (await testHcloudToken()) {