- DefaultLoginHandler(binaryName) : handler de login Bitwarden prêt à l'emploi avec confirmation. Remplace les réimplémentations identiques dans chaque MCP. - StandardConfigTestHandler(opts) : handler de config test standard sans ManifestCheck. Accepte ConfigCheck, OpenStore, ConnectivityCheck et ExtraChecks. - ManifestCheck dans RunDoctor devient opt-in : inclus uniquement si ManifestDir est fourni (artefact de build, pas de contrainte runtime). - Supprime le handler mort CommandLogin dans bootstrap.Run, désormais remplacé par l'auto-disable et DefaultLoginHandler. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
30 lines
845 B
Go
30 lines
845 B
Go
package bootstrap
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"forge.lclr.dev/AI/mcp-framework/secretstore"
|
|
)
|
|
|
|
var loginBitwarden = secretstore.LoginBitwarden
|
|
|
|
// DefaultLoginHandler retourne un Handler qui authentifie et déverrouille
|
|
// Bitwarden, persiste la session BW_SESSION, et confirme le résultat.
|
|
// Utiliser comme hook Login lorsqu'aucune logique personnalisée n'est requise.
|
|
func DefaultLoginHandler(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
|
|
}
|
|
}
|