Commit Graph
1252 Commits
Author SHA1 Message Date
Tam Nhu Tran 86ca18003a fix(cliproxy): preserve kiro paste-callback start route 2026-03-07 13:38:22 +07:00
Kai (Tam Nhu) TranandGitHub 248b6d11b8 Merge pull request #698 from kaitranntt/kai/feat/issue-697-profile-lifecycle-ux
feat: API profile lifecycle discover/copy/export/import parity
2026-03-07 01:25:53 -05:00
Kai (Tam Nhu) TranandGitHub 85de3ab5e4 Merge pull request #708 from kaitranntt/kai/fix/codex-quota-diagnostics
fix: improve quota diagnostics and oauth refresh handling
2026-03-07 01:25:05 -05:00
Kai (Tam Nhu) TranandGitHub c70cd4b08b Merge pull request #707 from kaitranntt/kai/fix/706-proxy-version-install-restart
fix: restart CLIProxy after dashboard version install
2026-03-07 00:25:54 -05:00
Tam Nhu Tran aed7beb075 fix: confirm risky cliproxy installs in dashboard 2026-03-07 11:13:49 +07:00
Tam Nhu Tran fc3600e922 fix: improve quota diagnostics and oauth refresh handling 2026-03-07 11:09:15 +07:00
Tam Nhu Tran ad01196964 fix: stop untracked CLIProxy installs safely 2026-03-07 11:01:35 +07:00
Tam Nhu Tran a4b626aede fix: clarify CLIProxy dashboard install lifecycle 2026-03-07 10:52:46 +07:00
Tam Nhu Tran e14df1fe05 fix: restart CLIProxy after dashboard version install 2026-03-07 10:45:29 +07:00
Kai (Tam Nhu) TranandGitHub 23ead7a215 Merge pull request #704 from kaitranntt/kai/fix/issue-696-defer-loading-clean
fix: strip unsupported tool fields for Gemini and Codex routing
2026-03-06 22:45:17 -05:00
Tam Nhu Tran 4baed01d49 fix: complete codex tool sanitization coverage 2026-03-07 10:35:41 +07:00
Tam Nhu Tran 2be5c5a706 fix: sync error code docs links 2026-03-07 09:56:35 +07:00
Tam Nhu Tran 8cfd86f1d1 fix: strip unsupported gemini and codex tool fields 2026-03-07 09:54:02 +07:00
Tam Nhu Tran 8a5ed656ee fix(copilot): surface upstream model limits 2026-03-07 09:26:09 +07:00
Tam Nhu Tran d6fc5dd64c fix: harden profile lifecycle validation and dashboard UX flows 2026-03-05 18:49:16 +07:00
Tam Nhu Tran 02c81743a0 feat: add API profile lifecycle discover/copy/export/import parity 2026-03-05 18:30:23 +07:00
Tam Nhu Tran 8f8684ce85 fix(auth): preserve bare profile behavior across runtime and sync 2026-03-05 12:36:51 +07:00
Tam Nhu Tran bc9b04444e feat(auth): add --bare flag and MCP server sync for profiles
- Add --bare flag to `ccs auth create` to skip shared symlinks
  (commands/, skills/, agents/, settings.json). Bare profiles are
  clean instances without ClaudeKit or other global extensions.
  `ccs sync` respects bare flag and skips re-linking.

- Add MCP server sync from global ~/.claude.json to instances.
  Claude Code stores MCP config in ~/.claude.json (not settings.json),
  which was invisible to CCS profiles using CLAUDE_CONFIG_DIR isolation.
  Selective copy of mcpServers key only (not OAuth sessions/caches).
  `ccs sync` refreshes MCP servers across all non-bare instances.

Closes #691
Closes #692
2026-03-05 11:42:41 +07:00
Huynh Duc Dung 0ca6428554 feat(api): add llama.cpp support as local model provider
- Add llamacpp provider preset to provider-presets.ts
- Add base-llamacpp.settings.json configuration
- Update help-command.ts with ccs llamacpp documentation
- Update UI provider presets for dashboard parity

