Expand description
§aptu-core
Core library for Aptu - AI-Powered Triage Utility.
§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, andZenMux - 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
| Feature | Description |
|---|---|
keyring | Secure 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 analysisconfig- Configuration loading and XDG pathsgithub- GitHub API and authenticationhistory- Contribution history trackingrepos- 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.