mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-13 10:15:48 +00:00
fix(cli): providers verify --model flag + onboard parser (#1034)
This commit is contained in:
1 parent
dfcb897954
commit
ad232d3e9c
2 files changed
+26
-33
No files matched your search
+21
-25
@@ -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.
|
||||
|
||||
@@ -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'.")
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user