Skip to main content

systemprompt_agent/models/
runtime.rs

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