meta.mojo (2683B)
1 from std.collections import List 2 3 from json import Value, loads 4 5 from hyf_core.provenance import CoreResponseMeta, ExecutionProvenance 6 7 8 def _string_array(items: List[String]) raises -> Value: 9 var array = loads("[]") 10 for item in items: 11 array.append(Value(String(item))) 12 return array^ 13 14 15 def _serialize_provenance(provenance: ExecutionProvenance) raises -> Value: 16 var value = loads("{}") 17 value.set("kind", Value(String(provenance.kind))) 18 value.set("signal_tags", _string_array(provenance.signal_tags)) 19 20 var source_refs = loads("[]") 21 for source_ref in provenance.source_refs: 22 var ref_value = loads("{}") 23 ref_value.set("source_kind", Value(String(source_ref.source_kind))) 24 ref_value.set("source_ref", Value(String(source_ref.source_ref))) 25 source_refs.append(ref_value) 26 value.set("source_refs", source_refs) 27 28 if provenance.fallback: 29 var fallback = provenance.fallback.value().copy() 30 var fallback_value = loads("{}") 31 fallback_value.set( 32 "fallback_kind", Value(String(fallback.fallback_kind)) 33 ) 34 fallback_value.set("reason", Value(String(fallback.reason))) 35 value.set("fallback", fallback_value) 36 else: 37 value.set("fallback", Value(None)) 38 39 if provenance.evidence_set_id: 40 value.set( 41 "evidence_set_id", Value(String(provenance.evidence_set_id.value())) 42 ) 43 else: 44 value.set("evidence_set_id", Value(None)) 45 46 return value^ 47 48 49 def serialize_core_response_meta(meta: CoreResponseMeta) raises -> Value: 50 var value = loads("{}") 51 value.set("execution_mode", Value(String(meta.execution_mode))) 52 value.set("backend", Value(String(meta.backend))) 53 if meta.provider: 54 value.set("provider", Value(String(meta.provider.value()))) 55 if meta.route: 56 value.set("route", Value(String(meta.route.value()))) 57 if meta.model: 58 value.set("model", Value(String(meta.model.value()))) 59 if meta.latency_ms: 60 value.set("latency_ms", Value(meta.latency_ms.value())) 61 if meta.schema_version: 62 value.set("schema_version", Value(meta.schema_version.value())) 63 if meta.prompt_version: 64 value.set( 65 "prompt_version", Value(String(meta.prompt_version.value())) 66 ) 67 if meta.fallback_kind: 68 value.set( 69 "fallback_kind", Value(String(meta.fallback_kind.value())) 70 ) 71 if meta.fallback_reason: 72 value.set( 73 "fallback_reason", Value(String(meta.fallback_reason.value())) 74 ) 75 if meta.provenance: 76 value.set("provenance", _serialize_provenance(meta.provenance.value())) 77 return value^