iatoolkit 2.22.0__tar.gz → 2.24.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. {iatoolkit-2.22.0/src/iatoolkit.egg-info → iatoolkit-2.24.1}/PKG-INFO +1 -1
  2. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/__init__.py +1 -1
  3. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/locales/en.yaml +8 -1
  4. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/locales/es.yaml +8 -1
  5. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/http_tool_service.py +62 -6
  6. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/tool_service.py +91 -31
  7. {iatoolkit-2.22.0 → iatoolkit-2.24.1/src/iatoolkit.egg-info}/PKG-INFO +1 -1
  8. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/LICENSE +0 -0
  9. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/LICENSE_COMMUNITY.md +0 -0
  10. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/pyproject.toml +0 -0
  11. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/readme.md +0 -0
  12. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/requirements.txt +0 -0
  13. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/setup.cfg +0 -0
  14. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/base_company.py +0 -0
  15. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/cli_commands.py +0 -0
  16. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/__init__.py +0 -0
  17. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/exceptions.py +0 -0
  18. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/interfaces/__init__.py +0 -0
  19. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
  20. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
  21. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
  22. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
  23. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
  24. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
  25. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
  26. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/model_registry.py +0 -0
  27. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/routes.py +0 -0
  28. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/secret_resolver.py +0 -0
  29. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/session_manager.py +0 -0
  30. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/common/util.py +0 -0
  31. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/company_registry.py +0 -0
  32. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/__init__.py +0 -0
  33. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
  34. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
  35. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
  36. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
  37. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
  38. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
  39. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
  40. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
  41. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
  42. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
  43. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
  44. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
  45. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
  46. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
  47. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
  48. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
  49. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
  50. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
  51. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
  52. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
  53. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
  54. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
  55. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
  56. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
  57. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
  58. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
  59. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
  60. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
  61. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
  62. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/core.py +0 -0
  63. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/__init__.py +0 -0
  64. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  65. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/call_service.py +0 -0
  66. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  67. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  68. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  69. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  70. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  71. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  72. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  73. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/google_auth_client.py +0 -0
  74. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/google_chat_app.py +0 -0
  75. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
  76. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/inference_handler.py +0 -0
  77. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
  78. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
  79. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  80. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
  81. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
  82. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
  83. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
  84. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
  85. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
  86. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/llm_proxy.py +0 -0
  87. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/llm_response.py +0 -0
  88. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  89. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/__init__.py +0 -0
  90. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/api_key_repo.py +0 -0
  91. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/database_manager.py +0 -0
  92. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/document_repo.py +0 -0
  93. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
  94. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
  95. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  96. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
  97. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/memory_repo.py +0 -0
  98. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/models.py +0 -0
  99. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/profile_repo.py +0 -0
  100. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
  101. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
  102. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
  103. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/repositories/vs_repo.py +0 -0
  104. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/runtime_logging.py +0 -0
  105. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/__init__.py +0 -0
  106. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/api_key_service.py +0 -0
  107. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/attachment_policy_service.py +0 -0
  108. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/auth_service.py +0 -0
  109. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/benchmark_service.py +0 -0
  110. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/branding_service.py +0 -0
  111. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/company_context_service.py +0 -0
  112. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/configuration_service.py +0 -0
  113. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/context_builder_service.py +0 -0
  114. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/dispatcher_service.py +0 -0
  115. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/embedding_service.py +0 -0
  116. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/excel_service.py +0 -0
  117. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/file_processor_service.py +0 -0
  118. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/history_manager_service.py +0 -0
  119. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/i18n_service.py +0 -0
  120. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/inference_service.py +0 -0
  121. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/jwt_service.py +0 -0
  122. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/knowledge_base_service.py +0 -0
  123. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/language_service.py +0 -0
  124. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/license_service.py +0 -0
  125. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/llm_client_service.py +0 -0
  126. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/mail_service.py +0 -0
  127. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/mcp_token_service.py +0 -0
  128. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/memory_compiler_service.py +0 -0
  129. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/memory_lint_service.py +0 -0
  130. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
  131. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/memory_service.py +0 -0
  132. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/memory_wiki_service.py +0 -0
  133. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
  134. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
  135. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/__init__.py +0 -0
  136. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/contracts.py +0 -0
  137. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
  138. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
  139. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
  140. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
  141. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
  142. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
  143. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
  144. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
  145. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/parsers/validator.py +0 -0
  146. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/pdf_service.py +0 -0
  147. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/profile_service.py +0 -0
  148. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/prompt_resource_service.py +0 -0
  149. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/prompt_service.py +0 -0
  150. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/query_service.py +0 -0
  151. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
  152. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/sql_dataset_service.py +0 -0
  153. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/sql_service.py +0 -0
  154. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/sql_source_service.py +0 -0
  155. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/storage_service.py +0 -0
  156. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/structured_output_service.py +0 -0
  157. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
  158. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/system_tools.py +0 -0
  159. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/telemetry_service.py +0 -0
  160. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/tool_output_contract.py +0 -0
  161. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/user_feedback_service.py +0 -0
  162. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/user_session_context_service.py +0 -0
  163. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/visual_kb_service.py +0 -0
  164. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/visual_tool_service.py +0 -0
  165. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/warmup_service.py +0 -0
  166. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/web_search/__init__.py +0 -0
  167. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
  168. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
  169. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
  170. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/services/web_search_service.py +0 -0
  171. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  172. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  173. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  174. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  175. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  176. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  177. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  178. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  179. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_main.js +0 -0
  180. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
  181. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
  182. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  183. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  184. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  185. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  186. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  187. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/styles/chat_public.css +0 -0
  188. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/styles/documents.css +0 -0
  189. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/styles/landing_page.css +0 -0
  190. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/styles/llm_output.css +0 -0
  191. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/static/styles/onboarding.css +0 -0
  192. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/_company_header.html +0 -0
  193. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/_login_widget.html +0 -0
  194. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/account.html +0 -0
  195. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/base.html +0 -0
  196. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/change_password.html +0 -0
  197. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/chat.html +0 -0
  198. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
  199. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/chat_modals.html +0 -0
  200. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/error.html +0 -0
  201. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/forgot_password.html +0 -0
  202. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/home_hosted_default.html +0 -0
  203. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
  204. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  205. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/pdf/base.html +0 -0
  206. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/pdf/letter.html +0 -0
  207. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/pdf/report.html +0 -0
  208. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/pdf/simple.html +0 -0
  209. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/templates/signup.html +0 -0
  210. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/__init__.py +0 -0
  211. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/account_view.py +0 -0
  212. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/api_key_api_view.py +0 -0
  213. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/base_login_view.py +0 -0
  214. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/categories_api_view.py +0 -0
  215. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/change_password_view.py +0 -0
  216. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
  217. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/chat_view.py +0 -0
  218. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/configuration_api_view.py +0 -0
  219. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/connectors_api_view.py +0 -0
  220. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/embedding_api_view.py +0 -0
  221. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/forgot_password_view.py +0 -0
  222. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/help_content_api_view.py +0 -0
  223. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/history_api_view.py +0 -0
  224. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/home_view.py +0 -0
  225. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/init_context_api_view.py +0 -0
  226. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  227. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/load_document_api_view.py +0 -0
  228. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/login_view.py +0 -0
  229. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/logout_api_view.py +0 -0
  230. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/memory_api_view.py +0 -0
  231. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/profile_api_view.py +0 -0
  232. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/prompt_api_view.py +0 -0
  233. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
  234. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
  235. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/rag_api_view.py +0 -0
  236. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/root_redirect_view.py +0 -0
  237. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/signup_view.py +0 -0
  238. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/static_page_view.py +0 -0
  239. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/tool_api_view.py +0 -0
  240. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  241. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/users_api_view.py +0 -0
  242. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit/views/verify_user_view.py +0 -0
  243. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
  244. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  245. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit.egg-info/requires.txt +0 -0
  246. {iatoolkit-2.22.0 → iatoolkit-2.24.1}/src/iatoolkit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.22.0
