From 406247b14985ab57902e8e42898dc8cb8960290d Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Sun, 8 Mar 2026 20:50:21 +0000 Subject: feat(executor): implement Gemini-based task classification and load balancing - Add Classifier using gemini-2.0-flash-lite to automatically select agent/model. - Update Pool to track per-agent active tasks and rate limit status. - Enable classification for all tasks (top-level and subtasks). - Refine SystemStatus to be dynamic across all supported agents. - Add unit tests for the classifier and updated pool logic. - Minor UI improvements for project selection and 'Start Next' action. --- internal/cli/run.go | 3 +++ internal/cli/serve.go | 3 +++ 2 files changed, 6 insertions(+) (limited to 'internal/cli') diff --git a/internal/cli/run.go b/internal/cli/run.go index 3624cea..62e1252 100644 --- a/internal/cli/run.go +++ b/internal/cli/run.go @@ -86,6 +86,9 @@ func runTasks(file string, parallel int, dryRun bool) error { }, } pool := executor.NewPool(parallel, runners, store, logger) + if cfg.GeminiBinaryPath != "" { + pool.Classifier = &executor.Classifier{GeminiBinaryPath: cfg.GeminiBinaryPath} + } // Handle graceful shutdown. ctx, cancel := context.WithCancel(context.Background()) diff --git a/internal/cli/serve.go b/internal/cli/serve.go index 2ecb6cd..b679b38 100644 --- a/internal/cli/serve.go +++ b/internal/cli/serve.go @@ -71,6 +71,9 @@ func serve(addr string) error { } pool := executor.NewPool(cfg.MaxConcurrent, runners, store, logger) + if cfg.GeminiBinaryPath != "" { + pool.Classifier = &executor.Classifier{GeminiBinaryPath: cfg.GeminiBinaryPath} + } srv := api.NewServer(store, pool, logger, cfg.ClaudeBinaryPath, cfg.GeminiBinaryPath) srv.StartHub() -- cgit v1.2.3