From a16fa318f9e923a86a3cd2afd36af94476b79ca2 Mon Sep 17 00:00:00 2001 From: Veightor <47860869+Veightor@users.noreply.github.com> Date: Mon, 26 Jan 2026 16:19:00 -0500 Subject: [PATCH] Provider: standardize Chutes integration for merge readiness --- src/agents/model-catalog.ts | 6 +++++- src/commands/model-picker.ts | 3 ++- src/commands/models/list.registry.ts | 5 +++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/agents/model-catalog.ts b/src/agents/model-catalog.ts index 5463542cb..5ae093586 100644 --- a/src/agents/model-catalog.ts +++ b/src/agents/model-catalog.ts @@ -8,6 +8,7 @@ export type ModelCatalogEntry = { provider: string; contextWindow?: number; reasoning?: boolean; + confidentialCompute?: boolean; input?: Array<"text" | "image">; }; @@ -17,6 +18,7 @@ type DiscoveredModel = { provider: string; contextWindow?: number; reasoning?: boolean; + confidentialCompute?: boolean; input?: Array<"text" | "image">; }; @@ -82,10 +84,12 @@ export async function loadModelCatalog(params?: { ? entry.contextWindow : undefined; const reasoning = typeof entry?.reasoning === "boolean" ? entry.reasoning : undefined; + const confidentialCompute = + typeof entry?.confidentialCompute === "boolean" ? entry.confidentialCompute : undefined; const input = Array.isArray(entry?.input) ? (entry.input as Array<"text" | "image">) : undefined; - models.push({ id, name, provider, contextWindow, reasoning, input }); + models.push({ id, name, provider, contextWindow, reasoning, confidentialCompute, input }); } if (models.length === 0) { diff --git a/src/commands/model-picker.ts b/src/commands/model-picker.ts index a8abb5035..5c470c7a0 100644 --- a/src/commands/model-picker.ts +++ b/src/commands/model-picker.ts @@ -205,6 +205,7 @@ export async function promptDefaultModel( name?: string; contextWindow?: number; reasoning?: boolean; + confidentialCompute?: boolean; }) => { const key = modelKey(entry.provider, entry.id); if (seen.has(key)) return; @@ -214,7 +215,7 @@ export async function promptDefaultModel( if (entry.name && entry.name !== entry.id) hints.push(entry.name); if (entry.contextWindow) hints.push(`ctx ${formatTokenK(entry.contextWindow)}`); if (entry.reasoning) hints.push("reasoning"); - if ((entry as any).confidentialCompute) hints.push("TEE"); + if (entry.confidentialCompute) hints.push("TEE"); const aliases = aliasIndex.byKey.get(key); if (aliases?.length) hints.push(`alias: ${aliases.join(", ")}`); if (!hasAuth(entry.provider)) hints.push("auth missing"); diff --git a/src/commands/models/list.registry.ts b/src/commands/models/list.registry.ts index 95c96e40b..cb891cdb8 100644 --- a/src/commands/models/list.registry.ts +++ b/src/commands/models/list.registry.ts @@ -80,6 +80,11 @@ export function toModelRow(params: { : (availableKeys?.has(modelKey(model.provider, model.id)) ?? false); const aliasTags = aliases.length > 0 ? [`alias:${aliases.join(",")}`] : []; const mergedTags = new Set(tags); + + if ((model as any).confidentialCompute) { + mergedTags.add("TEE"); + } + if (aliasTags.length > 0) { for (const tag of mergedTags) { if (tag === "alias" || tag.startsWith("alias:")) mergedTags.delete(tag);