Skip to main content

systemprompt_agent/models/
runtime.rs

1//! Runtime metadata describing a live agent process.
2
3use serde::{Deserialize, Serialize};
4use systemprompt_models::ai::ToolModelOverrides;
5use systemprompt_models::services::PluginComponentRef;
6
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8#[serde(rename_all = "camelCase")]
9pub struct AgentRuntimeInfo {
10    pub name: String,
11    pub port: u16,
12    pub is_enabled: bool,
13    pub is_primary: bool,
14    pub system_prompt: Option<String>,
15    pub mcp_servers: PluginComponentRef,
16    pub provider: Option<String>,
17    pub model: Option<String>,
18    pub max_output_tokens: Option<u32>,
19    #[serde(default)]
20    pub skills: PluginComponentRef,
21    #[serde(default)]
22    pub tool_model_overrides: ToolModelOverrides,
23}
24
25impl From<systemprompt_models::AgentConfig> for AgentRuntimeInfo {
26    fn from(config: systemprompt_models::AgentConfig) -> Self {
27        Self {
28            name: config.name,
29            port: config.port,
30            is_enabled: config.enabled,
31            is_primary: config.is_primary,
32            system_prompt: config.metadata.system_prompt,
33            mcp_servers: config.metadata.mcp_servers,
34            provider: config.metadata.provider,
35            model: config.metadata.model,
36            max_output_tokens: config.metadata.max_output_tokens,
37            skills: config.metadata.skills,
38            tool_model_overrides: config.metadata.tool_model_overrides,
39        }
40    }
41}