From 5b7e47f4610b4ec47a6aab2a95f2c52a0079edff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Thu, 16 Apr 2026 23:07:34 -0400 Subject: [PATCH] refactor(vault): expose structured getBackendInfo alongside string label --- src/main/vault.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/vault.ts b/src/main/vault.ts index c7359dc6..b8fce6d8 100644 --- a/src/main/vault.ts +++ b/src/main/vault.ts @@ -11,15 +11,32 @@ export class SecretVault { } getBackendLabel(): string { + const info = this.getBackendInfo(); + switch (info.kind) { + case "safe_storage": + return info.backend ? `safe_storage:${info.backend}` : "safe_storage"; + case "vault": + return info.backend ? `vault:${info.backend}` : "vault"; + case "unavailable": + return "unavailable"; + } + } + + /** Structured view of the active backend. Prefer this over the string form + * (`getBackendLabel`) when the caller needs to branch on kind vs algorithm. */ + getBackendInfo(): { kind: "safe_storage" | "vault" | "unavailable"; backend?: string } { if (this.canUseSafeStorage()) { const selectedBackend = typeof safeStorage?.getSelectedStorageBackend === "function" ? safeStorage.getSelectedStorageBackend() : "platform"; if (selectedBackend && selectedBackend !== "basic_text") { - return `safe_storage:${selectedBackend}`; + return { kind: "safe_storage", backend: selectedBackend }; } } - return this.allowInsecureVaultFallback() ? "vault:aes-256-gcm" : "unavailable"; + if (this.allowInsecureVaultFallback()) { + return { kind: "vault", backend: "aes-256-gcm" }; + } + return { kind: "unavailable" }; } encrypt(value: string): { backend: "safe_storage" | "vault"; payload: Buffer } {