Commit Graph
363 Commits
Author SHA1 Message Date
Tam Nhu Tran 8d9d4987dc feat(quota): add GitHub Copilot quota checks for ghcp and copilot 2026-02-20 22:32:27 +07:00
Tam Nhu Tran 954baecfe4 fix(thinking): handle clear no-op and tighten override coverage 2026-02-19 16:26:56 +07:00
Tam Nhu Tran 92e2ec111d fix(thinking): harden codex reasoning controls across cli and dashboard 2026-02-19 14:13:41 +07:00
Tam Nhu Tran c48ed2ea7f feat(thinking): complete thinking UX/DX for all providers
- Fix codex off-mode bug: add disableEffort to CodexReasoningProxy
  so mode=off actually skips reasoning injection
- Add CCS_THINKING env var (priority: flag > env > config)
- Add startup feedback: [i] Thinking: <level> (<source>)
- Add ccs config thinking CLI subcommand with --mode, --override,
  --tier, --provider-override, --clear-override
- Dashboard: add manual override selector when mode=manual
- Dashboard: add provider overrides collapsible section
- Dashboard: update info box with CCS_THINKING env var docs
- Update help-command.ts with CCS_THINKING and config thinking

Closes #583
2026-02-19 12:45:23 +07:00
Kai (Tam Nhu) TranandGitHub 10c15dab3d Merge pull request #585 from kaitranntt/kai/fix/kimi-missing-models
fix(cliproxy): add Kimi model catalog, sync, and pricing to dashboard
2026-02-19 10:49:00 +07:00
Tam Nhu Tran c73a26c51c fix(cliproxy): address review feedback on kimi catalog
- 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
2026-02-19 10:41:32 +07:00
Tam Nhu Tran 3767b95735 fix(cliproxy): add Kimi model catalog, sync, and pricing to dashboard
- Add kimi entry to UI model-catalogs.ts with K2.5, K2 Thinking, K2
  models and preset mappings so dashboard shows available models
- Add kimi to CHANNEL_TO_PROVIDER and SYNCABLE_PROVIDERS in
  catalog-cache.ts so models sync from upstream CLIProxyAPI
- Add kimi/moonshot to provider-editor ownerMap for model filtering
- Update Kimi model pricing to match official Kimi Platform rates:
  kimi-k2.5 ($0.60/$3.00), kimi-k2-thinking ($0.60/$2.50),
  kimi-k2-turbo-preview ($1.15/$8.00)
- Add missing kimi-k2.5 pricing entry

Closes #581
2026-02-19 10:28:40 +07:00
Tam Nhu Tran 476eabe08f fix(cliproxy): warn gemini and agy users about issue 509 2026-02-19 10:12:57 +07:00
Tam Nhu Tran ecc4a3fe58 fix(cliproxy): normalize codex model and provider routing 2026-02-18 21:27:58 +07:00
Tam Nhu Tran a71496cc3d fix(cliproxy): harden provider alias and refresh edge cases
- guard provider alias generation against ambiguous collisions

- add account-scoped Gemini token refresh with strict account checks

- warn and fallback on invalid management remote ports

- align remaining HTTP remote defaults and extend cliproxy tests
2026-02-18 04:18:39 +07:00
Tam Nhu Tran 7e527af777 refactor(cliproxy): resolve remaining review parity and cleanup nits
- 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
2026-02-18 03:35:08 +07:00
Tam Nhu Tran 39593c161b refactor(cliproxy): address review feedback on parity and refresh flow
- 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
2026-02-18 03:24:28 +07:00
Tam Nhu Tran 90b8d04d71 refactor(cliproxy): use shared default port in management paths
- replace 8317 literals with CLIPROXY_DEFAULT_PORT constant

- keep http/https fallback behavior unchanged in runtime checks
2026-02-18 03:10:09 +07:00
Tam Nhu Tran bd8daac094 refactor(cliproxy): centralize provider auth capability metadata
- move callback/auth-url names, token type values, and prefixes

- derive auth maps from capabilities instead of hardcoded records

- route refresh delegation through capability ownership metadata
2026-02-18 03:10:09 +07:00
Tam Nhu Tran 9031e5a085 fix(cliproxy): log unknown codex quota window labels
- 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
2026-02-17 20:53:03 +07:00
Tam Nhu Tran 08b2a67913 feat(cliproxy): add Kimi as OAuth CLIProxy provider
- add 'kimi' to CLIProxyProvider union type
- register Kimi capabilities (device_code flow, moonshot alias)
- add OAuth config, auth prefixes, type values, channel maps
- add CLIProxy-delegated token refresh for Kimi
- add Kimi model catalog (k2.5, k2-thinking, k2)
- switch base-kimi.settings.json to CLIProxy mode (127.0.0.1:8317)
- update comments removing kimi from settings-based profile mentions

