searchAssistants method
Search assistants by criteria
Implementation
Future<List<Assistant>> searchAssistants({
String? namePattern,
String? model,
List<String>? requiredTools,
Map<String, String>? metadataFilters,
}) async {
final response = await listAssistants();
var assistants = response.data;
// Filter by name pattern
if (namePattern != null) {
final regex = RegExp(namePattern, caseSensitive: false);
assistants = assistants
.where((a) => a.name != null && regex.hasMatch(a.name!))
.toList();
}
// Filter by model
if (model != null) {
assistants = assistants.where((a) => a.model == model).toList();
}
// Filter by required tools
if (requiredTools != null && requiredTools.isNotEmpty) {
assistants = assistants.where((a) {
final assistantTools = a.tools.map((t) => t.type.value).toSet();
return requiredTools.every((tool) => assistantTools.contains(tool));
}).toList();
}
// Filter by metadata
if (metadataFilters != null && metadataFilters.isNotEmpty) {
assistants = assistants.where((a) {
final metadata = a.metadata ?? <String, String>{};
return metadataFilters.entries
.every((filter) => metadata[filter.key] == filter.value);
}).toList();
}
return assistants;
}