/*
* Copyright (c) Huawei Technologies Co., Ltd. 2024-2025. All rights reserved.
*/
package magic.rag
import magic.core.rag.*
/**
* The wrapper of a retriever used when a retriever is set by the DSL.
* like @agent[rag: {source: FooRetriever(), mode: "dynamic"}]
*/
class RetrieverWrapper <: Retriever {
private let retriever: Retriever
private var _mode: RetrieverMode
private let _description: String
init(retriever: Retriever, mode: Option<RetrieverMode>, description: Option<String>) {
this.retriever = retriever
_mode = mode ?? retriever.mode
_description = description ?? retriever.description
}
override public prop description: String {
get() { _description }
}
override public mut prop mode: RetrieverMode {
get() { _mode }
set(m) { _mode = m }
}
override public func search(query: String): Retrieval {
return this.retriever.search(query)
}
}