iatoolkit 2.52.0__tar.gz → 2.53.1__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.
Files changed (252) hide show
  1. {iatoolkit-2.52.0/src/iatoolkit.egg-info → iatoolkit-2.53.1}/PKG-INFO +1 -1
  2. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/__init__.py +1 -1
  3. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/routes.py +7 -1
  4. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_tools_pack.yaml +3 -0
  5. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/core.py +7 -0
  6. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/llm_proxy.py +21 -0
  7. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/locales/en.yaml +7 -0
  8. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/locales/es.yaml +7 -0
  9. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/database_manager.py +31 -0
  10. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/models.py +11 -0
  11. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/configuration_service.py +6 -0
  12. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/dispatcher_service.py +39 -0
  13. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/system_tools.py +9 -0
  14. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/tool_service.py +5 -0
  15. {iatoolkit-2.52.0 → iatoolkit-2.53.1/src/iatoolkit.egg-info}/PKG-INFO +1 -1
  16. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/LICENSE +0 -0
  17. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/LICENSE_COMMUNITY.md +0 -0
  18. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/pyproject.toml +0 -0
  19. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/readme.md +0 -0
  20. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/setup.cfg +0 -0
  21. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/base_company.py +0 -0
  22. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/cli_commands.py +0 -0
  23. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/__init__.py +0 -0
  24. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/bridge_validation.py +0 -0
  25. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/exceptions.py +0 -0
  26. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/interfaces/__init__.py +0 -0
  27. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
  28. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
  29. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
  30. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
  31. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
  32. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
  33. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
  34. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/model_registry.py +0 -0
  35. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/secret_resolver.py +0 -0
  36. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/session_manager.py +0 -0
  37. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/text_splitter.py +0 -0
  38. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/url_safety.py +0 -0
  39. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/common/util.py +0 -0
  40. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/company_registry.py +0 -0
  41. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/__init__.py +0 -0
  42. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
  43. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
  44. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
  45. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
  46. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
  47. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
  48. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
  49. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
  50. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
  51. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
  52. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
  53. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
  54. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
  55. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
  56. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
  57. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
  58. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
  59. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
  60. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
  61. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
  62. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
  63. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
  64. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
  65. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
  66. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
  67. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
  68. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
  69. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
  70. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/__init__.py +0 -0
  71. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  72. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/call_service.py +0 -0
  73. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  74. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  75. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  76. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  77. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  78. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  79. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  80. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/google_auth_client.py +0 -0
  81. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/google_chat_app.py +0 -0
  82. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
  83. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/inference_handler.py +0 -0
  84. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
  85. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
  86. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  87. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
  88. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
  89. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
  90. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
  91. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
  92. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
  93. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/llm_response.py +0 -0
  94. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  95. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/__init__.py +0 -0
  96. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/api_key_repo.py +0 -0
  97. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/bridge_repo.py +0 -0
  98. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/document_repo.py +0 -0
  99. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
  100. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
  101. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/knowledge_wiki_repo.py +0 -0
  102. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  103. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
  104. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/memory_repo.py +0 -0
  105. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/profile_repo.py +0 -0
  106. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
  107. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
  108. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
  109. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/repositories/vs_repo.py +0 -0
  110. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/runtime_logging.py +0 -0
  111. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/__init__.py +0 -0
  112. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/api_key_service.py +0 -0
  113. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/attachment_policy_service.py +0 -0
  114. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/auth_service.py +0 -0
  115. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/branding_service.py +0 -0
  116. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/company_context_service.py +0 -0
  117. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/context_builder_service.py +0 -0
  118. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/embedding_service.py +0 -0
  119. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/excel_service.py +0 -0
  120. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/file_processor_service.py +0 -0
  121. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/history_manager_service.py +0 -0
  122. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/http_tool_service.py +0 -0
  123. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/i18n_service.py +0 -0
  124. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/inference_service.py +0 -0
  125. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/jwt_service.py +0 -0
  126. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/knowledge_base_service.py +0 -0
  127. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/language_service.py +0 -0
  128. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/license_service.py +0 -0
  129. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/llm_client_service.py +0 -0
  130. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/mail_service.py +0 -0
  131. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
  132. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/mcp_token_service.py +0 -0
  133. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/memory_compiler_service.py +0 -0
  134. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/memory_lint_service.py +0 -0
  135. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
  136. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/memory_service.py +0 -0
  137. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/memory_wiki_service.py +0 -0
  138. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
  139. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
  140. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/operator_identity_service.py +0 -0
  141. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/__init__.py +0 -0
  142. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/contracts.py +0 -0
  143. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
  144. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
  145. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
  146. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
  147. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
  148. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
  149. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
  150. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
  151. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/parsers/validator.py +0 -0
  152. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/pdf_service.py +0 -0
  153. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/profile_service.py +0 -0
  154. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/prompt_resource_service.py +0 -0
  155. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/prompt_service.py +0 -0
  156. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/query_service.py +0 -0
  157. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
  158. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/sql_dataset_service.py +0 -0
  159. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/sql_service.py +0 -0
  160. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/sql_source_service.py +0 -0
  161. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/storage_service.py +0 -0
  162. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/structured_output_service.py +0 -0
  163. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
  164. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/telemetry_service.py +0 -0
  165. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/tenant_wiki_service.py +0 -0
  166. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/tool_output_contract.py +0 -0
  167. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/user_feedback_service.py +0 -0
  168. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/user_session_context_service.py +0 -0
  169. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/visual_kb_service.py +0 -0
  170. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/visual_tool_service.py +0 -0
  171. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/warmup_service.py +0 -0
  172. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/web_search/__init__.py +0 -0
  173. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
  174. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
  175. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
  176. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/services/web_search_service.py +0 -0
  177. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  178. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  179. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  180. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  181. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  182. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  183. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  184. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  185. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_main.js +0 -0
  186. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
  187. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
  188. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  189. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  190. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  191. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  192. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  193. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/styles/chat_public.css +0 -0
  194. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/styles/documents.css +0 -0
  195. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/styles/landing_page.css +0 -0
  196. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/styles/llm_output.css +0 -0
  197. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/static/styles/onboarding.css +0 -0
  198. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/_company_header.html +0 -0
  199. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/_login_widget.html +0 -0
  200. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/account.html +0 -0
  201. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/base.html +0 -0
  202. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/change_password.html +0 -0
  203. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/chat.html +0 -0
  204. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
  205. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/chat_modals.html +0 -0
  206. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/error.html +0 -0
  207. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/forgot_password.html +0 -0
  208. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/home_hosted_default.html +0 -0
  209. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
  210. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  211. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/pdf/base.html +0 -0
  212. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/pdf/letter.html +0 -0
  213. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/pdf/report.html +0 -0
  214. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/pdf/simple.html +0 -0
  215. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/templates/signup.html +0 -0
  216. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/__init__.py +0 -0
  217. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/account_view.py +0 -0
  218. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/api_key_api_view.py +0 -0
  219. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/base_login_view.py +0 -0
  220. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/categories_api_view.py +0 -0
  221. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/change_password_view.py +0 -0
  222. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
  223. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/chat_view.py +0 -0
  224. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/configuration_api_view.py +0 -0
  225. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/connectors_api_view.py +0 -0
  226. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/embedding_api_view.py +0 -0
  227. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/forgot_password_view.py +0 -0
  228. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/help_content_api_view.py +0 -0
  229. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/history_api_view.py +0 -0
  230. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/home_view.py +0 -0
  231. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/init_context_api_view.py +0 -0
  232. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  233. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/load_document_api_view.py +0 -0
  234. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/login_view.py +0 -0
  235. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/logout_api_view.py +0 -0
  236. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/memory_api_view.py +0 -0
  237. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/profile_api_view.py +0 -0
  238. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/prompt_api_view.py +0 -0
  239. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
  240. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
  241. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/rag_api_view.py +0 -0
  242. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/root_redirect_view.py +0 -0
  243. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/signup_view.py +0 -0
  244. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/static_page_view.py +0 -0
  245. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/tool_api_view.py +0 -0
  246. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  247. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/users_api_view.py +0 -0
  248. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit/views/verify_user_view.py +0 -0
  249. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
  250. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  251. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit.egg-info/requires.txt +0 -0
  252. {iatoolkit-2.52.0 → iatoolkit-2.53.1}/src/iatoolkit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.52.0
