fix(cli): providers verify --model flag + onboard parser (#1034)

This commit is contained in:
viettranx committed 2026-04-27 12:00:11 +07:00
1 parent dfcb897954
commit ad232d3e9c
2 files changed
+26 -33

No files matched your search

+21 -25
View File
@@ -181,7 +181,7 @@ func runProvidersAdd() {
if providerID != "" {
verify, err := promptConfirm("Verify connection now?", true)
if err == nil && verify {
runProviderVerify(providerID)
runProviderVerify(providerID, "")
}
}
}
@@ -266,45 +266,41 @@ func providersDeleteCmd() *cobra.Command {
}
func providersVerifyCmd() *cobra.Command {
return &cobra.Command{
var modelFlag string
cmd := &cobra.Command{
Use: "verify <id>",
Short: "Verify provider connectivity and list models",
Short: "Verify provider connectivity (ping) or a specific model",
Long: "Without --model: pings the provider (registered + reachable check).\nWith --model: sends a small chat request to validate the model alias.",
Args: cobra.ExactArgs(1),
Run: func(cmd *cobra.Command, args []string) {
requireRunningGatewayHTTP()
runProviderVerify(args[0])
runProviderVerify(args[0], modelFlag)
},
}
cmd.Flags().StringVar(&modelFlag, "model", "", "model alias to verify (omit for connectivity ping)")
return cmd
}
func runProviderVerify(providerID string) {
func runProviderVerify(providerID, model string) {
fmt.Print("Verifying provider... ")
resp, err := gatewayHTTPPost("/v1/providers/"+url.PathEscape(providerID)+"/verify", nil)
var body any
if model != "" {
body = map[string]string{"model": model}
}
resp, err := gatewayHTTPPost("/v1/providers/"+url.PathEscape(providerID)+"/verify", body)
if err != nil {
fmt.Printf("FAILED\n %v\n", err)
return
}
if ok, _ := resp["success"].(bool); ok {
if valid, _ := resp["valid"].(bool); valid {
fmt.Println("OK")
// Show available models
raw, _ := json.Marshal(resp["models"])
var models []httpProviderModel
if json.Unmarshal(raw, &models) == nil && len(models) > 0 {
fmt.Printf(" Available models: %d\n", len(models))
limit := 10
for i, m := range models {
if i >= limit {
fmt.Printf(" ... and %d more\n", len(models)-limit)
break
}
fmt.Printf(" - %s\n", m.ID)
}
}
} else {
msg, _ := resp["error"].(string)
fmt.Printf("FAILED\n %s\n", msg)
return
}
msg, _ := resp["error"].(string)
if msg == "" {
msg = "verification failed"
}
fmt.Printf("FAILED\n %s\n", msg)
}
// defaultBaseURL returns the default API base URL for a provider type.
+5 -8
View File
@@ -1,7 +1,6 @@
package cmd
import (
"encoding/json"
"fmt"
"net/url"
"os"
@@ -95,7 +94,7 @@ func addProvider() {
providerID, _ := resp["id"].(string)
fmt.Printf(" Provider %q created.\n", name)
// Auto-verify
// Auto-verify (ping mode — empty body)
if providerID != "" {
fmt.Print(" Verifying... ")
verifyResp, err := gatewayHTTPPost("/v1/providers/"+url.PathEscape(providerID)+"/verify", nil)
@@ -103,15 +102,13 @@ func addProvider() {
fmt.Printf("FAILED (%v)\n", err)
return
}
if ok, _ := verifyResp["success"].(bool); ok {
if valid, _ := verifyResp["valid"].(bool); valid {
fmt.Println("OK")
raw, _ := json.Marshal(verifyResp["models"])
var models []httpProviderModel
if json.Unmarshal(raw, &models) == nil {
fmt.Printf(" %d models available.\n", len(models))
}
} else {
msg, _ := verifyResp["error"].(string)
if msg == "" {
msg = "verification failed"
}
fmt.Printf("FAILED (%s)\n", msg)
fmt.Println(" You can update the API key later with 'goclaw providers update'.")
}