registry.mojo (9571B)
1 from std.collections import List, Optional 2 3 from json import Value 4 5 from hyf_core.capabilities.explain_result import execute_explain_result 6 from hyf_core.capabilities.query_rewrite import execute_query_rewrite 7 from hyf_core.capabilities.semantic_rank import execute_semantic_rank 8 from hyf_core.errors import ( 9 CapabilityResult, 10 capability_not_implemented_error, 11 failed_capability, 12 invalid_input_error, 13 successful_capability, 14 ) 15 from hyf_core.request_context import RequestContext 16 from hyf_application.farm_operation import execute_farm_update_interpret 17 from hyf_application.buyer_operation import ( 18 execute_buyer_request_interpret, 19 execute_buyer_request_match, 20 ) 21 22 23 @fieldwise_init 24 struct BusinessCapabilityDescriptor(Copyable, Movable): 25 var id: String 26 var deterministic_enabled: Bool 27 var implemented: Bool 28 var callable: Bool 29 var deterministic_backend: String 30 var assisted_available: Bool 31 var disabled_reason: String 32 33 34 def canonical_business_capabilities() -> List[BusinessCapabilityDescriptor]: 35 var capabilities = List[BusinessCapabilityDescriptor]() 36 capabilities.append( 37 BusinessCapabilityDescriptor( 38 id="query_rewrite", 39 deterministic_enabled=True, 40 implemented=True, 41 callable=True, 42 deterministic_backend="heuristic", 43 assisted_available=False, 44 disabled_reason="", 45 ) 46 ) 47 capabilities.append( 48 BusinessCapabilityDescriptor( 49 id="filter_extraction", 50 deterministic_enabled=False, 51 implemented=False, 52 callable=False, 53 deterministic_backend="", 54 assisted_available=False, 55 disabled_reason="deferred_bootstrap_capability", 56 ) 57 ) 58 capabilities.append( 59 BusinessCapabilityDescriptor( 60 id="semantic_rank", 61 deterministic_enabled=True, 62 implemented=True, 63 callable=True, 64 deterministic_backend="heuristic", 65 assisted_available=False, 66 disabled_reason="", 67 ) 68 ) 69 capabilities.append( 70 BusinessCapabilityDescriptor( 71 id="summarize_listing", 72 deterministic_enabled=False, 73 implemented=False, 74 callable=False, 75 deterministic_backend="", 76 assisted_available=False, 77 disabled_reason="deferred_bootstrap_capability", 78 ) 79 ) 80 capabilities.append( 81 BusinessCapabilityDescriptor( 82 id="summarize_farm", 83 deterministic_enabled=False, 84 implemented=False, 85 callable=False, 86 deterministic_backend="", 87 assisted_available=False, 88 disabled_reason="deferred_bootstrap_capability", 89 ) 90 ) 91 capabilities.append( 92 BusinessCapabilityDescriptor( 93 id="workflow_plan", 94 deterministic_enabled=False, 95 implemented=False, 96 callable=False, 97 deterministic_backend="", 98 assisted_available=False, 99 disabled_reason="deferred_bootstrap_capability", 100 ) 101 ) 102 capabilities.append( 103 BusinessCapabilityDescriptor( 104 id="explain_result", 105 deterministic_enabled=True, 106 implemented=True, 107 callable=True, 108 deterministic_backend="heuristic", 109 assisted_available=False, 110 disabled_reason="", 111 ) 112 ) 113 capabilities.append( 114 BusinessCapabilityDescriptor( 115 id="dedupe_cluster", 116 deterministic_enabled=False, 117 implemented=False, 118 callable=False, 119 deterministic_backend="", 120 assisted_available=False, 121 disabled_reason="deferred_bootstrap_capability", 122 ) 123 ) 124 return capabilities^ 125 126 127 def bootstrap_capability_count() -> Int: 128 return len(canonical_business_capabilities()) 129 130 131 def implemented_deterministic_capability_count() -> Int: 132 var implemented = 0 133 for capability in canonical_business_capabilities(): 134 if capability.deterministic_enabled and capability.implemented: 135 implemented += 1 136 return implemented 137 138 139 def deterministic_enabled_capabilities() -> List[String]: 140 var enabled = List[String]() 141 for capability in canonical_business_capabilities(): 142 if capability.deterministic_enabled: 143 enabled.append(String(capability.id)) 144 return enabled^ 145 146 147 def all_deterministic_capabilities_implemented() -> Bool: 148 return implemented_deterministic_capability_count() == len( 149 deterministic_enabled_capabilities() 150 ) 151 152 153 def deferred_capabilities() -> List[String]: 154 var disabled = List[String]() 155 for capability in canonical_business_capabilities(): 156 if not capability.deterministic_enabled: 157 disabled.append(String(capability.id)) 158 return disabled^ 159 160 161 def canonical_business_capability( 162 capability_id: String, 163 ) -> Optional[BusinessCapabilityDescriptor]: 164 for capability in canonical_business_capabilities(): 165 if capability.id == capability_id: 166 return Optional[BusinessCapabilityDescriptor](capability.copy()) 167 return Optional[BusinessCapabilityDescriptor](None) 168 169 170 def _dispatch_heuristic_registered_business_capability( 171 capability_id: String, input: Value, context: RequestContext 172 ) raises -> CapabilityResult: 173 if capability_id == "query_rewrite": 174 return execute_query_rewrite(input, context) 175 if capability_id == "semantic_rank": 176 return execute_semantic_rank(input, context) 177 if capability_id == "explain_result": 178 return execute_explain_result(input, context) 179 return failed_capability(capability_not_implemented_error(capability_id)) 180 181 182 def is_gated_operation(capability_id: String) -> Bool: 183 for descriptor in gated_operation_descriptors(): 184 if descriptor.id == capability_id: 185 return True 186 return False 187 188 189 def execute_gated_operation( 190 capability_id: String, input: Value 191 ) raises -> CapabilityResult: 192 try: 193 if capability_id == "farm_update.interpret": 194 return successful_capability(execute_farm_update_interpret(input)) 195 if capability_id == "buyer_request.interpret": 196 return successful_capability(execute_buyer_request_interpret(input)) 197 if capability_id == "buyer_request.match": 198 return successful_capability(execute_buyer_request_match(input)) 199 return failed_capability( 200 capability_not_implemented_error(capability_id) 201 ) 202 except e: 203 return failed_capability(invalid_input_error(String(e))) 204 205 206 def execute_registered_business_capability( 207 capability_id: String, input: Value, context: RequestContext 208 ) raises -> CapabilityResult: 209 var capability = canonical_business_capability(capability_id) 210 if not capability: 211 return failed_capability( 212 capability_not_implemented_error(capability_id) 213 ) 214 215 var descriptor = capability.value().copy() 216 if ( 217 not descriptor.deterministic_enabled 218 or not descriptor.implemented 219 or not descriptor.callable 220 ): 221 return failed_capability( 222 capability_not_implemented_error(capability_id) 223 ) 224 225 if descriptor.deterministic_backend == "heuristic": 226 return _dispatch_heuristic_registered_business_capability( 227 capability_id, input, context 228 ) 229 230 return failed_capability(capability_not_implemented_error(capability_id)) 231 232 233 @fieldwise_init 234 struct CapabilityExposure(Copyable, Movable): 235 var capability_id: String 236 var implementation_supported: Bool 237 var provider_configured: Bool 238 var assistance_permitted: Bool 239 var provider_ready: Bool 240 var exposed: Bool 241 242 243 def capability_assisted_supported(capability_id: String) -> Bool: 244 return capability_id == "query_rewrite" 245 246 247 def capability_exposure( 248 capability_id: String, 249 provider_configured: Bool, 250 assistance_permitted: Bool, 251 provider_ready: Bool, 252 ) -> CapabilityExposure: 253 var supported = capability_assisted_supported(capability_id) 254 return CapabilityExposure( 255 capability_id=String(capability_id), 256 implementation_supported=supported, 257 provider_configured=provider_configured, 258 assistance_permitted=assistance_permitted, 259 provider_ready=provider_ready, 260 exposed=( 261 supported 262 and provider_configured 263 and assistance_permitted 264 and provider_ready 265 ), 266 ) 267 268 269 @fieldwise_init 270 struct GatedOperationDescriptor(Copyable, Movable): 271 var id: String 272 var requires_assistance: Bool 273 var exposed: Bool 274 275 276 def gated_operation_descriptors() -> List[GatedOperationDescriptor]: 277 var descriptors = List[GatedOperationDescriptor]() 278 descriptors.append( 279 GatedOperationDescriptor( 280 id="farm_update.interpret", requires_assistance=False, exposed=False 281 ) 282 ) 283 descriptors.append( 284 GatedOperationDescriptor( 285 id="buyer_request.interpret", 286 requires_assistance=False, 287 exposed=False, 288 ) 289 ) 290 descriptors.append( 291 GatedOperationDescriptor( 292 id="buyer_request.match", requires_assistance=False, exposed=False 293 ) 294 ) 295 return descriptors^ 296 297 298 def gated_operation_is_exposed( 299 operation: String, exposure_enabled: Bool 300 ) -> Bool: 301 for descriptor in gated_operation_descriptors(): 302 if descriptor.id == operation: 303 return exposure_enabled 304 return False