Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c9c8fc5

Browse files
committed
refactor: move def attr into Metadata (rust interpreter)
Signed-off-by: Nick Mitchell <[email protected]>
1 parent c5b1817 commit c9c8fc5

File tree

3 files changed

+48
-36
lines changed

3 files changed

+48
-36
lines changed

pdl-live-react/src-tauri/src/compile/beeai.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ fn with_tools(
191191

192192
fn call_tools(model: &String, parameters: &HashMap<String, Value>) -> PdlBlock {
193193
let repeat = PdlBlock::Text(TextBlock {
194-
def: None,
195194
metadata: None,
196195
role: None,
197196
parser: None,
@@ -207,6 +206,7 @@ fn call_tools(model: &String, parameters: &HashMap<String, Value>) -> PdlBlock {
207206
tool_call_id: Some("${ tool.id }".to_string()),
208207
content: Box::new(PdlBlock::Call(CallBlock {
209208
metadata: Some(Metadata {
209+
def: None,
210210
defs: json_loads(
211211
&"args",
212212
&"pdl__args",
@@ -465,7 +465,6 @@ asyncio.run(invoke())
465465
model_call.push(PdlBlock::Text(TextBlock {
466466
role: Some(Role::System),
467467
text: vec![PdlBlock::String(instructions)],
468-
def: None,
469468
metadata: None,
470469
parser: None,
471470
description: Some("Model instructions".into()),
@@ -482,9 +481,9 @@ asyncio.run(invoke())
482481
};
483482

484483
model_call.push(PdlBlock::Model(ModelBlock {
484+
metadata: None,
485485
input: None,
486486
description: Some(description),
487-
def: None,
488487
model: model.clone(),
489488
model_response: model_response,
490489
pdl_result: None,
@@ -505,7 +504,6 @@ asyncio.run(invoke())
505504
PdlBlock::Function(FunctionBlock {
506505
function: HashMap::new(),
507506
return_: Box::new(PdlBlock::Text(TextBlock {
508-
def: None,
509507
metadata: None,
510508
role: None,
511509
parser: None,
@@ -515,8 +513,10 @@ asyncio.run(invoke())
515513
}),
516514
);
517515
PdlBlock::Text(TextBlock {
518-
def: None,
519-
metadata: Some(Metadata { defs: Some(defs) }),
516+
metadata: Some(Metadata {
517+
def: None,
518+
defs: Some(defs),
519+
}),
520520
role: None,
521521
parser: None,
522522
description: Some("Model call wrapper".to_string()),
@@ -534,7 +534,6 @@ asyncio.run(invoke())
534534
.collect::<Vec<_>>();
535535

536536
let pdl: PdlBlock = PdlBlock::Text(TextBlock {
537-
def: None,
538537
metadata: if tool_declarations.len() == 0 {
539538
None
540539
} else {
@@ -545,7 +544,10 @@ asyncio.run(invoke())
545544
object: tool_declarations,
546545
}),
547546
);
548-
Some(Metadata { defs: Some(m) })
547+
Some(Metadata {
548+
def: None,
549+
defs: Some(m),
550+
})
549551
},
550552
description: Some(bee.workflow.workflow.name),
551553
role: None,

pdl-live-react/src-tauri/src/pdl/ast.rs

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,17 @@ pub enum PdlType {
5656
pub struct Metadata {
5757
#[serde(skip_serializing_if = "Option::is_none")]
5858
pub defs: Option<IndexMap<String, PdlBlock>>,
59+
60+
#[serde(skip_serializing_if = "Option::is_none")]
61+
pub def: Option<String>,
62+
}
63+
impl Default for Metadata {
64+
fn default() -> Self {
65+
Self {
66+
defs: None,
67+
def: None,
68+
}
69+
}
5970
}
6071

6172
/// Call a function
@@ -88,7 +99,6 @@ pub trait SequencingBlock {
8899
fn kind(&self) -> &str;
89100
fn description(&self) -> &Option<String>;
90101
fn role(&self) -> &Option<Role>;
91-
fn def(&self) -> &Option<String>;
92102
fn metadata(&self) -> &Option<Metadata>;
93103
fn items(&self) -> &Vec<PdlBlock>;
94104
fn with_items(&self, items: Vec<PdlBlock>) -> Self;
@@ -118,9 +128,6 @@ pub struct LastOfBlock {
118128

119129
#[serde(skip_serializing_if = "Option::is_none")]
120130
pub parser: Option<PdlParser>,
121-
122-
#[serde(skip_serializing_if = "Option::is_none")]
123-
pub def: Option<String>,
124131
}
125132
impl SequencingBlock for LastOfBlock {
126133
fn kind(&self) -> &str {
@@ -132,9 +139,6 @@ impl SequencingBlock for LastOfBlock {
132139
fn role(&self) -> &Option<Role> {
133140
&self.role
134141
}
135-
fn def(&self) -> &Option<String> {
136-
return &self.def;
137-
}
138142
fn metadata(&self) -> &Option<Metadata> {
139143
&self.metadata
140144
}
@@ -186,9 +190,6 @@ pub struct TextBlock {
186190

187191
#[serde(skip_serializing_if = "Option::is_none")]
188192
pub parser: Option<PdlParser>,
189-
190-
#[serde(skip_serializing_if = "Option::is_none")]
191-
pub def: Option<String>,
192193
}
193194
impl SequencingBlock for TextBlock {
194195
fn kind(&self) -> &str {
@@ -200,9 +201,6 @@ impl SequencingBlock for TextBlock {
200201
fn role(&self) -> &Option<Role> {
201202
&self.role
202203
}
203-
fn def(&self) -> &Option<String> {
204-
return &self.def;
205-
}
206204
fn metadata(&self) -> &Option<Metadata> {
207205
&self.metadata
208206
}
@@ -237,7 +235,6 @@ impl SequencingBlock for TextBlock {
237235
impl TextBlock {
238236
pub fn new(text: Vec<PdlBlock>) -> Self {
239237
TextBlock {
240-
def: None,
241238
metadata: None,
242239
description: None,
243240
role: None,
@@ -247,7 +244,16 @@ impl TextBlock {
247244
}
248245

249246
pub fn def(&mut self, def: &str) -> &mut Self {
250-
self.def = Some(def.into());
247+
match &mut self.metadata {
248+
Some(metadata) => {
249+
metadata.def = Some(def.into());
250+
}
251+
None => {
252+
let mut metadata: Metadata = Default::default();
253+
metadata.def = Some(def.into());
254+
self.metadata = Some(metadata);
255+
}
256+
}
251257
self
252258
}
253259

@@ -295,12 +301,14 @@ pub struct PdlUsage {
295301
#[derive(Serialize, Deserialize, Debug, Clone)]
296302
#[serde(tag = "kind", rename = "model")]
297303
pub struct ModelBlock {
304+
#[serde(flatten)]
305+
#[serde(skip_serializing_if = "Option::is_none")]
306+
pub metadata: Option<Metadata>,
307+
298308
#[serde(skip_serializing_if = "Option::is_none")]
299309
pub description: Option<String>,
300310
pub model: String,
301311
#[serde(skip_serializing_if = "Option::is_none")]
302-
pub def: Option<String>,
303-
#[serde(skip_serializing_if = "Option::is_none")]
304312
pub parameters: Option<HashMap<String, Value>>,
305313
#[serde(skip_serializing_if = "Option::is_none")]
306314
pub input: Option<Box<PdlBlock>>,
@@ -318,7 +326,7 @@ pub struct ModelBlock {
318326
impl ModelBlock {
319327
pub fn new(model: &str) -> Self {
320328
ModelBlock {
321-
def: None,
329+
metadata: None,
322330
description: None,
323331
model_response: None,
324332
parameters: None,
@@ -433,15 +441,16 @@ pub struct ObjectBlock {
433441
#[derive(Serialize, Deserialize, Debug, Clone)]
434442
#[serde(tag = "kind")]
435443
pub struct DataBlock {
444+
#[serde(flatten)]
445+
#[serde(skip_serializing_if = "Option::is_none")]
446+
pub metadata: Option<Metadata>,
447+
436448
pub data: Value,
437449

438450
/// Do not evaluate expressions inside strings.
439451
#[serde(skip_serializing_if = "Option::is_none")]
440452
pub raw: Option<bool>,
441453

442-
#[serde(skip_serializing_if = "Option::is_none")]
443-
pub def: Option<String>,
444-
445454
#[serde(skip_serializing_if = "Option::is_none")]
446455
pub parser: Option<PdlParser>,
447456
}
@@ -486,6 +495,10 @@ pub enum StringOrNull {
486495
#[derive(Serialize, Deserialize, Debug, Clone)]
487496
#[serde(tag = "kind", rename = "read")]
488497
pub struct ReadBlock {
498+
#[serde(flatten)]
499+
#[serde(skip_serializing_if = "Option::is_none")]
500+
pub metadata: Option<Metadata>,
501+
489502
/// Name of the file to read. If `None`, read the standard input.
490503
pub read: StringOrNull,
491504

@@ -495,9 +508,6 @@ pub struct ReadBlock {
495508
/// Indicate if one or multiple lines should be read.
496509
pub multiline: Option<bool>,
497510

498-
#[serde(skip_serializing_if = "Option::is_none")]
499-
pub def: Option<String>,
500-
501511
#[serde(skip_serializing_if = "Option::is_none")]
502512
pub parser: Option<PdlParser>,
503513
}

pdl-live-react/src-tauri/src/pdl/interpreter.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ impl<'a> Interpreter<'a> {
366366
};
367367

368368
let result = self.def(
369-
&block.def,
369+
&block.metadata.as_ref().and_then(|m| m.def.clone()),
370370
&buffer.clone().into(),
371371
&block.parser,
372372
state,
@@ -747,7 +747,7 @@ impl<'a> Interpreter<'a> {
747747
let mut trace = block.clone();
748748
if let Some(true) = block.raw {
749749
let result = self.def(
750-
&block.def,
750+
&block.metadata.as_ref().and_then(|m| m.def.clone()),
751751
&resultify(&block.data),
752752
&block.parser,
753753
state,
@@ -756,7 +756,7 @@ impl<'a> Interpreter<'a> {
756756
Ok((result, vec![], PdlBlock::Data(trace)))
757757
} else {
758758
let result = self.def(
759-
&block.def,
759+
&block.metadata.as_ref().and_then(|m| m.def.clone()),
760760
&self.eval_json(&block.data, state)?,
761761
&block.parser,
762762
state,
@@ -914,7 +914,7 @@ impl<'a> Interpreter<'a> {
914914

915915
let trace = block.with_items(output_blocks);
916916
let result = self.def(
917-
trace.def(),
917+
&block.metadata().as_ref().and_then(|m| m.def.clone()),
918918
&trace.result_for(output_results),
919919
trace.parser(),
920920
state,

0 commit comments

Comments
 (0)