Skip to main content

devboy_core/
lib.rs

1//! Core traits, types, and error handling for devboy-tools.
2//!
3//! This crate provides the foundational abstractions used across all devboy components:
4//!
5//! - **Provider traits**: [`IssueProvider`], [`MergeRequestProvider`], [`KnowledgeBaseProvider`], [`MessengerProvider`], [`Provider`]
6//! - **Unified types**: [`Issue`], [`MergeRequest`], [`KbSpace`], [`KbPage`], [`MessengerChat`], [`MessengerMessage`], [`Discussion`], [`Comment`], [`FileDiff`]
7//! - **Configuration**: [`Config`], [`GitHubConfig`], [`GitLabConfig`]
8//! - **Error handling**: [`Error`], [`Result`]
9//!
10//! # Example
11//!
12//! ```ignore
13//! use devboy_core::{IssueProvider, IssueFilter, Issue, ProviderResult, Result};
14//!
15//! async fn list_open_issues(provider: &dyn IssueProvider) -> Result<ProviderResult<Issue>> {
16//!     let filter = IssueFilter {
17//!         state: Some("opened".to_string()),
18//!         limit: Some(10),
19//!         ..Default::default()
20//!     };
21//!     provider.get_issues(filter).await
22//! }
23//! ```
24
25#![deny(rustdoc::broken_intra_doc_links)]
26#![deny(rustdoc::private_intra_doc_links)]
27#![deny(rustdoc::invalid_html_tags)]
28pub mod agents;
29pub mod alias;
30pub mod asset;
31pub mod config;
32pub mod enricher;
33pub mod error;
34pub mod liveness;
35pub mod provider;
36pub mod secret_approval;
37
38pub use liveness::{LivenessProbe, LivenessResult, LivenessStatus};
39pub mod remote_config;
40#[cfg(feature = "sentry")]
41pub mod sentry_integration;
42pub mod tool_category;
43pub mod tool_value_model;
44pub mod types;
45
46// Re-export error types
47pub use error::{Error, Result};
48
49// Re-export provider traits
50pub use provider::{
51    IssueProvider, KnowledgeBaseProvider, MeetingNotesProvider, MergeRequestProvider,
52    MessengerProvider, PipelineProvider, Provider, UserProvider,
53};
54
55// Re-export all types
56pub use types::{
57    AddStructureGeneratorInput, AddStructureRowsInput, AssignToSprintInput, CodePosition, Comment,
58    CreateCommentInput, CreateIssueInput, CreateMergeRequestInput, CreatePageParams,
59    CreateStructureInput, CustomFieldDescriptor, CustomFieldValue, Discussion, FailedJob, FileDiff,
60    ForestModifyResult, GetChatsParams, GetForestOptions, GetMessagesParams, GetPipelineInput,
61    GetStructureValuesInput, GetUsersOptions, Issue, IssueFilter, IssueLink, IssueRelations,
62    IssueStatus, JobLogMode, JobLogOptions, JobLogOutput, KbComment, KbPage, KbPageContent,
63    KbSpace, ListCustomFieldsParams, ListPagesParams, ListProjectVersionsParams, MeetingFilter,
64    MeetingNote, MeetingSpeaker, MeetingTranscript, MergeRequest, MessageAttachment, MessageAuthor,
65    MessengerChat, MessengerMessage, MoveStructureRowsInput, MrFilter, Pagination, PipelineInfo,
66    PipelineJob, PipelineStage, PipelineStatus, PipelineSummary, ProjectVersion, ProviderResult,
67    Release, ReleaseAsset, SaveStructureViewInput, SearchKbParams, SearchMessagesParams,
68    SendMessageParams, SortInfo, SortOrder, Sprint, SprintState, Structure, StructureColumnValue,
69    StructureForest, StructureGenerator, StructureNode, StructureRowItem, StructureRowValues,
70    StructureValues, StructureView, StructureViewColumn, SyncStructureGeneratorInput,
71    TranscriptSentence, UpdateIssueInput, UpdateMergeRequestInput, UpdatePageParams,
72    UpdateStructureAutomationInput, UpsertProjectVersionInput, User,
73};
74
75// Re-export enricher traits and utilities
76pub use enricher::{PropertySchema, ToolEnricher, ToolSchema, sanitize_field_name};
77pub use tool_category::ToolCategory;
78
79// Re-export Paper 3 tool value model — provider-shipped per-tool
80// metadata for the enrichment knapsack planner.
81pub use tool_value_model::{
82    CostModel, FieldGroup, FollowUpLink, SideEffectClass, ToolValueModel, ValueClass,
83};
84
85// Re-export asset management types
86pub use asset::{
87    AssetAnalysis, AssetCapabilities, AssetContext, AssetContextKind, AssetInput, AssetMeta,
88    ContentKind, ContextCapabilities, MarkdownAttachment, SemanticAnalysis, filename_from_url,
89    parse_markdown_attachments,
90};
91
92// Re-export config types
93pub use config::{
94    BuiltinToolsConfig, ClickUpConfig, Config, ConfluenceConfig, ContextConfig, FirefliesConfig,
95    FormatPipelineConfig, GitHubConfig, GitLabConfig, JiraConfig, ProxyConfig, ProxyMatchingConfig,
96    ProxyMcpServerConfig, ProxyRoutingConfig, ProxyRoutingOverride, ProxySecretsConfig,
97    ProxyTelemetryConfig, ProxyToolRule, RemoteConfigSettings, RoutingStrategy, SentryConfig,
98    SlackConfig, default_slack_required_scopes, matches_glob, routing_strategy_slug,
99};