diff options
| author | Ben Sima <ben@bensima.com> | 2025-12-11 19:50:20 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bensima.com> | 2025-12-11 19:50:20 -0500 |
| commit | 276a27f27aeff7781a25e13fad0d568f5455ce05 (patch) | |
| tree | 6a7957986d14a9424f9e7f438dbd47a402b414fe /Omni/Agent/Worker.hs | |
| parent | 225e5b7a24f0b30f6de1bd7418bf834ad345b0f3 (diff) | |
t-247: Add Provider abstraction for multi-backend LLM support
- Create Omni/Agent/Provider.hs with unified Provider interface
- Support OpenRouter (cloud), Ollama (local), Amp (subprocess stub)
- Add runAgentWithProvider to Engine.hs for Provider-based execution
- Add EngineType to Core.hs (EngineOpenRouter, EngineOllama, EngineAmp)
- Add --engine flag to 'jr work' command
- Worker.hs dispatches to appropriate provider based on engine type
Usage:
jr work <task-id> # OpenRouter (default)
jr work <task-id> --engine=ollama # Local Ollama
jr work <task-id> --engine=amp # Amp CLI (stub)
Diffstat (limited to 'Omni/Agent/Worker.hs')
| -rw-r--r-- | Omni/Agent/Worker.hs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/Omni/Agent/Worker.hs b/Omni/Agent/Worker.hs index 66f894d..3b0c563 100644 --- a/Omni/Agent/Worker.hs +++ b/Omni/Agent/Worker.hs @@ -21,6 +21,7 @@ import qualified Data.Time import qualified Omni.Agent.Core as Core import qualified Omni.Agent.Engine as Engine import qualified Omni.Agent.Log as AgentLog +import qualified Omni.Agent.Provider as Provider import qualified Omni.Agent.Tools as Tools import qualified Omni.Fact as Fact import qualified Omni.Task.Core as TaskCore @@ -357,8 +358,14 @@ runWithEngine worker repo task = do Engine.agentGuardrails = guardrails } - -- Run the agent - result <- Engine.runAgent engineCfg agentCfg userPrompt + -- Run the agent with appropriate provider + result <- case Core.workerEngine worker of + Core.EngineOpenRouter -> Engine.runAgent engineCfg agentCfg userPrompt + Core.EngineOllama -> do + ollamaModel <- fromMaybe "llama3.1:8b" </ Env.lookupEnv "OLLAMA_MODEL" + let provider = Provider.defaultOllama (Text.pack ollamaModel) + Engine.runAgentWithProvider engineCfg provider agentCfg userPrompt + Core.EngineAmp -> pure (Left "Amp engine not yet implemented") totalCost <- readIORef totalCostRef case result of |
