iatoolkit 2.47.1__tar.gz → 2.47.2__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.47.1/src/iatoolkit.egg-info → iatoolkit-2.47.2}/PKG-INFO +1 -1
  2. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/__init__.py +1 -1
  3. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/url_safety.py +71 -9
  4. {iatoolkit-2.47.1 → iatoolkit-2.47.2/src/iatoolkit.egg-info}/PKG-INFO +1 -1
  5. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/LICENSE +0 -0
  6. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/LICENSE_COMMUNITY.md +0 -0
  7. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/pyproject.toml +0 -0
  8. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/readme.md +0 -0
  9. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/requirements.txt +0 -0
  10. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/setup.cfg +0 -0
  11. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/base_company.py +0 -0
  12. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/cli_commands.py +0 -0
  13. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/__init__.py +0 -0
  14. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/bridge_validation.py +0 -0
  15. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/exceptions.py +0 -0
  16. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/interfaces/__init__.py +0 -0
  17. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
  18. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
  19. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
  20. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
  21. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
  22. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
  23. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
  24. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/model_registry.py +0 -0
  25. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/routes.py +0 -0
  26. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/secret_resolver.py +0 -0
  27. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/session_manager.py +0 -0
  28. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/common/util.py +0 -0
  29. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/company_registry.py +0 -0
  30. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/__init__.py +0 -0
  31. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
  32. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
  33. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
  34. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
  35. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
  36. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
  37. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
  38. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
  39. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
  40. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
  41. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
  42. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
  43. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
  44. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
  45. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
  46. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
  47. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
  48. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
  49. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
  50. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
  51. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
  52. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
  53. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
  54. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
  55. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
  56. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
  57. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
  58. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
  59. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
  60. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/core.py +0 -0
  61. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/__init__.py +0 -0
  62. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  63. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/call_service.py +0 -0
  64. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  65. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  66. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  67. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  68. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  69. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  70. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  71. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/google_auth_client.py +0 -0
  72. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/google_chat_app.py +0 -0
  73. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
  74. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/inference_handler.py +0 -0
  75. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
  76. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
  77. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  78. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
  79. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
  80. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
  81. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
  82. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
  83. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
  84. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/llm_proxy.py +0 -0
  85. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/llm_response.py +0 -0
  86. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  87. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/locales/en.yaml +0 -0
  88. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/locales/es.yaml +0 -0
  89. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/__init__.py +0 -0
  90. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/api_key_repo.py +0 -0
  91. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/bridge_repo.py +0 -0
  92. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/database_manager.py +0 -0
  93. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/document_repo.py +0 -0
  94. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
  95. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
  96. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/knowledge_wiki_repo.py +0 -0
  97. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  98. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
  99. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/memory_repo.py +0 -0
  100. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/models.py +0 -0
  101. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/profile_repo.py +0 -0
  102. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
  103. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
  104. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
  105. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/repositories/vs_repo.py +0 -0
  106. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/runtime_logging.py +0 -0
  107. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/__init__.py +0 -0
  108. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/api_key_service.py +0 -0
  109. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/attachment_policy_service.py +0 -0
  110. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/auth_service.py +0 -0
  111. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/benchmark_service.py +0 -0
  112. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/branding_service.py +0 -0
  113. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/company_context_service.py +0 -0
  114. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/configuration_service.py +0 -0
  115. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/context_builder_service.py +0 -0
  116. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/dispatcher_service.py +0 -0
  117. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/embedding_service.py +0 -0
  118. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/excel_service.py +0 -0
  119. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/file_processor_service.py +0 -0
  120. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/history_manager_service.py +0 -0
  121. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/http_tool_service.py +0 -0
  122. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/i18n_service.py +0 -0
  123. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/inference_service.py +0 -0
  124. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/jwt_service.py +0 -0
  125. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/knowledge_base_service.py +0 -0
  126. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/language_service.py +0 -0
  127. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/license_service.py +0 -0
  128. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/llm_client_service.py +0 -0
  129. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/mail_service.py +0 -0
  130. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
  131. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/mcp_token_service.py +0 -0
  132. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/memory_compiler_service.py +0 -0
  133. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/memory_lint_service.py +0 -0
  134. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
  135. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/memory_service.py +0 -0
  136. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/memory_wiki_service.py +0 -0
  137. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
  138. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
  139. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/operator_identity_service.py +0 -0
  140. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/__init__.py +0 -0
  141. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/contracts.py +0 -0
  142. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
  143. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
  144. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
  145. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
  146. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
  147. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
  148. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
  149. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
  150. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/parsers/validator.py +0 -0
  151. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/pdf_service.py +0 -0
  152. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/profile_service.py +0 -0
  153. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/prompt_resource_service.py +0 -0
  154. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/prompt_service.py +0 -0
  155. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/query_service.py +0 -0
  156. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
  157. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/sql_dataset_service.py +0 -0
  158. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/sql_service.py +0 -0
  159. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/sql_source_service.py +0 -0
  160. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/storage_service.py +0 -0
  161. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/structured_output_service.py +0 -0
  162. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
  163. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/system_tools.py +0 -0
  164. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/telemetry_service.py +0 -0
  165. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/tenant_wiki_service.py +0 -0
  166. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/tool_output_contract.py +0 -0
  167. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/tool_service.py +0 -0
  168. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/user_feedback_service.py +0 -0
  169. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/user_session_context_service.py +0 -0
  170. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/visual_kb_service.py +0 -0
  171. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/visual_tool_service.py +0 -0
  172. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/warmup_service.py +0 -0
  173. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/web_search/__init__.py +0 -0
  174. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
  175. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
  176. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
  177. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/services/web_search_service.py +0 -0
  178. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  179. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  180. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  181. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  182. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  183. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  184. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  185. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  186. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_main.js +0 -0
  187. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
  188. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
  189. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  190. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  191. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  192. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  193. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  194. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/styles/chat_public.css +0 -0
  195. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/styles/documents.css +0 -0
  196. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/styles/landing_page.css +0 -0
  197. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/styles/llm_output.css +0 -0
  198. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/static/styles/onboarding.css +0 -0
  199. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/_company_header.html +0 -0
  200. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/_login_widget.html +0 -0
  201. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/account.html +0 -0
  202. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/base.html +0 -0
  203. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/change_password.html +0 -0
  204. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/chat.html +0 -0
  205. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
  206. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/chat_modals.html +0 -0
  207. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/error.html +0 -0
  208. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/forgot_password.html +0 -0
  209. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/home_hosted_default.html +0 -0
  210. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
  211. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  212. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/pdf/base.html +0 -0
  213. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/pdf/letter.html +0 -0
  214. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/pdf/report.html +0 -0
  215. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/pdf/simple.html +0 -0
  216. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/templates/signup.html +0 -0
  217. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/__init__.py +0 -0
  218. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/account_view.py +0 -0
  219. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/api_key_api_view.py +0 -0
  220. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/base_login_view.py +0 -0
  221. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/categories_api_view.py +0 -0
  222. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/change_password_view.py +0 -0
  223. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
  224. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/chat_view.py +0 -0
  225. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/configuration_api_view.py +0 -0
  226. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/connectors_api_view.py +0 -0
  227. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/embedding_api_view.py +0 -0
  228. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/forgot_password_view.py +0 -0
  229. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/help_content_api_view.py +0 -0
  230. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/history_api_view.py +0 -0
  231. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/home_view.py +0 -0
  232. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/init_context_api_view.py +0 -0
  233. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  234. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/load_document_api_view.py +0 -0
  235. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/login_view.py +0 -0
  236. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/logout_api_view.py +0 -0
  237. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/memory_api_view.py +0 -0
  238. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/profile_api_view.py +0 -0
  239. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/prompt_api_view.py +0 -0
  240. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
  241. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
  242. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/rag_api_view.py +0 -0
  243. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/root_redirect_view.py +0 -0
  244. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/signup_view.py +0 -0
  245. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/static_page_view.py +0 -0
  246. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/tool_api_view.py +0 -0
  247. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  248. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/users_api_view.py +0 -0
  249. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit/views/verify_user_view.py +0 -0
  250. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
  251. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  252. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/src/iatoolkit.egg-info/requires.txt +0 -0
  253. {iatoolkit-2.47.1 → iatoolkit-2.47.2}/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.47.1
