qwen-code/docs
pomelo 997796f532
refactor(cli): provider-first auth registry with unified install pipeline (#3864)
* fix(cli): refresh static header on model switch

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* feat(cli): simplify api key provider registry

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(cli): split Alibaba auth providers

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* polish(cli): refine auth provider onboarding

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(cli): update OpenRouter free defaults

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(cli): restrict token plan models

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* chore(cli): remove unused third-party providers

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* feat(cli): add regional third-party providers

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(cli): simplify api key provider endpoints

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(cli): split auth dialog flows

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(cli): unify auth around declarative provider config

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

Introduce ProviderConfig abstraction (providerConfig.ts) and a central provider registry (allProviders.ts), replacing the per-flow UI components (AlibabaModelStudioFlow, CustomProviderFlow, OAuthFlow, ThirdPartyProvidersFlow, etc.) with unified ProviderSetupSteps and useProviderSetupFlow.

Key changes:
- Remove setupMethods/apiKey/ directory entirely
- Collapse flow-specific hooks/components into a single generic provider setup flow
- Simplify each provider file to export only a ProviderConfig descriptor
- Add alibabaStandard provider alongside codingPlan/tokenPlan
- Move all baseUrl resolution, install plan building, and settings writing into providerConfig
- Update useAuth, AuthDialog, command handler, and upstream consumers to use the new registry

* refactor(cli): simplify provider setup input flow

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(cli): remove toLlmProvider and legacy auth wrappers

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(cli): flatten auth flow files and simplify ProviderSetupSteps props

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* feat(cli): prefill API key from existing env settings in provider setup flow

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(cli): correct third-party provider context windows

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(cli): harden provider auth setup

* feat(cli): support provider modality and context settings

* feat: eable modelsEditable for coding plan

* refactor(cli): auto-derive provider metadata key and state

Move metadataKey and getProviderState from per-provider config to
auto-derived helpers (resolveMetadataKey, resolveProviderState) in
providerConfig.ts. This centralizes version tracking logic and reduces
boilerplate in individual provider definitions.

Add useProviderUpdates hook that detects model template changes across
all version-tracked providers and surfaces update/ignore choices.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

Closes: OSS-1730, OSS-1729

* refactor(cli): namespace provider metadata under providerMetadata key

Introduce PROVIDER_METADATA_NS ('providerMetadata') to avoid top-level
settings key collisions. Provider metadata now lives under
e.g. providerMetadata.coding-plan.version instead of codingPlan.version.

Add migration logic (migrateProviderMetadata) to automatically move
legacy top-level keys (codingPlan, tokenPlan) into the new namespace
on first run.

Update auth handler, useProviderUpdates hook, and all related tests
to use the new namespace structure.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

[skip ci]

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(cli): polish ProviderUpdatePrompt styling and test coverage [skip ci]

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(auth): simplify auth flows around provider abstraction [skip ci]

- Rewrite motivation.md to document provider-centric architecture
- Remove Alibaba Standard API Key and Coding Plan UI flows from handler
- Update status tests to use providerMetadata instead of codingPlan settings
- Streamline API key auth to show docs link only

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(auth): update provider models and refine auth infrastructure

- Bump model versions (qwen3.6-plus, glm-5.1) and add deepseek-v4-pro/flash
  with modalities to Alibaba Standard provider
- Reorder DeepSeek models, add thinking+image/video modalities to v4-pro,
  fix v4-flash context window
- Enhance auth tests with provider metadata setValue assertions
- Switch env key generation from hash-based to URL-based with
  trailing-slash normalization
- Remove deprecated codingPlan section from settings schema

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(i18n): add missing zh-TW translations for token plan and subscription providers

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(auth): improve provider install error recovery and AuthDialog state init

- Restore settings from backup on provider install plan failure
- Fix AuthDialog mainIndex state to null (was 0), preventing stale selection
- Remove ownsModel from customProvider; fall back to id-based filtering
- Change provider migration log from console.error to console.log
- Add sync reminder comments between CLI and VSCode subscription models
- Expand handleApiKeyAuth JSDoc explaining its role as lightweight fallback

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(auth): i18n for step labels, lazy preview JSON, and accurate header label

- Wrap getStepLabel() strings and PROTOCOL_ITEMS in t() for i18n
- Only compute previewJson when on the review step
- Return matched provider's own label in getAuthDisplayType instead
  of hardcoding CODING_PLAN for all managed providers

* fix(auth): address round-3 review blockers

- Fix CI: add missing useProviderUpdates mock in AppContainer.test.tsx
  that caused TypeError breaking React effects (title/height tests)
- Fix half-rollback: snapshot settings + modelProviders before install,
  restore in-memory state (not just disk) on refreshAuth failure
- Fix .orig backup reuse: always create fresh backup (overwrite stale),
  cleanup on success, unlink after restore to prevent data loss
- Fix cross-package key consistency: VS Code settingsWriter now writes
  to providerMetadata namespace matching CLI's new structure
- Fix validateApiKey: remove baseUrl guard so sk-sp- prefix check
  applies to both China and Global Coding Plan endpoints

* fix(cli): stabilize AuthDialog tests for slower CI environments

Increase vi.waitFor timeouts from default 1000ms to 5000ms and replace
unreliable fixed-delay waits with proper render-completion assertions,
preventing flaky failures on Linux/Windows CI runners with Node 22/24.

* fix(core): use id+baseUrl composite key for model identity

Custom provider installs previously used model id alone to determine
ownership, causing the second install to remove the first backend's
model entry when both expose the same model id (e.g. gpt-4o) with
different baseUrls. Use id+baseUrl as the composite identity key
throughout the model registry, ModelDialog, and modelsConfig to
prevent cross-provider model collisions.

* fix(cli): update ModelDialog tests for composite-key model identity

Add missing getModelsConfig and getActiveRuntimeModelSnapshot mocks,
and update switchModel assertion to expect the new { baseUrl } options
object introduced in 4c4ebb81c.

* fix(cli): skip flaky TUI input tests on all CI environments

Multi-step TUI navigation tests exceed 5s timeout on CI runners
regardless of Node version. Extend skip condition from only Node 20
to all CI environments where input simulation is unreliable.

* fix(cli): improve auth/provider edge cases and UX

- Add fallback to non-free models in OpenRouter OAuth when no free models available
- Validate non-empty models list when building install plan
- Fix auth status to use activeConfig instead of iterating all providers
- Clear API key input when switching auth protocol
- Skip unnecessary auth refresh when applying provider updates

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* test(cli): update tests for empty model validation and skip auth refresh

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(cli): skip remaining flaky TUI input AuthDialog tests on CI

8558c49bc only converted part of the tests to itWhenTuiInputReliable,
leaving 9 multi-step keyboard-navigation tests still using bare it().
These tests reliably time out on Linux/Windows CI runners where stdin
simulation timing is unpredictable.

Convert all remaining it() → itWhenTuiInputReliable() so CI skips them,
and add a comment block to clearly demarcate the TUI input section.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

---------

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-05-08 12:19:28 +08:00
..
design refactor(cli): provider-first auth registry with unified install pipeline (#3864) 2026-05-08 12:19:28 +08:00
developers feat(telemetry): add sensitive span attribute opt-in (#3893) 2026-05-08 00:36:08 +08:00
plans feat(vscode-ide-companion): add agent execution tool display (#2590) 2026-04-18 23:39:26 +08:00
users refactor(cli): provider-first auth registry with unified install pipeline (#3864) 2026-05-08 12:19:28 +08:00
_meta.ts feat: refactor docs 2025-12-05 10:51:57 +08:00
index.md fix: lint issues 2025-12-19 15:52:11 +08:00