Closes #574
2026-02-17 17:02:55 +07:00
Tam Nhu Tran 94b03c7f75 refactor(cliproxy): DRY provider lists into single source of truth
- 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.
2026-02-17 17:02:45 +07:00
Tam Nhu Tran 0431adf306 fix(targets): close all remaining multi-target droid edge cases 2026-02-17 03:22:45 +07:00
Tam Nhu Tran 7d7054e2c0 feat(targets): add multi-target CLI adapter system (Droid support)
Implement target adapter pattern enabling CCS CLI to support multiple backend targets
(Claude, Droid) via pluggable adapters. Core additions:

- TargetAdapter interface for pluggable target implementations
- ClaudeAdapter and DroidAdapter concrete implementations
- Target registry (singleton Map-based storage)
- Target resolver with precedence: --target flag > per-profile config > busybox detection
- Droid config manager with atomic writes and file locking to ~/.factory/settings.json
- Droid binary detector to validate runtime environment
- Adapter dispatch integrated into ccs.ts main execution flow
- ccsd busybox alias for seamless Droid invocation
- --target flag documentation in help
- Session tracking enriched with target metadata
- Dashboard target badge for visual identification

Testing:
- 43 unit tests covering resolver, registry, config manager, and adapters
- Full coverage of target detection logic and edge cases

Documentation:
- Refactored system-architecture.md into modular docs/system-architecture/ subdirectory
- Updated code-standards.md with target adapter guidelines
- Updated codebase-summary.md with architecture overview
- Updated maintainability baseline (33.8% → 35.2%)

This establishes extensible foundation for multi-target support without breaking
existing Claude workflows. Droid adapter is production-ready but defaults to Claude
for backward compatibility.
2026-02-16 10:49:09 +07:00
Tam Nhu Tran 4fc19c4390 feat(cliproxy): expose codex weekly reset schedule in quota views 2026-02-15 09:48:39 +07:00
Kai (Tam Nhu) TranandGitHub c9b4a9ccba Merge pull request #561 from kaitranntt/fix/552-review-followups
fix(cliproxy): harden Kiro device-code auth flow consistency
2026-02-14 13:38:00 +07:00
Tam Nhu Tran e425f477a4 fix(cli): add kiro auth-method flag wiring and help
- parse and validate --kiro-auth-method for Kiro and Kiro composite tiers

- pass selected method through auth/import flows

- document supported Kiro auth-method values in ccs --help

Refs #552

Refs #233
2026-02-14 13:33:37 +07:00
Tam Nhu Tran fd46ad022a fix(cliproxy): align kiro auth methods with upstream contracts
- add typed Kiro auth-method model and AWS device-code default

- map CLI flags and callback behavior by selected Kiro method

- harden CLI-only method guards and add contract regression tests

Refs #552

