summaryrefslogtreecommitdiff
path: root/internal/cli/serve.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cli/serve.go')
-rw-r--r--internal/cli/serve.go27
1 files changed, 20 insertions, 7 deletions
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))
}