style: format cli-backends and model-selection

This commit is contained in:
Jaime Abril 2026-01-26 23:43:23 +01:00
parent d29ae750a7
commit 102f8da561
No known key found for this signature in database
2 changed files with 12 additions and 53 deletions

View File

@ -54,12 +54,7 @@ const DEFAULT_CLAUDE_BACKEND: CliBackendConfig = {
modelAliases: CLAUDE_MODEL_ALIASES, modelAliases: CLAUDE_MODEL_ALIASES,
sessionArg: "--session-id", sessionArg: "--session-id",
sessionMode: "always", sessionMode: "always",
sessionIdFields: [ sessionIdFields: ["session_id", "sessionId", "conversation_id", "conversationId"],
"session_id",
"sessionId",
"conversation_id",
"conversationId",
],
systemPromptArg: "--append-system-prompt", systemPromptArg: "--append-system-prompt",
systemPromptMode: "append", systemPromptMode: "append",
systemPromptWhen: "first", systemPromptWhen: "first",
@ -69,15 +64,7 @@ const DEFAULT_CLAUDE_BACKEND: CliBackendConfig = {
const DEFAULT_CODEX_BACKEND: CliBackendConfig = { const DEFAULT_CODEX_BACKEND: CliBackendConfig = {
command: "codex", command: "codex",
args: [ args: ["exec", "--json", "--color", "never", "--sandbox", "read-only", "--skip-git-repo-check"],
"exec",
"--json",
"--color",
"never",
"--sandbox",
"read-only",
"--skip-git-repo-check",
],
resumeArgs: [ resumeArgs: [
"exec", "exec",
"resume", "resume",
@ -124,10 +111,7 @@ function pickBackendConfig(
return undefined; return undefined;
} }
function mergeBackendConfig( function mergeBackendConfig(base: CliBackendConfig, override?: CliBackendConfig): CliBackendConfig {
base: CliBackendConfig,
override?: CliBackendConfig,
): CliBackendConfig {
if (!override) return { ...base }; if (!override) return { ...base };
return { return {
...base, ...base,
@ -135,9 +119,7 @@ function mergeBackendConfig(
args: override.args ?? base.args, args: override.args ?? base.args,
env: { ...base.env, ...override.env }, env: { ...base.env, ...override.env },
modelAliases: { ...base.modelAliases, ...override.modelAliases }, modelAliases: { ...base.modelAliases, ...override.modelAliases },
clearEnv: Array.from( clearEnv: Array.from(new Set([...(base.clearEnv ?? []), ...(override.clearEnv ?? [])])),
new Set([...(base.clearEnv ?? []), ...(override.clearEnv ?? [])]),
),
sessionIdFields: override.sessionIdFields ?? base.sessionIdFields, sessionIdFields: override.sessionIdFields ?? base.sessionIdFields,
sessionArgs: override.sessionArgs ?? base.sessionArgs, sessionArgs: override.sessionArgs ?? base.sessionArgs,
resumeArgs: override.resumeArgs ?? base.resumeArgs, resumeArgs: override.resumeArgs ?? base.resumeArgs,

View File

@ -9,13 +9,7 @@ export type ModelRef = {
model: string; model: string;
}; };
export type ThinkLevel = export type ThinkLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
| "off"
| "minimal"
| "low"
| "medium"
| "high"
| "xhigh";
export type ModelAliasIndex = { export type ModelAliasIndex = {
byAlias: Map<string, { alias: string; ref: ModelRef }>; byAlias: Map<string, { alias: string; ref: ModelRef }>;
@ -44,9 +38,7 @@ export function isCliProvider(provider: string, cfg?: ClawdbotConfig): boolean {
if (normalized === "codex-cli") return true; if (normalized === "codex-cli") return true;
if (normalized === "kiro-cli") return true; if (normalized === "kiro-cli") return true;
const backends = cfg?.agents?.defaults?.cliBackends ?? {}; const backends = cfg?.agents?.defaults?.cliBackends ?? {};
return Object.keys(backends).some( return Object.keys(backends).some((key) => normalizeProviderId(key) === normalized);
(key) => normalizeProviderId(key) === normalized,
);
} }
function normalizeAnthropicModelId(model: string): string { function normalizeAnthropicModelId(model: string): string {
@ -64,10 +56,7 @@ function normalizeProviderModelId(provider: string, model: string): string {
return model; return model;
} }
export function parseModelRef( export function parseModelRef(raw: string, defaultProvider: string): ModelRef | null {
raw: string,
defaultProvider: string,
): ModelRef | null {
const trimmed = raw.trim(); const trimmed = raw.trim();
if (!trimmed) return null; if (!trimmed) return null;
const slash = trimmed.indexOf("/"); const slash = trimmed.indexOf("/");
@ -95,9 +84,7 @@ export function buildModelAliasIndex(params: {
for (const [keyRaw, entryRaw] of Object.entries(rawModels)) { for (const [keyRaw, entryRaw] of Object.entries(rawModels)) {
const parsed = parseModelRef(String(keyRaw ?? ""), params.defaultProvider); const parsed = parseModelRef(String(keyRaw ?? ""), params.defaultProvider);
if (!parsed) continue; if (!parsed) continue;
const alias = String( const alias = String((entryRaw as { alias?: string } | undefined)?.alias ?? "").trim();
(entryRaw as { alias?: string } | undefined)?.alias ?? "",
).trim();
if (!alias) continue; if (!alias) continue;
const aliasKey = normalizeAliasKey(alias); const aliasKey = normalizeAliasKey(alias);
byAlias.set(aliasKey, { alias, ref: parsed }); byAlias.set(aliasKey, { alias, ref: parsed });
@ -135,10 +122,7 @@ export function resolveConfiguredModelRef(params: {
defaultModel: string; defaultModel: string;
}): ModelRef { }): ModelRef {
const rawModel = (() => { const rawModel = (() => {
const raw = params.cfg.agents?.defaults?.model as const raw = params.cfg.agents?.defaults?.model as { primary?: string } | string | undefined;
| { primary?: string }
| string
| undefined;
if (typeof raw === "string") return raw.trim(); if (typeof raw === "string") return raw.trim();
return raw?.primary?.trim() ?? ""; return raw?.primary?.trim() ?? "";
})(); })();
@ -222,9 +206,7 @@ export function buildAllowedModelSet(params: {
defaultModel && params.defaultProvider defaultModel && params.defaultProvider
? modelKey(params.defaultProvider, defaultModel) ? modelKey(params.defaultProvider, defaultModel)
: undefined; : undefined;
const catalogKeys = new Set( const catalogKeys = new Set(params.catalog.map((entry) => modelKey(entry.provider, entry.id)));
params.catalog.map((entry) => modelKey(entry.provider, entry.id)),
);
if (allowAny) { if (allowAny) {
if (defaultKey) catalogKeys.add(defaultKey); if (defaultKey) catalogKeys.add(defaultKey);
@ -236,10 +218,7 @@ export function buildAllowedModelSet(params: {
} }
const allowedKeys = new Set<string>(); const allowedKeys = new Set<string>();
const configuredProviders = (params.cfg.models?.providers ?? {}) as Record< const configuredProviders = (params.cfg.models?.providers ?? {}) as Record<string, unknown>;
string,
unknown
>;
for (const raw of rawAllowlist) { for (const raw of rawAllowlist) {
const parsed = parseModelRef(String(raw), params.defaultProvider); const parsed = parseModelRef(String(raw), params.defaultProvider);
if (!parsed) continue; if (!parsed) continue;
@ -299,9 +278,7 @@ export function getModelRefStatus(params: {
const key = modelKey(params.ref.provider, params.ref.model); const key = modelKey(params.ref.provider, params.ref.model);
return { return {
key, key,
inCatalog: params.catalog.some( inCatalog: params.catalog.some((entry) => modelKey(entry.provider, entry.id) === key),
(entry) => modelKey(entry.provider, entry.id) === key,
),
allowAny: allowed.allowAny, allowAny: allowed.allowAny,
allowed: allowed.allowAny || allowed.allowedKeys.has(key), allowed: allowed.allowAny || allowed.allowedKeys.has(key),
}; };