Skip to main content

vv_agent/app_server/protocol/
turn.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3use ts_rs::TS;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema, TS)]
6#[serde(rename_all = "camelCase")]
7pub struct TurnStartParams {
8    pub thread_id: String,
9    pub input: Vec<UserInput>,
10    #[serde(default, skip_serializing_if = "Option::is_none")]
11    pub model: Option<String>,
12}
13
14#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema, TS)]
15#[serde(rename_all = "camelCase")]
16pub struct TurnInterruptParams {
17    pub thread_id: String,
18    pub turn_id: String,
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema, TS)]
22#[serde(rename_all = "camelCase")]
23pub struct TurnSteerParams {
24    pub thread_id: String,
25    pub turn_id: String,
26    pub input: Vec<UserInput>,
27}
28
29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema, TS)]
30#[serde(rename_all = "camelCase")]
31pub struct TurnStartResponse {
32    pub turn: AppTurn,
33}
34
35#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema, TS)]
36#[serde(rename_all = "camelCase")]
37pub struct TurnInterruptResponse {}
38
39#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema, TS)]
40#[serde(rename_all = "camelCase")]
41pub struct TurnSteerResponse {
42    pub turn: AppTurn,
43}
44
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema, TS)]
46#[serde(rename_all = "camelCase")]
47pub struct TurnStartedParams {
48    pub turn: AppTurn,
49}
50
51#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema, TS)]
52#[serde(rename_all = "camelCase")]
53pub struct TurnCompletedParams {
54    pub turn: AppTurn,
55}
56
57#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema, TS)]
58#[serde(rename_all = "camelCase")]
59pub struct AppTurn {
60    pub id: String,
61    pub thread_id: String,
62    pub run_id: String,
63    pub status: TurnStatus,
64    pub input: Vec<UserInput>,
65    #[serde(default, skip_serializing_if = "Option::is_none")]
66    pub started_at_ms: Option<u128>,
67    #[serde(default, skip_serializing_if = "Option::is_none")]
68    pub completed_at_ms: Option<u128>,
69    #[serde(default, skip_serializing_if = "Option::is_none")]
70    pub token_usage: Option<AppTokenUsage>,
71}
72
73#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema, TS)]
74#[serde(rename_all = "camelCase")]
75pub enum TurnStatus {
76    Queued,
77    Running,
78    Completed,
79    Failed,
80    Interrupted,
81}
82
83#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema, TS)]
84#[serde(rename_all = "camelCase")]
85pub struct UserInput {
86    pub text: String,
87}
88
89#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema, TS)]
90#[serde(rename_all = "camelCase")]
91pub struct AppTokenUsage {
92    pub input_tokens: u64,
93    pub output_tokens: u64,
94    pub total_tokens: u64,
95}