alita-sdk 0.3.229__tar.gz → 0.3.231__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.229 → alita_sdk-0.3.231}/PKG-INFO +2 -2
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/README.md +1 -1
- alita_sdk-0.3.231/alita_sdk/runtime/langchain/document_loaders/AlitaDocLoader.py +29 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/constants.py +6 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/utils.py +22 -1
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/vectorstore.py +167 -46
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/__init__.py +2 -3
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/repos/__init__.py +12 -10
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/repos/repos_wrapper.py +1 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/test_plan/__init__.py +17 -15
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +1 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/wiki/__init__.py +18 -20
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/wiki/ado_wrapper.py +1 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/work_item/__init__.py +18 -19
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/work_item/ado_wrapper.py +1 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/azure_ai/search/__init__.py +7 -4
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/bitbucket/__init__.py +9 -4
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/confluence/__init__.py +9 -5
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/elitea_base.py +35 -38
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/figma/__init__.py +8 -5
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/figma/api_wrapper.py +37 -12
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/__init__.py +9 -10
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab/__init__.py +10 -5
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google/bigquery/__init__.py +7 -2
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/jira/__init__.py +9 -5
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/postman/__init__.py +7 -2
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/qtest/__init__.py +7 -2
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/servicenow/__init__.py +7 -3
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sharepoint/__init__.py +8 -5
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/slack/__init__.py +7 -3
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/testrail/__init__.py +9 -4
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/utils/content_parser.py +16 -26
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +18 -11
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk.egg-info/PKG-INFO +2 -2
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk.egg-info/SOURCES.txt +1 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/pyproject.toml +1 -1
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/LICENSE +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/ado.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/bitbucket.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/confluence.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/jira.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/postman.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/service_now.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/slack.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/clients/client.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/assistant.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/bitbucket/tools.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/setup.cfg +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.229 → alita_sdk-0.3.231}/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.231
|
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
|
@@ -181,7 +181,7 @@ venv\Scripts\activate
|
|
181
181
|
Install all required dependencies for the SDK and toolkits:
|
182
182
|
|
183
183
|
```bash
|
184
|
-
pip install -
|
184
|
+
pip install -U '.[all]'
|
185
185
|
```
|
186
186
|
|
187
187
|
Environment Setup
|
@@ -0,0 +1,29 @@
|
|
1
|
+
from langchain_core.document_loaders import BaseLoader
|
2
|
+
from langchain_core.documents import Document
|
3
|
+
|
4
|
+
from .utils import file_to_bytes
|
5
|
+
|
6
|
+
|
7
|
+
class AlitaDocLoader(BaseLoader):
|
8
|
+
|
9
|
+
def __init__(self, **kwargs):
|
10
|
+
if kwargs.get('file_path'):
|
11
|
+
self.file_path = kwargs['file_path']
|
12
|
+
elif kwargs.get('file_content'):
|
13
|
+
self.file_content = kwargs['file_content']
|
14
|
+
self.file_name = kwargs['file_name']
|
15
|
+
else:
|
16
|
+
raise ValueError(
|
17
|
+
"Path parameter is required (either as 'file_path' positional argument or 'path' keyword argument)")
|
18
|
+
|
19
|
+
def load(self):
|
20
|
+
result_content = self.get_content()
|
21
|
+
return [Document(page_content=result_content, metadata={'source': str(self.file_path if hasattr(self, 'file_path') else self.file_name)})]
|
22
|
+
|
23
|
+
def get_content(self):
|
24
|
+
try:
|
25
|
+
import textract
|
26
|
+
content = textract.process(None, extension='doc', input_data=self.file_content if hasattr(self, 'file_content') else file_to_bytes(self.file_path)).decode('utf-8')
|
27
|
+
except Exception as e:
|
28
|
+
content = f"[Error extracting doc: {str(e)}]"
|
29
|
+
return content
|
{alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/constants.py
RENAMED
@@ -18,6 +18,7 @@ from langchain_community.document_loaders import (
|
|
18
18
|
UnstructuredPowerPointLoader, PythonLoader)
|
19
19
|
|
20
20
|
from .AlitaCSVLoader import AlitaCSVLoader
|
21
|
+
from .AlitaDocLoader import AlitaDocLoader
|
21
22
|
from .AlitaDocxMammothLoader import AlitaDocxMammothLoader
|
22
23
|
from .AlitaExcelLoader import AlitaExcelLoader
|
23
24
|
from .AlitaImageLoader import AlitaImageLoader
|
@@ -124,6 +125,11 @@ loaders_map = {
|
|
124
125
|
'is_multimodal_processing': True,
|
125
126
|
'kwargs': {}
|
126
127
|
},
|
128
|
+
'.doc': {
|
129
|
+
'class': AlitaDocLoader,
|
130
|
+
'is_multimodal_processing': True,
|
131
|
+
'kwargs': {}
|
132
|
+
},
|
127
133
|
'.json': {
|
128
134
|
'class': AlitaTextLoader,
|
129
135
|
'is_multimodal_processing': False,
|
{alita_sdk-0.3.229 → alita_sdk-0.3.231}/alita_sdk/runtime/langchain/document_loaders/utils.py
RENAMED
@@ -60,4 +60,25 @@ def create_temp_file(file_content: bytes):
|
|
60
60
|
temp_file.flush() # Ensure data is written
|
61
61
|
|
62
62
|
# Get the file path for operations
|
63
|
-
return temp_file.name
|
63
|
+
return temp_file.name
|
64
|
+
|
65
|
+
def file_to_bytes(filepath):
|
66
|
+
"""
|
67
|
+
Reads a file and returns its content as a bytes object.
|
68
|
+
|
69
|
+
Args:
|
70
|
+
filepath (str): The path to the file.
|
71
|
+
|
72
|
+
Returns:
|
73
|
+
bytes: The content of the file as a bytes object.
|
74
|
+
"""
|
75
|
+
try:
|
76
|
+
with open(filepath, "rb") as f:
|
77
|
+
file_content_bytes = f.read()
|
78
|
+
return file_content_bytes
|
79
|
+
except FileNotFoundError:
|
80
|
+
logger.error(f"File not found: {filepath}")
|
81
|
+
return None
|
82
|
+
except Exception as e:
|
83
|
+
logger.error(f"Error reading file {filepath}: {e}")
|
84
|
+
return None
|
@@ -210,38 +210,48 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
210
210
|
tool_name="_remove_collection"
|
211
211
|
)
|
212
212
|
|
213
|
-
def _get_indexed_ids(self,
|
213
|
+
def _get_indexed_ids(self, collection_suffix: Optional[str] = '') -> List[str]:
|
214
214
|
"""Get all indexed document IDs from vectorstore"""
|
215
215
|
|
216
216
|
# Check if this is a PGVector store
|
217
|
-
if
|
218
|
-
return self._get_pgvector_indexed_ids(
|
217
|
+
if self._is_pgvector():
|
218
|
+
return self._get_pgvector_indexed_ids(collection_suffix)
|
219
219
|
else:
|
220
220
|
# Fall back to Chroma implementation
|
221
|
-
|
221
|
+
# TODO: update filter by collection_suffix for Chroma
|
222
|
+
return self._get_chroma_indexed_ids(collection_suffix)
|
222
223
|
|
223
|
-
def _get_pgvector_indexed_ids(self,
|
224
|
+
def _get_pgvector_indexed_ids(self, collection_suffix: Optional[str] = ''):
|
224
225
|
"""Get all indexed document IDs from PGVector"""
|
225
226
|
from sqlalchemy.orm import Session
|
227
|
+
from sqlalchemy import func
|
226
228
|
|
229
|
+
store = self.vectorstore
|
227
230
|
try:
|
228
231
|
with Session(store.session_maker.bind) as session:
|
229
|
-
|
230
|
-
|
232
|
+
# Start building the query
|
233
|
+
query = session.query(store.EmbeddingStore.id)
|
234
|
+
# Apply filter only if collection_suffix is provided
|
235
|
+
if collection_suffix:
|
236
|
+
query = query.filter(
|
237
|
+
func.jsonb_extract_path_text(store.EmbeddingStore.cmetadata, 'collection') == collection_suffix
|
238
|
+
)
|
239
|
+
ids = query.all()
|
240
|
+
return [str(id_tuple[0]) for id_tuple in ids]
|
231
241
|
except Exception as e:
|
232
242
|
logger.error(f"Failed to get indexed IDs from PGVector: {str(e)}")
|
233
243
|
return []
|
234
244
|
|
235
|
-
def _get_chroma_indexed_ids(self,
|
245
|
+
def _get_chroma_indexed_ids(self, collection_suffix: Optional[str] = ''):
|
236
246
|
"""Get all indexed document IDs from Chroma"""
|
237
247
|
try:
|
238
|
-
data =
|
248
|
+
data = self.vectorstore.get(include=[]) # Only get IDs, no metadata
|
239
249
|
return data.get('ids', [])
|
240
250
|
except Exception as e:
|
241
251
|
logger.error(f"Failed to get indexed IDs from Chroma: {str(e)}")
|
242
252
|
return []
|
243
253
|
|
244
|
-
def _clean_collection(self):
|
254
|
+
def _clean_collection(self, collection_suffix: str = ''):
|
245
255
|
"""
|
246
256
|
Clean the vectorstore collection by deleting all indexed data.
|
247
257
|
"""
|
@@ -251,33 +261,37 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
251
261
|
)
|
252
262
|
# This logic deletes all data from the vectorstore collection without removal of collection.
|
253
263
|
# Collection itself remains available for future indexing.
|
254
|
-
self.
|
264
|
+
self.vectorstore.delete(ids=self._get_indexed_ids(collection_suffix))
|
255
265
|
|
256
266
|
self._log_data(
|
257
267
|
f"Collection '{self.dataset}' has been cleaned. ",
|
258
268
|
tool_name="_clean_collection"
|
259
269
|
)
|
260
270
|
|
271
|
+
def _is_pgvector(self) -> bool:
|
272
|
+
"""Check if the vectorstore is a PGVector store."""
|
273
|
+
return hasattr(self.vectorstore, 'session_maker') and hasattr(self.vectorstore, 'EmbeddingStore')
|
274
|
+
|
261
275
|
# TODO: refactor to use common method for different vectorstores in a separate vectorstore wrappers
|
262
|
-
def _get_indexed_data(self
|
276
|
+
def _get_indexed_data(self):
|
263
277
|
""" Get all indexed data from vectorstore for non-code content """
|
264
278
|
|
265
279
|
# Check if this is a PGVector store
|
266
|
-
if
|
267
|
-
return self._get_pgvector_indexed_data(
|
280
|
+
if self._is_pgvector():
|
281
|
+
return self._get_pgvector_indexed_data()
|
268
282
|
else:
|
269
283
|
# Fall back to original Chroma implementation
|
270
|
-
return self._get_chroma_indexed_data(
|
284
|
+
return self._get_chroma_indexed_data(self.vectorstore)
|
271
285
|
|
272
|
-
def _get_pgvector_indexed_data(self
|
286
|
+
def _get_pgvector_indexed_data(self):
|
273
287
|
""" Get all indexed data from PGVector for non-code content """
|
274
288
|
from sqlalchemy.orm import Session
|
275
289
|
|
276
290
|
result = {}
|
277
291
|
try:
|
278
292
|
self._log_data("Retrieving already indexed data from PGVector vectorstore",
|
279
|
-
tool_name="
|
280
|
-
|
293
|
+
tool_name="get_indexed_data")
|
294
|
+
store = self.vectorstore
|
281
295
|
with Session(store.session_maker.bind) as session:
|
282
296
|
docs = session.query(
|
283
297
|
store.EmbeddingStore.id,
|
@@ -320,7 +334,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
320
334
|
result = {}
|
321
335
|
try:
|
322
336
|
self._log_data("Retrieving already indexed data from Chroma vectorstore",
|
323
|
-
tool_name="
|
337
|
+
tool_name="get_indexed_data")
|
324
338
|
data = store.get(include=['metadatas'])
|
325
339
|
|
326
340
|
# Re-structure data to be more usable
|
@@ -349,21 +363,63 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
349
363
|
|
350
364
|
return result
|
351
365
|
|
352
|
-
def _get_code_indexed_data(self
|
366
|
+
def _get_code_indexed_data(self) -> Dict[str, Dict[str, Any]]:
|
353
367
|
""" Get all indexed data from vectorstore for code content """
|
354
368
|
|
355
369
|
# get already indexed data
|
370
|
+
if self._is_pgvector():
|
371
|
+
result = self._get_pgvector_code_indexed_data()
|
372
|
+
else:
|
373
|
+
result = self._get_chroma_code_indexed_data()
|
374
|
+
return result
|
375
|
+
|
376
|
+
def _get_chroma_code_indexed_data(self) -> Dict[str, Dict[str, Any]]:
|
377
|
+
"""Get all indexed code data from Chroma."""
|
356
378
|
result = {}
|
357
379
|
try:
|
358
|
-
self._log_data("Retrieving already indexed code data from vectorstore",
|
359
|
-
tool_name="
|
360
|
-
data =
|
361
|
-
# re-structure data to be more usable
|
380
|
+
self._log_data("Retrieving already indexed code data from Chroma vectorstore",
|
381
|
+
tool_name="index_code_data")
|
382
|
+
data = self.vectorstore.get(include=['metadatas'])
|
362
383
|
for meta, db_id in zip(data['metadatas'], data['ids']):
|
363
|
-
filename = meta
|
384
|
+
filename = meta.get('filename')
|
385
|
+
commit_hash = meta.get('commit_hash')
|
386
|
+
if not filename:
|
387
|
+
continue
|
388
|
+
if filename not in result:
|
389
|
+
result[filename] = {
|
390
|
+
'commit_hashes': [],
|
391
|
+
'ids': []
|
392
|
+
}
|
393
|
+
if commit_hash is not None:
|
394
|
+
result[filename]['commit_hashes'].append(commit_hash)
|
395
|
+
result[filename]['ids'].append(db_id)
|
396
|
+
except Exception as e:
|
397
|
+
logger.error(f"Failed to get indexed code data from Chroma: {str(e)}. Continuing with empty index.")
|
398
|
+
return result
|
399
|
+
|
400
|
+
def _get_pgvector_code_indexed_data(self) -> Dict[str, Dict[str, Any]]:
|
401
|
+
"""Get all indexed code data from PGVector."""
|
402
|
+
from sqlalchemy.orm import Session
|
403
|
+
|
404
|
+
result = {}
|
405
|
+
try:
|
406
|
+
self._log_data("Retrieving already indexed code data from PGVector vectorstore",
|
407
|
+
tool_name="index_code_data")
|
408
|
+
store = self.vectorstore
|
409
|
+
with Session(store.session_maker.bind) as session:
|
410
|
+
docs = session.query(
|
411
|
+
store.EmbeddingStore.id,
|
412
|
+
store.EmbeddingStore.cmetadata
|
413
|
+
).all()
|
414
|
+
|
415
|
+
for db_id, meta in docs:
|
416
|
+
filename = meta.get('filename')
|
364
417
|
commit_hash = meta.get('commit_hash')
|
418
|
+
if not filename:
|
419
|
+
continue
|
365
420
|
if filename not in result:
|
366
421
|
result[filename] = {
|
422
|
+
'metadata': meta,
|
367
423
|
'commit_hashes': [],
|
368
424
|
'ids': []
|
369
425
|
}
|
@@ -371,13 +427,64 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
371
427
|
result[filename]['commit_hashes'].append(commit_hash)
|
372
428
|
result[filename]['ids'].append(db_id)
|
373
429
|
except Exception as e:
|
374
|
-
logger.error(f"Failed to get indexed code data from
|
430
|
+
logger.error(f"Failed to get indexed code data from PGVector: {str(e)}. Continuing with empty index.")
|
375
431
|
return result
|
376
432
|
|
433
|
+
|
434
|
+
def _add_to_collection(self, entry_id, new_collection_value):
|
435
|
+
"""Add a new collection name to the `collection` key in the `metadata` column."""
|
436
|
+
|
437
|
+
from sqlalchemy import func
|
438
|
+
from sqlalchemy.orm import Session
|
439
|
+
|
440
|
+
store = self.vectorstore
|
441
|
+
try:
|
442
|
+
with Session(store.session_maker.bind) as session:
|
443
|
+
# Query the current value of the `collection` key
|
444
|
+
current_collection_query = session.query(
|
445
|
+
func.jsonb_extract_path_text(store.EmbeddingStore.cmetadata, 'collection')
|
446
|
+
).filter(store.EmbeddingStore.id == entry_id).scalar()
|
447
|
+
|
448
|
+
# If the `collection` key is NULL or doesn't contain the new value, update it
|
449
|
+
if current_collection_query is None:
|
450
|
+
# If `collection` is NULL, initialize it with the new value
|
451
|
+
session.query(store.EmbeddingStore).filter(
|
452
|
+
store.EmbeddingStore.id == entry_id
|
453
|
+
).update(
|
454
|
+
{
|
455
|
+
store.EmbeddingStore.cmetadata: func.jsonb_set(
|
456
|
+
func.coalesce(store.EmbeddingStore.cmetadata, '{}'),
|
457
|
+
'{collection}', # Path to the `collection` key
|
458
|
+
f'"{new_collection_value}"', # New value for the `collection` key
|
459
|
+
True # Create the key if it doesn't exist
|
460
|
+
)
|
461
|
+
}
|
462
|
+
)
|
463
|
+
elif new_collection_value not in current_collection_query.split(";"):
|
464
|
+
# If `collection` exists but doesn't contain the new value, append it
|
465
|
+
updated_collection_value = f"{current_collection_query};{new_collection_value}"
|
466
|
+
session.query(store.EmbeddingStore).filter(
|
467
|
+
store.EmbeddingStore.id == entry_id
|
468
|
+
).update(
|
469
|
+
{
|
470
|
+
store.EmbeddingStore.cmetadata: func.jsonb_set(
|
471
|
+
store.EmbeddingStore.cmetadata,
|
472
|
+
'{collection}', # Path to the `collection` key
|
473
|
+
f'"{updated_collection_value}"', # Concatenated value as a valid JSON string
|
474
|
+
True # Create the key if it doesn't exist
|
475
|
+
)
|
476
|
+
}
|
477
|
+
)
|
478
|
+
|
479
|
+
session.commit()
|
480
|
+
logger.info(f"Successfully updated collection for entry ID {entry_id}.")
|
481
|
+
except Exception as e:
|
482
|
+
logger.error(f"Failed to update collection for entry ID {entry_id}: {str(e)}")
|
483
|
+
|
377
484
|
def _reduce_duplicates(
|
378
485
|
self,
|
379
486
|
documents: Generator[Any, None, None],
|
380
|
-
|
487
|
+
collection_suffix: str,
|
381
488
|
get_indexed_data: Callable,
|
382
489
|
key_fn: Callable,
|
383
490
|
compare_fn: Callable,
|
@@ -386,7 +493,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
386
493
|
) -> List[Any]:
|
387
494
|
"""Generic duplicate reduction logic for documents."""
|
388
495
|
self._log_data(log_msg, tool_name="index_documents")
|
389
|
-
indexed_data = get_indexed_data(
|
496
|
+
indexed_data = get_indexed_data()
|
390
497
|
indexed_keys = set(indexed_data.keys())
|
391
498
|
if not indexed_keys:
|
392
499
|
self._log_data("Vectorstore is empty, indexing all incoming documents", tool_name="index_documents")
|
@@ -397,8 +504,15 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
397
504
|
|
398
505
|
for document in documents:
|
399
506
|
key = key_fn(document)
|
400
|
-
if key in indexed_keys:
|
507
|
+
if key in indexed_keys and collection_suffix == indexed_data[key]['metadata'].get('collection'):
|
401
508
|
if compare_fn(document, indexed_data[key]):
|
509
|
+
# Disabled addition of new collection to already indexed documents
|
510
|
+
# # check metadata.collection and update if needed
|
511
|
+
# for update_collection_id in remove_ids_fn(indexed_data, key):
|
512
|
+
# self._add_to_collection(
|
513
|
+
# update_collection_id,
|
514
|
+
# collection_suffix
|
515
|
+
# )
|
402
516
|
continue
|
403
517
|
final_docs.append(document)
|
404
518
|
docs_to_remove.update(remove_ids_fn(indexed_data, key))
|
@@ -410,14 +524,14 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
410
524
|
f"Removing {len(docs_to_remove)} documents from vectorstore that are already indexed with different updated_on.",
|
411
525
|
tool_name="index_documents"
|
412
526
|
)
|
413
|
-
|
527
|
+
self.vectorstore.delete(ids=list(docs_to_remove))
|
414
528
|
|
415
529
|
return final_docs
|
416
530
|
|
417
|
-
def _reduce_non_code_duplicates(self, documents: Generator[Any, None, None],
|
531
|
+
def _reduce_non_code_duplicates(self, documents: Generator[Any, None, None], collection_suffix: str) -> List[Any]:
|
418
532
|
return self._reduce_duplicates(
|
419
533
|
documents,
|
420
|
-
|
534
|
+
collection_suffix,
|
421
535
|
self._get_indexed_data,
|
422
536
|
lambda doc: doc.metadata.get('id'),
|
423
537
|
lambda doc, idx: (
|
@@ -434,10 +548,10 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
434
548
|
log_msg="Verification of documents to index started"
|
435
549
|
)
|
436
550
|
|
437
|
-
def _reduce_code_duplicates(self, documents: Generator[Any, None, None],
|
551
|
+
def _reduce_code_duplicates(self, documents: Generator[Any, None, None], collection_suffix: str) -> List[Any]:
|
438
552
|
return self._reduce_duplicates(
|
439
553
|
documents,
|
440
|
-
|
554
|
+
collection_suffix,
|
441
555
|
self._get_code_indexed_data,
|
442
556
|
lambda doc: doc.metadata.get('filename'),
|
443
557
|
lambda doc, idx: (
|
@@ -449,7 +563,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
449
563
|
log_msg="Verification of code documents to index started"
|
450
564
|
)
|
451
565
|
|
452
|
-
def index_documents(self, documents: Generator[Document, None, None], progress_step: int = 20, clean_index: bool = True, is_code: bool = False):
|
566
|
+
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
567
|
""" Index documents in the vectorstore.
|
454
568
|
|
455
569
|
Args:
|
@@ -465,7 +579,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
465
579
|
logger.info("Cleaning index before re-indexing all documents.")
|
466
580
|
self._log_data("Cleaning index before re-indexing all documents. Previous index will be removed", tool_name="index_documents")
|
467
581
|
try:
|
468
|
-
self._clean_collection()
|
582
|
+
self._clean_collection(collection_suffix)
|
469
583
|
self.vectoradapter.persist()
|
470
584
|
self.vectoradapter.vacuum()
|
471
585
|
self._log_data("Previous index has been removed",
|
@@ -476,8 +590,8 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
476
590
|
documents = list(documents)
|
477
591
|
else:
|
478
592
|
# 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,
|
593
|
+
documents = self._reduce_code_duplicates(documents, collection_suffix) if is_code \
|
594
|
+
else self._reduce_non_code_duplicates(documents, collection_suffix)
|
481
595
|
|
482
596
|
if not documents or len(documents) == 0:
|
483
597
|
logger.info("No new documents to index after duplicate check.")
|
@@ -498,6 +612,15 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
498
612
|
logger.debug(self.vectoradapter)
|
499
613
|
|
500
614
|
documents = documents + list(dependent_docs_generator)
|
615
|
+
|
616
|
+
# if collection_suffix is provided, add it to metadata of each document
|
617
|
+
if collection_suffix:
|
618
|
+
for doc in documents:
|
619
|
+
if not doc.metadata.get('collection'):
|
620
|
+
doc.metadata['collection'] = collection_suffix
|
621
|
+
else:
|
622
|
+
doc.metadata['collection'] += f";{collection_suffix}"
|
623
|
+
|
501
624
|
total_docs = len(documents)
|
502
625
|
documents_count = 0
|
503
626
|
_documents = []
|
@@ -511,8 +634,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
511
634
|
try:
|
512
635
|
_documents.append(document)
|
513
636
|
if len(_documents) >= self.max_docs_per_add:
|
514
|
-
add_documents(vectorstore=self.
|
515
|
-
self.vectoradapter.persist()
|
637
|
+
add_documents(vectorstore=self.vectorstore, documents=_documents)
|
516
638
|
_documents = []
|
517
639
|
|
518
640
|
percent = math.floor((documents_count / total_docs) * 100)
|
@@ -526,8 +648,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
526
648
|
logger.error(f"Error: {format_exc()}")
|
527
649
|
return {"status": "error", "message": f"Error: {format_exc()}"}
|
528
650
|
if _documents:
|
529
|
-
add_documents(vectorstore=self.
|
530
|
-
self.vectoradapter.persist()
|
651
|
+
add_documents(vectorstore=self.vectorstore, documents=_documents)
|
531
652
|
return {"status": "ok", "message": f"successfully indexed {documents_count} documents"}
|
532
653
|
|
533
654
|
def search_documents(self, query:str, doctype: str = 'code',
|
@@ -562,7 +683,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
562
683
|
}
|
563
684
|
|
564
685
|
try:
|
565
|
-
document_items = self.
|
686
|
+
document_items = self.vectorstore.similarity_search_with_score(
|
566
687
|
query, filter=document_filter, k=search_top
|
567
688
|
)
|
568
689
|
# Add document results to unique docs
|
@@ -595,7 +716,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
595
716
|
}
|
596
717
|
|
597
718
|
try:
|
598
|
-
chunk_items = self.
|
719
|
+
chunk_items = self.vectorstore.similarity_search_with_score(
|
599
720
|
query, filter=chunk_filter, k=search_top
|
600
721
|
)
|
601
722
|
|
@@ -628,7 +749,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
628
749
|
}
|
629
750
|
|
630
751
|
try:
|
631
|
-
fetch_items = self.
|
752
|
+
fetch_items = self.vectorstore.similarity_search_with_score(
|
632
753
|
query, filter=doc_filter, k=1
|
633
754
|
)
|
634
755
|
if fetch_items:
|
@@ -642,7 +763,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
642
763
|
else:
|
643
764
|
# Default search behavior (unchanged)
|
644
765
|
max_search_results = 30 if search_top * 3 > 30 else search_top * 3
|
645
|
-
vector_items = self.
|
766
|
+
vector_items = self.vectorstore.similarity_search_with_score(
|
646
767
|
query, filter=filter, k=max_search_results
|
647
768
|
)
|
648
769
|
|
@@ -10,13 +10,12 @@ def get_tools(tool_type, tool):
|
|
10
10
|
# common
|
11
11
|
"selected_tools": tool['settings'].get('selected_tools', []),
|
12
12
|
"organization_url": tool['settings']['organization_url'],
|
13
|
-
"
|
14
|
-
"token": tool['settings'].get('token', None),
|
13
|
+
"ado_configuration": tool['settings']['ado_configuration'],
|
15
14
|
"limit": tool['settings'].get('limit', 5),
|
16
15
|
"toolkit_name": tool.get('toolkit_name', ''),
|
17
16
|
# indexer settings
|
18
17
|
"llm": tool['settings'].get('llm', None),
|
19
|
-
"
|
18
|
+
"pgvector_configuration": tool['settings'].get('pgvector_configuration', {}),
|
20
19
|
"collection_name": tool['toolkit_name'],
|
21
20
|
"doctype": 'doc',
|
22
21
|
"embedding_model": "HuggingFaceEmbeddings",
|
@@ -17,15 +17,12 @@ name = "ado_repos"
|
|
17
17
|
def _get_toolkit(tool) -> BaseToolkit:
|
18
18
|
return AzureDevOpsReposToolkit().get_toolkit(
|
19
19
|
selected_tools=tool['settings'].get('selected_tools', []),
|
20
|
-
|
21
|
-
project=tool['settings'].get('ado_repos_configuration').get('ado_configuration').get('project', ""),
|
22
|
-
token=tool['settings'].get('ado_repos_configuration').get('ado_configuration').get('token', ""),
|
20
|
+
ado_repos_configuration=tool['settings']['ado_repos_configuration'],
|
23
21
|
limit=tool['settings'].get('limit', 5),
|
24
|
-
repository_id=tool['settings'].get('ado_repos_configuration').get('repository_id', ""),
|
25
22
|
base_branch=tool['settings'].get('base_branch', ""),
|
26
23
|
active_branch=tool['settings'].get('active_branch', ""),
|
27
24
|
toolkit_name=tool['settings'].get('toolkit_name', ""),
|
28
|
-
|
25
|
+
pgvector_configuration=tool['settings'].get('pgvector_configuration', {}),
|
29
26
|
collection_name=tool['toolkit_name'],
|
30
27
|
doctype='code',
|
31
28
|
embedding_model="HuggingFaceEmbeddings",
|
@@ -49,14 +46,13 @@ class AzureDevOpsReposToolkit(BaseToolkit):
|
|
49
46
|
AzureDevOpsReposToolkit.toolkit_max_length = get_max_toolkit_length(selected_tools)
|
50
47
|
m = create_model(
|
51
48
|
name,
|
52
|
-
ado_repos_configuration=(
|
49
|
+
ado_repos_configuration=(AdoReposConfiguration, Field(description="Ado Repos configuration", default=None,
|
53
50
|
json_schema_extra={'configuration_types': ['ado_repos']})),
|
54
51
|
base_branch=(Optional[str], Field(default="", title="Base branch", description="ADO base branch (e.g., main)")),
|
55
52
|
active_branch=(Optional[str], Field(default="", title="Active branch", description="ADO active branch (e.g., main)")),
|
56
53
|
|
57
54
|
# indexer settings
|
58
|
-
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector
|
59
|
-
json_schema_extra={'secret': True})),
|
55
|
+
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
|
60
56
|
# embedder settings
|
61
57
|
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.",
|
62
58
|
default="HuggingFaceEmbeddings")),
|
@@ -110,8 +106,14 @@ class AzureDevOpsReposToolkit(BaseToolkit):
|
|
110
106
|
environ["AZURE_DEVOPS_CACHE_DIR"] = "/tmp/.azure-devops"
|
111
107
|
if selected_tools is None:
|
112
108
|
selected_tools = []
|
113
|
-
|
114
|
-
|
109
|
+
|
110
|
+
wrapper_payload = {
|
111
|
+
**kwargs,
|
112
|
+
# TODO use ado_repos_configuration fields
|
113
|
+
**kwargs['ado_repos_configuration'],
|
114
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
115
|
+
}
|
116
|
+
azure_devops_repos_wrapper = ReposApiWrapper(**wrapper_payload)
|
115
117
|
available_tools = azure_devops_repos_wrapper.get_available_tools()
|
116
118
|
tools = []
|
117
119
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|
@@ -1,9 +1,11 @@
|
|
1
1
|
from typing import List, Optional, Literal
|
2
2
|
|
3
3
|
from langchain_core.tools import BaseTool, BaseToolkit
|
4
|
-
from pydantic import create_model, BaseModel, Field
|
4
|
+
from pydantic import create_model, BaseModel, Field
|
5
5
|
|
6
6
|
import requests
|
7
|
+
from ....configurations.ado import AdoConfiguration
|
8
|
+
from ....configurations.pgvector import PgVectorConfiguration
|
7
9
|
from .test_plan_wrapper import TestPlanApiWrapper
|
8
10
|
from ...base.tool import BaseAction
|
9
11
|
from ...utils import clean_string, TOOLKIT_SPLITTER, get_max_toolkit_length, check_connection_response
|
@@ -24,19 +26,10 @@ class AzureDevOpsPlansToolkit(BaseToolkit):
|
|
24
26
|
m = create_model(
|
25
27
|
name_alias,
|
26
28
|
name=(str, Field(description="Toolkit name", json_schema_extra={'toolkit_name': True, 'max_toolkit_length': AzureDevOpsPlansToolkit.toolkit_max_length})),
|
27
|
-
|
28
|
-
description="ADO organization url",
|
29
|
-
json_schema_extra={
|
30
|
-
'configuration': True,
|
31
|
-
'configuration_title': True
|
32
|
-
})),
|
33
|
-
project=(str, Field(title="Project", description="ADO project", json_schema_extra={'configuration': True})),
|
29
|
+
ado_configuration=(AdoConfiguration, Field(description="Ado configuration", json_schema_extra={'configuration_types': ['ado']})),
|
34
30
|
limit=(Optional[int], Field(description="ADO plans limit used for limitation of the list with results", default=5)),
|
35
|
-
token=(SecretStr, Field(description="ADO token", json_schema_extra={'secret': True, 'configuration': True})),
|
36
31
|
# indexer settings
|
37
|
-
|
38
|
-
default=None,
|
39
|
-
json_schema_extra={'secret': True})),
|
32
|
+
pgvector_configuration=(Optional[PgVectorConfiguration], Field(description="PgVector Configuration", json_schema_extra={'configuration_types': ['pgvector']})),
|
40
33
|
# embedder settings
|
41
34
|
embedding_model=(str, Field(description="Embedding model: i.e. 'HuggingFaceEmbeddings', etc.",
|
42
35
|
default="HuggingFaceEmbeddings")),
|
@@ -75,9 +68,12 @@ class AzureDevOpsPlansToolkit(BaseToolkit):
|
|
75
68
|
|
76
69
|
@check_connection_response
|
77
70
|
def check_connection(self):
|
71
|
+
ado_config = self.ado_test_plan_configuration.ado_configuration if self.ado_test_plan_configuration else None
|
72
|
+
if not ado_config:
|
73
|
+
raise ValueError("ADO test plan configuration is required")
|
78
74
|
response = requests.get(
|
79
|
-
f'{
|
80
|
-
headers = {'Authorization': f'Bearer {
|
75
|
+
f'{ado_config.organization_url}/{ado_config.project}/_apis/testplan/plans?api-version=7.0',
|
76
|
+
headers = {'Authorization': f'Bearer {ado_config.token}'},
|
81
77
|
timeout=5
|
82
78
|
)
|
83
79
|
return response
|
@@ -92,7 +88,13 @@ class AzureDevOpsPlansToolkit(BaseToolkit):
|
|
92
88
|
environ['AZURE_DEVOPS_CACHE_DIR'] = '/tmp/.azure-devops'
|
93
89
|
if selected_tools is None:
|
94
90
|
selected_tools = []
|
95
|
-
|
91
|
+
wrapper_payload = {
|
92
|
+
**kwargs,
|
93
|
+
# TODO use ado_configuration fields in TestPlanApiWrapper
|
94
|
+
**kwargs['ado_configuration'],
|
95
|
+
**(kwargs.get('pgvector_configuration') or {}),
|
96
|
+
}
|
97
|
+
azure_devops_api_wrapper = TestPlanApiWrapper(**wrapper_payload)
|
96
98
|
available_tools = azure_devops_api_wrapper.get_available_tools()
|
97
99
|
tools = []
|
98
100
|
prefix = clean_string(toolkit_name, cls.toolkit_max_length) + TOOLKIT_SPLITTER if toolkit_name else ''
|