3
+ Version: 2.24.1
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # IAToolkit is open source software.
5
5
 
6
- __version__ = "2.22.0"
6
+ __version__ = "2.24.1"
7
7
 
8
8
  # Expose main classes and functions at the top level of the package
9
9
 
@@ -1627,7 +1627,7 @@ ui:
1627
1627
  output_contract_title: "Output Contract"
1628
1628
  output_contract_hint: "Optional. Use YAML/JSON to describe the returned artifact, for example kind/image/file/audio/video plus transport and field names such as image_url or download_link."
1629
1629
  model_output_title: "Model Output"
1630
- model_output_hint: "Define the final JSON returned to the model after the HTTP response is received. Default mode is raw."
1630
+ model_output_hint: "Define the final JSON returned to the model after the HTTP response is received. Default mode is raw. Use include/exclude and describe to keep responses compact and meaningful."
1631
1631
  modal_output_contract_label: "Initial output_contract"
1632
1632
  modal_output_contract_placeholder: "kind: image\nmime_type: image/png\ntransport: signed_url\nurl_field: image_url"
1633
1633
  routing_profile_title: "Routing Profile"
@@ -2613,9 +2613,16 @@ js_messages:
2613
2613
  tool_http_model_output_label: "model_output"
2614
2614
  tool_http_model_output_object: "model_output must be an object"
