alita-sdk 0.3.252__tar.gz → 0.3.254__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.252 → alita_sdk-0.3.254}/PKG-INFO +1 -1
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/ado.py +1 -1
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/bitbucket.py +2 -2
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/confluence.py +1 -1
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/jira.py +1 -1
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/postman.py +1 -1
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/service_now.py +1 -1
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/slack.py +2 -6
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/xray.py +1 -1
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/zephyr.py +1 -1
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/clients/client.py +13 -8
- alita_sdk-0.3.254/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +73 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/constants.py +13 -10
- alita_sdk-0.3.254/alita_sdk/runtime/tools/mcp_server_tool.py +101 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/vectorstore_base.py +5 -11
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/base_indexer_toolkit.py +6 -38
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/bitbucket/api_wrapper.py +3 -1
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/confluence/__init__.py +3 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/confluence/api_wrapper.py +10 -5
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/elitea_base.py +20 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/sharepoint/api_wrapper.py +24 -25
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/testrail/api_wrapper.py +2 -2
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/utils/content_parser.py +29 -5
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk.egg-info/PKG-INFO +1 -1
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk.egg-info/SOURCES.txt +1 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/pyproject.toml +1 -1
- alita_sdk-0.3.252/alita_sdk/runtime/tools/mcp_server_tool.py +0 -73
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/LICENSE +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/README.md +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/embedding.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/figma.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/rally.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/assistant.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/tools/vectorstore.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/bitbucket/tools.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/slack/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/setup.cfg +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.252 → alita_sdk-0.3.254}/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.254
|
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
|
@@ -30,7 +30,7 @@ class AdoReposConfiguration(BaseModel):
|
|
30
30
|
}
|
31
31
|
}
|
32
32
|
)
|
33
|
-
repository_id:
|
33
|
+
repository_id: str = Field(description="ADO repository ID")
|
34
34
|
|
35
35
|
ado_configuration: AdoConfiguration = Field(
|
36
36
|
default_factory=AdoConfiguration,
|
@@ -11,7 +11,7 @@ class BitbucketConfiguration(BaseModel):
|
|
11
11
|
"icon_url": "bitbucket-icon.svg",
|
12
12
|
"sections": {
|
13
13
|
"auth": {
|
14
|
-
"required":
|
14
|
+
"required": True,
|
15
15
|
"subsections": [
|
16
16
|
{
|
17
17
|
"name": "Username & Password",
|
@@ -27,6 +27,6 @@ class BitbucketConfiguration(BaseModel):
|
|
27
27
|
}
|
28
28
|
}
|
29
29
|
)
|
30
|
-
url: str = Field(description="Bitbucket URL")
|
30
|
+
url: Optional[str] = Field(description="Bitbucket URL", default="https://api.bitbucket.org/")
|
31
31
|
username: Optional[str] = Field(description="Bitbucket Username", default=None)
|
32
32
|
password: Optional[SecretStr] = Field(description="Bitbucket Password/App Password", default=None)
|
@@ -11,14 +11,10 @@ class SlackConfiguration(BaseModel):
|
|
11
11
|
"icon_url": "slack.svg",
|
12
12
|
"sections": {
|
13
13
|
"auth": {
|
14
|
-
"required":
|
14
|
+
"required": True,
|
15
15
|
"subsections": [
|
16
16
|
{
|
17
|
-
"name": "
|
18
|
-
"fields": ["name"]
|
19
|
-
},
|
20
|
-
{
|
21
|
-
"name": "User Token",
|
17
|
+
"name": "Slack Token",
|
22
18
|
"fields": ["slack_token"]
|
23
19
|
}
|
24
20
|
]
|
@@ -602,16 +602,22 @@ class AlitaClient:
|
|
602
602
|
import logging
|
603
603
|
logger = logging.getLogger(__name__)
|
604
604
|
toolkit_config_parsed_json = None
|
605
|
+
events_dispatched = []
|
606
|
+
|
605
607
|
try:
|
606
608
|
toolkit_config_type = toolkit_config.get('type')
|
607
|
-
|
608
|
-
toolkit_config_model_class = toolkit_class.toolkit_config_schema()
|
609
|
-
toolkit_config_validated_settings = toolkit_config_model_class(
|
610
|
-
**toolkit_config.get('settings', {})
|
611
|
-
).model_dump(mode='json')
|
612
|
-
|
609
|
+
available_toolkit_models = get_available_toolkit_models().get(toolkit_config_type)
|
613
610
|
toolkit_config_parsed_json = deepcopy(toolkit_config)
|
614
|
-
|
611
|
+
if available_toolkit_models:
|
612
|
+
toolkit_class = available_toolkit_models['toolkit_class']
|
613
|
+
toolkit_config_model_class = toolkit_class.toolkit_config_schema()
|
614
|
+
toolkit_config_validated_settings = toolkit_config_model_class(
|
615
|
+
**toolkit_config.get('settings', {})
|
616
|
+
).model_dump(mode='json')
|
617
|
+
toolkit_config_parsed_json['settings'] = toolkit_config_validated_settings
|
618
|
+
else:
|
619
|
+
logger.warning(f"Toolkit type '{toolkit_config_type}' is skipping model validation")
|
620
|
+
toolkit_config_parsed_json['settings'] = None
|
615
621
|
except Exception as toolkit_config_error:
|
616
622
|
logger.error(f"Failed to validate toolkit configuration: {str(toolkit_config_error)}")
|
617
623
|
return {
|
@@ -635,7 +641,6 @@ class AlitaClient:
|
|
635
641
|
# Create RunnableConfig for callback support
|
636
642
|
config = None
|
637
643
|
callbacks = []
|
638
|
-
events_dispatched = []
|
639
644
|
|
640
645
|
if runtime_config:
|
641
646
|
callbacks = runtime_config.get('callbacks', [])
|
@@ -0,0 +1,73 @@
|
|
1
|
+
import json
|
2
|
+
from typing import Iterator
|
3
|
+
|
4
|
+
from langchain_core.documents import Document
|
5
|
+
|
6
|
+
from langchain_community.document_loaders.base import BaseLoader
|
7
|
+
from langchain_community.document_loaders.helpers import detect_file_encodings
|
8
|
+
from langchain_core.tools import ToolException
|
9
|
+
from langchain_text_splitters import RecursiveJsonSplitter
|
10
|
+
|
11
|
+
|
12
|
+
class AlitaJSONLoader(BaseLoader):
|
13
|
+
|
14
|
+
def __init__(self, **kwargs):
|
15
|
+
"""Initialize with file path."""
|
16
|
+
if kwargs.get('file_path'):
|
17
|
+
self.file_path = kwargs['file_path']
|
18
|
+
elif kwargs.get('file_content'):
|
19
|
+
self.file_content = kwargs['file_content']
|
20
|
+
self.file_name = kwargs['file_name']
|
21
|
+
else:
|
22
|
+
raise ToolException("'file_path' or 'file_content' parameter should be provided.")
|
23
|
+
self.encoding = kwargs.get('encoding', 'utf-8')
|
24
|
+
self.autodetect_encoding = kwargs.get('autodetect_encoding', False)
|
25
|
+
self.max_tokens = kwargs.get('max_tokens', 512)
|
26
|
+
|
27
|
+
def get_content(self):
|
28
|
+
try:
|
29
|
+
if hasattr(self, 'file_path') and self.file_path:
|
30
|
+
with open(self.file_path, encoding=self.encoding) as f:
|
31
|
+
return json.load(f)
|
32
|
+
elif hasattr(self, 'file_content') and self.file_content:
|
33
|
+
return json.load(self.file_content)
|
34
|
+
else:
|
35
|
+
raise ValueError("Neither file_path nor file_content is provided.")
|
36
|
+
|
37
|
+
except UnicodeDecodeError as e:
|
38
|
+
if self.autodetect_encoding:
|
39
|
+
if hasattr(self, 'file_path') and self.file_path:
|
40
|
+
detected_encodings = detect_file_encodings(self.file_path)
|
41
|
+
for encoding in detected_encodings:
|
42
|
+
try:
|
43
|
+
with open(self.file_path, encoding=encoding.encoding) as f:
|
44
|
+
return f.read()
|
45
|
+
break
|
46
|
+
except UnicodeDecodeError:
|
47
|
+
continue
|
48
|
+
elif hasattr(self, 'file_content') and self.file_content:
|
49
|
+
detected_encodings = detect_file_encodings(self.file_content)
|
50
|
+
for encoding in detected_encodings:
|
51
|
+
try:
|
52
|
+
return self.file_content.decode(encoding.encoding)
|
53
|
+
except UnicodeDecodeError:
|
54
|
+
continue
|
55
|
+
else:
|
56
|
+
raise ValueError("Neither file_path nor file_content is provided for encoding detection.")
|
57
|
+
else:
|
58
|
+
raise RuntimeError(f"Error loading content with encoding {self.encoding}.") from e
|
59
|
+
except Exception as e:
|
60
|
+
raise RuntimeError(f"Error loading content.") from e
|
61
|
+
|
62
|
+
def lazy_load(self) -> Iterator[Document]:
|
63
|
+
"""Load from file path."""
|
64
|
+
content_json = self.get_content()
|
65
|
+
|
66
|
+
if isinstance(content_json, list):
|
67
|
+
data_dict = {str(i): item for i, item in enumerate(content_json)}
|
68
|
+
else:
|
69
|
+
data_dict = content_json
|
70
|
+
chunks = RecursiveJsonSplitter(max_chunk_size=self.max_tokens).split_json(json_data=data_dict)
|
71
|
+
for chunk in chunks:
|
72
|
+
metadata = {"source": str(self.file_path) if hasattr(self, 'file_path') else self.file_name}
|
73
|
+
yield Document(page_content=json.dumps(chunk), metadata=metadata)
|
{alita_sdk-0.3.252 → alita_sdk-0.3.254}/alita_sdk/runtime/langchain/document_loaders/constants.py
RENAMED
@@ -13,17 +13,18 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
from langchain_community.document_loaders import (
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
UnstructuredMarkdownLoader,
|
17
|
+
AirbyteJSONLoader, UnstructuredHTMLLoader,
|
18
|
+
PythonLoader)
|
19
19
|
|
20
20
|
from .AlitaCSVLoader import AlitaCSVLoader
|
21
21
|
from .AlitaDocxMammothLoader import AlitaDocxMammothLoader
|
22
22
|
from .AlitaExcelLoader import AlitaExcelLoader
|
23
23
|
from .AlitaImageLoader import AlitaImageLoader
|
24
|
+
from .AlitaJSONLoader import AlitaJSONLoader
|
24
25
|
from .AlitaPDFLoader import AlitaPDFLoader
|
25
|
-
from .AlitaTextLoader import AlitaTextLoader
|
26
26
|
from .AlitaPowerPointLoader import AlitaPowerPointLoader
|
27
|
+
from .AlitaTextLoader import AlitaTextLoader
|
27
28
|
|
28
29
|
loaders_map = {
|
29
30
|
'.png': {
|
@@ -130,11 +131,9 @@ loaders_map = {
|
|
130
131
|
'kwargs': {}
|
131
132
|
},
|
132
133
|
'.json': {
|
133
|
-
'class':
|
134
|
+
'class': AlitaJSONLoader,
|
134
135
|
'is_multimodal_processing': False,
|
135
|
-
'kwargs': {
|
136
|
-
'autodetect_encoding': True
|
137
|
-
}
|
136
|
+
'kwargs': {}
|
138
137
|
},
|
139
138
|
'.jsonl': {
|
140
139
|
'class': AirbyteJSONLoader,
|
@@ -154,12 +153,16 @@ loaders_map = {
|
|
154
153
|
'.ppt': {
|
155
154
|
'class': AlitaPowerPointLoader,
|
156
155
|
'is_multimodal_processing': False,
|
157
|
-
'kwargs': {
|
156
|
+
'kwargs': {
|
157
|
+
'mode': 'paged'
|
158
|
+
}
|
158
159
|
},
|
159
160
|
'.pptx': {
|
160
161
|
'class': AlitaPowerPointLoader,
|
161
162
|
'is_multimodal_processing': False,
|
162
|
-
'kwargs': {
|
163
|
+
'kwargs': {
|
164
|
+
'mode': 'paged'
|
165
|
+
}
|
163
166
|
},
|
164
167
|
'.py': {
|
165
168
|
'class': PythonLoader,
|
@@ -0,0 +1,101 @@
|
|
1
|
+
import uuid
|
2
|
+
from logging import getLogger
|
3
|
+
from typing import Any, Type, Literal, Optional, Union, List
|
4
|
+
|
5
|
+
from langchain_core.tools import BaseTool
|
6
|
+
from pydantic import BaseModel, Field, create_model, EmailStr, constr
|
7
|
+
|
8
|
+
logger = getLogger(__name__)
|
9
|
+
|
10
|
+
|
11
|
+
class McpServerTool(BaseTool):
|
12
|
+
name: str
|
13
|
+
description: str
|
14
|
+
args_schema: Optional[Type[BaseModel]] = None
|
15
|
+
return_type: str = "str"
|
16
|
+
client: Any
|
17
|
+
server: str
|
18
|
+
tool_timeout_sec: int = 60
|
19
|
+
|
20
|
+
|
21
|
+
@staticmethod
|
22
|
+
def create_pydantic_model_from_schema(schema: dict, model_name: str = "ArgsSchema"):
|
23
|
+
def parse_type(field: dict, name: str = "Field") -> Any:
|
24
|
+
if "allOf" in field:
|
25
|
+
merged = {}
|
26
|
+
required = set()
|
27
|
+
for idx, subschema in enumerate(field["allOf"]):
|
28
|
+
sub_type = parse_type(subschema, f"{name}AllOf{idx}")
|
29
|
+
if hasattr(sub_type, "__fields__"):
|
30
|
+
merged.update({k: (v.outer_type_, v.default) for k, v in sub_type.__fields__.items()})
|
31
|
+
required.update({k for k, v in sub_type.__fields__.items() if v.required})
|
32
|
+
if merged:
|
33
|
+
return create_model(f"{name}AllOf", **merged)
|
34
|
+
return Any
|
35
|
+
if "anyOf" in field or "oneOf" in field:
|
36
|
+
key = "anyOf" if "anyOf" in field else "oneOf"
|
37
|
+
types = [parse_type(sub, f"{name}{key.capitalize()}{i}") for i, sub in enumerate(field[key])]
|
38
|
+
# Check for null type
|
39
|
+
if any(sub.get("type") == "null" for sub in field[key]):
|
40
|
+
non_null_types = [parse_type(sub, f"{name}{key.capitalize()}{i}")
|
41
|
+
for i, sub in enumerate(field[key]) if sub.get("type") != "null"]
|
42
|
+
if len(non_null_types) == 1:
|
43
|
+
return Optional[non_null_types[0]]
|
44
|
+
return Union[tuple(types)]
|
45
|
+
t = field.get("type")
|
46
|
+
if isinstance(t, list):
|
47
|
+
if "null" in t:
|
48
|
+
non_null = [x for x in t if x != "null"]
|
49
|
+
if len(non_null) == 1:
|
50
|
+
field = dict(field)
|
51
|
+
field["type"] = non_null[0]
|
52
|
+
return Optional[parse_type(field, name)]
|
53
|
+
return Any
|
54
|
+
return Any
|
55
|
+
if t == "string":
|
56
|
+
if "enum" in field:
|
57
|
+
return Literal[tuple(field["enum"])]
|
58
|
+
if field.get("format") == "email":
|
59
|
+
return EmailStr
|
60
|
+
if "pattern" in field:
|
61
|
+
return constr(regex=field["pattern"])
|
62
|
+
return str
|
63
|
+
if t == "integer":
|
64
|
+
return int
|
65
|
+
if t == "number":
|
66
|
+
return float
|
67
|
+
if t == "boolean":
|
68
|
+
return bool
|
69
|
+
if t == "object":
|
70
|
+
return McpServerTool.create_pydantic_model_from_schema(field, name.capitalize())
|
71
|
+
if t == "array":
|
72
|
+
items = field.get("items", {})
|
73
|
+
return List[parse_type(items, name + "Item")]
|
74
|
+
return Any
|
75
|
+
|
76
|
+
properties = schema.get("properties", {})
|
77
|
+
required = set(schema.get("required", []))
|
78
|
+
fields = {}
|
79
|
+
for name, prop in properties.items():
|
80
|
+
typ = parse_type(prop, name.capitalize())
|
81
|
+
default = prop.get("default", ... if name in required else None)
|
82
|
+
field_args = {}
|
83
|
+
if "description" in prop:
|
84
|
+
field_args["description"] = prop["description"]
|
85
|
+
if "format" in prop:
|
86
|
+
field_args["format"] = prop["format"]
|
87
|
+
fields[name] = (typ, Field(default, **field_args))
|
88
|
+
return create_model(model_name, **fields)
|
89
|
+
|
90
|
+
def _run(self, *args, **kwargs):
|
91
|
+
call_data = {
|
92
|
+
"server": self.server,
|
93
|
+
"tool_timeout_sec": self.tool_timeout_sec,
|
94
|
+
"tool_call_id": str(uuid.uuid4()),
|
95
|
+
"params": {
|
96
|
+
"name": self.name,
|
97
|
+
"arguments": kwargs
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
return self.client.mcp_tool_call(call_data)
|
@@ -1,18 +1,16 @@
|
|
1
1
|
import json
|
2
2
|
import math
|
3
|
-
import
|
4
|
-
from typing import Any, Optional, List, Dict,
|
3
|
+
from logging import getLogger
|
4
|
+
from typing import Any, Optional, List, Dict, Generator
|
5
5
|
|
6
6
|
from langchain_core.documents import Document
|
7
|
-
from pydantic import BaseModel, model_validator, Field
|
8
|
-
from ..langchain.tools.vector import VectorAdapter
|
9
7
|
from langchain_core.messages import HumanMessage
|
8
|
+
from pydantic import BaseModel, model_validator, Field
|
9
|
+
|
10
10
|
from alita_sdk.tools.elitea_base import BaseToolApiWrapper
|
11
11
|
from alita_sdk.tools.vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
|
12
|
-
from
|
13
|
-
|
12
|
+
from ..langchain.tools.vector import VectorAdapter
|
14
13
|
from ..utils.logging import dispatch_custom_event
|
15
|
-
from ..utils.utils import IndexerKeywords
|
16
14
|
|
17
15
|
logger = getLogger(__name__)
|
18
16
|
|
@@ -212,10 +210,6 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
212
210
|
tool_name="_clean_collection"
|
213
211
|
)
|
214
212
|
|
215
|
-
def _add_to_collection(self, entry_id, new_collection_value):
|
216
|
-
"""Add a new collection name to the `collection` key in the `metadata` column."""
|
217
|
-
self.vector_adapter.add_to_collection(self, entry_id, new_collection_value)
|
218
|
-
|
219
213
|
def index_documents(self, documents: Generator[Document, None, None], collection_suffix: str, progress_step: int = 20, clean_index: bool = True):
|
220
214
|
""" Index documents in the vectorstore.
|
221
215
|
|
@@ -6,7 +6,6 @@ from langchain_core.documents import Document
|
|
6
6
|
from pydantic import create_model, Field, SecretStr
|
7
7
|
|
8
8
|
# from alita_sdk.runtime.langchain.interfaces.llm_processor import get_embeddings
|
9
|
-
from .chunkers import markdown_chunker
|
10
9
|
from .utils.content_parser import process_content_by_type
|
11
10
|
from .vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
|
12
11
|
from ..runtime.tools.vectorstore_base import VectorStoreWrapperBase
|
@@ -141,7 +140,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
141
140
|
def _base_loader(self, **kwargs) -> Generator[Document, None, None]:
|
142
141
|
""" Loads documents from a source, processes them,
|
143
142
|
and returns a list of Document objects with base metadata: id and created_on."""
|
144
|
-
|
143
|
+
yield from ()
|
145
144
|
|
146
145
|
def _process_document(self, base_document: Document) -> Generator[Document, None, None]:
|
147
146
|
""" Process an existing base document to extract relevant metadata for full document preparation.
|
@@ -153,7 +152,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
153
152
|
|
154
153
|
Returns:
|
155
154
|
Document: The processed document with metadata."""
|
156
|
-
|
155
|
+
yield from ()
|
157
156
|
|
158
157
|
def index_data(self, **kwargs):
|
159
158
|
collection_suffix = kwargs.get("collection_suffix")
|
@@ -174,18 +173,20 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
174
173
|
return self._save_index(list(documents), collection_suffix=collection_suffix, progress_step=progress_step)
|
175
174
|
|
176
175
|
def _apply_loaders_chunkers(self, documents: Generator[Document, None, None], chunking_tool: str=None, chunking_config=None) -> Generator[Document, None, None]:
|
177
|
-
from alita_sdk.tools.chunkers import __confluence_chunkers__ as chunkers
|
176
|
+
from alita_sdk.tools.chunkers import __confluence_chunkers__ as chunkers
|
178
177
|
|
179
178
|
if chunking_config is None:
|
180
179
|
chunking_config = {}
|
181
180
|
chunking_config['embedding'] = self._embedding
|
182
181
|
chunking_config['llm'] = self.llm
|
183
|
-
|
182
|
+
|
184
183
|
for document in documents:
|
185
184
|
if content_type := document.metadata.get('loader_content_type', None):
|
186
185
|
# apply parsing based on content type and chunk if chunker was applied to parent doc
|
186
|
+
content = document.metadata.pop('loader_content', None)
|
187
187
|
yield from process_content_by_type(
|
188
188
|
document=document,
|
189
|
+
content=content,
|
189
190
|
extension_source=content_type, llm=self.llm, chunking_config=chunking_config)
|
190
191
|
elif chunking_tool:
|
191
192
|
# apply default chunker from toolkit config. No parsing.
|
@@ -205,9 +206,6 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
205
206
|
for dep in dependencies:
|
206
207
|
dep.metadata[IndexerKeywords.PARENT.value] = document.metadata.get('id', None)
|
207
208
|
yield dep
|
208
|
-
|
209
|
-
def _content_loader(self):
|
210
|
-
pass
|
211
209
|
|
212
210
|
def _reduce_duplicates(
|
213
211
|
self,
|
@@ -255,36 +253,6 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
255
253
|
def remove_ids_fn(self, idx_data, key: str):
|
256
254
|
raise NotImplementedError("Subclasses must implement this method")
|
257
255
|
|
258
|
-
def _process_documents(self, documents: List[Document]) -> Generator[Document, None, None]:
|
259
|
-
"""
|
260
|
-
Process a list of base documents to extract relevant metadata for full document preparation.
|
261
|
-
Used for late processing of documents after we ensure that the documents have to be indexed to avoid
|
262
|
-
time-consuming operations for documents which might be useless.
|
263
|
-
This function passed to index_documents method of vector store and called after _reduce_duplicates method.
|
264
|
-
|
265
|
-
Args:
|
266
|
-
documents (List[Document]): The base documents to process.
|
267
|
-
|
268
|
-
Returns:
|
269
|
-
Generator[Document, None, None]: A generator yielding processed documents with metadata.
|
270
|
-
"""
|
271
|
-
for doc in documents:
|
272
|
-
# Filter documents to process only those that either:
|
273
|
-
# - do not have a 'chunk_id' in their metadata, or
|
274
|
-
# - have 'chunk_id' explicitly set to 1.
|
275
|
-
# This prevents processing of irrelevant or duplicate chunks, improving efficiency.
|
276
|
-
chunk_id = doc.metadata.get("chunk_id")
|
277
|
-
if chunk_id is None or chunk_id == 1:
|
278
|
-
processed_docs = self._process_document(doc)
|
279
|
-
if processed_docs: # Only proceed if the list is not empty
|
280
|
-
for processed_doc in processed_docs:
|
281
|
-
# map processed document (child) to the original document (parent)
|
282
|
-
processed_doc.metadata[IndexerKeywords.PARENT.value] = doc.metadata.get('id', None)
|
283
|
-
if chunker:=self._get_dependencies_chunker(processed_doc):
|
284
|
-
yield from chunker(file_content_generator=iter([processed_doc]), config=self._get_dependencies_chunker_config())
|
285
|
-
else:
|
286
|
-
yield processed_doc
|
287
|
-
|
288
256
|
def remove_index(self, collection_suffix: str = ""):
|
289
257
|
"""Cleans the indexed data in the collection."""
|
290
258
|
super()._clean_collection(collection_suffix=collection_suffix)
|
@@ -65,8 +65,10 @@ class BitbucketAPIWrapper(BaseCodeToolApiWrapper):
|
|
65
65
|
"atlassian-python-api is not installed. "
|
66
66
|
"Please install it with `pip install atlassian-python-api`"
|
67
67
|
)
|
68
|
+
from langchain_core.utils import get_from_dict_or_env
|
69
|
+
url_value = get_from_dict_or_env(values, ["url"], "BITBUCKET_BASE_URL", default='https://api.bitbucket.org/')
|
68
70
|
cls._bitbucket = BitbucketCloudApi(
|
69
|
-
url=
|
71
|
+
url=url_value,
|
70
72
|
username=values['username'],
|
71
73
|
password=values['password'],
|
72
74
|
workspace=values['project'],
|
@@ -20,6 +20,7 @@ def get_tools(tool):
|
|
20
20
|
confluence_configuration=tool['settings']['confluence_configuration'],
|
21
21
|
limit=tool['settings'].get('limit', 5),
|
22
22
|
labels=parse_list(tool['settings'].get('labels', None)),
|
23
|
+
custom_headers=tool['settings'].get('custom_headers', {}),
|
23
24
|
additional_fields=tool['settings'].get('additional_fields', []),
|
24
25
|
verify_ssl=tool['settings'].get('verify_ssl', True),
|
25
26
|
alita=tool['settings'].get('alita'),
|
@@ -78,6 +79,8 @@ class ConfluenceToolkit(BaseToolkit):
|
|
78
79
|
number_of_retries=(int, Field(description="Number of retries", default=2)),
|
79
80
|
min_retry_seconds=(int, Field(description="Min retry, sec", default=10)),
|
80
81
|
max_retry_seconds=(int, Field(description="Max retry, sec", default=60)),
|
82
|
+
# optional field for custom headers as dictionary
|
83
|
+
custom_headers=(Optional[dict], Field(description="Custom headers for API requests", default=None)),
|
81
84
|
confluence_configuration=(Optional[ConfluenceConfiguration], Field(description="Confluence Configuration", json_schema_extra={'configuration_types': ['confluence']})),
|
82
85
|
pgvector_configuration=(Optional[PgVectorConfiguration], Field(default = None,
|
83
86
|
description="PgVector Configuration",
|
@@ -223,16 +223,21 @@ class ConfluenceAPIWrapper(BaseVectorStoreToolApiWrapper):
|
|
223
223
|
username = values.get('username')
|
224
224
|
token = values.get('token')
|
225
225
|
cloud = values.get('cloud')
|
226
|
-
# if values.get('collection_name'):
|
227
|
-
# values['collection_name'] = shortuuid.encode(values['collection_name'])
|
228
226
|
if token and is_cookie_token(token):
|
229
227
|
session = requests.Session()
|
230
228
|
session.cookies.update(parse_cookie_string(token))
|
231
|
-
|
229
|
+
client_instance = Confluence(url=url, session=session, cloud=cloud)
|
232
230
|
elif token:
|
233
|
-
|
231
|
+
client_instance = Confluence(url=url, token=token, cloud=cloud)
|
234
232
|
else:
|
235
|
-
|
233
|
+
client_instance = Confluence(url=url, username=username, password=api_key, cloud=cloud)
|
234
|
+
|
235
|
+
custom_headers = values.get('custom_headers', {})
|
236
|
+
logger.info(f"Jira tool: custom headers length: {len(custom_headers)}")
|
237
|
+
for header, value in custom_headers.items():
|
238
|
+
client_instance._update_header(header, value)
|
239
|
+
|
240
|
+
values['client'] = client_instance
|
236
241
|
return values
|
237
242
|
|
238
243
|
def __unquote_confluence_space(self) -> str | None:
|
@@ -124,6 +124,26 @@ class BaseToolApiWrapper(BaseModel):
|
|
124
124
|
def get_available_tools(self):
|
125
125
|
raise NotImplementedError("Subclasses should implement this method")
|
126
126
|
|
127
|
+
def _log_tool_event(self, message: str, tool_name: str = None):
|
128
|
+
"""Log data and dispatch custom event for the tool"""
|
129
|
+
|
130
|
+
try:
|
131
|
+
from langchain_core.callbacks import dispatch_custom_event
|
132
|
+
|
133
|
+
if tool_name is None:
|
134
|
+
tool_name = 'tool_progress'
|
135
|
+
dispatch_custom_event(
|
136
|
+
name="tool_execution_step",
|
137
|
+
data={
|
138
|
+
"message": message,
|
139
|
+
"tool_name": tool_name,
|
140
|
+
"toolkit": self.__class__.__name__,
|
141
|
+
},
|
142
|
+
)
|
143
|
+
except Exception as e:
|
144
|
+
logger.warning(f"Failed to dispatch progress event: {str(e)}")
|
145
|
+
|
146
|
+
|
127
147
|
def run(self, mode: str, *args: Any, **kwargs: Any):
|
128
148
|
if TOOLKIT_SPLITTER in mode:
|
129
149
|
mode = mode.rsplit(TOOLKIT_SPLITTER, maxsplit=1)[1]
|