- resolve settings file from profile.settingsPath instead of reconstructing by name
- skip non-claude targets for local claude-api-key sync semantics
- add mapper regression tests for both behaviors
- Sync kimi-k2.5 description between backend and UI catalogs
to 'Latest multimodal model (262K context)' per official naming
- Add kimi-k2 pricing entry to avoid fallback to unknown model rate
- Add supportsModelConfig and getProviderCatalog tests for kimi
Address review feedback from PR #585:
- Add missing kimi-k2 pricing entry ($0.60/$2.50, cache $0.15)
to avoid fallback to unknown model pricing
- Add kimi provider tests to model-catalog.test.js verifying
catalog structure, default model, and model IDs
- export buildProviderMap from provider capabilities and reuse in auth-types
- add provider descriptions to backend capabilities and sync display names
- remove ui CLIPROXY_PORT alias and use CLIPROXY_DEFAULT_PORT directly
- return stable string from getProviderDescription
- extend backend/ui parity tests for display name and description values
- make refresh ownership handling exhaustive in provider refresher
- extend backend/ui sync test to provider IDs and device-code providers
- remove DEFAULT_CURSOR_PORT re-export from use-cursor hook
- import cursor default port directly from shared defaults module
- add ui default port constants for cliproxy and cursor
- wire preset utils to shared ui default port constants
- add backend/ui sync test to prevent port drift
- detect and de-duplicate unclassified quota window labels
- emit diagnostics in verbose/debug modes for API label drift
- add unit tests for unknown-label extraction behavior
- Add kimi to CLIPROXY_PROVIDER_IDS expected array
- Add kimi to device_code providers expected array
- Remove leftover >>>>>>> origin/dev merge conflict marker in cursor-daemon test
- Fix prettier formatting in image-analysis-check.ts
- unify CLIPROXY_SUPPORTED_PROVIDERS to import from CLIPROXY_PROVIDER_IDS
- replace 4 inline union types with CLIProxyProvider import
- replace hardcoded provider arrays in migration-manager and proxy-routes
- remove duplicate PROVIDER_DISPLAY_NAMES, use getProviderDisplayName()
- sync test now imports from ui/src/lib/provider-config instead of hardcoded array
Adding a new CLIProxy provider no longer requires updating 14+ hardcoded lists.
CLIProxyAPIPlus uses device code flow for Kiro authentication, returning
{method: "device_code", state, status} without an immediate URL. The URL
is provided via polling the /get-auth-status endpoint.
Previously, Kiro was configured as authorization_code flow, causing
dashboard auth to fail with "No authorization URL received from CLIProxyAPI"
because the web-server routes expected synchronous URL response.
Changes:
- provider-capabilities.ts: kiro.oauthFlow = 'device_code', callbackPort = null
- provider-config.ts: Add 'kiro' to DEVICE_CODE_PROVIDERS array
- provider-capabilities.test.ts: Update test expectations
This routes Kiro through /start endpoint which properly handles device code
flow via WebSocket events (deviceCodeReceived, deviceCodeCompleted, etc).
Closes#552
- Thinking config: 24 tests for applyThinkingSuffix, detectTierFromModel,
getThinkingValueForTier, and applyThinkingConfig with compositeTierThinking
- Fallback: 42 tests for isProviderError, detectFailedTier, applyFallback,
and PROVIDER_ERROR_PATTERNS
- Variant service: 9 tests for updateCompositeVariant,
saveCompositeVariantUnified, and listVariantsFromConfig with composite types