2615
2615
  tool_http_model_output_unknown_keys: "model_output has unsupported keys: {keys}"
2616
+ tool_http_model_output_description_invalid: "model_output.description must be a string"
2617
+ tool_http_model_output_list_invalid: "model_output.{field} must be a list"
2618
+ tool_http_model_output_list_item_invalid: "model_output.{field}[{index}] must be a non-empty string"
2619
+ tool_http_model_output_describe_object: "model_output.describe must be an object"
2620
+ tool_http_model_output_describe_field_name_invalid: "model_output.describe must use non-empty field names"
2621
+ tool_http_model_output_describe_field_invalid: "model_output.describe.{field} must be a string"
2616
2622
  tool_http_model_output_mode_invalid: "model_output.mode must be one of raw, extract, map"
2617
2623
  tool_http_model_output_path_required: "model_output.path is required when mode=extract"
2618
2624
  tool_http_model_output_root_invalid: "model_output.root must be a non-empty string"
2625
+ tool_http_model_output_fields_object: "model_output.fields must be an object"
2619
2626
  tool_http_model_output_fields_required: "model_output.fields must be a non-empty object when mode=map"
2620
2627
  tool_http_model_output_field_name_invalid: "model_output.fields must use non-empty field names"
2621
2628
  tool_http_model_output_field_path_required: "model_output.fields.{field} must define a path"
@@ -1631,7 +1631,7 @@ ui:
1631
1631
  output_contract_title: "Output Contract"
1632
1632
  output_contract_hint: "Opcional. Usa YAML/JSON para describir el artefacto devuelto, por ejemplo kind/image/file/audio/video más transport y nombres de campos como image_url o download_link."
1633
1633
  model_output_title: "Model Output"
1634
- model_output_hint: "Define el JSON final que recibe el modelo después de ejecutar la tool HTTP. El modo por defecto es raw."
1634
+ model_output_hint: "Define el JSON final que recibe el modelo después de ejecutar la tool HTTP. El modo por defecto es raw. Usa include/exclude y describe para mantener respuestas compactas y significativas."
1635
1635
  modal_output_contract_label: "output_contract inicial"
1636
1636
  modal_output_contract_placeholder: "kind: image\nmime_type: image/png\ntransport: signed_url\nurl_field: image_url"
1637
1637
  routing_profile_title: "Routing Profile"
@@ -2616,9 +2616,16 @@ js_messages:
2616
2616
  tool_http_model_output_label: "model_output"
2617
2617
  tool_http_model_output_object: "model_output debe ser un objeto"
2618
2618
  tool_http_model_output_unknown_keys: "model_output tiene claves no soportadas: {keys}"
