Commit Graph
16 Commits
Author SHA1 Message Date
Tam Nhu Tran ce44d2ece0 fix(droid): harden exec passthrough and add integration coverage 2026-02-26 23:28:36 +07:00
Tam Nhu Tran 5963ba973e fix(droid): add structural exec passthrough for ccsd 2026-02-26 22:59:10 +07:00
Tam Nhu Tran eedb53b49e feat(droid): sync reasoning effort across CLI and dashboard 2026-02-26 12:27:50 +07:00
Tam Nhu Tran f1567c0090 fix(droid): avoid interactive model arg prompt pollution
- persist selector in ~/.factory/settings.json as settings.model

- stop injecting '-m custom:...' for interactive droid launches

- improve provider inference for localhost /v1 and qwen/deepseek/kimi

- add regression tests for adapter, provider, and config manager
2026-02-25 22:14:00 +07:00
Tam Nhu Tran 60b1c043c7 feat(droid): align BYOK provider mapping for ccsd
- add Droid provider resolver aligned with Factory BYOK schema

- persist and normalize CCS_DROID_PROVIDER across CLI and dashboard flows

- use Droid managed selector aliases with safe legacy fallback

- add unit coverage for provider inference and selector usage

Closes #632
2026-02-25 20:58:35 +07:00
Tam Nhu Tran 2bd3c40c7a fix(targets): sanitize invalid persisted target values
- fallback unknown persisted targets to claude in profile listing and runtime resolution

- add regression test for invalid profile target fallback
2026-02-25 17:00:49 +07:00
Tam Nhu Tran 8a2a7c3eb0 feat(runtime): run cliproxy profiles on droid
- execute cliproxy profiles on droid using resolved proxy env credentials

- enforce auth/service preconditions and block Claude-only management flags

- allow dotted profile names in droid adapter/config manager
2026-02-25 15:52:40 +07:00
Tam Nhu Tran d25eda8435 fix(spawn): sanitize claudecode in shared claude env builders
- strip CLAUDECODE from cliproxy-built Claude environments

- enforce sanitization in ClaudeAdapter buildEnv

- apply same env hardening in shared spawnClaude helper

Refs #588
2026-02-20 23:00:47 +07:00
Tam Nhu Tran 025218a706 feat(targets): support CCS_DROID_ALIASES argv0 mapping
- extend argv[0] target resolution with env-configurable aliases

- normalize alias matching to lowercase with safe-name filtering

- add tests for custom aliases, invalid entries, and case-insensitivity
2026-02-17 20:53:03 +07:00
Tam Nhu Tran 15d6c06dbc fix(targets): snapshot active profiles during droid prune
- copy activeProfiles at call time before lock acquisition

- validate profile names inside locked section

- add tests for invalid names and post-call array mutation
2026-02-17 20:53:03 +07:00
Tam Nhu Tran 812bb5c0a5 fix(targets): run cleanup before adapter launch exits
- wrap adapter early-exit paths with a cleanup-aware exit helper

- invoke cleanup before exiting on child spawn failures

- validate Droid profile names in buildArgs and add unit coverage
2026-02-17 20:53:03 +07:00
Tam Nhu Tran 3da3407f9a fix(targets): harden adapter lifecycle and droid model edge cases 2026-02-17 04:09:48 +07:00
Tam Nhu Tran 02af8d5737 fix(targets): DRY signal handling, remove redundant guards, harden config manager
- Extract signal forwarding to reusable src/utils/signal-forwarder.ts
- Update shell-executor, claude-adapter, droid-adapter to use shared utility
- Remove 35 lines of redundant duplicate guards in src/ccs.ts
- Harden droid-config-manager with lock constants and race-safe ensureFactoryDir
- Update help-command with --target usage examples
- Update maintainability metrics baseline
2026-02-17 03:38:27 +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 3191a4ab38 fix(targets): harden edge cases from parallel code review
- droid-config-manager.ts: Profile name validation, backup file perms
  (0o600), symlink detection before write
- droid-detector.ts: Directory check for CCS_DROID_PATH via isFile()
- ccs.ts: Replace hardcoded guards with supportsProfileType() calls,
  add prepareCredentials to default branch
- droid-adapter.ts: errno-aware error messages (EACCES vs ENOENT)
- maintainability-baseline.json: Updated edge case metrics

Hardening fixes address permission handling, symlink detection, and
error classification for improved robustness in edge cases.
2026-02-16 15:32:34 +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