mirror of
https://github.com/router-for-me/CLIProxyAPIPlus.git
synced 2026-03-08 06:43:41 +00:00
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package cmd
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/router-for-me/CLIProxyAPI/v6/internal/config"
|
|
sdkAuth "github.com/router-for-me/CLIProxyAPI/v6/sdk/auth"
|
|
)
|
|
|
|
// DoKiloLogin handles the Kilo device flow using the shared authentication manager.
|
|
// It initiates the device-based authentication process for Kilo AI services and saves
|
|
// the authentication tokens to the configured auth directory.
|
|
//
|
|
// Parameters:
|
|
// - cfg: The application configuration
|
|
// - options: Login options including browser behavior and prompts
|
|
func DoKiloLogin(cfg *config.Config, options *LoginOptions) {
|
|
if options == nil {
|
|
options = &LoginOptions{}
|
|
}
|
|
|
|
manager := newAuthManager()
|
|
|
|
promptFn := options.Prompt
|
|
if promptFn == nil {
|
|
promptFn = func(prompt string) (string, error) {
|
|
fmt.Print(prompt)
|
|
var value string
|
|
fmt.Scanln(&value)
|
|
return strings.TrimSpace(value), nil
|
|
}
|
|
}
|
|
|
|
authOpts := &sdkAuth.LoginOptions{
|
|
NoBrowser: options.NoBrowser,
|
|
CallbackPort: options.CallbackPort,
|
|
Metadata: map[string]string{},
|
|
Prompt: promptFn,
|
|
}
|
|
|
|
_, savedPath, err := manager.Login(context.Background(), "kilo", cfg, authOpts)
|
|
if err != nil {
|
|
fmt.Printf("Kilo authentication failed: %v\n", err)
|
|
return
|
|
}
|
|
|
|
if savedPath != "" {
|
|
fmt.Printf("Authentication saved to %s\n", savedPath)
|
|
}
|
|
|
|
fmt.Println("Kilo authentication successful!")
|
|
}
|