alita-sdk 0.3.374__tar.gz → 0.3.376__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.374 → alita_sdk-0.3.376}/PKG-INFO +1 -1
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/assistant.py +16 -3
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/langraph_agent.py +4 -1
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/function.py +17 -4
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/vectorstore.py +21 -21
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/vectorstore_base.py +16 -16
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/base_indexer_toolkit.py +48 -48
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/code_indexer_toolkit.py +2 -2
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/confluence/api_wrapper.py +1 -1
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/elitea_base.py +29 -29
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/non_code_indexer_toolkit.py +2 -2
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +23 -23
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk.egg-info/PKG-INFO +1 -1
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/pyproject.toml +1 -1
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/LICENSE +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/README.md +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/ado.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/bitbucket.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/browser.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/carrier.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/confluence.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/embedding.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/figma.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/google_places.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/jira.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/postman.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/rally.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/report_portal.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/salesforce.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/service_now.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/sharepoint.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/slack.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/sonar.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/sql.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/testio.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/xray.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/zephyr.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/configurations/zephyr_essential.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/clients/client.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/clients/sandbox_client.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaMarkdownLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaPythonLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/ImageParser.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/graph.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/image_generation.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/sandbox.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/sematic/json_chunker.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/confluence/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/slack/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/utils/available_tools_decorator.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/utils/content_parser.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk.egg-info/SOURCES.txt +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/setup.cfg +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.374 → alita_sdk-0.3.376}/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.376
|
|
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
|
|
@@ -137,11 +137,9 @@ class Assistant:
|
|
|
137
137
|
def runnable(self):
|
|
138
138
|
if self.app_type == 'pipeline':
|
|
139
139
|
return self.pipeline()
|
|
140
|
-
elif self.app_type == 'openai':
|
|
141
|
-
return self.getOpenAIToolsAgentExecutor()
|
|
142
140
|
elif self.app_type == 'xml':
|
|
143
141
|
return self.getXMLAgentExecutor()
|
|
144
|
-
elif self.app_type in ['predict', 'react']:
|
|
142
|
+
elif self.app_type in ['predict', 'react', 'openai']:
|
|
145
143
|
return self.getLangGraphReactAgent()
|
|
146
144
|
else:
|
|
147
145
|
self.tools = [EchoTool()] + self.tools
|
|
@@ -241,6 +239,10 @@ class Assistant:
|
|
|
241
239
|
# Only use prompt_instructions if explicitly specified (for predict app_type)
|
|
242
240
|
if self.app_type == "predict" and isinstance(self.prompt, str):
|
|
243
241
|
prompt_instructions = self.prompt
|
|
242
|
+
|
|
243
|
+
# take the system message from the openai prompt as a prompt instructions
|
|
244
|
+
if self.app_type == "openai" and hasattr(self.prompt, 'messages'):
|
|
245
|
+
prompt_instructions = self.__take_prompt_from_openai_messages()
|
|
244
246
|
|
|
245
247
|
# Create a unified YAML schema with conditional tool binding
|
|
246
248
|
# Build the base node configuration
|
|
@@ -341,3 +343,14 @@ class Assistant:
|
|
|
341
343
|
|
|
342
344
|
def predict(self, messages: list[BaseMessage]):
|
|
343
345
|
return self.client.invoke(messages)
|
|
346
|
+
|
|
347
|
+
def __take_prompt_from_openai_messages(self):
|
|
348
|
+
if self.prompt and self.prompt.messages:
|
|
349
|
+
for message in self.prompt.messages:
|
|
350
|
+
# we don't need any message placeholder from the openai agent prompt
|
|
351
|
+
if hasattr(message, 'variable_name'):
|
|
352
|
+
continue
|
|
353
|
+
# take only the content of the system message from the openai prompt
|
|
354
|
+
if isinstance(message, SystemMessage):
|
|
355
|
+
return message.content
|
|
356
|
+
return None
|
|
@@ -780,7 +780,10 @@ class LangGraphAgentRunnable(CompiledStateGraph):
|
|
|
780
780
|
|
|
781
781
|
# Append current input to existing messages instead of overwriting
|
|
782
782
|
if input.get('input'):
|
|
783
|
-
|
|
783
|
+
if isinstance(input['input'], str):
|
|
784
|
+
current_message = input['input']
|
|
785
|
+
else:
|
|
786
|
+
current_message = input.get('input')[-1]
|
|
784
787
|
# TODO: add handler after we add 2+ inputs (filterByType, etc.)
|
|
785
788
|
input['input'] = current_message if isinstance(current_message, str) else str(current_message)
|
|
786
789
|
if input.get('messages'):
|
|
@@ -41,14 +41,21 @@ class FunctionTool(BaseTool):
|
|
|
41
41
|
# add classes related to sandbox client
|
|
42
42
|
# read the content of alita_sdk/runtime/cliens/sandbox_client.py
|
|
43
43
|
try:
|
|
44
|
-
|
|
44
|
+
import os
|
|
45
|
+
from pathlib import Path
|
|
46
|
+
|
|
47
|
+
# Get the directory of the current file and construct the path to sandbox_client.py
|
|
48
|
+
current_dir = Path(__file__).parent
|
|
49
|
+
sandbox_client_path = current_dir.parent / 'clients' / 'sandbox_client.py'
|
|
50
|
+
|
|
51
|
+
with open(sandbox_client_path, 'r') as f:
|
|
45
52
|
sandbox_client_code = f.read()
|
|
46
53
|
pyodide_predata += f"\n{sandbox_client_code}\n"
|
|
47
54
|
pyodide_predata += (f"alita_client = SandboxClient(base_url='{self.alita_client.base_url}',"
|
|
48
55
|
f"project_id={self.alita_client.project_id},"
|
|
49
56
|
f"auth_token='{self.alita_client.auth_token}')")
|
|
50
57
|
except FileNotFoundError:
|
|
51
|
-
logger.error("sandbox_client.py not found. Ensure
|
|
58
|
+
logger.error(f"sandbox_client.py not found at {sandbox_client_path}. Ensure the file exists.")
|
|
52
59
|
return pyodide_predata
|
|
53
60
|
|
|
54
61
|
def _handle_pyodide_output(self, tool_result: Any) -> dict:
|
|
@@ -71,8 +78,14 @@ class FunctionTool(BaseTool):
|
|
|
71
78
|
# execute code tool and update state variables
|
|
72
79
|
try:
|
|
73
80
|
result_value = tool_result.get('result', {})
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
if isinstance(result_value, dict):
|
|
82
|
+
tool_result_converted.update(result_value)
|
|
83
|
+
elif isinstance(result_value, list):
|
|
84
|
+
# Handle list case - could wrap in a key or handle differently based on requirements
|
|
85
|
+
tool_result_converted.update({"result": result_value})
|
|
86
|
+
else:
|
|
87
|
+
# Handle JSON string case
|
|
88
|
+
tool_result_converted.update(json.loads(result_value))
|
|
76
89
|
except json.JSONDecodeError:
|
|
77
90
|
logger.error(f"JSONDecodeError: {tool_result}")
|
|
78
91
|
|
|
@@ -207,15 +207,15 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
207
207
|
tool_name="_remove_collection"
|
|
208
208
|
)
|
|
209
209
|
|
|
210
|
-
def _get_indexed_ids(self,
|
|
210
|
+
def _get_indexed_ids(self, index_name: Optional[str] = '') -> List[str]:
|
|
211
211
|
"""Get all indexed document IDs from vectorstore"""
|
|
212
|
-
return self.vector_adapter.get_indexed_ids(self,
|
|
212
|
+
return self.vector_adapter.get_indexed_ids(self, index_name)
|
|
213
213
|
|
|
214
214
|
def list_collections(self) -> Any:
|
|
215
215
|
"""List all collections in the vectorstore.
|
|
216
216
|
Returns a list of collection names, or if no collections exist,
|
|
217
217
|
returns a dict with an empty list and a message."""
|
|
218
|
-
raw = self.vector_adapter.
|
|
218
|
+
raw = self.vector_adapter.list_indexes(self)
|
|
219
219
|
# Normalize raw result to a list of names
|
|
220
220
|
if not raw:
|
|
221
221
|
# No collections found
|
|
@@ -233,7 +233,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
233
233
|
return {"collections": [], "message": "No indexed collections"}
|
|
234
234
|
return cols
|
|
235
235
|
|
|
236
|
-
def _clean_collection(self,
|
|
236
|
+
def _clean_collection(self, index_name: str = ''):
|
|
237
237
|
"""
|
|
238
238
|
Clean the vectorstore collection by deleting all indexed data.
|
|
239
239
|
"""
|
|
@@ -241,15 +241,15 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
241
241
|
f"Cleaning collection '{self.dataset}'",
|
|
242
242
|
tool_name="_clean_collection"
|
|
243
243
|
)
|
|
244
|
-
self.vector_adapter.clean_collection(self,
|
|
244
|
+
self.vector_adapter.clean_collection(self, index_name)
|
|
245
245
|
self._log_data(
|
|
246
246
|
f"Collection '{self.dataset}' has been cleaned. ",
|
|
247
247
|
tool_name="_clean_collection"
|
|
248
248
|
)
|
|
249
249
|
|
|
250
|
-
def _get_code_indexed_data(self,
|
|
250
|
+
def _get_code_indexed_data(self, index_name: str) -> Dict[str, Dict[str, Any]]:
|
|
251
251
|
""" Get all indexed data from vectorstore for code content """
|
|
252
|
-
return self.vector_adapter.get_code_indexed_data(self,
|
|
252
|
+
return self.vector_adapter.get_code_indexed_data(self, index_name)
|
|
253
253
|
|
|
254
254
|
def _add_to_collection(self, entry_id, new_collection_value):
|
|
255
255
|
"""Add a new collection name to the `collection` key in the `metadata` column."""
|
|
@@ -258,7 +258,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
258
258
|
def _reduce_duplicates(
|
|
259
259
|
self,
|
|
260
260
|
documents: Generator[Any, None, None],
|
|
261
|
-
|
|
261
|
+
index_name: str,
|
|
262
262
|
get_indexed_data: Callable,
|
|
263
263
|
key_fn: Callable,
|
|
264
264
|
compare_fn: Callable,
|
|
@@ -267,7 +267,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
267
267
|
) -> List[Any]:
|
|
268
268
|
"""Generic duplicate reduction logic for documents."""
|
|
269
269
|
self._log_data(log_msg, tool_name="index_documents")
|
|
270
|
-
indexed_data = get_indexed_data(
|
|
270
|
+
indexed_data = get_indexed_data(index_name)
|
|
271
271
|
indexed_keys = set(indexed_data.keys())
|
|
272
272
|
if not indexed_keys:
|
|
273
273
|
self._log_data("Vectorstore is empty, indexing all incoming documents", tool_name="index_documents")
|
|
@@ -279,14 +279,14 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
279
279
|
for document in documents:
|
|
280
280
|
key = key_fn(document)
|
|
281
281
|
key = key if isinstance(key, str) else str(key)
|
|
282
|
-
if key in indexed_keys and
|
|
282
|
+
if key in indexed_keys and index_name == indexed_data[key]['metadata'].get('collection'):
|
|
283
283
|
if compare_fn(document, indexed_data[key]):
|
|
284
284
|
# Disabled addition of new collection to already indexed documents
|
|
285
285
|
# # check metadata.collection and update if needed
|
|
286
286
|
# for update_collection_id in remove_ids_fn(indexed_data, key):
|
|
287
287
|
# self._add_to_collection(
|
|
288
288
|
# update_collection_id,
|
|
289
|
-
#
|
|
289
|
+
# index_name
|
|
290
290
|
# )
|
|
291
291
|
continue
|
|
292
292
|
final_docs.append(document)
|
|
@@ -303,10 +303,10 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
303
303
|
|
|
304
304
|
return final_docs
|
|
305
305
|
|
|
306
|
-
def _reduce_code_duplicates(self, documents: Generator[Any, None, None],
|
|
306
|
+
def _reduce_code_duplicates(self, documents: Generator[Any, None, None], index_name: str) -> List[Any]:
|
|
307
307
|
return self._reduce_duplicates(
|
|
308
308
|
documents,
|
|
309
|
-
|
|
309
|
+
index_name,
|
|
310
310
|
self._get_code_indexed_data,
|
|
311
311
|
lambda doc: doc.metadata.get('filename'),
|
|
312
312
|
lambda doc, idx: (
|
|
@@ -318,7 +318,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
318
318
|
log_msg="Verification of code documents to index started"
|
|
319
319
|
)
|
|
320
320
|
|
|
321
|
-
def index_documents(self, documents: Generator[Document, None, None],
|
|
321
|
+
def index_documents(self, documents: Generator[Document, None, None], index_name: str, progress_step: int = 20, clean_index: bool = True, is_code: bool = True):
|
|
322
322
|
""" Index documents in the vectorstore.
|
|
323
323
|
|
|
324
324
|
Args:
|
|
@@ -329,13 +329,13 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
329
329
|
|
|
330
330
|
from ..langchain.interfaces.llm_processor import add_documents
|
|
331
331
|
|
|
332
|
-
self._log_tool_event(message=f"Starting the indexing... Parameters: {
|
|
332
|
+
self._log_tool_event(message=f"Starting the indexing... Parameters: {index_name=}, {clean_index=}, {is_code}", tool_name="index_documents")
|
|
333
333
|
# pre-process documents if needed (find duplicates, etc.)
|
|
334
334
|
if clean_index:
|
|
335
335
|
logger.info("Cleaning index before re-indexing all documents.")
|
|
336
336
|
self._log_data("Cleaning index before re-indexing all documents. Previous index will be removed", tool_name="index_documents")
|
|
337
337
|
try:
|
|
338
|
-
self._clean_collection(
|
|
338
|
+
self._clean_collection(index_name)
|
|
339
339
|
self.vectoradapter.persist()
|
|
340
340
|
self.vectoradapter.vacuum()
|
|
341
341
|
self._log_data("Previous index has been removed",
|
|
@@ -349,7 +349,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
349
349
|
message="Filter for duplicates",
|
|
350
350
|
tool_name="index_documents")
|
|
351
351
|
# remove duplicates based on metadata 'id' and 'updated_on' or 'commit_hash' fields
|
|
352
|
-
documents = self._reduce_code_duplicates(documents,
|
|
352
|
+
documents = self._reduce_code_duplicates(documents, index_name)
|
|
353
353
|
self._log_tool_event(
|
|
354
354
|
message="All the duplicates were filtered out. Proceeding with indexing.",
|
|
355
355
|
tool_name="index_documents")
|
|
@@ -377,13 +377,13 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
|
377
377
|
self._log_tool_event(message=f"Documents for indexing were processed. Total documents: {len(documents)}",
|
|
378
378
|
tool_name="index_documents")
|
|
379
379
|
|
|
380
|
-
# if
|
|
381
|
-
if
|
|
380
|
+
# if index_name is provided, add it to metadata of each document
|
|
381
|
+
if index_name:
|
|
382
382
|
for doc in documents:
|
|
383
383
|
if not doc.metadata.get('collection'):
|
|
384
|
-
doc.metadata['collection'] =
|
|
384
|
+
doc.metadata['collection'] = index_name
|
|
385
385
|
else:
|
|
386
|
-
doc.metadata['collection'] += f";{
|
|
386
|
+
doc.metadata['collection'] += f";{index_name}"
|
|
387
387
|
|
|
388
388
|
total_docs = len(documents)
|
|
389
389
|
documents_count = 0
|
|
@@ -208,21 +208,21 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
|
208
208
|
logger.error(f"Error during similarity search: {str(e)}")
|
|
209
209
|
raise ToolException(f"Search failed: {str(e)}")
|
|
210
210
|
|
|
211
|
-
def
|
|
211
|
+
def list_indexes(self) -> List[str]:
|
|
212
212
|
"""List all collections in the vectorstore."""
|
|
213
213
|
|
|
214
|
-
collections = self.vector_adapter.
|
|
214
|
+
collections = self.vector_adapter.list_indexes(self)
|
|
215
215
|
if not collections:
|
|
216
216
|
return "No indexed collections"
|
|
217
217
|
return collections
|
|
218
218
|
|
|
219
|
-
def get_index_meta(self,
|
|
220
|
-
index_metas = self.vector_adapter.get_index_meta(self,
|
|
219
|
+
def get_index_meta(self, index_name: str):
|
|
220
|
+
index_metas = self.vector_adapter.get_index_meta(self, index_name)
|
|
221
221
|
if len(index_metas) > 1:
|
|
222
222
|
raise RuntimeError(f"Multiple index_meta documents found: {index_metas}")
|
|
223
223
|
return index_metas[0] if index_metas else None
|
|
224
224
|
|
|
225
|
-
def _clean_collection(self,
|
|
225
|
+
def _clean_collection(self, index_name: str = ''):
|
|
226
226
|
"""
|
|
227
227
|
Clean the vectorstore collection by deleting all indexed data.
|
|
228
228
|
"""
|
|
@@ -230,13 +230,13 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
|
230
230
|
f"Cleaning collection '{self.dataset}'",
|
|
231
231
|
tool_name="_clean_collection"
|
|
232
232
|
)
|
|
233
|
-
self.vector_adapter.clean_collection(self,
|
|
233
|
+
self.vector_adapter.clean_collection(self, index_name)
|
|
234
234
|
self._log_tool_event(
|
|
235
235
|
f"Collection '{self.dataset}' has been cleaned. ",
|
|
236
236
|
tool_name="_clean_collection"
|
|
237
237
|
)
|
|
238
238
|
|
|
239
|
-
def index_documents(self, documents: Generator[Document, None, None],
|
|
239
|
+
def index_documents(self, documents: Generator[Document, None, None], index_name: str, progress_step: int = 20, clean_index: bool = True):
|
|
240
240
|
""" Index documents in the vectorstore.
|
|
241
241
|
|
|
242
242
|
Args:
|
|
@@ -245,21 +245,21 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
|
245
245
|
clean_index (bool): If True, clean the index before re-indexing all documents.
|
|
246
246
|
"""
|
|
247
247
|
if clean_index:
|
|
248
|
-
self._clean_index(
|
|
248
|
+
self._clean_index(index_name)
|
|
249
249
|
|
|
250
|
-
return self._save_index(list(documents),
|
|
250
|
+
return self._save_index(list(documents), index_name, progress_step)
|
|
251
251
|
|
|
252
|
-
def _clean_index(self,
|
|
252
|
+
def _clean_index(self, index_name: str):
|
|
253
253
|
logger.info("Cleaning index before re-indexing all documents.")
|
|
254
254
|
self._log_tool_event("Cleaning index before re-indexing all documents. Previous index will be removed", tool_name="index_documents")
|
|
255
255
|
try:
|
|
256
|
-
self._clean_collection(
|
|
256
|
+
self._clean_collection(index_name)
|
|
257
257
|
self._log_tool_event("Previous index has been removed",
|
|
258
258
|
tool_name="index_documents")
|
|
259
259
|
except Exception as e:
|
|
260
260
|
logger.warning(f"Failed to clean index: {str(e)}. Continuing with re-indexing.")
|
|
261
261
|
|
|
262
|
-
def _save_index(self, documents: list[Document],
|
|
262
|
+
def _save_index(self, documents: list[Document], index_name: Optional[str] = None, progress_step: int = 20):
|
|
263
263
|
from ..langchain.interfaces.llm_processor import add_documents
|
|
264
264
|
#
|
|
265
265
|
for doc in documents:
|
|
@@ -268,13 +268,13 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
|
268
268
|
|
|
269
269
|
logger.debug(f"Indexing documents: {documents}")
|
|
270
270
|
|
|
271
|
-
# if
|
|
272
|
-
if
|
|
271
|
+
# if index_name is provided, add it to metadata of each document
|
|
272
|
+
if index_name:
|
|
273
273
|
for doc in documents:
|
|
274
274
|
if not doc.metadata.get('collection'):
|
|
275
|
-
doc.metadata['collection'] =
|
|
275
|
+
doc.metadata['collection'] = index_name
|
|
276
276
|
else:
|
|
277
|
-
doc.metadata['collection'] += f";{
|
|
277
|
+
doc.metadata['collection'] += f";{index_name}"
|
|
278
278
|
|
|
279
279
|
total_docs = len(documents)
|
|
280
280
|
documents_count = 0
|
|
@@ -19,19 +19,19 @@ logger = logging.getLogger(__name__)
|
|
|
19
19
|
# Base Vector Store Schema Models
|
|
20
20
|
BaseIndexParams = create_model(
|
|
21
21
|
"BaseIndexParams",
|
|
22
|
-
|
|
22
|
+
index_name=(str, Field(description="Index name (max 7 characters)", min_length=1, max_length=7)),
|
|
23
23
|
)
|
|
24
24
|
|
|
25
25
|
RemoveIndexParams = create_model(
|
|
26
26
|
"RemoveIndexParams",
|
|
27
|
-
|
|
27
|
+
index_name=(Optional[str], Field(description="Optional index name (max 7 characters)", default="", max_length=7)),
|
|
28
28
|
)
|
|
29
29
|
|
|
30
30
|
BaseSearchParams = create_model(
|
|
31
31
|
"BaseSearchParams",
|
|
32
32
|
query=(str, Field(description="Query text to search in the index")),
|
|
33
|
-
|
|
34
|
-
description="Optional
|
|
33
|
+
index_name=(Optional[str], Field(
|
|
34
|
+
description="Optional index name (max 7 characters). Leave empty to search across all datasets",
|
|
35
35
|
default="", max_length=7)),
|
|
36
36
|
filter=(Optional[dict | str], Field(
|
|
37
37
|
description="Filter to apply to the search results. Can be a dictionary or a JSON string.",
|
|
@@ -61,7 +61,7 @@ BaseSearchParams = create_model(
|
|
|
61
61
|
BaseStepbackSearchParams = create_model(
|
|
62
62
|
"BaseStepbackSearchParams",
|
|
63
63
|
query=(str, Field(description="Query text to search in the index")),
|
|
64
|
-
|
|
64
|
+
index_name=(Optional[str], Field(description="Optional index name (max 7 characters)", default="", max_length=7)),
|
|
65
65
|
messages=(Optional[List], Field(description="Chat messages for stepback search context", default=[])),
|
|
66
66
|
filter=(Optional[dict | str], Field(
|
|
67
67
|
description="Filter to apply to the search results. Can be a dictionary or a JSON string.",
|
|
@@ -151,18 +151,18 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
151
151
|
yield from ()
|
|
152
152
|
|
|
153
153
|
def index_data(self, **kwargs):
|
|
154
|
-
|
|
154
|
+
index_name = kwargs.get("index_name")
|
|
155
155
|
progress_step = kwargs.get("progress_step")
|
|
156
156
|
clean_index = kwargs.get("clean_index")
|
|
157
157
|
chunking_tool = kwargs.get("chunking_tool")
|
|
158
158
|
chunking_config = kwargs.get("chunking_config")
|
|
159
159
|
#
|
|
160
160
|
if clean_index:
|
|
161
|
-
self._clean_index(
|
|
161
|
+
self._clean_index(index_name)
|
|
162
162
|
#
|
|
163
|
-
self.index_meta_init(
|
|
163
|
+
self.index_meta_init(index_name, kwargs)
|
|
164
164
|
#
|
|
165
|
-
self._log_tool_event(f"Indexing data into collection with suffix '{
|
|
165
|
+
self._log_tool_event(f"Indexing data into collection with suffix '{index_name}'. It can take some time...")
|
|
166
166
|
self._log_tool_event(f"Loading the documents to index...{kwargs}")
|
|
167
167
|
documents = self._base_loader(**kwargs)
|
|
168
168
|
documents = list(documents) # consume/exhaust generator to count items
|
|
@@ -170,16 +170,16 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
170
170
|
documents = (doc for doc in documents)
|
|
171
171
|
self._log_tool_event(f"Base documents were pre-loaded. "
|
|
172
172
|
f"Search for possible document duplicates and remove them from the indexing list...")
|
|
173
|
-
documents = self._reduce_duplicates(documents,
|
|
173
|
+
documents = self._reduce_duplicates(documents, index_name)
|
|
174
174
|
self._log_tool_event(f"Duplicates were removed. "
|
|
175
175
|
f"Processing documents to collect dependencies and prepare them for indexing...")
|
|
176
|
-
result = self._save_index_generator(documents, documents_count, chunking_tool, chunking_config,
|
|
176
|
+
result = self._save_index_generator(documents, documents_count, chunking_tool, chunking_config, index_name=index_name, progress_step=progress_step)
|
|
177
177
|
#
|
|
178
|
-
self.index_meta_update(
|
|
178
|
+
self.index_meta_update(index_name, IndexerKeywords.INDEX_META_COMPLETED.value, result)
|
|
179
179
|
#
|
|
180
180
|
return {"status": "ok", "message": f"successfully indexed {result} documents"}
|
|
181
181
|
|
|
182
|
-
def _save_index_generator(self, base_documents: Generator[Document, None, None], base_total: int, chunking_tool, chunking_config,
|
|
182
|
+
def _save_index_generator(self, base_documents: Generator[Document, None, None], base_total: int, chunking_tool, chunking_config, index_name: Optional[str] = None, progress_step: int = 20):
|
|
183
183
|
self._log_tool_event(f"Base documents are ready for indexing. {base_total} base documents in total to index.")
|
|
184
184
|
from ..runtime.langchain.interfaces.llm_processor import add_documents
|
|
185
185
|
#
|
|
@@ -211,12 +211,12 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
211
211
|
if 'id' not in doc.metadata or 'updated_on' not in doc.metadata:
|
|
212
212
|
logger.warning(f"Document is missing required metadata field 'id' or 'updated_on': {doc.metadata}")
|
|
213
213
|
#
|
|
214
|
-
# if
|
|
215
|
-
if
|
|
214
|
+
# if index_name is provided, add it to metadata of each document
|
|
215
|
+
if index_name:
|
|
216
216
|
if not doc.metadata.get('collection'):
|
|
217
|
-
doc.metadata['collection'] =
|
|
217
|
+
doc.metadata['collection'] = index_name
|
|
218
218
|
else:
|
|
219
|
-
doc.metadata['collection'] += f";{
|
|
219
|
+
doc.metadata['collection'] += f";{index_name}"
|
|
220
220
|
#
|
|
221
221
|
try:
|
|
222
222
|
pg_vector_add_docs_chunk.append(doc)
|
|
@@ -295,12 +295,12 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
295
295
|
def _reduce_duplicates(
|
|
296
296
|
self,
|
|
297
297
|
documents: Generator[Any, None, None],
|
|
298
|
-
|
|
298
|
+
index_name: str,
|
|
299
299
|
log_msg: str = "Verification of documents to index started"
|
|
300
300
|
) -> Generator[Document, None, None]:
|
|
301
301
|
"""Generic duplicate reduction logic for documents."""
|
|
302
302
|
self._log_tool_event(log_msg, tool_name="index_documents")
|
|
303
|
-
indexed_data = self._get_indexed_data(
|
|
303
|
+
indexed_data = self._get_indexed_data(index_name)
|
|
304
304
|
indexed_keys = set(indexed_data.keys())
|
|
305
305
|
if not indexed_keys:
|
|
306
306
|
self._log_tool_event("Vectorstore is empty, indexing all incoming documents", tool_name="index_documents")
|
|
@@ -312,7 +312,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
312
312
|
for document in documents:
|
|
313
313
|
key = self.key_fn(document)
|
|
314
314
|
key = key if isinstance(key, str) else str(key)
|
|
315
|
-
if key in indexed_keys and
|
|
315
|
+
if key in indexed_keys and index_name == indexed_data[key]['metadata'].get('collection'):
|
|
316
316
|
if self.compare_fn(document, indexed_data[key]):
|
|
317
317
|
continue
|
|
318
318
|
yield document
|
|
@@ -327,7 +327,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
327
327
|
)
|
|
328
328
|
self.vectorstore.delete(ids=list(docs_to_remove))
|
|
329
329
|
|
|
330
|
-
def _get_indexed_data(self,
|
|
330
|
+
def _get_indexed_data(self, index_name: str):
|
|
331
331
|
raise NotImplementedError("Subclasses must implement this method")
|
|
332
332
|
|
|
333
333
|
def key_fn(self, document: Document):
|
|
@@ -339,20 +339,20 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
339
339
|
def remove_ids_fn(self, idx_data, key: str):
|
|
340
340
|
raise NotImplementedError("Subclasses must implement this method")
|
|
341
341
|
|
|
342
|
-
def remove_index(self,
|
|
342
|
+
def remove_index(self, index_name: str = ""):
|
|
343
343
|
"""Cleans the indexed data in the collection."""
|
|
344
|
-
super()._clean_collection(
|
|
345
|
-
return (f"Collection '{
|
|
346
|
-
f"Available collections: {self.
|
|
344
|
+
super()._clean_collection(index_name=index_name)
|
|
345
|
+
return (f"Collection '{index_name}' has been removed from the vector store.\n"
|
|
346
|
+
f"Available collections: {self.list_indexes()}") if index_name \
|
|
347
347
|
else "All collections have been removed from the vector store."
|
|
348
348
|
|
|
349
|
-
def _build_collection_filter(self, filter: dict | str,
|
|
349
|
+
def _build_collection_filter(self, filter: dict | str, index_name: str = "") -> dict:
|
|
350
350
|
"""Builds a filter for the collection based on the provided suffix."""
|
|
351
351
|
|
|
352
352
|
filter = filter if isinstance(filter, dict) else json.loads(filter)
|
|
353
|
-
if
|
|
353
|
+
if index_name:
|
|
354
354
|
filter.update({"collection": {
|
|
355
|
-
"$eq":
|
|
355
|
+
"$eq": index_name.strip()
|
|
356
356
|
}})
|
|
357
357
|
|
|
358
358
|
if filter:
|
|
@@ -375,7 +375,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
375
375
|
|
|
376
376
|
def search_index(self,
|
|
377
377
|
query: str,
|
|
378
|
-
|
|
378
|
+
index_name: str = "",
|
|
379
379
|
filter: dict | str = {}, cut_off: float = 0.5,
|
|
380
380
|
search_top: int = 10, reranker: dict = {},
|
|
381
381
|
full_text_search: Optional[Dict[str, Any]] = None,
|
|
@@ -383,13 +383,13 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
383
383
|
extended_search: Optional[List[str]] = None,
|
|
384
384
|
**kwargs):
|
|
385
385
|
""" Searches indexed documents in the vector store."""
|
|
386
|
-
# build filter on top of
|
|
386
|
+
# build filter on top of index_name
|
|
387
387
|
|
|
388
|
-
available_collections = super().
|
|
389
|
-
if
|
|
390
|
-
return f"Collection '{
|
|
388
|
+
available_collections = super().list_indexes()
|
|
389
|
+
if index_name and index_name not in available_collections:
|
|
390
|
+
return f"Collection '{index_name}' not found. Available collections: {available_collections}"
|
|
391
391
|
|
|
392
|
-
filter = self._build_collection_filter(filter,
|
|
392
|
+
filter = self._build_collection_filter(filter, index_name)
|
|
393
393
|
found_docs = super().search_documents(
|
|
394
394
|
query,
|
|
395
395
|
doctype=self.doctype,
|
|
@@ -406,7 +406,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
406
406
|
def stepback_search_index(self,
|
|
407
407
|
query: str,
|
|
408
408
|
messages: List[Dict[str, Any]] = [],
|
|
409
|
-
|
|
409
|
+
index_name: str = "",
|
|
410
410
|
filter: dict | str = {}, cut_off: float = 0.5,
|
|
411
411
|
search_top: int = 10, reranker: dict = {},
|
|
412
412
|
full_text_search: Optional[Dict[str, Any]] = None,
|
|
@@ -414,7 +414,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
414
414
|
extended_search: Optional[List[str]] = None,
|
|
415
415
|
**kwargs):
|
|
416
416
|
""" Searches indexed documents in the vector store."""
|
|
417
|
-
filter = self._build_collection_filter(filter,
|
|
417
|
+
filter = self._build_collection_filter(filter, index_name)
|
|
418
418
|
found_docs = super().stepback_search(
|
|
419
419
|
query,
|
|
420
420
|
messages,
|
|
@@ -431,7 +431,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
431
431
|
def stepback_summary_index(self,
|
|
432
432
|
query: str,
|
|
433
433
|
messages: List[Dict[str, Any]] = [],
|
|
434
|
-
|
|
434
|
+
index_name: str = "",
|
|
435
435
|
filter: dict | str = {}, cut_off: float = 0.5,
|
|
436
436
|
search_top: int = 10, reranker: dict = {},
|
|
437
437
|
full_text_search: Optional[Dict[str, Any]] = None,
|
|
@@ -440,7 +440,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
440
440
|
**kwargs):
|
|
441
441
|
""" Generates a summary of indexed documents using stepback technique."""
|
|
442
442
|
|
|
443
|
-
filter = self._build_collection_filter(filter,
|
|
443
|
+
filter = self._build_collection_filter(filter, index_name)
|
|
444
444
|
return super().stepback_summary(
|
|
445
445
|
query,
|
|
446
446
|
messages,
|
|
@@ -453,12 +453,12 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
453
453
|
extended_search=extended_search
|
|
454
454
|
)
|
|
455
455
|
|
|
456
|
-
def index_meta_init(self,
|
|
457
|
-
index_meta_raw = super().get_index_meta(
|
|
456
|
+
def index_meta_init(self, index_name: str, index_configuration: dict[str, Any]):
|
|
457
|
+
index_meta_raw = super().get_index_meta(index_name)
|
|
458
458
|
from ..runtime.langchain.interfaces.llm_processor import add_documents
|
|
459
459
|
created_on = time.time()
|
|
460
460
|
metadata = {
|
|
461
|
-
"collection":
|
|
461
|
+
"collection": index_name,
|
|
462
462
|
"type": IndexerKeywords.INDEX_META_TYPE.value,
|
|
463
463
|
"indexed": 0,
|
|
464
464
|
"state": IndexerKeywords.INDEX_META_IN_PROGRESS.value,
|
|
@@ -483,11 +483,11 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
483
483
|
metadata["history"] = json.dumps(history)
|
|
484
484
|
index_meta_ids = [index_meta_raw.get("id")]
|
|
485
485
|
#
|
|
486
|
-
index_meta_doc = Document(page_content=f"{IndexerKeywords.INDEX_META_TYPE.value}_{
|
|
486
|
+
index_meta_doc = Document(page_content=f"{IndexerKeywords.INDEX_META_TYPE.value}_{index_name}", metadata=metadata)
|
|
487
487
|
add_documents(vectorstore=self.vectorstore, documents=[index_meta_doc], ids=index_meta_ids)
|
|
488
488
|
|
|
489
|
-
def index_meta_update(self,
|
|
490
|
-
index_meta_raw = super().get_index_meta(
|
|
489
|
+
def index_meta_update(self, index_name: str, state: str, result: int):
|
|
490
|
+
index_meta_raw = super().get_index_meta(index_name)
|
|
491
491
|
from ..runtime.langchain.interfaces.llm_processor import add_documents
|
|
492
492
|
#
|
|
493
493
|
if index_meta_raw:
|
|
@@ -547,10 +547,10 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
|
547
547
|
"args_schema": RemoveIndexParams
|
|
548
548
|
},
|
|
549
549
|
{
|
|
550
|
-
"name": "
|
|
551
|
-
"mode": "
|
|
552
|
-
"ref": self.
|
|
553
|
-
"description": self.
|
|
550
|
+
"name": "list_indexes",
|
|
551
|
+
"mode": "list_indexes",
|
|
552
|
+
"ref": self.list_indexes,
|
|
553
|
+
"description": self.list_indexes.__doc__,
|
|
554
554
|
"args_schema": create_model("ListCollectionsParams") # No parameters
|
|
555
555
|
},
|
|
556
556
|
]
|
|
@@ -14,11 +14,11 @@ logger = logging.getLogger(__name__)
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class CodeIndexerToolkit(BaseIndexerToolkit):
|
|
17
|
-
def _get_indexed_data(self,
|
|
17
|
+
def _get_indexed_data(self, index_name: str):
|
|
18
18
|
if not self.vector_adapter:
|
|
19
19
|
raise ToolException("Vector adapter is not initialized. "
|
|
20
20
|
"Check your configuration: embedding_model and vectorstore_type.")
|
|
21
|
-
return self.vector_adapter.get_code_indexed_data(self,
|
|
21
|
+
return self.vector_adapter.get_code_indexed_data(self, index_name)
|
|
22
22
|
|
|
23
23
|
def key_fn(self, document: Document):
|
|
24
24
|
return document.metadata.get('id')
|
|
@@ -1674,7 +1674,7 @@ class ConfluenceAPIWrapper(NonCodeIndexerToolkit):
|
|
|
1674
1674
|
description="List of file extensions to skip when processing attachments: i.e. ['*.png', '*.jpg']",
|
|
1675
1675
|
default=[])),
|
|
1676
1676
|
"include_comments": (Optional[bool], Field(description="Include comments.", default=False)),
|
|
1677
|
-
"include_labels": (Optional[bool], Field(description="Include labels.", default=
|
|
1677
|
+
"include_labels": (Optional[bool], Field(description="Include labels.", default=False)),
|
|
1678
1678
|
"ocr_languages": (Optional[str], Field(description="OCR languages for processing attachments.", default='eng')),
|
|
1679
1679
|
"keep_markdown_format": (Optional[bool], Field(description="Keep the markdown format.", default=True)),
|
|
1680
1680
|
"keep_newlines": (Optional[bool], Field(description="Keep newlines in the content.", default=True)),
|