Skip to content

chore(deps): add ssh2 as a regular dependency#23

Merged
khaliqgant merged 1 commit intomainfrom
feat/ssh2-regular-dep
Apr 29, 2026
Merged

chore(deps): add ssh2 as a regular dependency#23
khaliqgant merged 1 commit intomainfrom
feat/ssh2-regular-dep

Conversation

@khaliqgant
Copy link
Copy Markdown
Member

@khaliqgant khaliqgant commented Apr 29, 2026

Summary

Adds ssh2 (^1.17.0) as a regular dependency of @agentworkforce/ricky so that globally-installed users get the native SSH path for the upcoming ricky connect <provider> flow.

Why

Once we wire up ricky connect to connectProvider() from @agent-relay/cloud (relay PR #798), ricky will depend on ssh2 transitively through @agent-relay/cloud. But the cloud package declares ssh2 as an optionalDependency — and "optional" means failure-is-non-fatal, not skipped. The realistic failure modes for globally-installed ricky users:

  • npm install -g ricky --omit=optional (or npm config set omit optional) → ssh2 silently skipped
  • Corporate / restricted CI installs that disable optional deps
  • Windows users without OpenSSH installed (the system-ssh fallback in the cloud SDK uses an SSH_ASKPASS script, which is a Linux/macOS pattern)
  • Future native build regressions on exotic arches

When ssh2 is missing the cloud SDK's loadSSH2() returns null and the code falls back to spawning system ssh, which fails silently in the environments above.

Pinning ssh2 as a regular dep at the ricky package root guarantees the native SSH path on every install. This mirrors the pattern in the relay CLI repo, where ssh2 is a regular dep at the package root for the same reason — even though @agent-relay/cloud (its bundled dep) declares ssh2 as optional.

Test plan

  • npm install resolves ssh2@^1.17.0 cleanly
  • package-lock.json updated
  • Once connectProvider() integration lands, smoke test ricky connect claude end-to-end

Compatibility

Additive — no removed deps, no API surface change. Bundle size grows by ssh2 (~150KB gzipped, plus its native cpu-features helper).


Open in Devin Review

Required for the upcoming `ricky connect <provider>` flow that imports
`connectProvider()` from `@agent-relay/cloud`. The cloud package
declares `ssh2` as an `optionalDependency`, which means a globally-
installed `ricky` could silently fall back to spawning system `ssh`
when a user installs with `--omit=optional`, in restricted CI
environments, or on Windows without OpenSSH. Pinning `ssh2` here
guarantees the native SSH path on every install.

Mirrors the pattern in the relay CLI repo, where `ssh2` is a regular
dep at the package root for the same reason.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 1 additional finding.

Open in Devin Review

@khaliqgant khaliqgant merged commit 9ec94d9 into main Apr 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant