From 7ee18a14651c89861a2af7007c831a1ea2bbb54b Mon Sep 17 00:00:00 2001 From: Abir Abbas Date: Thu, 6 Aug 2026 17:38:08 -0400 Subject: [PATCH] feat: thread aforge harness binary path through node config PR_AF_AFORGE_BIN (default "aforge") now reaches HarnessConfig.aforge_bin so a node started with PR_AF_PROVIDER=aforge can point at a specific aforge binary. With SDKs that predate the aforge provider the extra field is ignored, so this is inert until the SDK supports it. Co-Authored-By: Claude Fable 5 --- src/pr_af/app.py | 1 + src/pr_af/config.py | 1 + 2 files changed, 2 insertions(+) diff --git a/src/pr_af/app.py b/src/pr_af/app.py index 66cfd6d..40ea6fa 100644 --- a/src/pr_af/app.py +++ b/src/pr_af/app.py @@ -40,6 +40,7 @@ max_turns=_ai_config.max_turns, env=_ai_config.provider_env(), opencode_bin=_ai_config.opencode_bin, + aforge_bin=_ai_config.aforge_bin, permission_mode="auto", ), ai_config=AIConfig( diff --git a/src/pr_af/config.py b/src/pr_af/config.py index b923d45..bda2018 100644 --- a/src/pr_af/config.py +++ b/src/pr_af/config.py @@ -314,6 +314,7 @@ class AIIntegrationConfig(BaseModel): max_backoff_seconds: float = Field(default_factory=lambda: float(os.getenv("PR_AF_AI_MAX_BACKOFF_SECONDS", "8.0"))) opencode_bin: str = Field(default_factory=lambda: os.getenv("PR_AF_OPENCODE_BIN", "opencode")) opencode_server: str | None = Field(default_factory=lambda: os.getenv("PR_AF_OPENCODE_SERVER")) + aforge_bin: str = Field(default_factory=lambda: os.getenv("PR_AF_AFORGE_BIN", "aforge")) @classmethod def from_env(cls) -> AIIntegrationConfig: