vv_agent/app_server/protocol/
turn.rs1use 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}