Restcontroller - Source Excerpt 09
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/spiralist-workspace/includes/Http/RestController.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/spiralist-workspace/includes/Http/RestController.php
'category' => trim((string) $request->get_param('category')) !== ''
? PromptCategoryRegistry::normalize_category((string) $request->get_param('category'))
: '',
'subcategory' => sanitize_text_field((string) $request->get_param('subcategory')),
'publication_lane' => trim((string) ($request->get_param('publication_lane') ?: $request->get_param('lane'))) !== ''
? PromptMetaRegistry::normalize_publication_lane((string) ($request->get_param('publication_lane') ?: $request->get_param('lane')))
: '',
'provenance' => trim((string) $request->get_param('provenance')) !== ''
? PromptMetaRegistry::normalize_provenance((string) $request->get_param('provenance'))
: '',
'moderation_status' => trim((string) $request->get_param('moderation_status')) !== ''
? PromptMetaRegistry::normalize_moderation_status((string) $request->get_param('moderation_status'))
: '',
'risk' => trim((string) $request->get_param('risk')) !== ''
? (PromptMetaRegistry::normalize_risk_labels([(string) $request->get_param('risk')])[0] ?? '')
: '',
'function' => trim((string) $request->get_param('function')) !== ''
? (PromptMetaRegistry::normalize_function_tags([(string) $request->get_param('function')])[0] ?? '')
: '',
'level' => trim((string) $request->get_param('level')) !== ''
? PromptMetaRegistry::normalize_maturity_level((string) $request->get_param('level'))
: '',
];
}
/**
* Returns whether a prompt matches REST filters.
*
* @param array<string,string> $filters
*/
private function matches_prompt_filters(array $prompt, array $filters): bool
{
if (($filters['intent'] ?? '') !== '' && !PromptIntentRegistry::matches_prompt_intent($prompt, (string) $filters['intent'])) {
return false;
}
if (($filters['category'] ?? '') !== '' && (string) ($prompt['category'] ?? '') !== (string) $filters['category']) {
return false;
}
if (($filters['subcategory'] ?? '') !== '' && (string) ($prompt['subcategory'] ?? '') !== (string) $filters['subcategory']) {
return false;
}
if (($filters['publication_lane'] ?? '') !== '' && (string) ($prompt['publication_lane'] ?? '') !== (string) $filters['publication_lane']) {
return false;
}
if (($filters['provenance'] ?? '') !== '' && (string) ($prompt['provenance'] ?? '') !== (string) $filters['provenance']) {
return false;
}
if (($filters['moderation_status'] ?? '') !== '' && (string) ($prompt['moderation_status'] ?? '') !== (string) $filters['moderation_status']) {
return false;
}
if (($filters['risk'] ?? '') !== '' && !in_array((string) $filters['risk'], (array) ($prompt['risk_labels'] ?? []), true)) {
return false;
}
if (($filters['function'] ?? '') !== '' && !in_array((string) $filters['function'], (array) ($prompt['function_tags'] ?? []), true)) {
return false;
}
if (($filters['level'] ?? '') !== '' && (string) ($prompt['maturity_level'] ?? '') !== (string) $filters['level']) {
return false;
}
return true;
}
/**
* Tries to sync managed filesystem prompts before returning an empty public inventory.
*/
private function maybe_sync_system_prompts(): void
{
if (!function_exists('spiralist_workspace')) {
return;
}
$plugin = spiralist_workspace();
if (!is_object($plugin) || !method_exists($plugin, 'boot') || !method_exists($plugin, 'system_prompts')) {
return;
}
$plugin->boot();
$plugin->system_prompts()->maybe_sync();
}
}