From c19b6ef529722242c3109168cf599ad33b662fd5 Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Sun, 7 Jun 2026 20:15:05 +0800 Subject: [PATCH] feat: add ofcx-go code agent profile and Moon Bridge OpenCode route - Add ofcx-go to backendProfiles allowlist in agentrun-dispatch.mjs - Extend deepseek-proxy Moon Bridge config with opencode provider - Add deepseek-v4-flash model and opencode route to Moon Bridge config - Add OPENCODE_API_KEY env var injection from hwlab-v02-code-agent-provider Secret - Support both deepseek and opencode providers in shared Moon Bridge instance --- internal/agent/agentrun-dispatch.mjs | 2 +- scripts/g14-gitops-render.mjs | 37 +++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/internal/agent/agentrun-dispatch.mjs b/internal/agent/agentrun-dispatch.mjs index 59d015df..1fc33a4e 100644 --- a/internal/agent/agentrun-dispatch.mjs +++ b/internal/agent/agentrun-dispatch.mjs @@ -97,7 +97,7 @@ export const AGENTRUN_REUSABLE_CREDENTIAL_ENV_NAMES = Object.freeze([ "UNIDESK_SSH_CLIENT_TOKEN" ]); -const backendProfiles = Object.freeze(["codex", "deepseek", "minimax-m3"]); +const backendProfiles = Object.freeze(["codex", "deepseek", "minimax-m3", "ofcx-go"]); const providerSecretKeys = Object.freeze(["auth.json", "config.toml"]); const reusableCredentialEnvNameSet = new Set(AGENTRUN_REUSABLE_CREDENTIAL_ENV_NAMES); diff --git a/scripts/g14-gitops-render.mjs b/scripts/g14-gitops-render.mjs index 03641e2c..0c783674 100644 --- a/scripts/g14-gitops-render.mjs +++ b/scripts/g14-gitops-render.mjs @@ -4113,7 +4113,10 @@ function deepSeekProxyManifest({ profile = "dev", source, registryPrefix = defau image: bridgeImage, imagePullPolicy: "IfNotPresent", command: ["/bin/sh", "-eu", "/scripts/render-config.sh"], - env: [{ name: "DEEPSEEK_API_KEY", valueFrom: { secretKeyRef: { name: secretNameForProfile("hwlab-code-agent-provider", profile), key: "openai-api-key", optional: true } } }], + env: [ + { name: "DEEPSEEK_API_KEY", valueFrom: { secretKeyRef: { name: secretNameForProfile("hwlab-code-agent-provider", profile), key: "openai-api-key", optional: true } } }, + { name: "OPENCODE_API_KEY", valueFrom: { secretKeyRef: { name: secretNameForProfile("hwlab-code-agent-provider", profile), key: "opencode-api-key", optional: true } } } + ], volumeMounts: [ { name: "moonbridge-scripts", mountPath: "/scripts", readOnly: true }, { name: "moonbridge-config", mountPath: "/config" } @@ -4170,8 +4173,8 @@ function deepSeekProxyManifest({ profile = "dev", source, registryPrefix = defau function moonBridgeConfigRenderScript() { return `#!/bin/sh -if [ -z "\${DEEPSEEK_API_KEY:-}" ]; then - echo "DEEPSEEK_API_KEY is required" >&2 +if [ -z "\${DEEPSEEK_API_KEY:-}" ] && [ -z "\${OPENCODE_API_KEY:-}" ]; then + echo "at least one of DEEPSEEK_API_KEY or OPENCODE_API_KEY is required" >&2 exit 1 fi cat > /config/config.yml <