Repository navigation
feat(provider): add Wally - #2482
adityabatra072 wants to merge 1 commit into
Conversation
Walkthrough
Merge Risk:
|
There was a problem hiding this comment.
🔇 Additional comments: 1
src/main/provider/providerRegistry.ts-675-675: 1
675-675:Minor · Functional Correctness · Quick win
⚠️ Unverified finding
Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.Check a model available to the key.
Wally documents model entitlements per environment. A valid key can therefore receive a 403 for
deepseek-v4.1-flashwhile another model works. The connection check then reports failure. (docs.runanywhere.ai)Select an available chat model for the check and handle model-entitlement failures.

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: defaults
- Review profile: CHILL
- Plan: Advanced
- Run ID:
c14661ba-84a3-47b9-93a4-7669fc9e651d
Files ignored due to path filters: 1-
src/renderer/src/assets/llm-icons/wally-color.svgis excluded by!**/*.svg
Files selected for processing: 8-
README.jp.mdREADME.mdREADME.zh.mdsrc/main/provider/defaults.tssrc/main/provider/providerRegistry.tssrc/renderer/src/components/icons/modelIconRegistry.tstest/main/provider/basicApiKeyProviders.test.tstest/main/provider/defaultProviders.test.ts
Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.
-
zerob13
left a comment
There was a problem hiding this comment.
Approved. Additive provider registration, no blocking issues.
What this PR does
- Registers Wally as a built-in provider that starts disabled, on the existing OpenAI-compatible transport with an API-key credential.
- Uses a text-generation request for the connection check instead of the model list, because Wally's
/v1/modelsanswers without a key and so cannot prove that a key is valid. - Adds the icon, the provider table rows in the three READMEs that carry that table, and two tests.
Review
Over-engineering: none. It maps to OPENAI_BASE and adds no adapter, runtime kind, or dependency. That is the path docs/features/provider-runtime/spec.md asks for when the wire format already matches.
Consistency with the existing provider designs: the defaults.ts profile and the registry entry follow the CloudGPU shape, including credentialStrategy: 'api-key' and embeddingStrategy: 'none'. generate-text is the right check strategy for a catalog that is readable without credentials, and the 16-token limit matches the other providers that use it.
Breaking changes: none. Everything is additive, the provider ships with enable: false, and no existing provider id, model source, or runtime mapping is touched.
Tests: proportional. One test for the default profile and one for the check request. They pin the contract without duplicating the existing provider tests or testing internals.
Verification: PR Check and Package Check are green on 7f6499b. Locally I ran test/main/provider/defaultProviders.test.ts and test/main/provider/basicApiKeyProviders.test.ts (94 tests) and oxfmt --check on the changed TypeScript files; all passed.
Non-blocking notes
docs/features/provider-runtime/spec.mddocuments CloudGPU and Obscurify.ai because their check strategy is not obvious from the registry. Wally makes the same kind of decision (public model list, so the check generates text). A short section would save the next reader the investigation. Optional.- If Wally grants model access per key, a valid key without
deepseek-v4.1-flashwill fail the check. The PR reports a real-key check passing with that model, so I am not asking for a change; just recording the tradeoff. expect(defaults).toBeDefined()after the non-null assertion cannot fail. Harmless, no action needed.
Adds Wally as a disabled built-in OpenAI-compatible provider, in the same registry shape as CloudGPU (#2474) and the other API-key providers.
Wally is RunAnywhere's inference API for open-weight models (DeepSeek V4.1 Flash, DeepSeek V4 Pro, GLM-5.3, Kimi K3, MiniMax M3).
defaults.ts:wally, base URLhttps://inference.runanywhere.ai/v1, disabled by default. Keys at https://console.runanywhere.ai/, API docs at https://docs.runanywhere.ai/wally-cloud/api, models and prices at https://www.runwally.com/pricing.providerRegistry.ts:...OPENAI_BASEwithcredentialStrategy: 'api-key'andembeddingStrategy: 'none', so it uses the existingopenai-compatibleruntime and live/v1/modelsdiscovery. Wally'sGET /v1/modelsanswers without a key, so the check isgenerate-textwithdeepseek-v4.1-flashand the shared 16-token limit, like CloudGPU. No embeddings endpoint is offered.Validation:
pnpm exec vitest run --config vitest.config.ts test/main/provider: 75 files, 1053 passedpnpm exec vitest run --config vitest.config.renderer.ts test/renderer/components/ModelIcon.test.ts: 8 passedpnpm run typecheck,pnpm run lint,pnpm run format:check,pnpm run i18n,pnpm run icons:check,pnpm run architecture:renderer-baseline:check: cleandeepseek-v4.1-flashandglm-5.3-flash; a bad key fails the check.Summary by CodeRabbit