3
+ Version: 2.47.2
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.47.1"
6
+ __version__ = "2.47.2"
7
7
 
8
8
  # Expose main classes and functions at the top level of the package
9
9
 
@@ -19,6 +19,10 @@ as well, and a public URL can 302 to one. This module therefore:
19
19
  * resolves hostnames and rejects them when ANY resolved address falls in those
20
20
  ranges (fail-closed on a private answer; fail-open only when the name cannot
21
21
  be resolved at all, since that request could not have reached anything);
22
+ * accepts an operator-configured ``allowed_private_hosts`` list, so a deployment
23
+ whose callback or download target is legitimately internal (portal-backend on
24
+ 172.19.x and the like) can name that host instead of loosening the guard for
25
+ everyone - loopback, link-local and reserved stay unreachable even when listed;
22
26
  * offers ``fetch_with_safe_redirects`` which never lets ``requests`` follow a
23
27
  redirect blindly: every hop is re-validated with the same rules.
24
28
 
@@ -89,10 +93,42 @@ def resolve_host_classifications(hostname: str) -> list[str] | None:
89
93
  return classifications
90
94
 
91
95
 
96
+ def _normalize_host_allowlist(allowed_hosts) -> frozenset[str]:
97
+ """Reduces every entry to the bare hostname ``urlparse`` will hand us, so the
98
+ comparison cannot silently miss.
99
+
100
+ Accepts what an operator actually types in a config file: a hostname, a
101
+ hostname with a port, or the whole callback URL
102
+ (``https://portal-api.example.com/hook``). An entry that never matched would
103
+ look like correct configuration while the target kept failing with the same
104
+ opaque error, which is the worst outcome available here.
105
+ """
106
+ normalized = set()
107
+ for entry in allowed_hosts or ():
108
+ text = str(entry or "").strip().lower()
109
+ if not text:
110
+ continue
111
+ if "://" in text:
112
+ text = urlparse(text).hostname or ""
113
+ elif text.startswith("["):
114
+ # Bracketed IPv6 literal ("[fd00::1]:8443") - the colons are part of
115
+ # the address, so it cannot go through the host:port split below.
116
+ text = text[1:].split("]", 1)[0]
117
+ else:
118
+ # host[:port][/path] with no scheme: urlparse would read the whole
119
+ # thing as a path, so strip the port and path by hand.
120
+ text = text.split("/", 1)[0].split(":", 1)[0]
121
+ text = text.strip().rstrip(".")
122
+ if text:
123
+ normalized.add(text)
124
+ return frozenset(normalized)
125
+
126
+
92
127
  def assert_public_http_url(
93
128
  url: str,
94
129
  *,
95
130
  allowed_schemes: tuple[str, ...] = ("https",),
131
+ allowed_private_hosts: tuple[str, ...] = (),
96
132
  error_type: IAToolkitException.ErrorType = IAToolkitException.ErrorType.INVALID_PARAMETER,
97
133
  label: str = "URL",
98
134
  ) -> ParseResult:
