iatoolkit 2.2.3__tar.gz → 2.2.4__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 (210) hide show
  1. {iatoolkit-2.2.3/src/iatoolkit.egg-info → iatoolkit-2.2.4}/PKG-INFO +1 -1
  2. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/__init__.py +1 -1
  3. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/config/llm_capabilities.yaml +2 -2
  4. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/llm_proxy.py +178 -10
  5. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/locales/en.yaml +12 -3
  6. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/locales/es.yaml +12 -3
  7. {iatoolkit-2.2.3 → iatoolkit-2.2.4/src/iatoolkit.egg-info}/PKG-INFO +1 -1
  8. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/LICENSE +0 -0
  9. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/LICENSE_COMMUNITY.md +0 -0
  10. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/pyproject.toml +0 -0
  11. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/readme.md +0 -0
  12. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/requirements.txt +0 -0
  13. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/setup.cfg +0 -0
  14. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/base_company.py +0 -0
  15. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/cli_commands.py +0 -0
  16. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/__init__.py +0 -0
  17. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/exceptions.py +0 -0
  18. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/interfaces/__init__.py +0 -0
  19. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
  20. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
  21. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
  22. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
  23. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
  24. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
  25. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
  26. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/model_registry.py +0 -0
  27. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/routes.py +0 -0
  28. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/secret_resolver.py +0 -0
  29. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/session_manager.py +0 -0
  30. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/common/util.py +0 -0
  31. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/company_registry.py +0 -0
  32. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/config/__init__.py +0 -0
  33. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
  34. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
  35. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/core.py +0 -0
  36. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/__init__.py +0 -0
  37. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  38. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/call_service.py +0 -0
  39. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  40. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  41. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  42. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  43. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  44. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  45. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  46. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/google_auth_client.py +0 -0
  47. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/google_chat_app.py +0 -0
  48. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
  49. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/inference_handler.py +0 -0
  50. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
  51. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  52. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
  53. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
  54. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
  55. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
  56. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
  57. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/llm_response.py +0 -0
  58. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  59. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/__init__.py +0 -0
  60. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/api_key_repo.py +0 -0
  61. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/database_manager.py +0 -0
  62. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/document_repo.py +0 -0
  63. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
  64. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
  65. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  66. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/memory_repo.py +0 -0
  67. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/models.py +0 -0
  68. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/profile_repo.py +0 -0
  69. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
  70. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
  71. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/repositories/vs_repo.py +0 -0
  72. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/__init__.py +0 -0
  73. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/api_key_service.py +0 -0
  74. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/attachment_policy_service.py +0 -0
  75. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/auth_service.py +0 -0
  76. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/benchmark_service.py +0 -0
  77. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/branding_service.py +0 -0
  78. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/company_context_service.py +0 -0
  79. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/configuration_service.py +0 -0
  80. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/context_builder_service.py +0 -0
  81. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/dispatcher_service.py +0 -0
  82. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/embedding_service.py +0 -0
  83. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/excel_service.py +0 -0
  84. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/file_processor_service.py +0 -0
  85. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/history_manager_service.py +0 -0
  86. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/http_tool_service.py +0 -0
  87. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/i18n_service.py +0 -0
  88. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/inference_service.py +0 -0
  89. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/jwt_service.py +0 -0
  90. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/knowledge_base_service.py +0 -0
  91. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/language_service.py +0 -0
  92. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/license_service.py +0 -0
  93. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/llm_client_service.py +0 -0
  94. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/mail_service.py +0 -0
  95. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/memory_compiler_service.py +0 -0
  96. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/memory_lint_service.py +0 -0
  97. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
  98. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/memory_service.py +0 -0
  99. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/memory_wiki_service.py +0 -0
  100. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
  101. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
  102. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/__init__.py +0 -0
  103. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/contracts.py +0 -0
  104. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
  105. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
  106. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
  107. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
  108. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
  109. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
  110. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
  111. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
  112. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/parsers/validator.py +0 -0
  113. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/pdf_service.py +0 -0
  114. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/profile_service.py +0 -0
  115. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/prompt_service.py +0 -0
  116. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/query_service.py +0 -0
  117. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
  118. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/sql_dataset_service.py +0 -0
  119. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/sql_service.py +0 -0
  120. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/sql_source_service.py +0 -0
  121. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/storage_service.py +0 -0
  122. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/structured_output_service.py +0 -0
  123. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
  124. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/system_tools.py +0 -0
  125. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/tool_service.py +0 -0
  126. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/user_feedback_service.py +0 -0
  127. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/user_session_context_service.py +0 -0
  128. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/visual_kb_service.py +0 -0
  129. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/visual_tool_service.py +0 -0
  130. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/warmup_service.py +0 -0
  131. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/web_search/__init__.py +0 -0
  132. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
  133. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
  134. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
  135. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/services/web_search_service.py +0 -0
  136. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  137. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  138. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  139. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  140. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  141. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  142. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  143. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  144. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_main.js +0 -0
  145. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
  146. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
  147. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  148. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  149. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  150. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  151. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  152. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/styles/chat_public.css +0 -0
  153. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/styles/documents.css +0 -0
  154. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/styles/landing_page.css +0 -0
  155. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/styles/llm_output.css +0 -0
  156. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/static/styles/onboarding.css +0 -0
  157. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/system_prompts/__init__.py +0 -0
  158. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
  159. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/system_prompts/query_main.prompt +0 -0
  160. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
  161. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/_company_header.html +0 -0
  162. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/_login_widget.html +0 -0
  163. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/base.html +0 -0
  164. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/change_password.html +0 -0
  165. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/chat.html +0 -0
  166. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
  167. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/chat_modals.html +0 -0
  168. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/error.html +0 -0
  169. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/forgot_password.html +0 -0
  170. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/home_hosted_default.html +0 -0
  171. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
  172. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  173. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/pdf/base.html +0 -0
  174. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/pdf/letter.html +0 -0
  175. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/pdf/report.html +0 -0
  176. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/pdf/simple.html +0 -0
  177. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/templates/signup.html +0 -0
  178. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/__init__.py +0 -0
  179. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/api_key_api_view.py +0 -0
  180. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/base_login_view.py +0 -0
  181. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/categories_api_view.py +0 -0
  182. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/change_password_view.py +0 -0
  183. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/chat_view.py +0 -0
  184. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/configuration_api_view.py +0 -0
  185. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/connectors_api_view.py +0 -0
  186. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/embedding_api_view.py +0 -0
  187. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/forgot_password_view.py +0 -0
  188. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/help_content_api_view.py +0 -0
  189. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/history_api_view.py +0 -0
  190. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/home_view.py +0 -0
  191. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/init_context_api_view.py +0 -0
  192. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  193. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/load_document_api_view.py +0 -0
  194. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/login_view.py +0 -0
  195. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/logout_api_view.py +0 -0
  196. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/memory_api_view.py +0 -0
  197. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/profile_api_view.py +0 -0
  198. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/prompt_api_view.py +0 -0
  199. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/rag_api_view.py +0 -0
  200. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/root_redirect_view.py +0 -0
  201. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/signup_view.py +0 -0
  202. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/static_page_view.py +0 -0
  203. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/tool_api_view.py +0 -0
  204. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  205. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/users_api_view.py +0 -0
  206. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit/views/verify_user_view.py +0 -0
  207. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
  208. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  209. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/src/iatoolkit.egg-info/requires.txt +0 -0
  210. {iatoolkit-2.2.3 → iatoolkit-2.2.4}/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.2.3
