Skip to content

Migrate rv CLI from TypeScript to Rust - #1

Open
DarrenBaldwin07 wants to merge 1 commit into
mainfrom
tembo/migrate-rv-to-rust
Open

Migrate rv CLI from TypeScript to Rust#1
DarrenBaldwin07 wants to merge 1 commit into
mainfrom
tembo/migrate-rv-to-rust

Conversation

@DarrenBaldwin07

Copy link
Copy Markdown
Collaborator

Summary

  • replace the Bun/TypeScript application and provider SDKs with a native Rust crate
  • preserve the existing CLI commands, aliases, and ~/.rv.json config format
  • implement a shared async review API for GitHub, GitLab, and Bitbucket
  • validate and persist GitLab and Bitbucket token authentication
  • correctly parse nested GitLab project namespaces such as frayt/platform/core
  • document Rust build, authentication, command, and development workflows

Testing

  • cargo fmt --all -- --check
  • cargo clippy --all-targets --all-features -- -D warnings
  • cargo test --all-targets
  • exercised top-level and provider-specific --help output

Want tembo to make any changes? Add a comment with @tembo and i'll get back to work!

View on Tembo  Review in Tembo  View Agent Settings  View on slack

Co-authored-by: Darren <68653294+DarrenBaldwin07@users.noreply.github.com>
@tembo tembo Bot added the tembo Pull request created by Tembo label Aug 19, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 4 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 62f2f18. Configure here.

Comment thread src/client/bitbucket.rs
.send()
.await?;
response_empty(response).await
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bitbucket resolve uses wrong method

High Severity

Resolving a Bitbucket comment sends PUT to /comments/{id}/resolve. Bitbucket Cloud expects POST on that path, so resolve_comment fails instead of resolving the thread.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 62f2f18. Configure here.

Comment thread src/client/github.rs
.send()
.await?;
Ok(Comment::from(response_json::<ApiComment>(response).await?))
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

GitHub lists issue comments only

Medium Severity

get_comments and get_comment call the issues comment endpoints, so they return conversation comments and miss inline review comments. GitLab and Bitbucket include inline comments in the same APIs, and the previous GitHub client used pulls review-comment routes.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 62f2f18. Configure here.

Comment thread src/client/gitlab.rs
.query(&[("per_page", 100)])
.send()
.await?;
let notes: Vec<ApiNote> = response_json(response).await?;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

GitLab lists only the first page

Medium Severity

Notes and discussions are fetched once with per_page 100 and no follow-up pages. Larger merge requests lose comments and threads, and resolve_comment can fail to find a note that exists on a later page.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 62f2f18. Configure here.

Comment thread src/utils.rs

let repo = parts[marker - 1];
let owner = parts[..marker - 1].join("/");
return parsed(Provider::Gitlab, &owner, repo, parts[marker + 2]);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

PR URLs with extra path segments fail

Medium Severity

URL parsing requires an exact path (/pull/123, /pull-requests/123, or /-/merge_requests/123) and rejects common suffixes such as /files, /diffs, or /commits. github view and setup then fail on normal browser address-bar URLs.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 62f2f18. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tembo Pull request created by Tembo

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant