aptu_core/lib.rs
1// SPDX-License-Identifier: Apache-2.0
2
3#![warn(missing_docs)]
4#![doc = include_str!("../README.md")]
5
6// ============================================================================
7// Authentication
8// ============================================================================
9
10pub use auth::TokenProvider;
11
12// ============================================================================
13// Error Handling
14// ============================================================================
15
16pub use error::AptuError;
17
18/// Convenience Result type for Aptu operations.
19///
20/// This is equivalent to `std::result::Result<T, AptuError>`.
21pub type Result<T> = std::result::Result<T, AptuError>;
22
23// ============================================================================
24// Configuration
25// ============================================================================
26
27pub use config::{
28 AiConfig, AppConfig, CacheConfig, GitHubConfig, TaskType, UiConfig, UserConfig, config_dir,
29 config_file_path, data_dir, load_config, prompts_dir,
30};
31
32// ============================================================================
33// Caching
34// ============================================================================
35
36pub use cache::{CacheEntry, FileCache, FileCacheImpl};
37
38// ============================================================================
39// AI Triage
40// ============================================================================
41
42pub use ai::types::{
43 IssueComment, IssueDetails, PrDetails, PrFile, PrReviewResponse, PrSummary,
44 ReleaseNotesResponse, ReviewEvent, TriageResponse,
45};
46pub use ai::{AiClient, AiModel, ModelProvider, ProviderConfig, all_providers, get_provider};
47
48// ============================================================================
49// GitHub Integration
50// ============================================================================
51
52pub use github::auth::TokenSource;
53pub use github::graphql::IssueNode;
54pub use github::ratelimit::{RateLimitStatus, check_rate_limit};
55pub use octocrab::params::State;
56
57// ============================================================================
58// AI Integration
59// ============================================================================
60
61pub use ai::types::CreditsStatus;
62
63// ============================================================================
64// History Tracking
65// ============================================================================
66
67pub use history::{AiStats, Contribution, ContributionStatus, HistoryData};
68
69// ============================================================================
70// Repository Discovery
71// ============================================================================
72
73pub use repos::discovery::{DiscoveredRepo, DiscoveryFilter, search_repositories};
74pub use repos::{CuratedRepo, RepoFilter};
75
76// ============================================================================
77// Triage Detection
78// ============================================================================
79
80pub use triage::{
81 APTU_SIGNATURE, TriageStatus, check_already_triaged, render_pr_review_comment_body,
82 render_pr_review_markdown, render_release_notes_markdown, render_triage_markdown,
83};
84
85// ============================================================================
86// Retry Logic
87// ============================================================================
88
89pub use retry::{is_retryable_anyhow, is_retryable_http, retry_backoff};
90
91// ============================================================================
92// Bulk Processing
93// ============================================================================
94
95pub use bulk::{BulkOutcome, BulkResult, process_bulk};
96
97// ============================================================================
98// Utilities
99// ============================================================================
100
101pub use utils::{
102 format_relative_time, infer_repo_from_git, is_priority_label, parse_and_format_relative_time,
103 truncate, truncate_with_suffix,
104};
105
106// ============================================================================
107// Platform-Agnostic Facade
108// ============================================================================
109
110pub use facade::{
111 add_custom_repo, analyze_issue, analyze_pr, apply_triage_labels, create_pr, discover_repos,
112 fetch_issue_for_triage, fetch_issues, fetch_pr_for_review, format_issue,
113 generate_release_notes, label_pr, list_curated_repos, list_models, list_repos, post_issue,
114 post_pr_review, post_release_notes, post_triage_comment, remove_custom_repo, validate_model,
115};
116pub use github::issues::ApplyResult;
117pub use github::pulls::PrCreateResult;
118
119// ============================================================================
120// Security Scanning
121// ============================================================================
122
123pub use security::{
124 Confidence, Finding, FindingCache, PatternEngine, SarifReport, SecurityConfig, SecurityScanner,
125 Severity, needs_security_scan,
126};
127
128// ============================================================================
129// Modules
130// ============================================================================
131
132pub mod ai;
133#[cfg(feature = "ast-context")]
134pub mod ast_context;
135pub mod auth;
136pub mod bulk;
137pub mod cache;
138pub mod config;
139pub mod error;
140pub mod facade;
141pub mod github;
142pub mod history;
143pub mod repos;
144pub mod retry;
145pub mod security;
146pub mod triage;
147pub mod utils;