2619
+ tool_http_model_output_description_invalid: "model_output.description debe ser un string"
2620
+ tool_http_model_output_list_invalid: "model_output.{field} debe ser una lista"
2621
+ tool_http_model_output_list_item_invalid: "model_output.{field}[{index}] debe ser un string no vacío"
2622
+ tool_http_model_output_describe_object: "model_output.describe debe ser un objeto"
2623
+ tool_http_model_output_describe_field_name_invalid: "model_output.describe debe usar nombres de campo no vacíos"
2624
+ tool_http_model_output_describe_field_invalid: "model_output.describe.{field} debe ser un string"
2619
2625
  tool_http_model_output_mode_invalid: "model_output.mode debe ser uno de raw, extract, map"
2620
2626
  tool_http_model_output_path_required: "model_output.path es obligatorio cuando mode=extract"
2621
2627
  tool_http_model_output_root_invalid: "model_output.root debe ser un string no vacío"
2628
+ tool_http_model_output_fields_object: "model_output.fields debe ser un objeto"
2622
2629
  tool_http_model_output_fields_required: "model_output.fields debe ser un objeto no vacío cuando mode=map"
2623
2630
  tool_http_model_output_field_name_invalid: "model_output.fields debe usar nombres de campo no vacíos"
2624
2631
  tool_http_model_output_field_path_required: "model_output.fields.{field} debe definir un path"
@@ -588,13 +588,15 @@ class HttpToolService:
588
588
  root_path = str(model_output.get("root") or "").strip()
589
589
  source = self._extract_path(value, root_path) if root_path else value
590
590
  fields = model_output.get("fields") or {}
591
- if not isinstance(fields, dict) or not fields:
591
+ if not isinstance(fields, dict):
592
592
  raise IAToolkitException(
593
593
  IAToolkitException.ErrorType.INVALID_PARAMETER,
594
- "execution_config.response.model_output.fields must be a non-empty object when mode is 'map'"
594
+ "execution_config.response.model_output.fields must be an object"
595
595
  )
596
596
 
597
597
  exclude_nulls = model_output.get("exclude_nulls") is True
598
+ include_fields = self._normalize_model_output_field_names(model_output.get("include"))
599
+ exclude_fields = set(self._normalize_model_output_field_names(model_output.get("exclude")))
598
600
  max_items = model_output.get("max_items")
599
601
 
600
602
  if isinstance(source, list):
@@ -604,27 +606,81 @@ class HttpToolService:
604
606
  else source
605
607
  )
606
608
  return [
607
- self._map_model_output_item(item, fields, exclude_nulls)
609
+ self._map_model_output_item(
610
+ item,
611
+ fields=fields,
612
+ include_fields=include_fields,
613
+ exclude_fields=exclude_fields,
614
+ exclude_nulls=exclude_nulls,
615
+ )
608
616
  for item in items
609
617
  ]
610
618
  if isinstance(source, dict):
611
- return self._map_model_output_item(source, fields, exclude_nulls)
619
+ return self._map_model_output_item(
620
+ source,
621
+ fields=fields,
622
+ include_fields=include_fields,
623
+ exclude_fields=exclude_fields,
624
+ exclude_nulls=exclude_nulls,
625
+ )
612
626
 
613
627
  raise IAToolkitException(
614
628
  IAToolkitException.ErrorType.INVALID_PARAMETER,
615
629
  f"Cannot map model_output over type '{type(source).__name__}'"
616
630
  )
617
631
 
618
- def _map_model_output_item(self, source: dict, fields: dict, exclude_nulls: bool) -> dict:
619
- mapped = {}
632
+ def _map_model_output_item(
633
+ self,
634
+ source,
635
+ *,
636
+ fields: dict,
637
+ include_fields: list[str],
638
+ exclude_fields: set[str],
639
+ exclude_nulls: bool,
640
+ ) -> dict:
641
+ if not isinstance(source, dict):
642
+ raise IAToolkitException(
643
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
644
+ f"Cannot map model_output item over type '{type(source).__name__}'"
645
+ )
646
+
647
+ if include_fields:
648
+ mapped = {}
649
+ for field_name in include_fields:
650
+ field_value = source.get(field_name)
651
+ if field_value is None and exclude_nulls:
652
+ continue
653
+ mapped[field_name] = field_value
654
+ else:
655
+ mapped = {
656
+ field_name: field_value
657
+ for field_name, field_value in source.items()
658
+ if not (field_value is None and exclude_nulls)
659
+ }
660
+
620
661
  for output_name, field_config in fields.items():
