alita-sdk 0.3.437__tar.gz → 0.3.439__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.
Potentially problematic release.
This version of alita-sdk might be problematic. Click here for more details.
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/PKG-INFO +1 -1
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/clients/client.py +16 -6
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/assistant.py +10 -2
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/toolkits/mcp.py +36 -12
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/toolkits/tools.py +13 -2
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/mcp_remote_tool.py +28 -0
- alita_sdk-0.3.439/alita_sdk/runtime/utils/mcp_oauth.py +103 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk.egg-info/PKG-INFO +1 -1
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk.egg-info/SOURCES.txt +1 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/pyproject.toml +1 -1
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/LICENSE +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/README.md +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/ado.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/bitbucket.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/browser.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/carrier.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/confluence.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/embedding.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/figma.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/google_places.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/jira.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/postman.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/rally.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/report_portal.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/salesforce.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/service_now.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/sharepoint.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/slack.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/sonar.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/sql.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/testio.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/xray.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/zephyr.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/configurations/zephyr_essential.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/clients/mcp_discovery.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/clients/mcp_manager.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/clients/sandbox_client.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/models/mcp_models.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/graph.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/image_generation.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/mcp_inspect_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/sandbox.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/vectorstore.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/tools/vectorstore_base.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/base_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/code_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/confluence/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/elitea_base.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/slack/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/utils/content_parser.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/setup.cfg +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.437 → alita_sdk-0.3.439}/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.439
|
|
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 <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -303,7 +303,7 @@ class AlitaClient:
|
|
|
303
303
|
app_type=None, memory=None, runtime='langchain',
|
|
304
304
|
application_variables: Optional[dict] = None,
|
|
305
305
|
version_details: Optional[dict] = None, store: Optional[BaseStore] = None,
|
|
306
|
-
llm: Optional[ChatOpenAI] = None):
|
|
306
|
+
llm: Optional[ChatOpenAI] = None, mcp_tokens: Optional[dict] = None):
|
|
307
307
|
if tools is None:
|
|
308
308
|
tools = []
|
|
309
309
|
if chat_history is None:
|
|
@@ -344,11 +344,11 @@ class AlitaClient:
|
|
|
344
344
|
app_type = "react"
|
|
345
345
|
if runtime == 'nonrunnable':
|
|
346
346
|
return LangChainAssistant(self, data, llm, chat_history, app_type,
|
|
347
|
-
tools=tools, memory=memory, store=store)
|
|
347
|
+
tools=tools, memory=memory, store=store, mcp_tokens=mcp_tokens)
|
|
348
348
|
if runtime == 'langchain':
|
|
349
349
|
return LangChainAssistant(self, data, llm,
|
|
350
350
|
chat_history, app_type,
|
|
351
|
-
tools=tools, memory=memory, store=store).runnable()
|
|
351
|
+
tools=tools, memory=memory, store=store, mcp_tokens=mcp_tokens).runnable()
|
|
352
352
|
elif runtime == 'llama':
|
|
353
353
|
raise NotImplementedError("LLama runtime is not supported")
|
|
354
354
|
|
|
@@ -568,7 +568,8 @@ class AlitaClient:
|
|
|
568
568
|
def predict_agent(self, llm: ChatOpenAI, instructions: str = "You are a helpful assistant.",
|
|
569
569
|
tools: Optional[list] = None, chat_history: Optional[List[Any]] = None,
|
|
570
570
|
memory=None, runtime='langchain', variables: Optional[list] = None,
|
|
571
|
-
store: Optional[BaseStore] = None, debug_mode: Optional[bool] = False
|
|
571
|
+
store: Optional[BaseStore] = None, debug_mode: Optional[bool] = False,
|
|
572
|
+
mcp_tokens: Optional[dict] = None):
|
|
572
573
|
"""
|
|
573
574
|
Create a predict-type agent with minimal configuration.
|
|
574
575
|
|
|
@@ -604,8 +605,17 @@ class AlitaClient:
|
|
|
604
605
|
'tools': tools, # Tool configs that will be processed by get_tools()
|
|
605
606
|
'variables': variables
|
|
606
607
|
}
|
|
607
|
-
return LangChainAssistant(
|
|
608
|
-
|
|
608
|
+
return LangChainAssistant(
|
|
609
|
+
self,
|
|
610
|
+
agent_data,
|
|
611
|
+
llm,
|
|
612
|
+
chat_history,
|
|
613
|
+
"predict",
|
|
614
|
+
memory=memory,
|
|
615
|
+
store=store,
|
|
616
|
+
debug_mode=debug_mode,
|
|
617
|
+
mcp_tokens=mcp_tokens
|
|
618
|
+
).runnable()
|
|
609
619
|
|
|
610
620
|
def test_toolkit_tool(self, toolkit_config: dict, tool_name: str, tool_params: dict = None,
|
|
611
621
|
runtime_config: dict = None, llm_model: str = None,
|
|
@@ -31,7 +31,8 @@ class Assistant:
|
|
|
31
31
|
tools: Optional[list] = [],
|
|
32
32
|
memory: Optional[Any] = None,
|
|
33
33
|
store: Optional[BaseStore] = None,
|
|
34
|
-
debug_mode: Optional[bool] = False
|
|
34
|
+
debug_mode: Optional[bool] = False,
|
|
35
|
+
mcp_tokens: Optional[dict] = None):
|
|
35
36
|
|
|
36
37
|
self.app_type = app_type
|
|
37
38
|
self.memory = memory
|
|
@@ -89,7 +90,14 @@ class Assistant:
|
|
|
89
90
|
for internal_tool_name in meta.get("internal_tools"):
|
|
90
91
|
version_tools.append({"type": "internal_tool", "name": internal_tool_name})
|
|
91
92
|
|
|
92
|
-
self.tools = get_tools(
|
|
93
|
+
self.tools = get_tools(
|
|
94
|
+
version_tools,
|
|
95
|
+
alita_client=alita,
|
|
96
|
+
llm=self.client,
|
|
97
|
+
memory_store=self.store,
|
|
98
|
+
debug_mode=debug_mode,
|
|
99
|
+
mcp_tokens=mcp_tokens
|
|
100
|
+
)
|
|
93
101
|
if tools:
|
|
94
102
|
self.tools += tools
|
|
95
103
|
# Handle prompt setup
|
|
@@ -7,7 +7,7 @@ Following MCP specification: https://modelcontextprotocol.io/specification/2025-
|
|
|
7
7
|
import logging
|
|
8
8
|
import re
|
|
9
9
|
import requests
|
|
10
|
-
from typing import List, Optional, Any, Dict, Literal, ClassVar
|
|
10
|
+
from typing import List, Optional, Any, Dict, Literal, ClassVar, Union
|
|
11
11
|
|
|
12
12
|
from langchain_core.tools import BaseToolkit, BaseTool
|
|
13
13
|
from pydantic import BaseModel, ConfigDict, Field
|
|
@@ -17,6 +17,12 @@ from ..tools.mcp_remote_tool import McpRemoteTool
|
|
|
17
17
|
from ..tools.mcp_inspect_tool import McpInspectTool
|
|
18
18
|
from ...tools.utils import TOOLKIT_SPLITTER, clean_string
|
|
19
19
|
from ..models.mcp_models import McpConnectionConfig
|
|
20
|
+
from ..utils.mcp_oauth import (
|
|
21
|
+
McpAuthorizationRequired,
|
|
22
|
+
canonical_resource,
|
|
23
|
+
extract_resource_metadata_url,
|
|
24
|
+
fetch_resource_metadata,
|
|
25
|
+
)
|
|
20
26
|
|
|
21
27
|
logger = logging.getLogger(__name__)
|
|
22
28
|
|
|
@@ -200,11 +206,10 @@ class McpToolkit(BaseToolkit):
|
|
|
200
206
|
)
|
|
201
207
|
),
|
|
202
208
|
timeout=(
|
|
203
|
-
int,
|
|
209
|
+
Union[int, str], # TODO: remove one I will figure out why UI sends str
|
|
204
210
|
Field(
|
|
205
|
-
default=
|
|
206
|
-
|
|
207
|
-
description="Request timeout in seconds"
|
|
211
|
+
default=300,
|
|
212
|
+
description="Request timeout in seconds (1-3600)"
|
|
208
213
|
)
|
|
209
214
|
),
|
|
210
215
|
discovery_mode=(
|
|
@@ -218,11 +223,10 @@ class McpToolkit(BaseToolkit):
|
|
|
218
223
|
)
|
|
219
224
|
),
|
|
220
225
|
discovery_interval=(
|
|
221
|
-
int,
|
|
226
|
+
Union[int, str],
|
|
222
227
|
Field(
|
|
223
228
|
default=300,
|
|
224
|
-
|
|
225
|
-
description="Discovery interval in seconds (for periodic discovery)"
|
|
229
|
+
description="Discovery interval in seconds (60-3600, for periodic discovery)"
|
|
226
230
|
)
|
|
227
231
|
),
|
|
228
232
|
selected_tools=(
|
|
@@ -243,11 +247,10 @@ class McpToolkit(BaseToolkit):
|
|
|
243
247
|
)
|
|
244
248
|
),
|
|
245
249
|
cache_ttl=(
|
|
246
|
-
int,
|
|
250
|
+
Union[int, str],
|
|
247
251
|
Field(
|
|
248
252
|
default=300,
|
|
249
|
-
|
|
250
|
-
description="Cache TTL in seconds"
|
|
253
|
+
description="Cache TTL in seconds (60-3600)"
|
|
251
254
|
)
|
|
252
255
|
),
|
|
253
256
|
__config__=ConfigDict(
|
|
@@ -309,6 +312,11 @@ class McpToolkit(BaseToolkit):
|
|
|
309
312
|
if not toolkit_name:
|
|
310
313
|
raise ValueError("toolkit_name is required")
|
|
311
314
|
|
|
315
|
+
# Convert numeric parameters that may come as strings from UI
|
|
316
|
+
timeout = safe_int(timeout, 60)
|
|
317
|
+
discovery_interval = safe_int(discovery_interval, 300)
|
|
318
|
+
cache_ttl = safe_int(cache_ttl, 300)
|
|
319
|
+
|
|
312
320
|
logger.info(f"Creating MCP toolkit: {toolkit_name}")
|
|
313
321
|
|
|
314
322
|
# Parse headers if they're provided as a JSON string
|
|
@@ -407,6 +415,9 @@ class McpToolkit(BaseToolkit):
|
|
|
407
415
|
logger.error(f"Discovery error details - URL: {connection_config.url}, Timeout: {timeout}s")
|
|
408
416
|
|
|
409
417
|
# Fallback to static mode if available and not already static
|
|
418
|
+
if isinstance(e, McpAuthorizationRequired):
|
|
419
|
+
# Authorization is required; surface upstream so the caller can prompt the user
|
|
420
|
+
raise
|
|
410
421
|
if client and discovery_mode != "static":
|
|
411
422
|
logger.info(f"Falling back to static discovery for toolkit '{toolkit_name}'")
|
|
412
423
|
tools = cls._create_tools_static(toolkit_name, selected_tools, timeout, client)
|
|
@@ -532,6 +543,19 @@ class McpToolkit(BaseToolkit):
|
|
|
532
543
|
timeout=timeout
|
|
533
544
|
)
|
|
534
545
|
|
|
546
|
+
auth_header = response.headers.get('WWW-Authenticate', '')
|
|
547
|
+
if response.status_code == 401:
|
|
548
|
+
resource_metadata_url = extract_resource_metadata_url(auth_header)
|
|
549
|
+
metadata = fetch_resource_metadata(resource_metadata_url, timeout=timeout) if resource_metadata_url else None
|
|
550
|
+
raise McpAuthorizationRequired(
|
|
551
|
+
message=f"MCP server {connection_config.url} requires OAuth authorization",
|
|
552
|
+
server_url=canonical_resource(connection_config.url),
|
|
553
|
+
resource_metadata_url=resource_metadata_url,
|
|
554
|
+
www_authenticate=auth_header,
|
|
555
|
+
resource_metadata=metadata,
|
|
556
|
+
status=response.status_code,
|
|
557
|
+
)
|
|
558
|
+
|
|
535
559
|
if response.status_code != 200:
|
|
536
560
|
logger.error(f"MCP server returned non-200 status: {response.status_code}")
|
|
537
561
|
raise Exception(f"HTTP {response.status_code}: {response.text}")
|
|
@@ -916,4 +940,4 @@ def get_all_discovered_servers():
|
|
|
916
940
|
"""Get status of all discovered servers."""
|
|
917
941
|
from ..clients.mcp_discovery import get_discovery_service
|
|
918
942
|
service = get_discovery_service()
|
|
919
|
-
return service.get_server_health()
|
|
943
|
+
return service.get_server_health()
|
|
@@ -19,6 +19,7 @@ from ..tools.image_generation import ImageGenerationToolkit
|
|
|
19
19
|
# Import community tools
|
|
20
20
|
from ...community import get_toolkits as community_toolkits, get_tools as community_tools
|
|
21
21
|
from ...tools.memory import MemoryToolkit
|
|
22
|
+
from ..utils.mcp_oauth import canonical_resource
|
|
22
23
|
from ...tools.utils import TOOLKIT_SPLITTER
|
|
23
24
|
|
|
24
25
|
logger = logging.getLogger(__name__)
|
|
@@ -37,7 +38,7 @@ def get_toolkits():
|
|
|
37
38
|
return core_toolkits + community_toolkits() + alita_toolkits()
|
|
38
39
|
|
|
39
40
|
|
|
40
|
-
def get_tools(tools_list: list, alita_client, llm, memory_store: BaseStore = None, debug_mode: Optional[bool] = False) -> list:
|
|
41
|
+
def get_tools(tools_list: list, alita_client, llm, memory_store: BaseStore = None, debug_mode: Optional[bool] = False, mcp_tokens: Optional[dict] = None) -> list:
|
|
41
42
|
prompts = []
|
|
42
43
|
tools = []
|
|
43
44
|
|
|
@@ -109,10 +110,20 @@ def get_tools(tools_list: list, alita_client, llm, memory_store: BaseStore = Non
|
|
|
109
110
|
toolkit_name=tool.get('toolkit_name', ''),
|
|
110
111
|
**tool['settings']).get_tools())
|
|
111
112
|
elif tool['type'] == 'mcp':
|
|
113
|
+
settings = dict(tool['settings'])
|
|
114
|
+
url = settings.get('url')
|
|
115
|
+
headers = settings.get('headers')
|
|
116
|
+
token = None
|
|
117
|
+
if mcp_tokens and url:
|
|
118
|
+
token = mcp_tokens.get(canonical_resource(url))
|
|
119
|
+
if token:
|
|
120
|
+
merged_headers = dict(headers) if headers else {}
|
|
121
|
+
merged_headers.setdefault('Authorization', f'Bearer {token}')
|
|
122
|
+
settings['headers'] = merged_headers
|
|
112
123
|
tools.extend(McpToolkit.get_toolkit(
|
|
113
124
|
toolkit_name=tool.get('toolkit_name', ''),
|
|
114
125
|
client=alita_client,
|
|
115
|
-
**
|
|
126
|
+
**settings).get_tools())
|
|
116
127
|
except Exception as e:
|
|
117
128
|
logger.error(f"Error initializing toolkit for tool '{tool.get('name', 'unknown')}': {e}", exc_info=True)
|
|
118
129
|
if debug_mode:
|
|
@@ -13,6 +13,12 @@ from typing import Any, Dict, Optional
|
|
|
13
13
|
|
|
14
14
|
from .mcp_server_tool import McpServerTool
|
|
15
15
|
from pydantic import Field
|
|
16
|
+
from ..utils.mcp_oauth import (
|
|
17
|
+
McpAuthorizationRequired,
|
|
18
|
+
canonical_resource,
|
|
19
|
+
extract_resource_metadata_url,
|
|
20
|
+
fetch_resource_metadata_async,
|
|
21
|
+
)
|
|
16
22
|
|
|
17
23
|
logger = logging.getLogger(__name__)
|
|
18
24
|
|
|
@@ -48,6 +54,9 @@ class McpRemoteTool(McpServerTool):
|
|
|
48
54
|
with ThreadPoolExecutor() as executor:
|
|
49
55
|
future = executor.submit(self._run_in_new_loop, kwargs)
|
|
50
56
|
return future.result(timeout=self.tool_timeout_sec)
|
|
57
|
+
except McpAuthorizationRequired:
|
|
58
|
+
# Bubble up so LangChain can surface a tool error with useful metadata
|
|
59
|
+
raise
|
|
51
60
|
except Exception as e:
|
|
52
61
|
logger.error(f"Error executing remote MCP tool '{self.name}': {e}")
|
|
53
62
|
return f"Error executing tool: {e}"
|
|
@@ -110,6 +119,25 @@ class McpRemoteTool(McpServerTool):
|
|
|
110
119
|
logger.debug(f"Request: {json.dumps(mcp_request, indent=2)}")
|
|
111
120
|
|
|
112
121
|
async with session.post(self.server_url, json=mcp_request, headers=headers) as response:
|
|
122
|
+
auth_header = response.headers.get('WWW-Authenticate') or response.headers.get('Www-Authenticate')
|
|
123
|
+
if response.status == 401:
|
|
124
|
+
resource_metadata_url = extract_resource_metadata_url(auth_header)
|
|
125
|
+
metadata = None
|
|
126
|
+
if resource_metadata_url:
|
|
127
|
+
metadata = await fetch_resource_metadata_async(
|
|
128
|
+
resource_metadata_url,
|
|
129
|
+
session=session,
|
|
130
|
+
timeout=self.tool_timeout_sec,
|
|
131
|
+
)
|
|
132
|
+
raise McpAuthorizationRequired(
|
|
133
|
+
message=f"MCP server {self.server_url} requires OAuth authorization",
|
|
134
|
+
server_url=canonical_resource(self.server_url),
|
|
135
|
+
resource_metadata_url=resource_metadata_url,
|
|
136
|
+
www_authenticate=auth_header,
|
|
137
|
+
resource_metadata=metadata,
|
|
138
|
+
status=response.status,
|
|
139
|
+
)
|
|
140
|
+
|
|
113
141
|
if response.status != 200:
|
|
114
142
|
error_text = await response.text()
|
|
115
143
|
raise Exception(f"HTTP {response.status}: {error_text}")
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import logging
|
|
3
|
+
import re
|
|
4
|
+
from typing import Any, Dict, Optional
|
|
5
|
+
from urllib.parse import urlparse
|
|
6
|
+
|
|
7
|
+
import requests
|
|
8
|
+
from langchain_core.tools import ToolException
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class McpAuthorizationRequired(ToolException):
|
|
14
|
+
"""Raised when an MCP server requires OAuth authorization before use."""
|
|
15
|
+
|
|
16
|
+
def __init__(
|
|
17
|
+
self,
|
|
18
|
+
message: str,
|
|
19
|
+
server_url: str,
|
|
20
|
+
resource_metadata_url: Optional[str] = None,
|
|
21
|
+
www_authenticate: Optional[str] = None,
|
|
22
|
+
resource_metadata: Optional[Dict[str, Any]] = None,
|
|
23
|
+
status: Optional[int] = None,
|
|
24
|
+
):
|
|
25
|
+
super().__init__(message)
|
|
26
|
+
self.server_url = server_url
|
|
27
|
+
self.resource_metadata_url = resource_metadata_url
|
|
28
|
+
self.www_authenticate = www_authenticate
|
|
29
|
+
self.resource_metadata = resource_metadata
|
|
30
|
+
self.status = status
|
|
31
|
+
|
|
32
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
33
|
+
return {
|
|
34
|
+
"message": str(self),
|
|
35
|
+
"server_url": self.server_url,
|
|
36
|
+
"resource_metadata_url": self.resource_metadata_url,
|
|
37
|
+
"www_authenticate": self.www_authenticate,
|
|
38
|
+
"resource_metadata": self.resource_metadata,
|
|
39
|
+
"status": self.status,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def extract_resource_metadata_url(www_authenticate: Optional[str]) -> Optional[str]:
|
|
44
|
+
"""Pull the resource_metadata URL from a WWW-Authenticate header if present."""
|
|
45
|
+
if not www_authenticate:
|
|
46
|
+
return None
|
|
47
|
+
|
|
48
|
+
# RFC9728 returns `resource_metadata="<url>"` inside the header value
|
|
49
|
+
match = re.search(r'resource_metadata\s*=\s*\"?([^\", ]+)\"?', www_authenticate)
|
|
50
|
+
if match:
|
|
51
|
+
return match.group(1)
|
|
52
|
+
return None
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def fetch_resource_metadata(resource_metadata_url: str, timeout: int = 10) -> Optional[Dict[str, Any]]:
|
|
56
|
+
"""Fetch and parse the protected resource metadata document."""
|
|
57
|
+
try:
|
|
58
|
+
resp = requests.get(resource_metadata_url, timeout=timeout)
|
|
59
|
+
resp.raise_for_status()
|
|
60
|
+
return resp.json()
|
|
61
|
+
except Exception as exc: # broad catch – we want to surface auth requirement even if this fails
|
|
62
|
+
logger.warning("Failed to fetch resource metadata from %s: %s", resource_metadata_url, exc)
|
|
63
|
+
return None
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
async def fetch_resource_metadata_async(resource_metadata_url: str, session=None, timeout: int = 10) -> Optional[Dict[str, Any]]:
|
|
67
|
+
"""Async variant for fetching protected resource metadata."""
|
|
68
|
+
try:
|
|
69
|
+
import aiohttp
|
|
70
|
+
|
|
71
|
+
client_timeout = aiohttp.ClientTimeout(total=timeout)
|
|
72
|
+
if session:
|
|
73
|
+
async with session.get(resource_metadata_url, timeout=client_timeout) as resp:
|
|
74
|
+
text = await resp.text()
|
|
75
|
+
else:
|
|
76
|
+
async with aiohttp.ClientSession(timeout=client_timeout) as local_session:
|
|
77
|
+
async with local_session.get(resource_metadata_url) as resp:
|
|
78
|
+
text = await resp.text()
|
|
79
|
+
|
|
80
|
+
try:
|
|
81
|
+
return json.loads(text)
|
|
82
|
+
except json.JSONDecodeError:
|
|
83
|
+
logger.warning("Resource metadata at %s is not valid JSON: %s", resource_metadata_url, text[:200])
|
|
84
|
+
return None
|
|
85
|
+
except Exception as exc:
|
|
86
|
+
logger.warning("Failed to fetch resource metadata from %s: %s", resource_metadata_url, exc)
|
|
87
|
+
return None
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def canonical_resource(server_url: str) -> str:
|
|
91
|
+
"""Produce a canonical resource identifier for the MCP server."""
|
|
92
|
+
parsed = urlparse(server_url)
|
|
93
|
+
# Normalize scheme/host casing per RFC guidance
|
|
94
|
+
normalized = parsed._replace(
|
|
95
|
+
scheme=parsed.scheme.lower(),
|
|
96
|
+
netloc=parsed.netloc.lower(),
|
|
97
|
+
)
|
|
98
|
+
resource = normalized.geturl()
|
|
99
|
+
|
|
100
|
+
# Prefer form without trailing slash unless path is meaningful
|
|
101
|
+
if resource.endswith("/") and parsed.path in ("", "/"):
|
|
102
|
+
resource = resource[:-1]
|
|
103
|
+
return resource
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alita_sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.439
|
|
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 <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -144,6 +144,7 @@ alita_sdk/runtime/utils/__init__.py
|
|
|
144
144
|
alita_sdk/runtime/utils/constants.py
|
|
145
145
|
alita_sdk/runtime/utils/evaluate.py
|
|
146
146
|
alita_sdk/runtime/utils/logging.py
|
|
147
|
+
alita_sdk/runtime/utils/mcp_oauth.py
|
|
147
148
|
alita_sdk/runtime/utils/save_dataframe.py
|
|
148
149
|
alita_sdk/runtime/utils/streamlit.py
|
|
149
150
|
alita_sdk/runtime/utils/toolkit_runtime.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/chat_message_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py
RENAMED
|
File without changes
|
{alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/__init__.py
RENAMED
|
File without changes
|
{alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/constants.py
RENAMED
|
File without changes
|
{alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/document_loaders/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/interfaces/kwextractor.py
RENAMED
|
File without changes
|
{alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/interfaces/llm_processor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alita_sdk-0.3.437 → alita_sdk-0.3.439}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py
RENAMED
|
File without changes
|
|
File without changes
|