98
* upstream `vendor: 'Anthropic'` field.
99
*/
100
>
function toAgentModelInfo(m: CCAModel, provider: AgentProvider): IAgentModelInfo {
claudeAgent.ts
101
>
const supports = m.capabilities?.supports;
102
>
const supportedEfforts = ((supports as IClaudeModelSupports | undefined)?.reasoning_effort ?? []).filter(isClaudeEffortLevel);
103
>
const configSchema = createClaudeThinkingLevelSchema(supportedEfforts);
104
>
const policyState = m.policy?.state as PolicyState | undefined;
105
>
const billing = normalizeCAPIBilling(m.billing);
106
>
// priceCategory may appear as a top-level model field depending on the CAPI version.
107
>
const priceCategory = typeof m.model_picker_price_category === 'string'
108
? m.model_picker_price_category
110
>
return {
111
>
provider,
112
>
// CAPI/endpoint format, dotted version (e.g. `claude-haiku-4.5`) — the
113
>
// canonical id through `ModelSelection.id`. Convert to SDK format at SDK
114
>
// seams via `toSdkModelId`.
115
>
id: m.id,
116
>
name: m.name,
117
>
maxContextWindow: m.capabilities?.limits?.max_context_window_tokens,
118
>
maxOutputTokens: m.capabilities?.limits?.max_output_tokens,
119
>
maxPromptTokens: m.capabilities?.limits?.max_prompt_tokens,
120
>
supportsVision: !!supports?.vision,
121
>
...(configSchema ? { configSchema } : {}),
122
>
...(policyState ? { policyState } : {}),
123
>
_meta: createPricingMetaFromBilling(billing, priceCategory),
124
>
};
125
>
}
126
127
/**