3
+ Version: 2.2.4
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.2.3"
6
+ __version__ = "2.2.4"
7
7
 
8
8
  # Expose main classes and functions at the top level of the package
9
9
 
@@ -13,8 +13,8 @@ openai:
13
13
  - text/xml
14
14
  preferred_native_mime_types:
15
15
  - application/pdf
16
- max_file_size_mb: 50
17
- max_files_per_request: 20
16
+ max_file_size_mb: 100
17
+ max_files_per_request: 30
18
18
 
19
19
  gemini:
20
20
  supports_native_files: true
@@ -16,7 +16,7 @@ from iatoolkit.common.model_registry import ModelRegistry
16
16
  from iatoolkit.common.interfaces.secret_provider import SecretProvider
17
17
  from iatoolkit.common.secret_resolver import resolve_secret
18
18
 
19
- from openai import OpenAI # For OpenAI and xAI (OpenAI-compatible)
19
+ from openai import OpenAI, Timeout # For OpenAI and xAI (OpenAI-compatible)
20
20
 
21
21
  from typing import Dict, List, Any, Tuple
22
22
  import threading
@@ -29,7 +29,7 @@ class LLMProxy:
29
29
  """
30
30
 
31
31
  # Class-level cache for low-level clients (per provider + API key)
32
- _clients_cache: Dict[Tuple[str, str, str], Any] = {}
32
+ _clients_cache: Dict[Tuple[Any, ...], Any] = {}
33
33
  _clients_cache_lock = threading.Lock()
34
34
 
35
35
  # Provider identifiers
@@ -39,6 +39,9 @@ class LLMProxy:
39
39
  PROVIDER_XAI = "xai"
40
40
  PROVIDER_ANTHROPIC = "anthropic"
41
41
  PROVIDER_OPENAI_COMPATIBLE = "openai_compatible"
42
+ DEFAULT_CONNECT_TIMEOUT_SECONDS = 10.0
43
+ DEFAULT_READ_TIMEOUT_SECONDS = 300.0
44
+ DEFAULT_MAX_RETRIES = 0
42
45
 
43
46
  @inject
44
47
  def __init__(
@@ -58,7 +61,7 @@ class LLMProxy:
58
61
  self.secret_provider = secret_provider
59
62
 
60
63
  # adapter cache by (provider, api_key, base_url)
61
- self.adapters: Dict[Tuple[str, str, str], Any] = {}
64
+ self.adapters: Dict[Tuple[Any, ...], Any] = {}
62
65
 
63
66
  # -------------------------------------------------------------------------
64
67
  # Public API
@@ -142,14 +145,31 @@ class LLMProxy:
142
145
  client_config = self._get_client_config(company_short_name, provider)
143
146
  api_key = client_config["api_key"]
144
147
  base_url = client_config.get("base_url") or ""
145
- adapter_cache_key = (provider, api_key or "", base_url)
148
+ connect_timeout_seconds = client_config["connect_timeout_seconds"]
149
+ read_timeout_seconds = client_config["read_timeout_seconds"]
150
+ max_retries = client_config["max_retries"]
151
+ adapter_cache_key = (
152
+ provider,
153
+ api_key or "",
154
+ base_url,
155
+ connect_timeout_seconds,
156
+ read_timeout_seconds,
157
+ max_retries,
158
+ )
146
159
 
147
160
  # If already created for this provider+key, just return it
148
161
  if adapter_cache_key in self.adapters and self.adapters[adapter_cache_key] is not None:
149
162
  return self.adapters[adapter_cache_key]
150
163
 
151
164
  # Otherwise, create low-level client from configuration
152
- client = self._get_or_create_client(provider, api_key, base_url=base_url)
165
+ client = self._get_or_create_client(
166
+ provider,
167
+ api_key,
168
+ base_url=base_url,
169
+ connect_timeout_seconds=connect_timeout_seconds,
170
+ read_timeout_seconds=read_timeout_seconds,
171
+ max_retries=max_retries,
172
+ )
153
173
 
154
174
  # Wrap client with the correct adapter
155
175
  if provider == self.PROVIDER_OPENAI:
@@ -194,35 +214,90 @@ class LLMProxy:
194
214
  # Client cache
195
215
  # -------------------------------------------------------------------------
196
216
 
197
- def _get_or_create_client(self, provider: str, api_key: str, base_url: str = "") -> Any:
217
+ def _get_or_create_client(
218
+ self,
219
+ provider: str,
220
+ api_key: str,
221
+ base_url: str = "",
222
+ *,
223
+ connect_timeout_seconds: float | None = None,
224
+ read_timeout_seconds: float | None = None,
225
+ max_retries: int | None = None,
226
+ ) -> Any:
198
227
  """
