alita-sdk 0.3.253__tar.gz → 0.3.255__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/PKG-INFO +1 -1
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/slack.py +1 -1
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/clients/client.py +13 -8
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +4 -2
- alita_sdk-0.3.255/alita_sdk/runtime/langchain/document_loaders/AlitaJSONLoader.py +73 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/constants.py +16 -11
- alita_sdk-0.3.255/alita_sdk/runtime/tools/mcp_server_tool.py +101 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/vectorstore.py +13 -2
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/vectorstore_base.py +5 -11
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/work_item/__init__.py +1 -1
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/base_indexer_toolkit.py +6 -38
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +30 -3
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/confluence/__init__.py +3 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/confluence/api_wrapper.py +10 -5
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/elitea_base.py +59 -9
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sharepoint/api_wrapper.py +24 -25
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/testrail/api_wrapper.py +2 -2
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/utils/content_parser.py +32 -37
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk.egg-info/PKG-INFO +1 -1
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk.egg-info/SOURCES.txt +1 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/pyproject.toml +1 -1
- alita_sdk-0.3.253/alita_sdk/runtime/tools/mcp_server_tool.py +0 -73
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/LICENSE +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/README.md +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/ado.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/azure_search.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/bigquery.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/bitbucket.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/confluence.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/delta_lake.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/embedding.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/figma.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/github.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/gitlab.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/jira.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/pgvector.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/postman.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/qtest.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/rally.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/service_now.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/testrail.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/xray.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/zephyr.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/configurations/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/assistant.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaPDFLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaPowerPointLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/AlitaTextLoader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/configurations.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/toolkit_runtime.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/toolkit_utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/aws/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/aws/delta_lake/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/aws/delta_lake/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/aws/delta_lake/schemas.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/aws/delta_lake/tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/bitbucket/tools.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google/bigquery/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google/bigquery/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google/bigquery/schemas.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google/bigquery/tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/non_code_indexer_toolkit.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/slack/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/slack/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/vector_adapters/VectorStoreAdapter.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/vector_adapters/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_essential/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_essential/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_essential/client.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk.egg-info/requires.txt +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/setup.cfg +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.253 → alita_sdk-0.3.255}/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.255
|
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 <lifedjik@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
|
6
6
|
License-Expression: Apache-2.0
|
@@ -27,6 +27,6 @@ class SlackConfiguration(BaseModel):
|
|
27
27
|
}
|
28
28
|
}
|
29
29
|
)
|
30
|
-
name: Optional[
|
30
|
+
name: Optional[str] = Field(description="Slack name")
|
31
31
|
slack_token: Optional[SecretStr] = Field(description="Slack Token like XOXB-*****-*****-*****-*****")
|
32
32
|
channel_id:Optional[str] = Field(description="Channel ID")
|
@@ -602,16 +602,22 @@ class AlitaClient:
|
|
602
602
|
import logging
|
603
603
|
logger = logging.getLogger(__name__)
|
604
604
|
toolkit_config_parsed_json = None
|
605
|
+
events_dispatched = []
|
606
|
+
|
605
607
|
try:
|
606
608
|
toolkit_config_type = toolkit_config.get('type')
|
607
|
-
|
608
|
-
toolkit_config_model_class = toolkit_class.toolkit_config_schema()
|
609
|
-
toolkit_config_validated_settings = toolkit_config_model_class(
|
610
|
-
**toolkit_config.get('settings', {})
|
611
|
-
).model_dump(mode='json')
|
612
|
-
|
609
|
+
available_toolkit_models = get_available_toolkit_models().get(toolkit_config_type)
|
613
610
|
toolkit_config_parsed_json = deepcopy(toolkit_config)
|
614
|
-
|
611
|
+
if available_toolkit_models:
|
612
|
+
toolkit_class = available_toolkit_models['toolkit_class']
|
613
|
+
toolkit_config_model_class = toolkit_class.toolkit_config_schema()
|
614
|
+
toolkit_config_validated_settings = toolkit_config_model_class(
|
615
|
+
**toolkit_config.get('settings', {})
|
616
|
+
).model_dump(mode='json')
|
617
|
+
toolkit_config_parsed_json['settings'] = toolkit_config_validated_settings
|
618
|
+
else:
|
619
|
+
logger.warning(f"Toolkit type '{toolkit_config_type}' is skipping model validation")
|
620
|
+
toolkit_config_parsed_json['settings'] = None
|
615
621
|
except Exception as toolkit_config_error:
|
616
622
|
logger.error(f"Failed to validate toolkit configuration: {str(toolkit_config_error)}")
|
617
623
|
return {
|
@@ -635,7 +641,6 @@ class AlitaClient:
|
|
635
641
|
# Create RunnableConfig for callback support
|
636
642
|
config = None
|
637
643
|
callbacks = []
|
638
|
-
events_dispatched = []
|
639
644
|
|
640
645
|
if runtime_config:
|
641
646
|
callbacks = runtime_config.get('callbacks', [])
|
@@ -9,6 +9,7 @@ from langchain_core.documents import Document
|
|
9
9
|
from mammoth import convert_to_html
|
10
10
|
from markdownify import markdownify
|
11
11
|
|
12
|
+
from alita_sdk.tools.chunkers.sematic.markdown_chunker import markdown_by_headers_chunker
|
12
13
|
from .utils import perform_llm_prediction_for_image_bytes
|
13
14
|
|
14
15
|
|
@@ -35,6 +36,7 @@ class AlitaDocxMammothLoader(BaseLoader):
|
|
35
36
|
self.extract_images = kwargs.get('extract_images')
|
36
37
|
self.llm = kwargs.get("llm")
|
37
38
|
self.prompt = kwargs.get("prompt")
|
39
|
+
self.max_tokens = kwargs.get('max_tokens', 512)
|
38
40
|
|
39
41
|
def __handle_image(self, image) -> dict:
|
40
42
|
"""
|
@@ -100,11 +102,11 @@ class AlitaDocxMammothLoader(BaseLoader):
|
|
100
102
|
Loads and converts the Docx file to markdown format.
|
101
103
|
|
102
104
|
Returns:
|
103
|
-
List[Document]: A list containing a
|
105
|
+
List[Document]: A list containing a Documents with the markdown content
|
104
106
|
and metadata including the source file path.
|
105
107
|
"""
|
106
108
|
result_content = self.get_content()
|
107
|
-
return [Document(page_content=result_content, metadata={'source': str(self.path)})]
|
109
|
+
return list(markdown_by_headers_chunker(iter([Document(page_content=result_content, metadata={'source': str(self.path)})]), config={'max_tokens':self.max_tokens}))
|
108
110
|
|
109
111
|
def get_content(self):
|
110
112
|
"""
|
@@ -0,0 +1,73 @@
|
|
1
|
+
import json
|
2
|
+
from typing import Iterator
|
3
|
+
|
4
|
+
from langchain_core.documents import Document
|
5
|
+
|
6
|
+
from langchain_community.document_loaders.base import BaseLoader
|
7
|
+
from langchain_community.document_loaders.helpers import detect_file_encodings
|
8
|
+
from langchain_core.tools import ToolException
|
9
|
+
from langchain_text_splitters import RecursiveJsonSplitter
|
10
|
+
|
11
|
+
|
12
|
+
class AlitaJSONLoader(BaseLoader):
|
13
|
+
|
14
|
+
def __init__(self, **kwargs):
|
15
|
+
"""Initialize with file path."""
|
16
|
+
if kwargs.get('file_path'):
|
17
|
+
self.file_path = kwargs['file_path']
|
18
|
+
elif kwargs.get('file_content'):
|
19
|
+
self.file_content = kwargs['file_content']
|
20
|
+
self.file_name = kwargs['file_name']
|
21
|
+
else:
|
22
|
+
raise ToolException("'file_path' or 'file_content' parameter should be provided.")
|
23
|
+
self.encoding = kwargs.get('encoding', 'utf-8')
|
24
|
+
self.autodetect_encoding = kwargs.get('autodetect_encoding', False)
|
25
|
+
self.max_tokens = kwargs.get('max_tokens', 512)
|
26
|
+
|
27
|
+
def get_content(self):
|
28
|
+
try:
|
29
|
+
if hasattr(self, 'file_path') and self.file_path:
|
30
|
+
with open(self.file_path, encoding=self.encoding) as f:
|
31
|
+
return json.load(f)
|
32
|
+
elif hasattr(self, 'file_content') and self.file_content:
|
33
|
+
return json.load(self.file_content)
|
34
|
+
else:
|
35
|
+
raise ValueError("Neither file_path nor file_content is provided.")
|
36
|
+
|
37
|
+
except UnicodeDecodeError as e:
|
38
|
+
if self.autodetect_encoding:
|
39
|
+
if hasattr(self, 'file_path') and self.file_path:
|
40
|
+
detected_encodings = detect_file_encodings(self.file_path)
|
41
|
+
for encoding in detected_encodings:
|
42
|
+
try:
|
43
|
+
with open(self.file_path, encoding=encoding.encoding) as f:
|
44
|
+
return f.read()
|
45
|
+
break
|
46
|
+
except UnicodeDecodeError:
|
47
|
+
continue
|
48
|
+
elif hasattr(self, 'file_content') and self.file_content:
|
49
|
+
detected_encodings = detect_file_encodings(self.file_content)
|
50
|
+
for encoding in detected_encodings:
|
51
|
+
try:
|
52
|
+
return self.file_content.decode(encoding.encoding)
|
53
|
+
except UnicodeDecodeError:
|
54
|
+
continue
|
55
|
+
else:
|
56
|
+
raise ValueError("Neither file_path nor file_content is provided for encoding detection.")
|
57
|
+
else:
|
58
|
+
raise RuntimeError(f"Error loading content with encoding {self.encoding}.") from e
|
59
|
+
except Exception as e:
|
60
|
+
raise RuntimeError(f"Error loading content.") from e
|
61
|
+
|
62
|
+
def lazy_load(self) -> Iterator[Document]:
|
63
|
+
"""Load from file path."""
|
64
|
+
content_json = self.get_content()
|
65
|
+
|
66
|
+
if isinstance(content_json, list):
|
67
|
+
data_dict = {str(i): item for i, item in enumerate(content_json)}
|
68
|
+
else:
|
69
|
+
data_dict = content_json
|
70
|
+
chunks = RecursiveJsonSplitter(max_chunk_size=self.max_tokens).split_json(json_data=data_dict)
|
71
|
+
for chunk in chunks:
|
72
|
+
metadata = {"source": str(self.file_path) if hasattr(self, 'file_path') else self.file_name}
|
73
|
+
yield Document(page_content=json.dumps(chunk), metadata=metadata)
|
{alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/runtime/langchain/document_loaders/constants.py
RENAMED
@@ -13,17 +13,18 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
from langchain_community.document_loaders import (
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
UnstructuredMarkdownLoader,
|
17
|
+
AirbyteJSONLoader, UnstructuredHTMLLoader,
|
18
|
+
PythonLoader)
|
19
19
|
|
20
20
|
from .AlitaCSVLoader import AlitaCSVLoader
|
21
21
|
from .AlitaDocxMammothLoader import AlitaDocxMammothLoader
|
22
22
|
from .AlitaExcelLoader import AlitaExcelLoader
|
23
23
|
from .AlitaImageLoader import AlitaImageLoader
|
24
|
+
from .AlitaJSONLoader import AlitaJSONLoader
|
24
25
|
from .AlitaPDFLoader import AlitaPDFLoader
|
25
|
-
from .AlitaTextLoader import AlitaTextLoader
|
26
26
|
from .AlitaPowerPointLoader import AlitaPowerPointLoader
|
27
|
+
from .AlitaTextLoader import AlitaTextLoader
|
27
28
|
|
28
29
|
loaders_map = {
|
29
30
|
'.png': {
|
@@ -122,7 +123,9 @@ loaders_map = {
|
|
122
123
|
'.docx': {
|
123
124
|
'class': AlitaDocxMammothLoader,
|
124
125
|
'is_multimodal_processing': True,
|
125
|
-
'kwargs': {
|
126
|
+
'kwargs': {
|
127
|
+
'extract_images': True
|
128
|
+
}
|
126
129
|
},
|
127
130
|
'.doc': {
|
128
131
|
'class': AlitaTextLoader,
|
@@ -130,11 +133,9 @@ loaders_map = {
|
|
130
133
|
'kwargs': {}
|
131
134
|
},
|
132
135
|
'.json': {
|
133
|
-
'class':
|
136
|
+
'class': AlitaJSONLoader,
|
134
137
|
'is_multimodal_processing': False,
|
135
|
-
'kwargs': {
|
136
|
-
'autodetect_encoding': True
|
137
|
-
}
|
138
|
+
'kwargs': {}
|
138
139
|
},
|
139
140
|
'.jsonl': {
|
140
141
|
'class': AirbyteJSONLoader,
|
@@ -154,12 +155,16 @@ loaders_map = {
|
|
154
155
|
'.ppt': {
|
155
156
|
'class': AlitaPowerPointLoader,
|
156
157
|
'is_multimodal_processing': False,
|
157
|
-
'kwargs': {
|
158
|
+
'kwargs': {
|
159
|
+
'mode': 'paged'
|
160
|
+
}
|
158
161
|
},
|
159
162
|
'.pptx': {
|
160
163
|
'class': AlitaPowerPointLoader,
|
161
164
|
'is_multimodal_processing': False,
|
162
|
-
'kwargs': {
|
165
|
+
'kwargs': {
|
166
|
+
'mode': 'paged'
|
167
|
+
}
|
163
168
|
},
|
164
169
|
'.py': {
|
165
170
|
'class': PythonLoader,
|
@@ -0,0 +1,101 @@
|
|
1
|
+
import uuid
|
2
|
+
from logging import getLogger
|
3
|
+
from typing import Any, Type, Literal, Optional, Union, List
|
4
|
+
|
5
|
+
from langchain_core.tools import BaseTool
|
6
|
+
from pydantic import BaseModel, Field, create_model, EmailStr, constr
|
7
|
+
|
8
|
+
logger = getLogger(__name__)
|
9
|
+
|
10
|
+
|
11
|
+
class McpServerTool(BaseTool):
|
12
|
+
name: str
|
13
|
+
description: str
|
14
|
+
args_schema: Optional[Type[BaseModel]] = None
|
15
|
+
return_type: str = "str"
|
16
|
+
client: Any
|
17
|
+
server: str
|
18
|
+
tool_timeout_sec: int = 60
|
19
|
+
|
20
|
+
|
21
|
+
@staticmethod
|
22
|
+
def create_pydantic_model_from_schema(schema: dict, model_name: str = "ArgsSchema"):
|
23
|
+
def parse_type(field: dict, name: str = "Field") -> Any:
|
24
|
+
if "allOf" in field:
|
25
|
+
merged = {}
|
26
|
+
required = set()
|
27
|
+
for idx, subschema in enumerate(field["allOf"]):
|
28
|
+
sub_type = parse_type(subschema, f"{name}AllOf{idx}")
|
29
|
+
if hasattr(sub_type, "__fields__"):
|
30
|
+
merged.update({k: (v.outer_type_, v.default) for k, v in sub_type.__fields__.items()})
|
31
|
+
required.update({k for k, v in sub_type.__fields__.items() if v.required})
|
32
|
+
if merged:
|
33
|
+
return create_model(f"{name}AllOf", **merged)
|
34
|
+
return Any
|
35
|
+
if "anyOf" in field or "oneOf" in field:
|
36
|
+
key = "anyOf" if "anyOf" in field else "oneOf"
|
37
|
+
types = [parse_type(sub, f"{name}{key.capitalize()}{i}") for i, sub in enumerate(field[key])]
|
38
|
+
# Check for null type
|
39
|
+
if any(sub.get("type") == "null" for sub in field[key]):
|
40
|
+
non_null_types = [parse_type(sub, f"{name}{key.capitalize()}{i}")
|
41
|
+
for i, sub in enumerate(field[key]) if sub.get("type") != "null"]
|
42
|
+
if len(non_null_types) == 1:
|
43
|
+
return Optional[non_null_types[0]]
|
44
|
+
return Union[tuple(types)]
|
45
|
+
t = field.get("type")
|
46
|
+
if isinstance(t, list):
|
47
|
+
if "null" in t:
|
48
|
+
non_null = [x for x in t if x != "null"]
|
49
|
+
if len(non_null) == 1:
|
50
|
+
field = dict(field)
|
51
|
+
field["type"] = non_null[0]
|
52
|
+
return Optional[parse_type(field, name)]
|
53
|
+
return Any
|
54
|
+
return Any
|
55
|
+
if t == "string":
|
56
|
+
if "enum" in field:
|
57
|
+
return Literal[tuple(field["enum"])]
|
58
|
+
if field.get("format") == "email":
|
59
|
+
return EmailStr
|
60
|
+
if "pattern" in field:
|
61
|
+
return constr(regex=field["pattern"])
|
62
|
+
return str
|
63
|
+
if t == "integer":
|
64
|
+
return int
|
65
|
+
if t == "number":
|
66
|
+
return float
|
67
|
+
if t == "boolean":
|
68
|
+
return bool
|
69
|
+
if t == "object":
|
70
|
+
return McpServerTool.create_pydantic_model_from_schema(field, name.capitalize())
|
71
|
+
if t == "array":
|
72
|
+
items = field.get("items", {})
|
73
|
+
return List[parse_type(items, name + "Item")]
|
74
|
+
return Any
|
75
|
+
|
76
|
+
properties = schema.get("properties", {})
|
77
|
+
required = set(schema.get("required", []))
|
78
|
+
fields = {}
|
79
|
+
for name, prop in properties.items():
|
80
|
+
typ = parse_type(prop, name.capitalize())
|
81
|
+
default = prop.get("default", ... if name in required else None)
|
82
|
+
field_args = {}
|
83
|
+
if "description" in prop:
|
84
|
+
field_args["description"] = prop["description"]
|
85
|
+
if "format" in prop:
|
86
|
+
field_args["format"] = prop["format"]
|
87
|
+
fields[name] = (typ, Field(default, **field_args))
|
88
|
+
return create_model(model_name, **fields)
|
89
|
+
|
90
|
+
def _run(self, *args, **kwargs):
|
91
|
+
call_data = {
|
92
|
+
"server": self.server,
|
93
|
+
"tool_timeout_sec": self.tool_timeout_sec,
|
94
|
+
"tool_call_id": str(uuid.uuid4()),
|
95
|
+
"params": {
|
96
|
+
"name": self.name,
|
97
|
+
"arguments": kwargs
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
return self.client.mcp_tool_call(call_data)
|
@@ -336,6 +336,7 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
336
336
|
|
337
337
|
from ..langchain.interfaces.llm_processor import add_documents
|
338
338
|
|
339
|
+
self._log_tool_event(message=f"Starting the indexing... Parameters: {collection_suffix=}, {clean_index=}, {is_code}", tool_name="index_documents")
|
339
340
|
# pre-process documents if needed (find duplicates, etc.)
|
340
341
|
if clean_index:
|
341
342
|
logger.info("Cleaning index before re-indexing all documents.")
|
@@ -351,9 +352,15 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
351
352
|
if isinstance(documents, types.GeneratorType):
|
352
353
|
documents = list(documents)
|
353
354
|
else:
|
355
|
+
self._log_tool_event(
|
356
|
+
message="Filter for duplicates",
|
357
|
+
tool_name="index_documents")
|
354
358
|
# remove duplicates based on metadata 'id' and 'updated_on' or 'commit_hash' fields
|
355
359
|
documents = self._reduce_code_duplicates(documents, collection_suffix) if is_code \
|
356
360
|
else self._reduce_non_code_duplicates(documents, collection_suffix)
|
361
|
+
self._log_tool_event(
|
362
|
+
message="All the duplicates were filtered out. Proceeding with indexing.",
|
363
|
+
tool_name="index_documents")
|
357
364
|
|
358
365
|
if not documents or len(documents) == 0:
|
359
366
|
logger.info("No new documents to index after duplicate check.")
|
@@ -362,8 +369,8 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
362
369
|
# if func is provided, apply it to documents
|
363
370
|
# used for processing of documents before indexing,
|
364
371
|
# e.g. to avoid time-consuming operations for documents that are already indexed
|
372
|
+
self._log_tool_event(message=f"Processing the dependent documents (attachments, etc.)", tool_name="index_documents")
|
365
373
|
dependent_docs_generator = self.process_document_func(documents) if self.process_document_func else []
|
366
|
-
|
367
374
|
# notify user about missed required metadata fields: id, updated_on
|
368
375
|
# it is not required to have them, but it is recommended to have them for proper re-indexing and duplicate detection
|
369
376
|
for doc in documents:
|
@@ -375,6 +382,9 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
375
382
|
|
376
383
|
documents = documents + list(dependent_docs_generator)
|
377
384
|
|
385
|
+
self._log_tool_event(message=f"Documents for indexing were processed. Total documents: {len(documents)}",
|
386
|
+
tool_name="index_documents")
|
387
|
+
|
378
388
|
# if collection_suffix is provided, add it to metadata of each document
|
379
389
|
if collection_suffix:
|
380
390
|
for doc in documents:
|
@@ -386,7 +396,8 @@ class VectorStoreWrapper(BaseToolApiWrapper):
|
|
386
396
|
total_docs = len(documents)
|
387
397
|
documents_count = 0
|
388
398
|
_documents = []
|
389
|
-
|
399
|
+
self._log_tool_event(message=f"Starting the indexing of processed documents. Total documents: {len(documents)}",
|
400
|
+
tool_name="index_documents")
|
390
401
|
# set default progress step to 20 if out of 0...100 or None
|
391
402
|
progress_step = 20 if progress_step not in range(0, 100) else progress_step
|
392
403
|
next_progress_point = progress_step
|
@@ -1,18 +1,16 @@
|
|
1
1
|
import json
|
2
2
|
import math
|
3
|
-
import
|
4
|
-
from typing import Any, Optional, List, Dict,
|
3
|
+
from logging import getLogger
|
4
|
+
from typing import Any, Optional, List, Dict, Generator
|
5
5
|
|
6
6
|
from langchain_core.documents import Document
|
7
|
-
from pydantic import BaseModel, model_validator, Field
|
8
|
-
from ..langchain.tools.vector import VectorAdapter
|
9
7
|
from langchain_core.messages import HumanMessage
|
8
|
+
from pydantic import BaseModel, model_validator, Field
|
9
|
+
|
10
10
|
from alita_sdk.tools.elitea_base import BaseToolApiWrapper
|
11
11
|
from alita_sdk.tools.vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
|
12
|
-
from
|
13
|
-
|
12
|
+
from ..langchain.tools.vector import VectorAdapter
|
14
13
|
from ..utils.logging import dispatch_custom_event
|
15
|
-
from ..utils.utils import IndexerKeywords
|
16
14
|
|
17
15
|
logger = getLogger(__name__)
|
18
16
|
|
@@ -212,10 +210,6 @@ class VectorStoreWrapperBase(BaseToolApiWrapper):
|
|
212
210
|
tool_name="_clean_collection"
|
213
211
|
)
|
214
212
|
|
215
|
-
def _add_to_collection(self, entry_id, new_collection_value):
|
216
|
-
"""Add a new collection name to the `collection` key in the `metadata` column."""
|
217
|
-
self.vector_adapter.add_to_collection(self, entry_id, new_collection_value)
|
218
|
-
|
219
213
|
def index_documents(self, documents: Generator[Document, None, None], collection_suffix: str, progress_step: int = 20, clean_index: bool = True):
|
220
214
|
""" Index documents in the vectorstore.
|
221
215
|
|
@@ -26,7 +26,7 @@ class AzureDevOpsWorkItemsToolkit(BaseToolkit):
|
|
26
26
|
'toolkit_name': True,
|
27
27
|
'max_toolkit_length': AzureDevOpsWorkItemsToolkit.toolkit_max_length})
|
28
28
|
),
|
29
|
-
ado_configuration=(AdoConfiguration, Field(description="Ado Work Item configuration", json_schema_extra={'configuration_types': ['
|
29
|
+
ado_configuration=(AdoConfiguration, Field(description="Ado Work Item configuration", json_schema_extra={'configuration_types': ['ado']})),
|
30
30
|
limit=(Optional[int], Field(description="ADO plans limit used for limitation of the list with results", default=5)),
|
31
31
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(default=[], json_schema_extra={'args_schemas': selected_tools})),
|
32
32
|
# indexer settings
|
@@ -6,7 +6,6 @@ from langchain_core.documents import Document
|
|
6
6
|
from pydantic import create_model, Field, SecretStr
|
7
7
|
|
8
8
|
# from alita_sdk.runtime.langchain.interfaces.llm_processor import get_embeddings
|
9
|
-
from .chunkers import markdown_chunker
|
10
9
|
from .utils.content_parser import process_content_by_type
|
11
10
|
from .vector_adapters.VectorStoreAdapter import VectorStoreAdapterFactory
|
12
11
|
from ..runtime.tools.vectorstore_base import VectorStoreWrapperBase
|
@@ -141,7 +140,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
141
140
|
def _base_loader(self, **kwargs) -> Generator[Document, None, None]:
|
142
141
|
""" Loads documents from a source, processes them,
|
143
142
|
and returns a list of Document objects with base metadata: id and created_on."""
|
144
|
-
|
143
|
+
yield from ()
|
145
144
|
|
146
145
|
def _process_document(self, base_document: Document) -> Generator[Document, None, None]:
|
147
146
|
""" Process an existing base document to extract relevant metadata for full document preparation.
|
@@ -153,7 +152,7 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
153
152
|
|
154
153
|
Returns:
|
155
154
|
Document: The processed document with metadata."""
|
156
|
-
|
155
|
+
yield from ()
|
157
156
|
|
158
157
|
def index_data(self, **kwargs):
|
159
158
|
collection_suffix = kwargs.get("collection_suffix")
|
@@ -174,18 +173,20 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
174
173
|
return self._save_index(list(documents), collection_suffix=collection_suffix, progress_step=progress_step)
|
175
174
|
|
176
175
|
def _apply_loaders_chunkers(self, documents: Generator[Document, None, None], chunking_tool: str=None, chunking_config=None) -> Generator[Document, None, None]:
|
177
|
-
from alita_sdk.tools.chunkers import __confluence_chunkers__ as chunkers
|
176
|
+
from alita_sdk.tools.chunkers import __confluence_chunkers__ as chunkers
|
178
177
|
|
179
178
|
if chunking_config is None:
|
180
179
|
chunking_config = {}
|
181
180
|
chunking_config['embedding'] = self._embedding
|
182
181
|
chunking_config['llm'] = self.llm
|
183
|
-
|
182
|
+
|
184
183
|
for document in documents:
|
185
184
|
if content_type := document.metadata.get('loader_content_type', None):
|
186
185
|
# apply parsing based on content type and chunk if chunker was applied to parent doc
|
186
|
+
content = document.metadata.pop('loader_content', None)
|
187
187
|
yield from process_content_by_type(
|
188
188
|
document=document,
|
189
|
+
content=content,
|
189
190
|
extension_source=content_type, llm=self.llm, chunking_config=chunking_config)
|
190
191
|
elif chunking_tool:
|
191
192
|
# apply default chunker from toolkit config. No parsing.
|
@@ -205,9 +206,6 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
205
206
|
for dep in dependencies:
|
206
207
|
dep.metadata[IndexerKeywords.PARENT.value] = document.metadata.get('id', None)
|
207
208
|
yield dep
|
208
|
-
|
209
|
-
def _content_loader(self):
|
210
|
-
pass
|
211
209
|
|
212
210
|
def _reduce_duplicates(
|
213
211
|
self,
|
@@ -255,36 +253,6 @@ class BaseIndexerToolkit(VectorStoreWrapperBase):
|
|
255
253
|
def remove_ids_fn(self, idx_data, key: str):
|
256
254
|
raise NotImplementedError("Subclasses must implement this method")
|
257
255
|
|
258
|
-
def _process_documents(self, documents: List[Document]) -> Generator[Document, None, None]:
|
259
|
-
"""
|
260
|
-
Process a list of base documents to extract relevant metadata for full document preparation.
|
261
|
-
Used for late processing of documents after we ensure that the documents have to be indexed to avoid
|
262
|
-
time-consuming operations for documents which might be useless.
|
263
|
-
This function passed to index_documents method of vector store and called after _reduce_duplicates method.
|
264
|
-
|
265
|
-
Args:
|
266
|
-
documents (List[Document]): The base documents to process.
|
267
|
-
|
268
|
-
Returns:
|
269
|
-
Generator[Document, None, None]: A generator yielding processed documents with metadata.
|
270
|
-
"""
|
271
|
-
for doc in documents:
|
272
|
-
# Filter documents to process only those that either:
|
273
|
-
# - do not have a 'chunk_id' in their metadata, or
|
274
|
-
# - have 'chunk_id' explicitly set to 1.
|
275
|
-
# This prevents processing of irrelevant or duplicate chunks, improving efficiency.
|
276
|
-
chunk_id = doc.metadata.get("chunk_id")
|
277
|
-
if chunk_id is None or chunk_id == 1:
|
278
|
-
processed_docs = self._process_document(doc)
|
279
|
-
if processed_docs: # Only proceed if the list is not empty
|
280
|
-
for processed_doc in processed_docs:
|
281
|
-
# map processed document (child) to the original document (parent)
|
282
|
-
processed_doc.metadata[IndexerKeywords.PARENT.value] = doc.metadata.get('id', None)
|
283
|
-
if chunker:=self._get_dependencies_chunker(processed_doc):
|
284
|
-
yield from chunker(file_content_generator=iter([processed_doc]), config=self._get_dependencies_chunker_config())
|
285
|
-
else:
|
286
|
-
yield processed_doc
|
287
|
-
|
288
256
|
def remove_index(self, collection_suffix: str = ""):
|
289
257
|
"""Cleans the indexed data in the collection."""
|
290
258
|
super()._clean_collection(collection_suffix=collection_suffix)
|
{alita_sdk-0.3.253 → alita_sdk-0.3.255}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py
RENAMED
@@ -1,7 +1,6 @@
|
|
1
1
|
from typing import Generator
|
2
|
-
from langchain.schema import Document
|
3
2
|
from langchain_core.documents import Document
|
4
|
-
from langchain_text_splitters import MarkdownHeaderTextSplitter
|
3
|
+
from langchain_text_splitters import MarkdownHeaderTextSplitter, ExperimentalMarkdownSyntaxTextSplitter
|
5
4
|
from langchain.text_splitter import TokenTextSplitter
|
6
5
|
from ..utils import tiktoken_length
|
7
6
|
from copy import deepcopy as copy
|
@@ -50,4 +49,32 @@ def markdown_chunker(file_content_generator: Generator[Document, None, None], co
|
|
50
49
|
yield Document(
|
51
50
|
page_content=chunk.page_content,
|
52
51
|
metadata=docmeta
|
53
|
-
)
|
52
|
+
)
|
53
|
+
|
54
|
+
|
55
|
+
def markdown_by_headers_chunker(file_content_generator: Generator[Document, None, None], config: dict, *args, **kwargs) -> Generator[Document, None, None]:
|
56
|
+
strip_header = config.get("strip_header", False)
|
57
|
+
return_each_line = config.get("return_each_line", False)
|
58
|
+
headers_to_split_on = config.get("headers_to_split_on", [])
|
59
|
+
headers_to_split_on = [header.split(' ', 1) for header in headers_to_split_on]
|
60
|
+
for doc in file_content_generator:
|
61
|
+
doc_metadata = doc.metadata
|
62
|
+
doc_content = doc.page_content
|
63
|
+
chunk_id = 0
|
64
|
+
markdown_splitter = ExperimentalMarkdownSyntaxTextSplitter(
|
65
|
+
headers_to_split_on=headers_to_split_on,
|
66
|
+
strip_headers=strip_header,
|
67
|
+
return_each_line=return_each_line
|
68
|
+
)
|
69
|
+
md_header_splits = markdown_splitter.split_text(doc_content)
|
70
|
+
for chunk in md_header_splits:
|
71
|
+
chunk_id += 1
|
72
|
+
headers_meta = list(chunk.metadata.values())
|
73
|
+
docmeta = copy(doc_metadata)
|
74
|
+
docmeta.update({"headers": "; ".join(headers_meta)})
|
75
|
+
docmeta['chunk_id'] = chunk_id
|
76
|
+
docmeta['chunk_type'] = "document"
|
77
|
+
yield Document(
|
78
|
+
page_content=chunk.page_content,
|
79
|
+
metadata=docmeta
|
80
|
+
)
|
@@ -20,6 +20,7 @@ def get_tools(tool):
|
|
20
20
|
confluence_configuration=tool['settings']['confluence_configuration'],
|
21
21
|
limit=tool['settings'].get('limit', 5),
|
22
22
|
labels=parse_list(tool['settings'].get('labels', None)),
|
23
|
+
custom_headers=tool['settings'].get('custom_headers', {}),
|
23
24
|
additional_fields=tool['settings'].get('additional_fields', []),
|
24
25
|
verify_ssl=tool['settings'].get('verify_ssl', True),
|
25
26
|
alita=tool['settings'].get('alita'),
|
@@ -78,6 +79,8 @@ class ConfluenceToolkit(BaseToolkit):
|
|
78
79
|
number_of_retries=(int, Field(description="Number of retries", default=2)),
|
79
80
|
min_retry_seconds=(int, Field(description="Min retry, sec", default=10)),
|
80
81
|
max_retry_seconds=(int, Field(description="Max retry, sec", default=60)),
|
82
|
+
# optional field for custom headers as dictionary
|
83
|
+
custom_headers=(Optional[dict], Field(description="Custom headers for API requests", default=None)),
|
81
84
|
confluence_configuration=(Optional[ConfluenceConfiguration], Field(description="Confluence Configuration", json_schema_extra={'configuration_types': ['confluence']})),
|
82
85
|
pgvector_configuration=(Optional[PgVectorConfiguration], Field(default = None,
|
83
86
|
description="PgVector Configuration",
|
@@ -223,16 +223,21 @@ class ConfluenceAPIWrapper(BaseVectorStoreToolApiWrapper):
|
|
223
223
|
username = values.get('username')
|
224
224
|
token = values.get('token')
|
225
225
|
cloud = values.get('cloud')
|
226
|
-
# if values.get('collection_name'):
|
227
|
-
# values['collection_name'] = shortuuid.encode(values['collection_name'])
|
228
226
|
if token and is_cookie_token(token):
|
229
227
|
session = requests.Session()
|
230
228
|
session.cookies.update(parse_cookie_string(token))
|
231
|
-
|
229
|
+
client_instance = Confluence(url=url, session=session, cloud=cloud)
|
232
230
|
elif token:
|
233
|
-
|
231
|
+
client_instance = Confluence(url=url, token=token, cloud=cloud)
|
234
232
|
else:
|
235
|
-
|
233
|
+
client_instance = Confluence(url=url, username=username, password=api_key, cloud=cloud)
|
234
|
+
|
235
|
+
custom_headers = values.get('custom_headers', {})
|
236
|
+
logger.info(f"Jira tool: custom headers length: {len(custom_headers)}")
|
237
|
+
for header, value in custom_headers.items():
|
238
|
+
client_instance._update_header(header, value)
|
239
|
+
|
240
|
+
values['client'] = client_instance
|
236
241
|
return values
|
237
242
|
|
238
243
|
def __unquote_confluence_space(self) -> str | None:
|