feat(providers): add ofox.ai as LLM preset and video generation provider - #132
Open
celeste1900 wants to merge 2 commits into
Open
feat(providers): add ofox.ai as LLM preset and video generation provider#132celeste1900 wants to merge 2 commits into
celeste1900 wants to merge 2 commits into
Conversation
Add OFox (https://ofox.ai), a multi-model gateway, as: - an OpenAI-compatible LLM preset (mirrors the openrouter entry; keystore whitelist, vendor icon monogram, vision label, verify assertions) - a video generation provider (async task id + polling, same shape as grok-imagine-video, implemented in its own server/plugins module): text-to-video, first-frame / first-and-last-frame image-to-video, and up to 9 image references (frames and references are mutually exclusive at the API level, enforced before submission); generateAudio and seed pass through. Local project media rides as base64 data URLs, which the OFox gateway re-hosts on its own object storage (verified live). Validation, resumer registration, capabilities, tool schema, settings page with model discovery via the /models probe, agent skill reference, i18n (en/it/ru), .env.example, and verify coverage included. refVideos/refAudios are supported by the OFox API but not wired yet; per-model duration/resolution limits are enforced by the API with a clear 400 before any task is created, so no local per-model whitelist is kept. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
mirror_urls are persistent signed CDN addresses returned when the upstream has mirroring enabled; unsigned_urls are temporary upstream links that may expire within 24 hours. Prefer the former and fall back to the latter, matching the official retrieve-endpoint recommendation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
LLM preset (
ofox) — mirrors theopenrouterentry exactly: anopenai-compatiblepreset (https://api.ofox.ai/v1), keystore whitelist entries, an asset-free vendor monogram (same approach as atlas/xai), the vision label, and the standard verify assertions.Video provider (
ofox) — same async request-id + poll shape asgrok-imagine-video, implemented in its own module (server/plugins/ofox-video-provider.ts) the same way:POST /videos→ task id → pollGET /videos/{id}→ download fromunsigned_urls. Wired capabilities:400 references_conflict); validation enforces that before any paid submission.generateAudioandseedpass through.refVideos/refAudiosare supported by the OFox API but not wired yet.mediaDataUrlhelper the seedance/hailuo paths already use.validateOfox, rejecting all seedance/kling/hailuo-only options), resumer registration, capabilities,submit_videotool schema, settings vendor page with model discovery through the/modelsprobe (parseModelCatalog), agent skill reference (references/ofox.md), i18n (en/it/ru),.env.example, and verify coverage.Design notes:
Test plan
npm run lintnpm test(full verify chain, including the regenerated server tool catalog)npm run verify:agent-skillnpm run build(tsc -b+ vite)POST /generate/videowithmodel: "ofox"(4 s, 9:16, 720p) → job succeeded → saved to the media pool (720×1280 h264 + aac, 4.09 s);firstFramefrom a project upload (base64 data URL path) → job succeeded, output first frame matches the reference scene.Notes
I work on ofox.ai — this is an official contribution and we'll maintain it long-term (ping me anytime). Test credits: happy to provide credits so you can verify the integration yourself — register at ofox.ai and share the account email here (or reply however you prefer), and we'll top up the account right away.
Developed with AI assistance (Claude), reviewed by the OFox team.
🤖 Generated with Claude Code