Commit Graph
682 Commits
Author SHA1 Message Date
Wooseong Kim f345cf441e fix(proxy): ignore legacy singleton session file 2026-04-20 14:09:50 +09:00
Wooseong Kim 8942be3afc test(proxy): cover multi-profile daemon ports 2026-04-20 13:14:19 +09:00
Tam Nhu Tran 341e612e48 test: align browser launch assertions with setup guidance 2026-04-19 22:26:18 -04:00
Tam Nhu Tran f36c4a6e32 fix: keep browser setup config-only 2026-04-19 22:07:58 -04:00
Tam Nhu Tran 7ad8bbf0a1 feat: add browser setup flow for Claude attach 2026-04-19 22:00:16 -04:00
Tam Nhu Tran 485fe4ba1c test(cliproxy): assert routing persistence via unified config loader
The previous assertion read the generated CLIProxy config.yaml directly via
getConfigPathForPort(). On the self-hosted CI runner this produced ENOENT even
though applyCliproxyRoutingStrategy returned 'config-only', indicating the
read path and write path diverged in the full test-suite context.

Verify persistence via loadUnifiedConfig() instead — that's the canonical
source mutateUnifiedConfig writes to, independent of regenerateConfig's
file-path resolution.
2026-04-19 15:27:24 -04:00
Tam Nhu Tran e25d791d9b test(websearch): clear CCS_PROFILE_TYPE in SearXNG fallback spawn env
The SearXNG-to-DuckDuckGo fallback test inherited the caller's CCS_PROFILE_TYPE
via `...process.env`, causing the hook to take the 'native_default_profile'
skip path and produce empty stdout. All other subprocess spawns in this file
set CCS_PROFILE_TYPE to NEUTRAL_PROFILE_TYPE; this one was the outlier.

Deterministic locally when CCS_PROFILE_TYPE=default is set in the shell.
2026-04-19 15:21:36 -04:00
Tam Nhu Tran ccdd0b6e8e fix(windows): align escaped wrapper shell handling
Use ComSpec-aware shell selection for escaped wrapper launches.

Apply it to the remaining Windows Claude launch paths.

Rewrite the Codex exec regression test to use scoped spies so the full suite stays isolated.
2026-04-19 14:27:27 -04:00
Tam Nhu Tran a945b0b104 fix(targets): use cmd.exe for escaped Windows wrapper launches
Align Windows .cmd/.bat launch behavior with the Codex detector shell contract.

This keeps escaped -c overrides intact through wrapper execution.

Adds regression coverage for the Codex runtime path and the shared Windows shell launch path.
2026-04-19 14:09:12 -04:00
Kai (Tam Nhu) TranandGitHub 06e339b7be Merge pull request #1041 from kaitranntt/kai/fix/1038-openai-compat-regen
fix(cliproxy): preserve legacy openai-compat connectors on restart
2026-04-18 20:43:52 -04:00
Tam Nhu Tran 00d902b6e6 test(cliproxy): cover legacy connector removal cleanup 2026-04-18 20:39:46 -04:00
Kai (Tam Nhu) TranandGitHub 72c0dca5d8 Merge pull request #1037 from grndis/main
feat(proxy): enhance Anthropic-to-OpenAI message transformation
2026-04-18 20:10:37 -04:00
Tam Nhu Tran 25193187e0 chore(proxy): remove unused schema sanitizer draft 2026-04-18 20:05:22 -04:00
Tam Nhu Tran 16f81fc8a5 fix(cliproxy): preserve legacy openai-compat connectors on restart 2026-04-18 20:05:05 -04:00
Tam Nhu Tran ebc92194bb fix(proxy): harden Anthropic request transformation semantics
- enforce strict tool_result ordering and pairing against assistant tool_use ids
- reject tool_result image payloads that cannot map to OpenAI tool messages
- preserve raw tool schemas on the /v1/messages proxy path instead of silently tightening them
- forward Anthropic tool_choice semantics and cover adaptive routing plus upstream payload checks
2026-04-18 19:39:13 -04:00
Tam Nhu Tran 22ab58b02e fix(proxy): preserve valid enums during schema normalization 2026-04-18 19:02:55 -04:00
Tam Nhu Tran 32d6bfdda7 fix(proxy): restore strict Anthropic message validation 2026-04-18 19:02:38 -04:00
Kai (Tam Nhu) TranandGitHub f87d09f278 Merge pull request #1040 from kaitranntt/kai/fix/browser-attach-bootstrap
fix(browser): bootstrap managed attach profile setup
2026-04-18 18:53:56 -04:00
Tam Nhu Tran 5e1e8070e8 test(cliproxy): isolate routing strategy service state 2026-04-18 17:28:34 -04:00
NamNH2andKai (Tam Nhu) Tran 210ec33c04 fix(codex): probe Windows cmd wrappers via cmd shell 2026-04-18 17:18:18 -04:00
Tam Nhu Tran b52503300b fix(browser): bootstrap managed attach profile setup 2026-04-18 17:18:14 -04:00
Tam Nhu Tran bc1606da75 test(cliproxy): pin routing strategy test env scope 2026-04-16 23:35:08 -04:00
Tam Nhu Tran d3de83e157 fix(cliproxy): pin routing config regeneration path
- capture the resolved local cliproxy config/auth paths before regenerating
  routing strategy config
- thread explicit override paths into regenerateConfig so scoped config writes
  stay deterministic during the full test suite
- add regression coverage for explicit config path overrides
2026-04-16 23:29:10 -04:00
Tam Nhu Tran 41bf5075e0 hotfix(browser): avoid aborting launch on missing managed profile
- skip managed Claude browser attach when the default CCS browser profile
  directory has not been created yet
