454edc7771
SSH _before_execute() ran rsync unconditionally before every command, adding ~2.3s overhead even when zero bytes were transferred. This was 80% of per-command latency (actual execution: ~0.6s). Add (mtime, size) caching — matching the pattern Modal and Daytona already use — to skip rsync when local files haven't changed: - Per-file mtime+size check for credential files - Directory fingerprint (set of relpath/mtime/size tuples) for skills - --delete flag on skills rsync to prune uninstalled skills - Track created remote dirs to avoid redundant mkdir -p calls - Cache invalidation on rsync failure (remote may have been wiped) - force=True parameter as escape hatch for debugging Before: ~3s per SSH command (2.3s rsync + 0.6s execution) After: ~0.6s per SSH command (mtime check + execution) SSH test suite: 134s → 50s