|
10 | 10 | #include "engine/framework/audio/chunking.h" |
11 | 11 | #include "engine/framework/audio/conversion.h" |
12 | 12 | #include "engine/framework/debug/trace.h" |
| 13 | +#include "engine/framework/io/json.h" |
13 | 14 | #include "engine/framework/runtime/registry.h" |
| 15 | +#include "engine/framework/runtime/session.h" |
14 | 16 |
|
15 | 17 | #include <algorithm> |
16 | 18 | #include <cmath> |
@@ -141,7 +143,7 @@ void print_task_list_help() { |
141 | 143 | << " --mode streaming uses the selected model's default streaming policy\n" |
142 | 144 | << " Utility:\n" |
143 | 145 | << " --inspect\n" |
144 | | - << " --list-loaders\n" |
| 146 | + << " --list-loaders [--json]\n" |
145 | 147 | << "\n" |
146 | 148 | << " Tasks:\n" |
147 | 149 | << " vad voice activity detection\n" |
@@ -564,10 +566,67 @@ int audiocpp_cli_main(int argc, char ** argv) { |
564 | 566 | return 0; |
565 | 567 | } |
566 | 568 | if (has_arg(argc, argv, "--list-loaders")) { |
567 | | - const auto families = registry.families(); |
568 | | - std::cout << "registered_loaders=" << registry.size() << "\n"; |
569 | | - for (const auto & family : families) { |
570 | | - std::cout << family << "\n"; |
| 569 | + const auto advertisements = registry.advertise_loaders(); |
| 570 | + if (has_arg(argc, argv, "--json")) { |
| 571 | + engine::io::json::Value::Object loaders_object; |
| 572 | + for (const auto & row : advertisements) { |
| 573 | + engine::io::json::Value::Object tasks_object; |
| 574 | + for (const auto & task_cap : row.capabilities.supported_tasks) { |
| 575 | + engine::io::json::Value::Array modes; |
| 576 | + for (const auto mode : task_cap.modes) { |
| 577 | + modes.push_back(engine::io::json::Value::make_string(engine::runtime::to_string(mode))); |
| 578 | + } |
| 579 | + tasks_object.emplace( |
| 580 | + engine::runtime::to_string(task_cap.task), |
| 581 | + engine::io::json::Value::make_array(std::move(modes))); |
| 582 | + } |
| 583 | + engine::io::json::Value::Array endpoints; |
| 584 | + for (const auto & endpoint : row.api_endpoints) { |
| 585 | + endpoints.push_back(engine::io::json::Value::make_string(endpoint)); |
| 586 | + } |
| 587 | + engine::io::json::Value::Object loader_object; |
| 588 | + loader_object.emplace("tasks", engine::io::json::Value::make_object(std::move(tasks_object))); |
| 589 | + loader_object.emplace( |
| 590 | + "instructions_policy", |
| 591 | + engine::io::json::Value::make_string(row.instructions_policy)); |
| 592 | + loader_object.emplace( |
| 593 | + "api_endpoints", |
| 594 | + engine::io::json::Value::make_array(std::move(endpoints))); |
| 595 | + loaders_object.emplace( |
| 596 | + row.family, |
| 597 | + engine::io::json::Value::make_object(std::move(loader_object))); |
| 598 | + } |
| 599 | + engine::io::json::Value::Object root; |
| 600 | + root.emplace("schema_version", engine::io::json::Value::make_number(1)); |
| 601 | + root.emplace("loaders", engine::io::json::Value::make_object(std::move(loaders_object))); |
| 602 | + std::cout << engine::io::json::stringify(engine::io::json::Value::make_object(std::move(root))) |
| 603 | + << "\n"; |
| 604 | + } else { |
| 605 | + std::cout << "registered_loaders=" << advertisements.size() << "\n"; |
| 606 | + for (const auto & row : advertisements) { |
| 607 | + std::cout << row.family; |
| 608 | + if (!row.capabilities.supported_tasks.empty()) { |
| 609 | + std::cout << ":"; |
| 610 | + for (size_t i = 0; i < row.capabilities.supported_tasks.size(); ++i) { |
| 611 | + const auto & task_cap = row.capabilities.supported_tasks[i]; |
| 612 | + if (i > 0) { |
| 613 | + std::cout << ","; |
| 614 | + } |
| 615 | + std::cout << " " << engine::runtime::to_string(task_cap.task); |
| 616 | + if (!task_cap.modes.empty()) { |
| 617 | + std::cout << " ("; |
| 618 | + for (size_t m = 0; m < task_cap.modes.size(); ++m) { |
| 619 | + if (m > 0) { |
| 620 | + std::cout << "|"; |
| 621 | + } |
| 622 | + std::cout << engine::runtime::to_string(task_cap.modes[m]); |
| 623 | + } |
| 624 | + std::cout << ")"; |
| 625 | + } |
| 626 | + } |
| 627 | + } |
| 628 | + std::cout << "\n"; |
| 629 | + } |
571 | 630 | } |
572 | 631 | return 0; |
573 | 632 | } |
|
0 commit comments