mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
// PicoClaw - Ultra-lightweight personal AI agent
|
|
// License: MIT
|
|
//
|
|
// Copyright (c) 2026 PicoClaw contributors
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
|
|
tuicfg "github.com/sipeed/picoclaw/cmd/picoclaw-launcher-tui/config"
|
|
"github.com/sipeed/picoclaw/cmd/picoclaw-launcher-tui/ui"
|
|
)
|
|
|
|
func main() {
|
|
configPath := tuicfg.DefaultConfigPath()
|
|
if len(os.Args) > 1 {
|
|
configPath = os.Args[1]
|
|
}
|
|
|
|
configDir := filepath.Dir(configPath)
|
|
if _, err := os.Stat(configDir); os.IsNotExist(err) {
|
|
cmd := exec.Command("picoclaw", "onboard")
|
|
cmd.Stdin = os.Stdin
|
|
cmd.Stdout = os.Stdout
|
|
cmd.Stderr = os.Stderr
|
|
_ = cmd.Run()
|
|
}
|
|
|
|
cfg, err := tuicfg.Load(configPath)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "picoclaw-launcher-tui: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
app := ui.New(cfg, configPath)
|
|
// Bind model selection hook to sync to main config
|
|
app.OnModelSelected = func(scheme tuicfg.Scheme, user tuicfg.User, modelID string) {
|
|
_ = tuicfg.SyncSelectedModelToMainConfig(scheme, user, modelID)
|
|
}
|
|
if err := app.Run(); err != nil {
|
|
fmt.Fprintf(os.Stderr, "picoclaw-launcher-tui: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|