621
662
  path = self._resolve_model_output_field_path(output_name, field_config)
622
663
  found, field_value = self._try_extract_path(source, path)
623
664
  if (not found or field_value is None) and exclude_nulls:
624
665
  continue
625
666
  mapped[output_name] = field_value if found else None
667
+
668
+ for field_name in exclude_fields:
669
+ mapped.pop(field_name, None)
670
+
626
671
  return mapped
627
672
 
673
+ @staticmethod
674
+ def _normalize_model_output_field_names(value) -> list[str]:
675
+ if not isinstance(value, list):
676
+ return []
677
+ names = []
678
+ for item in value:
679
+ text = str(item or "").strip()
680
+ if text:
681
+ names.append(text)
682
+ return names
683
+
628
684
  @staticmethod
629
685
  def _resolve_model_output_field_path(output_name: str, field_config) -> str:
630
686
  if isinstance(field_config, str):
@@ -596,7 +596,18 @@ class ToolService:
596
596
  "execution_config.response.model_output must be a JSON object"
597
597
  )
598
598
 
599
- allowed_keys = {"mode", "path", "root", "fields", "exclude_nulls", "max_items"}
599
+ allowed_keys = {
600
+ "mode",
601
+ "path",
602
+ "root",
603
+ "fields",
604
+ "include",
605
+ "exclude",
606
+ "description",
607
+ "describe",
608
+ "exclude_nulls",
609
+ "max_items",
610
+ }
600
611
  unknown_keys = sorted(key for key in model_output.keys() if key not in allowed_keys)
601
612
  if unknown_keys:
602
613
  raise IAToolkitException(
@@ -604,6 +615,17 @@ class ToolService:
604
615
  f"execution_config.response.model_output has unsupported keys: {unknown_keys}"
605
616
  )
606
617
 
618
+ description = model_output.get("description")
619
+ if description is not None and not isinstance(description, str):
620
+ raise IAToolkitException(
621
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
622
+ "execution_config.response.model_output.description must be a string"
623
+ )
624
+
625
+ self._validate_http_model_output_string_list(model_output.get("include"), "include")
626
+ self._validate_http_model_output_string_list(model_output.get("exclude"), "exclude")
627
+ self._validate_http_model_output_descriptions(model_output.get("describe"))
628
+
607
629
  mode = str(model_output.get("mode", "raw")).strip().lower()
608
630
  if mode not in self.HTTP_ALLOWED_MODEL_OUTPUT_MODES:
609
631
  raise IAToolkitException(
@@ -628,42 +650,43 @@ class ToolService:
628
650
  )
629
651
 
630
652
  fields = model_output.get("fields")
631
- if not isinstance(fields, dict) or not fields:
632
- raise IAToolkitException(
633
- IAToolkitException.ErrorType.INVALID_PARAMETER,
634
- "execution_config.response.model_output.fields must be a non-empty object when mode is 'map'"
635
- )
636
- for field_name, field_config in fields.items():
637
- if not isinstance(field_name, str) or not field_name.strip():
653
+ if fields is not None:
654
+ if not isinstance(fields, dict):
638
655
  raise IAToolkitException(
639
656
  IAToolkitException.ErrorType.INVALID_PARAMETER,
640
- "execution_config.response.model_output.fields must use non-empty string field names"
657
+ "execution_config.response.model_output.fields must be an object"
641
658
  )
