objectiveai_sdk/functions/inventions/recursive/response/unary/
function_invention_recursive.rs1use crate::agent;
2use crate::functions::inventions::recursive::response;
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
7#[schemars(
8 rename = "functions.inventions.recursive.response.unary.FunctionInventionRecursive"
9)]
10pub struct FunctionInventionRecursive {
11 pub id: String,
12 pub inventions: Vec<super::FunctionInvention>,
13 pub inventions_errors: bool,
14 pub created: u64,
15 pub object: super::Object,
16 pub usage: agent::completions::response::Usage,
17}
18
19impl FunctionInventionRecursive {
20 pub fn normalize_for_tests(&mut self) {
22 self.id = String::new();
23 self.created = 0;
24 for invention in &mut self.inventions {
25 invention.inner.normalize_for_tests();
26 }
27
28 self.inventions
30 .sort_by_cached_key(|i| serde_json::to_string(&i.inner).unwrap());
31
32 let mut i = 0;
34 for invention in &mut self.inventions {
35 invention.index = i;
36 i += 1;
37 }
38 }
39}
40
41impl From<response::streaming::FunctionInventionRecursiveChunk>
42 for FunctionInventionRecursive
43{
44 fn from(
45 response::streaming::FunctionInventionRecursiveChunk {
46 id,
47 inventions,
48 inventions_errors,
49 created,
50 object,
51 usage,
52 }: response::streaming::FunctionInventionRecursiveChunk,
53 ) -> Self {
54 Self {
55 id,
56 inventions: inventions
57 .into_iter()
58 .map(super::FunctionInvention::from)
59 .collect(),
60 inventions_errors: inventions_errors.unwrap_or(false),
61 created,
62 object: object.into(),
63 usage: usage.unwrap_or_default(),
64 }
65 }
66}