llama.cpp is a popular C++ inference engine for LLaMA models.
This complements existing Ollama support for local inference.

Usage: ccs llamacpp (requires llama.cpp server on port 8080)

Closes #690
2026-03-05 12:29:49 +08:00
BbChip0103andClaude Opus 4.6 fedb4d4cde feat(api): add Anthropic direct API key support
Support native Anthropic API keys (sk-ant-...) via `ccs api create --preset anthropic`.
Profiles use ANTHROPIC_API_KEY env var without BASE_URL, letting Claude CLI
authenticate natively with x-api-key header instead of proxy Bearer token.

- Add anthropic preset to provider catalog
- Branch profile-writer env structure (native vs proxy)
- Add validateAnthropicKey() preflight with x-api-key header
- Auto-detect api.anthropic.com URL in interactive flow
- Fix hasApiKey/isConfigured to recognize ANTHROPIC_API_KEY
- Update delegation-validator for native mode profiles
- Add Droid target API key fallback (ANTHROPIC_API_KEY)

Closes #688

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 13:13:10 +09:00
Tam Nhu Tran 930d66fc0d fix(copilot): refine ownership checks and command error handling 2026-03-04 17:18:44 +07:00
Tam Nhu Tran 1fd128e50f fix(copilot): harden daemon lifecycle and validate config updates 2026-03-04 17:05:35 +07:00
Tam Nhu Tran 5ad2416a86 refactor(daemon): share process ownership guard for safe shutdown 2026-03-04 16:42:59 +07:00
Tam Nhu Tran f4678d6397 fix(copilot): sync alias UX and harden daemon stop safety 2026-03-04 16:37:23 +07:00
Tam Nhu Tran 4b1cda25d9 fix(copilot): improve daemon liveness and flag aliases 2026-03-04 16:14:12 +07:00
Brian Le 7e8f9e82c1 fix(cliproxy): handle Claude OAuth quota 401 2026-03-03 21:56:18 -05:00
Brian Le fa027022a8 fix(cliproxy): use management oauth-callback in paste flow 2026-03-03 17:59:10 -05:00
Brian Le 6fcd924b1c fix(cliproxy): use management auth-url route in paste callback 2026-03-03 17:16:07 -05:00
Tam Nhu Tran 276649f05d fix(cliproxy): reduce gemini alias model bloat 2026-03-04 02:46:52 +07:00
Tam Nhu Tran e255855775 refactor(routes): resolve DRY violations, config race, and error leaks
- Extract generic shouldCacheQuotaResult replacing 4 identical functions
- Move parseTarget to route-helpers.ts (was duplicated in profile/variant routes)
- Add createRouteErrorHelpers factory (was duplicated in auth/settings routes)
- Fix config read-then-write race in proxy-routes.ts and misc-routes.ts
  using mutateUnifiedConfig for atomic read-modify-write
- Replace raw error messages in 500 responses with generic messages +
  server-side logging across all cliproxy-stats-routes handlers
