From ebdb12fc37c9c8db460827fdba1aa10e5b208cb9 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Sat, 7 Mar 2026 23:53:15 +0000 Subject: feat(wiring): configure GeminiRunner and update API server --- internal/cli/run.go | 19 +++++++++++++------ internal/cli/serve.go | 24 +++++++++++++++++------- 2 files changed, 30 insertions(+), 13 deletions(-) (limited to 'internal/cli') diff --git a/internal/cli/run.go b/internal/cli/run.go index c666406..3624cea 100644 --- a/internal/cli/run.go +++ b/internal/cli/run.go @@ -51,7 +51,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 } @@ -73,12 +73,19 @@ func runTasks(file string, parallel int, dryRun bool) error { } logger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: level})) - 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, runner, store, logger) + pool := executor.NewPool(parallel, runners, store, logger) // Handle graceful shutdown. ctx, cancel := context.WithCancel(context.Background()) diff --git a/internal/cli/serve.go b/internal/cli/serve.go index 363e276..2ecb6cd 100644 --- a/internal/cli/serve.go +++ b/internal/cli/serve.go @@ -54,15 +54,25 @@ 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, runner, store, logger) + + pool := executor.NewPool(cfg.MaxConcurrent, runners, store, logger) - srv := api.NewServer(store, pool, logger, cfg.ClaudeBinaryPath) + srv := api.NewServer(store, pool, logger, cfg.ClaudeBinaryPath, cfg.GeminiBinaryPath) srv.StartHub() httpSrv := &http.Server{ -- cgit v1.2.3