yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
learned_knowledge_service.h
Go to the documentation of this file.
1#ifndef YAZE_CLI_SERVICE_AGENT_LEARNED_KNOWLEDGE_SERVICE_H_
2#define YAZE_CLI_SERVICE_AGENT_LEARNED_KNOWLEDGE_SERVICE_H_
3
4#include <filesystem>
5#include <map>
6#include <optional>
7#include <string>
8#include <vector>
9
10#include "absl/status/status.h"
11#include "absl/status/statusor.h"
12
13// Note: This header is JSON-independent for broader compatibility
14// JSON is only used in the .cc implementation file
15
16namespace yaze {
17namespace cli {
18namespace agent {
19
31 public:
33 explicit LearnedKnowledgeService(const std::filesystem::path& data_dir);
34
35 // Initialize the service and load existing data
36 absl::Status Initialize();
37
38 // Save all data to disk
39 absl::Status SaveAll();
40
41 // === Preference Management ===
42
48 absl::Status SetPreference(const std::string& key, const std::string& value);
49
55 std::optional<std::string> GetPreference(const std::string& key) const;
56
60 std::map<std::string, std::string> GetAllPreferences() const;
61
65 absl::Status RemovePreference(const std::string& key);
66
67 // === ROM Pattern Learning ===
68
69 struct ROMPattern {
70 std::string pattern_type; // e.g., "sprite_location", "tile_usage"
71 std::string rom_hash;
72 std::string pattern_data; // JSON encoded
73 float confidence = 1.0f; // 0.0 to 1.0
74 int64_t learned_at = 0;
75 int access_count = 0;
76 };
77
84 absl::Status LearnPattern(const std::string& type,
85 const std::string& rom_hash,
86 const std::string& data,
87 float confidence = 1.0f);
88
95 std::vector<ROMPattern> QueryPatterns(const std::string& type,
96 const std::string& rom_hash = "") const;
97
101 absl::Status UpdatePatternConfidence(const std::string& type,
102 const std::string& rom_hash,
103 float new_confidence);
104
105 // === Project Context ===
106
108 std::string project_name;
109 std::string rom_hash;
110 std::string context_data; // JSON encoded: description, goals, custom labels
111 int64_t last_accessed = 0;
112 };
113
117 absl::Status SaveProjectContext(const std::string& project_name,
118 const std::string& rom_hash,
119 const std::string& context);
120
124 std::optional<ProjectContext> GetProjectContext(const std::string& project_name) const;
125
129 std::vector<ProjectContext> GetAllProjects() const;
130
131 // === Conversation Memory ===
132
134 std::string id;
135 std::string topic;
136 std::string summary;
137 std::vector<std::string> key_facts;
138 int64_t created_at = 0;
140 };
141
148 absl::Status StoreConversationSummary(const std::string& topic,
149 const std::string& summary,
150 const std::vector<std::string>& key_facts);
151
155 std::vector<ConversationMemory> SearchMemories(const std::string& query) const;
156
160 std::vector<ConversationMemory> GetRecentMemories(int limit = 10) const;
161
162 // === Import/Export ===
163
167 absl::StatusOr<std::string> ExportToJSON() const;
168
172 absl::Status ImportFromJSON(const std::string& json_data);
173
177 absl::Status ClearAll();
178
179 // === Statistics ===
180
181 struct Stats {
186 int64_t first_learned_at = 0;
187 int64_t last_updated_at = 0;
188 };
189
190 Stats GetStats() const;
191
192 private:
193 std::filesystem::path data_dir_;
194 std::filesystem::path prefs_file_;
195 std::filesystem::path patterns_file_;
196 std::filesystem::path projects_file_;
197 std::filesystem::path memories_file_;
198
199 std::map<std::string, std::string> preferences_;
200 std::vector<ROMPattern> patterns_;
201 std::vector<ProjectContext> projects_;
202 std::vector<ConversationMemory> memories_;
203
204 bool initialized_ = false;
205
206 // Internal helpers
207 absl::Status LoadPreferences();
208 absl::Status LoadPatterns();
209 absl::Status LoadProjects();
210 absl::Status LoadMemories();
211
212 absl::Status SavePreferences();
213 absl::Status SavePatterns();
214 absl::Status SaveProjects();
215 absl::Status SaveMemories();
216
217 std::string GenerateID() const;
218};
219
220} // namespace agent
221} // namespace cli
222} // namespace yaze
223
224#endif // YAZE_CLI_SERVICE_AGENT_LEARNED_KNOWLEDGE_SERVICE_H_
Manages persistent learned information across agent sessions.
std::optional< std::string > GetPreference(const std::string &key) const
absl::Status StoreConversationSummary(const std::string &topic, const std::string &summary, const std::vector< std::string > &key_facts)
std::vector< ProjectContext > GetAllProjects() const
std::vector< ConversationMemory > GetRecentMemories(int limit=10) const
absl::Status RemovePreference(const std::string &key)
std::vector< ConversationMemory > SearchMemories(const std::string &query) const
std::vector< ROMPattern > QueryPatterns(const std::string &type, const std::string &rom_hash="") const
absl::Status ImportFromJSON(const std::string &json_data)
absl::Status UpdatePatternConfidence(const std::string &type, const std::string &rom_hash, float new_confidence)
std::map< std::string, std::string > preferences_
std::optional< ProjectContext > GetProjectContext(const std::string &project_name) const
absl::Status SetPreference(const std::string &key, const std::string &value)
absl::StatusOr< std::string > ExportToJSON() const
absl::Status SaveProjectContext(const std::string &project_name, const std::string &rom_hash, const std::string &context)
absl::Status LearnPattern(const std::string &type, const std::string &rom_hash, const std::string &data, float confidence=1.0f)
std::map< std::string, std::string > GetAllPreferences() const
Main namespace for the application.
Definition controller.cc:20