mindcontrol_types/
signature.rs

1use super::var::VarV1;
2use genotype_json_types::GtjAny;
3use litty::literal;
4use serde::{Deserialize, Serialize};
5
6/// Prompt signature. It defines the input and output types of the prompt.
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8pub struct SignatureV1 {
9    /// Input definition.
10    pub input: Vec<SignatureInputV1>,
11    /// Output definition.
12    pub output: SignatureOutputV1,
13    /// The number of choices to generate.
14    pub n: u8,
15}
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
18pub struct SignatureInputFieldsV1 {
19    /// Input definition.
20    pub input: Vec<SignatureInputV1>,
21}
22
23/// Input schema. It defines individual input variable and type.
24#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
25pub struct SignatureInputV1 {
26    /// Input type.
27    pub r#type: SignatureInputV1Type,
28    /// Input variable.
29    pub var: VarV1,
30}
31
32#[literal("string")]
33pub struct SignatureInputV1TypeString;
34
35#[literal("number")]
36pub struct SignatureInputV1TypeNumber;
37
38#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
39#[serde(untagged)]
40pub enum SignatureInputV1Type {
41    String(SignatureInputV1TypeString),
42    Number(SignatureInputV1TypeNumber),
43}
44
45/// Output type. It defines output variable and type.
46#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
47#[serde(untagged)]
48pub enum SignatureOutputV1 {
49    SignatureOutputStringV1(SignatureOutputStringV1),
50    SignatureOutputJsonV1(SignatureOutputJsonV1),
51}
52
53/// Output base type.
54#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
55pub struct SignatureOutputBaseV1 {
56    /// Output variable.
57    pub var: VarV1,
58}
59
60/// Output string type.
61#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
62pub struct SignatureOutputStringV1 {
63    /// Output variable.
64    pub var: VarV1,
65    /// Output type.
66    pub r#type: SignatureOutputStringV1TypeString,
67}
68
69#[literal("string")]
70pub struct SignatureOutputStringV1TypeString;
71
72/// Output JSON type.
73#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
74pub struct SignatureOutputJsonV1 {
75    /// Output variable.
76    pub var: VarV1,
77    /// Output type.
78    pub r#type: SignatureOutputJsonV1TypeJson,
79    /// JSON schema descriptor.
80    pub descriptor: GtjAny,
81}
82
83#[literal("json")]
84pub struct SignatureOutputJsonV1TypeJson;