yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
service_factory_stub.cc
Go to the documentation of this file.
1#ifndef YAZE_AI_RUNTIME_AVAILABLE
2
3#include "absl/flags/declare.h"
4#include "absl/flags/flag.h"
5#include "absl/status/status.h"
6#include "absl/status/statusor.h"
7#include "absl/strings/ascii.h"
8#include "absl/strings/match.h"
11#include "rom/rom.h"
12
13ABSL_DECLARE_FLAG(std::string, ai_provider);
14ABSL_DECLARE_FLAG(std::string, ai_model);
15ABSL_DECLARE_FLAG(std::string, gemini_api_key);
16ABSL_DECLARE_FLAG(std::string, anthropic_api_key);
17ABSL_DECLARE_FLAG(std::string, ollama_host);
18ABSL_DECLARE_FLAG(std::string, openai_base_url);
19ABSL_DECLARE_FLAG(std::string, rom);
20
21namespace yaze::cli {
22
23namespace {
24
25bool IsLikelyOracleRomPath(::absl::string_view rom_path) {
26 if (rom_path.empty()) {
27 return false;
28 }
29 const std::string lowered = ::absl::AsciiStrToLower(std::string(rom_path));
30 return ::absl::StrContains(lowered, "oracle") ||
31 ::absl::StrContains(lowered, "oos");
32}
33
34} // namespace
35
36AIServiceConfig BuildAIServiceConfigFromFlags() {
37 AIServiceConfig config;
38 config.provider = ::absl::GetFlag(FLAGS_ai_provider);
39 config.model = ::absl::GetFlag(FLAGS_ai_model);
40 config.gemini_api_key = ::absl::GetFlag(FLAGS_gemini_api_key);
41 config.anthropic_api_key = ::absl::GetFlag(FLAGS_anthropic_api_key);
42 config.ollama_host = ::absl::GetFlag(FLAGS_ollama_host);
43 config.openai_base_url = ::absl::GetFlag(FLAGS_openai_base_url);
44 config.rom_path_hint = ::absl::GetFlag(FLAGS_rom);
45 return config;
46}
47
48AgentPromptProfile DetectPromptProfile(const AIServiceConfig& config) {
49 if (config.rom_context != nullptr &&
50 IsLikelyOracleRomPath(config.rom_context->filename())) {
52 }
53 return IsLikelyOracleRomPath(config.rom_path_hint)
56}
57
58std::vector<AIServiceConfig> DiscoverModelRegistryConfigs(
59 const AIServiceConfig& base_config) {
60 if (base_config.provider.empty() || base_config.provider == kProviderAuto) {
61 return {};
62 }
63 return {base_config};
64}
65
66std::unique_ptr<AIService> CreateAIService() {
67 return std::make_unique<MockAIService>();
68}
69
70std::unique_ptr<AIService> CreateAIService(const AIServiceConfig&) {
71 return std::make_unique<MockAIService>();
72}
73
74::absl::StatusOr<std::unique_ptr<AIService>> CreateAIServiceStrict(
75 const AIServiceConfig&) {
76 return ::absl::FailedPreconditionError(
77 "AI runtime features are disabled in this build");
78}
79
80} // namespace yaze::cli
81
82#endif // !YAZE_AI_RUNTIME_AVAILABLE
bool IsLikelyOracleRomPath(absl::string_view rom_path)
Namespace for the command line interface.
std::unique_ptr< AIService > CreateAIService()
AgentPromptProfile DetectPromptProfile(const AIServiceConfig &config)
absl::StatusOr< std::unique_ptr< AIService > > CreateAIServiceStrict(const AIServiceConfig &config)
constexpr char kProviderAuto[]
Definition provider_ids.h:6
AIServiceConfig BuildAIServiceConfigFromFlags()
std::vector< AIServiceConfig > DiscoverModelRegistryConfigs(const AIServiceConfig &base_config)
ABSL_DECLARE_FLAG(std::string, ai_provider)