package runner import ( "math" "strings" ) func stringFromMap(values map[string]any, key string) string { value, _ := values[key].(string) return strings.TrimSpace(value) } func stringFromAny(value any) string { switch typed := value.(type) { case string: return strings.TrimSpace(typed) case map[string]any: if text := stringFromAny(typed["url"]); text != "" { return text } if ref, ok := typed["assetRef"].(map[string]any); ok { return stringFromAny(ref["url"]) } } return "" } func boolFromMap(values map[string]any, key string) bool { value, _ := values[key].(bool) return value } func intFromPolicy(values map[string]any, key string) int { switch value := values[key].(type) { case int: return value case float64: return int(math.Round(value)) default: return 0 } } func floatFromAny(value any) float64 { switch typed := value.(type) { case int: return float64(typed) case int64: return float64(typed) case float64: return typed default: return 0 } }