diff options
Diffstat (limited to 'internal/cli')
| -rw-r--r-- | internal/cli/run.go | 22 | ||||
| -rw-r--r-- | internal/cli/serve.go | 27 | ||||
| -rw-r--r-- | internal/cli/status.go | 2 |
3 files changed, 37 insertions, 14 deletions
diff --git a/internal/cli/run.go b/internal/cli/run.go index ebf371c..49aa28e 100644 --- a/internal/cli/run.go +++ b/internal/cli/run.go @@ -54,7 +54,7 @@ func runTasks(file string, parallel int, dryRun bool) error { if dryRun { fmt.Printf("Validated %d task(s) successfully.\n", len(tasks)) for _, t := range tasks { - fmt.Printf(" - %s (model: %s, timeout: %v)\n", t.Name, t.Claude.Model, t.Timeout.Duration) + fmt.Printf(" - %s (model: %s, timeout: %v)\n", t.Name, t.Agent.Model, t.Timeout.Duration) } return nil } @@ -72,12 +72,22 @@ func runTasks(file string, parallel int, dryRun bool) error { logger := newLogger(verbose) - runner := &executor.ClaudeRunner{ - BinaryPath: cfg.ClaudeBinaryPath, - Logger: logger, - LogDir: cfg.LogDir, + runners := map[string]executor.Runner{ + "claude": &executor.ClaudeRunner{ + BinaryPath: cfg.ClaudeBinaryPath, + Logger: logger, + LogDir: cfg.LogDir, + }, + "gemini": &executor.GeminiRunner{ + BinaryPath: cfg.GeminiBinaryPath, + Logger: logger, + LogDir: cfg.LogDir, + }, + } + pool := executor.NewPool(parallel, runners, store, logger) + if cfg.GeminiBinaryPath != "" { + pool.Classifier = &executor.Classifier{GeminiBinaryPath: cfg.GeminiBinaryPath} } - pool := executor.NewPool(parallel, runner, store, logger) // Handle graceful shutdown. ctx, cancel := context.WithCancel(context.Background()) diff --git a/internal/cli/serve.go b/internal/cli/serve.go index cd5bfce..36a53b5 100644 --- a/internal/cli/serve.go +++ b/internal/cli/serve.go @@ -50,15 +50,28 @@ func serve(addr string) error { if len(addr) > 0 && addr[0] != ':' { apiURL = "http://" + addr } - runner := &executor.ClaudeRunner{ - BinaryPath: cfg.ClaudeBinaryPath, - Logger: logger, - LogDir: cfg.LogDir, - APIURL: apiURL, + + runners := map[string]executor.Runner{ + "claude": &executor.ClaudeRunner{ + BinaryPath: cfg.ClaudeBinaryPath, + Logger: logger, + LogDir: cfg.LogDir, + APIURL: apiURL, + }, + "gemini": &executor.GeminiRunner{ + BinaryPath: cfg.GeminiBinaryPath, + Logger: logger, + LogDir: cfg.LogDir, + APIURL: apiURL, + }, + } + + pool := executor.NewPool(cfg.MaxConcurrent, runners, store, logger) + if cfg.GeminiBinaryPath != "" { + pool.Classifier = &executor.Classifier{GeminiBinaryPath: cfg.GeminiBinaryPath} } - pool := executor.NewPool(cfg.MaxConcurrent, runner, store, logger) - srv := api.NewServer(store, pool, logger, cfg.ClaudeBinaryPath) + srv := api.NewServer(store, pool, logger, cfg.ClaudeBinaryPath, cfg.GeminiBinaryPath) if cfg.WebhookURL != "" { srv.SetNotifier(notify.NewWebhookNotifier(cfg.WebhookURL, logger)) } diff --git a/internal/cli/status.go b/internal/cli/status.go index 4e0461e..16b88b0 100644 --- a/internal/cli/status.go +++ b/internal/cli/status.go @@ -38,7 +38,7 @@ func showStatus(id string) error { fmt.Printf("ID: %s\n", t.ID) fmt.Printf("State: %s\n", t.State) fmt.Printf("Priority: %s\n", t.Priority) - fmt.Printf("Model: %s\n", t.Claude.Model) + fmt.Printf("Model: %s\n", t.Agent.Model) if t.Description != "" { fmt.Printf("Description: %s\n", t.Description) } |
