Crate aptu_core

Crate aptu_core 

Source
Expand description

§aptu-core

Core library for Aptu - AI-Powered Triage Utility.

docs.rs CLI crate REUSE OpenSSF Best Practices

§Features

  • AI Triage - Analyze issues with summaries, labels, and contributor guidance
  • PR Review - AI-powered pull request analysis and feedback
  • Release Notes - AI-generated release notes from PRs between tags
  • Multiple Providers - Gemini (default), Cerebras, Groq, OpenRouter, Z.AI, and ZenMux
  • GitHub Integration - Auth, issues, PRs, and GraphQL queries
  • Resilient - Exponential backoff, circuit breaker, rate limit handling

§Installation

Add to your Cargo.toml:

[dependencies]
aptu-core = "0.2"

§Optional Features

FeatureDescription
keyringSecure token storage using system keyring (macOS Keychain, Linux Secret Service, Windows Credential Manager)

To enable optional features:

[dependencies]
aptu-core = { version = "0.2", features = ["keyring"] }

§Example

use aptu_core::{load_config, AiClient, IssueDetails, ai::AiProvider};
use anyhow::Result;

#[tokio::main]
async fn main() -> Result<()> {
    // Load configuration
    let config = load_config()?;

    // Create AI client
    let client = AiClient::new(&config.ai.provider, &config.ai)?;

    // Create issue details
    let issue = IssueDetails::builder()
        .owner("block".to_string())
        .repo("goose".to_string())
        .number(123)
        .title("Example issue".to_string())
        .body("Issue description...".to_string())
        .url("https://github.com/block/goose/issues/123".to_string())
        .build();

    // Analyze with AI
    let response = client.analyze_issue(&issue).await?;
    println!("Summary: {}", response.triage.summary);

    Ok(())
}

§Modules

  • ai - AI integration and triage analysis
  • config - Configuration loading and XDG paths
  • github - GitHub API and authentication
  • history - Contribution history tracking
  • repos - Curated repository list

§Support

For questions and support, visit clouatre.ca.

§License

Apache-2.0. See LICENSE.

Re-exports§

pub use auth::TokenProvider;
pub use error::AptuError;
pub use config::AiConfig;
pub use config::AppConfig;
pub use config::CacheConfig;
pub use config::GitHubConfig;
pub use config::TaskType;
pub use config::UiConfig;
pub use config::UserConfig;
pub use config::config_dir;
pub use config::config_file_path;
pub use config::data_dir;
pub use config::load_config;
pub use cache::CacheEntry;
pub use ai::types::IssueComment;
pub use ai::types::IssueDetails;
pub use ai::types::PrDetails;
pub use ai::types::PrFile;
pub use ai::types::PrReviewResponse;
pub use ai::types::PrSummary;
pub use ai::types::ReleaseNotesResponse;
pub use ai::types::ReviewEvent;
pub use ai::types::TriageResponse;
pub use ai::AiClient;
pub use ai::AiModel;
pub use ai::ModelProvider;
pub use ai::ProviderConfig;
pub use ai::all_providers;
pub use ai::get_provider;
pub use github::auth::TokenSource;
pub use github::graphql::IssueNode;
pub use github::ratelimit::RateLimitStatus;
pub use github::ratelimit::check_rate_limit;
pub use ai::types::CreditsStatus;
pub use history::Contribution;
pub use history::ContributionStatus;
pub use history::HistoryData;
pub use repos::discovery::DiscoveredRepo;
pub use repos::discovery::DiscoveryFilter;
pub use repos::discovery::search_repositories;
pub use repos::CuratedRepo;
pub use repos::RepoFilter;
pub use triage::APTU_SIGNATURE;
pub use triage::TriageStatus;
pub use triage::check_already_triaged;
pub use triage::render_release_notes_markdown;
pub use retry::is_retryable_anyhow;
pub use retry::is_retryable_http;
pub use retry::retry_backoff;
pub use bulk::BulkOutcome;
pub use bulk::BulkResult;
pub use bulk::process_bulk;
pub use utils::format_relative_time;
pub use utils::infer_repo_from_git;
pub use utils::is_priority_label;
pub use utils::parse_and_format_relative_time;
pub use utils::truncate;
pub use utils::truncate_with_suffix;
pub use facade::add_custom_repo;
pub use facade::analyze_issue;
pub use facade::analyze_pr;
pub use facade::apply_triage_labels;
pub use facade::discover_repos;
pub use facade::fetch_issue_for_triage;
pub use facade::fetch_issues;
pub use facade::fetch_pr_for_review;
pub use facade::format_issue;
pub use facade::generate_release_notes;
pub use facade::label_pr;
pub use facade::list_curated_repos;
pub use facade::list_models;
pub use facade::list_repos;
pub use facade::post_issue;
pub use facade::post_pr_review;
pub use facade::post_release_notes;
pub use facade::post_triage_comment;
pub use facade::remove_custom_repo;
pub use facade::validate_model;
pub use github::issues::ApplyResult;

Modules§

ai
AI integration module.
auth
Token provider abstraction for multi-platform credential resolution.
bulk
Generic bulk processing with concurrent execution and retry logic.
cache
TTL-based file caching for GitHub API responses.
config
Configuration management for the Aptu CLI.
error
Error types for the Aptu CLI.
facade
Platform-agnostic facade functions for FFI and CLI integration.
github
GitHub integration module.
history
Local contribution history tracking.
repos
Curated and custom repository management for Aptu.
retry
Retry logic with exponential backoff for transient failures.
triage
Triage status detection for GitHub issues.
utils
Text utility functions for Aptu.

Enums§

State
The status of a issue or pull request.

Type Aliases§

Result
Convenience Result type for Aptu operations.