- Convert extractErrorLogMetadata from sync fs to async fs.promises
2026-03-04 01:30:46 +07:00
Tam Nhu Tran a4c5bb7421 fix(security): harden API endpoints and resolve PR #674 review findings
- Fix X-Forwarded-For header spoofing in requireSensitiveLocalAccess (use socket-level address only)
- Add model ID length validation (max 256 chars) in PUT /models/:provider
- Add provider name validation (alphanumeric, max 64 chars) to prevent path traversal
- Add stale entry eviction for unbounded quotaRateLimits Map (>1000 entries)
- Fix concurrent refresh race in usage aggregator (wait for in-flight before forced refresh)
- Sanitize internal URLs/paths from OAuth failure diagnostics
- Add ValidationError class for denylist violations (distinct from system errors)
- Make CLIProxy sync interval configurable via CCS_CLIPROXY_SYNC_INTERVAL env var
- Improve legacy continuity config error logging (unconditional warn)
- Add CACHE_VERSION history comments
2026-03-04 01:30:46 +07:00
Tam Nhu Tran 3b38f1ac90 fix(ui): improve providers badge readability and albb preset 2026-03-04 00:39:02 +07:00
Tam Nhu Tran 8811e5320f feat(api): add Alibaba Coding Plan preset and providers promotion 2026-03-04 00:39:02 +07:00
Tam Nhu Tran c2f564ac66 fix(ghcp): improve oauth failure diagnostics in device flow 2026-03-04 00:19:11 +07:00
Kai (Tam Nhu) TranandGitHub 9ec7f5af96 Merge pull request #671 from kaitranntt/kai/fix/664-agy-legacy-model-lookup-compat
fix(cliproxy): restore AGY legacy model lookup compatibility
2026-03-03 11:49:47 -05:00
Tam Nhu Tran ed05cfc5a7 fix(cliproxy): restore agy legacy 4.5 lookup compatibility 2026-03-03 23:44:27 +07:00
Tam Nhu Tran 27101390fe fix(api-profiles): keep AGY denylist when droid provider is set 2026-03-03 23:41:11 +07:00
Tam Nhu Tran 7e471e663c fix(cliproxy): normalize iflow aliases for explicit routing 2026-03-03 23:34:38 +07:00
Tam Nhu Tran 546c4ee4ee fix(cliproxy): normalize stale iflow model aliases 2026-03-03 23:26:07 +07:00
Kai (Tam Nhu) TranandGitHub 947ba3dfb6 Merge pull request #666 from theoDep/fix/claude-4-6-models-pricing
feat(pricing): fix claude sonnet 4.6 and claude opus 4.6 pricing
2026-03-03 11:16:47 -05:00
Tam Nhu Tran d31f85b0d4 fix(pricing): handle date-stamped 4.6 thinking model IDs 2026-03-03 23:08:04 +07:00
Tam Nhu Tran 09ce1a9379 fix(usage): coalesce refresh and force live sync on refresh
- share one full-refresh promise across usage loaders to avoid duplicate work

- sync CLIProxy snapshot before source refresh and start sync lazily

- make refresh handler execute full refresh with proper error response

- reset pending cache state and guard sync interval double-start
2026-03-03 23:05:24 +07:00
Tam Nhu Tran e8519b6ac3 fix(web-server): run usage cleanup during dashboard shutdown
- pass server cleanup callback into graceful shutdown wiring

- stop usage aggregator background sync when config server exits

- prevent orphaned sync intervals across dashboard restarts
2026-03-03 23:05:24 +07:00
theodep 9a7ca3f1c0 feat(pricing): fix claude sonnet 4.6 and claude opus 4.6 pricing 2026-03-03 16:27:06 +01:00
Kai (Tam Nhu) TranandGitHub a73d9a4c82 Merge pull request #660 from kaitranntt/kai/feat/cliproxy-multi-provider-analytics
fix(agy): remove deprecated 4.5 selector options
2026-03-03 09:14:43 -05:00
Tam Nhu Tran f63e2cd5a3 fix(cliproxy): denylist deprecated agy 4.5 models 2026-03-03 03:10:53 +07:00
Tam Nhu Tran 5913f730ac fix(agy): remove deprecated 4.5 selector options 2026-03-03 03:10:53 +07:00
Tam Nhu Tran d827c3ab0b fix(auth): scope km alias mapping to settings profiles
- prevent km continuity mappings from affecting kimi cliproxy executions

- apply canonical alias fallback only for settings profile lookups

- add regression test for cross-type alias isolation
2026-03-03 02:58:49 +07:00
Tam Nhu Tran 1eb41cc4e2 fix(config): merge legacy and unified continuity maps
- combine continuity.inherit_from_account with legacy continuity_inherit_from_account

- prefer unified continuity entries on key collisions

- add regression coverage for mixed-key merge behavior
2026-03-03 02:49:18 +07:00
Tam Nhu Tran 8a45727b31 fix(auth): harden continuity inheritance resolution
- resolve mappings with alias/canonical profile candidates

- fail open when source account initialization errors

- remove metadata touch side effects from inheritance preflight
2026-03-03 02:49:17 +07:00