alita-sdk 0.3.350__tar.gz → 0.3.352__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.350 → alita_sdk-0.3.352}/PKG-INFO +1 -1
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/constants.py +40 -2
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/langraph_agent.py +3 -4
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/llm.py +73 -105
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ado/repos/repos_wrapper.py +3 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ado/wiki/ado_wrapper.py +68 -8
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk.egg-info/PKG-INFO +1 -1
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/pyproject.toml +1 -1
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/LICENSE +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/README.md +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/ado.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/bitbucket.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/browser.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/carrier.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/confluence.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/embedding.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/figma.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/google_places.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/jira.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/postman.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/rally.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/report_portal.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/salesforce.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/service_now.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/sharepoint.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/slack.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/sonar.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/sql.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/testio.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/xray.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/zephyr.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/configurations/zephyr_essential.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/clients/client.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/assistant.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/graph.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/sandbox.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/vectorstore.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/tools/vectorstore_base.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/base_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/confluence/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/elitea_base.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/slack/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/utils/content_parser.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk.egg-info/SOURCES.txt +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/setup.cfg +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.350 → alita_sdk-0.3.352}/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.352
|
|
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
|
{alita_sdk-0.3.350 → alita_sdk-0.3.352}/alita_sdk/runtime/langchain/document_loaders/constants.py
RENAMED
|
@@ -255,7 +255,7 @@ document_loaders_map = {
|
|
|
255
255
|
},
|
|
256
256
|
'.xml': {
|
|
257
257
|
'class': UnstructuredXMLLoader,
|
|
258
|
-
'mime_type': '
|
|
258
|
+
'mime_type': 'text/xml',
|
|
259
259
|
'is_multimodal_processing': False,
|
|
260
260
|
'kwargs': {},
|
|
261
261
|
'allowed_to_override': [
|
|
@@ -300,5 +300,43 @@ document_loaders_map = {
|
|
|
300
300
|
}
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
+
code_extensions = [
|
|
304
|
+
# '.py', # Python
|
|
305
|
+
'.js', # JavaScript
|
|
306
|
+
'.ts', # TypeScript
|
|
307
|
+
'.java', # Java
|
|
308
|
+
'.cpp', # C++
|
|
309
|
+
'.c', # C
|
|
310
|
+
'.cs', # C#
|
|
311
|
+
'.rb', # Ruby
|
|
312
|
+
'.go', # Go
|
|
313
|
+
'.php', # PHP
|
|
314
|
+
'.swift', # Swift
|
|
315
|
+
'.kt', # Kotlin
|
|
316
|
+
'.rs', # Rust
|
|
317
|
+
'.m', # Objective-C
|
|
318
|
+
'.scala', # Scala
|
|
319
|
+
'.pl', # Perl
|
|
320
|
+
'.sh', # Shell
|
|
321
|
+
'.bat', # Batch
|
|
322
|
+
'.lua', # Lua
|
|
323
|
+
'.r', # R
|
|
324
|
+
'.pas', # Pascal
|
|
325
|
+
'.asm', # Assembly
|
|
326
|
+
'.dart', # Dart
|
|
327
|
+
'.groovy', # Groovy
|
|
328
|
+
'.sql', # SQL
|
|
329
|
+
]
|
|
330
|
+
|
|
331
|
+
default_loader_config = {
|
|
332
|
+
'class': AlitaTextLoader,
|
|
333
|
+
'mime_type': 'text/plain',
|
|
334
|
+
'is_multimodal_processing': False,
|
|
335
|
+
'kwargs': {},
|
|
336
|
+
'allowed_to_override': ['max_tokens']
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
code_loaders_map = {ext: default_loader_config for ext in code_extensions}
|
|
340
|
+
|
|
303
341
|
# Combined mapping for backward compatibility
|
|
304
|
-
loaders_map = {**image_loaders_map, **document_loaders_map}
|
|
342
|
+
loaders_map = {**image_loaders_map, **document_loaders_map, **code_loaders_map}
|
|
@@ -583,11 +583,10 @@ def create_graph(
|
|
|
583
583
|
available_tools = [tool for tool in tools if isinstance(tool, BaseTool)]
|
|
584
584
|
|
|
585
585
|
lg_builder.add_node(node_id, LLMNode(
|
|
586
|
-
client=client,
|
|
587
|
-
|
|
588
|
-
name=node['id'],
|
|
586
|
+
client=client,
|
|
587
|
+
input_mapping=node.get('input_mapping', {'messages': {'type': 'variable', 'value': 'messages'}}),
|
|
588
|
+
name=node['id'],
|
|
589
589
|
return_type='dict',
|
|
590
|
-
response_key=node.get('response_key', 'messages'),
|
|
591
590
|
structured_output_dict=output_vars_dict,
|
|
592
591
|
output_variables=output_vars,
|
|
593
592
|
input_variables=node.get('input', ['messages']),
|
|
@@ -1,73 +1,31 @@
|
|
|
1
|
-
import json
|
|
2
1
|
import logging
|
|
3
2
|
from traceback import format_exc
|
|
4
|
-
from typing import Any, Optional,
|
|
3
|
+
from typing import Any, Optional, List, Union
|
|
5
4
|
|
|
6
|
-
from langchain_core.messages import HumanMessage,
|
|
7
|
-
from langchain_core.tools import BaseTool, ToolException
|
|
5
|
+
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
|
|
8
6
|
from langchain_core.runnables import RunnableConfig
|
|
7
|
+
from langchain_core.tools import BaseTool, ToolException
|
|
9
8
|
from pydantic import Field
|
|
10
9
|
|
|
11
|
-
from ..langchain.utils import
|
|
10
|
+
from ..langchain.utils import create_pydantic_model, propagate_the_input_mapping
|
|
12
11
|
|
|
13
12
|
logger = logging.getLogger(__name__)
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
def create_llm_input_with_messages(
|
|
17
|
-
prompt: Dict[str, str],
|
|
18
|
-
params: Dict[str, Any]
|
|
19
|
-
) -> List[BaseMessage]:
|
|
20
|
-
"""
|
|
21
|
-
Create LLM input by combining system prompt with chat history messages.
|
|
22
|
-
|
|
23
|
-
Args:
|
|
24
|
-
prompt: The prompt configuration with template
|
|
25
|
-
params: Additional parameters for prompt formatting
|
|
26
|
-
|
|
27
|
-
Returns:
|
|
28
|
-
List of messages to send to LLM
|
|
29
|
-
"""
|
|
30
|
-
logger.info(f"Creating LLM input with params: {params}")
|
|
31
|
-
|
|
32
|
-
# Build the input messages
|
|
33
|
-
input_messages = []
|
|
34
|
-
messages = params.get('messages', [])
|
|
35
|
-
|
|
36
|
-
# Add system message from prompt if available
|
|
37
|
-
if prompt:
|
|
38
|
-
try:
|
|
39
|
-
# Format the system message using the prompt template or value and params
|
|
40
|
-
prompt_str = prompt['template'] if 'template' in prompt else prompt['value']
|
|
41
|
-
prompt_content = prompt_str.format(**params) if params else prompt_str
|
|
42
|
-
# if user hasn't specified chat history, add system message as HumanMessage
|
|
43
|
-
input_messages.append(SystemMessage(content=prompt_content) if messages else HumanMessage(content=prompt_content))
|
|
44
|
-
except KeyError as e:
|
|
45
|
-
error_msg = f"KeyError in prompt formatting: {e}. Available params: {list(params.keys())}"
|
|
46
|
-
logger.error(error_msg)
|
|
47
|
-
raise ToolException(error_msg)
|
|
48
|
-
|
|
49
|
-
# Add the chat history messages
|
|
50
|
-
|
|
51
|
-
if messages:
|
|
52
|
-
input_messages.extend(messages)
|
|
53
|
-
|
|
54
|
-
return input_messages
|
|
55
|
-
|
|
56
|
-
|
|
57
14
|
class LLMNode(BaseTool):
|
|
58
15
|
"""Enhanced LLM node with chat history and tool binding support"""
|
|
59
16
|
|
|
60
17
|
# Override BaseTool required fields
|
|
61
18
|
name: str = Field(default='LLMNode', description='Name of the LLM node')
|
|
62
|
-
description: str = Field(default='This is tool node for LLM with chat history and tool support',
|
|
63
|
-
|
|
19
|
+
description: str = Field(default='This is tool node for LLM with chat history and tool support',
|
|
20
|
+
description='Description of the LLM node')
|
|
21
|
+
|
|
64
22
|
# LLM-specific fields
|
|
65
|
-
prompt: Dict[str, str] = Field(default_factory=dict, description='Prompt configuration')
|
|
66
23
|
client: Any = Field(default=None, description='LLM client instance')
|
|
67
24
|
return_type: str = Field(default="str", description='Return type')
|
|
68
25
|
response_key: str = Field(default="messages", description='Response key')
|
|
69
26
|
structured_output_dict: Optional[dict[str, str]] = Field(default=None, description='Structured output dictionary')
|
|
70
27
|
output_variables: Optional[List[str]] = Field(default=None, description='Output variables')
|
|
28
|
+
input_mapping: Optional[dict[str, dict]] = Field(default=None, description='Input mapping')
|
|
71
29
|
input_variables: Optional[List[str]] = Field(default=None, description='Input variables')
|
|
72
30
|
structured_output: Optional[bool] = Field(default=False, description='Whether to use structured output')
|
|
73
31
|
available_tools: Optional[List[BaseTool]] = Field(default=None, description='Available tools for binding')
|
|
@@ -101,10 +59,10 @@ class LLMNode(BaseTool):
|
|
|
101
59
|
return filtered_tools
|
|
102
60
|
|
|
103
61
|
def invoke(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
62
|
+
self,
|
|
63
|
+
state: Union[str, dict],
|
|
64
|
+
config: Optional[RunnableConfig] = None,
|
|
65
|
+
**kwargs: Any,
|
|
108
66
|
) -> dict:
|
|
109
67
|
"""
|
|
110
68
|
Invoke the LLM node with proper message handling and tool binding.
|
|
@@ -118,24 +76,33 @@ class LLMNode(BaseTool):
|
|
|
118
76
|
Updated state with LLM response
|
|
119
77
|
"""
|
|
120
78
|
# Extract messages from state
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
#
|
|
126
|
-
|
|
127
|
-
if
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
79
|
+
|
|
80
|
+
func_args = propagate_the_input_mapping(input_mapping=self.input_mapping, input_variables=self.input_variables,
|
|
81
|
+
state=state)
|
|
82
|
+
|
|
83
|
+
# there are 2 possible flows here: LLM node from pipeline (with prompt and task)
|
|
84
|
+
# or standalone LLM node for chat (with messages only)
|
|
85
|
+
if 'system' in func_args.keys():
|
|
86
|
+
# Flow for LLM node with prompt/task from pipeline
|
|
87
|
+
if not func_args.get('system') or not func_args.get('task'):
|
|
88
|
+
raise ToolException(f"LLMNode requires 'system' and 'task' parameters in input mapping. "
|
|
89
|
+
f"Actual params: {func_args}")
|
|
90
|
+
messages = [SystemMessage(content=func_args.get('system')), HumanMessage(content=func_args.get('task'))]
|
|
91
|
+
messages.extend(func_args.get('chat_history', []))
|
|
92
|
+
else:
|
|
93
|
+
# Flow for chat-based LLM node w/o prompt/task from pipeline but with messages in state
|
|
94
|
+
# verify messages structure
|
|
95
|
+
messages = state.get("messages", []) if isinstance(state, dict) else []
|
|
96
|
+
if messages:
|
|
97
|
+
# the last message has to be HumanMessage
|
|
98
|
+
if not isinstance(messages[-1], HumanMessage):
|
|
99
|
+
raise ToolException("LLMNode requires the last message to be a HumanMessage")
|
|
100
|
+
else:
|
|
101
|
+
raise ToolException("LLMNode requires 'messages' in state for chat-based interaction")
|
|
102
|
+
|
|
136
103
|
# Get the LLM client, potentially with tools bound
|
|
137
104
|
llm_client = self.client
|
|
138
|
-
|
|
105
|
+
|
|
139
106
|
if len(self.tool_names or []) > 0:
|
|
140
107
|
filtered_tools = self.get_filtered_tools()
|
|
141
108
|
if filtered_tools:
|
|
@@ -143,7 +110,7 @@ class LLMNode(BaseTool):
|
|
|
143
110
|
llm_client = self.client.bind_tools(filtered_tools)
|
|
144
111
|
else:
|
|
145
112
|
logger.warning("No tools to bind to LLM")
|
|
146
|
-
|
|
113
|
+
|
|
147
114
|
try:
|
|
148
115
|
if self.structured_output and self.output_variables:
|
|
149
116
|
# Handle structured output
|
|
@@ -156,17 +123,17 @@ class LLMNode(BaseTool):
|
|
|
156
123
|
}
|
|
157
124
|
struct_model = create_pydantic_model(f"LLMOutput", struct_params)
|
|
158
125
|
llm = llm_client.with_structured_output(struct_model)
|
|
159
|
-
completion = llm.invoke(
|
|
126
|
+
completion = llm.invoke(messages, config=config)
|
|
160
127
|
result = completion.model_dump()
|
|
161
|
-
|
|
128
|
+
|
|
162
129
|
# Ensure messages are properly formatted
|
|
163
130
|
if result.get('messages') and isinstance(result['messages'], list):
|
|
164
131
|
result['messages'] = [{'role': 'assistant', 'content': '\n'.join(result['messages'])}]
|
|
165
|
-
|
|
132
|
+
|
|
166
133
|
return result
|
|
167
134
|
else:
|
|
168
135
|
# Handle regular completion
|
|
169
|
-
completion = llm_client.invoke(
|
|
136
|
+
completion = llm_client.invoke(messages, config=config)
|
|
170
137
|
logger.info(f"Initial completion: {completion}")
|
|
171
138
|
# Handle both tool-calling and regular responses
|
|
172
139
|
if hasattr(completion, 'tool_calls') and completion.tool_calls:
|
|
@@ -174,24 +141,30 @@ class LLMNode(BaseTool):
|
|
|
174
141
|
new_messages = messages + [completion]
|
|
175
142
|
max_iterations = 15
|
|
176
143
|
iteration = 0
|
|
177
|
-
|
|
144
|
+
|
|
178
145
|
# Continue executing tools until no more tool calls or max iterations reached
|
|
179
146
|
current_completion = completion
|
|
180
|
-
while (hasattr(current_completion, 'tool_calls') and
|
|
181
|
-
current_completion.tool_calls and
|
|
147
|
+
while (hasattr(current_completion, 'tool_calls') and
|
|
148
|
+
current_completion.tool_calls and
|
|
182
149
|
iteration < max_iterations):
|
|
183
|
-
|
|
150
|
+
|
|
184
151
|
iteration += 1
|
|
185
152
|
logger.info(f"Tool execution iteration {iteration}/{max_iterations}")
|
|
186
|
-
|
|
153
|
+
|
|
187
154
|
# Execute each tool call in the current completion
|
|
188
|
-
tool_calls = current_completion.tool_calls if hasattr(current_completion.tool_calls,
|
|
189
|
-
|
|
155
|
+
tool_calls = current_completion.tool_calls if hasattr(current_completion.tool_calls,
|
|
156
|
+
'__iter__') else []
|
|
157
|
+
|
|
190
158
|
for tool_call in tool_calls:
|
|
191
|
-
tool_name = tool_call.get('name', '') if isinstance(tool_call, dict) else getattr(tool_call,
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
159
|
+
tool_name = tool_call.get('name', '') if isinstance(tool_call, dict) else getattr(tool_call,
|
|
160
|
+
'name',
|
|
161
|
+
'')
|
|
162
|
+
tool_args = tool_call.get('args', {}) if isinstance(tool_call, dict) else getattr(tool_call,
|
|
163
|
+
'args',
|
|
164
|
+
{})
|
|
165
|
+
tool_call_id = tool_call.get('id', '') if isinstance(tool_call, dict) else getattr(
|
|
166
|
+
tool_call, 'id', '')
|
|
167
|
+
|
|
195
168
|
# Find the tool in filtered tools
|
|
196
169
|
filtered_tools = self.get_filtered_tools()
|
|
197
170
|
tool_to_execute = None
|
|
@@ -199,12 +172,12 @@ class LLMNode(BaseTool):
|
|
|
199
172
|
if tool.name == tool_name:
|
|
200
173
|
tool_to_execute = tool
|
|
201
174
|
break
|
|
202
|
-
|
|
175
|
+
|
|
203
176
|
if tool_to_execute:
|
|
204
177
|
try:
|
|
205
178
|
logger.info(f"Executing tool '{tool_name}' with args: {tool_args}")
|
|
206
179
|
tool_result = tool_to_execute.invoke(tool_args)
|
|
207
|
-
|
|
180
|
+
|
|
208
181
|
# Create tool message with result
|
|
209
182
|
from langchain_core.messages import ToolMessage
|
|
210
183
|
tool_message = ToolMessage(
|
|
@@ -212,7 +185,7 @@ class LLMNode(BaseTool):
|
|
|
212
185
|
tool_call_id=tool_call_id
|
|
213
186
|
)
|
|
214
187
|
new_messages.append(tool_message)
|
|
215
|
-
|
|
188
|
+
|
|
216
189
|
except Exception as e:
|
|
217
190
|
logger.error(f"Error executing tool '{tool_name}': {e}")
|
|
218
191
|
# Create error tool message
|
|
@@ -231,26 +204,26 @@ class LLMNode(BaseTool):
|
|
|
231
204
|
tool_call_id=tool_call_id
|
|
232
205
|
)
|
|
233
206
|
new_messages.append(tool_message)
|
|
234
|
-
|
|
207
|
+
|
|
235
208
|
# Call LLM again with tool results to get next response
|
|
236
209
|
try:
|
|
237
210
|
current_completion = llm_client.invoke(new_messages, config=config)
|
|
238
211
|
new_messages.append(current_completion)
|
|
239
|
-
|
|
212
|
+
|
|
240
213
|
# Check if we still have tool calls
|
|
241
214
|
if hasattr(current_completion, 'tool_calls') and current_completion.tool_calls:
|
|
242
215
|
logger.info(f"LLM requested {len(current_completion.tool_calls)} more tool calls")
|
|
243
216
|
else:
|
|
244
217
|
logger.info("LLM completed without requesting more tools")
|
|
245
218
|
break
|
|
246
|
-
|
|
219
|
+
|
|
247
220
|
except Exception as e:
|
|
248
221
|
logger.error(f"Error in LLM call during iteration {iteration}: {e}")
|
|
249
222
|
# Add error message and break the loop
|
|
250
223
|
error_msg = f"Error processing tool results in iteration {iteration}: {str(e)}"
|
|
251
224
|
new_messages.append(AIMessage(content=error_msg))
|
|
252
225
|
break
|
|
253
|
-
|
|
226
|
+
|
|
254
227
|
# Log completion status
|
|
255
228
|
if iteration >= max_iterations:
|
|
256
229
|
logger.warning(f"Reached maximum iterations ({max_iterations}) for tool execution")
|
|
@@ -259,30 +232,25 @@ class LLMNode(BaseTool):
|
|
|
259
232
|
new_messages.append(AIMessage(content=warning_msg))
|
|
260
233
|
else:
|
|
261
234
|
logger.info(f"Tool execution completed after {iteration} iterations")
|
|
262
|
-
|
|
235
|
+
|
|
263
236
|
return {"messages": new_messages}
|
|
264
237
|
else:
|
|
265
238
|
# Regular text response
|
|
266
239
|
content = completion.content.strip() if hasattr(completion, 'content') else str(completion)
|
|
267
|
-
|
|
240
|
+
|
|
268
241
|
# Try to extract JSON if output variables are specified (but exclude 'messages' which is handled separately)
|
|
269
242
|
json_output_vars = [var for var in (self.output_variables or []) if var != 'messages']
|
|
270
243
|
if json_output_vars:
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
response_data = {key: response.get(key, content) for key in json_output_vars}
|
|
274
|
-
except (ValueError, json.JSONDecodeError) as e:
|
|
275
|
-
logger.warning(
|
|
276
|
-
f"Expected JSON output but got plain text. Output variables specified: {json_output_vars}. Error: {e}")
|
|
277
|
-
response_data = {var: content for var in json_output_vars}
|
|
244
|
+
# set response to be the first output variable for non-structured output
|
|
245
|
+
response_data = {json_output_vars[0]: content}
|
|
278
246
|
new_messages = messages + [AIMessage(content=content)]
|
|
279
247
|
response_data['messages'] = new_messages
|
|
280
248
|
return response_data
|
|
281
|
-
|
|
249
|
+
|
|
282
250
|
# Simple text response (either no output variables or JSON parsing failed)
|
|
283
251
|
new_messages = messages + [AIMessage(content=content)]
|
|
284
252
|
return {"messages": new_messages}
|
|
285
|
-
|
|
253
|
+
|
|
286
254
|
except Exception as e:
|
|
287
255
|
logger.error(f"Error in LLM Node: {format_exc()}")
|
|
288
256
|
error_msg = f"Error: {e}"
|
|
@@ -291,4 +259,4 @@ class LLMNode(BaseTool):
|
|
|
291
259
|
|
|
292
260
|
def _run(self, *args, **kwargs):
|
|
293
261
|
# Legacy support for old interface
|
|
294
|
-
return self.invoke(kwargs, **kwargs)
|
|
262
|
+
return self.invoke(kwargs, **kwargs)
|
|
@@ -644,6 +644,9 @@ class ReposApiWrapper(BaseCodeToolApiWrapper):
|
|
|
644
644
|
|
|
645
645
|
return dumps(data)
|
|
646
646
|
|
|
647
|
+
def download_file(self, path):
|
|
648
|
+
return b"".join(self._client.get_item_content(self.repository_id, path=path, project=self.project, download=True))
|
|
649
|
+
|
|
647
650
|
def get_file_content(self, commit_id, path):
|
|
648
651
|
version_descriptor = GitVersionDescriptor(
|
|
649
652
|
version=commit_id, version_type="commit"
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import hashlib
|
|
2
2
|
import logging
|
|
3
|
+
import re
|
|
4
|
+
import requests
|
|
3
5
|
from typing import Generator, Literal, Optional
|
|
4
6
|
|
|
5
7
|
from azure.devops.connection import Connection
|
|
@@ -15,8 +17,11 @@ from pydantic import create_model, PrivateAttr, SecretStr
|
|
|
15
17
|
from pydantic import model_validator
|
|
16
18
|
from pydantic.fields import Field
|
|
17
19
|
|
|
20
|
+
import alita_sdk.tools.ado.work_item
|
|
21
|
+
from ..repos import ReposApiWrapper
|
|
18
22
|
from ...non_code_indexer_toolkit import NonCodeIndexerToolkit
|
|
19
23
|
from ...utils.available_tools_decorator import extend_with_parent_available_tools
|
|
24
|
+
from ...utils.content_parser import parse_file_content
|
|
20
25
|
from ....runtime.utils.utils import IndexerKeywords
|
|
21
26
|
|
|
22
27
|
logger = logging.getLogger(__name__)
|
|
@@ -29,13 +34,17 @@ GetWikiInput = create_model(
|
|
|
29
34
|
GetPageByPathInput = create_model(
|
|
30
35
|
"GetPageByPathInput",
|
|
31
36
|
wiki_identified=(str, Field(description="Wiki ID or wiki name")),
|
|
32
|
-
page_name=(str, Field(description="Wiki page path"))
|
|
37
|
+
page_name=(str, Field(description="Wiki page path")),
|
|
38
|
+
image_description_prompt=(Optional[str],
|
|
39
|
+
Field(description="Prompt which is used for image description", default=None))
|
|
33
40
|
)
|
|
34
41
|
|
|
35
42
|
GetPageByIdInput = create_model(
|
|
36
43
|
"GetPageByIdInput",
|
|
37
44
|
wiki_identified=(str, Field(description="Wiki ID or wiki name")),
|
|
38
|
-
page_id=(int, Field(description="Wiki page ID"))
|
|
45
|
+
page_id=(int, Field(description="Wiki page ID")),
|
|
46
|
+
image_description_prompt=(Optional[str],
|
|
47
|
+
Field(description="Prompt which is used for image description", default=None))
|
|
39
48
|
)
|
|
40
49
|
|
|
41
50
|
ModifyPageInput = create_model(
|
|
@@ -94,24 +103,75 @@ class AzureDevOpsApiWrapper(NonCodeIndexerToolkit):
|
|
|
94
103
|
logger.error(f"Error during the attempt to extract wiki: {str(e)}")
|
|
95
104
|
return ToolException(f"Error during the attempt to extract wiki: {str(e)}")
|
|
96
105
|
|
|
97
|
-
def get_wiki_page_by_path(self, wiki_identified: str, page_name: str):
|
|
106
|
+
def get_wiki_page_by_path(self, wiki_identified: str, page_name: str, image_description_prompt=None):
|
|
98
107
|
"""Extract ADO wiki page content."""
|
|
99
108
|
try:
|
|
100
|
-
return self._client.get_page(project=self.project, wiki_identifier=wiki_identified, path=page_name,
|
|
101
|
-
include_content=True).page.content
|
|
109
|
+
return self._process_images(self._client.get_page(project=self.project, wiki_identifier=wiki_identified, path=page_name,
|
|
110
|
+
include_content=True).page.content,
|
|
111
|
+
image_description_prompt=image_description_prompt)
|
|
102
112
|
except Exception as e:
|
|
103
113
|
logger.error(f"Error during the attempt to extract wiki page: {str(e)}")
|
|
104
114
|
return ToolException(f"Error during the attempt to extract wiki page: {str(e)}")
|
|
105
115
|
|
|
106
|
-
def get_wiki_page_by_id(self, wiki_identified: str, page_id: int):
|
|
116
|
+
def get_wiki_page_by_id(self, wiki_identified: str, page_id: int, image_description_prompt=None):
|
|
107
117
|
"""Extract ADO wiki page content."""
|
|
108
118
|
try:
|
|
109
|
-
return (self._client.get_page_by_id(project=self.project, wiki_identifier=wiki_identified, id=page_id,
|
|
110
|
-
include_content=True).page.content
|
|
119
|
+
return self._process_images(self._client.get_page_by_id(project=self.project, wiki_identifier=wiki_identified, id=page_id,
|
|
120
|
+
include_content=True).page.content,
|
|
121
|
+
image_description_prompt=image_description_prompt)
|
|
111
122
|
except Exception as e:
|
|
112
123
|
logger.error(f"Error during the attempt to extract wiki page: {str(e)}")
|
|
113
124
|
return ToolException(f"Error during the attempt to extract wiki page: {str(e)}")
|
|
114
125
|
|
|
126
|
+
def _process_images(self, page_content: str, image_description_prompt=None):
|
|
127
|
+
|
|
128
|
+
image_pattern = r"!\[(.*?)\]\((.*?)\)"
|
|
129
|
+
matches = re.findall(image_pattern, page_content)
|
|
130
|
+
|
|
131
|
+
for image_name, image_url in matches:
|
|
132
|
+
if image_url.startswith("/.attachments/"):
|
|
133
|
+
try:
|
|
134
|
+
description = self.process_attachment(attachment_url=image_url,
|
|
135
|
+
attachment_name=image_name,
|
|
136
|
+
image_description_prompt=image_description_prompt)
|
|
137
|
+
except Exception as e:
|
|
138
|
+
logger.error(f"Error parsing attachment: {str(e)}")
|
|
139
|
+
description = f"Error parsing attachment: {image_url}"
|
|
140
|
+
else:
|
|
141
|
+
try:
|
|
142
|
+
response = requests.get(image_url)
|
|
143
|
+
response.raise_for_status()
|
|
144
|
+
file_content = response.content
|
|
145
|
+
description = parse_file_content(
|
|
146
|
+
file_content=file_content,
|
|
147
|
+
file_name="image.png",
|
|
148
|
+
llm=self.llm,
|
|
149
|
+
prompt=image_description_prompt
|
|
150
|
+
)
|
|
151
|
+
except Exception as e:
|
|
152
|
+
logger.error(f"Error fetching external image: {str(e)}")
|
|
153
|
+
description = f"Error fetching external image: image_url"
|
|
154
|
+
|
|
155
|
+
new_image_markdown = f""
|
|
156
|
+
page_content = page_content.replace(f"", new_image_markdown)
|
|
157
|
+
return page_content
|
|
158
|
+
|
|
159
|
+
def process_attachment(self, attachment_url, attachment_name, image_description_prompt):
|
|
160
|
+
wiki_master_branch = "wikiMaster"
|
|
161
|
+
repos_wrapper = ReposApiWrapper(organization_url=self.organization_url,
|
|
162
|
+
project=self.project,
|
|
163
|
+
token=self.token.get_secret_value(),
|
|
164
|
+
repository_id="Test_agent.wiki",
|
|
165
|
+
base_branch=wiki_master_branch,
|
|
166
|
+
active_branch=wiki_master_branch)
|
|
167
|
+
attachment_content = repos_wrapper.download_file(path=attachment_url)
|
|
168
|
+
return parse_file_content(
|
|
169
|
+
file_content=attachment_content,
|
|
170
|
+
file_name=attachment_name,
|
|
171
|
+
llm=self.llm,
|
|
172
|
+
prompt=image_description_prompt
|
|
173
|
+
)
|
|
174
|
+
|
|
115
175
|
def delete_page_by_path(self, wiki_identified: str, page_name: str):
|
|
116
176
|
"""Extract ADO wiki page content."""
|
|
117
177
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alita_sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.352
|
|
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
|
|
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
|