alita-sdk 0.3.353__tar.gz → 0.3.355__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.353 → alita_sdk-0.3.355}/PKG-INFO +1 -1
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +1 -1
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/router.py +6 -1
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/vectorstore_base.py +5 -20
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ado/repos/repos_wrapper.py +7 -9
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/base_indexer_toolkit.py +69 -15
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/bitbucket/api_wrapper.py +6 -4
- alita_sdk-0.3.355/alita_sdk/tools/code_indexer_toolkit.py +156 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/github/api_wrapper.py +9 -26
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/gitlab/api_wrapper.py +8 -4
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/jira/api_wrapper.py +1 -1
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/utils/content_parser.py +3 -1
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk.egg-info/PKG-INFO +1 -1
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk.egg-info/SOURCES.txt +1 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/pyproject.toml +1 -1
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/LICENSE +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/README.md +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/ado.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/bitbucket.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/browser.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/carrier.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/confluence.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/embedding.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/figma.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/google_places.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/jira.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/postman.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/rally.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/report_portal.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/salesforce.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/service_now.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/sharepoint.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/slack.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/sonar.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/sql.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/testio.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/xray.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/zephyr.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/configurations/zephyr_essential.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/clients/client.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/assistant.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/graph.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/sandbox.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/tools/vectorstore.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/confluence/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/elitea_base.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/slack/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/setup.cfg +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.353 → alita_sdk-0.3.355}/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.355
|
|
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
|
|
@@ -63,7 +63,7 @@ class AlitaTableLoader(BaseLoader):
|
|
|
63
63
|
"source": f'{self.file_path}:{idx+1}',
|
|
64
64
|
"table_source": self.file_path,
|
|
65
65
|
}
|
|
66
|
-
if len(docs) == 0:
|
|
66
|
+
if len(docs) == 0 and not self.raw_content:
|
|
67
67
|
header_metadata = metadata.copy()
|
|
68
68
|
header_metadata["header"] = "true"
|
|
69
69
|
header = "\t".join([str(value) for value in row.keys()])
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
+
import re
|
|
2
3
|
from typing import Any, Optional, Union, List
|
|
3
4
|
from langchain_core.runnables import RunnableConfig
|
|
4
5
|
from langchain_core.tools import BaseTool
|
|
@@ -7,6 +8,10 @@ from ..utils.utils import clean_string
|
|
|
7
8
|
|
|
8
9
|
logger = logging.getLogger(__name__)
|
|
9
10
|
|
|
11
|
+
def clean_node_str(s: str)-> str:
|
|
12
|
+
cleaned_string = re.sub(r'[^\w\s]', '', s)
|
|
13
|
+
return cleaned_string
|
|
14
|
+
|
|
10
15
|
class RouterNode(BaseTool):
|
|
11
16
|
name: str = 'RouterNode'
|
|
12
17
|
description: str = 'A router node that evaluates a condition and routes accordingly.'
|
|
@@ -22,7 +27,7 @@ class RouterNode(BaseTool):
|
|
|
22
27
|
template = EvaluateTemplate(self.condition, input_data)
|
|
23
28
|
result = template.evaluate()
|
|
24
29
|
logger.info(f"RouterNode evaluated condition '{self.condition}' with input {input_data} => {result}")
|
|
25
|
-
result =
|
|
30
|
+
result = clean_node_str(str(result))
|
|
26
31
|
if result in self.routes:
|
|
27
32
|
# If the result is one of the routes, return it
|
|
28
33
|
return {"router_output": result}
|
|
@@ -187,12 +187,12 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
|
187
187
|
"""
|
|
188
188
|
Clean the vectorstore collection by deleting all indexed data.
|
|
189
189
|
"""
|
|
190
|
-
self.
|
|
190
|
+
self._log_tool_event(
|
|
191
191
|
f"Cleaning collection '{self.dataset}'",
|
|
192
192
|
tool_name="_clean_collection"
|
|
193
193
|
)
|
|
194
194
|
self.vector_adapter.clean_collection(self, collection_suffix)
|
|
195
|
-
self.
|
|
195
|
+
self._log_tool_event(
|
|
196
196
|
f"Collection '{self.dataset}' has been cleaned. ",
|
|
197
197
|
tool_name="_clean_collection"
|
|
198
198
|
)
|
|
@@ -212,10 +212,10 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
|
212
212
|
|
|
213
213
|
def _clean_index(self, collection_suffix: str):
|
|
214
214
|
logger.info("Cleaning index before re-indexing all documents.")
|
|
215
|
-
self.
|
|
215
|
+
self._log_tool_event("Cleaning index before re-indexing all documents. Previous index will be removed", tool_name="index_documents")
|
|
216
216
|
try:
|
|
217
217
|
self._clean_collection(collection_suffix)
|
|
218
|
-
self.
|
|
218
|
+
self._log_tool_event("Previous index has been removed",
|
|
219
219
|
tool_name="index_documents")
|
|
220
220
|
except Exception as e:
|
|
221
221
|
logger.warning(f"Failed to clean index: {str(e)}. Continuing with re-indexing.")
|
|
@@ -261,7 +261,7 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
|
261
261
|
if percent >= next_progress_point:
|
|
262
262
|
msg = f"Indexing progress: {percent}%. Processed {documents_count} of {total_docs} documents."
|
|
263
263
|
logger.debug(msg)
|
|
264
|
-
self.
|
|
264
|
+
self._log_tool_event(msg)
|
|
265
265
|
next_progress_point += progress_step
|
|
266
266
|
except Exception:
|
|
267
267
|
from traceback import format_exc
|
|
@@ -569,21 +569,6 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
|
569
569
|
])
|
|
570
570
|
return result.content
|
|
571
571
|
|
|
572
|
-
def _log_data(self, message: str, tool_name: str = "index_data"):
|
|
573
|
-
"""Log data and dispatch custom event for indexing progress"""
|
|
574
|
-
|
|
575
|
-
try:
|
|
576
|
-
dispatch_custom_event(
|
|
577
|
-
name="thinking_step",
|
|
578
|
-
data={
|
|
579
|
-
"message": message,
|
|
580
|
-
"tool_name": tool_name,
|
|
581
|
-
"toolkit": "vectorstore",
|
|
582
|
-
},
|
|
583
|
-
)
|
|
584
|
-
except Exception as e:
|
|
585
|
-
logger.warning(f"Failed to dispatch progress event: {str(e)}")
|
|
586
|
-
|
|
587
572
|
def get_available_tools(self):
|
|
588
573
|
return [
|
|
589
574
|
{
|
|
@@ -24,7 +24,8 @@ from msrest.authentication import BasicAuthentication
|
|
|
24
24
|
from pydantic import Field, PrivateAttr, create_model, model_validator, SecretStr
|
|
25
25
|
|
|
26
26
|
from ..utils import extract_old_new_pairs, generate_diff, get_content_from_generator
|
|
27
|
-
from ...
|
|
27
|
+
from ...code_indexer_toolkit import CodeIndexerToolkit
|
|
28
|
+
from ...utils.available_tools_decorator import extend_with_parent_available_tools
|
|
28
29
|
|
|
29
30
|
logger = logging.getLogger(__name__)
|
|
30
31
|
|
|
@@ -242,7 +243,7 @@ class ArgsSchema(Enum):
|
|
|
242
243
|
)
|
|
243
244
|
|
|
244
245
|
|
|
245
|
-
class ReposApiWrapper(
|
|
246
|
+
class ReposApiWrapper(CodeIndexerToolkit):
|
|
246
247
|
# TODO use ado_repos_configuration fields
|
|
247
248
|
organization_url: Optional[str]
|
|
248
249
|
project: Optional[str]
|
|
@@ -293,7 +294,7 @@ class ReposApiWrapper(BaseCodeToolApiWrapper):
|
|
|
293
294
|
if not branch_exists(active_branch):
|
|
294
295
|
raise ToolException(f"The active branch '{active_branch}' does not exist.")
|
|
295
296
|
|
|
296
|
-
return values
|
|
297
|
+
return super().validate_toolkit(values)
|
|
297
298
|
|
|
298
299
|
def _get_commits(self, file_path: str, branch: str, top: int = None) -> List[GitCommitRef]:
|
|
299
300
|
"""
|
|
@@ -1174,9 +1175,10 @@ class ReposApiWrapper(BaseCodeToolApiWrapper):
|
|
|
1174
1175
|
except Exception as e:
|
|
1175
1176
|
return ToolException(f"Unable to retrieve commits due to error:\n{str(e)}")
|
|
1176
1177
|
|
|
1178
|
+
@extend_with_parent_available_tools
|
|
1177
1179
|
def get_available_tools(self):
|
|
1178
1180
|
"""Return a list of available tools."""
|
|
1179
|
-
|
|
1181
|
+
return [
|
|
1180
1182
|
{
|
|
1181
1183
|
"ref": self.list_branches_in_repo,
|
|
1182
1184
|
"name": "list_branches_in_repo",
|
|
@@ -1267,8 +1269,4 @@ class ReposApiWrapper(BaseCodeToolApiWrapper):
|
|
|
1267
1269
|
"description": self.get_commits.__doc__,
|
|
1268
1270
|
"args_schema": ArgsSchema.GetCommits.value,
|
|
1269
1271
|
},
|
|
1270
|
-
]
|
|
1271
|
-
vector_search_tools = self._get_vector_search_tools()
|
|
1272
|
-
tools.extend(vector_search_tools)
|
|
1273
|
-
|
|
1274
|
-
return tools
|
|
1272
|
+
]
|
|
@@ -155,24 +155,77 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
155
155
|
#
|
|
156
156
|
if clean_index:
|
|
157
157
|
self._clean_index(collection_suffix)
|
|
158
|
-
#
|
|
158
|
+
#
|
|
159
159
|
self._log_tool_event(f"Indexing data into collection with suffix '{collection_suffix}'. It can take some time...")
|
|
160
160
|
self._log_tool_event(f"Loading the documents to index...{kwargs}")
|
|
161
161
|
documents = self._base_loader(**kwargs)
|
|
162
|
+
documents = list(documents) # consume/exhaust generator to count items
|
|
163
|
+
documents_count = len(documents)
|
|
164
|
+
documents = (doc for doc in documents)
|
|
162
165
|
self._log_tool_event(f"Base documents were pre-loaded. "
|
|
163
166
|
f"Search for possible document duplicates and remove them from the indexing list...")
|
|
164
|
-
documents = self._reduce_duplicates(documents, collection_suffix)
|
|
167
|
+
# documents = self._reduce_duplicates(documents, collection_suffix)
|
|
165
168
|
self._log_tool_event(f"Duplicates were removed. "
|
|
166
169
|
f"Processing documents to collect dependencies and prepare them for indexing...")
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
170
|
+
return self._save_index_generator(documents, documents_count, chunking_tool, chunking_config, collection_suffix=collection_suffix, progress_step=progress_step)
|
|
171
|
+
|
|
172
|
+
def _save_index_generator(self, base_documents: Generator[Document, None, None], base_total: int, chunking_tool, chunking_config, collection_suffix: Optional[str] = None, progress_step: int = 20):
|
|
173
|
+
self._log_tool_event(f"Base documents are ready for indexing. {base_total} base documents in total to index.")
|
|
174
|
+
from ..runtime.langchain.interfaces.llm_processor import add_documents
|
|
175
|
+
#
|
|
176
|
+
base_doc_counter = 0
|
|
177
|
+
total_counter = 0
|
|
178
|
+
pg_vector_add_docs_chunk = []
|
|
179
|
+
for base_doc in base_documents:
|
|
180
|
+
base_doc_counter += 1
|
|
181
|
+
self._log_tool_event(f"Processing dependent documents for base documents #{base_doc_counter}.")
|
|
182
|
+
|
|
183
|
+
# (base_doc for _ in range(1)) - wrap single base_doc to Generator in order to reuse existing code
|
|
184
|
+
documents = self._extend_data((base_doc for _ in range(1))) # update content of not-reduced base document if needed (for sharepoint and similar)
|
|
185
|
+
documents = self._collect_dependencies(documents) # collect dependencies for base documents
|
|
186
|
+
self._log_tool_event(f"Dependent documents were processed. "
|
|
187
|
+
f"Applying chunking tool '{chunking_tool}' if specified and preparing documents for indexing...")
|
|
188
|
+
documents = self._apply_loaders_chunkers(documents, chunking_tool, chunking_config)
|
|
189
|
+
self._clean_metadata(documents)
|
|
190
|
+
|
|
191
|
+
logger.debug(f"Indexing base document #{base_doc_counter}: {base_doc} and all dependent documents: {documents}")
|
|
192
|
+
|
|
193
|
+
dependent_docs_counter = 0
|
|
194
|
+
#
|
|
195
|
+
for doc in documents:
|
|
196
|
+
if not doc.page_content:
|
|
197
|
+
# To avoid case when all documents have empty content
|
|
198
|
+
# See llm_processor.add_documents which exclude metadata of docs with empty content
|
|
199
|
+
continue
|
|
200
|
+
#
|
|
201
|
+
if 'id' not in doc.metadata or 'updated_on' not in doc.metadata:
|
|
202
|
+
logger.warning(f"Document is missing required metadata field 'id' or 'updated_on': {doc.metadata}")
|
|
203
|
+
#
|
|
204
|
+
# if collection_suffix is provided, add it to metadata of each document
|
|
205
|
+
if collection_suffix:
|
|
206
|
+
if not doc.metadata.get('collection'):
|
|
207
|
+
doc.metadata['collection'] = collection_suffix
|
|
208
|
+
else:
|
|
209
|
+
doc.metadata['collection'] += f";{collection_suffix}"
|
|
210
|
+
#
|
|
211
|
+
try:
|
|
212
|
+
pg_vector_add_docs_chunk.append(doc)
|
|
213
|
+
dependent_docs_counter += 1
|
|
214
|
+
if len(pg_vector_add_docs_chunk) >= self.max_docs_per_add:
|
|
215
|
+
add_documents(vectorstore=self.vectorstore, documents=pg_vector_add_docs_chunk)
|
|
216
|
+
self._log_tool_event(f"{len(pg_vector_add_docs_chunk)} documents have been indexed. Continuing...")
|
|
217
|
+
pg_vector_add_docs_chunk = []
|
|
218
|
+
except Exception:
|
|
219
|
+
from traceback import format_exc
|
|
220
|
+
logger.error(f"Error: {format_exc()}")
|
|
221
|
+
return {"status": "error", "message": f"Error: {format_exc()}"}
|
|
222
|
+
msg = f"Indexed base document #{base_doc_counter} out of {base_total} (with {dependent_docs_counter} dependencies)."
|
|
223
|
+
logger.debug(msg)
|
|
224
|
+
self._log_tool_event(msg)
|
|
225
|
+
total_counter += dependent_docs_counter
|
|
226
|
+
if pg_vector_add_docs_chunk:
|
|
227
|
+
add_documents(vectorstore=self.vectorstore, documents=pg_vector_add_docs_chunk)
|
|
228
|
+
return {"status": "ok", "message": f"successfully indexed {total_counter} documents"}
|
|
176
229
|
|
|
177
230
|
def _apply_loaders_chunkers(self, documents: Generator[Document, None, None], chunking_tool: str=None, chunking_config=None) -> Generator[Document, None, None]:
|
|
178
231
|
from ..tools.chunkers import __all__ as chunkers
|
|
@@ -222,11 +275,12 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
222
275
|
dep.metadata[IndexerKeywords.PARENT.value] = document.metadata.get('id', None)
|
|
223
276
|
yield dep
|
|
224
277
|
|
|
225
|
-
def _clean_metadata(self, documents:
|
|
278
|
+
def _clean_metadata(self, documents: Generator[Document, None, None]):
|
|
226
279
|
for document in documents:
|
|
227
280
|
remove_keys = self._remove_metadata_keys()
|
|
228
281
|
for key in remove_keys:
|
|
229
282
|
document.metadata.pop(key, None)
|
|
283
|
+
yield document
|
|
230
284
|
|
|
231
285
|
def _reduce_duplicates(
|
|
232
286
|
self,
|
|
@@ -235,11 +289,11 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
235
289
|
log_msg: str = "Verification of documents to index started"
|
|
236
290
|
) -> Generator[Document, None, None]:
|
|
237
291
|
"""Generic duplicate reduction logic for documents."""
|
|
238
|
-
self.
|
|
292
|
+
self._log_tool_event(log_msg, tool_name="index_documents")
|
|
239
293
|
indexed_data = self._get_indexed_data(collection_suffix)
|
|
240
294
|
indexed_keys = set(indexed_data.keys())
|
|
241
295
|
if not indexed_keys:
|
|
242
|
-
self.
|
|
296
|
+
self._log_tool_event("Vectorstore is empty, indexing all incoming documents", tool_name="index_documents")
|
|
243
297
|
yield from documents
|
|
244
298
|
return
|
|
245
299
|
|
|
@@ -257,7 +311,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
257
311
|
yield document
|
|
258
312
|
|
|
259
313
|
if docs_to_remove:
|
|
260
|
-
self.
|
|
314
|
+
self._log_tool_event(
|
|
261
315
|
f"Removing {len(docs_to_remove)} documents from vectorstore that are already indexed with different updated_on.",
|
|
262
316
|
tool_name="index_documents"
|
|
263
317
|
)
|
|
@@ -11,7 +11,8 @@ from .bitbucket_constants import create_pr_data
|
|
|
11
11
|
from .cloud_api_wrapper import BitbucketCloudApi, BitbucketServerApi
|
|
12
12
|
from pydantic.fields import PrivateAttr
|
|
13
13
|
|
|
14
|
-
from ..
|
|
14
|
+
from ..code_indexer_toolkit import CodeIndexerToolkit
|
|
15
|
+
from ..utils.available_tools_decorator import extend_with_parent_available_tools
|
|
15
16
|
|
|
16
17
|
logger = logging.getLogger(__name__)
|
|
17
18
|
|
|
@@ -117,7 +118,7 @@ CommentOnIssueModel = create_model(
|
|
|
117
118
|
)
|
|
118
119
|
|
|
119
120
|
|
|
120
|
-
class BitbucketAPIWrapper(
|
|
121
|
+
class BitbucketAPIWrapper(CodeIndexerToolkit):
|
|
121
122
|
"""Wrapper for Bitbucket API."""
|
|
122
123
|
|
|
123
124
|
_bitbucket: Any = PrivateAttr()
|
|
@@ -167,7 +168,7 @@ class BitbucketAPIWrapper(BaseCodeToolApiWrapper):
|
|
|
167
168
|
repository=values['repository']
|
|
168
169
|
)
|
|
169
170
|
cls._active_branch = values.get('branch')
|
|
170
|
-
return values
|
|
171
|
+
return super().validate_toolkit(values)
|
|
171
172
|
|
|
172
173
|
def set_active_branch(self, branch_name: str) -> str:
|
|
173
174
|
"""Set the active branch for the bot."""
|
|
@@ -399,6 +400,7 @@ class BitbucketAPIWrapper(BaseCodeToolApiWrapper):
|
|
|
399
400
|
except Exception as e:
|
|
400
401
|
return f"Failed to read file {file_path}: {str(e)}"
|
|
401
402
|
|
|
403
|
+
@extend_with_parent_available_tools
|
|
402
404
|
def get_available_tools(self):
|
|
403
405
|
return [
|
|
404
406
|
{
|
|
@@ -473,4 +475,4 @@ class BitbucketAPIWrapper(BaseCodeToolApiWrapper):
|
|
|
473
475
|
"description": self.add_pull_request_comment.__doc__ or "Add a comment to a pull request in the repository.",
|
|
474
476
|
"args_schema": AddPullRequestCommentModel,
|
|
475
477
|
}
|
|
476
|
-
]
|
|
478
|
+
]
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import ast
|
|
2
|
+
import fnmatch
|
|
3
|
+
import logging
|
|
4
|
+
from typing import Optional, List, Generator
|
|
5
|
+
|
|
6
|
+
from langchain_core.documents import Document
|
|
7
|
+
from langchain_core.tools import ToolException
|
|
8
|
+
from pydantic import Field
|
|
9
|
+
|
|
10
|
+
from alita_sdk.tools.base_indexer_toolkit import BaseIndexerToolkit
|
|
11
|
+
from .chunkers.code.codeparser import parse_code_files_for_db
|
|
12
|
+
|
|
13
|
+
logger = logging.getLogger(__name__)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class CodeIndexerToolkit(BaseIndexerToolkit):
|
|
17
|
+
def _get_indexed_data(self, collection_suffix: str):
|
|
18
|
+
if not self.vector_adapter:
|
|
19
|
+
raise ToolException("Vector adapter is not initialized. "
|
|
20
|
+
"Check your configuration: embedding_model and vectorstore_type.")
|
|
21
|
+
return self.vector_adapter.get_code_indexed_data(self, collection_suffix)
|
|
22
|
+
|
|
23
|
+
def key_fn(self, document: Document):
|
|
24
|
+
return document.metadata.get('id')
|
|
25
|
+
|
|
26
|
+
def compare_fn(self, document: Document, idx_data):
|
|
27
|
+
return (document.metadata.get('commit_hash') and
|
|
28
|
+
idx_data.get('commit_hashes') and
|
|
29
|
+
document.metadata.get('commit_hash') in idx_data.get('commit_hashes')
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
def remove_ids_fn(self, idx_data, key: str):
|
|
33
|
+
return idx_data[key]['ids']
|
|
34
|
+
|
|
35
|
+
def _base_loader(
|
|
36
|
+
self,
|
|
37
|
+
branch: Optional[str] = None,
|
|
38
|
+
whitelist: Optional[List[str]] = None,
|
|
39
|
+
blacklist: Optional[List[str]] = None,
|
|
40
|
+
**kwargs) -> Generator[Document, None, None]:
|
|
41
|
+
"""Index repository files in the vector store using code parsing."""
|
|
42
|
+
yield from self.loader(
|
|
43
|
+
branch=branch,
|
|
44
|
+
whitelist=whitelist,
|
|
45
|
+
blacklist=blacklist
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
def _extend_data(self, documents: Generator[Document, None, None]):
|
|
49
|
+
yield from parse_code_files_for_db(documents)
|
|
50
|
+
|
|
51
|
+
def _index_tool_params(self):
|
|
52
|
+
"""Return the parameters for indexing data."""
|
|
53
|
+
return {
|
|
54
|
+
"branch": (Optional[str], Field(
|
|
55
|
+
description="Branch to index files from. Defaults to active branch if None.",
|
|
56
|
+
default=None)),
|
|
57
|
+
"whitelist": (Optional[List[str]], Field(
|
|
58
|
+
description='File extensions or paths to include. Defaults to all files if None. Example: ["*.md", "*.java"]',
|
|
59
|
+
default=None)),
|
|
60
|
+
"blacklist": (Optional[List[str]], Field(
|
|
61
|
+
description='File extensions or paths to exclude. Defaults to no exclusions if None. Example: ["*.md", "*.java"]',
|
|
62
|
+
default=None)),
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
def loader(self,
|
|
66
|
+
branch: Optional[str] = None,
|
|
67
|
+
whitelist: Optional[List[str]] = None,
|
|
68
|
+
blacklist: Optional[List[str]] = None) -> Generator[Document, None, None]:
|
|
69
|
+
"""
|
|
70
|
+
Generates file content from a branch, respecting whitelist and blacklist patterns.
|
|
71
|
+
|
|
72
|
+
Parameters:
|
|
73
|
+
- branch (Optional[str]): Branch for listing files. Defaults to the current branch if None.
|
|
74
|
+
- whitelist (Optional[List[str]]): File extensions or paths to include. Defaults to all files if None.
|
|
75
|
+
- blacklist (Optional[List[str]]): File extensions or paths to exclude. Defaults to no exclusions if None.
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
- generator: Yields content from files matching the whitelist but not the blacklist.
|
|
79
|
+
|
|
80
|
+
Example:
|
|
81
|
+
# Use 'feature-branch', include '.py' files, exclude 'test_' files
|
|
82
|
+
file_generator = loader(branch='feature-branch', whitelist=['*.py'], blacklist=['*test_*'])
|
|
83
|
+
|
|
84
|
+
Notes:
|
|
85
|
+
- Whitelist and blacklist use Unix shell-style wildcards.
|
|
86
|
+
- Files must match the whitelist and not the blacklist to be included.
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
_files = self.__handle_get_files("", self.__get_branch(branch))
|
|
90
|
+
self._log_tool_event(message="Listing files in branch", tool_name="loader")
|
|
91
|
+
logger.info(f"Files in branch: {_files}")
|
|
92
|
+
|
|
93
|
+
def is_whitelisted(file_path: str) -> bool:
|
|
94
|
+
if whitelist:
|
|
95
|
+
return (any(fnmatch.fnmatch(file_path, pattern) for pattern in whitelist)
|
|
96
|
+
or any(file_path.endswith(f'.{pattern}') for pattern in whitelist))
|
|
97
|
+
return True
|
|
98
|
+
|
|
99
|
+
def is_blacklisted(file_path: str) -> bool:
|
|
100
|
+
if blacklist:
|
|
101
|
+
return (any(fnmatch.fnmatch(file_path, pattern) for pattern in blacklist)
|
|
102
|
+
or any(file_path.endswith(f'.{pattern}') for pattern in blacklist))
|
|
103
|
+
return False
|
|
104
|
+
|
|
105
|
+
def file_content_generator():
|
|
106
|
+
self._log_tool_event(message="Reading the files", tool_name="loader")
|
|
107
|
+
# log the progress of file reading
|
|
108
|
+
total_files = len(_files)
|
|
109
|
+
for idx, file in enumerate(_files, 1):
|
|
110
|
+
if is_whitelisted(file) and not is_blacklisted(file):
|
|
111
|
+
# read file ONLY if it matches whitelist and does not match blacklist
|
|
112
|
+
try:
|
|
113
|
+
file_content = self._read_file(file, self.__get_branch(branch))
|
|
114
|
+
except Exception as e:
|
|
115
|
+
logger.error(f"Failed to read file {file}: {e}")
|
|
116
|
+
file_content = ""
|
|
117
|
+
if not file_content:
|
|
118
|
+
# empty file, skip
|
|
119
|
+
continue
|
|
120
|
+
# hash the file content to ensure uniqueness
|
|
121
|
+
import hashlib
|
|
122
|
+
file_hash = hashlib.sha256(file_content.encode("utf-8")).hexdigest()
|
|
123
|
+
yield {"file_name": file,
|
|
124
|
+
"file_content": file_content,
|
|
125
|
+
"commit_hash": file_hash}
|
|
126
|
+
if idx % 10 == 0 or idx == total_files:
|
|
127
|
+
self._log_tool_event(message=f"{idx} out of {total_files} files have been read", tool_name="loader")
|
|
128
|
+
self._log_tool_event(message=f"{len(_files)} have been read", tool_name="loader")
|
|
129
|
+
|
|
130
|
+
return file_content_generator()
|
|
131
|
+
|
|
132
|
+
def __handle_get_files(self, path: str, branch: str):
|
|
133
|
+
"""
|
|
134
|
+
Handles the retrieval of files from a specific path and branch.
|
|
135
|
+
This method should be implemented in subclasses to provide the actual file retrieval logic.
|
|
136
|
+
"""
|
|
137
|
+
_files = self._get_files(path=path, branch=branch)
|
|
138
|
+
if isinstance(_files, str):
|
|
139
|
+
try:
|
|
140
|
+
# Attempt to convert the string to a list using ast.literal_eval
|
|
141
|
+
_files = ast.literal_eval(_files)
|
|
142
|
+
# Ensure that the result is actually a list of strings
|
|
143
|
+
if not isinstance(_files, list) or not all(isinstance(item, str) for item in _files):
|
|
144
|
+
raise ValueError("The evaluated result is not a list of strings")
|
|
145
|
+
except (SyntaxError, ValueError):
|
|
146
|
+
# Handle the case where the string cannot be converted to a list
|
|
147
|
+
raise ValueError("Expected a list of strings, but got a string that cannot be converted")
|
|
148
|
+
|
|
149
|
+
# Ensure _files is a list of strings
|
|
150
|
+
if not isinstance(_files, list) or not all(isinstance(item, str) for item in _files):
|
|
151
|
+
raise ValueError("Expected a list of strings")
|
|
152
|
+
return _files
|
|
153
|
+
|
|
154
|
+
def __get_branch(self, branch):
|
|
155
|
+
return (branch or getattr(self, 'active_branch', None)
|
|
156
|
+
or getattr(self, '_active_branch', None) or getattr(self, 'branch', None))
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
from typing import Any, Dict, List, Optional, Union, Tuple
|
|
2
1
|
import logging
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
from pydantic import BaseModel, model_validator, Field, SecretStr
|
|
2
|
+
from typing import Any, Dict, Optional
|
|
3
|
+
|
|
4
|
+
from pydantic import model_validator, Field, SecretStr
|
|
7
5
|
|
|
8
6
|
from .github_client import GitHubClient
|
|
9
7
|
from .graphql_client_wrapper import GraphQLClientWrapper
|
|
@@ -11,28 +9,17 @@ from .schemas import (
|
|
|
11
9
|
GitHubAuthConfig,
|
|
12
10
|
GitHubRepoConfig
|
|
13
11
|
)
|
|
14
|
-
|
|
15
|
-
from ..
|
|
16
|
-
|
|
17
|
-
from langchain_core.callbacks import dispatch_custom_event
|
|
12
|
+
from ..code_indexer_toolkit import CodeIndexerToolkit
|
|
13
|
+
from ..utils.available_tools_decorator import extend_with_parent_available_tools
|
|
18
14
|
|
|
19
15
|
logger = logging.getLogger(__name__)
|
|
20
16
|
|
|
21
17
|
# Import prompts for tools
|
|
22
|
-
from .tool_prompts import (
|
|
23
|
-
UPDATE_FILE_PROMPT,
|
|
24
|
-
CREATE_ISSUE_PROMPT,
|
|
25
|
-
UPDATE_ISSUE_PROMPT,
|
|
26
|
-
CREATE_ISSUE_ON_PROJECT_PROMPT,
|
|
27
|
-
UPDATE_ISSUE_ON_PROJECT_PROMPT
|
|
28
|
-
)
|
|
29
18
|
|
|
30
19
|
# Create schema models for the new indexing functionality
|
|
31
|
-
from pydantic import create_model
|
|
32
|
-
from typing import Literal
|
|
33
20
|
|
|
34
21
|
|
|
35
|
-
class AlitaGitHubAPIWrapper(
|
|
22
|
+
class AlitaGitHubAPIWrapper(CodeIndexerToolkit):
|
|
36
23
|
"""
|
|
37
24
|
Wrapper for GitHub API that integrates both REST and GraphQL functionality.
|
|
38
25
|
"""
|
|
@@ -117,7 +104,7 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
|
|
|
117
104
|
if "llm" not in values:
|
|
118
105
|
values["llm"] = None
|
|
119
106
|
|
|
120
|
-
return values
|
|
107
|
+
return super().validate_toolkit(values)
|
|
121
108
|
|
|
122
109
|
# Expose GitHub REST client methods directly via property
|
|
123
110
|
@property
|
|
@@ -131,7 +118,7 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
|
|
|
131
118
|
"""Access to GitHub GraphQL client methods"""
|
|
132
119
|
return self.graphql_client_instance
|
|
133
120
|
|
|
134
|
-
|
|
121
|
+
@extend_with_parent_available_tools
|
|
135
122
|
def get_available_tools(self):
|
|
136
123
|
# this is horrible, I need to think on something better
|
|
137
124
|
if not self.github_client_instance:
|
|
@@ -142,12 +129,8 @@ class AlitaGitHubAPIWrapper(BaseCodeToolApiWrapper):
|
|
|
142
129
|
graphql_tools = GraphQLClientWrapper.model_construct().get_available_tools()
|
|
143
130
|
else:
|
|
144
131
|
graphql_tools = self.graphql_client_instance.get_available_tools()
|
|
145
|
-
|
|
146
|
-
# Add vector search tools from base class (includes index_data + search tools)
|
|
147
|
-
vector_search_tools = self._get_vector_search_tools()
|
|
148
132
|
|
|
149
|
-
|
|
150
|
-
return tools
|
|
133
|
+
return github_tools + graphql_tools
|
|
151
134
|
|
|
152
135
|
def _get_files(self, path: str = "", branch: str = None):
|
|
153
136
|
"""Get list of files from GitHub repository."""
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# api_wrapper.py
|
|
2
2
|
from typing import Any, Dict, List, Optional
|
|
3
3
|
import fnmatch
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
from ..code_indexer_toolkit import CodeIndexerToolkit
|
|
5
6
|
from pydantic import create_model, Field, model_validator, SecretStr, PrivateAttr
|
|
6
7
|
|
|
8
|
+
from ..utils.available_tools_decorator import extend_with_parent_available_tools
|
|
9
|
+
|
|
7
10
|
AppendFileModel = create_model(
|
|
8
11
|
"AppendFileModel",
|
|
9
12
|
file_path=(str, Field(description="The path of the file")),
|
|
@@ -97,7 +100,7 @@ GetCommitsModel = create_model(
|
|
|
97
100
|
author=(Optional[str], Field(description="Author name", default=None)),
|
|
98
101
|
)
|
|
99
102
|
|
|
100
|
-
class GitLabAPIWrapper(
|
|
103
|
+
class GitLabAPIWrapper(CodeIndexerToolkit):
|
|
101
104
|
url: str
|
|
102
105
|
repository: str
|
|
103
106
|
private_token: SecretStr
|
|
@@ -127,7 +130,7 @@ class GitLabAPIWrapper(BaseCodeToolApiWrapper):
|
|
|
127
130
|
cls._repo_instance = g.projects.get(values.get('repository'))
|
|
128
131
|
cls._git = g
|
|
129
132
|
cls._active_branch = values.get('branch')
|
|
130
|
-
return values
|
|
133
|
+
return super().validate_toolkit(values)
|
|
131
134
|
|
|
132
135
|
def set_active_branch(self, branch_name: str) -> str:
|
|
133
136
|
self._active_branch = branch_name
|
|
@@ -417,6 +420,7 @@ class GitLabAPIWrapper(BaseCodeToolApiWrapper):
|
|
|
417
420
|
for commit in commits
|
|
418
421
|
]
|
|
419
422
|
|
|
423
|
+
@extend_with_parent_available_tools
|
|
420
424
|
def get_available_tools(self):
|
|
421
425
|
return [
|
|
422
426
|
{
|
|
@@ -521,4 +525,4 @@ class GitLabAPIWrapper(BaseCodeToolApiWrapper):
|
|
|
521
525
|
"description": "Retrieve a list of commits from the repository.",
|
|
522
526
|
"args_schema": GetCommitsModel,
|
|
523
527
|
}
|
|
524
|
-
]
|
|
528
|
+
]
|
|
@@ -1330,7 +1330,7 @@ class JiraApiWrapper(NonCodeIndexerToolkit):
|
|
|
1330
1330
|
|
|
1331
1331
|
# Use provided JQL query or default to all issues
|
|
1332
1332
|
if not jql:
|
|
1333
|
-
jql_query = "ORDER BY updated DESC" # Default to get all issues ordered by update time
|
|
1333
|
+
jql_query = "created >= \"1970-01-01\" ORDER BY updated DESC" # Default to get all issues ordered by update time
|
|
1334
1334
|
else:
|
|
1335
1335
|
jql_query = jql
|
|
1336
1336
|
|
|
@@ -297,7 +297,9 @@ def sanitize_for_postgres(text: str, replacement: str = "") -> str:
|
|
|
297
297
|
return text.replace("\x00", replacement)
|
|
298
298
|
|
|
299
299
|
|
|
300
|
-
def file_extension_by_chunker(chunker_name: str) -> str:
|
|
300
|
+
def file_extension_by_chunker(chunker_name: str) -> str | None:
|
|
301
|
+
if not chunker_name:
|
|
302
|
+
return None
|
|
301
303
|
name = chunker_name.lower()
|
|
302
304
|
if name == "markdown":
|
|
303
305
|
return ".md"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alita_sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.355
|
|
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
|
|
@@ -143,6 +143,7 @@ alita_sdk/runtime/utils/toolkit_utils.py
|
|
|
143
143
|
alita_sdk/runtime/utils/utils.py
|
|
144
144
|
alita_sdk/tools/__init__.py
|
|
145
145
|
alita_sdk/tools/base_indexer_toolkit.py
|
|
146
|
+
alita_sdk/tools/code_indexer_toolkit.py
|
|
146
147
|
alita_sdk/tools/elitea_base.py
|
|
147
148
|
alita_sdk/tools/non_code_indexer_toolkit.py
|
|
148
149
|
alita_sdk/tools/ado/__init__.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|