@@ -100,6 +136,16 @@ def assert_public_http_url(
100
136
  Raises IAToolkitException(error_type) unless ``url`` is an absolute URL with
101
137
  an allowed scheme whose host is a public internet address (literal or via
102
138
  DNS). Returns the parsed URL on success.
139
+
140
+ ``allowed_private_hosts`` is the operator's escape hatch for the legitimate
141
+ case this guard otherwise blocks: a target that is internal on purpose, such
142
+ as a callback back into the deployment's own network. A host named there is
143
+ accepted when it is **private** (RFC1918 & friends), by literal IP or via
144
+ DNS. It is still rejected when it is loopback, link-local, multicast,
145
+ reserved or unspecified - those are the ranges an SSRF payload actually
146
+ wants (127.0.0.1, ::1, 169.254.169.254), and the tenant configuration that
147
+ feeds this list is editable by tenant admins, who are not the platform
148
+ operator. The blocked local *names* stay blocked for the same reason.
103
149
  """
104
150
  normalized = str(url or "").strip()
105
151
  parsed = urlparse(normalized)
@@ -116,18 +162,29 @@ def assert_public_http_url(
116
162
  if hostname in _BLOCKED_HOSTNAMES or hostname.endswith(_BLOCKED_HOST_SUFFIXES):
117
163
  raise IAToolkitException(error_type, f"{label} host is not allowed.")
118
164
 
165
+ host_allows_private = hostname in _normalize_host_allowlist(allowed_private_hosts)
166
+
119
167
  ip_value = _to_ip_or_none(hostname)
120
168
  if ip_value is not None:
121
- if classify_ip(ip_value) != "public":
122
- raise IAToolkitException(error_type, f"{label} host is not allowed.")
123
- return parsed
169
+ classification = classify_ip(ip_value)
170
+ if classification == "public" or (classification == "private" and host_allows_private):
171
+ return parsed
172
+ raise IAToolkitException(error_type, f"{label} host is not allowed.")
124
173
 
125
174
  classifications = resolve_host_classifications(hostname)
126
- if classifications and any(kind != "public" for kind in classifications):
127
- raise IAToolkitException(
128
- error_type,
129
- f"{label} host is not allowed (resolves to a private or reserved address).",
130
- )
175
+ if classifications:
176
+ # 'blocked' is never openable from configuration - see the docstring.
177
+ if any(kind == "blocked" for kind in classifications):
178
+ raise IAToolkitException(
179
+ error_type,
180
+ f"{label} host is not allowed "
181
+ "(resolves to a loopback, link-local or reserved address).",
182
+ )
183
+ if any(kind == "private" for kind in classifications) and not host_allows_private:
184
+ raise IAToolkitException(
185
+ error_type,
186
+ f"{label} host is not allowed (resolves to a private or reserved address).",
187
+ )
131
188
  return parsed
132
189
 
133
190
 
@@ -135,6 +192,7 @@ def fetch_with_safe_redirects(
135
192
  url: str,
136
193
  *,
137
194
  allowed_schemes: tuple[str, ...] = ("https",),
195
+ allowed_private_hosts: tuple[str, ...] = (),
138
196
  error_type: IAToolkitException.ErrorType = IAToolkitException.ErrorType.INVALID_PARAMETER,
139
197
  label: str = "URL",
140
198
  max_redirects: int = 3,
@@ -151,7 +209,11 @@ def fetch_with_safe_redirects(
151
209
  current_url = str(url or "").strip()
152
210
  for _ in range(max_redirects + 1):
153
211
  assert_public_http_url(
154
- current_url, allowed_schemes=allowed_schemes, error_type=error_type, label=label
212
+ current_url,
213
+ allowed_schemes=allowed_schemes,
214
+ allowed_private_hosts=allowed_private_hosts,
215
+ error_type=error_type,
216
+ label=label,
155
217
  )
156
218
  response = requests.get(current_url, allow_redirects=False, **requests_kwargs)
157
219
  location = response.headers.get("Location") if response.status_code in _REDIRECT_STATUSES else None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.47.1
3
+ Version: 2.47.2
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