iatoolkit 2.50.2__tar.gz → 2.51.0__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 (253) hide show
  1. {iatoolkit-2.50.2/src/iatoolkit.egg-info → iatoolkit-2.51.0}/PKG-INFO +2 -2
  2. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/pyproject.toml +86 -3
  3. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/__init__.py +1 -1
  4. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/locales/en.yaml +11 -0
  5. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/locales/es.yaml +11 -0
  6. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/database_manager.py +27 -2
  7. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/models.py +3 -3
  8. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/configuration_service.py +51 -22
  9. {iatoolkit-2.50.2 → iatoolkit-2.51.0/src/iatoolkit.egg-info}/PKG-INFO +2 -2
  10. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -1
  11. iatoolkit-2.50.2/requirements.txt +0 -81
  12. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/LICENSE +0 -0
  13. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/LICENSE_COMMUNITY.md +0 -0
  14. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/readme.md +0 -0
  15. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/setup.cfg +0 -0
  16. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/base_company.py +0 -0
  17. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/cli_commands.py +0 -0
  18. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/__init__.py +0 -0
  19. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/bridge_validation.py +0 -0
  20. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/exceptions.py +0 -0
  21. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
  22. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
  23. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
  24. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
  25. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
  26. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
  27. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
  28. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
  29. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/model_registry.py +0 -0
  30. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/routes.py +0 -0
  31. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/secret_resolver.py +0 -0
  32. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/session_manager.py +0 -0
  33. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/url_safety.py +0 -0
  34. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/common/util.py +0 -0
  35. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/company_registry.py +0 -0
  36. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/__init__.py +0 -0
  37. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
  38. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
  39. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
  40. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
  41. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
  42. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
  43. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
  44. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
  45. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
  46. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
  47. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
  48. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
  49. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
  50. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
  51. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
  52. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
  53. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
  54. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
  55. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
  56. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
  57. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
  58. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
  59. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
  60. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
  61. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
  62. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
  63. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
  64. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
  65. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
  66. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/core.py +0 -0
  67. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/__init__.py +0 -0
  68. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  69. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/call_service.py +0 -0
  70. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  71. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  72. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  73. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  74. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  75. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  76. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  77. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/google_auth_client.py +0 -0
  78. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
  79. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
  80. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/inference_handler.py +0 -0
  81. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
  82. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
  83. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  84. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
  85. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
  86. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
  87. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
  88. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
  89. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
  90. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
  91. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/llm_response.py +0 -0
  92. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  93. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/__init__.py +0 -0
  94. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/api_key_repo.py +0 -0
  95. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/bridge_repo.py +0 -0
  96. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/document_repo.py +0 -0
  97. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
  98. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
  99. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/knowledge_wiki_repo.py +0 -0
  100. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  101. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
  102. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/memory_repo.py +0 -0
  103. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
  104. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
  105. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
  106. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
  107. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
  108. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/runtime_logging.py +0 -0
  109. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/__init__.py +0 -0
  110. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/api_key_service.py +0 -0
  111. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/attachment_policy_service.py +0 -0
  112. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/auth_service.py +0 -0
  113. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/benchmark_service.py +0 -0
  114. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/branding_service.py +0 -0
  115. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/company_context_service.py +0 -0
  116. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/context_builder_service.py +0 -0
  117. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/dispatcher_service.py +0 -0
  118. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/embedding_service.py +0 -0
  119. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/excel_service.py +0 -0
  120. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/file_processor_service.py +0 -0
  121. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/history_manager_service.py +0 -0
  122. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/http_tool_service.py +0 -0
  123. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/i18n_service.py +0 -0
  124. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/inference_service.py +0 -0
  125. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/jwt_service.py +0 -0
  126. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/knowledge_base_service.py +0 -0
  127. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/language_service.py +0 -0
  128. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/license_service.py +0 -0
  129. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/llm_client_service.py +0 -0
  130. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/mail_service.py +0 -0
  131. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
  132. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/mcp_token_service.py +0 -0
  133. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/memory_compiler_service.py +0 -0
  134. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/memory_lint_service.py +0 -0
  135. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
  136. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/memory_service.py +0 -0
  137. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/memory_wiki_service.py +0 -0
  138. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
  139. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
  140. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/operator_identity_service.py +0 -0
  141. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/__init__.py +0 -0
  142. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/contracts.py +0 -0
  143. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
  144. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
  145. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
  146. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
  147. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
  148. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
  149. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
  150. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
  151. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/parsers/validator.py +0 -0
  152. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/pdf_service.py +0 -0
  153. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/profile_service.py +0 -0
  154. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/prompt_resource_service.py +0 -0
  155. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/prompt_service.py +0 -0
  156. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/query_service.py +0 -0
  157. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
  158. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/sql_dataset_service.py +0 -0
  159. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/sql_service.py +0 -0
  160. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/sql_source_service.py +0 -0
  161. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/storage_service.py +0 -0
  162. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/structured_output_service.py +0 -0
  163. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
  164. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/system_tools.py +0 -0
  165. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/telemetry_service.py +0 -0
  166. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/tenant_wiki_service.py +0 -0
  167. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/tool_output_contract.py +0 -0
  168. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/tool_service.py +0 -0
  169. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
  170. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
  171. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/visual_kb_service.py +0 -0
  172. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/visual_tool_service.py +0 -0
  173. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/warmup_service.py +0 -0
  174. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/web_search/__init__.py +0 -0
  175. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
  176. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
  177. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
  178. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/services/web_search_service.py +0 -0
  179. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  180. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  181. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  182. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  183. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  184. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  185. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  186. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  187. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_main.js +0 -0
  188. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
  189. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
  190. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  191. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  192. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  193. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  194. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  195. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
  196. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/styles/documents.css +0 -0
  197. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
  198. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
  199. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
  200. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/_company_header.html +0 -0
  201. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/_login_widget.html +0 -0
  202. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/account.html +0 -0
  203. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/base.html +0 -0
  204. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/change_password.html +0 -0
  205. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/chat.html +0 -0
  206. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
  207. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/chat_modals.html +0 -0
  208. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/error.html +0 -0
  209. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/forgot_password.html +0 -0
  210. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/home_hosted_default.html +0 -0
  211. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
  212. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  213. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/pdf/base.html +0 -0
  214. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/pdf/letter.html +0 -0
  215. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/pdf/report.html +0 -0
  216. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/pdf/simple.html +0 -0
  217. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/templates/signup.html +0 -0
  218. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/__init__.py +0 -0
  219. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/account_view.py +0 -0
  220. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/api_key_api_view.py +0 -0
  221. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/base_login_view.py +0 -0
  222. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/categories_api_view.py +0 -0
  223. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/change_password_view.py +0 -0
  224. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
  225. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/chat_view.py +0 -0
  226. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/configuration_api_view.py +0 -0
  227. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/connectors_api_view.py +0 -0
  228. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
  229. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
  230. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
  231. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/history_api_view.py +0 -0
  232. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/home_view.py +0 -0
  233. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
  234. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  235. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/load_document_api_view.py +0 -0
  236. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/login_view.py +0 -0
  237. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/logout_api_view.py +0 -0
  238. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/memory_api_view.py +0 -0
  239. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/profile_api_view.py +0 -0
  240. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
  241. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
  242. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
  243. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/rag_api_view.py +0 -0
  244. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
  245. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/signup_view.py +0 -0
  246. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/static_page_view.py +0 -0
  247. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/tool_api_view.py +0 -0
  248. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  249. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/users_api_view.py +0 -0
  250. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit/views/verify_user_view.py +0 -0
  251. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  252. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit.egg-info/requires.txt +0 -0
  253. {iatoolkit-2.50.2 → iatoolkit-2.51.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.50.2
3
+ Version: 2.51.0
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
7
- Requires-Python: >=3.12
7
+ Requires-Python: >=3.13
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE
10
10
  License-File: LICENSE_COMMUNITY.md
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iatoolkit"
7
- dynamic = ["version", "dependencies"]
8
- requires-python = ">=3.12"
7
+ dynamic = ["version"]
8
+ requires-python = ">=3.13"
9
9
  description = "IAToolkit"
10
10
  readme = "readme.md"
11
11
  license = "MIT"
@@ -17,6 +17,90 @@ authors = [{ name = "Fernando Libedinsky" }]
17
17
  # the whole suite: nothing declared them, so nothing could install them on
18
18
  # purpose. Declared here, `pip install iatoolkit[ocr]` is a decision instead of
19
19
  # a memory.
20
+ dependencies = [
21
+ "bcrypt==4.2.1",
22
+ "anthropic>=0.83.0",
23
+ "boto3==1.43.10",
24
+ "botocore==1.43.10",
25
+ "braintrust>=0.17.0",
26
+ "build==1.2.2.post1",
27
+ "click==8.1.8",
28
+ "cryptography==44.0.3",
29
+ "Flask==3.1.0",
30
+ "Flask-Bcrypt==1.0.1",
31
+ "flask-cors==6.0.0",
32
+ "Flask-Injector==0.15.0",
33
+ "Flask-Session==0.8.0",
34
+ "flatbuffers==24.3.25",
35
+ "gevent==25.9.1",
36
+ "google-ai-generativelanguage==0.6.15",
37
+ "google-api-core==2.24.1",
38
+ "google-api-python-client==2.161.0",
39
+ "google-auth>=2.46.0",
40
+ "google-auth-httplib2==0.2.0",
41
+ "google-auth-oauthlib==1.2.1",
42
+ "google-cloud-core==2.4.1",
43
+ "google-cloud-storage==3.0.0",
44
+ # 1.6.0 publishes no cp313 wheel. This was the only pin in the whole
45
+ # dependency set that Python 3.13 required moving.
46
+ "google-crc32c==1.8.0",
47
+ "google-genai==1.57.0",
48
+ "google-resumable-media==2.7.2",
49
+ "googleapis-common-protos==1.66.0",
50
+ "gunicorn==23.0.0",
51
+ "h11==0.14.0",
52
+ "httpcore==1.0.7",
53
+ "httplib2==0.22.0",
54
+ "httptools==0.6.4",
55
+ "httpx>=0.28.1,<1.0.0",
56
+ "httpx-sse==0.4.0",
57
+ "huggingface-hub>=0.16.4",
58
+ "humanfriendly==10.0",
59
+ "idna==3.10",
60
+ "injector==0.22.0",
61
+ "Jinja2==3.1.5",
62
+ "langchain==0.3.19",
63
+ "langchain-core==0.3.35",
64
+ "langchain-text-splitters==0.3.6",
65
+ "markdown2==2.5.3",
66
+ "nh3==0.3.7",
67
+ "openai==2.8.1",
68
+ "openpyxl==3.1.5",
69
+ "pandas==2.3.1",
70
+ "pgvector==0.3.6",
71
+ "pillow==11.0.0",
72
+ "psutil==7.0.0",
73
+ "psycogreen==1.0.2",
74
+ "psycopg2-binary==2.9.10",
75
+ "PyMySQL==1.1.1",
76
+ "PyJWT==2.10.1",
77
+ "PyMuPDF==1.25.0",
78
+ "python-dotenv==1.0.1",
79
+ "pytest==8.3.4",
80
+ "pytest-cov==5.0.0",
81
+ "pytest-mock==3.14.0",
82
+ "python-dateutil==2.9.0.post0",
83
+ "python-docx==1.1.2",
84
+ "pytz==2025.2",
85
+ "PyYAML==6.0.2",
86
+ "redis==5.2.1",
87
+ "regex==2024.11.6",
88
+ "requests==2.32.3",
89
+ "requests-oauthlib==2.0.0",
90
+ "requests-toolbelt==1.0.0",
91
+ "s3transfer==0.17.0",
92
+ "sib-api-v3-sdk==7.6.0",
93
+ "SQLAlchemy==2.0.49",
94
+ "sqlalchemy-redshift==1.0.0",
95
+ "redshift_connector==2.1.14",
96
+ "tiktoken==0.8.0",
97
+ "tokenizers>=0.22.0",
98
+ "websocket-client==1.8.0",
99
+ "websockets==14.1",
100
+ "Werkzeug==3.1.3",
101
+ "pyjwt[crypto]>=2.8.0",
102
+ ]
103
+
20
104
  [project.optional-dependencies]
21
105
  # Parsing a document with the Docling pipeline rather than the basic provider.
22
106
  docling = [
@@ -58,7 +142,6 @@ exclude = ["tests*", "*/tests*"]
58
142
 
59
143
  [tool.setuptools.dynamic]
60
144
  version = { attr = "iatoolkit.__version__" }
61
- dependencies = { file = ["requirements.txt"] }
62
145
 
63
146
  [tool.setuptools.package-data]
64
147
  iatoolkit = ["templates/**/*", "static/**/*", "locales/*.yaml", "config/*.yaml", "config/system_prompts/*.prompt"]
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # IAToolkit is open source software.
5
5
 
6
- __version__ = "2.50.2"
6
+ __version__ = "2.51.0"
7
7
 
8
8
  # Expose main classes and functions at the top level of the package
9
9
 
@@ -1065,6 +1065,17 @@ ui:
1065
1065
  scheduled_for: "Scheduled for"
1066
1066
  duration: "Duration"
1067
1067
  detail: "Detail"
1068
+ view_detail: "View detail"
1069
+ run_detail_title: "Run detail"
1070
+ run_id: "Run ID"
1071
+ attempt_label: "Attempt"
1072
+ trigger: "Trigger"
1073
+ output: "Output"
1074
+ error: "Error"
1075
+ no_output: "No output recorded."
1076
+ copy_output: "Copy"
1077
+ output_copied: "Output copied."
1078
+ copy_failed: "Could not copy output."
1068
1079
  identity: "Identity"
1069
1080
  target: "Target"
1070
1081
  target_type: "What to run"
@@ -1080,6 +1080,17 @@ ui:
1080
1080
  scheduled_for: "Programada para"
1081
1081
  duration: "Duración"
1082
1082
  detail: "Detalle"
1083
+ view_detail: "Ver detalle"
1084
+ run_detail_title: "Detalle de ejecución"
1085
+ run_id: "ID de ejecución"
1086
+ attempt_label: "Intento"
1087
+ trigger: "Disparador"
1088
+ output: "Salida"
1089
+ error: "Error"
1090
+ no_output: "No hay salida registrada."
1091
+ copy_output: "Copiar"
1092
+ output_copied: "Salida copiada."
1093
+ copy_failed: "No se pudo copiar la salida."
1083
1094
  identity: "Identidad"
1084
1095
  target: "Destino"
1085
1096
  target_type: "Qué ejecutar"
@@ -4,6 +4,7 @@
4
4
  # IAToolkit is open source software.
5
5
 
6
6
  # database_manager.py
7
+ import os
7
8
  from sqlalchemy import create_engine, event, inspect, text
8
9
  from sqlalchemy.dialects import registry
9
10
  from sqlalchemy.orm import sessionmaker, scoped_session
@@ -21,6 +22,15 @@ class DatabaseManager(DatabaseProvider):
21
22
  )
22
23
  _DEFAULT_CONNECT_TIMEOUT = 60
23
24
  MAX_RESULT_ROWS = 2000
25
+ #: Connections each pool may hold. Every process opens one pool per database it
26
+ #: touches, so the ceiling a deployment must respect is
27
+ #: processes x databases x (pool_size + max_overflow), against the server's
28
+ #: max_connections. A worker fleet of 16 processes over two databases on a 103-slot
29
+ #: instance exhausted it with the previous 10/20, and the papers pipeline lost two of
30
+ #: every three ingestions to "FATAL: remaining connection slots are reserved".
31
+ #: Override per service with IAT_DB_POOL_SIZE / IAT_DB_MAX_OVERFLOW.
32
+ DEFAULT_POOL_SIZE = 3
33
+ DEFAULT_MAX_OVERFLOW = 5
24
34
 
25
35
  @inject
26
36
  def __init__(self,
@@ -51,8 +61,8 @@ class DatabaseManager(DatabaseProvider):
51
61
  raw_engine = create_engine(
52
62
  self.engine_url,
53
63
  echo=False,
54
- pool_size=10, # per worker
55
- max_overflow=20,
64
+ pool_size=self._resolve_pool_setting("IAT_DB_POOL_SIZE", self.DEFAULT_POOL_SIZE),
65
+ max_overflow=self._resolve_pool_setting("IAT_DB_MAX_OVERFLOW", self.DEFAULT_MAX_OVERFLOW),
56
66
  pool_timeout=30,
57
67
  pool_recycle=1800,
58
68
  pool_pre_ping=True,
@@ -89,6 +99,21 @@ class DatabaseManager(DatabaseProvider):
89
99
  def _is_mysql(self) -> bool:
90
100
  return self.backend == 'mysql'
91
101
 
102
+ @staticmethod
103
+ def _resolve_pool_setting(env_name: str, default: int) -> int:
104
+ raw_value = str(os.getenv(env_name, "") or "").strip()
105
+ if not raw_value:
106
+ return default
107
+ try:
108
+ value = int(raw_value)
109
+ except (TypeError, ValueError):
110
+ logging.warning("%s=%r is not an integer; using %s", env_name, raw_value, default)
111
+ return default
112
+ if value < 0:
113
+ logging.warning("%s=%s is negative; using %s", env_name, value, default)
114
+ return default
115
+ return value
116
+
92
117
  @classmethod
93
118
  def _normalize_timeout(cls, timeout: int | str | None) -> int:
94
119
  if timeout is None:
@@ -451,7 +451,7 @@ class DocumentImage(Base):
451
451
  __tablename__ = 'iat_document_images'
452
452
 
453
453
  id = Column(Integer, primary_key=True, autoincrement=True)
454
- document_id = Column(Integer, ForeignKey(f'{ORM_SCHEMA}.iat_documents.id', ondelete='CASCADE'), nullable=False)
454
+ document_id = Column(Integer, ForeignKey(f'{ORM_SCHEMA}.iat_documents.id', ondelete='CASCADE'), nullable=False, index=True)
455
455
 
456
456
  page = Column(Integer, nullable=True)
457
457
  image_index = Column(Integer, nullable=True)
@@ -612,7 +612,7 @@ class VSDoc(Base):
612
612
  company_id = Column(Integer, ForeignKey(f'{ORM_SCHEMA}.iat_companies.id',
613
613
  ondelete='CASCADE'), nullable=False)
614
614
  document_id = Column(Integer, ForeignKey(f'{ORM_SCHEMA}.iat_documents.id',
615
- ondelete='CASCADE'), nullable=False)
615
+ ondelete='CASCADE'), nullable=False, index=True)
616
616
  text = Column(Text, nullable=False)
617
617
  meta = Column(JSON_NATIVE, nullable=True)
618
618
 
@@ -632,7 +632,7 @@ class VSImage(Base):
632
632
  company_id = Column(Integer, ForeignKey(f'{ORM_SCHEMA}.iat_companies.id',
633
633
  ondelete='CASCADE'), nullable=False)
634
634
  document_image_id = Column(Integer, ForeignKey(f'{ORM_SCHEMA}.iat_document_images.id',
635
- ondelete='CASCADE'), nullable=False)
635
+ ondelete='CASCADE'), nullable=False, index=True)
636
636
 
