diff --git a/apps/daemon/src/runtimes/defs/openclaw.ts b/apps/daemon/src/runtimes/defs/openclaw.ts new file mode 100644 index 000000000..b5d436852 --- /dev/null +++ b/apps/daemon/src/runtimes/defs/openclaw.ts @@ -0,0 +1,34 @@ +import { detectAcpModels, DEFAULT_MODEL_OPTION } from './shared.js'; +import type { RuntimeAgentDef } from '../types.js'; + +export const openclawAgentDef = { + id: 'openclaw', + name: 'OpenClaw', + bin: 'openclaw', + versionArgs: ['--version'], + fetchModels: async (resolvedBin, env) => + detectAcpModels({ + bin: resolvedBin, + args: ['acp'], + env, + timeoutMs: 15_000, + defaultModelOption: DEFAULT_MODEL_OPTION, + }), + fallbackModels: [ + DEFAULT_MODEL_OPTION, + // MiniMax — OpenClaw's default provider + { id: 'minimax/MiniMax-M2.7', label: 'MiniMax-M2.7 (default)' }, + { id: 'minimax/MiniMax-M4', label: 'MiniMax-M4' }, + // Anthropic via OpenClaw gateway + { id: 'anthropic/claude-opus-4-5', label: 'Claude Opus 4.5' }, + { id: 'anthropic/claude-sonnet-4-6', label: 'Claude Sonnet 4.6' }, + { id: 'anthropic/claude-haiku-4-5', label: 'Claude Haiku 4.5' }, + // OpenAI via OpenClaw gateway + { id: 'openai/gpt-5', label: 'GPT-5' }, + { id: 'openai/gpt-4o', label: 'GPT-4o' }, + ], + buildArgs: () => ['acp'], + streamFormat: 'acp-json-rpc', + mcpDiscovery: 'mature-acp', + externalMcpInjection: 'acp-merge', +} satisfies RuntimeAgentDef; diff --git a/apps/daemon/src/runtimes/registry.ts b/apps/daemon/src/runtimes/registry.ts index 484062956..1b2f4ba3d 100644 --- a/apps/daemon/src/runtimes/registry.ts +++ b/apps/daemon/src/runtimes/registry.ts @@ -4,6 +4,7 @@ import { codexAgentDef } from './defs/codex.js'; import { devinAgentDef } from './defs/devin.js'; import { geminiAgentDef } from './defs/gemini.js'; import { opencodeAgentDef } from './defs/opencode.js'; +import { openclawAgentDef } from './defs/openclaw.js'; import { hermesAgentDef } from './defs/hermes.js'; import { traeCliAgentDef } from './defs/trae-cli.js'; import { grokBuildAgentDef } from './defs/grok-build.js'; @@ -30,6 +31,7 @@ const BASE_AGENT_DEFS: RuntimeAgentDef[] = [ devinAgentDef, geminiAgentDef, opencodeAgentDef, + openclawAgentDef, hermesAgentDef, traeCliAgentDef, grokBuildAgentDef,