* @brief Returns the metadata block for an fs.* tool, or empty if none matches. */
| 563 | * @brief Returns the metadata block for an fs.* tool, or empty if none matches. |
| 564 | */ |
| 565 | static QJsonObject fsToolDescription(const QString& name) |
| 566 | { |
| 567 | for (const auto& def : fsToolDefs()) { |
| 568 | if (def.name != name) |
| 569 | continue; |
| 570 | |
| 571 | QJsonObject desc; |
| 572 | desc[QStringLiteral("name")] = def.name; |
| 573 | desc[QStringLiteral("description")] = def.description; |
| 574 | desc[QStringLiteral("inputSchema")] = def.inputSchema; |
| 575 | return desc; |
| 576 | } |
| 577 | |
| 578 | return {}; |
| 579 | } |
| 580 | |
| 581 | /** |
| 582 | * @brief Runs blocking work on a worker thread; a main-thread reentrancy guard makes a |
no test coverage detected