diff --git a/source/cpp/ios/ai_features/OfflineAISystem.h b/source/cpp/ios/ai_features/OfflineAISystem.h index 91b03316..7dfc0726 100644 --- a/source/cpp/ios/ai_features/OfflineAISystem.h +++ b/source/cpp/ios/ai_features/OfflineAISystem.h @@ -191,6 +191,12 @@ class OfflineAISystem { */ std::unordered_map GetScriptTemplates() const; + /** + * @brief Get template cache + * @return Map of template names to templates + */ + std::unordered_map GetTemplateCache() const; + /** * @brief Generate response for a detection event * @param detectionType Detection type diff --git a/source/cpp/ios/ai_features/OfflineAISystem.mm b/source/cpp/ios/ai_features/OfflineAISystem.mm index 04c021b8..c4a23147 100644 --- a/source/cpp/ios/ai_features/OfflineAISystem.mm +++ b/source/cpp/ios/ai_features/OfflineAISystem.mm @@ -68,7 +68,7 @@ if (scriptGenInitialized) { m_scriptGeneratorModel = scriptGenerator.get(); - m_modelCache["script_generator"] = scriptGenerator; + m_modelCache["script_generator"] = scriptGenerator.get(); m_loadedModelNames.push_back("script_generator"); } else { std::cerr << "OfflineAISystem: Failed to initialize script generator model" << std::endl; @@ -82,7 +82,7 @@ if (vulnerabilityInitialized) { m_patternRecognitionModel = vulnerabilityDetector.get(); - m_modelCache["vulnerability_detector"] = vulnerabilityDetector; + m_modelCache["vulnerability_detector"] = vulnerabilityDetector.get(); m_loadedModelNames.push_back("vulnerability_detector"); } else { std::cerr << "OfflineAISystem: Failed to initialize vulnerability detector" << std::endl; @@ -368,6 +368,7 @@ std::regex varRegex("\\b([a-zA-Z][a-zA-Z0-9_]*)\\s*="); std::regex useRegex("\\b([a-zA-Z][a-zA-Z0-9_]*)\\b"); + // Define variable sets before using them std::set definedVars; std::set usedVars; std::set builtinVars = { @@ -405,7 +406,9 @@ // Find undefined variables std::vector undefinedVars; for (const auto& var : usedVars) { - if (definedVars.find(var) == definedVars.end()) { + // Check if this variable is defined + auto it = definedVars.find(var); + if (it == definedVars.end()) { undefinedVars.push_back(var); } } @@ -661,7 +664,8 @@ void* OfflineAISystem::GetModel(const std::string& modelName) const { auto it = m_modelCache.find(modelName); if (it != m_modelCache.end()) { - return it->second.get(); + // Direct access to pointer instead of using get() since we're storing raw pointers now + return it->second; } return nullptr; } @@ -871,11 +875,11 @@ local function getClosestPlayer() // Get script templates std::unordered_map OfflineAISystem::GetScriptTemplates() const { - return m_templateCache; + return m_scriptTemplates; } -// Get a list of script templates -std::unordered_map OfflineAISystem::GetScriptTemplates() const { +// Get template cache +std::unordered_map OfflineAISystem::GetTemplateCache() const { return m_templateCache; }