MCPcopy Index your code
hub / github.com/AI45Lab/Code / instantiate

Method instantiate

core/src/program.rs:77–108  ·  view source on GitHub ↗
(&self, inputs: &serde_json::Value)

Source from the content-addressed store, hash-verified

75 }
76
77 pub fn instantiate(&self, inputs: &serde_json::Value) -> Result<Program> {
78 self.ensure_valid()?;
79 let input_object = inputs.as_object();
80 let mut bindings = serde_json::Map::new();
81
82 for parameter in &self.parameters {
83 let value = input_object.and_then(|object| object.get(&parameter.name));
84 match (value, &parameter.default, parameter.required) {
85 (Some(value), _, _) => {
86 bindings.insert(parameter.name.clone(), value.clone());
87 }
88 (None, Some(default), _) => {
89 bindings.insert(parameter.name.clone(), default.clone());
90 }
91 (None, None, true) => {
92 bail!("Missing required program parameter: {}", parameter.name);
93 }
94 (None, None, false) => {}
95 }
96 }
97
98 let bindings = serde_json::Value::Object(bindings);
99 let mut program = Program::new(self.name.clone(), self.description.clone());
100 for step in &self.steps {
101 program = program.with_step(ProgramStep {
102 tool_name: step.tool_name.clone(),
103 args: render_template_value(&step.args, &bindings),
104 label: step.label.clone(),
105 });
106 }
107 Ok(program)
108 }
109}
110
111#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]

Calls 6

render_template_valueFunction · 0.85
ensure_validMethod · 0.80
with_stepMethod · 0.80
getMethod · 0.45
insertMethod · 0.45
cloneMethod · 0.45