jev_state.mojo (1272B)
1 from std.collections import List 2 3 4 comptime MAX_STATE_BYTES = 4096 5 6 7 def _is_blank(value: String) -> Bool: 8 return String(value).strip().byte_length() == 0 9 10 11 def _truncate(value: String, limit: Int) -> String: 12 if value.byte_length() <= limit: 13 return String(value) 14 return String(value[byte=0:limit]) 15 16 17 def minimal_state( 18 source_text: String, focus_product: String, buyer_request: String 19 ) raises -> String: 20 if source_text.byte_length() > MAX_STATE_BYTES: 21 raise Error("provider state exceeds maximum size") 22 var parts = List[String]() 23 if not _is_blank(source_text): 24 parts.append(String("farm_update: ") + _truncate(source_text, 2048)) 25 if not _is_blank(focus_product): 26 parts.append(String("focus_product: ") + _truncate(focus_product, 256)) 27 if not _is_blank(buyer_request): 28 parts.append(String("buyer_request: ") + _truncate(buyer_request, 512)) 29 30 var joined = String() 31 var first = True 32 for part in parts: 33 if not first: 34 joined += "\n" 35 joined += part 36 first = False 37 if joined.byte_length() > MAX_STATE_BYTES: 38 raise Error("provider state exceeds maximum size") 39 return joined^ 40 41 42 def state_includes_full_repository() -> Bool: 43 return False