Refs #233
2026-02-14 13:33:28 +07:00
Tam Nhu Tran 945db1d690 feat(cliproxy): clarify codex effort mapping and preset UX 2026-02-14 11:31:18 +07:00
Tam Nhu Tran 826a42d8d6 fix(cliproxy): harden kiro device-code auth flow consistency 2026-02-14 10:55:14 +07:00
Tam Nhu Tran 9268c05ee5 fix(cliproxy): resolve merge-duplicate lifecycle handlers 2026-02-14 10:31:00 +07:00
Tam Nhu Tran ffb78bfe73 Merge remote-tracking branch 'origin/dev' into fix/review-cursor-variant-safety 2026-02-14 10:30:00 +07:00
Tam Nhu Tran f02e7dc5c6 fix(cliproxy): address lifecycle port and thinking regressions 2026-02-14 10:23:39 +07:00
Tam Nhu Tran 8395364970 feat(cliproxy): add explicit start and restart commands 2026-02-14 09:41:40 +07:00
Tam Nhu Tran 3136f24b9b fix(cliproxy): keep daemon running after parent exit 2026-02-14 09:31:47 +07:00
Kai (Tam Nhu) TranandGitHub 9796a21612 Merge pull request #559 from kaitranntt/fix/codex-reasoning-ux
fix: codex reasoning effort UX across cliproxy and -p
2026-02-14 09:08:20 +07:00
Tam Nhu Tran 0db2fd2040 Revert "feat(codex): use spark as haiku in 5.3 preset"
This reverts commit aaaceb43e0.
2026-02-14 08:20:32 +07:00
Tam Nhu Tran f9df3cfa7a fix(cliproxy): unify codex reasoning flags and thinking flow 2026-02-14 07:44:59 +07:00
Kai (Tam Nhu) TranandGitHub 8097441d53 Merge pull request #557 from kaitranntt/feat/556-codex-53-preset-default
feat: add Codex 5.3 preset and default base-codex model
2026-02-14 06:51:43 +07:00
Tam Nhu Tran aaaceb43e0 feat(codex): use spark as haiku in 5.3 preset 2026-02-14 06:48:23 +07:00
Tam Nhu Tran 41d99788da fix(codex): type cast provider in model update path 2026-02-14 06:34:11 +07:00
Tam Nhu Tran 3410c52f7e fix(codex): preserve sonnet high alias on variant model updates 2026-02-14 06:33:46 +07:00
Tam Nhu Tran b3d9dce6e1 fix(codex): reduce quota timeout flakes in dashboard 2026-02-14 06:23:31 +07:00
Tam Nhu Tran 164d195367 fix(codex): preserve xhigh default effort for gpt-5.3 2026-02-14 06:21:56 +07:00
Tam Nhu Tran d6aa1d90a6 feat(codex): keep gpt-5.2 catalog entry 2026-02-14 06:15:31 +07:00
Tam Nhu Tran 7fddb63ab9 feat(codex): add gpt-5.3 preset defaults 2026-02-14 06:14:19 +07:00
Tam Nhu Tran 6c2083949f fix(cliproxy): mark Kiro as device_code flow for dashboard auth
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
2026-02-13 19:33:33 +07:00
Tam Nhu Tran 7bb9ceb4af fix(cliproxy): keep variant updates atomic and persisted
- require model when changing single-variant provider to avoid mixed config

- rewrite provider-specific core env when provider changes while preserving custom fields

- preserve custom composite settings path and return persisted composite PUT state
2026-02-13 06:19:12 +07:00
Tam Nhu Tran 1a23f912a4 fix(cliproxy): harden composite validation and runtime safeguards 2026-02-13 05:34:30 +07:00
Tam Nhu Tran 2816c6652d chore(merge): resolve conflicts with origin/dev 2026-02-12 16:25:25 +07:00
Tam Nhu Tran 0a8adb22fc fix(cliproxy): harden composite variant routing and validation 2026-02-12 15:18:33 +07:00
Tam Nhu Tran e914fe9778 fix(cliproxy): fix thinking off regression and composite error handling
- P1: Thinking "off" now fully disables all tier thinking
  When thinkingValue === 'off' AND no per-tier config, return early
  Preserves behavior for "off" with per-tier config (skips main, processes tiers)
  Fixes regression where tier defaults were applied despite explicit off setting

- P2: Handle composite-create thrown errors in POST route
  Wrap createCompositeVariant() in try/catch
  Returns 400 instead of generic 500 when function throws (e.g., legacy mode)
2026-02-12 13:34:17 +07:00
Tam Nhu Tran 924e3686c8 refactor(cliproxy): centralize provider capability registry 2026-02-12 12:59:17 +07:00
Tam Nhu Tran 8e6b67bf99 fix(cliproxy): fix edit dialog empty model and composite guidance
- P2: Edit dialog no longer seeds empty model string
  Changed `variant.model || ''` to `variant.model ?? undefined`
  Added payload filtering to exclude undefined/empty values before API call
  Prevents unintended model overwrites when user only changes other fields

- P3: Composite --config guidance now uses variant name
  Added profileName to ExecutorConfig interface
  Error message now shows correct variant name instead of default tier provider
  e.g., "ccs cliproxy edit my-mix" instead of "ccs cliproxy edit gemini"
2026-02-12 12:56:57 +07:00
Tam Nhu Tran 399d7e163a fix(cliproxy): address 3 code review issues in composite variants
- P1: Remove premature variant deletion in --force mode
  Fix destructive overwrite path - old variant preserved if user
  cancels auth or creation fails (createVariant handles overwrite)

- P2: Validate all composite tier providers at runtime
  Backend gating now checks all providers in composite, not just
  default tier. Prevents kiro/ghcp on non-default tiers bypassing
  Plus backend requirement.

- P2: Preserve tier thinking when default tier is off
  Early return skipped tier processing when default thinking was
  "off". Now uses flag-based approach - only main model skipped,
  tier loop continues with per-tier thinking config.
2026-02-12 12:29:43 +07:00