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