// DRAFT DESTINATION: src/background/messages.ts and src/shared/types.ts // Phase 2: vault-less CREATE_VAULT_FROM_ROOT_KEY handler. // In src/shared/types.ts, add near CREATE_VAULT: // | "CREATE_VAULT_FROM_ROOT_KEY" // // Optional documented payload type: export interface CreateVaultFromRootKeyPayload { password: string; rootKeyHex: string; } // In src/shared/types.ts ErrorCode, add: // | "adopt_invalid_root_key" // | "adopt_vault_id_mismatch" // In src/background/messages.ts switch, place immediately after CREATE_VAULT: async function draftCreateVaultFromRootKeyHandler( msg: { payload?: unknown }, ): Promise<{ ok: true; vaultId: string } | { ok: false; error: string }> { const { password, rootKeyHex } = (msg.payload ?? {}) as Partial; if (typeof password !== "string" || password.length === 0 || typeof rootKeyHex !== "string") { return { ok: false, error: "invalid_payload" }; } try { const { vaultId } = await vault.createVaultFromRootKey(password, rootKeyHex); await setupAutoLock(); broadcastToContentScripts({ type: "VAULT_UNLOCKED" }); onVaultUnlocked(); return { ok: true, vaultId }; } catch (err) { const message = err instanceof Error ? err.message : String(err); return { ok: false, error: message }; } } void draftCreateVaultFromRootKeyHandler;