alita-sdk 0.3.163__tar.gz → 0.3.165__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.163 → alita_sdk-0.3.165}/PKG-INFO +4 -3
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/assistant.py +2 -2
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/store_manager.py +22 -1
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/toolkits/tools.py +1 -1
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/__init__.py +6 -1
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/api_wrapper.py +2 -2
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/backend_reports_tool.py +31 -12
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/backend_tests_tool.py +14 -8
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/carrier_sdk.py +34 -18
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +1 -1
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/github/github_client.py +9 -1
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/memory/__init__.py +7 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/postman/__init__.py +7 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/postman/api_wrapper.py +335 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk.egg-info/PKG-INFO +4 -3
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk.egg-info/requires.txt +3 -2
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/pyproject.toml +3 -3
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/LICENSE +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/README.md +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/analysis/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/analysis/ado_analyse/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/analysis/ado_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/analysis/github_analyse/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/analysis/github_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/analysis/gitlab_analyse/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/analysis/gitlab_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/analysis/jira_analyse/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/analysis/jira_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/browseruse/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/browseruse/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/baseclass.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/knowledge_gap_agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/long_writer_agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/planner_agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/proofreader_agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/thinking_agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/tool_agents/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/tool_agents/crawl_agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/tool_agents/search_agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/tool_selector_agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/utils/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/utils/parse_output.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/agents/writer_agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/deep_research.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/examples/deep_example.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/examples/iterative_example.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/examples/report_plan_example.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/iterative_research.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/llm_config.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/main.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/tools/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/tools/crawl_website.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/tools/web_search.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/utils/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/utils/md_to_pdf.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/deep_researcher/utils/os.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/clients/client.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/llms/alita.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/tools/vectorstore.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/bitbucket/tools.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/confluence/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/elitea_base.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/utils/content_parser.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk.egg-info/SOURCES.txt +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/setup.cfg +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.163 → alita_sdk-0.3.165}/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.165
|
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>
|
6
6
|
License-Expression: Apache-2.0
|
@@ -31,8 +31,8 @@ Requires-Dist: langchain_community~=0.3.7; extra == "runtime"
|
|
31
31
|
Requires-Dist: langchain-openai~=0.3.0; extra == "runtime"
|
32
32
|
Requires-Dist: langgraph-checkpoint-sqlite~=2.0.0; extra == "runtime"
|
33
33
|
Requires-Dist: langgraph-checkpoint-postgres~=2.0.1; extra == "runtime"
|
34
|
-
Requires-Dist: langsmith
|
35
|
-
Requires-Dist: langgraph
|
34
|
+
Requires-Dist: langsmith>=0.3.45; extra == "runtime"
|
35
|
+
Requires-Dist: langgraph>=0.4.8; extra == "runtime"
|
36
36
|
Requires-Dist: langchain_chroma~=0.2.2; extra == "runtime"
|
37
37
|
Requires-Dist: langchain-unstructured~=0.1.6; extra == "runtime"
|
38
38
|
Requires-Dist: langchain-postgres~=0.0.13; extra == "runtime"
|
@@ -122,6 +122,7 @@ Requires-Dist: yagmail==0.15.293; extra == "tools"
|
|
122
122
|
Requires-Dist: pysnc==1.1.10; extra == "tools"
|
123
123
|
Requires-Dist: shortuuid==1.0.13; extra == "tools"
|
124
124
|
Requires-Dist: yarl==1.17.1; extra == "tools"
|
125
|
+
Requires-Dist: langmem==0.0.27; extra == "tools"
|
125
126
|
Provides-Extra: community
|
126
127
|
Requires-Dist: retry-extended==0.2.3; extra == "community"
|
127
128
|
Requires-Dist: browser-use==0.1.43; extra == "community"
|
@@ -61,8 +61,8 @@ class Assistant:
|
|
61
61
|
"Review toolkits configuration or use pipeline as master agent.")
|
62
62
|
|
63
63
|
# configure memory store if memory tool is defined
|
64
|
-
|
65
|
-
|
64
|
+
memory_tool = next((tool for tool in data['tools'] if tool['type'] == 'memory'), None)
|
65
|
+
self._configure_store(memory_tool)
|
66
66
|
|
67
67
|
# Lazy import to avoid circular dependency
|
68
68
|
from ..toolkits.tools import get_tools
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import threading
|
2
2
|
import atexit
|
3
3
|
import logging
|
4
|
+
from urllib.parse import urlparse, unquote
|
5
|
+
|
4
6
|
from psycopg import Connection
|
5
7
|
from langgraph.store.postgres import PostgresStore
|
6
8
|
|
@@ -18,11 +20,30 @@ class StoreManager:
|
|
18
20
|
cls._instance._stores = {}
|
19
21
|
return cls._instance
|
20
22
|
|
23
|
+
def _parse_connection_string(self, conn_str: str) -> dict:
|
24
|
+
"""
|
25
|
+
Parse the connection string from SQLAlchemy style to args dict.
|
26
|
+
"""
|
27
|
+
if conn_str.startswith("postgresql+psycopg://"):
|
28
|
+
url = conn_str[len("postgresql+psycopg://"):]
|
29
|
+
|
30
|
+
parsed = urlparse(f"//{url}")
|
31
|
+
|
32
|
+
return {
|
33
|
+
"user": unquote(parsed.username) if parsed.username else None,
|
34
|
+
"password": unquote(parsed.password) if parsed.password else None,
|
35
|
+
"host": parsed.hostname,
|
36
|
+
"port": parsed.port,
|
37
|
+
"dbname": parsed.path.lstrip("/") if parsed.path else None
|
38
|
+
}
|
39
|
+
|
21
40
|
def get_store(self, conn_str: str) -> PostgresStore:
|
22
41
|
store = self._stores.get(conn_str)
|
23
42
|
if store is None:
|
24
43
|
logger.info(f"Creating new PostgresStore for connection: {conn_str}")
|
25
|
-
|
44
|
+
conn_params = self._parse_connection_string(conn_str)
|
45
|
+
conn_params.update({'autocommit': True, 'prepare_threshold': 0})
|
46
|
+
conn = Connection.connect(**conn_params)
|
26
47
|
store = PostgresStore(conn)
|
27
48
|
store.setup()
|
28
49
|
self._stores[conn_str] = store
|
@@ -95,7 +95,7 @@ def get_tools(tools_list: list, alita_client, llm, memory_store: BaseStore = Non
|
|
95
95
|
# Add community tools
|
96
96
|
tools += community_tools(tools_list, alita_client, llm)
|
97
97
|
# Add alita tools
|
98
|
-
tools += alita_tools(tools_list, alita_client, llm)
|
98
|
+
tools += alita_tools(tools_list, alita_client, llm, memory_store)
|
99
99
|
# Add MCP tools
|
100
100
|
tools += _mcp_tools(tools_list, alita_client)
|
101
101
|
|
@@ -1,5 +1,8 @@
|
|
1
1
|
import logging
|
2
2
|
from importlib import import_module
|
3
|
+
from typing import Optional
|
4
|
+
|
5
|
+
from langgraph.store.base import BaseStore
|
3
6
|
|
4
7
|
logger = logging.getLogger(__name__)
|
5
8
|
|
@@ -74,6 +77,7 @@ _safe_import_tool('carrier', 'carrier', 'get_tools', 'AlitaCarrierToolkit')
|
|
74
77
|
_safe_import_tool('ocr', 'ocr', 'get_tools', 'OCRToolkit')
|
75
78
|
_safe_import_tool('pptx', 'pptx', 'get_tools', 'PPTXToolkit')
|
76
79
|
_safe_import_tool('postman', 'postman', 'get_tools', 'PostmanToolkit')
|
80
|
+
_safe_import_tool('memory', 'memory', 'get_tools', 'MemoryToolkit')
|
77
81
|
_safe_import_tool('zephyr_squad', 'zephyr_squad', 'get_tools', 'ZephyrSquadToolkit')
|
78
82
|
|
79
83
|
# Log import summary
|
@@ -81,7 +85,7 @@ available_count = len(AVAILABLE_TOOLS)
|
|
81
85
|
total_attempted = len(AVAILABLE_TOOLS) + len(FAILED_IMPORTS)
|
82
86
|
logger.info(f"Tool imports completed: {available_count}/{total_attempted} successful")
|
83
87
|
|
84
|
-
def get_tools(tools_list, alita, llm, *args, **kwargs):
|
88
|
+
def get_tools(tools_list, alita, llm, store: Optional[BaseStore] = None, *args, **kwargs):
|
85
89
|
tools = []
|
86
90
|
for tool in tools_list:
|
87
91
|
# validate tool name syntax - it cannot be started with _
|
@@ -91,6 +95,7 @@ def get_tools(tools_list, alita, llm, *args, **kwargs):
|
|
91
95
|
|
92
96
|
tool['settings']['alita'] = alita
|
93
97
|
tool['settings']['llm'] = llm
|
98
|
+
tool['settings']['store'] = store
|
94
99
|
tool_type = tool['type']
|
95
100
|
|
96
101
|
# Check if tool is available and has get_tools function
|
@@ -80,8 +80,8 @@ class CarrierAPIWrapper(BaseModel):
|
|
80
80
|
def get_report_file_log(self, bucket: str, file_name: str):
|
81
81
|
return self._client.get_report_file_log(bucket, file_name)
|
82
82
|
|
83
|
-
def
|
84
|
-
return self._client.
|
83
|
+
def upload_file(self, bucket_name: str, file_name: str):
|
84
|
+
return self._client.upload_file(bucket_name, file_name)
|
85
85
|
|
86
86
|
def get_ui_reports_list(self) -> List[Dict[str, Any]]:
|
87
87
|
"""Get list of UI test reports from the Carrier platform."""
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import logging
|
2
2
|
from datetime import datetime
|
3
3
|
import json
|
4
|
+
import zipfile
|
5
|
+
from itertools import islice
|
4
6
|
import traceback
|
5
7
|
from typing import Type
|
6
8
|
from langchain_core.tools import BaseTool, ToolException
|
@@ -78,14 +80,31 @@ class GetReportByIDTool(BaseTool):
|
|
78
80
|
|
79
81
|
def _run(self, report_id: str):
|
80
82
|
try:
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
83
|
+
report, test_log_file_path, errors_log_file_path = self.api_wrapper.get_report_file_name(report_id)
|
84
|
+
try:
|
85
|
+
with open(errors_log_file_path, mode='r') as f:
|
86
|
+
# Use islice to read up to 100 lines
|
87
|
+
errors = list(islice(f, 100))
|
88
|
+
report["errors_log"] = errors
|
89
|
+
# Archive with errors log file path
|
90
|
+
zip_file_path = f'/tmp/{report["build_id"]}_error_log_archive.zip'
|
91
|
+
|
92
|
+
# Create zip archive
|
93
|
+
with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
|
94
|
+
arcname = os.path.basename(errors_log_file_path)
|
95
|
+
zipf.write(errors_log_file_path, arcname)
|
96
|
+
|
97
|
+
bucket_name = report["name"].replace("_", "").replace(" ", "").lower()
|
98
|
+
self.api_wrapper.upload_file(bucket_name, zip_file_path)
|
99
|
+
report["link_to_errors_file"] = f"{self.api_wrapper.url.rstrip('/')}/api/v1/artifacts/artifact/default/" \
|
100
|
+
f"{self.api_wrapper.project_id}/{bucket_name}/" \
|
101
|
+
f"{zip_file_path.replace('/tmp/', '')}"
|
102
|
+
except Exception as e:
|
103
|
+
logger.error(e)
|
104
|
+
report["errors_log"] = []
|
105
|
+
report["link_to_errors_file"] = "link is not available"
|
106
|
+
|
107
|
+
return json.dumps(report)
|
89
108
|
except Exception:
|
90
109
|
stacktrace = traceback.format_exc()
|
91
110
|
logger.error(f"Error downloading reports: {stacktrace}")
|
@@ -164,17 +183,17 @@ class CreateExcelReportTool(BaseTool):
|
|
164
183
|
|
165
184
|
def _process_report_by_id(self, report_id, parameters):
|
166
185
|
"""Process report using report ID."""
|
167
|
-
report,
|
186
|
+
report, test_log_file_path, errors_log_file_path = self.api_wrapper.get_report_file_name(report_id)
|
168
187
|
carrier_report = f"{self.api_wrapper.url.rstrip('/')}/-/performance/backend/results?result_id={report_id}"
|
169
188
|
lg_type = report.get("lg_type")
|
170
189
|
excel_report_file_name = f'/tmp/reports_test_results_{report["build_id"]}_excel_report.xlsx'
|
171
190
|
bucket_name = report["name"].replace("_", "").replace(" ", "").lower()
|
172
191
|
|
173
|
-
result_stats_j = self._parse_report(
|
192
|
+
result_stats_j = self._parse_report(test_log_file_path, lg_type, parameters["think_time"], is_absolute_file_path=True)
|
174
193
|
calc_thr_j = self._calculate_thresholds(result_stats_j, parameters)
|
175
194
|
|
176
195
|
return self._generate_and_upload_report(
|
177
|
-
result_stats_j, carrier_report, calc_thr_j, parameters, excel_report_file_name, bucket_name,
|
196
|
+
result_stats_j, carrier_report, calc_thr_j, parameters, excel_report_file_name, bucket_name, test_log_file_path
|
178
197
|
)
|
179
198
|
|
180
199
|
def _process_report_by_file(self, bucket, file_name, parameters):
|
@@ -233,7 +252,7 @@ class CreateExcelReportTool(BaseTool):
|
|
233
252
|
excel_reporter_object.prepare_headers_and_titles()
|
234
253
|
excel_reporter_object.write_to_excel(result_stats_j, carrier_report, calc_thr_j, parameters["pct"])
|
235
254
|
|
236
|
-
self.api_wrapper.
|
255
|
+
self.api_wrapper.upload_file(bucket_name, excel_report_file_name)
|
237
256
|
|
238
257
|
# Clean up
|
239
258
|
self._cleanup(file_path, excel_report_file_name)
|
@@ -80,22 +80,28 @@ class RunTestByIDTool(BaseTool):
|
|
80
80
|
description: str = "Execute test plan from the Carrier platform."
|
81
81
|
args_schema: Type[BaseModel] = create_model(
|
82
82
|
"RunTestByIdInput",
|
83
|
-
test_id=(str, Field(default=
|
83
|
+
test_id=(str, Field(default=None, description="Test id to execute")),
|
84
|
+
name=(str, Field(default=None, description="Test name to execute")),
|
84
85
|
test_parameters=(dict, Field(default=None, description="Test parameters to override")),
|
85
86
|
)
|
86
87
|
|
87
|
-
def _run(self, test_id
|
88
|
+
def _run(self, test_id=None, name=None, test_parameters=None):
|
88
89
|
try:
|
90
|
+
if not test_id and not name:
|
91
|
+
return {"message": "Please provide test id or test name to start"}
|
92
|
+
|
89
93
|
# Fetch test data
|
90
94
|
tests = self.api_wrapper.get_tests_list()
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
95
|
+
|
96
|
+
# Find the test data based on test_id or name
|
97
|
+
test_data = next(
|
98
|
+
(test for test in tests if
|
99
|
+
(test_id and str(test["id"]) == test_id) or (name and str(test["name"]) == name)),
|
100
|
+
None
|
101
|
+
)
|
96
102
|
|
97
103
|
if not test_data:
|
98
|
-
raise ValueError(f"Test with id {test_id} not found.")
|
104
|
+
raise ValueError(f"Test with id {test_id} or name {name} not found.")
|
99
105
|
|
100
106
|
# Default test parameters
|
101
107
|
default_test_parameters = test_data.get("test_parameters", [])
|
@@ -128,15 +128,17 @@ class CarrierClient(BaseModel):
|
|
128
128
|
for file_name in file_list:
|
129
129
|
if file_name.startswith(report_archive_prefix) and "excel_report" not in file_name:
|
130
130
|
report_files_list.append(file_name)
|
131
|
-
|
131
|
+
test_log_file_path, errors_log_file_path = self.download_and_merge_reports(report_files_list, lg_type, bucket_name, extract_to)
|
132
132
|
|
133
|
-
return report_info,
|
133
|
+
return report_info, test_log_file_path, errors_log_file_path
|
134
134
|
|
135
|
-
def download_and_merge_reports(self, report_files_list: list, lg_type: str, bucket: str, extract_to: str = "/tmp")
|
135
|
+
def download_and_merge_reports(self, report_files_list: list, lg_type: str, bucket: str, extract_to: str = "/tmp"):
|
136
136
|
if lg_type == "jmeter":
|
137
137
|
summary_log_file_path = f"summary_{bucket}_jmeter.jtl"
|
138
|
+
error_log_file_path = f"error_{bucket}_jmeter.log"
|
138
139
|
else:
|
139
140
|
summary_log_file_path = f"summary_{bucket}_simulation.log"
|
141
|
+
error_log_file_path = f"error_{bucket}_simulation.log"
|
140
142
|
extracted_reports = []
|
141
143
|
for each in report_files_list:
|
142
144
|
endpoint = f"api/v1/artifacts/artifact/{self.credentials.project_id}/{bucket}/{each}"
|
@@ -158,10 +160,21 @@ class CarrierClient(BaseModel):
|
|
158
160
|
os.remove(local_file_path)
|
159
161
|
extracted_reports.append(extract_dir)
|
160
162
|
|
161
|
-
# get files from extract_dirs and merge to summary_log_file_path
|
163
|
+
# get files from extract_dirs and merge to summary_log_file_path and error_log_file_path
|
162
164
|
self.merge_log_files(summary_log_file_path, extracted_reports, lg_type)
|
165
|
+
try:
|
166
|
+
self.merge_error_files(error_log_file_path, extracted_reports)
|
167
|
+
except Exception as e:
|
168
|
+
logger.error(f"Failed to merge errors log: {e}")
|
169
|
+
|
170
|
+
# Clean up
|
171
|
+
for each in extracted_reports:
|
172
|
+
try:
|
173
|
+
shutil.rmtree(each)
|
174
|
+
except Exception as e:
|
175
|
+
logger.error(e)
|
163
176
|
|
164
|
-
return summary_log_file_path
|
177
|
+
return summary_log_file_path, error_log_file_path
|
165
178
|
|
166
179
|
def merge_log_files(self, summary_file, extracted_reports, lg_type):
|
167
180
|
with open(summary_file, mode='w') as summary:
|
@@ -178,11 +191,14 @@ class CarrierClient(BaseModel):
|
|
178
191
|
else:
|
179
192
|
# Skip the first line (header) for subsequent files
|
180
193
|
summary.writelines(lines[1:])
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
194
|
+
|
195
|
+
def merge_error_files(self, error_file, extracted_reports):
|
196
|
+
with open(error_file, mode='w') as summary_errors:
|
197
|
+
for i, log_file in enumerate(extracted_reports):
|
198
|
+
report_file = f"{log_file}/simulation-errors.log"
|
199
|
+
with open(report_file, mode='r') as f:
|
200
|
+
lines = f.readlines()
|
201
|
+
summary_errors.writelines(lines)
|
186
202
|
|
187
203
|
def get_report_file_log(self, bucket: str, file_name: str):
|
188
204
|
bucket_endpoint = f"api/v1/artifacts/artifact/default/{self.credentials.project_id}/{bucket}/{file_name}"
|
@@ -195,10 +211,10 @@ class CarrierClient(BaseModel):
|
|
195
211
|
f.write(response.content)
|
196
212
|
return file_path
|
197
213
|
|
198
|
-
def
|
214
|
+
def upload_file(self, bucket_name: str, file_name: str):
|
199
215
|
upload_url = f'api/v1/artifacts/artifacts/{self.credentials.project_id}/{bucket_name}'
|
200
216
|
full_url = f"{self.credentials.url.rstrip('/')}/{upload_url.lstrip('/')}"
|
201
|
-
files = {'file': open(
|
217
|
+
files = {'file': open(file_name, 'rb')}
|
202
218
|
headers = {'Authorization': f'bearer {self.credentials.token}'}
|
203
219
|
s3_config = {'integration_id': 1, 'is_local': False}
|
204
220
|
requests.post(full_url, params=s3_config, allow_redirects=True, files=files, headers=headers)
|
@@ -231,22 +247,22 @@ class CarrierClient(BaseModel):
|
|
231
247
|
def create_ui_test(self, json_body: Dict[str, Any]) -> Dict[str, Any]:
|
232
248
|
"""Create a new UI test."""
|
233
249
|
endpoint = f"api/v1/ui_performance/tests/{self.credentials.project_id}"
|
234
|
-
|
250
|
+
|
235
251
|
# Print full JSON POST body for debugging
|
236
252
|
print("=" * 60)
|
237
253
|
print("DEBUG: Full JSON POST body for create_ui_test:")
|
238
254
|
print("=" * 60)
|
239
255
|
print(json.dumps(json_body, indent=2))
|
240
256
|
print("=" * 60)
|
241
|
-
|
257
|
+
|
242
258
|
# Use multipart/form-data with data field containing the JSON body
|
243
259
|
form_data = {'data': json.dumps(json_body)}
|
244
|
-
|
260
|
+
|
245
261
|
# Temporarily remove Content-Type header to let requests set it for multipart
|
246
262
|
original_headers = self.session.headers.copy()
|
247
263
|
if 'Content-Type' in self.session.headers:
|
248
264
|
del self.session.headers['Content-Type']
|
249
|
-
|
265
|
+
|
250
266
|
try:
|
251
267
|
full_url = f"{self.credentials.url.rstrip('/')}/{endpoint.lstrip('/')}"
|
252
268
|
response = self.session.post(full_url, data=form_data)
|
@@ -265,7 +281,7 @@ class CarrierClient(BaseModel):
|
|
265
281
|
def cancel_ui_test(self, test_id: str) -> Dict[str, Any]:
|
266
282
|
"""Cancel a UI test by setting its status to Canceled."""
|
267
283
|
endpoint = f"api/v1/ui_performance/report_status/{self.credentials.project_id}/{test_id}"
|
268
|
-
|
284
|
+
|
269
285
|
cancel_body = {
|
270
286
|
"test_status": {
|
271
287
|
"status": "Canceled",
|
@@ -273,5 +289,5 @@ class CarrierClient(BaseModel):
|
|
273
289
|
"description": "Test was canceled"
|
274
290
|
}
|
275
291
|
}
|
276
|
-
|
292
|
+
|
277
293
|
return self.request('put', endpoint, json=cancel_body)
|
{alita_sdk-0.3.163 → alita_sdk-0.3.165}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py
RENAMED
@@ -148,7 +148,7 @@ class CreateUIExcelReportTool(BaseTool):
|
|
148
148
|
bucket_name = report_name.replace("_", "").replace(" ", "").lower()
|
149
149
|
excel_file_basename = os.path.basename(excel_file_name)
|
150
150
|
|
151
|
-
self.api_wrapper.
|
151
|
+
self.api_wrapper.upload_file(bucket_name, excel_file_name)
|
152
152
|
|
153
153
|
# Clean up temporary file
|
154
154
|
if os.path.exists(excel_file_name):
|
@@ -491,8 +491,16 @@ class GitHubClient(BaseModel):
|
|
491
491
|
"""
|
492
492
|
try:
|
493
493
|
patch_content = self.alita.download_artifact(bucket_name, file_name)
|
494
|
-
|
494
|
+
|
495
|
+
if not patch_content:
|
495
496
|
return {"error": "Patch file not found", "message": f"Patch file '{file_name}' not found in bucket '{bucket_name}'."}
|
497
|
+
|
498
|
+
# Convert bytes to string if necessary
|
499
|
+
if isinstance(patch_content, bytes):
|
500
|
+
patch_content = patch_content.decode('utf-8')
|
501
|
+
elif not isinstance(patch_content, str):
|
502
|
+
return {"error": "Invalid patch content", "message": f"Patch file '{file_name}' contains invalid content type."}
|
503
|
+
|
496
504
|
# Apply the git patch using the content
|
497
505
|
return self.apply_git_patch(patch_content, commit_message, repo_name)
|
498
506
|
except Exception as e:
|
@@ -15,6 +15,13 @@ from pydantic import create_model, BaseModel, ConfigDict, Field, SecretStr
|
|
15
15
|
|
16
16
|
name = "memory"
|
17
17
|
|
18
|
+
def get_tools(tool):
|
19
|
+
return MemoryToolkit().get_toolkit(
|
20
|
+
namespace=tool['settings'].get('namespace', str(tool['id'])),
|
21
|
+
store=tool['settings'].get('store', None),
|
22
|
+
toolkit_name=tool.get('toolkit_name', '')
|
23
|
+
).get_tools()
|
24
|
+
|
18
25
|
class MemoryToolkit(BaseToolkit):
|
19
26
|
tools: List[BaseTool] = []
|
20
27
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from typing import List, Literal, Optional, Type
|
2
|
+
import json
|
2
3
|
|
3
4
|
import requests
|
4
5
|
from langchain_core.tools import BaseToolkit, BaseTool
|
@@ -25,6 +26,8 @@ class PostmanAction(BaseAction):
|
|
25
26
|
return v.replace(' ', '')
|
26
27
|
|
27
28
|
def get_tools(tool):
|
29
|
+
# Parse environment_config if it's a string (from UI)
|
30
|
+
environment_config = tool['settings'].get('environment_config', {})
|
28
31
|
toolkit = PostmanToolkit.get_toolkit(
|
29
32
|
selected_tools=tool['settings'].get('selected_tools', []),
|
30
33
|
api_key=tool['settings'].get('api_key', None),
|
@@ -32,6 +35,7 @@ def get_tools(tool):
|
|
32
35
|
'base_url', 'https://api.getpostman.com'),
|
33
36
|
collection_id=tool['settings'].get('collection_id', None),
|
34
37
|
workspace_id=tool['settings'].get('workspace_id', None),
|
38
|
+
environment_config=environment_config,
|
35
39
|
toolkit_name=tool.get('toolkit_name')
|
36
40
|
)
|
37
41
|
return toolkit.tools
|
@@ -57,6 +61,9 @@ class PostmanToolkit(BaseToolkit):
|
|
57
61
|
'toolkit_name': True, 'max_toolkit_length': PostmanToolkit.toolkit_max_length})),
|
58
62
|
workspace_id=(str, Field(description="Default workspace ID",
|
59
63
|
default="", json_schema_extra={'configuration': True})),
|
64
|
+
environment_config=(dict, Field(
|
65
|
+
description="JSON configuration for request execution (auth headers, project IDs, base URLs, etc.)",
|
66
|
+
default={})),
|
60
67
|
selected_tools=(List[Literal[tuple(selected_tools)]], Field(
|
61
68
|
default=[], json_schema_extra={'args_schemas': selected_tools})),
|
62
69
|
__config__=ConfigDict(json_schema_extra={'metadata': {
|