199
228
  Return a low-level client for the given provider and API key.
200
229
  Uses a class-level cache to avoid recreating clients.
201
230
  """
202
- cache_key = (provider, api_key or "", base_url or "")
231
+ connect_timeout_seconds = self._normalize_positive_float(
232
+ connect_timeout_seconds,
233
+ self.DEFAULT_CONNECT_TIMEOUT_SECONDS,
234
+ )
235
+ read_timeout_seconds = self._normalize_positive_float(
236
+ read_timeout_seconds,
237
+ self.DEFAULT_READ_TIMEOUT_SECONDS,
238
+ )
239
+ max_retries = self._normalize_non_negative_int(
240
+ max_retries,
241
+ self.DEFAULT_MAX_RETRIES,
242
+ )
243
+ cache_key = (
244
+ provider,
245
+ api_key or "",
246
+ base_url or "",
247
+ connect_timeout_seconds,
248
+ read_timeout_seconds,
249
+ max_retries,
250
+ )
203
251
 
204
252
  with self._clients_cache_lock:
205
253
  if cache_key in self._clients_cache:
206
254
  return self._clients_cache[cache_key]
207
255
 
208
- client = self._create_client_for_provider(provider, api_key, base_url=base_url)
256
+ client = self._create_client_for_provider(
257
+ provider,
258
+ api_key,
259
+ base_url=base_url,
260
+ connect_timeout_seconds=connect_timeout_seconds,
261
+ read_timeout_seconds=read_timeout_seconds,
262
+ max_retries=max_retries,
263
+ )
209
264
  self._clients_cache[cache_key] = client
210
265
  return client
211
266
 
212
- def _create_client_for_provider(self, provider: str, api_key: str, base_url: str = "") -> Any:
267
+ def _create_client_for_provider(
268
+ self,
269
+ provider: str,
270
+ api_key: str,
271
+ base_url: str = "",
272
+ *,
273
+ connect_timeout_seconds: float | None = None,
274
+ read_timeout_seconds: float | None = None,
275
+ max_retries: int | None = None,
276
+ ) -> Any:
213
277
  """
