objectiveai_sdk/functions/inventions/state/
alpha_vector_state.rs1use crate::functions;
2use serde::{Deserialize, Serialize};
3use schemars::JsonSchema;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
6#[schemars(rename = "functions.inventions.state.AlphaVectorState")]
7pub struct AlphaVectorState {
8 #[serde(flatten)]
9 pub params: super::Params,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 #[schemars(extend("omitempty" = true))]
12 pub input_schema:
13 Option<functions::alpha_vector::expression::VectorFunctionInputSchema>,
14}
15
16impl AlphaVectorState {
17 pub(super) fn serialize_into_files(&self) -> super::files::Files {
18 super::files::Files {
19 parameters_json: serde_json::to_string_pretty(&self.params).unwrap_or_default(),
20 function_json: None,
21 input_schema_json: self.input_schema.as_ref().map(|s|
22 serde_json::to_string_pretty(&super::InputSchema::Vector { schema: s.clone() }).unwrap_or_default()
23 ),
24 essay_md: None,
25 essay_tasks_md: None,
26 readme_md: None,
27 }
28 }
29
30 pub(super) fn deserialize_from_files(
31 input_schema: Option<functions::alpha_vector::expression::VectorFunctionInputSchema>,
32 files: &super::files::Files,
33 ) -> Result<Self, super::error::Error> {
34 let params: super::Params = {
35 let mut de = serde_json::Deserializer::from_str(&files.parameters_json);
36 serde_path_to_error::deserialize(&mut de)
37 .map_err(|e| super::error::Error::Deserialize {
38 file: super::files::Files::PARAMETERS_JSON,
39 source: e,
40 })?
41 };
42 Ok(Self { params, input_schema })
43 }
44}