package bootstrap import ( "context" "fmt" "strings" "forge.lclr.dev/AI/mcp-framework/secretstore" ) var loginBitwarden = secretstore.LoginBitwarden // BitwardenLoginHandler retourne un Handler pour la commande login des MCPs // qui utilisent le backend Bitwarden. Il authentifie et déverrouille le vault, // persiste BW_SESSION, et confirme le résultat. // // N'utiliser que si le MCP déclare secret_store.backend_policy = "bitwarden-cli" // dans son manifest. Pour les backends env-only ou keyring, ne pas définir de // hook Login : la commande sera automatiquement masquée. func BitwardenLoginHandler(binaryName string) Handler { name := strings.TrimSpace(binaryName) return func(_ context.Context, inv Invocation) error { if _, err := loginBitwarden(secretstore.BitwardenLoginOptions{ ServiceName: name, Stdin: inv.Stdin, Stdout: inv.Stdout, Stderr: inv.Stderr, }); err != nil { return err } _, err := fmt.Fprintf(inv.Stdout, "Session Bitwarden persistée pour %q.\n", name) return err } }