Skip to content
wiki.fftac.org

Restcontroller - Source Excerpt 09

Back to Restcontroller

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();
    }
}