alita-sdk 0.3.230__tar.gz → 0.3.232__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/PKG-INFO +1 -1
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/vectorstore.py +58 -174
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/elitea_base.py +38 -39
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/github/api_wrapper.py +9 -19
- alita_sdk-0.3.232/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +371 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk.egg-info/PKG-INFO +1 -1
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/pyproject.toml +1 -1
- alita_sdk-0.3.230/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -92
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/LICENSE +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/README.md +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/ado.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/bitbucket.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/confluence.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/jira.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/postman.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/service_now.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/slack.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/clients/client.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/assistant.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaDocLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/bitbucket/tools.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/confluence/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/slack/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/utils/content_parser.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk.egg-info/SOURCES.txt +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/setup.cfg +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.230 → alita_sdk-0.3.232}/tests/test_jira_analysis.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: alita_sdk
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.232
|
4
4
|
Summary: SDK for building langchain agents using resources from Alita
|
5
5
|
Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedjik@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
|
6
6
|
License-Expression: Apache-2.0
|
@@ -8,6 +8,7 @@ from pydantic import BaseModel, model_validator, Field
|
|
8
8
|
from ..langchain.tools.vector import VectorAdapter
|
9
9
|
from langchain_core.messages import HumanMessage
|
10
10
|
from alita_sdk.tools.elitea_base import BaseToolApiWrapper
|
11
|
+
from alita_sdk.tools.vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
|
11
12
|
from logging import getLogger
|
12
13
|
|
13
14
|
from ..utils.logging import dispatch_custom_event
|
@@ -141,11 +142,14 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
141
142
|
dataset: str = None
|
142
143
|
embedding: Any = None
|
143
144
|
vectorstore: Any = None
|
145
|
+
# Review usage of old adapter
|
144
146
|
vectoradapter: Any = None
|
145
147
|
pg_helper: Any = None
|
146
148
|
embeddings: Any = None
|
147
149
|
process_document_func: Optional[Callable] = None
|
148
|
-
|
150
|
+
# New adapter for vector database operations
|
151
|
+
vector_adapter: Any = None
|
152
|
+
|
149
153
|
@model_validator(mode='before')
|
150
154
|
@classmethod
|
151
155
|
def validate_toolkit(cls, values):
|
@@ -170,6 +174,8 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
170
174
|
embeddings=values['embeddings'],
|
171
175
|
quota_params=None,
|
172
176
|
)
|
177
|
+
# Initialize the new vector adapter
|
178
|
+
values['vector_adapter'] = VectorStoreAdapterFactory.create_adapter(values['vectorstore_type'])
|
173
179
|
logger.debug(f"Vectorstore wrapper initialized: {values}")
|
174
180
|
return values
|
175
181
|
|
@@ -196,52 +202,22 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
196
202
|
f"Remove collection '{self.dataset}'",
|
197
203
|
tool_name="_remove_collection"
|
198
204
|
)
|
199
|
-
|
200
|
-
from sqlalchemy.orm import Session
|
201
|
-
|
202
|
-
schema_name = self.vectorstore.collection_name
|
203
|
-
with Session(self.vectorstore.session_maker.bind) as session:
|
204
|
-
drop_schema_query = text(f"DROP SCHEMA IF EXISTS {schema_name} CASCADE;")
|
205
|
-
session.execute(drop_schema_query)
|
206
|
-
session.commit()
|
207
|
-
logger.info(f"Schema '{schema_name}' has been dropped.")
|
205
|
+
self.vector_adapter.remove_collection(self, self.dataset)
|
208
206
|
self._log_data(
|
209
207
|
f"Collection '{self.dataset}' has been removed. ",
|
210
208
|
tool_name="_remove_collection"
|
211
209
|
)
|
212
210
|
|
213
|
-
def _get_indexed_ids(self,
|
211
|
+
def _get_indexed_ids(self, collection_suffix: Optional[str] = '') -> List[str]:
|
214
212
|
"""Get all indexed document IDs from vectorstore"""
|
213
|
+
return self.vector_adapter.get_indexed_ids(self, collection_suffix)
|
215
214
|
|
216
|
-
|
217
|
-
|
218
|
-
return self._get_pgvector_indexed_ids(store)
|
219
|
-
else:
|
220
|
-
# Fall back to Chroma implementation
|
221
|
-
return self._get_chroma_indexed_ids(store)
|
222
|
-
|
223
|
-
def _get_pgvector_indexed_ids(self, store):
|
224
|
-
"""Get all indexed document IDs from PGVector"""
|
225
|
-
from sqlalchemy.orm import Session
|
226
|
-
|
227
|
-
try:
|
228
|
-
with Session(store.session_maker.bind) as session:
|
229
|
-
ids = session.query(store.EmbeddingStore.id).all()
|
230
|
-
return [str(id_tuple[0]) for id_tuple in ids]
|
231
|
-
except Exception as e:
|
232
|
-
logger.error(f"Failed to get indexed IDs from PGVector: {str(e)}")
|
233
|
-
return []
|
215
|
+
def list_collections(self) -> List[str]:
|
216
|
+
"""List all collections in the vectorstore."""
|
234
217
|
|
235
|
-
|
236
|
-
"""Get all indexed document IDs from Chroma"""
|
237
|
-
try:
|
238
|
-
data = store.get(include=[]) # Only get IDs, no metadata
|
239
|
-
return data.get('ids', [])
|
240
|
-
except Exception as e:
|
241
|
-
logger.error(f"Failed to get indexed IDs from Chroma: {str(e)}")
|
242
|
-
return []
|
218
|
+
return self.vector_adapter.list_collections(self)
|
243
219
|
|
244
|
-
def _clean_collection(self):
|
220
|
+
def _clean_collection(self, collection_suffix: str = ''):
|
245
221
|
"""
|
246
222
|
Clean the vectorstore collection by deleting all indexed data.
|
247
223
|
"""
|
@@ -249,135 +225,28 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
249
225
|
f"Cleaning collection '{self.dataset}'",
|
250
226
|
tool_name="_clean_collection"
|
251
227
|
)
|
252
|
-
|
253
|
-
# Collection itself remains available for future indexing.
|
254
|
-
self.vectoradapter.vectorstore.delete(ids=self._get_indexed_ids(self.vectoradapter.vectorstore))
|
255
|
-
|
228
|
+
self.vector_adapter.clean_collection(self, collection_suffix)
|
256
229
|
self._log_data(
|
257
230
|
f"Collection '{self.dataset}' has been cleaned. ",
|
258
231
|
tool_name="_clean_collection"
|
259
232
|
)
|
260
233
|
|
261
|
-
|
262
|
-
def _get_indexed_data(self, store):
|
234
|
+
def _get_indexed_data(self):
|
263
235
|
""" Get all indexed data from vectorstore for non-code content """
|
236
|
+
return self.vector_adapter.get_indexed_data(self)
|
264
237
|
|
265
|
-
|
266
|
-
if hasattr(store, 'session_maker') and hasattr(store, 'EmbeddingStore'):
|
267
|
-
return self._get_pgvector_indexed_data(store)
|
268
|
-
else:
|
269
|
-
# Fall back to original Chroma implementation
|
270
|
-
return self._get_chroma_indexed_data(store)
|
271
|
-
|
272
|
-
def _get_pgvector_indexed_data(self, store):
|
273
|
-
""" Get all indexed data from PGVector for non-code content """
|
274
|
-
from sqlalchemy.orm import Session
|
275
|
-
|
276
|
-
result = {}
|
277
|
-
try:
|
278
|
-
self._log_data("Retrieving already indexed data from PGVector vectorstore",
|
279
|
-
tool_name="index_documents")
|
280
|
-
|
281
|
-
with Session(store.session_maker.bind) as session:
|
282
|
-
docs = session.query(
|
283
|
-
store.EmbeddingStore.id,
|
284
|
-
store.EmbeddingStore.document,
|
285
|
-
store.EmbeddingStore.cmetadata
|
286
|
-
).all()
|
287
|
-
|
288
|
-
# Process the retrieved data
|
289
|
-
for doc in docs:
|
290
|
-
db_id = doc.id
|
291
|
-
meta = doc.cmetadata or {}
|
292
|
-
|
293
|
-
# Get document id from metadata
|
294
|
-
doc_id = str(meta.get('id', db_id))
|
295
|
-
dependent_docs = meta.get(IndexerKeywords.DEPENDENT_DOCS.value, [])
|
296
|
-
if dependent_docs:
|
297
|
-
dependent_docs = [d.strip() for d in dependent_docs.split(';') if d.strip()]
|
298
|
-
parent_id = meta.get(IndexerKeywords.PARENT.value, -1)
|
299
|
-
|
300
|
-
chunk_id = meta.get('chunk_id')
|
301
|
-
if doc_id in result and chunk_id:
|
302
|
-
# If document with the same id already saved, add db_id for current one as chunk
|
303
|
-
result[doc_id]['all_chunks'].append(db_id)
|
304
|
-
else:
|
305
|
-
result[doc_id] = {
|
306
|
-
'metadata': meta,
|
307
|
-
'id': db_id,
|
308
|
-
'all_chunks': [db_id],
|
309
|
-
IndexerKeywords.DEPENDENT_DOCS.value: dependent_docs,
|
310
|
-
IndexerKeywords.PARENT.value: parent_id
|
311
|
-
}
|
312
|
-
|
313
|
-
except Exception as e:
|
314
|
-
logger.error(f"Failed to get indexed data from PGVector: {str(e)}. Continuing with empty index.")
|
315
|
-
|
316
|
-
return result
|
317
|
-
|
318
|
-
def _get_chroma_indexed_data(self, store):
|
319
|
-
""" Get all indexed data from Chroma for non-code content """
|
320
|
-
result = {}
|
321
|
-
try:
|
322
|
-
self._log_data("Retrieving already indexed data from Chroma vectorstore",
|
323
|
-
tool_name="index_documents")
|
324
|
-
data = store.get(include=['metadatas'])
|
325
|
-
|
326
|
-
# Re-structure data to be more usable
|
327
|
-
for meta, db_id in zip(data['metadatas'], data['ids']):
|
328
|
-
# Get document id from metadata
|
329
|
-
doc_id = str(meta['id'])
|
330
|
-
dependent_docs = meta.get(IndexerKeywords.DEPENDENT_DOCS.value, [])
|
331
|
-
if dependent_docs:
|
332
|
-
dependent_docs = [d.strip() for d in dependent_docs.split(';') if d.strip()]
|
333
|
-
parent_id = meta.get(IndexerKeywords.PARENT.value, -1)
|
334
|
-
|
335
|
-
chunk_id = meta.get('chunk_id')
|
336
|
-
if doc_id in result and chunk_id:
|
337
|
-
# If document with the same id already saved, add db_id for current one as chunk
|
338
|
-
result[doc_id]['all_chunks'].append(db_id)
|
339
|
-
else:
|
340
|
-
result[doc_id] = {
|
341
|
-
'metadata': meta,
|
342
|
-
'id': db_id,
|
343
|
-
'all_chunks': [db_id],
|
344
|
-
IndexerKeywords.DEPENDENT_DOCS.value: dependent_docs,
|
345
|
-
IndexerKeywords.PARENT.value: parent_id
|
346
|
-
}
|
347
|
-
except Exception as e:
|
348
|
-
logger.error(f"Failed to get indexed data from Chroma: {str(e)}. Continuing with empty index.")
|
349
|
-
|
350
|
-
return result
|
351
|
-
|
352
|
-
def _get_code_indexed_data(self, store) -> Dict[str, Dict[str, Any]]:
|
238
|
+
def _get_code_indexed_data(self) -> Dict[str, Dict[str, Any]]:
|
353
239
|
""" Get all indexed data from vectorstore for code content """
|
240
|
+
return self.vector_adapter.get_code_indexed_data(self)
|
354
241
|
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
self._log_data("Retrieving already indexed code data from vectorstore",
|
359
|
-
tool_name="index_documents")
|
360
|
-
data = store.get(include=['metadatas'])
|
361
|
-
# re-structure data to be more usable
|
362
|
-
for meta, db_id in zip(data['metadatas'], data['ids']):
|
363
|
-
filename = meta['filename']
|
364
|
-
commit_hash = meta.get('commit_hash')
|
365
|
-
if filename not in result:
|
366
|
-
result[filename] = {
|
367
|
-
'commit_hashes': [],
|
368
|
-
'ids': []
|
369
|
-
}
|
370
|
-
if commit_hash is not None:
|
371
|
-
result[filename]['commit_hashes'].append(commit_hash)
|
372
|
-
result[filename]['ids'].append(db_id)
|
373
|
-
except Exception as e:
|
374
|
-
logger.error(f"Failed to get indexed code data from vectorstore: {str(e)}. Continuing with empty index.")
|
375
|
-
return result
|
242
|
+
def _add_to_collection(self, entry_id, new_collection_value):
|
243
|
+
"""Add a new collection name to the `collection` key in the `metadata` column."""
|
244
|
+
self.vector_adapter.add_to_collection(self, entry_id, new_collection_value)
|
376
245
|
|
377
246
|
def _reduce_duplicates(
|
378
247
|
self,
|
379
248
|
documents: Generator[Any, None, None],
|
380
|
-
|
249
|
+
collection_suffix: str,
|
381
250
|
get_indexed_data: Callable,
|
382
251
|
key_fn: Callable,
|
383
252
|
compare_fn: Callable,
|
@@ -386,7 +255,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
386
255
|
) -> List[Any]:
|
387
256
|
"""Generic duplicate reduction logic for documents."""
|
388
257
|
self._log_data(log_msg, tool_name="index_documents")
|
389
|
-
indexed_data = get_indexed_data(
|
258
|
+
indexed_data = get_indexed_data()
|
390
259
|
indexed_keys = set(indexed_data.keys())
|
391
260
|
if not indexed_keys:
|
392
261
|
self._log_data("Vectorstore is empty, indexing all incoming documents", tool_name="index_documents")
|
@@ -397,8 +266,15 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
397
266
|
|
398
267
|
for document in documents:
|
399
268
|
key = key_fn(document)
|
400
|
-
if key in indexed_keys:
|
269
|
+
if key in indexed_keys and collection_suffix == indexed_data[key]['metadata'].get('collection'):
|
401
270
|
if compare_fn(document, indexed_data[key]):
|
271
|
+
# Disabled addition of new collection to already indexed documents
|
272
|
+
# # check metadata.collection and update if needed
|
273
|
+
# for update_collection_id in remove_ids_fn(indexed_data, key):
|
274
|
+
# self._add_to_collection(
|
275
|
+
# update_collection_id,
|
276
|
+
# collection_suffix
|
277
|
+
# )
|
402
278
|
continue
|
403
279
|
final_docs.append(document)
|
404
280
|
docs_to_remove.update(remove_ids_fn(indexed_data, key))
|
@@ -410,14 +286,14 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
410
286
|
f"Removing {len(docs_to_remove)} documents from vectorstore that are already indexed with different updated_on.",
|
411
287
|
tool_name="index_documents"
|
412
288
|
)
|
413
|
-
|
289
|
+
self.vectorstore.delete(ids=list(docs_to_remove))
|
414
290
|
|
415
291
|
return final_docs
|
416
292
|
|
417
|
-
def _reduce_non_code_duplicates(self, documents: Generator[Any, None, None],
|
293
|
+
def _reduce_non_code_duplicates(self, documents: Generator[Any, None, None], collection_suffix: str) -> List[Any]:
|
418
294
|
return self._reduce_duplicates(
|
419
295
|
documents,
|
420
|
-
|
296
|
+
collection_suffix,
|
421
297
|
self._get_indexed_data,
|
422
298
|
lambda doc: doc.metadata.get('id'),
|
423
299
|
lambda doc, idx: (
|
@@ -434,10 +310,10 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
434
310
|
log_msg="Verification of documents to index started"
|
435
311
|
)
|
436
312
|
|
437
|
-
def _reduce_code_duplicates(self, documents: Generator[Any, None, None],
|
313
|
+
def _reduce_code_duplicates(self, documents: Generator[Any, None, None], collection_suffix: str) -> List[Any]:
|
438
314
|
return self._reduce_duplicates(
|
439
315
|
documents,
|
440
|
-
|
316
|
+
collection_suffix,
|
441
317
|
self._get_code_indexed_data,
|
442
318
|
lambda doc: doc.metadata.get('filename'),
|
443
319
|
lambda doc, idx: (
|
@@ -449,7 +325,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
449
325
|
log_msg="Verification of code documents to index started"
|
450
326
|
)
|
451
327
|
|
452
|
-
def index_documents(self, documents: Generator[Document, None, None], progress_step: int = 20, clean_index: bool = True, is_code: bool = False):
|
328
|
+
def index_documents(self, documents: Generator[Document, None, None], collection_suffix: str, progress_step: int = 20, clean_index: bool = True, is_code: bool = False):
|
453
329
|
""" Index documents in the vectorstore.
|
454
330
|
|
455
331
|
Args:
|
@@ -465,7 +341,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
465
341
|
logger.info("Cleaning index before re-indexing all documents.")
|
466
342
|
self._log_data("Cleaning index before re-indexing all documents. Previous index will be removed", tool_name="index_documents")
|
467
343
|
try:
|
468
|
-
self._clean_collection()
|
344
|
+
self._clean_collection(collection_suffix)
|
469
345
|
self.vectoradapter.persist()
|
470
346
|
self.vectoradapter.vacuum()
|
471
347
|
self._log_data("Previous index has been removed",
|
@@ -476,8 +352,8 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
476
352
|
documents = list(documents)
|
477
353
|
else:
|
478
354
|
# remove duplicates based on metadata 'id' and 'updated_on' or 'commit_hash' fields
|
479
|
-
documents = self._reduce_code_duplicates(documents,
|
480
|
-
else self._reduce_non_code_duplicates(documents,
|
355
|
+
documents = self._reduce_code_duplicates(documents, collection_suffix) if is_code \
|
356
|
+
else self._reduce_non_code_duplicates(documents, collection_suffix)
|
481
357
|
|
482
358
|
if not documents or len(documents) == 0:
|
483
359
|
logger.info("No new documents to index after duplicate check.")
|
@@ -498,6 +374,15 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
498
374
|
logger.debug(self.vectoradapter)
|
499
375
|
|
500
376
|
documents = documents + list(dependent_docs_generator)
|
377
|
+
|
378
|
+
# if collection_suffix is provided, add it to metadata of each document
|
379
|
+
if collection_suffix:
|
380
|
+
for doc in documents:
|
381
|
+
if not doc.metadata.get('collection'):
|
382
|
+
doc.metadata['collection'] = collection_suffix
|
383
|
+
else:
|
384
|
+
doc.metadata['collection'] += f";{collection_suffix}"
|
385
|
+
|
501
386
|
total_docs = len(documents)
|
502
387
|
documents_count = 0
|
503
388
|
_documents = []
|
@@ -511,8 +396,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
511
396
|
try:
|
512
397
|
_documents.append(document)
|
513
398
|
if len(_documents) >= self.max_docs_per_add:
|
514
|
-
add_documents(vectorstore=self.
|
515
|
-
self.vectoradapter.persist()
|
399
|
+
add_documents(vectorstore=self.vectorstore, documents=_documents)
|
516
400
|
_documents = []
|
517
401
|
|
518
402
|
percent = math.floor((documents_count / total_docs) * 100)
|
@@ -526,8 +410,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
526
410
|
logger.error(f"Error: {format_exc()}")
|
527
411
|
return {"status": "error", "message": f"Error: {format_exc()}"}
|
528
412
|
if _documents:
|
529
|
-
add_documents(vectorstore=self.
|
530
|
-
self.vectoradapter.persist()
|
413
|
+
add_documents(vectorstore=self.vectorstore, documents=_documents)
|
531
414
|
return {"status": "ok", "message": f"successfully indexed {documents_count} documents"}
|
532
415
|
|
533
416
|
def search_documents(self, query:str, doctype: str = 'code',
|
@@ -562,7 +445,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
562
445
|
}
|
563
446
|
|
564
447
|
try:
|
565
|
-
document_items = self.
|
448
|
+
document_items = self.vectorstore.similarity_search_with_score(
|
566
449
|
query, filter=document_filter, k=search_top
|
567
450
|
)
|
568
451
|
# Add document results to unique docs
|
@@ -595,7 +478,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
595
478
|
}
|
596
479
|
|
597
480
|
try:
|
598
|
-
chunk_items = self.
|
481
|
+
chunk_items = self.vectorstore.similarity_search_with_score(
|
599
482
|
query, filter=chunk_filter, k=search_top
|
600
483
|
)
|
601
484
|
|
@@ -628,7 +511,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
628
511
|
}
|
629
512
|
|
630
513
|
try:
|
631
|
-
fetch_items = self.
|
514
|
+
fetch_items = self.vectorstore.similarity_search_with_score(
|
632
515
|
query, filter=doc_filter, k=1
|
633
516
|
)
|
634
517
|
if fetch_items:
|
@@ -642,7 +525,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
642
525
|
else:
|
643
526
|
# Default search behavior (unchanged)
|
644
527
|
max_search_results = 30 if search_top * 3 > 30 else search_top * 3
|
645
|
-
vector_items = self.
|
528
|
+
vector_items = self.vectorstore.similarity_search_with_score(
|
646
529
|
query, filter=filter, k=max_search_results
|
647
530
|
)
|
648
531
|
|
@@ -862,4 +745,5 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
862
745
|
"description": "Get summary of search results using stepback technique",
|
863
746
|
"args_schema": StepBackSearchDocumentsModel
|
864
747
|
}
|
865
|
-
]
|
748
|
+
]
|
749
|
+
|
@@ -30,13 +30,13 @@ LoaderSchema = create_model(
|
|
30
30
|
# Base Vector Store Schema Models
|
31
31
|
BaseIndexParams = create_model(
|
32
32
|
"BaseIndexParams",
|
33
|
-
collection_suffix=(
|
33
|
+
collection_suffix=(str, Field(description="Suffix for collection name (max 7 characters) used to separate datasets", min_length=1, max_length=7)),
|
34
34
|
vectorstore_type=(Optional[str], Field(description="Vectorstore type (Chroma, PGVector, Elastic, etc.)", default="PGVector")),
|
35
35
|
)
|
36
36
|
|
37
37
|
BaseCodeIndexParams = create_model(
|
38
38
|
"BaseCodeIndexParams",
|
39
|
-
collection_suffix=(
|
39
|
+
collection_suffix=(str, Field(description="Suffix for collection name (max 7 characters) used to separate datasets", min_length=1, max_length=7)),
|
40
40
|
vectorstore_type=(Optional[str], Field(description="Vectorstore type (Chroma, PGVector, Elastic, etc.)", default="PGVector")),
|
41
41
|
branch=(Optional[str], Field(description="Branch to index files from. Defaults to active branch if None.", default=None)),
|
42
42
|
whitelist=(Optional[List[str]], Field(description="File extensions or paths to include. Defaults to all files if None.", default=None)),
|
@@ -51,7 +51,9 @@ RemoveIndexParams = create_model(
|
|
51
51
|
BaseSearchParams = create_model(
|
52
52
|
"BaseSearchParams",
|
53
53
|
query=(str, Field(description="Query text to search in the index")),
|
54
|
-
collection_suffix=(Optional[str], Field(
|
54
|
+
collection_suffix=(Optional[str], Field(
|
55
|
+
description="Optional suffix for collection name (max 7 characters). Leave empty to search across all datasets",
|
56
|
+
default="", max_length=7)),
|
55
57
|
vectorstore_type=(Optional[str], Field(description="Vectorstore type (Chroma, PGVector, Elastic, etc.)", default="PGVector")),
|
56
58
|
filter=(Optional[dict | str], Field(
|
57
59
|
description="Filter to apply to the search results. Can be a dictionary or a JSON string.",
|
@@ -219,6 +221,7 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
|
|
219
221
|
embedding_model: Optional[str] = "HuggingFaceEmbeddings"
|
220
222
|
embedding_model_params: Optional[Dict[str, Any]] = {"model_name": "sentence-transformers/all-MiniLM-L6-v2"}
|
221
223
|
vectorstore_type: Optional[str] = "PGVector"
|
224
|
+
_vector_store: Optional[Any] = None
|
222
225
|
|
223
226
|
def __init__(self, **kwargs):
|
224
227
|
super().__init__(**kwargs)
|
@@ -297,9 +300,9 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
|
|
297
300
|
collection_suffix = kwargs.get("collection_suffix")
|
298
301
|
progress_step = kwargs.get("progress_step")
|
299
302
|
clean_index = kwargs.get("clean_index")
|
300
|
-
vs = self._init_vector_store(
|
303
|
+
vs = self._init_vector_store(embeddings=embedding)
|
301
304
|
#
|
302
|
-
return vs.index_documents(docs, progress_step=progress_step, clean_index=clean_index)
|
305
|
+
return vs.index_documents(docs, collection_suffix=collection_suffix, progress_step=progress_step, clean_index=clean_index)
|
303
306
|
|
304
307
|
def _process_documents(self, documents: List[Document]) -> Generator[Document, None, None]:
|
305
308
|
"""
|
@@ -333,48 +336,37 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
|
|
333
336
|
|
334
337
|
|
335
338
|
# TODO: init store once and re-use the instance
|
336
|
-
def _init_vector_store(self,
|
339
|
+
def _init_vector_store(self, embeddings: Optional[Any] = None):
|
337
340
|
"""Initializes the vector store wrapper with the provided parameters."""
|
338
341
|
try:
|
339
342
|
from alita_sdk.runtime.tools.vectorstore import VectorStoreWrapper
|
340
343
|
except ImportError:
|
341
344
|
from alita_sdk.runtime.tools.vectorstore import VectorStoreWrapper
|
342
345
|
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
return VectorStoreWrapper(
|
357
|
-
llm=self.llm,
|
358
|
-
vectorstore_type=self.vectorstore_type,
|
359
|
-
embedding_model=self.embedding_model,
|
360
|
-
embedding_model_params=self.embedding_model_params,
|
361
|
-
vectorstore_params=vectorstore_params,
|
362
|
-
embeddings=embeddings,
|
363
|
-
process_document_func=self._process_documents,
|
364
|
-
)
|
346
|
+
if not self._vector_store:
|
347
|
+
connection_string = self.connection_string.get_secret_value() if self.connection_string else None
|
348
|
+
vectorstore_params = self._adapter.get_vectorstore_params(self.collection_name, connection_string)
|
349
|
+
self._vector_store = VectorStoreWrapper(
|
350
|
+
llm=self.llm,
|
351
|
+
vectorstore_type=self.vectorstore_type,
|
352
|
+
embedding_model=self.embedding_model,
|
353
|
+
embedding_model_params=self.embedding_model_params,
|
354
|
+
vectorstore_params=vectorstore_params,
|
355
|
+
embeddings=embeddings,
|
356
|
+
process_document_func=self._process_documents,
|
357
|
+
)
|
358
|
+
return self._vector_store
|
365
359
|
|
366
360
|
def remove_index(self, collection_suffix: str = ""):
|
367
361
|
"""Cleans the indexed data in the collection."""
|
368
|
-
|
369
|
-
|
370
|
-
self._adapter.remove_collection(vectorstore_wrapper, collection_name)
|
371
|
-
return (f"Collection '{collection_name}' has been removed from the vector store.\n"
|
362
|
+
self._init_vector_store()._clean_collection(collection_suffix=collection_suffix)
|
363
|
+
return (f"Collection '{collection_suffix}' has been removed from the vector store.\n"
|
372
364
|
f"Available collections: {self.list_collections()}")
|
373
365
|
|
374
366
|
def list_collections(self):
|
375
367
|
"""Lists all collections in the vector store."""
|
376
368
|
vectorstore_wrapper = self._init_vector_store()
|
377
|
-
return
|
369
|
+
return vectorstore_wrapper.list_collections()
|
378
370
|
|
379
371
|
def search_index(self,
|
380
372
|
query: str,
|
@@ -386,7 +378,14 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
|
|
386
378
|
extended_search: Optional[List[str]] = None,
|
387
379
|
**kwargs):
|
388
380
|
""" Searches indexed documents in the vector store."""
|
389
|
-
vectorstore = self._init_vector_store(
|
381
|
+
vectorstore = self._init_vector_store()
|
382
|
+
# build filter on top of collection_suffix
|
383
|
+
filter = filter if isinstance(filter, dict) else json.loads(filter)
|
384
|
+
if collection_suffix:
|
385
|
+
filter.update({"collection": {
|
386
|
+
"$eq": collection_suffix.strip()
|
387
|
+
}})
|
388
|
+
|
390
389
|
found_docs = vectorstore.search_documents(
|
391
390
|
query,
|
392
391
|
doctype=self.doctype,
|
@@ -499,6 +498,8 @@ class BaseVectorStoreToolApiWrapper(BaseToolApiWrapper):
|
|
499
498
|
|
500
499
|
class BaseCodeToolApiWrapper(BaseVectorStoreToolApiWrapper):
|
501
500
|
|
501
|
+
doctype: Optional[str] = 'code'
|
502
|
+
|
502
503
|
def _get_files(self):
|
503
504
|
raise NotImplementedError("Subclasses should implement this method")
|
504
505
|
|
@@ -579,22 +580,20 @@ class BaseCodeToolApiWrapper(BaseVectorStoreToolApiWrapper):
|
|
579
580
|
return parse_code_files_for_db(file_content_generator())
|
580
581
|
|
581
582
|
def index_data(self,
|
583
|
+
collection_suffix: str,
|
582
584
|
branch: Optional[str] = None,
|
583
585
|
whitelist: Optional[List[str]] = None,
|
584
586
|
blacklist: Optional[List[str]] = None,
|
585
|
-
collection_suffix: str = "",
|
586
587
|
**kwargs) -> str:
|
587
588
|
"""Index repository files in the vector store using code parsing."""
|
588
589
|
|
589
|
-
|
590
|
-
|
591
590
|
documents = self.loader(
|
592
591
|
branch=branch,
|
593
592
|
whitelist=whitelist,
|
594
593
|
blacklist=blacklist
|
595
594
|
)
|
596
|
-
vectorstore = self._init_vector_store(
|
597
|
-
return vectorstore.index_documents(documents, clean_index=False, is_code=True)
|
595
|
+
vectorstore = self._init_vector_store()
|
596
|
+
return vectorstore.index_documents(documents, collection_suffix=collection_suffix, clean_index=False, is_code=True)
|
598
597
|
|
599
598
|
def _get_vector_search_tools(self):
|
600
599
|
"""
|
@@ -37,9 +37,9 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
|
|
37
37
|
Wrapper for GitHub API that integrates both REST and GraphQL functionality.
|
38
38
|
"""
|
39
39
|
# Authentication config
|
40
|
-
github_access_token: Optional[
|
41
|
-
github_username: Optional[
|
42
|
-
github_password: Optional[
|
40
|
+
github_access_token: Optional[SecretStr] = None
|
41
|
+
github_username: Optional[SecretStr] = None
|
42
|
+
github_password: Optional[SecretStr] = None
|
43
43
|
github_app_id: Optional[str] = None
|
44
44
|
github_app_private_key: Optional[str] = None
|
45
45
|
github_base_url: Optional[str] = None
|
@@ -49,19 +49,9 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
|
|
49
49
|
active_branch: Optional[str] = None
|
50
50
|
github_base_branch: Optional[str] = None
|
51
51
|
|
52
|
-
# Add LLM instance
|
53
|
-
llm: Optional[Any] = None
|
54
52
|
# Alita instance
|
55
53
|
alita: Optional[Any] = None
|
56
54
|
|
57
|
-
# Vector store configuration
|
58
|
-
connection_string: Optional[SecretStr] = None
|
59
|
-
collection_name: Optional[str] = None
|
60
|
-
doctype: Optional[str] = 'code' # GitHub uses 'code' doctype
|
61
|
-
embedding_model: Optional[str] = "HuggingFaceEmbeddings"
|
62
|
-
embedding_model_params: Optional[Dict[str, Any]] = {"model_name": "sentence-transformers/all-MiniLM-L6-v2"}
|
63
|
-
vectorstore_type: Optional[str] = "PGVector"
|
64
|
-
|
65
55
|
# Client instances - renamed without leading underscores and marked as exclude=True
|
66
56
|
github_client_instance: Optional[GitHubClient] = Field(default=None, exclude=True)
|
67
57
|
graphql_client_instance: Optional[GraphQLClientWrapper] = Field(default=None, exclude=True)
|
@@ -84,12 +74,12 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
|
|
84
74
|
from langchain.utils import get_from_dict_or_env
|
85
75
|
|
86
76
|
# Get all authentication values
|
87
|
-
github_access_token = get_from_dict_or_env(values, "github_access_token", "GITHUB_ACCESS_TOKEN", default='')
|
88
|
-
github_username = get_from_dict_or_env(values, "github_username", "GITHUB_USERNAME", default='')
|
89
|
-
github_password = get_from_dict_or_env(values, "github_password", "GITHUB_PASSWORD", default='')
|
90
|
-
github_app_id = get_from_dict_or_env(values, "github_app_id", "GITHUB_APP_ID", default='')
|
91
|
-
github_app_private_key = get_from_dict_or_env(values, "github_app_private_key", "GITHUB_APP_PRIVATE_KEY", default='')
|
92
|
-
github_base_url = get_from_dict_or_env(values, "github_base_url", "GITHUB_BASE_URL", default='https://api.github.com')
|
77
|
+
github_access_token = get_from_dict_or_env(values, ["access_token", "github_access_token"], "GITHUB_ACCESS_TOKEN", default='')
|
78
|
+
github_username = get_from_dict_or_env(values, ["username", "github_username"], "GITHUB_USERNAME", default='')
|
79
|
+
github_password = get_from_dict_or_env(values, ["password", "github_password"], "GITHUB_PASSWORD", default='')
|
80
|
+
github_app_id = get_from_dict_or_env(values, ["app_id", "github_app_id"], "GITHUB_APP_ID", default='')
|
81
|
+
github_app_private_key = get_from_dict_or_env(values, ["app_private_key", "github_app_private_key"], "GITHUB_APP_PRIVATE_KEY", default='')
|
82
|
+
github_base_url = get_from_dict_or_env(values, ["base_url", "github_base_url"], "GITHUB_BASE_URL", default='https://api.github.com')
|
93
83
|
|
94
84
|
auth_config = GitHubAuthConfig(
|
95
85
|
github_access_token=github_access_token,
|