import type { PluginManifest } from '@@/plugins/manifest'; /** * Vault — a reverse-proxy to a self-hosted Vaultwarden, with Officer holding the credential. * * ── What this plugin is, and what it deliberately is not ── * * It is NOT a password manager. It stores no vault items, renders no cipher list, and cannot decrypt * anything: the vault is end-to-end encrypted and every route here is a dumb pass-through. What it owns is * the CREDENTIAL problem — Officer brokers the Vaultwarden token, keeps it server-side, and injects it on * the way through, so a device that has an Officer session never holds a vault token at all. * * It also does not install Vaultwarden. You point it at one you already run. That is the whole * configuration surface, and it lives in the database rather than in `.env` — see `db/schema.ts`. * * ── No `osDependencies` ── * * Nothing here shells out. The sidecar is a Bun HTTP/WS proxy and the upstream is reached with `fetch`. */ export const manifest: PluginManifest = { publisher: 'officerdev', version: '1.0.0', platform: '>=1.0.0', label: 'Vault', summary: 'Your Vaultwarden, behind an Officer session — passwords for the apps that speak Bitwarden', // A lucide glyph rather than artwork: this ships no assets/icon.png, and `KeyRound` is what the app // store catalogue already used for it. icon: 'KeyRound', color: '#175ddc', permissions: [ { key: 'vault', label: 'Vault', description: 'The password vault, and the Officer-held session that opens it', }, ], };