fix(atlas-cloud): vendor to gateway catalog correction and added reasoning support - #1785
Conversation
Move Atlas Cloud from a direct vendor descriptor to a hosted OpenAI-compatible gateway while preserving the atlas-cloud preset, dedicated ATLAS_CLOUD_API_KEY handling, model env defaults, and generated integration metadata. Add shared upstream model descriptors needed by the Atlas gateway catalog so Atlas entries do not own model metadata or resolve through NearAI-scoped descriptors. Add conservative Atlas reasoning metadata for verified Kimi effort levels and Grok Build always-on/no-wire reasoning, plus resolver and OpenAI shim tests for top-level reasoning_effort serialization and no-wire behavior.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
📜 Recent review details🧰 Additional context used📓 Path-based instructions (15)src/**/*.{ts,tsx}📄 CodeRabbit inference engine (AGENTS.md)
Files:
{src/integrations/**/*.ts,src/services/**/*.ts}📄 CodeRabbit inference engine (AGENTS.md)
Files:
src/integrations/**/*.ts📄 CodeRabbit inference engine (AGENTS.md)
Files:
**/*.{ts,tsx,js,jsx,py,json,md}📄 CodeRabbit inference engine (CONTRIBUTING.md)
Files:
**/*.test.{ts,tsx,js,jsx}📄 CodeRabbit inference engine (CONTRIBUTING.md)
Files:
**/*.test.{ts,tsx,js}📄 CodeRabbit inference engine (CONTRIBUTING.md)
Files:
**/*.{ts,tsx,js,jsx,py}📄 CodeRabbit inference engine (CONTRIBUTING.md)
Files:
**/*.{ts,tsx}📄 CodeRabbit inference engine (CONTRIBUTING.md)
Files:
**⚙️ CodeRabbit configuration file
Files:
**/*⚙️ CodeRabbit configuration file
Files:
{src/services/api/**,src/integrations/**,src/utils/model/**,src/utils/provider*.ts,src/commands/provider/**}⚙️ CodeRabbit configuration file
Files:
{src/**/*.test.ts,src/**/*.test.tsx,tests/**,scripts/**/*.test.ts,vscode-extension/**/*.test.js}⚙️ CodeRabbit configuration file
Files:
{src/commands/**/*.ts,src/services/**/*.ts,src/entrypoints/**/*.ts}📄 CodeRabbit inference engine (AGENTS.md)
Files:
{src/services/**/*.ts,src/utils/**/*.ts}📄 CodeRabbit inference engine (AGENTS.md)
Files:
src/**/*provider*.{ts,tsx,js}📄 CodeRabbit inference engine (CONTRIBUTING.md)
Files:
🔇 Additional comments (2)
📝 WalkthroughWalkthroughAdds an Atlas Cloud gateway, updates route and alias resolution, extends Atlas Cloud effort and request tests, and adds new model entries plus Qwen helper-based exports. ChangesAtlas Cloud integration
Model catalog updates
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 5 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/integrations/compatibility.test.ts`:
- Around line 95-99: The Atlas Cloud gateway test is too weak because filtering
for vendorId === 'nearai' can pass even if getModelsForGateway('atlas-cloud')
returns no models at all. In compatibility.test.ts, strengthen the assertion in
the test around getModelsForGateway so it still verifies no NearAI-scoped
descriptors are present while also asserting a positive baseline on the returned
catalog (using the existing getModelsForGateway helper and model list), ensuring
the registry is not silently empty.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 39179862-5f3e-44d1-be00-261bc2378316
⛔ Files ignored due to path filters (2)
src/integrations/generated/integrationArtifacts.generated.tsis excluded by!**/generated/**,!src/integrations/generated/**src/integrations/generated/integrationManifest.generated.tsis excluded by!**/generated/**,!src/integrations/generated/**
📒 Files selected for processing (13)
src/integrations/compatibility.test.tssrc/integrations/gateways/atlas-cloud.tssrc/integrations/models/claude.tssrc/integrations/models/gemini.tssrc/integrations/models/glm.tssrc/integrations/models/kimi.tssrc/integrations/models/openai-compatible-alias.tssrc/integrations/models/qwen.tssrc/integrations/models/xai.tssrc/integrations/vendors/atlas-cloud.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.tssrc/utils/providerProfiles.ts
💤 Files with no reviewable changes (1)
- src/integrations/vendors/atlas-cloud.ts
📜 Review details
🧰 Additional context used
📓 Path-based instructions (15)
src/**/*.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Use TypeScript with strict mode and ESM imports
Files:
src/integrations/models/kimi.tssrc/integrations/models/gemini.tssrc/integrations/models/openai-compatible-alias.tssrc/integrations/models/claude.tssrc/integrations/compatibility.test.tssrc/integrations/models/xai.tssrc/utils/providerProfiles.tssrc/services/api/client.test.tssrc/integrations/gateways/atlas-cloud.tssrc/integrations/models/qwen.tssrc/integrations/models/glm.tssrc/utils/effort.codex.test.ts
{src/integrations/**/*.ts,src/services/**/*.ts}
📄 CodeRabbit inference engine (AGENTS.md)
Test the exact provider/model path you changed when possible for provider modifications
Files:
src/integrations/models/kimi.tssrc/integrations/models/gemini.tssrc/integrations/models/openai-compatible-alias.tssrc/integrations/models/claude.tssrc/integrations/compatibility.test.tssrc/integrations/models/xai.tssrc/services/api/client.test.tssrc/integrations/gateways/atlas-cloud.tssrc/integrations/models/qwen.tssrc/integrations/models/glm.ts
src/integrations/**/*.ts
📄 CodeRabbit inference engine (AGENTS.md)
Check existing provider implementations before adding a new pattern
Files:
src/integrations/models/kimi.tssrc/integrations/models/gemini.tssrc/integrations/models/openai-compatible-alias.tssrc/integrations/models/claude.tssrc/integrations/compatibility.test.tssrc/integrations/models/xai.tssrc/integrations/gateways/atlas-cloud.tssrc/integrations/models/qwen.tssrc/integrations/models/glm.ts
**/*.{ts,tsx,js,jsx,py,json,md}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Follow the existing code style in the touched files
Files:
src/integrations/models/kimi.tssrc/integrations/models/gemini.tssrc/integrations/models/openai-compatible-alias.tssrc/integrations/models/claude.tssrc/integrations/compatibility.test.tssrc/integrations/models/xai.tssrc/utils/providerProfiles.tssrc/services/api/client.test.tssrc/integrations/gateways/atlas-cloud.tssrc/integrations/models/qwen.tssrc/integrations/models/glm.tssrc/utils/effort.codex.test.ts
**/*.{ts,tsx,js,jsx,py}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Keep comments useful and concise
Files:
src/integrations/models/kimi.tssrc/integrations/models/gemini.tssrc/integrations/models/openai-compatible-alias.tssrc/integrations/models/claude.tssrc/integrations/compatibility.test.tssrc/integrations/models/xai.tssrc/utils/providerProfiles.tssrc/services/api/client.test.tssrc/integrations/gateways/atlas-cloud.tssrc/integrations/models/qwen.tssrc/integrations/models/glm.tssrc/utils/effort.codex.test.ts
**/*.{ts,tsx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Follow TypeScript strict mode and type safety practices by running typecheck before submitting
Files:
src/integrations/models/kimi.tssrc/integrations/models/gemini.tssrc/integrations/models/openai-compatible-alias.tssrc/integrations/models/claude.tssrc/integrations/compatibility.test.tssrc/integrations/models/xai.tssrc/utils/providerProfiles.tssrc/services/api/client.test.tssrc/integrations/gateways/atlas-cloud.tssrc/integrations/models/qwen.tssrc/integrations/models/glm.tssrc/utils/effort.codex.test.ts
**
⚙️ CodeRabbit configuration file
**: # AGENTS.md - AI Agent Coding GuideThis guide is for AI coding agents working in the OpenClaude repository. Read it before changing code, and also follow CONTRIBUTING.md for contributor policy, PR expectations, review follow-up, and project scope.
Project Snapshot
OpenClaude is a coding-agent CLI for cloud and local model providers. It supports OpenAI-compatible APIs, Anthropic, Gemini, DeepSeek, Ollama, MCP, local backends, slash commands, tools, agents, and a React/Ink terminal UI.
The installed CLI runs on Node.js
>=22.0.0. Bun is used for source builds, scripts, dependency management, and tests.Work Style
- Keep changes focused on one problem.
- Prefer existing patterns in the file or nearby module.
- Avoid unrelated formatting, renames, dependency changes, or broad rewrites.
- Add or update tests when behavior changes.
- Update docs when setup, commands, provider behavior, or user-facing behavior changes.
- For new features, larger refactors, dependencies, or runtime changes, follow the issue-first guidance in CONTRIBUTING.md.
Stack And Conventions
- TypeScript with strict mode and ESM imports.
- React + Ink for terminal UI.
- Bun lockfile and Bun scripts for development workflows.
- Node runtime for the built CLI.
- Python exists for legacy/local-provider helper code. Do not add new Python code or expand Python-based features unless a maintainer explicitly approves that direction.
Common libraries and patterns:
chalkfor terminal color.commanderfor CLI argument parsing.execafor child processes.- Existing service, provider, settings, permission, and UI patterns over new abstractions.
Repository Map
src/commands/- slash and CLI command implementations.src/components/- React/Ink UI components.src/services/- API, MCP, OAuth, wiki, voice, and other service integrations.src/tools/- tool implementations.src/utils/- shared utilities.- `src/integration...
Files:
src/integrations/models/kimi.tssrc/integrations/models/gemini.tssrc/integrations/models/openai-compatible-alias.tssrc/integrations/models/claude.tssrc/integrations/compatibility.test.tssrc/integrations/models/xai.tssrc/utils/providerProfiles.tssrc/services/api/client.test.tssrc/integrations/gateways/atlas-cloud.tssrc/integrations/models/qwen.tssrc/integrations/models/glm.tssrc/utils/effort.codex.test.ts
**/*
⚙️ CodeRabbit configuration file
**/*: Apply the OpenClaude maintainer review rubric from AGENTS.md. Review the current diff, not stale discussion context. Separate real blockers from suggestions. Do not request changes for vague style churn. Treat approval as merge-ready from CodeRabbit's side, pending required human review and GitHub Checks. If checks are failing or unavailable, say so clearly instead of implying the PR is fully ready.
Files:
src/integrations/models/kimi.tssrc/integrations/models/gemini.tssrc/integrations/models/openai-compatible-alias.tssrc/integrations/models/claude.tssrc/integrations/compatibility.test.tssrc/integrations/models/xai.tssrc/utils/providerProfiles.tssrc/services/api/client.test.tssrc/integrations/gateways/atlas-cloud.tssrc/integrations/models/qwen.tssrc/integrations/models/glm.tssrc/utils/effort.codex.test.ts
{src/services/api/**,src/integrations/**,src/utils/model/**,src/utils/provider*.ts,src/commands/provider/**}
⚙️ CodeRabbit configuration file
{src/services/api/**,src/integrations/**,src/utils/model/**,src/utils/provider*.ts,src/commands/provider/**}: Review provider routing, model selection, env precedence, auth/token handling, OpenAI-compatible shims, retries, proxy behavior, and outbound HTTP behavior with high scrutiny. Block on silent default changes, hidden fallback expansion, credential reuse mistakes, hardcoded provider assumptions, or new network reach that is not intentional and documented.
Files:
src/integrations/models/kimi.tssrc/integrations/models/gemini.tssrc/integrations/models/openai-compatible-alias.tssrc/integrations/models/claude.tssrc/integrations/compatibility.test.tssrc/integrations/models/xai.tssrc/utils/providerProfiles.tssrc/services/api/client.test.tssrc/integrations/gateways/atlas-cloud.tssrc/integrations/models/qwen.tssrc/integrations/models/glm.ts
**/*.test.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Add or update tests when the change affects behavior
Files:
src/integrations/compatibility.test.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.ts
**/*.test.{ts,tsx,js}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Test the exact provider/model path you changed when possible
Files:
src/integrations/compatibility.test.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.ts
{src/**/*.test.ts,src/**/*.test.tsx,tests/**,scripts/**/*.test.ts,vscode-extension/**/*.test.js}
⚙️ CodeRabbit configuration file
{src/**/*.test.ts,src/**/*.test.tsx,tests/**,scripts/**/*.test.ts,vscode-extension/**/*.test.js}: Review tests for meaningful coverage of the changed behavior, isolation of global/env/config state, async cleanup, fake timers, provider profile leaks, and Windows-compatible assumptions. Block when risky runtime changes lack focused regression coverage or tests assert implementation details while missing the user-visible behavior.
Files:
src/integrations/compatibility.test.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.ts
{src/services/**/*.ts,src/utils/**/*.ts}
📄 CodeRabbit inference engine (AGENTS.md)
Use
execafor child processes
Files:
src/utils/providerProfiles.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.ts
src/**/*provider*.{ts,tsx,js}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Provider implementations must follow documented patterns in docs/integrations/
Files:
src/utils/providerProfiles.ts
{src/commands/**/*.ts,src/services/**/*.ts,src/entrypoints/**/*.ts}
📄 CodeRabbit inference engine (AGENTS.md)
Use
chalkfor terminal color in CLI code
Files:
src/services/api/client.test.ts
🔇 Additional comments (14)
src/integrations/models/qwen.ts (1)
31-51: LGTM!Also applies to: 53-75, 76-89
src/integrations/models/claude.ts (1)
4-21: LGTM!src/integrations/models/gemini.ts (1)
46-47: LGTM!src/integrations/models/glm.ts (1)
32-45: LGTM!Also applies to: 56-56
src/integrations/models/kimi.ts (1)
33-33: LGTM!src/integrations/models/openai-compatible-alias.ts (1)
39-45: LGTM!src/integrations/models/xai.ts (1)
13-26: LGTM!src/integrations/gateways/atlas-cloud.ts (2)
54-57: LGTM!
38-91: 🗄️ Data Integrity & IntegrationNo issue:
modelDescriptorIdreferences are validated
validateIntegrationRegistry()already rejects any catalog entry whosemodelDescriptorIddoes not resolve, so Atlas models won’t silently drop out ofgetModelsForGateway().> Likely an incorrect or invalid review comment.src/utils/providerProfiles.ts (1)
1263-1274: LGTM!src/integrations/compatibility.test.ts (1)
80-93: LGTM!src/services/api/client.test.ts (2)
1561-1580: LGTM!
1531-1531: 🩺 Stability & AvailabilityNo change needed for fetch isolation.
globalThis.fetchis restored inafterEach, so these stubs stay isolated across tests.> Likely an incorrect or invalid review comment.src/utils/effort.codex.test.ts (1)
417-481: LGTM!
Update the Atlas Cloud gateway catalog with route-specific reasoning controls verified through live Atlas probes. Enable top-level reasoning_effort metadata for models that accepted low/medium/high/xhigh, limit Doubao routes to low/medium/high, keep Grok Build as always-on no-wire reasoning, and leave OWL without effort controls after probes showed no reasoning output. Expand effort resolver coverage and OpenAI shim serialization tests so Atlas metadata exposes the expected effort levels and strips reasoning_effort for no-wire models. Validation: bun install; bun run build; bun run smoke; bun run check; bun run test:provider; bun run test:provider-recommendation; python -m pytest -q python/tests; bun run typecheck; bun run typecheck:type-tests; bun run doctor:runtime; bun run security:pr-scan -- --base HEAD --head 1878a1f05f7fcce7ab7098c890ff3091dafcaf66.
Introduce opt-in catalog aliases for model entries and resolve those aliases through the active route catalog before sending OpenAI-compatible requests. Add Atlas aliases where descriptor IDs differ from Atlas API model IDs, including GLM, Claude coding variants, GPT, Kimi, MiniMax, Qwen, and Grok entries. Teach effort metadata lookup to use the same explicit aliases so /effort support matches routed model IDs. Cover Atlas alias routing plus OpenRouter and Hicap no-op routing in providerConfig tests, and add Atlas GLM alias effort coverage.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/services/api/providerConfig.test.ts`:
- Around line 27-74: Add a negative assertion to providerConfig.test around
resolveProviderRequest to cover alias-collision regressions: alongside the
existing Atlas alias checks for claude-sonnet-4-6 and claude-sonnet-4-6-coding,
verify that an Atlas API model id with no explicit alias (for example a full
provider model name) is returned unchanged. This should exercise the fallback
path in resolveProviderRequest and ensure the alias resolution logic does not
over-match or depend on find() ordering.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 9577bbb3-3609-42ee-87b0-1344b8f5638e
📒 Files selected for processing (7)
src/integrations/descriptors.tssrc/integrations/gateways/atlas-cloud.tssrc/services/api/client.test.tssrc/services/api/providerConfig.test.tssrc/services/api/providerConfig.tssrc/utils/effort.codex.test.tssrc/utils/effort.ts
📜 Review details
⏰ Context from checks skipped due to timeout. (1)
- GitHub Check: typecheck
🧰 Additional context used
📓 Path-based instructions (15)
src/**/*.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Use TypeScript with strict mode and ESM imports
Files:
src/services/api/providerConfig.test.tssrc/utils/effort.tssrc/integrations/descriptors.tssrc/integrations/gateways/atlas-cloud.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.tssrc/services/api/providerConfig.ts
{src/commands/**/*.ts,src/services/**/*.ts,src/entrypoints/**/*.ts}
📄 CodeRabbit inference engine (AGENTS.md)
Use
chalkfor terminal color in CLI code
Files:
src/services/api/providerConfig.test.tssrc/services/api/client.test.tssrc/services/api/providerConfig.ts
{src/services/**/*.ts,src/utils/**/*.ts}
📄 CodeRabbit inference engine (AGENTS.md)
Use
execafor child processes
Files:
src/services/api/providerConfig.test.tssrc/utils/effort.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.tssrc/services/api/providerConfig.ts
{src/integrations/**/*.ts,src/services/**/*.ts}
📄 CodeRabbit inference engine (AGENTS.md)
Test the exact provider/model path you changed when possible for provider modifications
Files:
src/services/api/providerConfig.test.tssrc/integrations/descriptors.tssrc/integrations/gateways/atlas-cloud.tssrc/services/api/client.test.tssrc/services/api/providerConfig.ts
**/*.{ts,tsx,js,jsx,py,json,md}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Follow the existing code style in the touched files
Files:
src/services/api/providerConfig.test.tssrc/utils/effort.tssrc/integrations/descriptors.tssrc/integrations/gateways/atlas-cloud.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.tssrc/services/api/providerConfig.ts
**/*.test.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Add or update tests when the change affects behavior
Files:
src/services/api/providerConfig.test.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.ts
src/**/*provider*.{ts,tsx,js}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Provider implementations must follow documented patterns in docs/integrations/
Files:
src/services/api/providerConfig.test.tssrc/services/api/providerConfig.ts
**/*.test.{ts,tsx,js}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Test the exact provider/model path you changed when possible
Files:
src/services/api/providerConfig.test.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.ts
**/*.{ts,tsx,js,jsx,py}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Keep comments useful and concise
Files:
src/services/api/providerConfig.test.tssrc/utils/effort.tssrc/integrations/descriptors.tssrc/integrations/gateways/atlas-cloud.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.tssrc/services/api/providerConfig.ts
**/*.{ts,tsx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Follow TypeScript strict mode and type safety practices by running typecheck before submitting
Files:
src/services/api/providerConfig.test.tssrc/utils/effort.tssrc/integrations/descriptors.tssrc/integrations/gateways/atlas-cloud.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.tssrc/services/api/providerConfig.ts
**
⚙️ CodeRabbit configuration file
**: # AGENTS.md - AI Agent Coding GuideThis guide is for AI coding agents working in the OpenClaude repository. Read it before changing code, and also follow CONTRIBUTING.md for contributor policy, PR expectations, review follow-up, and project scope.
Project Snapshot
OpenClaude is a coding-agent CLI for cloud and local model providers. It supports OpenAI-compatible APIs, Anthropic, Gemini, DeepSeek, Ollama, MCP, local backends, slash commands, tools, agents, and a React/Ink terminal UI.
The installed CLI runs on Node.js
>=22.0.0. Bun is used for source builds, scripts, dependency management, and tests.Work Style
- Keep changes focused on one problem.
- Prefer existing patterns in the file or nearby module.
- Avoid unrelated formatting, renames, dependency changes, or broad rewrites.
- Add or update tests when behavior changes.
- Update docs when setup, commands, provider behavior, or user-facing behavior changes.
- For new features, larger refactors, dependencies, or runtime changes, follow the issue-first guidance in CONTRIBUTING.md.
Stack And Conventions
- TypeScript with strict mode and ESM imports.
- React + Ink for terminal UI.
- Bun lockfile and Bun scripts for development workflows.
- Node runtime for the built CLI.
- Python exists for legacy/local-provider helper code. Do not add new Python code or expand Python-based features unless a maintainer explicitly approves that direction.
Common libraries and patterns:
chalkfor terminal color.commanderfor CLI argument parsing.execafor child processes.- Existing service, provider, settings, permission, and UI patterns over new abstractions.
Repository Map
src/commands/- slash and CLI command implementations.src/components/- React/Ink UI components.src/services/- API, MCP, OAuth, wiki, voice, and other service integrations.src/tools/- tool implementations.src/utils/- shared utilities.- `src/integration...
Files:
src/services/api/providerConfig.test.tssrc/utils/effort.tssrc/integrations/descriptors.tssrc/integrations/gateways/atlas-cloud.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.tssrc/services/api/providerConfig.ts
**/*
⚙️ CodeRabbit configuration file
**/*: Apply the OpenClaude maintainer review rubric from AGENTS.md. Review the current diff, not stale discussion context. Separate real blockers from suggestions. Do not request changes for vague style churn. Treat approval as merge-ready from CodeRabbit's side, pending required human review and GitHub Checks. If checks are failing or unavailable, say so clearly instead of implying the PR is fully ready.
Files:
src/services/api/providerConfig.test.tssrc/utils/effort.tssrc/integrations/descriptors.tssrc/integrations/gateways/atlas-cloud.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.tssrc/services/api/providerConfig.ts
{src/services/api/**,src/integrations/**,src/utils/model/**,src/utils/provider*.ts,src/commands/provider/**}
⚙️ CodeRabbit configuration file
{src/services/api/**,src/integrations/**,src/utils/model/**,src/utils/provider*.ts,src/commands/provider/**}: Review provider routing, model selection, env precedence, auth/token handling, OpenAI-compatible shims, retries, proxy behavior, and outbound HTTP behavior with high scrutiny. Block on silent default changes, hidden fallback expansion, credential reuse mistakes, hardcoded provider assumptions, or new network reach that is not intentional and documented.
Files:
src/services/api/providerConfig.test.tssrc/integrations/descriptors.tssrc/integrations/gateways/atlas-cloud.tssrc/services/api/client.test.tssrc/services/api/providerConfig.ts
{src/**/*.test.ts,src/**/*.test.tsx,tests/**,scripts/**/*.test.ts,vscode-extension/**/*.test.js}
⚙️ CodeRabbit configuration file
{src/**/*.test.ts,src/**/*.test.tsx,tests/**,scripts/**/*.test.ts,vscode-extension/**/*.test.js}: Review tests for meaningful coverage of the changed behavior, isolation of global/env/config state, async cleanup, fake timers, provider profile leaks, and Windows-compatible assumptions. Block when risky runtime changes lack focused regression coverage or tests assert implementation details while missing the user-visible behavior.
Files:
src/services/api/providerConfig.test.tssrc/services/api/client.test.tssrc/utils/effort.codex.test.ts
src/integrations/**/*.ts
📄 CodeRabbit inference engine (AGENTS.md)
Check existing provider implementations before adding a new pattern
Files:
src/integrations/descriptors.tssrc/integrations/gateways/atlas-cloud.ts
🔇 Additional comments (9)
src/integrations/gateways/atlas-cloud.ts (3)
1-34: LGTM!
92-94: LGTM!
39-91: 🎯 Functional CorrectnessNo missing descriptors here. The Atlas catalog IDs all map to shared model descriptors, so
resolveCatalogReasoningMetadatastill has a valid fallback path.> Likely an incorrect or invalid review comment.src/integrations/descriptors.ts (1)
103-117: LGTM!src/services/api/providerConfig.ts (2)
253-280: LGTM!
912-916: LGTM!src/utils/effort.ts (1)
318-324: LGTM!src/services/api/client.test.ts (1)
1528-1634: LGTM!src/utils/effort.codex.test.ts (1)
451-544: LGTM!
Assert the Atlas gateway catalog resolves at least one shared model before checking for NearAI descriptor leakage. Add an Atlas full API-name fallback assertion so catalog alias routing cannot over-match provider-qualified model IDs.
|
@kevincodex1 LGTM |
Summary
atlas-cloudpreset, dedicatedATLAS_CLOUD_API_KEYhandling, default base URL/model behavior, and generated integration metadata.reasoning_effortlevels for verified Atlas routes and Grok Build as always-on/no-wire reasoning.glm-5.2route to Atlas API names such aszai-org/glm-5.2without provider-specific gateway hacks.Shared Catalog Updates
This PR intentionally updates the shared/main model descriptor catalogs because Atlas is now modeled as a gateway over existing upstream model families rather than as a standalone provider with private model ownership.
src/integrations/models/claude.ts: addsclaude-opus-4-8for Atlas Claude Opus routing.src/integrations/models/gemini.ts: addsgemini-3.5-flashandgoogle/gemini-3.1-pro-previewdescriptors used by Atlas.src/integrations/models/glm.ts: addsglm-5v-turboandglm-4.6descriptors used by Atlas GLM routes.src/integrations/models/kimi.ts: addskimi-k2.7-codefor the Atlas Kimi coding route.src/integrations/models/qwen.ts: adds Atlas-covered Qwen text, VL, Next, and instruct descriptors, including non-reasoning instruct variants where appropriate.src/integrations/models/xai.ts: addsxai/grok-build-0.1as a shared xAI descriptor while the Atlas gateway marks it always-on/no-wire for reasoning controls.src/integrations/models/openai-compatible-alias.ts: adds neutral aliases for Atlas-only/non-core upstream IDs such as DeepSeek V3.2 Exp, Doubao Seed, KAT Coder, and OWL.These descriptor additions are referenced by the Atlas gateway catalog; they are not intended to turn Atlas into a new frontier/provider vendor.
Impact
Atlas Cloud remains selectable as
atlas-cloud, but it now routes as an OpenAI-compatible gateway over theopenaitransport instead of being treated as a frontier/provider vendor. Existing Atlas env behavior is preserved forATLAS_CLOUD_API_KEY,ATLAS_CLOUD_MODEL, andOPENAI_MODEL.The /effort behavior is limited to Atlas catalog entries with evidence-backed metadata. Atlas models with verified top-level
reasoning_effortsupport expose only the confirmed levels, andxai/grok-build-0.1is marked reasoning-capable but does not serialize an effort control.The alias routing is generic and catalog-driven: routes only rewrite model names when their own catalog entry declares an explicit alias. Current OpenRouter and Hicap gateway configs do not declare aliases, and focused resolver tests verify their model names remain unchanged.
Provider Path Tested
https://api.atlascloud.ai/v1glm-5.2->zai-org/glm-5.2claude-sonnet-4-6->anthropic/claude-sonnet-4.6claude-sonnet-4-6-coding->anthropic/claude-sonnet-4.6-codinggpt-5-ministaysgpt-5-miniclaude-opus-4-7staysclaude-opus-4-7bun run doctor:runtimereachedhttps://api.atlascloud.ai/v1/modelswith status 200 in the local Atlas profile.Validation
Earlier PR validation:
bun installbun run buildbun run smokebun run check5071 pass, 0 failbun run typecheckbun run typecheck:type-testsbun run test:provider905 pass, 0 failbun run test:provider-recommendation103 pass, 0 failbun run security:pr-scan -- --base HEAD~1 --head HEADbun run doctor:runtimeAdditional validation after the alias-routing update:
bun test src/services/api/providerConfig.test.ts6 pass, 0 failbun test src/utils/effort.codex.test.ts23 pass, 0 failbun run typecheckbun run integrations:checkgit diff --checkI did not run Python or web checks because this change does not touch
python/orweb/.Notes
Summary by CodeRabbit
New Features
Bug Fixes
reasoning_effortcorrectly for Atlas-backed models.