style: format cli-backends and model-selection
This commit is contained in:
parent
d29ae750a7
commit
102f8da561
@ -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,
|
||||||
|
|||||||
@ -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),
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user