Crate aptu_core

Crate aptu_core 

Source
Expand description

§Aptu Core

Core library for the Aptu CLI - AI-powered OSS issue triage.

This crate provides reusable components for:

  • GitHub API integration (authentication, issues, GraphQL)
  • AI-assisted issue triage via OpenRouter
  • Configuration management
  • Contribution history tracking
  • Curated repository discovery

§Quick Start

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

// Load configuration
let config = load_config()?;

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

// Create issue details
let issue = IssueDetails {
    owner: "block".to_string(),
    repo: "goose".to_string(),
    number: 123,
    title: "Example issue".to_string(),
    body: "Issue description...".to_string(),
    labels: vec![],
    comments: vec![],
    url: "https://github.com/block/goose/issues/123".to_string(),
    repo_context: vec![],
    repo_tree: vec![],
    available_labels: vec![],
    available_milestones: vec![],
    viewer_permission: None,
};

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

§Modules

  • ai - AI integration (OpenRouter API, triage analysis)
  • config - Configuration loading and paths
  • error - Error types
  • github - GitHub API (auth, issues, GraphQL)
  • history - Contribution history tracking
  • repos - Curated repository list

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::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::TriageResponse;
pub use ai::AiClient;
pub use ai::AiModel;
pub use ai::ModelInfo;
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::CuratedRepo;
pub use triage::APTU_SIGNATURE;
pub use triage::TriageStatus;
pub use triage::check_already_triaged;
pub use retry::is_retryable_anyhow;
pub use retry::is_retryable_http;
pub use retry::retry_backoff;
pub use utils::format_relative_time;
pub use utils::parse_and_format_relative_time;
pub use utils::truncate;
pub use utils::truncate_with_suffix;
pub use facade::analyze_issue;
pub use facade::fetch_issues;
pub use facade::list_curated_repos;
pub use facade::review_pr;

Modules§

ai
AI integration module.
auth
Token provider abstraction for multi-platform credential resolution.
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 repository list for Aptu.
retry
Retry logic with exponential backoff for transient failures.
triage
Triage status detection for GitHub issues.
utils
Text utility functions for Aptu.

Type Aliases§

Result
Convenience Result type for Aptu operations.