opencode
opencode copied to clipboard
feat(provider): add FriendliAI provider support
Summary
Add native support for FriendliAI as an OpenAI-compatible provider with proper handling of Friendli-specific features.
Changes
transform.ts
-
variants()- Returns empty object for Friendli provider- Friendli uses
chat_template_kwargsinstead ofreasoningEffort - Variants are defined explicitly via config or models.dev
- Friendli uses
-
providerOptions()- Adds Friendli-specific provider options- Strips unsupported
thinkingoption - Injects
parse_reasoning: truefor backward compatibility with pre-Dec 2025 models
- Strips unsupported
-
schema()- Sanitizes JSON Schema for Friendli constraints- Removes unsupported properties:
minLength,maxLength(string),minimum/maximum(number only) - Filters unsupported formats (only
uuid,date-time,date,timeallowed) - Removes
maxItems, clampsminItems> 1 to 1 - Removes unsupported composition:
allOf,oneOf,not(onlyanyOfsupported) - Removes
additionalProperties - Based on: https://friendli.ai/docs/guides/structured-outputs
- Removes unsupported properties:
Related
- models.dev PR: (will be linked after creation)
Testing
Tested with local build against FriendliAI serverless endpoints:
- ✅ Qwen3-32B with
--variant off/on - ✅ K-EXAONE-236B-A23B with
--variant off/on - ✅ GLM-4.6 with
--variant off/on