| 927 | * ══════════════════════════════════════════════════════════════════ */ |
| 928 | |
| 929 | static char *call_tool_timed(const char *tool, double *ms, const char *args_fmt, ...) { |
| 930 | char args[2048]; |
| 931 | va_list ap; |
| 932 | va_start(ap, args_fmt); |
| 933 | vsnprintf(args, sizeof(args), args_fmt, ap); |
| 934 | va_end(ap); |
| 935 | double t0 = now_ms(); |
| 936 | char *resp = cbm_mcp_handle_tool(g_srv, tool, args); |
| 937 | *ms = now_ms() - t0; |
| 938 | return resp; |
| 939 | } |
| 940 | |
| 941 | /* Check if ALL results have a specific label (validates label filter works) */ |
| 942 | static int all_results_have_label(const char *resp, const char *label) { |
no test coverage detected