alita-sdk 0.3.316__tar.gz → 0.3.318__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/PKG-INFO +1 -1
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +1 -1
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/constants.py +3 -3
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/vectorstore.py +2 -28
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/vectorstore_base.py +9 -16
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/base_indexer_toolkit.py +4 -6
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/browser/__init__.py +2 -1
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/backend_reports_tool.py +8 -4
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/excel_reporter.py +8 -4
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/confluence/api_wrapper.py +77 -21
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/jira/api_wrapper.py +33 -9
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/utils/content_parser.py +28 -19
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/xray/api_wrapper.py +0 -5
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk.egg-info/PKG-INFO +1 -1
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/pyproject.toml +1 -1
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/LICENSE +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/README.md +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/ado.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/bitbucket.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/browser.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/carrier.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/confluence.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/embedding.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/figma.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/google_places.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/jira.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/postman.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/rally.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/report_portal.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/salesforce.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/service_now.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/sharepoint.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/slack.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/sonar.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/sql.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/testio.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/xray.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/zephyr.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/configurations/zephyr_essential.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/clients/client.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/assistant.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/graph.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/confluence/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/elitea_base.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/slack/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk.egg-info/SOURCES.txt +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/setup.cfg +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.316 → alita_sdk-0.3.318}/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.318
|
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.316 → alita_sdk-0.3.318}/alita_sdk/runtime/langchain/document_loaders/constants.py
RENAMED
@@ -113,7 +113,7 @@ loaders_map = {
|
|
113
113
|
'is_multimodal_processing': False,
|
114
114
|
'kwargs': {
|
115
115
|
'encoding': 'utf-8',
|
116
|
-
'raw_content':
|
116
|
+
'raw_content': True,
|
117
117
|
'cleanse': False
|
118
118
|
},
|
119
119
|
'allowed_to_override': ['max_tokens']
|
@@ -122,7 +122,7 @@ loaders_map = {
|
|
122
122
|
'class': AlitaExcelLoader,
|
123
123
|
'is_multimodal_processing': False,
|
124
124
|
'kwargs': {
|
125
|
-
'raw_content':
|
125
|
+
'raw_content': True,
|
126
126
|
'cleanse': False
|
127
127
|
},
|
128
128
|
'allowed_to_override': ['max_tokens', LoaderProperties.LLM.value, LoaderProperties.PROMPT.value, LoaderProperties.PROMPT_DEFAULT.value]
|
@@ -131,7 +131,7 @@ loaders_map = {
|
|
131
131
|
'class': AlitaExcelLoader,
|
132
132
|
'is_multimodal_processing': False,
|
133
133
|
'kwargs': {
|
134
|
-
'raw_content':
|
134
|
+
'raw_content': True,
|
135
135
|
'cleanse': False
|
136
136
|
},
|
137
137
|
'allowed_to_override': ['max_tokens', LoaderProperties.LLM.value, LoaderProperties.PROMPT.value, LoaderProperties.PROMPT_DEFAULT.value]
|
@@ -12,7 +12,6 @@ from alita_sdk.tools.vector_adapters.VectorStoreAdapter import VectorStoreAdapte
|
|
12
12
|
from logging import getLogger
|
13
13
|
|
14
14
|
from ..utils.logging import dispatch_custom_event
|
15
|
-
from ..utils.utils import IndexerKeywords
|
16
15
|
|
17
16
|
logger = getLogger(__name__)
|
18
17
|
|
@@ -248,10 +247,6 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
248
247
|
tool_name="_clean_collection"
|
249
248
|
)
|
250
249
|
|
251
|
-
def _get_indexed_data(self, collection_name: str):
|
252
|
-
""" Get all indexed data from vectorstore for non-code content """
|
253
|
-
return self.vector_adapter.get_indexed_data(self, collection_name)
|
254
|
-
|
255
250
|
def _get_code_indexed_data(self, collection_suffix: str) -> Dict[str, Dict[str, Any]]:
|
256
251
|
""" Get all indexed data from vectorstore for code content """
|
257
252
|
return self.vector_adapter.get_code_indexed_data(self, collection_suffix)
|
@@ -308,26 +303,6 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
308
303
|
|
309
304
|
return final_docs
|
310
305
|
|
311
|
-
def _reduce_non_code_duplicates(self, documents: Generator[Any, None, None], collection_suffix: str) -> List[Any]:
|
312
|
-
return self._reduce_duplicates(
|
313
|
-
documents,
|
314
|
-
collection_suffix,
|
315
|
-
self._get_indexed_data,
|
316
|
-
lambda doc: doc.metadata.get('id'),
|
317
|
-
lambda doc, idx: (
|
318
|
-
doc.metadata.get('updated_on') and
|
319
|
-
idx['metadata'].get('updated_on') and
|
320
|
-
doc.metadata.get('updated_on') == idx['metadata'].get('updated_on')
|
321
|
-
),
|
322
|
-
lambda idx_data, key: (
|
323
|
-
idx_data[key]['all_chunks'] +
|
324
|
-
[idx_data[dep_id]['id'] for dep_id in idx_data[key][IndexerKeywords.DEPENDENT_DOCS.value]] +
|
325
|
-
[chunk_db_id for dep_id in idx_data[key][IndexerKeywords.DEPENDENT_DOCS.value]
|
326
|
-
for chunk_db_id in idx_data[dep_id]['all_chunks']]
|
327
|
-
),
|
328
|
-
log_msg="Verification of documents to index started"
|
329
|
-
)
|
330
|
-
|
331
306
|
def _reduce_code_duplicates(self, documents: Generator[Any, None, None], collection_suffix: str) -> List[Any]:
|
332
307
|
return self._reduce_duplicates(
|
333
308
|
documents,
|
@@ -343,7 +318,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
343
318
|
log_msg="Verification of code documents to index started"
|
344
319
|
)
|
345
320
|
|
346
|
-
def index_documents(self, documents: Generator[Document, None, None], collection_suffix: str, progress_step: int = 20, clean_index: bool = True, is_code: bool =
|
321
|
+
def index_documents(self, documents: Generator[Document, None, None], collection_suffix: str, progress_step: int = 20, clean_index: bool = True, is_code: bool = True):
|
347
322
|
""" Index documents in the vectorstore.
|
348
323
|
|
349
324
|
Args:
|
@@ -374,8 +349,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
374
349
|
message="Filter for duplicates",
|
375
350
|
tool_name="index_documents")
|
376
351
|
# remove duplicates based on metadata 'id' and 'updated_on' or 'commit_hash' fields
|
377
|
-
documents = self._reduce_code_duplicates(documents, collection_suffix)
|
378
|
-
else self._reduce_non_code_duplicates(documents, collection_suffix)
|
352
|
+
documents = self._reduce_code_duplicates(documents, collection_suffix)
|
379
353
|
self._log_tool_event(
|
380
354
|
message="All the duplicates were filtered out. Proceeding with indexing.",
|
381
355
|
tool_name="index_documents")
|
@@ -10,7 +10,6 @@ from pydantic import BaseModel, model_validator, Field
|
|
10
10
|
|
11
11
|
from alita_sdk.tools.elitea_base import BaseToolApiWrapper
|
12
12
|
from alita_sdk.tools.vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
|
13
|
-
from ..langchain.tools.vector import VectorAdapter
|
14
13
|
from ..utils.logging import dispatch_custom_event
|
15
14
|
|
16
15
|
logger = getLogger(__name__)
|
@@ -138,10 +137,7 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
138
137
|
vectorstore_params: Optional[dict] = None
|
139
138
|
max_docs_per_add: int = 100
|
140
139
|
dataset: str = None
|
141
|
-
embedding: Any = None
|
142
140
|
vectorstore: Any = None
|
143
|
-
# Review usage of old adapter
|
144
|
-
vectoradapter: Any = None
|
145
141
|
pg_helper: Any = None
|
146
142
|
embeddings: Any = None
|
147
143
|
# New adapter for vector database operations
|
@@ -152,17 +148,13 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
152
148
|
def validate_toolkit(cls, values):
|
153
149
|
from ..langchain.interfaces.llm_processor import get_vectorstore
|
154
150
|
logger.debug(f"Validating toolkit: {values}")
|
155
|
-
|
156
|
-
|
157
|
-
if values.get('embedding_model'):
|
158
|
-
values['embeddings'] = values
|
151
|
+
values["dataset"] = values.get('collection_name')
|
152
|
+
|
153
|
+
if values.get('alita') and values.get('embedding_model'):
|
154
|
+
values['embeddings'] = values.get('alita').get_embeddings(values.get('embedding_model'))
|
155
|
+
|
159
156
|
if values.get('vectorstore_type') and values.get('vectorstore_params') and values.get('embedding_model'):
|
160
157
|
values['vectorstore'] = get_vectorstore(values['vectorstore_type'], values['vectorstore_params'], embedding_func=values['embeddings'])
|
161
|
-
values['vectoradapter'] = VectorAdapter(
|
162
|
-
vectorstore=values['vectorstore'],
|
163
|
-
embeddings=values['embeddings'],
|
164
|
-
quota_params=None,
|
165
|
-
)
|
166
158
|
# Initialize the new vector adapter
|
167
159
|
values['vector_adapter'] = VectorStoreAdapterFactory.create_adapter(values['vectorstore_type'])
|
168
160
|
logger.debug(f"Vectorstore wrapper initialized: {values}")
|
@@ -223,8 +215,6 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
223
215
|
self._log_data("Cleaning index before re-indexing all documents. Previous index will be removed", tool_name="index_documents")
|
224
216
|
try:
|
225
217
|
self._clean_collection(collection_suffix)
|
226
|
-
self.vectoradapter.persist()
|
227
|
-
self.vectoradapter.vacuum()
|
228
218
|
self._log_data("Previous index has been removed",
|
229
219
|
tool_name="index_documents")
|
230
220
|
except Exception as e:
|
@@ -238,7 +228,6 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
238
228
|
logger.warning(f"Document is missing required metadata field 'id' or 'updated_on': {doc.metadata}")
|
239
229
|
|
240
230
|
logger.debug(f"Indexing documents: {documents}")
|
241
|
-
logger.debug(self.vectoradapter)
|
242
231
|
|
243
232
|
# if collection_suffix is provided, add it to metadata of each document
|
244
233
|
if collection_suffix:
|
@@ -256,6 +245,10 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
256
245
|
progress_step = 20 if progress_step not in range(0, 100) else progress_step
|
257
246
|
next_progress_point = progress_step
|
258
247
|
for document in documents:
|
248
|
+
if not document.page_content:
|
249
|
+
# To avoid case when all documents have empty content
|
250
|
+
# See llm_processor.add_documents which exclude metadata of docs with empty content
|
251
|
+
continue
|
259
252
|
documents_count += 1
|
260
253
|
# logger.debug(f"Indexing document: {document}")
|
261
254
|
try:
|
@@ -5,7 +5,7 @@ from typing import Any, Optional, List, Literal, Dict, Generator
|
|
5
5
|
from langchain_core.documents import Document
|
6
6
|
from pydantic import create_model, Field, SecretStr
|
7
7
|
|
8
|
-
from .utils.content_parser import file_extension_by_chunker,
|
8
|
+
from .utils.content_parser import file_extension_by_chunker, process_document_by_type
|
9
9
|
from .vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
|
10
10
|
from ..runtime.tools.vectorstore_base import VectorStoreWrapperBase
|
11
11
|
from ..runtime.utils.utils import IndexerKeywords
|
@@ -102,7 +102,6 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
102
102
|
|
103
103
|
connection_string: Optional[SecretStr] = None
|
104
104
|
collection_name: Optional[str] = None
|
105
|
-
_embedding: Optional[Any] = None
|
106
105
|
alita: Any = None # Elitea client, if available
|
107
106
|
|
108
107
|
def __init__(self, **kwargs):
|
@@ -116,7 +115,6 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
116
115
|
if connection_string:
|
117
116
|
# Initialize vectorstore params only if connection string is provided
|
118
117
|
kwargs['vectorstore_params'] = VectorStoreAdapterFactory.create_adapter(vectorstore_type).get_vectorstore_params(collection_name, connection_string)
|
119
|
-
kwargs['_embedding'] = kwargs.get('alita').get_embeddings(kwargs.get('embedding_model'))
|
120
118
|
super().__init__(**kwargs)
|
121
119
|
|
122
120
|
def _index_tool_params(self, **kwargs) -> dict[str, tuple[type, Field]]:
|
@@ -181,14 +179,14 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
181
179
|
|
182
180
|
if chunking_config is None:
|
183
181
|
chunking_config = {}
|
184
|
-
chunking_config['embedding'] = self.
|
182
|
+
chunking_config['embedding'] = self.embeddings
|
185
183
|
chunking_config['llm'] = self.llm
|
186
184
|
|
187
185
|
for document in documents:
|
188
186
|
if content_type := document.metadata.get(IndexerKeywords.CONTENT_FILE_NAME.value, None):
|
189
187
|
# apply parsing based on content type and chunk if chunker was applied to parent doc
|
190
188
|
content = document.metadata.pop(IndexerKeywords.CONTENT_IN_BYTES.value, None)
|
191
|
-
yield from
|
189
|
+
yield from process_document_by_type(
|
192
190
|
document=document,
|
193
191
|
content=content,
|
194
192
|
extension_source=content_type, llm=self.llm, chunking_config=chunking_config)
|
@@ -199,7 +197,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
199
197
|
continue
|
200
198
|
# apply parsing based on content type resolved from chunking_tool
|
201
199
|
content_type = file_extension_by_chunker(chunking_tool)
|
202
|
-
yield from
|
200
|
+
yield from process_document_by_type(
|
203
201
|
document=document,
|
204
202
|
content=content_in_bytes,
|
205
203
|
extension_source=content_type, llm=self.llm, chunking_config=chunking_config)
|
@@ -112,7 +112,8 @@ class BrowserToolkit(BaseToolkit):
|
|
112
112
|
elif tool == 'google':
|
113
113
|
try:
|
114
114
|
google_api_wrapper = GoogleSearchAPIWrapper(
|
115
|
-
|
115
|
+
google_api_key=wrapper_payload_google.get('google_api_key'),
|
116
|
+
google_cse_id=wrapper_payload_google.get('google_cse_id')
|
116
117
|
)
|
117
118
|
tool_entry = GoogleSearchResults(api_wrapper=google_api_wrapper)
|
118
119
|
# rename the tool to avoid conflicts
|
@@ -154,6 +154,7 @@ class CreateExcelReportTool(BaseTool):
|
|
154
154
|
"tp_threshold": (int, Field(default=None, description="Throughput threshold")),
|
155
155
|
"rt_threshold": (int, Field(default=None, description="Response time threshold")),
|
156
156
|
"er_threshold": (int, Field(default=None, description="Error rate threshold")),
|
157
|
+
"include_group_pauses": (bool, Field(default=False, description="Include group pauses in Gatling Excel report")),
|
157
158
|
}
|
158
159
|
)
|
159
160
|
|
@@ -200,6 +201,7 @@ class CreateExcelReportTool(BaseTool):
|
|
200
201
|
"tp_threshold": 10,
|
201
202
|
"rt_threshold": 500,
|
202
203
|
"er_threshold": 5,
|
204
|
+
"include_group_pauses": False,
|
203
205
|
}
|
204
206
|
|
205
207
|
def _request_parameter_confirmation(self, default_parameters):
|
@@ -217,7 +219,8 @@ class CreateExcelReportTool(BaseTool):
|
|
217
219
|
excel_report_file_name = f'/tmp/reports_test_results_{report["build_id"]}_excel_report.xlsx'
|
218
220
|
bucket_name = report["name"].replace("_", "").replace(" ", "").lower()
|
219
221
|
|
220
|
-
result_stats_j = self._parse_report(test_log_file_path, lg_type, parameters["think_time"],
|
222
|
+
result_stats_j = self._parse_report(test_log_file_path, lg_type, parameters["think_time"],
|
223
|
+
parameters["include_group_pauses"], is_absolute_file_path=True)
|
221
224
|
calc_thr_j = self._calculate_thresholds(result_stats_j, parameters)
|
222
225
|
|
223
226
|
return self._generate_and_upload_report(
|
@@ -233,21 +236,22 @@ class CreateExcelReportTool(BaseTool):
|
|
233
236
|
excel_report_file_name = f'{file_path}_{current_date}.xlsx'
|
234
237
|
bucket_name = bucket
|
235
238
|
|
236
|
-
result_stats_j = self._parse_report(file_path, lg_type, parameters["think_time"],
|
239
|
+
result_stats_j = self._parse_report(file_path, lg_type, parameters["think_time"],
|
240
|
+
parameters["include_group_pauses"], is_absolute_file_path=True)
|
237
241
|
calc_thr_j = self._calculate_thresholds(result_stats_j, parameters)
|
238
242
|
|
239
243
|
return self._generate_and_upload_report(
|
240
244
|
result_stats_j, carrier_report, calc_thr_j, parameters, excel_report_file_name, bucket_name, file_path
|
241
245
|
)
|
242
246
|
|
243
|
-
def _parse_report(self, file_path, lg_type, think_time, is_absolute_file_path=False):
|
247
|
+
def _parse_report(self, file_path, lg_type, think_time, include_group_pauses, is_absolute_file_path=False):
|
244
248
|
"""Parse the report based on its type."""
|
245
249
|
if lg_type == "gatling":
|
246
250
|
if is_absolute_file_path:
|
247
251
|
report_file = file_path
|
248
252
|
else:
|
249
253
|
report_file = get_latest_log_file(file_path, "simulation.log")
|
250
|
-
parser = GatlingReportParser(report_file, think_time)
|
254
|
+
parser = GatlingReportParser(report_file, include_group_pauses, think_time)
|
251
255
|
result_stats_j = parser.parse()
|
252
256
|
result_stats_j["requests"].update(result_stats_j["groups"])
|
253
257
|
elif lg_type == "jmeter":
|
@@ -118,9 +118,10 @@ class JMeterReportParser(PerformanceReportParser):
|
|
118
118
|
|
119
119
|
class GatlingReportParser(PerformanceReportParser):
|
120
120
|
|
121
|
-
def __init__(self, log_file: str, think_times="5,0-10,0"):
|
121
|
+
def __init__(self, log_file: str, include_group_pauses, think_times="5,0-10,0"):
|
122
122
|
self.calculated_think_time = think_times
|
123
123
|
self.log_file = log_file
|
124
|
+
self.include_group_pauses = include_group_pauses
|
124
125
|
|
125
126
|
@staticmethod
|
126
127
|
def convert_timestamp_to_datetime(timestamp: int) -> datetime:
|
@@ -210,7 +211,7 @@ class GatlingReportParser(PerformanceReportParser):
|
|
210
211
|
ramp_end = self.convert_timestamp_to_datetime(int(line.split('\t')[3]))
|
211
212
|
|
212
213
|
elif line.startswith('GROUP'):
|
213
|
-
self.parse_group_line(groups, line)
|
214
|
+
self.parse_group_line(groups, line, self.include_group_pauses)
|
214
215
|
except FileNotFoundError as e:
|
215
216
|
print(f"File not found: {e}")
|
216
217
|
raise
|
@@ -242,11 +243,14 @@ class GatlingReportParser(PerformanceReportParser):
|
|
242
243
|
requests[request_name].append((response_time, status))
|
243
244
|
|
244
245
|
@staticmethod
|
245
|
-
def parse_group_line(groups, line):
|
246
|
+
def parse_group_line(groups, line, include_group_pauses):
|
246
247
|
parts = line.split('\t')
|
247
248
|
if len(parts) >= 6:
|
248
249
|
group_name = parts[1]
|
249
|
-
|
250
|
+
if include_group_pauses:
|
251
|
+
response_time = int(parts[3]) - int(parts[2])
|
252
|
+
else:
|
253
|
+
response_time = int(parts[4])
|
250
254
|
status = parts[5].strip()
|
251
255
|
groups[group_name].append((response_time, status))
|
252
256
|
|
@@ -1,24 +1,25 @@
|
|
1
|
-
import re
|
2
|
-
import logging
|
3
|
-
import requests
|
4
|
-
import json
|
5
1
|
import base64
|
2
|
+
import json
|
3
|
+
import logging
|
4
|
+
import re
|
6
5
|
import traceback
|
7
|
-
from typing import Optional, List, Any, Dict, Callable, Generator, Literal
|
8
6
|
from json import JSONDecodeError
|
7
|
+
from typing import Optional, List, Any, Dict, Callable, Generator, Literal
|
9
8
|
|
10
|
-
|
11
|
-
from
|
12
|
-
|
9
|
+
import requests
|
10
|
+
from langchain_community.document_loaders.confluence import ContentFormat
|
13
11
|
from langchain_core.documents import Document
|
14
|
-
from langchain_core.tools import ToolException
|
15
12
|
from langchain_core.messages import HumanMessage
|
13
|
+
from langchain_core.tools import ToolException
|
16
14
|
from markdownify import markdownify
|
17
|
-
from
|
15
|
+
from pydantic import Field, PrivateAttr, model_validator, create_model, SecretStr
|
16
|
+
from tenacity import retry, stop_after_attempt, wait_exponential, before_sleep_log
|
18
17
|
|
19
|
-
from
|
18
|
+
from alita_sdk.tools.non_code_indexer_toolkit import NonCodeIndexerToolkit
|
19
|
+
from alita_sdk.tools.utils.available_tools_decorator import extend_with_parent_available_tools
|
20
20
|
from ..llm.img_utils import ImageDescriptionCache
|
21
21
|
from ..utils import is_cookie_token, parse_cookie_string
|
22
|
+
from ...runtime.utils.utils import IndexerKeywords
|
22
23
|
|
23
24
|
logger = logging.getLogger(__name__)
|
24
25
|
|
@@ -171,7 +172,7 @@ def parse_payload_params(params: Optional[str]) -> Dict[str, Any]:
|
|
171
172
|
return {}
|
172
173
|
|
173
174
|
|
174
|
-
class ConfluenceAPIWrapper(
|
175
|
+
class ConfluenceAPIWrapper(NonCodeIndexerToolkit):
|
175
176
|
# Changed from PrivateAttr to Optional field with exclude=True
|
176
177
|
client: Optional[Any] = Field(default=None, exclude=True)
|
177
178
|
base_url: str
|
@@ -229,7 +230,7 @@ class ConfluenceAPIWrapper(BaseVectorStoreToolApiWrapper):
|
|
229
230
|
client_instance._update_header(header, value)
|
230
231
|
|
231
232
|
values['client'] = client_instance
|
232
|
-
return values
|
233
|
+
return super().validate_toolkit(values)
|
233
234
|
|
234
235
|
def __unquote_confluence_space(self) -> str | None:
|
235
236
|
if self.space:
|
@@ -843,13 +844,68 @@ class ConfluenceAPIWrapper(BaseVectorStoreToolApiWrapper):
|
|
843
844
|
yield document
|
844
845
|
|
845
846
|
def _process_document(self, document: Document) -> Generator[Document, None, None]:
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
847
|
+
try:
|
848
|
+
page_id = document.metadata.get('id')
|
849
|
+
attachments = self.client.get_attachments_from_content(page_id)
|
850
|
+
if not attachments or not attachments.get('results'):
|
851
|
+
return f"No attachments found for page ID {page_id}."
|
852
|
+
|
853
|
+
# Get attachment history for created/updated info
|
854
|
+
history_map = {}
|
855
|
+
for attachment in attachments['results']:
|
856
|
+
try:
|
857
|
+
hist = self.client.history(attachment['id'])
|
858
|
+
history_map[attachment['id']] = hist
|
859
|
+
except Exception as e:
|
860
|
+
logger.warning(f"Failed to fetch history for attachment {attachment.get('title', '')}: {str(e)}")
|
861
|
+
history_map[attachment['id']] = None
|
862
|
+
|
863
|
+
import re
|
864
|
+
for attachment in attachments['results']:
|
865
|
+
title = attachment.get('title', '')
|
866
|
+
file_ext = title.lower().split('.')[-1] if '.' in title else ''
|
867
|
+
|
868
|
+
media_type = attachment.get('metadata', {}).get('mediaType', '')
|
869
|
+
# Core metadata extraction with history
|
870
|
+
hist = history_map.get(attachment['id']) or {}
|
871
|
+
created_by = hist.get('createdBy', {}).get('displayName', '') if hist else attachment.get('creator', {}).get('displayName', '')
|
872
|
+
created_date = hist.get('createdDate', '') if hist else attachment.get('created', '')
|
873
|
+
last_updated = hist.get('lastUpdated', {}).get('when', '') if hist else ''
|
874
|
+
|
875
|
+
metadata = {
|
876
|
+
'name': title,
|
877
|
+
'size': attachment.get('extensions', {}).get('fileSize', None),
|
878
|
+
'creator': created_by,
|
879
|
+
'created': created_date,
|
880
|
+
'updated': last_updated,
|
881
|
+
'media_type': media_type,
|
882
|
+
'labels': [label['name'] for label in
|
883
|
+
attachment.get('metadata', {}).get('labels', {}).get('results', [])],
|
884
|
+
'download_url': self.base_url.rstrip('/') + attachment['_links']['download'] if attachment.get(
|
885
|
+
'_links', {}).get('download') else None
|
886
|
+
}
|
887
|
+
|
888
|
+
download_url = self.base_url.rstrip('/') + attachment['_links']['download']
|
889
|
+
|
890
|
+
try:
|
891
|
+
resp = self.client.request(method="GET", path=download_url[len(self.base_url):], advanced_mode=True)
|
892
|
+
if resp.status_code == 200:
|
893
|
+
content = resp.content
|
894
|
+
else:
|
895
|
+
content = f"[Failed to download {download_url}: HTTP status code {resp.status_code}]"
|
896
|
+
except Exception as e:
|
897
|
+
content = f"[Error downloading content: {str(e)}]"
|
898
|
+
|
899
|
+
if isinstance(content, str):
|
900
|
+
yield Document(page_content=content, metadata=metadata)
|
901
|
+
else:
|
902
|
+
yield Document(page_content="", metadata={
|
903
|
+
**metadata,
|
904
|
+
IndexerKeywords.CONTENT_FILE_NAME.value: f".{file_ext}",
|
905
|
+
IndexerKeywords.CONTENT_IN_BYTES.value: content
|
906
|
+
})
|
907
|
+
except Exception as e:
|
908
|
+
yield from ()
|
853
909
|
|
854
910
|
def _download_image(self, image_url):
|
855
911
|
"""
|
@@ -1598,7 +1654,7 @@ class ConfluenceAPIWrapper(BaseVectorStoreToolApiWrapper):
|
|
1598
1654
|
"bins_with_llm": (Optional[bool], Field(description="Use LLM for processing binary files.", default=False)),
|
1599
1655
|
}
|
1600
1656
|
|
1601
|
-
@
|
1657
|
+
@extend_with_parent_available_tools
|
1602
1658
|
def get_available_tools(self):
|
1603
1659
|
# Confluence-specific tools
|
1604
1660
|
confluence_tools = [
|
@@ -13,12 +13,11 @@ from langchain_core.tools import ToolException
|
|
13
13
|
from pydantic import Field, PrivateAttr, model_validator, create_model, SecretStr
|
14
14
|
import requests
|
15
15
|
|
16
|
-
from ..elitea_base import BaseVectorStoreToolApiWrapper, extend_with_vector_tools
|
17
16
|
from ..llm.img_utils import ImageDescriptionCache
|
18
17
|
from ..non_code_indexer_toolkit import NonCodeIndexerToolkit
|
19
18
|
from ..utils import is_cookie_token, parse_cookie_string
|
20
19
|
from ..utils.available_tools_decorator import extend_with_parent_available_tools
|
21
|
-
from ..utils.content_parser import file_extension_by_chunker
|
20
|
+
from ..utils.content_parser import file_extension_by_chunker, process_content_by_type
|
22
21
|
from ...runtime.utils.utils import IndexerKeywords
|
23
22
|
|
24
23
|
logger = logging.getLogger(__name__)
|
@@ -133,6 +132,13 @@ GetRemoteLinks = create_model(
|
|
133
132
|
jira_issue_key=(str, Field(description="Jira issue key from which remote links will be extracted, e.g. TEST-1234"))
|
134
133
|
)
|
135
134
|
|
135
|
+
GetIssueAttachments = create_model(
|
136
|
+
"GetIssueAttachments",
|
137
|
+
jira_issue_key=(str, Field(description="Jira issue key from which remote links will be extracted, e.g. TEST-1234")),
|
138
|
+
attachment_pattern=(Optional[str], Field(description="Regex pattern to filter attachment filenames. If not provided,"
|
139
|
+
" all attachments will be processed", default=None))
|
140
|
+
)
|
141
|
+
|
136
142
|
ListCommentsInput = create_model(
|
137
143
|
"ListCommentsInputModel",
|
138
144
|
issue_key=(str, Field(description="The issue key of the Jira issue from which comments will be extracted, e.g. 'TEST-123'."))
|
@@ -726,19 +732,37 @@ class JiraApiWrapper(NonCodeIndexerToolkit):
|
|
726
732
|
logger.error(f"Error listing Jira projects: {stacktrace}")
|
727
733
|
return ToolException(f"Error listing Jira projects: {stacktrace}")
|
728
734
|
|
729
|
-
def get_attachments_content(self, jira_issue_key: str):
|
730
|
-
""" Extract content of all attachments related to specified Jira issue key.
|
731
|
-
NOTE: only parsable attachments will be considered
|
735
|
+
def get_attachments_content(self, jira_issue_key: str, attachment_pattern: Optional[str] = None):
|
736
|
+
""" Extract the content of all attachments related to a specified Jira issue key.
|
737
|
+
NOTE: only parsable attachments will be considered
|
738
|
+
Args:
|
739
|
+
jira_issue_key: The key of the Jira issue, e.g. "TEST-123
|
740
|
+
attachment_pattern: Optional regex pattern to filter attachments by filename.
|
741
|
+
If provided, only attachments with filenames matching this pattern will be processed.
|
742
|
+
Returns:
|
743
|
+
A string containing the content of all relevant attachments, separated by double newlines.
|
744
|
+
"""
|
732
745
|
|
733
746
|
attachment_data = []
|
734
747
|
attachments = self._client.get_attachments_ids_from_issue(issue=jira_issue_key)
|
735
748
|
for attachment in attachments:
|
749
|
+
if attachment_pattern and not re.search(attachment_pattern, attachment['filename']):
|
750
|
+
logger.info(f"Skipping attachment {attachment['filename']} as it does not match pattern {attachment_pattern}")
|
751
|
+
continue
|
752
|
+
logger.info(f"Processing attachment {attachment['filename']} with ID {attachment['attachment_id']}")
|
736
753
|
if self.api_version == "3":
|
737
754
|
attachment_data.append(self._client.get_attachment_content(attachment['attachment_id']))
|
738
755
|
else:
|
739
|
-
|
740
|
-
|
741
|
-
|
756
|
+
try:
|
757
|
+
attachment_content = self._client.get_attachment_content(attachment['attachment_id'])
|
758
|
+
except Exception as e:
|
759
|
+
logger.error(
|
760
|
+
f"Failed to download attachment {attachment['filename']} for issue {jira_issue_key}: {str(e)}")
|
761
|
+
attachment_content = self._client.get(
|
762
|
+
path=f"secure/attachment/{attachment['attachment_id']}/{attachment['filename']}", not_json_response=True)
|
763
|
+
content_docs = process_content_by_type(attachment_content, attachment['filename'], llm=self.llm)
|
764
|
+
attachment_data.append("filename: " + attachment['filename'] + "\ncontent: " + str([doc.page_content for doc in content_docs]))
|
765
|
+
|
742
766
|
return "\n\n".join(attachment_data)
|
743
767
|
|
744
768
|
def execute_generic_rq(self, method: str, relative_url: str, params: Optional[str] = "", *args):
|
@@ -1633,7 +1657,7 @@ class JiraApiWrapper(NonCodeIndexerToolkit):
|
|
1633
1657
|
{
|
1634
1658
|
"name": "get_attachments_content",
|
1635
1659
|
"description": self.get_attachments_content.__doc__,
|
1636
|
-
"args_schema":
|
1660
|
+
"args_schema": GetIssueAttachments,
|
1637
1661
|
"ref": self.get_attachments_content,
|
1638
1662
|
},
|
1639
1663
|
{
|
@@ -201,17 +201,40 @@ def load_content_from_bytes(file_content: bytes, extension: str = None, loader_e
|
|
201
201
|
if temp_file_path and os.path.exists(temp_file_path):
|
202
202
|
os.remove(temp_file_path)
|
203
203
|
|
204
|
-
def
|
204
|
+
def process_document_by_type(content, extension_source: str, document: Document = None, llm = None, chunking_config=None) \
|
205
|
+
-> Generator[Document, None, None]:
|
206
|
+
"""Process the content of a file based on its type using a configured loader cosidering the origin document."""
|
207
|
+
try:
|
208
|
+
chunks = process_content_by_type(content, extension_source, llm, chunking_config)
|
209
|
+
except Exception as e:
|
210
|
+
msg = f"Error during content for file {extension_source}:\n{e}"
|
211
|
+
logger.warning(msg)
|
212
|
+
yield Document(
|
213
|
+
page_content=msg,
|
214
|
+
metadata={**document.metadata, 'chunk_id': 1}
|
215
|
+
)
|
216
|
+
return
|
217
|
+
for chunk in chunks:
|
218
|
+
yield Document(
|
219
|
+
page_content=sanitize_for_postgres(chunk.page_content),
|
220
|
+
metadata={**document.metadata, **chunk.metadata}
|
221
|
+
)
|
222
|
+
|
223
|
+
|
224
|
+
def process_content_by_type(content, filename: str, llm=None, chunking_config=None) -> \
|
225
|
+
Generator[Document, None, None]:
|
226
|
+
"""Process the content of a file based on its type using a configured loader."""
|
205
227
|
temp_file_path = None
|
206
228
|
try:
|
207
|
-
extension = "." +
|
229
|
+
extension = "." + filename.split('.')[-1].lower()
|
208
230
|
|
209
231
|
with tempfile.NamedTemporaryFile(mode='w+b', suffix=extension, delete=False) as temp_file:
|
210
232
|
temp_file_path = temp_file.name
|
211
233
|
if content is None:
|
212
|
-
logger.warning(
|
234
|
+
logger.warning(
|
235
|
+
f"'{IndexerKeywords.CONTENT_IN_BYTES.value}' ie expected but not found in document metadata.")
|
213
236
|
return
|
214
|
-
|
237
|
+
|
215
238
|
temp_file.write(content)
|
216
239
|
temp_file.flush()
|
217
240
|
|
@@ -238,21 +261,7 @@ def process_content_by_type(document: Document, content, extension_source: str,
|
|
238
261
|
loader_kwargs.pop(LoaderProperties.PROMPT_DEFAULT.value)
|
239
262
|
loader_kwargs[LoaderProperties.PROMPT.value] = image_processing_prompt
|
240
263
|
loader = loader_cls(file_path=temp_file_path, **loader_kwargs)
|
241
|
-
|
242
|
-
chunks = loader.load()
|
243
|
-
except Exception as e:
|
244
|
-
msg = f"Error during content for file {temp_file_path}:\n{e}"
|
245
|
-
logger.warning(msg)
|
246
|
-
yield Document(
|
247
|
-
page_content=msg,
|
248
|
-
metadata={**document.metadata, 'chunk_id':1}
|
249
|
-
)
|
250
|
-
return
|
251
|
-
for chunk in chunks:
|
252
|
-
yield Document(
|
253
|
-
page_content=sanitize_for_postgres(chunk.page_content),
|
254
|
-
metadata={**document.metadata, **chunk.metadata}
|
255
|
-
)
|
264
|
+
return loader.load()
|
256
265
|
finally:
|
257
266
|
if temp_file_path and os.path.exists(temp_file_path):
|
258
267
|
os.remove(temp_file_path)
|
@@ -9,14 +9,9 @@ from langchain_core.tools import ToolException
|
|
9
9
|
from pydantic import PrivateAttr, SecretStr, create_model, model_validator, Field
|
10
10
|
from python_graphql_client import GraphqlClient
|
11
11
|
|
12
|
-
from ..elitea_base import (
|
13
|
-
BaseVectorStoreToolApiWrapper,
|
14
|
-
extend_with_vector_tools,
|
15
|
-
)
|
16
12
|
from ..non_code_indexer_toolkit import NonCodeIndexerToolkit
|
17
13
|
from ..utils.available_tools_decorator import extend_with_parent_available_tools
|
18
14
|
from ...runtime.utils.utils import IndexerKeywords
|
19
|
-
from ..utils.content_parser import file_extension_by_chunker
|
20
15
|
|
21
16
|
try:
|
22
17
|
from alita_sdk.runtime.langchain.interfaces.llm_processor import get_embeddings
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: alita_sdk
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.318
|
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
|