refactor(desktop): put browser cookie import on Effect services

The import module reached for `node:fs/promises`, `node:os`, `node:path` and
`node:sqlite` directly and threaded results through hand-rolled promises, which
meant a blanket `nodeBuiltinImport:off` on two files and failures that were
plain thrown `Error`s.

It now uses FileSystem, Path and the shared Effect SQL client, and the cookie
snapshot is a scoped resource rather than a try/finally with a cleanup
callback. `node:crypto` stays — it implements the OSCrypt primitives Chromium
uses and has no Effect equivalent — with the suppression narrowed to it and a
reason attached.

Failure reasons are a typed union in contracts rather than free strings, so the
renderer maps a reason to copy instead of substring-matching an error message.

Porting `isSourceRunning` to `FileSystem.stat` reintroduced the dangling
SingletonLock bug, because `stat` and `exists` both follow symlinks; `readLink`
is the probe that answers for the entry itself. The regression test caught it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
5a96f50b38Julius Marminge committed on 9/4/2026, 6:20:37 AMparent043fab0
7 files changedLine totals unavailable