59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package status
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/sipeed/picoclaw/cmd/picoclaw/internal"
|
|
"github.com/sipeed/picoclaw/pkg/auth"
|
|
"github.com/sipeed/picoclaw/pkg/config"
|
|
)
|
|
|
|
func statusCmd() {
|
|
cfg, err := internal.LoadConfig()
|
|
if err != nil {
|
|
fmt.Printf("Error loading config: %v\n", err)
|
|
return
|
|
}
|
|
|
|
configPath := internal.GetConfigPath()
|
|
|
|
fmt.Printf("%s picoclaw Status\n", internal.Logo)
|
|
fmt.Printf("Version: %s\n", config.FormatVersion())
|
|
build, _ := config.FormatBuildInfo()
|
|
if build != "" {
|
|
fmt.Printf("Build: %s\n", build)
|
|
}
|
|
fmt.Println()
|
|
|
|
if _, err := os.Stat(configPath); err == nil {
|
|
fmt.Println("Config:", configPath, "✓")
|
|
} else {
|
|
fmt.Println("Config:", configPath, "✗")
|
|
}
|
|
|
|
workspace := cfg.WorkspacePath()
|
|
if _, err := os.Stat(workspace); err == nil {
|
|
fmt.Println("Workspace:", workspace, "✓")
|
|
} else {
|
|
fmt.Println("Workspace:", workspace, "✗")
|
|
}
|
|
|
|
if _, err := os.Stat(configPath); err == nil {
|
|
fmt.Printf("Model: %s\n", cfg.Agents.Defaults.GetModelName())
|
|
|
|
store, _ := auth.LoadStore()
|
|
if store != nil && len(store.Credentials) > 0 {
|
|
fmt.Println("\nOAuth/Token Auth:")
|
|
for provider, cred := range store.Credentials {
|
|
status := "authenticated"
|
|
if cred.IsExpired() {
|
|
status = "expired"
|
|
} else if cred.NeedsRefresh() {
|
|
status = "needs refresh"
|
|
}
|
|
fmt.Printf(" %s (%s): %s\n", provider, cred.AuthMethod, status)
|
|
}
|
|
}
|
|
}
|
|
}
|