- keep explicit env override flows failing fast so real misconfiguration still
  surfaces clearly
- add regression coverage for default and settings-profile launches
2026-04-16 22:59:43 -04:00
Tam Nhu Tran 4583ffa022 fix(browser): reset blank attach path to default 2026-04-16 19:00:14 -04:00
Tam Nhu Tran 8a17410f96 fix(browser): address platform and port review 2026-04-16 18:49:24 -04:00
Tam Nhu Tran 4e30c9b080 feat(cli): add browser automation commands 2026-04-16 18:49:24 -04:00
Tam Nhu Tran 6b53df0147 fix(cliproxy): align delegated gemini auth recovery 2026-04-16 14:15:03 -04:00
Tam Nhu Tran 4845b797de test(cliproxy): stabilize routing strategy config scope 2026-04-16 14:06:27 -04:00
Tam Nhu Tran 637a591dca fix(cliproxy): avoid duplicate gemini management retries 2026-04-16 12:59:15 -04:00
Tam Nhu Tran 9dc6374851 fix(cliproxy): delegate gemini refresh to upstream 2026-04-16 12:49:51 -04:00
Kai (Tam Nhu) TranandGitHub 0be0cbaa80 Merge pull request #1029 from kaitranntt/kai/fix/codex-gpt-5-4-mini-presets
fix: align Codex defaults with GPT-5.4 models
2026-04-16 03:46:35 -04:00
Tam Nhu Tran 80847b4e6b fix(cliproxy): align codex defaults with gpt-5.4 2026-04-16 03:41:38 -04:00
Tam Nhu Tran 2e2ba1c09b test(ci): use runtime-relative isolated child scripts
- derive repo imports from each test file via file URLs

- avoid hardcoded paths in the repo

- launch child scripts with the current runtime for consistent local and runner behavior
2026-04-16 00:20:01 -04:00
Tam Nhu Tran 2ba3a0ab02 test(ci): stabilize runner-sensitive isolated tests
- isolate tokens and session-tracker tests in child processes

- make child scripts resolve repo modules from the test location

- avoid machine-specific paths in the repo
2026-04-16 00:08:46 -04:00
Tam Nhu Tran 27f1416181 fix(cliproxy): avoid network-bound local startup
- skip CLIProxy auto-update checks on runtime bootstrap paths

- fail fast when local startup needs a missing binary instead of attempting installs

- add regression coverage for dashboard limited mode and startup test isolation
2026-04-15 22:55:11 -04:00
Tam Nhu Tran 1923d87a84 chore: merge dev into openai provider routing 2026-04-15 20:36:03 -04:00
Tam Nhu Tran 546ba01c38 Merge remote-tracking branch 'origin/dev' into kai/feat/1016-missing-provider-integration 2026-04-15 17:48:55 -04:00
Tam Nhu Tran 58c2c46ed7 fix(cursor): migrate legacy settings and validate gitlab urls 2026-04-15 17:48:33 -04:00
Tam Nhu Tran 3b5941c60b feat(cursor): split legacy bridge from cliproxy provider 2026-04-15 17:04:37 -04:00
Tam Nhu Tran 2293368e31 fix(shared-manager): prune transient and malformed marketplace entries 2026-04-15 16:29:25 -04:00
xuhaodong 5b262f0139 fix(shared-manager): exclude .staging dirs from marketplace registry sync
Claude Code's marketplace auto-update uses a three-step atomic rename:
clone to <name>.staging → rename old dir to <name>.bak → rename staging
to the final name. On Windows, EPERM errors can interrupt the rename-dance
and leave a <name>.staging directory permanently on disk.

CCS scanned physical directories to discover marketplaces, so a lingering
.staging directory was registered as a bare { installLocation } entry in
known_marketplaces.json. Claude Code's Zod schema requires each entry to
also have `source` and `lastUpdated` fields, so the corrupt entry caused
the /plugin command to throw a validation error.

Fix (two layers of defence):

- discoverMarketplaceEntries: skip any directory whose name starts with
  '.' or ends with '.staging'. This filters all hidden dirs including
  .staging and .bak left behind by interrupted rename operations.

- buildMarketplaceRegistryContent: invert the loop direction. Instead of
  iterating discoveredEntries and adding to the registry (which could
  introduce bare entries for disk-only directories with no registry
  record), iterate the merged registry and only keep entries that also
  exist on disk. Disk-only directories are now silently ignored.

Adds two regression tests: one for .staging pollution, one for orphan
registry entries whose physical directory has been removed.
2026-04-15 15:02:54 +08:00
Tam Nhu Tran 841eeb497c fix(proxy): keep stream guards active through sse piping 2026-04-15 02:52:29 -04:00
Tam Nhu Tran 7f1c23607d fix(gitlab): sanitize PAT auth failures across cli and web 2026-04-15 02:01:39 -04:00
Tam Nhu Tran a3407093d7 refactor(proxy): internalize sse translation and cleanup handlers 2026-04-15 01:44:01 -04:00
Tam Nhu Tran 4e738ee021 fix(cli): document gitlab shortcut flags and harden cursor routing 2026-04-15 01:39:31 -04:00
Tam Nhu Tran 87d93b651b fix(cursor): deprecate legacy bridge and harden gitlab auth 2026-04-15 01:23:15 -04:00
Tam Nhu Tran 17187c4abd feat(proxy): complete openai routing scope 2026-04-15 00:55:11 -04:00
Tam Nhu Tran 2d9f8c9695 feat(cliproxy): integrate missing provider support 2026-04-15 00:26:12 -04:00
Tam Nhu Tran a6aa576d5a fix(proxy): detect dashscope compatible-mode profiles 2026-04-14 23:49:34 -04:00