From 276a27f27aeff7781a25e13fad0d568f5455ce05 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Thu, 11 Dec 2025 19:50:20 -0500 Subject: 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 # OpenRouter (default) jr work --engine=ollama # Local Ollama jr work --engine=amp # Amp CLI (stub) --- Omni/Agent/Worker.hs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'Omni/Agent/Worker.hs') 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" pure (Left "Amp engine not yet implemented") totalCost <- readIORef totalCostRef case result of -- cgit v1.2.3