642
- if isinstance(field_config, str):
643
- if not field_config.strip():
659
+ for field_name, field_config in fields.items():
660
+ if not isinstance(field_name, str) or not field_name.strip():
644
661
  raise IAToolkitException(
645
662
  IAToolkitException.ErrorType.INVALID_PARAMETER,
646
- f"execution_config.response.model_output.fields.{field_name} must be a non-empty path"
663
+ "execution_config.response.model_output.fields must use non-empty string field names"
647
664
  )
648
- continue
649
- if isinstance(field_config, dict):
650
- path = field_config.get("path")
651
- if not isinstance(path, str) or not path.strip():
652
- raise IAToolkitException(
653
- IAToolkitException.ErrorType.INVALID_PARAMETER,
654
- f"execution_config.response.model_output.fields.{field_name}.path must be a non-empty string"
655
- )
656
- description = field_config.get("description")
657
- if description is not None and not isinstance(description, str):
658
- raise IAToolkitException(
659
- IAToolkitException.ErrorType.INVALID_PARAMETER,
660
- f"execution_config.response.model_output.fields.{field_name}.description must be a string"
661
- )
662
- continue
663
- raise IAToolkitException(
664
- IAToolkitException.ErrorType.INVALID_PARAMETER,
665
- f"execution_config.response.model_output.fields.{field_name} must be a path string or object"
666
- )
665
+ if isinstance(field_config, str):
666
+ if not field_config.strip():
667
+ raise IAToolkitException(
668
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
669
+ f"execution_config.response.model_output.fields.{field_name} must be a non-empty path"
670
+ )
671
+ continue
672
+ if isinstance(field_config, dict):
673
+ path = field_config.get("path")
674
+ if not isinstance(path, str) or not path.strip():
675
+ raise IAToolkitException(
676
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
677
+ f"execution_config.response.model_output.fields.{field_name}.path must be a non-empty string"
678
+ )
679
+ description = field_config.get("description")
680
+ if description is not None and not isinstance(description, str):
681
+ raise IAToolkitException(
682
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
683
+ f"execution_config.response.model_output.fields.{field_name}.description must be a string"
684
+ )
685
+ continue
686
+ raise IAToolkitException(
687
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
688
+ f"execution_config.response.model_output.fields.{field_name} must be a path string or object"
689
+ )
667
690
 
668
691
  exclude_nulls = model_output.get("exclude_nulls")
669
692
  if exclude_nulls is not None and not isinstance(exclude_nulls, bool):
@@ -682,6 +705,43 @@ class ToolService:
682
705
  "execution_config.response.model_output.max_items must be a positive integer"
683
706
  )
684
707
 
708
+ @staticmethod
709
+ def _validate_http_model_output_string_list(value, field_name: str) -> None:
710
+ if value is None:
711
+ return
712
+ if not isinstance(value, list):
713
+ raise IAToolkitException(
714
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
715
+ f"execution_config.response.model_output.{field_name} must be a list"
716
+ )
717
+ for index, item in enumerate(value):
718
+ if not isinstance(item, str) or not item.strip():
719
+ raise IAToolkitException(
720
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
721
+ f"execution_config.response.model_output.{field_name}[{index}] must be a non-empty string"
722
+ )
723
+
724
+ @staticmethod
725
+ def _validate_http_model_output_descriptions(value) -> None:
726
+ if value is None:
727
+ return
728
+ if not isinstance(value, dict):
729
+ raise IAToolkitException(
730
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
731
+ "execution_config.response.model_output.describe must be an object"
732
+ )
733
+ for field_name, description in value.items():
734
+ if not isinstance(field_name, str) or not field_name.strip():
735
+ raise IAToolkitException(
736
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
737
+ "execution_config.response.model_output.describe must use non-empty string field names"
738
+ )
739
+ if not isinstance(description, str):
740
+ raise IAToolkitException(
741
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
742
+ f"execution_config.response.model_output.describe.{field_name} must be a string"
743
+ )
744
+
685
745
  @staticmethod
686
746
  def _build_tool_snapshot(tool_obj) -> dict:
687
747
  if tool_obj is None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.22.0
3
+ Version: 2.24.1
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
File without changes
File without changes
File without changes
File without changes
File without changes