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#ifdef YAZE_WITH_JSON
14#include "nlohmann/json.hpp"
15#endif
16
17namespace yaze {
18namespace cli {
19namespace agent {
20
32 public:
34 explicit LearnedKnowledgeService(const std::filesystem::path& data_dir);
35
36 // Initialize the service and load existing data
37 absl::Status Initialize();
38
39 // Save all data to disk
40 absl::Status SaveAll();
41
42 // === Preference Management ===
43
49 absl::Status SetPreference(const std::string& key, const std::string& value);
50
56 std::optional<std::string> GetPreference(const std::string& key) const;
57
61 std::map<std::string, std::string> GetAllPreferences() const;
62
66 absl::Status RemovePreference(const std::string& key);
67
68 // === ROM Pattern Learning ===
69
70 struct ROMPattern {
71 std::string pattern_type; // e.g., "sprite_location", "tile_usage"
72 std::string rom_hash;
73 std::string pattern_data; // JSON encoded
74 float confidence = 1.0f; // 0.0 to 1.0
75 int64_t learned_at = 0;
76 int access_count = 0;
77 };
78
85 absl::Status LearnPattern(const std::string& type,
86 const std::string& rom_hash,
87 const std::string& data,
88 float confidence = 1.0f);
89
96 std::vector<ROMPattern> QueryPatterns(const std::string& type,
97 const std::string& rom_hash = "") const;
98
102 absl::Status UpdatePatternConfidence(const std::string& type,
103 const std::string& rom_hash,
104 float new_confidence);
105
106 // === Project Context ===
107
109 std::string project_name;
110 std::string rom_hash;
111 std::string 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(const std::string& project_name) const;
126
130 std::vector<ProjectContext> GetAllProjects() const;
131
132 // === Conversation Memory ===
133
135 std::string id;
136 std::string topic;
137 std::string summary;
138 std::vector<std::string> key_facts;
139 int64_t created_at = 0;
141 };
142
149 absl::Status StoreConversationSummary(const std::string& topic,
150 const std::string& summary,
151 const std::vector<std::string>& key_facts);
152
156 std::vector<ConversationMemory> SearchMemories(const std::string& query) const;
157
161 std::vector<ConversationMemory> GetRecentMemories(int limit = 10) const;
162
163 // === Import/Export ===
164
168 absl::StatusOr<std::string> ExportToJSON() const;
169
173 absl::Status ImportFromJSON(const std::string& json_data);
174
178 absl::Status ClearAll();
179
180 // === Statistics ===
181
182 struct Stats {
187 int64_t first_learned_at = 0;
188 int64_t last_updated_at = 0;
189 };
190
191 Stats GetStats() const;
192
193 private:
194 std::filesystem::path data_dir_;
195 std::filesystem::path prefs_file_;
196 std::filesystem::path patterns_file_;
197 std::filesystem::path projects_file_;
198 std::filesystem::path memories_file_;
199
200 std::map<std::string, std::string> preferences_;
201 std::vector<ROMPattern> patterns_;
202 std::vector<ProjectContext> projects_;
203 std::vector<ConversationMemory> memories_;
204
205 bool initialized_ = false;
206
207 // Internal helpers
208 absl::Status LoadPreferences();
209 absl::Status LoadPatterns();
210 absl::Status LoadProjects();
211 absl::Status LoadMemories();
212
213 absl::Status SavePreferences();
214 absl::Status SavePatterns();
215 absl::Status SaveProjects();
216 absl::Status SaveMemories();
217
218 std::string GenerateID() const;
219};
220
221} // namespace agent
222} // namespace cli
223} // namespace yaze
224
225#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.