| @@ -240,9 +240,9 @@ | ||
| 240 | 240 | wp_register_ability( |
| 241 | 241 | 'desktop-mode/search-comments', |
| 242 | 242 | array( |
| 243 | 243 | 'label' => __( 'Search comments', 'desktop-mode' ), |
| 244 | - 'description' => 'Keyword-searches approved WordPress comments across ALL posts by their text (WordPress native search). Use this when the user remembers something a reader said but does not know which post it was on. Pass the distinctive words from the comment as `query`. Returns up to 10 matching comments with an excerpt, parent post title, and URLs. If has_more is true, call again with the next offset.', | |
| 244 | + 'description' => 'Keyword-searches approved WordPress comments by their text (WordPress native search), across all posts the requesting user is allowed to read — comments on private, draft, or password-protected posts the user cannot access are excluded. Use this when the user remembers something a reader said but does not know which post it was on. Pass the distinctive words from the comment as `query`. Returns up to 10 matching comments with an excerpt, parent post title, and URLs. If has_more is true, call again with the next offset.', | |
| 245 | 245 | 'category' => OPENSTATION_AI_ABILITY_CATEGORY, |
| 246 | 246 | 'input_schema' => $query_offset_input, |
| 247 | 247 | 'output_schema' => $search_output, |
| 248 | 248 | 'execute_callback' => static function ( $input ) { |
| @@ -256,9 +256,9 @@ | ||
| 256 | 256 | wp_register_ability( |
| 257 | 257 | 'desktop-mode/search-comments-by-post', |
| 258 | 258 | array( |
| 259 | 259 | 'label' => __( 'Search comments on a post', 'desktop-mode' ), |
| 260 | - 'description' => 'Keyword-searches approved comments on a SPECIFIC post by its WordPress ID. Use this when you have already identified a post (via search-posts) and the user\'s query also mentions something a reader said on that post — e.g. "I remember a comment on my Málaga post asking about the Alcazaba at night." Call search-posts first to find the post ID, then call this tool with that ID and the distinctive words as `query`. Much more precise than search-comments when the parent post is known. If has_more is true, call again with the next offset.', | |
| 260 | + 'description' => 'Keyword-searches approved comments on a SPECIFIC post by its WordPress ID (the post must be readable by the requesting user; an unreadable or nonexistent post returns an empty result). Use this when you have already identified a post (via search-posts) and the user\'s query also mentions something a reader said on that post — e.g. "I remember a comment on my Málaga post asking about the Alcazaba at night." Call search-posts first to find the post ID, then call this tool with that ID and the distinctive words as `query`. Much more precise than search-comments when the parent post is known. If has_more is true, call again with the next offset.', | |
| 261 | 261 | 'category' => OPENSTATION_AI_ABILITY_CATEGORY, |
| 262 | 262 | 'input_schema' => array( |
| 263 | 263 | 'type' => 'object', |
| 264 | 264 | 'additionalProperties' => false, |
| @@ -399,11 +399,14 @@ | ||
| 399 | 399 | /** |
| 400 | 400 | * Registers the comment-spam analysis ability. |
| 401 | 401 | * |
| 402 | 402 | * Not offered to the model during a search turn (see |
| 403 | - * {@see openstation_ai_search_ability_names()}); the moderation pipeline | |
| 404 | - * resolves and executes it directly ({@see openstation_ai_analyze_comment_now()} | |
| 405 | - * runs through it). Exposed in the abilities catalog for observability + reuse. | |
| 403 | + * {@see openstation_ai_search_ability_names()}) — a search turn can be driven | |
| 404 | + * by attacker-controlled comment text, and this one spends provider tokens. | |
| 405 | + * It is an on-demand ability: a caller with `moderate_comments` runs it for one | |
| 406 | + * comment and gets the verdict back. Automatic scoring on comment save was | |
| 407 | + * removed (`docs/migration-comments-ai-scoring.md`), so nothing in the plugin | |
| 408 | + * invokes it on its own. | |
| 406 | 409 | * |
| 407 | 410 | * @return void |
| 408 | 411 | */ |
| 409 | 412 | function openstation_ai_register_comment_analysis_ability() { |
| @@ -410,9 +413,9 @@ | ||
| 410 | 413 | wp_register_ability( |
| 411 | 414 | 'desktop-mode/analyze-comment', |
| 412 | 415 | array( |
| 413 | 416 | 'label' => __( 'Analyze comment for spam', 'desktop-mode' ), |
| 414 | - 'description' => 'Runs the AI spam/harm analysis for a single comment and returns its structured verdict ({ topic, ai_summary, harmful, spam }). Used by comment moderation to score incoming comments.', | |
| 417 | + 'description' => 'Runs the AI spam/harm analysis for a single comment and returns its structured verdict ({ topic, ai_summary, harmful, spam }). On-demand only: nothing in the plugin runs it automatically.', | |
| 415 | 418 | 'category' => OPENSTATION_AI_ABILITY_CATEGORY, |
| 416 | 419 | 'input_schema' => array( |
| 417 | 420 | 'type' => 'object', |
| 418 | 421 | 'additionalProperties' => false, |