3
+ Version: 2.53.1
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # IAToolkit is open source software.
5
5
 
6
- __version__ = "2.52.0"
6
+ __version__ = "2.53.1"
7
7
 
8
8
  # Expose main classes and functions at the top level of the package
9
9
 
@@ -299,7 +299,13 @@ def register_views(app):
299
299
  return redirect(signed_url)
300
300
 
301
301
  # Fallback path: stream bytes from storage through Flask.
302
- file_bytes = storage_service.get_document_content(company_short_name, storage_key)
302
+ try:
303
+ file_bytes = storage_service.get_document_content(company_short_name, storage_key)
304
+ except IAToolkitException as e:
305
+ if e.error_type != IAToolkitException.ErrorType.FILE_IO_ERROR:
306
+ raise
307
+ # Generated downloads are deleted after the tenant's retention.
308
+ abort(404, "This file has expired or is no longer available.")
303
309
  guessed_mime, _ = mimetypes.guess_type(output_filename)
304
310
  return send_file(
305
311
  BytesIO(file_bytes),
@@ -128,6 +128,9 @@ tools:
128
128
  - orientation
129
129
  - function_name: iat_send_email
130
130
  description: iatoolkit mail system. envia mails cuando un usuario lo solicita.
131
+ # Sends a real email: simulated, never sent, when an evaluation replays an agent.
132
+ execution_config:
133
+ side_effects: true
131
134
  routing_profile:
132
135
  tags:
133
136
  - email
@@ -175,6 +175,13 @@ class IAToolkit:
175
175
  logging.info("🔥 Startup warm-up completed for endpoints=%s", woken_endpoints)
176
176
  except Exception:
177
177
  logging.exception("⚠️ Startup warm-up failed.")
178
+ finally:
179
+ # The scoped session is per thread: whatever this thread read
180
+ # (the endpoint's credentials, from the secrets table) keeps its
181
+ # connection "idle in transaction" until the thread's own session
182
+ # is removed - and nothing else ever removes it.
183
+ if self.db_manager is not None:
184
+ self.db_manager.remove_session()
178
185
 
179
186
  thread = threading.Thread(target=_run_warmup, name="iatoolkit-startup-warmup", daemon=True)
180
187
  thread.start()
@@ -89,6 +89,23 @@ class LLMProxy:
89
89
  self._telemetry_service = NoopTelemetryService()
90
90
  return self._telemetry_service
91
91
 
92
+ @staticmethod
93
+ def _release_database_transaction() -> None:
94
+ """
95
+ Hands the request's database connection back to the pool before the
96
+ provider call. Resolved lazily, like telemetry: the proxy is also built
97
+ outside a running toolkit (tests, scripts), where there is nothing to
98
+ release.
99
+ """
100
+ try:
101
+ from iatoolkit import current_iatoolkit
102
+ from iatoolkit.repositories.database_manager import DatabaseManager
103
+
104
+ db_manager = current_iatoolkit().get_injector().get(DatabaseManager)
105
+ except Exception:
106
+ return
107
+ db_manager.release_idle_transaction()
108
+
92
109
  # -------------------------------------------------------------------------
93
110
  # Public API
94
111
  # -------------------------------------------------------------------------
@@ -146,6 +163,10 @@ class LLMProxy:
146
163
  if telemetry_execution is not None:
147
164
  request_kwargs["telemetry_execution"] = telemetry_execution
148
165
 
166
+ # Everything the call needs from the database is resolved by now; the
167
+ # model can take minutes, and the connection should not wait with it.
168
+ self._release_database_transaction()
169
+
149
170
  # Delegate to the adapter (OpenAI, Gemini, DeepSeek, xAI, Anthropic, etc.)
150
171
  return adapter.create_response(
151
172
  model=self._wire_model(model, model_config),
@@ -1247,6 +1247,13 @@ ui:
1247
1247
  run_duration_seconds: "Duration (s)"
1248
1248
  run_duration_minutes: "Duration (min)"
1249
1249
  duration_minutes_suffix: "mins."
1250
+ timing_duration: "Duration"
1251
+ timing_rate: "Rate"
1252
+ timing_eta: "ETA"
1253
+ timing_eta_after_discovery: "ETA after discovery"
1254
+ timing_eta_pending: "ETA pending"
1255
+ timing_processed_rate_suffix: "processed"
1256
+ timing_submitted_rate_suffix: "submitted"
1250
1257
  run_finished: "Finished"
1251
1258
  run_actions: "Actions"
1252
1259
  run_discovered: "Discovered"
@@ -1262,6 +1262,13 @@ ui:
1262
1262
  run_duration_seconds: "Duración (s)"
1263
1263
  run_duration_minutes: "Duración (min)"
1264
1264
  duration_minutes_suffix: "mins."
1265
+ timing_duration: "Duración"
1266
+ timing_rate: "Ritmo"
1267
+ timing_eta: "ETA"
1268
+ timing_eta_after_discovery: "ETA después de discovery"
1269
+ timing_eta_pending: "ETA pendiente"
1270
+ timing_processed_rate_suffix: "procesados"
1271
+ timing_submitted_rate_suffix: "enviados"
1265
1272
  run_finished: "Fin"
1266
1273
  run_actions: "Acciones"
1267
1274
  run_discovered: "Descubiertos"
@@ -324,6 +324,37 @@ class DatabaseManager(DatabaseProvider):
324
324
  def remove_session(self):
325
325
  self.scoped_session.remove()
326
326
 
327
+ def release_idle_transaction(self) -> bool:
328
+ """
329
+ Ends the current session's transaction and returns its connection to the
330
+ pool, before a call that waits on something other than the database.
331
+
332
+ Any read opens a transaction that lasts until the next commit, so a
333
+ session that read config or secrets and then waited minutes on an LLM
334
+ held its connection "idle in transaction" the whole time. A web process
335
+ serves many requests from one small pool, and a few such waits were
336
+ enough to time out every other request.
337
+
338
+ Commits rather than rolls back: a rollback expires every loaded object
339
+ and would discard writes already flushed. The session factory keeps
340
+ objects on commit, so callers go on using what they loaded. Leaves the
341
+ session alone when it has pending changes - committing them here would
342
+ be the caller's decision, not ours.
343
+ """
344
+ try:
345
+ if not self.scoped_session.registry.has():
346
+ return False
347
+ session = self.scoped_session.registry()
348
+ if not session.in_transaction():
349
+ return False
350
+ if session.new or session.dirty or session.deleted:
351
+ return False
352
+ session.commit()
353
+ return True
354
+ except Exception as e:
355
+ logging.debug("Could not release the idle database transaction: %s", e)
356
+ return False
357
+
327
358
  # -- execution methods ----
328
359
 
329
360
  def execute_query(self, query: str, commit: bool = False, params: dict | None = None) -> list[dict] | dict:
@@ -385,6 +385,17 @@ class Tool(Base):
385
385
 
386
386
  company = relationship('Company', back_populates='tools')
387
387
 
388
+ @property
389
+ def has_side_effects(self) -> bool:
390
+ """Whether calling this tool changes something outside the conversation.
391
+
392
+ Declared explicitly with `execution_config.side_effects: true`; tools
393
+ are read-only unless they say otherwise. Model evaluations replay real
394
+ executions and simulate these tools instead of running them.
395
+ """
396
+ config = self.execution_config if isinstance(self.execution_config, dict) else {}
397
+ return config.get("side_effects") is True
398
+
388
399
  def to_dict(self):
389
400
  return {column.key: getattr(self, column.key) for column in class_mapper(self.__class__).columns}
390
401
 
@@ -790,6 +790,12 @@ class ConfigurationService:
790
790
  add_error(f"tools[{i}]", "Missing required key: 'description'")
791
791
  if not isinstance(tool.get("params"), dict):
792
792
  add_error(f"tools[{i}]", "'params' key must be a dictionary.")
793
+ execution_config = tool.get("execution_config")
794
+ if execution_config is not None:
795
+ if not isinstance(execution_config, dict):
796
+ add_error(f"tools[{i}].execution_config", "Must be a dictionary.")
797
+ elif "side_effects" in execution_config and not isinstance(execution_config["side_effects"], bool):
798
+ add_error(f"tools[{i}].execution_config.side_effects", "Must be true or false.")
793
799
 
794
800
  # 6. Prompts
795
801
  prompt_list, categories_config = self._get_prompt_config(config)
@@ -14,6 +14,11 @@ from time import perf_counter
14
14
  from uuid import uuid4
15
15
 
16
16
 
17
+ #: request_source of the executions a model evaluation replays. Tools that
18
+ #: declare side effects are simulated for them instead of being run.
19
+ EVALUATION_REQUEST_SOURCE = "evaluation"
20
+
21
+
17
22
  class Dispatcher:
18
23
  # System tools whose answer depends on who is asking, so the dispatcher
19
24
  # injects the identity server-side. The wiki tools are here because a page's
@@ -157,6 +162,22 @@ class Dispatcher:
157
162
  arguments=dict(kwargs),
158
163
  )
159
164
  started_at = perf_counter()
165
+ if self._is_simulated_call(tool_def, _iat_runtime_source):
166
+ result = self._simulated_result(function_name)
167
+ self._notify_tool_execution_hook(
168
+ "after_dispatch",
169
+ execution_id=execution_id,
170
+ company_short_name=company_short_name,
171
+ function_name=function_name,
172
+ user_identifier=user_identifier,
173
+ runtime_source=_iat_runtime_source,
174
+ tool_def=tool_def,
175
+ arguments=dict(kwargs),
176
+ status="simulated",
177
+ duration_ms=int(round((perf_counter() - started_at) * 1000)),
178
+ result=result,
179
+ )
180
+ return result
160
181
  try:
161
182
  result = self._dispatch_resolved_tool(
162
183
  company_short_name=company_short_name,
@@ -195,6 +216,24 @@ class Dispatcher:
195
216
  )
196
217
  raise
197
218
 
219
+ @staticmethod
220
+ def _is_simulated_call(tool_def, runtime_source: str | None) -> bool:
221
+ if str(runtime_source or "").strip().lower() != EVALUATION_REQUEST_SOURCE:
222
+ return False
223
+ return bool(getattr(tool_def, "has_side_effects", False))
224
+
225
+ @staticmethod
226
+ def _simulated_result(function_name: str) -> dict:
227
+ # Returned to the model in place of the real call, so the agent can keep
228
+ # going: the evaluation measures its reasoning, not this action's outcome.
229
+ return {
230
+ "status": "simulated",
231
+ "message": (
232
+ f"Action '{function_name}' was not executed: this is a model evaluation "
233
+ "and the tool has side effects. Continue as if it had succeeded."
234
+ ),
235
+ }
236
+
198
237
  def _dispatch_resolved_tool(
199
238
  self,
200
239
  *,
@@ -56,6 +56,13 @@ def _validate_system_tool_entry(entry: dict, index: int) -> dict:
56
56
  routing_profile = entry.get("routing_profile")
57
57
  normalized_routing_profile = _validate_routing_profile(routing_profile, index)
58
58
 
59
+ execution_config = entry.get("execution_config")
60
+ if execution_config is not None:
61
+ if not isinstance(execution_config, dict):
62
+ raise ValueError(f"tools[{index}].execution_config must be an object")
63
+ if "side_effects" in execution_config and not isinstance(execution_config["side_effects"], bool):
64
+ raise ValueError(f"tools[{index}].execution_config.side_effects must be a boolean")
65
+
59
66
  normalized = {
60
67
  "function_name": function_name,
61
68
  "description": description,
@@ -67,6 +74,8 @@ def _validate_system_tool_entry(entry: dict, index: int) -> dict:
67
74
  normalized["routing"] = normalized_routing
68
75
  if normalized_routing_profile is not None:
69
76
  normalized["routing_profile"] = normalized_routing_profile
77
+ if execution_config is not None:
78
+ normalized["execution_config"] = copy.deepcopy(execution_config)
70
79
  return normalized
71
80
 
72
81
 
@@ -4,6 +4,7 @@
4
4
  # IAToolkit is open source software.
5
5
 
6
6
  from injector import inject
7
+ import copy
7
8
  import os
8
9
  import json
9
10
  import logging
@@ -930,6 +931,7 @@ class ToolService:
930
931
  name=function['function_name'],
931
932
  description=function['description'],
932
933
  parameters=function['parameters'],
934
+ execution_config=copy.deepcopy(function.get("execution_config")),
933
935
  output_contract=clone_output_contract(function.get("output_contract")),
934
936
  tool_type=Tool.TYPE_SYSTEM,
935
937
  source=Tool.SOURCE_SYSTEM,
@@ -972,6 +974,7 @@ class ToolService:
972
974
  and tool.description == definition.get("description")
973
975
  and (tool.parameters or {}) == (definition.get("parameters") or {})
974
976
  and (tool.output_contract or {}) == (definition.get("output_contract") or {})
977
+ and (tool.execution_config or {}) == (definition.get("execution_config") or {})
975
978
  )
976
979
 
977
980
  def _system_tools_catalog_has_drift(
@@ -1032,6 +1035,7 @@ class ToolService:
1032
1035
  name=function_name,
1033
1036
  description=function.get("description"),
1034
1037
  parameters=function.get("parameters") or {},
1038
+ execution_config=copy.deepcopy(function.get("execution_config")),
1035
1039
  output_contract=clone_output_contract(function.get("output_contract")),
1036
1040
  tool_type=Tool.TYPE_SYSTEM,
1037
1041
  source=Tool.SOURCE_SYSTEM,
@@ -1128,6 +1132,7 @@ class ToolService:
1128
1132
  name=name,
1129
1133
  description=tool_data['description'],
1130
1134
  parameters=tool_data['params'],
1135
+ execution_config=copy.deepcopy(tool_data.get('execution_config')),
1131
1136
  output_contract=clone_output_contract(tool_data.get('output_contract')),
1132
1137
 
1133
1138
  tool_type=Tool.TYPE_NATIVE,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.52.0
3
+ Version: 2.53.1
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
File without changes
File without changes
File without changes
File without changes