/**
 * Copyright 2022-2025 Theai, Inc. dba Inworld AI
 */

#pragma once

#include "Logging/LogMacros.h"
#include "Primitives/TextEmbedder/InworldTextEmbedding.h"

#include "InworldKnowledgeTypes.generated.h"

INWORLDRUNTIME_API DECLARE_LOG_CATEGORY_EXTERN(LogInworldKnowledge, Log, All);

/**
 * @enum EInworldKnowledgeSource
 * @brief Enumeration of knowledge data source types.
 */
UENUM(BlueprintType)
enum class EInworldKnowledgeSource : uint8
{
	/** Knowledge data from runtime text embeddings */
	EMBEDDING UMETA(DisplayName = "Runtime Embedding"),
	/** Knowledge data from data asset files */
	ASSET UMETA(DisplayName = "Data Asset")
};

namespace inworld
{
class RetrievalConfig;
/**
 * @brief Converts Unreal knowledge retrieval configuration to internal retrieval configuration.
 * @param In The Unreal knowledge retrieval configuration to convert
 * @param Out The internal retrieval configuration to populate
 */
void Convert(const FInworldRetrievalConfig& In, inworld::RetrievalConfig& Out);
}	 // namespace inworld
