elizaos_plugin_prose/
lib.rs1#![allow(missing_docs)]
7
8use async_trait::async_trait;
9use serde_json::Value;
10
11mod error;
12mod types;
13
14pub mod actions;
15pub mod generated;
16pub mod providers;
17pub mod services;
18
19pub use error::{ProseError, Result};
20pub use services::{get_skill_content, set_skill_content, ProseService};
21pub use types::{
22 ProseCompileOptions, ProseCompileResult, ProseConfig, ProseConfigBuilder, ProseRunOptions,
23 ProseRunResult, ProseSkillFile, ProseStateMode,
24};
25
26pub use actions::{get_prose_actions, ProseCompileAction, ProseHelpAction, ProseRunAction};
27pub use providers::{get_prose_providers, ProseProvider};
28
29pub const PLUGIN_NAME: &str = "prose";
30pub const PLUGIN_DESCRIPTION: &str =
31 "OpenProse VM integration - a programming language for AI sessions";
32pub const PLUGIN_VERSION: &str = env!("CARGO_PKG_VERSION");
33
34#[derive(Debug, Clone)]
35pub struct ActionExample {
36 pub user_message: String,
37 pub agent_response: String,
38}
39
40#[derive(Debug, Clone)]
41pub struct ActionResult {
42 pub success: bool,
43 pub text: String,
44 pub data: Option<Value>,
45 pub error: Option<String>,
46}
47
48#[derive(Debug, Clone)]
49pub struct ProviderResult {
50 pub values: Value,
51 pub text: String,
52 pub data: Value,
53}
54
55#[async_trait]
56pub trait Action: Send + Sync {
57 fn name(&self) -> &str;
58 fn similes(&self) -> Vec<&str>;
59 fn description(&self) -> &str;
60 async fn validate(&self, message: &Value, state: &Value) -> bool;
61 async fn handler(
62 &self,
63 message: &Value,
64 state: &Value,
65 service: Option<&mut ProseService>,
66 ) -> ActionResult;
67 fn examples(&self) -> Vec<ActionExample>;
68}
69
70#[async_trait]
71pub trait Provider: Send + Sync {
72 fn name(&self) -> &str;
73 fn description(&self) -> &str;
74 fn position(&self) -> i32;
75 async fn get(
76 &self,
77 message: &Value,
78 state: &Value,
79 service: Option<&ProseService>,
80 ) -> ProviderResult;
81}
82
83pub mod prelude {
84 pub use crate::actions::{ProseCompileAction, ProseHelpAction, ProseRunAction};
85 pub use crate::error::{ProseError, Result};
86 pub use crate::providers::ProseProvider;
87 pub use crate::services::ProseService;
88 pub use crate::types::{
89 ProseCompileResult, ProseConfig, ProseRunResult, ProseSkillFile, ProseStateMode,
90 };
91 pub use crate::{Action, ActionExample, ActionResult, Provider, ProviderResult};
92}