[docs]defdiscover_toolkits(self,create_tools:bool=True)->list[ComponentInfo]:"""Discover toolkits (collections of tools)."""toolkits_path=(self.haive_root/"packages"/"haive-tools"/"src"/"haive"/"tools"/"toolkits")iftoolkits_path.exists():returnself.discover_from_directory(toolkits_path,"haive.tools.toolkits",create_tools=create_tools)return[]
[docs]defdiscover_retrievers(self,create_tools:bool=True)->list[ComponentInfo]:"""Discover retrievers from engine package."""retriever_path=(self.haive_root/"packages"/"haive-core"/"src"/"haive"/"core"/"engine"/"retriever")components=[]ifretriever_path.exists():components.extend(self.discover_from_directory(retriever_path,"haive.core.engine.retriever",create_tools=create_tools,))# Also check for retrievers in other engine modulesengine_path=(self.haive_root/"packages"/"haive-core"/"src"/"haive"/"core"/"engine")ifengine_path.exists():all_engine_components=self.discover_from_directory(engine_path,"haive.core.engine",create_tools=create_tools)# Filter for retrieverscomponents.extend([cforcinall_engine_componentsifc.component_type=="retriever"])returncomponents
[docs]defdiscover_vector_stores(self,create_tools:bool=True)->list[ComponentInfo]:"""Discover vector stores from engine package."""vectorstore_path=(self.haive_root/"packages"/"haive-core"/"src"/"haive"/"core"/"engine"/"vectorstore")components=[]ifvectorstore_path.exists():components.extend(self.discover_from_directory(vectorstore_path,"haive.core.engine.vectorstore",create_tools=create_tools,))# Also check for vector stores in other locationsengine_path=(self.haive_root/"packages"/"haive-core"/"src"/"haive"/"core"/"engine")ifengine_path.exists():all_engine_components=self.discover_from_directory(engine_path,"haive.core.engine",create_tools=create_tools)# Filter for vector storescomponents.extend([cforcinall_engine_componentsifc.component_type=="vector_store"])returncomponents
[docs]defdiscover_document_loaders(self,create_tools:bool=True)->list[ComponentInfo]:"""Discover document loaders."""loader_path=(self.haive_root/"packages"/"haive-core"/"src"/"haive"/"core"/"engine"/"document"/"loaders")components=[]ifloader_path.exists():components.extend(self.discover_from_directory(loader_path,"haive.core.engine.document.loaders",create_tools=create_tools,))# Also check haive-tools for document loaderstools_components=self.discover_individual_tools(create_tools)components.extend([cforcintools_componentsifc.component_type=="document_loader"])returncomponents
[docs]defdiscover_engines(self,create_tools:bool=True)->list[ComponentInfo]:"""Discover engines from haive-core package."""core_path=(self.haive_root/"packages"/"haive-core"/"src"/"haive"/"core")engine_path=core_path/"engine"ifengine_path.exists():returnself.discover_from_directory(engine_path,"haive.core.engine",create_tools=create_tools)return[]
[docs]defdiscover_all_categorized(self,create_tools:bool=True)->dict[str,list[ComponentInfo]]:"""Discover all components, properly categorized."""return{"individual_tools":self.discover_individual_tools(create_tools),"toolkits":self.discover_toolkits(create_tools),"retrievers":self.discover_retrievers(create_tools),"vector_stores":self.discover_vector_stores(create_tools),"document_loaders":self.discover_document_loaders(create_tools),"engines":self.discover_engines(create_tools),}
[docs]defsave_to_project_docs(self,components:list[ComponentInfo],subfolder:str="component_discovery")->dict[str,str]:"""Save components to project documentation."""returnself.doc_writer.save_to_project_docs(components,project_root=str(self.haive_root),subfolder=subfolder)