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