voice_audio_multi/include/engine/framework/model_spec/metadata.h
Fabio c36510c21e
Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
Initial import: audio.cpp with Orange Pi documentation
2026-11-04 19:05:22 +01:00

57 lines
1.8 KiB
C++

#pragma once
#include "engine/framework/runtime/model.h"
#include <optional>
#include <string>
#include <string_view>
#include <unordered_set>
#include <vector>
namespace engine::model_spec {
enum class ModelSpecValueType {
Bool,
Number,
String,
};
struct ModelDependencyCondition {
std::string scope;
std::string option_key;
ModelSpecValueType equals_type = ModelSpecValueType::String;
bool equals_bool = false;
double equals_number = 0.0;
std::string equals_string;
};
struct ModelDependency {
std::string kind;
std::string family;
std::string scope;
std::string option;
std::string option_key;
bool required = false;
std::vector<ModelDependencyCondition> required_when;
std::optional<std::string> path;
};
struct ModelContract {
runtime::ModelMetadata metadata;
runtime::CapabilitySet capabilities;
runtime::ModelCliInterface cli;
std::unordered_set<std::string> request_option_keys;
std::unordered_set<std::string> session_option_keys;
std::unordered_set<std::string> load_option_keys;
};
[[nodiscard]] std::optional<ModelContract> model_contract(std::string_view family);
// nullopt when only a legacy embedded spec exists, so a family migrating to spec-backed
// options can keep its pre-migration validation for older GGUFs.
[[nodiscard]] std::optional<ModelContract> find_model_contract(std::string_view family);
[[nodiscard]] std::optional<runtime::CapabilitySet> advertised_capabilities(std::string_view family);
[[nodiscard]] std::optional<runtime::ModelMetadata> model_metadata(std::string_view family);
[[nodiscard]] std::optional<runtime::ModelCliInterface> cli_interface(std::string_view family);
[[nodiscard]] std::vector<ModelDependency> dependencies(std::string_view family);
} // namespace engine::model_spec