objectiveai-sdk 2.0.6

ObjectiveAI SDK, definitions, and utilities
Documentation
use crate::functions;
use indexmap::IndexMap;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};

pub type ScalarFunctionInputValueExpression = functions::expression::Expression;

pub mod scalar_function_input_value_expression {
    use crate::functions;
    pub fn transpile(
        this: super::ScalarFunctionInputValueExpression,
    ) -> functions::expression::WithExpression<
        functions::expression::InputValueExpression,
    > {
        functions::expression::WithExpression::Expression(this)
    }
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema, arbitrary::Arbitrary)]
#[schemars(rename = "functions.alpha_vector.expression.VectorFunctionInputValueExpression")]
pub struct VectorFunctionInputValueExpression {
    #[serde(skip_serializing_if = "Option::is_none")]
    #[schemars(extend("omitempty" = true))]
    pub context: Option<functions::expression::Expression>,
    pub items: functions::expression::Expression,
}

impl VectorFunctionInputValueExpression {
    pub fn transpile(
        self,
    ) -> functions::expression::WithExpression<
        functions::expression::InputValueExpression,
    > {
        functions::expression::WithExpression::Value(
            functions::expression::InputValueExpression::Object({
                let mut map =
                    IndexMap::with_capacity(if self.context.is_some() {
                        2
                    } else {
                        1
                    });
                if let Some(context) = self.context {
                    map.insert(
                        "context".to_string(),
                        functions::expression::WithExpression::Expression(
                            context,
                        ),
                    );
                }
                map.insert(
                    "items".to_string(),
                    functions::expression::WithExpression::Expression(
                        self.items,
                    ),
                );
                map
            }),
        )
    }
}

pub type ScalarFunctionInputValue = IndexMap<String, functions::expression::InputValue>;

pub mod scalar_function_input_value {
    use crate::functions;
    pub fn transpile(
        this: super::ScalarFunctionInputValue,
    ) -> functions::expression::InputValue {
        functions::expression::InputValue::Object(this)
    }
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, JsonSchema)]
#[schemars(rename = "functions.alpha_vector.expression.VectorFunctionInputValue")]
pub struct VectorFunctionInputValue {
    #[serde(skip_serializing_if = "Option::is_none")]
    #[schemars(extend("omitempty" = true))]
    pub context: Option<IndexMap<String, functions::expression::InputValue>>,
    pub items: Vec<functions::expression::InputValue>,
}

impl VectorFunctionInputValue {
    pub fn transpile(self) -> functions::expression::InputValue {
        functions::expression::InputValue::Object({
            let mut map = IndexMap::with_capacity(if self.context.is_some() {
                2
            } else {
                1
            });
            if let Some(context) = self.context {
                map.insert(
                    "context".to_string(),
                    functions::expression::InputValue::Object(context),
                );
            }
            map.insert(
                "items".to_string(),
                functions::expression::InputValue::Array(self.items),
            );
            map
        })
    }
}