637
637
  # Vector dimension depends on the multimodal model (e.g., CLIP uses 512 or 768)
638
638
  embedding = Column(Vector, nullable=False)
@@ -13,6 +13,7 @@ from iatoolkit.services.structured_output_service import StructuredOutputService
13
13
  from injector import inject
14
14
  import logging
15
15
  import os
16
+ import re
16
17
  from urllib.parse import urlparse
17
18
 
18
19
 
@@ -1472,30 +1473,23 @@ class ConfigurationService:
1472
1473
  """
1473
1474
  main_config_filename = "company.yaml"
1474
1475
 
1476
+ # Requests carry the tenant in the URL, so anything on the internet can ask this
1477
+ # service to load a configuration for a name of its choosing. A scanner walking a
1478
+ # wordlist of leaked-secret filenames (.env.json, .env.backup1, ...) reached here
1479
+ # through the language before_request hook: every probe logged a warning about a
1480
+ # missing company.yaml and left an entry in _loaded_configs keyed by its own input.
1481
+ if not self._is_well_formed_company_short_name(company_short_name):
1482
+ logging.debug("Ignoring configuration request for malformed tenant name: %r", company_short_name)
1483
+ return self._minimal_configuration(company_short_name)
1484
+
1475
1485
  # verify existence of the main configuration file
1476
1486
  if not self.asset_repo.exists(company_short_name, AssetType.CONFIG, main_config_filename):
1477
- logging.warning(f"Main configuration file not found: {main_config_filename}")
1478
-
1479
- # return the minimal configuration needed for starting the IAToolkit
1480
- # this is a for solving a chicken/egg problem when trying to migrate the configuration
1481
- # from filesystem to database in enterprise installation
1482
- # see create_assets cli command in enterprise-iatoolkit)
1483
- return {
1484
- 'id': company_short_name,
1485
- 'name': company_short_name,
1486
- 'llm': {'model': 'gpt-5', 'provider_api_keys': {'openai': ''}},
1487
- 'data_sources': {'sql': []},
1488
- 'tools': [],
1489
- 'prompts': {'prompt_categories': [], 'prompt_list': []},
1490
- 'branding': {},
1491
- 'onboarding_cards': [],
1492
- 'help_content': {
1493
- 'example_questions': [],
1494
- 'data_sources': [],
1495
- 'best_practices': [],
1496
- 'capabilities': {'can_do': [], 'cannot_do': []},
1497
- },
1498
- }
1487
+ logging.warning(
1488
+ "Main configuration file not found for company '%s': %s",
1489
+ company_short_name,
1490
+ main_config_filename,
1491
+ )
1492
+ return self._minimal_configuration(company_short_name)
1499
1493
 
1500
1494
  # read text and parse
1501
1495
  yaml_content = self.asset_repo.read_text(company_short_name, AssetType.CONFIG, main_config_filename)
@@ -1514,6 +1508,41 @@ class ConfigurationService:
1514
1508
 
1515
1509
  return config
1516
1510
 
1511
+ #: A tenant short name as the platform issues them. Anything else is not a tenant that
1512
+ #: could exist, so it is rejected before it reaches the asset repository or the cache.
1513
+ COMPANY_SHORT_NAME_RE = re.compile(r"^[a-z0-9][a-z0-9_-]{0,62}$")
1514
+
1515
+ @classmethod
1516
+ def _is_well_formed_company_short_name(cls, company_short_name) -> bool:
1517
+ # Normalized the way the platform itself normalizes a tenant before looking it up,
1518
+ # so a caller passing a name with padding or casing is not treated as hostile.
1519
+ normalized = str(company_short_name or "").strip().lower()
1520
+ return bool(cls.COMPANY_SHORT_NAME_RE.match(normalized))
1521
+
1522
+ @staticmethod
1523
+ def _minimal_configuration(company_short_name: str) -> dict:
1524
+ """The smallest configuration that still lets IAToolkit boot.
1525
+
1526
+ Solves a chicken/egg problem when migrating configuration from the filesystem to
1527
+ the database in an enterprise installation - see the create_assets CLI command.
1528
+ """
1529
+ return {
1530
+ 'id': company_short_name,
1531
+ 'name': company_short_name,
1532
+ 'llm': {'model': 'gpt-5', 'provider_api_keys': {'openai': ''}},
1533
+ 'data_sources': {'sql': []},
1534
+ 'tools': [],
1535
+ 'prompts': {'prompt_categories': [], 'prompt_list': []},
1536
+ 'branding': {},
1537
+ 'onboarding_cards': [],
1538
+ 'help_content': {
1539
+ 'example_questions': [],
1540
+ 'data_sources': [],
1541
+ 'best_practices': [],
1542
+ 'capabilities': {'can_do': [], 'cannot_do': []},
1543
+ },
1544
+ }
1545
+
1517
1546
  def _get_prompt_config(self, config):
1518
1547
  prompts_config = config.get('prompts', {})
1519
1548
  if isinstance(prompts_config, dict):
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.50.2
3
+ Version: 2.51.0
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
7
- Requires-Python: >=3.12
7
+ Requires-Python: >=3.13
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE
10
10
  License-File: LICENSE_COMMUNITY.md
@@ -2,7 +2,6 @@ LICENSE
2
2
  LICENSE_COMMUNITY.md
3
3
  pyproject.toml
4
4
  readme.md
5
- requirements.txt
6
5
  src/iatoolkit/__init__.py
7
6
  src/iatoolkit/base_company.py
8
7
  src/iatoolkit/cli_commands.py
@@ -1,81 +0,0 @@
1
- bcrypt==4.2.1
2
- anthropic>=0.83.0
3
- boto3==1.43.10
4
- botocore==1.43.10
5
- braintrust>=0.17.0
6
- build==1.2.2.post1
7
- click==8.1.8
8
- cryptography==44.0.3
9
- Flask==3.1.0
10
- Flask-Bcrypt==1.0.1
11
- flask-cors==6.0.0
12
- Flask-Injector==0.15.0
13
- Flask-Session==0.8.0
14
- flatbuffers==24.3.25
15
- gevent==25.9.1
16
- google-ai-generativelanguage==0.6.15
17
- google-api-core==2.24.1
18
- google-api-python-client==2.161.0
19
- google-auth>=2.46.0
20
- google-auth-httplib2==0.2.0
21
- google-auth-oauthlib==1.2.1
22
- google-cloud-core==2.4.1
23
- google-cloud-storage==3.0.0
24
- # 1.6.0 publishes no cp313 wheel. This was the only pin in the whole
25
- # dependency set that Python 3.13 required moving.
26
- google-crc32c==1.8.0
27
- google-genai==1.57.0
28
- google-resumable-media==2.7.2
29
- googleapis-common-protos==1.66.0
30
- gunicorn==23.0.0
31
- h11==0.14.0
32
- httpcore==1.0.7
33
- httplib2==0.22.0
34
- httptools==0.6.4
35
- httpx>=0.28.1,<1.0.0
36
- httpx-sse==0.4.0
37
- huggingface-hub>=0.16.4
38
- humanfriendly==10.0
39
- idna==3.10
40
- injector==0.22.0
41
- Jinja2==3.1.5
42
- langchain==0.3.19
43
- langchain-core==0.3.35
44
- langchain-text-splitters==0.3.6
45
- markdown2==2.5.3
46
- nh3==0.3.7
47
- openai==2.8.1
48
- openpyxl==3.1.5
49
- pandas==2.3.1
50
- pgvector==0.3.6
51
- pillow==11.0.0
52
- psutil==7.0.0
53
- psycogreen==1.0.2
54
- psycopg2-binary==2.9.10
55
- PyMySQL==1.1.1
56
- PyJWT==2.10.1
57
- PyMuPDF==1.25.0
58
- python-dotenv==1.0.1
59
- pytest==8.3.4
60
- pytest-cov==5.0.0
61
- pytest-mock==3.14.0
62
- python-dateutil==2.9.0.post0
63
- python-docx==1.1.2
64
- pytz==2025.2
65
- PyYAML==6.0.2
66
- redis==5.2.1
67
- regex==2024.11.6
68
- requests==2.32.3
69
- requests-oauthlib==2.0.0
70
- requests-toolbelt==1.0.0
71
- s3transfer==0.17.0
72
- sib-api-v3-sdk==7.6.0
73
- SQLAlchemy==2.0.49
74
- sqlalchemy-redshift==1.0.0
75
- redshift_connector==2.1.14
76
- tiktoken==0.8.0
77
- tokenizers>=0.22.0
78
- websocket-client==1.8.0
79
- websockets==14.1
80
- Werkzeug==3.1.3
81
- pyjwt[crypto]>=2.8.0
File without changes
File without changes
File without changes