elizaos_plugin_github/providers/
mod.rs1#![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}