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
85 absl::Status LearnPattern(const std::string& type,
86 const std::string& rom_hash,
87 const std::string& data, 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
111 context_data; // JSON encoded: description, goals, custom labels
112 int64_t last_accessed = 0;
113 };
114
118 absl::Status SaveProjectContext(const std::string& project_name,
119 const std::string& rom_hash,
120 const std::string& context);
121
125 std::optional<ProjectContext> GetProjectContext(
126 const std::string& project_name) const;
127
131 std::vector<ProjectContext> GetAllProjects() const;
132
133 // === Conversation Memory ===
134
136 std::string id;
137 std::string topic;
138 std::string summary;
139 std::vector<std::string> key_facts;
140 int64_t created_at = 0;
142 };
143
150 absl::Status StoreConversationSummary(
151 const std::string& topic, const std::string& summary,
152 const std::vector<std::string>& key_facts);
153
157 std::vector<ConversationMemory> SearchMemories(
158 const std::string& query) const;
159
163 std::vector<ConversationMemory> GetRecentMemories(int limit = 10) const;
164
165 // === Import/Export ===
166
170 absl::StatusOr<std::string> ExportToJSON() const;
171
175 absl::Status ImportFromJSON(const std::string& json_data);
176
180 absl::Status ClearAll();
181
182 // === Statistics ===
183
184 struct Stats {
189 int64_t first_learned_at = 0;
190 int64_t last_updated_at = 0;
191 };
192
193 Stats GetStats() const;
194
195 private:
196 std::filesystem::path data_dir_;
197 std::filesystem::path prefs_file_;
198 std::filesystem::path patterns_file_;
199 std::filesystem::path projects_file_;
200 std::filesystem::path memories_file_;
201
202 std::map<std::string, std::string> preferences_;
203 std::vector<ROMPattern> patterns_;
204 std::vector<ProjectContext> projects_;
205 std::vector<ConversationMemory> memories_;
206
207 bool initialized_ = false;
208
209 // Internal helpers
210 absl::Status LoadPreferences();
211 absl::Status LoadPatterns();
212 absl::Status LoadProjects();
213 absl::Status LoadMemories();
214
215 absl::Status SavePreferences();
216 absl::Status SavePatterns();
217 absl::Status SaveProjects();
218 absl::Status SaveMemories();
219
220 std::string GenerateID() const;
221};
222
223} // namespace agent
224} // namespace cli
225} // namespace yaze
226
227#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