Skip to main content

elizaos_plugin_github/providers/
mod.rs

1#![allow(missing_docs)]
2
3pub mod issue_context;
4pub mod repository_state;
5
6pub use issue_context::extract_issue_number;
7pub use issue_context::GitHubIssueContextProvider;
8pub use issue_context::IssueContextProvider;
9pub use repository_state::GitHubRepositoryStateProvider;
10pub use repository_state::RepositoryStateProvider;
11
12use serde::{Deserialize, Serialize};
13use serde_json::Value;
14
15use crate::error::Result;
16use crate::GitHubService;
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct ProviderContext {
20    pub message: Value,
21    pub state: Value,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct ProviderResult {
26    pub context: String,
27    pub data: Value,
28}
29
30pub trait GitHubProvider: Send + Sync {
31    fn name(&self) -> &str;
32    fn description(&self) -> &str;
33    fn get(
34        &self,
35        context: &ProviderContext,
36        service: &GitHubService,
37    ) -> impl std::future::Future<Output = Result<ProviderResult>> + Send;
38}