214
278
  Actually create the low-level client for a provider.
215
279
  This is the only place where provider-specific client construction lives.
216
280
  """
281
+ timeout = self._build_openai_timeout(
282
+ connect_timeout_seconds=connect_timeout_seconds,
283
+ read_timeout_seconds=read_timeout_seconds,
284
+ )
285
+ max_retries = self._normalize_non_negative_int(
286
+ max_retries,
287
+ self.DEFAULT_MAX_RETRIES,
288
+ )
289
+
217
290
  if provider == self.PROVIDER_OPENAI:
218
291
  # Standard OpenAI client for GPT models
219
- return OpenAI(api_key=api_key)
292
+ return OpenAI(api_key=api_key, timeout=timeout, max_retries=max_retries)
220
293
 
221
294
  if provider == self.PROVIDER_XAI:
222
295
  # xAI Grok is OpenAI-compatible; we can use the OpenAI client with a different base_url.
223
296
  return OpenAI(
224
297
  api_key=api_key,
225
298
  base_url="https://api.x.ai/v1",
299
+ timeout=timeout,
300
+ max_retries=max_retries,
226
301
  )
227
302
 
228
303
  if provider == self.PROVIDER_DEEPSEEK:
@@ -233,6 +308,8 @@ class LLMProxy:
233
308
  return OpenAI(
234
309
  api_key=api_key,
235
310
  base_url="https://api.deepseek.com",
311
+ timeout=timeout,
312
+ max_retries=max_retries,
236
313
  )
237
314
 
238
315
  if provider == self.PROVIDER_OPENAI_COMPATIBLE:
@@ -244,6 +321,8 @@ class LLMProxy:
244
321
  return OpenAI(
245
322
  api_key=api_key,
246
323
  base_url=base_url,
324
+ timeout=timeout,
325
+ max_retries=max_retries,
247
326
  )
248
327
 
249
328
  if provider == self.PROVIDER_GEMINI:
@@ -270,11 +349,100 @@ class LLMProxy:
270
349
  )
271
350
 
272
351
  def _get_client_config(self, company_short_name: str, provider: str) -> dict:
352
+ provider_config = self.configuration_service.get_llm_provider_config(company_short_name, provider) or {}
273
353
  return {
274
354
  "api_key": self._get_api_key_from_config(company_short_name, provider),
275
355
  "base_url": self._get_base_url_from_config(company_short_name, provider),
356
+ "connect_timeout_seconds": self._resolve_provider_float(
357
+ provider_config,
358
+ ("connect_timeout_seconds",),
359
+ self.DEFAULT_CONNECT_TIMEOUT_SECONDS,
360
+ minimum=0.1,
361
+ ),
362
+ "read_timeout_seconds": self._resolve_provider_float(
363
+ provider_config,
364
+ ("read_timeout_seconds", "request_timeout_seconds", "timeout_seconds"),
365
+ self.DEFAULT_READ_TIMEOUT_SECONDS,
366
+ minimum=0.1,
367
+ ),
368
+ "max_retries": self._resolve_provider_int(
369
+ provider_config,
370
+ ("max_retries",),
371
+ self.DEFAULT_MAX_RETRIES,
372
+ minimum=0,
373
+ ),
276
374
  }
277
375
 
376
+ @classmethod
377
+ def _build_openai_timeout(
378
+ cls,
379
+ *,
380
+ connect_timeout_seconds: float | None,
381
+ read_timeout_seconds: float | None,
382
+ ) -> Timeout:
383
+ connect_timeout_seconds = cls._normalize_positive_float(
384
+ connect_timeout_seconds,
385
+ cls.DEFAULT_CONNECT_TIMEOUT_SECONDS,
386
+ )
387
+ read_timeout_seconds = cls._normalize_positive_float(
388
+ read_timeout_seconds,
389
+ cls.DEFAULT_READ_TIMEOUT_SECONDS,
390
+ )
391
+ return Timeout(
392
+ connect=connect_timeout_seconds,
393
+ read=read_timeout_seconds,
394
+ write=read_timeout_seconds,
395
+ pool=read_timeout_seconds,
396
+ )
397
+
398
+ @classmethod
399
+ def _resolve_provider_float(
400
+ cls,
401
+ provider_config: Dict[str, Any],
402
+ keys: tuple[str, ...],
403
+ default: float,
404
+ *,
405
+ minimum: float,
406
+ ) -> float:
407
+ for key in keys:
408
+ if key in provider_config:
409
+ return cls._normalize_positive_float(provider_config.get(key), default, minimum=minimum)
410
+ return cls._normalize_positive_float(default, default, minimum=minimum)
411
+
412
+ @classmethod
413
+ def _resolve_provider_int(
414
+ cls,
415
+ provider_config: Dict[str, Any],
416
+ keys: tuple[str, ...],
417
+ default: int,
418
+ *,
419
+ minimum: int,
420
+ ) -> int:
421
+ for key in keys:
422
+ if key in provider_config:
423
+ return cls._normalize_non_negative_int(provider_config.get(key), default, minimum=minimum)
424
+ return cls._normalize_non_negative_int(default, default, minimum=minimum)
425
+
426
+ @staticmethod
427
+ def _normalize_positive_float(value, default: float, *, minimum: float = 0.1) -> float:
428
+ try:
429
+ parsed = float(value)
430
+ if parsed >= minimum:
431
+ return parsed
432
+ except (TypeError, ValueError):
433
+ pass
434
+ return float(default)
435
+
436
+ @staticmethod
437
+ def _normalize_non_negative_int(value, default: int, *, minimum: int = 0) -> int:
438
+ try:
439
+ parsed = int(value)
440
+ if parsed >= minimum:
441
+ return parsed
442
+ except (TypeError, ValueError):
443
+ pass
444
+ return int(default)
445
+
278
446
  # -------------------------------------------------------------------------
279
447
  # Configuration helpers
280
448
  # -------------------------------------------------------------------------
@@ -674,6 +674,12 @@ ui:
674
674
  definition_caption: "Pipeline"
675
675
  definition_delete_ok: "Pipeline definition deleted"
676
676
  definition_delete_failed: "Could not delete pipeline definition"
677
+ reset_state: "Reset pipeline state"
678
+ reset_state_title: "Reset pipeline state?"
679
+ reset_state_message: "This permanently deletes prior run inputs and artifacts for this pipeline, clears remembered processing state, and makes the next execution start from scratch."
680
+ reset_state_confirm: "Reset state"
681
+ reset_state_ok: "Pipeline state reset. The next run will start from scratch."
682
+ reset_state_failed: "Could not reset pipeline state"
677
683
  execution_mode_taskless: "Taskless"
678
684
  execution_mode_task_driven: "Task-driven"
679
685
  import_yaml_file: "YAML file"
@@ -730,7 +736,10 @@ ui:
730
736
  daily_cost: "Daily Cost"
731
737
  usage_detail: "Usage Detail"
732
738
  usage_by_user: "Usage by User Identifier"
733
- usage_by_prompt: "Usage by Prompt"
739
+ usage_by_prompt: "Usage by Agent"
740
+ usage_by_prompt_empty: "No agent usage data"
741
+ usage_by_prompt_meta_empty: "0 agents"
742
+ usage_by_prompt_meta_summary: "{count} agents · {tokens} tokens"
734
743
  invoices: "Invoices"
735
744
  daily_closures: "Daily Closures"
736
745
  invoice_detail_title: "Invoice Detail"
@@ -740,7 +749,7 @@ ui:
740
749
  col_date: "Date"
741
750
  col_model: "Model"
742
751
  col_user_identifier: "User Identifier"
743
- col_prompt_name: "Prompt Name"
752
+ col_prompt_name: "Agent Name"
744
753
  col_queries: "Queries"
745
754
  col_prompt: "Prompt"
746
755
  col_completion: "Completion"
@@ -763,7 +772,7 @@ ui:
763
772
  tab_summary: "Summary"
764
773
  tab_usage: "Usage"
765
774
  tab_usage_by_user: "Usage by User"
766
- tab_usage_by_prompt: "Usage by Prompt"
775
+ tab_usage_by_prompt: "Usage by Agent"
767
776
  tab_runs: "Billing Runs"
768
777
  tab_invoices: "Invoices"
769
778
  tab_billing: "Billing"
@@ -675,6 +675,12 @@ ui:
675
675
  definition_caption: "Pipeline"
676
676
  definition_delete_ok: "Definición de pipeline eliminada"
677
677
  definition_delete_failed: "No se pudo eliminar la definición de pipeline"
678
+ reset_state: "Resetear estado del pipeline"
679
+ reset_state_title: "¿Resetear estado del pipeline?"
680
+ reset_state_message: "Esto elimina de forma permanente los inputs y artifacts de ejecuciones previas de este pipeline, limpia el estado recordado de procesamiento y hace que la próxima ejecución arranque desde cero."
681
+ reset_state_confirm: "Resetear estado"
682
+ reset_state_ok: "Se reseteó el estado del pipeline. La próxima ejecución arrancará desde cero."
683
+ reset_state_failed: "No se pudo resetear el estado del pipeline"
678
684
  execution_mode_taskless: "Taskless"
679
685
  execution_mode_task_driven: "Con tasks"
680
686
  import_yaml_file: "Archivo YAML"
@@ -731,7 +737,10 @@ ui:
731
737
  daily_cost: "Costo Diario"
732
738
  usage_detail: "Detalle de Uso"
733
739
  usage_by_user: "Uso por Usuario"
734
- usage_by_prompt: "Uso por Prompt"
740
+ usage_by_prompt: "Uso por Agente"
741
+ usage_by_prompt_empty: "No hay datos de uso por agente"
742
+ usage_by_prompt_meta_empty: "0 agentes"
743
+ usage_by_prompt_meta_summary: "{count} agentes · {tokens} tokens"
735
744
  invoices: "Facturas"
736
745
  daily_closures: "Cierres Diarios"
737
746
  invoice_detail_title: "Detalle de Factura"
@@ -741,7 +750,7 @@ ui:
741
750
  col_date: "Fecha"
742
751
  col_model: "Modelo"
743
752
  col_user_identifier: "Usuario"
744
- col_prompt_name: "Nombre del Prompt"
753
+ col_prompt_name: "Nombre del Agente"
745
754
  col_queries: "Consultas"
746
755
  col_prompt: "Prompt"
747
756
  col_completion: "Respuesta"
@@ -764,7 +773,7 @@ ui:
764
773
  tab_summary: "Resumen"
765
774
  tab_usage: "Uso"
766
775
  tab_usage_by_user: "Uso por Usuario"
767
- tab_usage_by_prompt: "Uso por Prompt"
776
+ tab_usage_by_prompt: "Uso por Agente"
768
777
  tab_runs: "Operaciones"
769
778
  tab_invoices: "Facturas"
770
779
  tab_billing: "Facturación"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.2.3
3
+ Version: 2.2.4
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
File without changes