use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Clone, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ApprovalDecision {
Approve,
Reject,
RequestChanges,
Escalate,
}
#[derive(Debug, Clone, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum RenderFormat {
Mermaid,
Json,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GraphCreateParams {
#[serde(default)]
pub spec: Option<Value>,
#[serde(default)]
pub action: Option<String>,
#[serde(default)]
pub graph_id: Option<String>,
#[serde(default)]
pub idempotency_key: Option<String>,
#[serde(default)]
pub template: Option<Value>,
#[serde(default)]
pub overwrite: Option<bool>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GraphListParams {
#[serde(default)]
pub query: Option<String>,
#[serde(default)]
pub limit: Option<u32>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GraphInspectParams {
pub graph_id: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GraphRetentionReviewParams {
#[serde(default)]
pub graph_id: Option<String>,
#[serde(default)]
pub state: Option<String>,
#[serde(default)]
pub limit: Option<u32>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GraphRetentionSetParams {
pub graph_id: String,
pub state: String,
pub reason: String,
pub actor: String,
#[serde(default)]
pub review_after: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GraphDeleteParams {
pub graph_id: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GraphExecuteParams {
pub graph_id: String,
#[serde(default)]
pub input: Option<Value>,
#[serde(default)]
pub graph_version: Option<String>,
#[serde(default)]
pub thread_id: Option<String>,
#[serde(default)]
pub mode: Option<String>,
#[serde(default)]
pub idempotency_key: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GraphStatusParams {
#[serde(default)]
pub resource: Option<String>,
#[serde(default)]
pub graph_id: Option<String>,
#[serde(default)]
pub run_id: Option<String>,
#[serde(default)]
pub cursor: Option<u64>,
#[serde(default)]
pub limit: Option<u64>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct StructuredOutput {
pub ok: bool,
#[serde(default)]
pub status: Option<String>,
#[serde(default)]
pub data: Option<Value>,
#[serde(default)]
pub error: Option<String>,
#[serde(default)]
pub error_code: Option<String>,
#[serde(default)]
pub graph_id: Option<String>,
#[serde(default)]
pub graph_version: Option<String>,
#[serde(default)]
pub run_id: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct ApprovalRequestParams {
pub checkpoint_id: String,
pub audience: String,
pub prompt: String,
pub allowed_decisions: Vec<String>,
pub expiration: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ApprovalListParams {
#[serde(default)]
pub run_id: Option<String>,
#[serde(default)]
pub status: Option<String>,
#[serde(default)]
pub limit: Option<u32>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ApprovalGetParams {
pub approval_id: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ApprovalDecideParams {
pub approval_id: String,
pub decision: String,
#[serde(alias = "actor")]
pub claimed_actor_label: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RunStartParams {
pub graph_id: String,
#[serde(default)]
pub input: Option<Value>,
#[serde(default)]
pub graph_version: Option<String>,
#[serde(default)]
pub thread_id: Option<String>,
#[serde(default)]
pub idempotency_key: Option<String>,
#[serde(default)]
pub budgets: Option<Value>,
#[serde(default)]
pub checkpoint: Option<bool>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RunWaitParams {
pub run_id: String,
#[serde(default)]
pub timeout_ms: Option<u64>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RunCancelParams {
pub run_id: String,
#[serde(default)]
pub reason: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RunGetParams {
pub run_id: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RunStateParams {
pub run_id: String,
#[serde(default)]
pub checkpoint_id: Option<String>,
#[serde(default)]
pub json_pointer: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RunEventsParams {
pub run_id: String,
#[serde(default)]
pub cursor: Option<u64>,
#[serde(default)]
pub limit: Option<u64>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RunReceiptParams {
pub run_id: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RunCheckpointParams {
#[serde(default)]
pub run_id: Option<String>,
#[serde(default)]
pub checkpoint_id: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RunResumeParams {
#[serde(default)]
pub checkpoint_id: Option<String>,
#[serde(default)]
pub run_id: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WitnessCaptureParams {
pub locator: String,
pub content: String,
pub media_type: String,
pub authority_class: String,
#[serde(default)]
pub retrieved_at: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct WitnessGetParams {
pub witness_id: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct PolicyCheckParams {
pub graph_id: String,
#[serde(default)]
pub input: Option<Value>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RenderParams {
pub graph_id: String,
#[serde(default)]
pub format: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct TemplateListParams {
#[serde(default)]
pub query: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct TemplateInstantiateParams {
pub template_id: String,
pub name: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct TemplateCandidatesParams {
#[serde(default)]
pub state: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct TemplateOutcomesParams {
pub template_id: String,
}