voice_audio_multi/app/server/server_ui.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

89 lines
3.2 KiB
C++

#pragma once
#include "http.h"
#if defined(AUDIOCPP_HAS_NATIVE_MODEL_MANAGER)
#include "engine/framework/io/json.h"
#include "engine/framework/package_manager/manager.h"
#endif
#include <filesystem>
#include <functional>
#include <optional>
#include <string>
namespace minitts::server {
std::filesystem::path resolve_ui_model_path(
const std::filesystem::path &path,
const std::filesystem::path &request_base,
const std::filesystem::path &repository_root);
HttpResponse ui_path_status_response(
const std::string &body_text,
bool ui_management,
const std::filesystem::path &request_base,
const std::filesystem::path &repository_root);
HttpResponse ui_upload_response(
const HttpRequest &request,
bool enabled,
const std::function<std::filesystem::path(std::string_view)> &make_path);
HttpResponse ui_asset_response(bool ui_enabled);
HttpResponse ui_voice_preview_response(
const HttpRequest &request,
bool ui_enabled,
const std::optional<std::filesystem::path> &voice_dir);
#if defined(AUDIOCPP_HAS_NATIVE_MODEL_MANAGER)
class ModelInstaller;
struct UiModelInstallRequest {
std::string package_id;
std::string source_directory;
std::string source_file;
std::string output_file;
std::string variant;
bool overwrite = false;
};
UiModelInstallRequest parse_ui_model_install_request(const std::string &body_text);
std::string parse_ui_model_id(const std::string &body_text);
HttpResponse ui_model_install_response(
const UiModelInstallRequest &request,
ModelInstaller &installer);
HttpResponse ui_model_remove_response(
const std::string &package_id,
ModelInstaller &installer);
HttpResponse ui_model_install_stop_response(
const std::string &package_id,
ModelInstaller &installer);
HttpResponse ui_model_clean_partial_response(
const std::string &package_id,
ModelInstaller &installer);
HttpResponse ui_model_install_status_response(
const HttpRequest &request,
const ModelInstaller &installer);
HttpResponse ui_model_package_sizes_response(ModelInstaller &installer);
// POST /v1/models/load may name an installed package by "package_id" instead
// of "path". Sets package_id to the requested id, or leaves it empty for a
// path-based request; returns an error response for a malformed package_id.
std::optional<HttpResponse> ui_model_load_package_id(
const engine::io::json::Value &body,
std::string &package_id);
// Rewrites a package_id load into the path-based request the loader already
// takes, using the model-owned resolve_package_load for the path, family, load
// options and session options. Returns the error response instead when the
// package cannot be loaded by id.
std::optional<HttpResponse> resolve_ui_package_model_load(
const engine::io::json::Value &body,
const std::string &package_id,
const std::optional<engine::package_manager::PackageInfo> &info,
std::string &resolved_body);
HttpResponse ui_models_root_response(
const std::filesystem::path &models_root,
const std::filesystem::path &default_models_root);
HttpResponse ui_directory_browser_response(
const std::string &requested_path,
const std::filesystem::path &models_root,
const std::filesystem::path &request_base);
#endif
} // namespace minitts::server