pub struct ClaudeClient { /* private fields */ }Expand description
Claude client for commit message improvement.
Implementations§
Source§impl ClaudeClient
impl ClaudeClient
Sourcepub fn new(ai_client: Box<dyn AiClient>) -> Self
pub fn new(ai_client: Box<dyn AiClient>) -> Self
Creates a new Claude client with the provided AI client implementation.
Sourcepub fn get_ai_client_metadata(&self) -> AiClientMetadata
pub fn get_ai_client_metadata(&self) -> AiClientMetadata
Returns metadata about the AI client.
Sourcepub fn into_ai_client(self) -> Box<dyn AiClient>
pub fn into_ai_client(self) -> Box<dyn AiClient>
Consumes the wrapper and returns the inner AiClient.
ClaudeClient is the commit-message-improvement entry point —
callers that want to drive the AI directly for unrelated workflows
(e.g. voice reflect) extract the underlying client via this
method rather than reimplementing the backend-dispatch ladder in
create_default_claude_client.
Sourcepub async fn send_message(
&self,
system_prompt: &str,
user_prompt: &str,
) -> Result<String>
pub async fn send_message( &self, system_prompt: &str, user_prompt: &str, ) -> Result<String>
Sends a raw prompt to the AI client and returns the text response.
Sourcepub fn from_env(model: String) -> Result<Self>
pub fn from_env(model: String) -> Result<Self>
Creates a new Claude client with API key from environment variables.
Sourcepub async fn generate_amendments(
&self,
repo_view: &RepositoryView,
) -> Result<AmendmentFile>
pub async fn generate_amendments( &self, repo_view: &RepositoryView, ) -> Result<AmendmentFile>
Generates commit message amendments from repository view.
Sourcepub async fn generate_amendments_with_options(
&self,
repo_view: &RepositoryView,
fresh: bool,
) -> Result<AmendmentFile>
pub async fn generate_amendments_with_options( &self, repo_view: &RepositoryView, fresh: bool, ) -> Result<AmendmentFile>
Generates commit message amendments from repository view with options.
If fresh is true, ignores existing commit messages and generates new ones
based solely on the diff content.
For single-commit views whose full diff exceeds the token budget, splits the diff into file-level chunks and dispatches multiple AI requests, then merges results. Multi-commit views fall back to progressive diff reduction (the caller retries individually on failure).
Sourcepub async fn generate_contextual_amendments(
&self,
repo_view: &RepositoryView,
context: &CommitContext,
) -> Result<AmendmentFile>
pub async fn generate_contextual_amendments( &self, repo_view: &RepositoryView, context: &CommitContext, ) -> Result<AmendmentFile>
Generates contextual commit message amendments with enhanced intelligence.
Sourcepub async fn generate_contextual_amendments_with_options(
&self,
repo_view: &RepositoryView,
context: &CommitContext,
fresh: bool,
) -> Result<AmendmentFile>
pub async fn generate_contextual_amendments_with_options( &self, repo_view: &RepositoryView, context: &CommitContext, fresh: bool, ) -> Result<AmendmentFile>
Generates contextual commit message amendments with options.
If fresh is true, ignores existing commit messages and generates new ones
based solely on the diff content.
For single-commit views whose full diff exceeds the token budget, splits the diff into file-level chunks and dispatches multiple AI requests, then merges results. Multi-commit views fall back to progressive diff reduction.
Sourcepub async fn generate_pr_content(
&self,
repo_view: &RepositoryView,
pr_template: &str,
) -> Result<PrContent>
pub async fn generate_pr_content( &self, repo_view: &RepositoryView, pr_template: &str, ) -> Result<PrContent>
Generates AI-powered PR content (title + description) from repository view and template.
Sourcepub async fn generate_pr_content_with_context(
&self,
repo_view: &RepositoryView,
pr_template: &str,
context: &CommitContext,
) -> Result<PrContent>
pub async fn generate_pr_content_with_context( &self, repo_view: &RepositoryView, pr_template: &str, context: &CommitContext, ) -> Result<PrContent>
Generates AI-powered PR content with project context (title + description).
Sourcepub async fn check_commits(
&self,
repo_view: &RepositoryView,
guidelines: Option<&str>,
include_suggestions: bool,
) -> Result<CheckReport>
pub async fn check_commits( &self, repo_view: &RepositoryView, guidelines: Option<&str>, include_suggestions: bool, ) -> Result<CheckReport>
Checks commit messages against guidelines and returns a report.
Validates commit messages against project guidelines or defaults, returning a structured report with issues and suggestions.
Sourcepub async fn check_commits_with_scopes(
&self,
repo_view: &RepositoryView,
guidelines: Option<&str>,
valid_scopes: &[ScopeDefinition],
include_suggestions: bool,
) -> Result<CheckReport>
pub async fn check_commits_with_scopes( &self, repo_view: &RepositoryView, guidelines: Option<&str>, valid_scopes: &[ScopeDefinition], include_suggestions: bool, ) -> Result<CheckReport>
Checks commit messages against guidelines with valid scopes and returns a report.
Validates commit messages against project guidelines or defaults, using the provided valid scopes for scope validation.
Sourcepub async fn refine_amendments_coherence(
&self,
items: &[(Amendment, String)],
) -> Result<AmendmentFile>
pub async fn refine_amendments_coherence( &self, items: &[(Amendment, String)], ) -> Result<AmendmentFile>
Refines individually-generated amendments for cross-commit coherence.
Sends commit summaries and proposed messages to the AI for a second pass that normalizes scopes, detects rename chains, and removes redundancy.
Sourcepub async fn refine_checks_coherence(
&self,
items: &[(CommitCheckResult, String)],
repo_view: &RepositoryView,
) -> Result<CheckReport>
pub async fn refine_checks_coherence( &self, items: &[(CommitCheckResult, String)], repo_view: &RepositoryView, ) -> Result<CheckReport>
Refines individually-generated check results for cross-commit coherence.
Sends commit summaries and check outcomes to the AI for a second pass that ensures consistent severity, detects cross-commit issues, and normalizes scope validation.
Auto Trait Implementations§
impl Freeze for ClaudeClient
impl !RefUnwindSafe for ClaudeClient
impl Send for ClaudeClient
impl Sync for ClaudeClient
impl Unpin for ClaudeClient
impl UnsafeUnpin for ClaudeClient
impl !UnwindSafe for ClaudeClient
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more