Commit Graph
299 Commits
Author SHA1 Message Date
Tam Nhu Tran 368a625d92 fix(cliproxy): restore live monitor provider attribution 2026-03-26 17:18:47 -04:00
Tam Nhu Tran ce4401e84e feat(auth): let power user mode skip Gemini auth gate 2026-03-26 15:03:24 -04:00
Tam Nhu Tran ec1417ab7c fix(channels): reject oversized official channel tokens
Add a 4096-character cap before persisting official channel tokens, map that validation failure to HTTP 400 in the dashboard route, and cover both paths with regression tests.
2026-03-25 22:38:15 -04:00
Tam Nhu Tran 3af554275e test: isolate shared-state test suites for CI stability
- add dependency injection to export-command, binary-manager,
  codex-plan-compatibility, config-command, and usage-syncer
- override process.exit in api-export test to prevent silent
  termination in Bun's parallel test runner
- harden test-environment bootstrap with process.env isolation
- fix auth middleware to avoid config upgrade during checks
2026-03-25 16:41:41 -04:00
Tam Nhu Tran a97fc42b10 feat(channels): auto-enable official Claude channels 2026-03-25 16:31:55 -04:00
Tam Nhu Tran 0e2f47802b style: format official channel files 2026-03-25 16:31:55 -04:00
Tam Nhu Tran 6f1f032c63 feat(channels): support telegram and imessage
- replace the Discord-only config with multi-channel official channels selection

- add Telegram token handling and iMessage platform-aware runtime gating

- expand CLI, dashboard, and tests for Telegram, Discord, and iMessage

Refs #783
2026-03-25 16:31:55 -04:00
Tam Nhu Tran 4bce1559dd feat(channels): auto-enable official discord plugin
- add runtime injection for official Discord Channels on eligible native Claude sessions

- add CLI and dashboard configuration plus secure token handling

- add tests for launch planning, token sync, and config routing

Refs #783
2026-03-25 16:31:55 -04:00
Tam Nhu Tran 6ccf53ec7d fix(config): preserve hidden auth secrets and block scalars 2026-03-24 15:25:49 -04:00
Tam Nhu Tran e983bed1da fix(config): close dashboard secret redaction gaps 2026-03-24 15:15:29 -04:00
Tam Nhu Tran 37251cd1f8 fix(config): harden dashboard config and rollback paths 2026-03-24 14:38:40 -04:00
Tam Nhu Tran 06d098ae0e style(auth): format cliproxy auth route 2026-03-24 09:26:15 -04:00
Tam Nhu Tran 09eb01f16e fix(auth): verify polled oauth account persistence 2026-03-24 09:15:05 -04:00
Tam Nhu Tran 83dab7fea7 style(websearch): format routes after rebase 2026-03-23 15:38:10 -04:00
Tam Nhu Tran 6c7d215ecc feat(websearch): add real provider chain 2026-03-23 15:26:05 -04:00
Tam Nhu Tran 4df08f6d99 feat: make cliproxy provider nicknames optional by default 2026-03-23 11:02:08 -04:00
Tam Nhu Tran bdb7ac2937 feat(cliproxy): allow optional provider nicknames
- stop requiring manual unique nicknames for no-email providers by default

- preserve explicit nickname validation and same-account reauth semantics

- persist optional nicknames through dashboard manual callback flows
2026-03-23 11:02:08 -04:00
Tam Nhu Tran 0d90f04f3e fix: stabilize validate pipeline and cliproxy route tests 2026-03-20 09:29:51 -04:00
Tam Nhu Tran 50c55bb108 feat(cliproxy): add dedicated ai providers workspace 2026-03-19 11:55:02 -04:00
Tam Nhu Tran 287691fa04 feat(profiles): add cliproxy api profile bridge
- add backend and CLI flows for creating routed API profiles from CLIProxy providers

- add dashboard bridge CTAs, metadata, and guided create dialog mode

- cover bridge routes and dialog behavior with focused tests

Refs #649
2026-03-19 10:24:28 -04:00
Tam Nhu Tran 36e8ed5d87 fix(management): serialize lifecycle maintenance paths
- serialize deleteInstance with the same profile and plugin-layout locks as ensure

- lock non-account marketplace normalization paths and ignore .locks as an instance source
2026-03-18 08:04:48 -04:00
Tam Nhu Tran eb9e9a8c83 fix: restore route target parser exports 2026-03-17 10:10:08 -04:00
Tam Nhu Tran dcc67477ec fix: align dashboard host warnings with effective bind 2026-03-17 09:58:11 -04:00
Tam Nhu Tran 553f8ac1e5 feat: add dashboard host binding option 2026-03-17 09:57:51 -04:00
Tam Nhu Tran 6724ea52c2 style(claude-extension): apply formatter output 2026-03-15 15:58:37 -04:00
Tam Nhu Tran a2f531016d feat(claude-extension): add binding workflow 2026-03-15 15:58:37 -04:00
Tam Nhu Tran 56ba37911a fix(config): guard Claude extension metadata 2026-03-15 15:58:37 -04:00
Tam Nhu Tran b82f10e639 feat(config): add Claude IDE extension setup flow 2026-03-15 15:58:37 -04:00
Tam Nhu Tran 7bd4049602 fix(copilot): stop mutating config on read 2026-03-15 14:53:43 -04:00
Tam Nhu Tran c409a4522c fix: normalize stale copilot raptor-mini model 2026-03-10 17:55:28 +07:00
Tam Nhu Tran 5bcad30762 Merge remote-tracking branch 'origin/dev' into pr-689-anthropic-direct-api
# Conflicts:
#	ui/src/components/profiles/profile-dialog.tsx
2026-03-07 15:59:44 +07:00
Tam Nhu Tran 1f29fa0b6a fix(api): complete anthropic direct profile support 2026-03-07 15:58:36 +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
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
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
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 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 c2f564ac66 fix(ghcp): improve oauth failure diagnostics in device flow 2026-03-04 00:19:11 +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