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 oauth;
36pub mod provider;
37pub mod secret_approval;
38
39pub use liveness::{LivenessProbe, LivenessResult, LivenessStatus};
40pub mod remote_config;
41#[cfg(feature = "sentry")]
42pub mod sentry_integration;
43pub mod tool_category;
44pub mod tool_value_model;
45pub mod types;
46
47// Re-export error types
48pub use error::{Error, Result};
49
50// Re-export provider traits
51pub use provider::{
52    IssueProvider, KnowledgeBaseProvider, MeetingNotesProvider, MergeRequestProvider,
53    MessengerProvider, PipelineProvider, Provider, UserProvider,
54};
55
56// Re-export all types
57pub use types::{
58    AddStructureGeneratorInput, AddStructureRowsInput, AssignToSprintInput, CodePosition, Comment,
59    CreateCommentInput, CreateIssueInput, CreateMergeRequestInput, CreatePageParams,
60    CreateStructureInput, CustomFieldDescriptor, CustomFieldValue, Discussion, FailedJob, FileDiff,
61    ForestModifyResult, GetChatsParams, GetForestOptions, GetMessagesParams, GetPipelineInput,
62    GetStructureValuesInput, GetUsersOptions, Issue, IssueFilter, IssueLink, IssueRelations,
63    IssueStatus, JobLogMode, JobLogOptions, JobLogOutput, KbComment, KbPage, KbPageContent,
64    KbSpace, ListCustomFieldsParams, ListPagesParams, ListProjectVersionsParams, MeetingFilter,
65    MeetingNote, MeetingSpeaker, MeetingTranscript, MergeRequest, MessageAttachment, MessageAuthor,
66    MessengerChat, MessengerMessage, MoveStructureRowsInput, MrFilter, Pagination, PipelineInfo,
67    PipelineJob, PipelineStage, PipelineStatus, PipelineSummary, ProjectVersion, ProviderResult,
68    Release, ReleaseAsset, SaveStructureViewInput, SearchKbParams, SearchMessagesParams,
69    SendMessageParams, SortInfo, SortOrder, Sprint, SprintState, Structure, StructureColumnValue,
70    StructureForest, StructureGenerator, StructureNode, StructureRowItem, StructureRowValues,
71    StructureValues, StructureView, StructureViewColumn, SyncStructureGeneratorInput,
72    TranscriptSentence, UpdateIssueInput, UpdateMergeRequestInput, UpdatePageParams,
73    UpdateStructureAutomationInput, UpsertProjectVersionInput, User,
74};
75
76// Re-export enricher traits and utilities
77pub use enricher::{PropertySchema, ToolEnricher, ToolSchema, sanitize_field_name};
78pub use tool_category::ToolCategory;
79
80// Re-export Paper 3 tool value model — provider-shipped per-tool
81// metadata for the enrichment knapsack planner.
82pub use tool_value_model::{
83    CostModel, FieldGroup, FollowUpLink, SideEffectClass, ToolValueModel, ValueClass,
84};
85
86// Re-export asset management types
87pub use asset::{
88    AssetAnalysis, AssetCapabilities, AssetContext, AssetContextKind, AssetInput, AssetMeta,
89    ContentKind, ContextCapabilities, MarkdownAttachment, SemanticAnalysis, filename_from_url,
90    parse_markdown_attachments,
91};
92
93// Re-export config types
94pub use config::{
95    BuiltinToolsConfig, ClickUpConfig, Config, ConfluenceConfig, ContextConfig, FirefliesConfig,
96    FormatPipelineConfig, GitHubConfig, GitLabConfig, JiraConfig, ProxyConfig, ProxyMatchingConfig,
97    ProxyMcpServerConfig, ProxyRoutingConfig, ProxyRoutingOverride, ProxySecretsConfig,
98    ProxyTelemetryConfig, ProxyToolRule, RemoteConfigSettings, RoutingStrategy, SentryConfig,
99    SlackConfig, default_slack_required_scopes, matches_glob, routing_strategy_slug,
100};