iatoolkit 2.21.3__tar.gz → 2.22.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 (246) hide show
  1. {iatoolkit-2.21.3/src/iatoolkit.egg-info → iatoolkit-2.22.0}/PKG-INFO +1 -1
  2. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/__init__.py +1 -1
  3. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/locales/en.yaml +16 -1
  4. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/locales/es.yaml +16 -1
  5. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/http_tool_service.py +93 -0
  6. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/tool_service.py +98 -0
  7. {iatoolkit-2.21.3 → iatoolkit-2.22.0/src/iatoolkit.egg-info}/PKG-INFO +1 -1
  8. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/LICENSE +0 -0
  9. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/LICENSE_COMMUNITY.md +0 -0
  10. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/pyproject.toml +0 -0
  11. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/readme.md +0 -0
  12. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/requirements.txt +0 -0
  13. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/setup.cfg +0 -0
  14. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/base_company.py +0 -0
  15. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/cli_commands.py +0 -0
  16. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/__init__.py +0 -0
  17. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/exceptions.py +0 -0
  18. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
  19. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
  20. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
  21. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
  22. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
  23. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
  24. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
  25. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
  26. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/model_registry.py +0 -0
  27. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/routes.py +0 -0
  28. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/secret_resolver.py +0 -0
  29. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/session_manager.py +0 -0
  30. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/common/util.py +0 -0
  31. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/company_registry.py +0 -0
  32. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/__init__.py +0 -0
  33. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
  34. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
  35. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
  36. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
  37. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
  38. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
  39. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
  40. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
  41. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
  42. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
  43. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
  44. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
  45. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
  46. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
  47. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
  48. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
  49. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
  50. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
  51. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
  52. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
  53. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
  54. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
  55. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
  56. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
  57. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
  58. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
  59. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
  60. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
  61. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
  62. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/core.py +0 -0
  63. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/__init__.py +0 -0
  64. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  65. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/call_service.py +0 -0
  66. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  67. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  68. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  69. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  70. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  71. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  72. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  73. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/google_auth_client.py +0 -0
  74. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
  75. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
  76. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/inference_handler.py +0 -0
  77. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
  78. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
  79. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  80. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
  81. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
  82. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
  83. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
  84. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
  85. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
  86. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
  87. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/llm_response.py +0 -0
  88. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  89. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/__init__.py +0 -0
  90. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/api_key_repo.py +0 -0
  91. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/database_manager.py +0 -0
  92. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/document_repo.py +0 -0
  93. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
  94. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
  95. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  96. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
  97. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/memory_repo.py +0 -0
  98. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/models.py +0 -0
  99. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
  100. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
  101. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
  102. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
  103. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
  104. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/runtime_logging.py +0 -0
  105. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/__init__.py +0 -0
  106. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/api_key_service.py +0 -0
  107. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/attachment_policy_service.py +0 -0
  108. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/auth_service.py +0 -0
  109. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/benchmark_service.py +0 -0
  110. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/branding_service.py +0 -0
  111. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/company_context_service.py +0 -0
  112. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/configuration_service.py +0 -0
  113. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/context_builder_service.py +0 -0
  114. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/dispatcher_service.py +0 -0
  115. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/embedding_service.py +0 -0
  116. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/excel_service.py +0 -0
  117. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/file_processor_service.py +0 -0
  118. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/history_manager_service.py +0 -0
  119. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/i18n_service.py +0 -0
  120. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/inference_service.py +0 -0
  121. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/jwt_service.py +0 -0
  122. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/knowledge_base_service.py +0 -0
  123. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/language_service.py +0 -0
  124. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/license_service.py +0 -0
  125. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/llm_client_service.py +0 -0
  126. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/mail_service.py +0 -0
  127. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/mcp_token_service.py +0 -0
  128. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/memory_compiler_service.py +0 -0
  129. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/memory_lint_service.py +0 -0
  130. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
  131. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/memory_service.py +0 -0
  132. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/memory_wiki_service.py +0 -0
  133. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
  134. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
  135. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/__init__.py +0 -0
  136. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/contracts.py +0 -0
  137. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
  138. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
  139. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
  140. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
  141. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
  142. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
  143. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
  144. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
  145. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/parsers/validator.py +0 -0
  146. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/pdf_service.py +0 -0
  147. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/profile_service.py +0 -0
  148. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/prompt_resource_service.py +0 -0
  149. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/prompt_service.py +0 -0
  150. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/query_service.py +0 -0
  151. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
  152. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/sql_dataset_service.py +0 -0
  153. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/sql_service.py +0 -0
  154. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/sql_source_service.py +0 -0
  155. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/storage_service.py +0 -0
  156. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/structured_output_service.py +0 -0
  157. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
  158. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/system_tools.py +0 -0
  159. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/telemetry_service.py +0 -0
  160. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/tool_output_contract.py +0 -0
  161. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
  162. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
  163. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/visual_kb_service.py +0 -0
  164. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/visual_tool_service.py +0 -0
  165. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/warmup_service.py +0 -0
  166. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/web_search/__init__.py +0 -0
  167. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
  168. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
  169. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
  170. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/services/web_search_service.py +0 -0
  171. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  172. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  173. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  174. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  175. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  176. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  177. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  178. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  179. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_main.js +0 -0
  180. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
  181. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
  182. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  183. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  184. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  185. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  186. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  187. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
  188. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/styles/documents.css +0 -0
  189. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
  190. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
  191. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
  192. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/_company_header.html +0 -0
  193. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/_login_widget.html +0 -0
  194. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/account.html +0 -0
  195. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/base.html +0 -0
  196. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/change_password.html +0 -0
  197. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/chat.html +0 -0
  198. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
  199. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/chat_modals.html +0 -0
  200. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/error.html +0 -0
  201. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/forgot_password.html +0 -0
  202. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/home_hosted_default.html +0 -0
  203. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
  204. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  205. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/pdf/base.html +0 -0
  206. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/pdf/letter.html +0 -0
  207. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/pdf/report.html +0 -0
  208. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/pdf/simple.html +0 -0
  209. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/templates/signup.html +0 -0
  210. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/__init__.py +0 -0
  211. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/account_view.py +0 -0
  212. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/api_key_api_view.py +0 -0
  213. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/base_login_view.py +0 -0
  214. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/categories_api_view.py +0 -0
  215. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/change_password_view.py +0 -0
  216. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
  217. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/chat_view.py +0 -0
  218. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/configuration_api_view.py +0 -0
  219. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/connectors_api_view.py +0 -0
  220. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
  221. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
  222. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
  223. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/history_api_view.py +0 -0
  224. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/home_view.py +0 -0
  225. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
  226. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  227. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/load_document_api_view.py +0 -0
  228. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/login_view.py +0 -0
  229. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/logout_api_view.py +0 -0
  230. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/memory_api_view.py +0 -0
  231. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/profile_api_view.py +0 -0
  232. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
  233. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
  234. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
  235. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/rag_api_view.py +0 -0
  236. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
  237. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/signup_view.py +0 -0
  238. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/static_page_view.py +0 -0
  239. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/tool_api_view.py +0 -0
  240. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  241. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/users_api_view.py +0 -0
  242. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit/views/verify_user_view.py +0 -0
  243. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
  244. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  245. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/src/iatoolkit.egg-info/requires.txt +0 -0
  246. {iatoolkit-2.21.3 → iatoolkit-2.22.0}/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.21.3
3
+ Version: 2.22.0
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.21.3"
6
+ __version__ = "2.22.0"
7
7
 
8
8
  # Expose main classes and functions at the top level of the package
9
9
 
@@ -1594,7 +1594,7 @@ ui:
1594
1594
  execution_hint_native: "Native tools execute through toolkit runtime code, so there is no editable execution_config here."
1595
1595
  inference_execution_hint: "This tool type does not expose an editable execution_config in the GUI. Use the Output tab to document what the runtime returns."
1596
1596
  native_execution_hint: "This tool type executes through internal runtime code. There is no editable execution_config in this editor."
1597
- raw_hint: "Edit the full tool definition as YAML. This advanced mode includes parameters, execution_config, output_contract, and routing_profile."
1597
+ raw_hint: "Edit the full tool definition as YAML. This advanced mode includes parameters, execution_config, execution_config.response.model_output, output_contract, and routing_profile."
1598
1598
  raw_footer_hint: "Saving from Raw uses this document as the source of truth for the tool definition."
1599
1599
 
1600
1600
  # Modal
@@ -1626,6 +1626,8 @@ ui:
1626
1626
  http_config_help_post_example: "POST example (Bearer from secrets_manager)"
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
+ 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."
1629
1631
  modal_output_contract_label: "Initial output_contract"
1630
1632
  modal_output_contract_placeholder: "kind: image\nmime_type: image/png\ntransport: signed_url\nurl_field: image_url"
1631
1633
  routing_profile_title: "Routing Profile"
@@ -2608,6 +2610,19 @@ js_messages:
2608
2610
  tool_http_response_codes_required: "response.success_status_codes must be a non-empty list"
2609
2611
  tool_http_response_codes_invalid: "response.success_status_codes must contain valid HTTP status codes (100..599)"
2610
2612
  tool_http_response_bytes_invalid: "response.max_response_bytes must be a positive integer"
2613
+ tool_http_model_output_label: "model_output"
2614
+ tool_http_model_output_object: "model_output must be an object"
2615
+ tool_http_model_output_unknown_keys: "model_output has unsupported keys: {keys}"
2616
+ tool_http_model_output_mode_invalid: "model_output.mode must be one of raw, extract, map"
2617
+ tool_http_model_output_path_required: "model_output.path is required when mode=extract"
2618
+ tool_http_model_output_root_invalid: "model_output.root must be a non-empty string"
2619
+ tool_http_model_output_fields_required: "model_output.fields must be a non-empty object when mode=map"
2620
+ tool_http_model_output_field_name_invalid: "model_output.fields must use non-empty field names"
2621
+ tool_http_model_output_field_path_required: "model_output.fields.{field} must define a path"
2622
+ tool_http_model_output_field_description_invalid: "model_output.fields.{field}.description must be a string"
2623
+ tool_http_model_output_field_invalid: "model_output.fields.{field} must be a path string or object"
2624
+ tool_http_model_output_exclude_nulls_invalid: "model_output.exclude_nulls must be a boolean"
2625
+ tool_http_model_output_max_items_invalid: "model_output.max_items must be a positive integer"
2611
2626
  tool_error_loading_tools: "Error loading tools"
2612
2627
  tool_no_tools_found: "No tools found."
2613
2628
  tool_pack_read_only: "PACK tools are read-only. Use Clone to USER."
@@ -1598,7 +1598,7 @@ ui:
1598
1598
  execution_hint_native: "Las tools nativas se ejecutan en código interno del runtime, por eso aquí no existe un execution_config editable."
1599
1599
  inference_execution_hint: "Este tipo de tool no expone un execution_config editable en la GUI. Usa el tab Output para documentar qué devuelve el runtime."
1600
1600
  native_execution_hint: "Este tipo de tool se ejecuta mediante código interno del runtime. No hay un execution_config editable en este editor."
1601
- raw_hint: "Edita la definición completa de la tool como YAML. Este modo avanzado incluye parameters, execution_config, output_contract y routing_profile."
1601
+ raw_hint: "Edita la definición completa de la tool como YAML. Este modo avanzado incluye parameters, execution_config, execution_config.response.model_output, output_contract y routing_profile."
1602
1602
  raw_footer_hint: "Guardar desde Raw usa este documento como source of truth de la definición de la tool."
1603
1603
 
1604
1604
  # Modal
@@ -1630,6 +1630,8 @@ ui:
1630
1630
  http_config_help_post_example: "Ejemplo POST (Bearer desde secrets_manager)"
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
+ 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."
1633
1635
  modal_output_contract_label: "output_contract inicial"
1634
1636
  modal_output_contract_placeholder: "kind: image\nmime_type: image/png\ntransport: signed_url\nurl_field: image_url"
1635
1637
  routing_profile_title: "Routing Profile"
@@ -2611,6 +2613,19 @@ js_messages:
2611
2613
  tool_http_response_codes_required: "response.success_status_codes debe ser una lista no vacía"
2612
2614
  tool_http_response_codes_invalid: "response.success_status_codes debe contener códigos HTTP válidos (100..599)"
2613
2615
  tool_http_response_bytes_invalid: "response.max_response_bytes debe ser un entero positivo"
2616
+ tool_http_model_output_label: "model_output"
2617
+ tool_http_model_output_object: "model_output debe ser un objeto"
2618
+ tool_http_model_output_unknown_keys: "model_output tiene claves no soportadas: {keys}"
2619
+ tool_http_model_output_mode_invalid: "model_output.mode debe ser uno de raw, extract, map"
2620
+ tool_http_model_output_path_required: "model_output.path es obligatorio cuando mode=extract"
2621
+ tool_http_model_output_root_invalid: "model_output.root debe ser un string no vacío"
2622
+ tool_http_model_output_fields_required: "model_output.fields debe ser un objeto no vacío cuando mode=map"
2623
+ tool_http_model_output_field_name_invalid: "model_output.fields debe usar nombres de campo no vacíos"
2624
+ tool_http_model_output_field_path_required: "model_output.fields.{field} debe definir un path"
2625
+ tool_http_model_output_field_description_invalid: "model_output.fields.{field}.description debe ser un string"
2626
+ tool_http_model_output_field_invalid: "model_output.fields.{field} debe ser un path string u objeto"
2627
+ tool_http_model_output_exclude_nulls_invalid: "model_output.exclude_nulls debe ser booleano"
2628
+ tool_http_model_output_max_items_invalid: "model_output.max_items debe ser un entero positivo"
2614
2629
  tool_error_loading_tools: "Error cargando herramientas"
2615
2630
  tool_no_tools_found: "No se encontraron herramientas."
2616
2631
  tool_pack_read_only: "Las herramientas PACK son de solo lectura. Usa Clonar a USER."
@@ -512,6 +512,8 @@ class HttpToolService:
512
512
  if extract_path:
513
513
  value = self._extract_path(response_data, str(extract_path))
514
514
 
515
+ value = self._apply_model_output(value, response_cfg.get("model_output"))
516
+
515
517
  if mode == "text" and not isinstance(value, str):
516
518
  value = json.dumps(value, ensure_ascii=False, default=str)
517
519
 
@@ -553,3 +555,94 @@ class HttpToolService:
553
555
  )
554
556
 
555
557
  return current
558
+
559
+ def _apply_model_output(self, value, model_output):
560
+ if model_output in (None, {}, ""):
561
+ return value
562
+ if not isinstance(model_output, dict):
563
+ raise IAToolkitException(
564
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
565
+ "execution_config.response.model_output must be a JSON object"
566
+ )
567
+
568
+ mode = str(model_output.get("mode", "raw")).strip().lower()
569
+ if mode == "raw":
570
+ return value
571
+ if mode == "extract":
572
+ path = str(model_output.get("path") or "").strip()
573
+ if not path:
574
+ raise IAToolkitException(
575
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
576
+ "execution_config.response.model_output.path is required when mode is 'extract'"
577
+ )
578
+ return self._extract_path(value, path)
579
+ if mode == "map":
580
+ return self._apply_mapped_model_output(value, model_output)
581
+
582
+ raise IAToolkitException(
583
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
584
+ f"Unsupported execution_config.response.model_output.mode '{mode}'"
585
+ )
586
+
587
+ def _apply_mapped_model_output(self, value, model_output: dict):
588
+ root_path = str(model_output.get("root") or "").strip()
589
+ source = self._extract_path(value, root_path) if root_path else value
590
+ fields = model_output.get("fields") or {}
591
+ if not isinstance(fields, dict) or not fields:
592
+ raise IAToolkitException(
593
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
594
+ "execution_config.response.model_output.fields must be a non-empty object when mode is 'map'"
595
+ )
596
+
597
+ exclude_nulls = model_output.get("exclude_nulls") is True
598
+ max_items = model_output.get("max_items")
599
+
600
+ if isinstance(source, list):
601
+ items = (
602
+ source[:max_items]
603
+ if isinstance(max_items, int) and not isinstance(max_items, bool) and max_items > 0
604
+ else source
605
+ )
606
+ return [
607
+ self._map_model_output_item(item, fields, exclude_nulls)
608
+ for item in items
609
+ ]
610
+ if isinstance(source, dict):
611
+ return self._map_model_output_item(source, fields, exclude_nulls)
612
+
613
+ raise IAToolkitException(
614
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
615
+ f"Cannot map model_output over type '{type(source).__name__}'"
616
+ )
617
+
618
+ def _map_model_output_item(self, source: dict, fields: dict, exclude_nulls: bool) -> dict:
619
+ mapped = {}
620
+ for output_name, field_config in fields.items():
621
+ path = self._resolve_model_output_field_path(output_name, field_config)
622
+ found, field_value = self._try_extract_path(source, path)
623
+ if (not found or field_value is None) and exclude_nulls:
624
+ continue
625
+ mapped[output_name] = field_value if found else None
626
+ return mapped
627
+
628
+ @staticmethod
629
+ def _resolve_model_output_field_path(output_name: str, field_config) -> str:
630
+ if isinstance(field_config, str):
631
+ path = field_config.strip()
632
+ elif isinstance(field_config, dict):
633
+ path = str(field_config.get("path") or "").strip()
634
+ else:
635
+ path = ""
636
+
637
+ if not path:
638
+ raise IAToolkitException(
639
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
640
+ f"execution_config.response.model_output.fields.{output_name} must define a path"
641
+ )
642
+ return path
643
+
644
+ def _try_extract_path(self, data, extract_path: str):
645
+ try:
646
+ return True, self._extract_path(data, extract_path)
647
+ except IAToolkitException:
648
+ return False, None
@@ -35,6 +35,7 @@ class ToolService:
35
35
  HTTP_ALLOWED_BODY_MODES = {"none", "json_map", "full_args"}
36
36
  HTTP_ALLOWED_AUTH_TYPES = {"none", "bearer", "api_key_header", "api_key_query", "basic"}
37
37
  HTTP_ALLOWED_RESPONSE_MODES = {"json", "text", "raw"}
38
+ HTTP_ALLOWED_MODEL_OUTPUT_MODES = {"raw", "extract", "map"}
38
39
 
39
40
  TOOL_EVENT_CREATED = "created"
40
41
  TOOL_EVENT_UPDATED = "updated"
@@ -584,6 +585,103 @@ class ToolService:
584
585
  "execution_config.response.max_response_bytes must be a positive integer"
585
586
  )
586
587
 
588
+ self._validate_http_model_output_config(response_cfg.get("model_output"))
589
+
590
+ def _validate_http_model_output_config(self, model_output):
591
+ if model_output is None:
592
+ return
593
+ if not isinstance(model_output, dict):
594
+ raise IAToolkitException(
595
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
596
+ "execution_config.response.model_output must be a JSON object"
597
+ )
598
+
599
+ allowed_keys = {"mode", "path", "root", "fields", "exclude_nulls", "max_items"}
600
+ unknown_keys = sorted(key for key in model_output.keys() if key not in allowed_keys)
601
+ if unknown_keys:
602
+ raise IAToolkitException(
603
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
604
+ f"execution_config.response.model_output has unsupported keys: {unknown_keys}"
605
+ )
606
+
607
+ mode = str(model_output.get("mode", "raw")).strip().lower()
608
+ if mode not in self.HTTP_ALLOWED_MODEL_OUTPUT_MODES:
609
+ raise IAToolkitException(
610
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
611
+ f"execution_config.response.model_output.mode must be one of {sorted(self.HTTP_ALLOWED_MODEL_OUTPUT_MODES)}"
612
+ )
613
+
614
+ if mode == "extract":
615
+ path = model_output.get("path")
616
+ if not isinstance(path, str) or not path.strip():
617
+ raise IAToolkitException(
618
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
619
+ "execution_config.response.model_output.path is required when mode is 'extract'"
620
+ )
621
+
622
+ if mode == "map":
623
+ root = model_output.get("root")
624
+ if root is not None and (not isinstance(root, str) or not root.strip()):
625
+ raise IAToolkitException(
626
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
627
+ "execution_config.response.model_output.root must be a non-empty string"
628
+ )
629
+
630
+ 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():
638
+ raise IAToolkitException(
639
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
640
+ "execution_config.response.model_output.fields must use non-empty string field names"
641
+ )
642
+ if isinstance(field_config, str):
643
+ if not field_config.strip():
644
+ raise IAToolkitException(
645
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
646
+ f"execution_config.response.model_output.fields.{field_name} must be a non-empty path"
647
+ )
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
+ )
667
+
668
+ exclude_nulls = model_output.get("exclude_nulls")
669
+ if exclude_nulls is not None and not isinstance(exclude_nulls, bool):
670
+ raise IAToolkitException(
671
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
672
+ "execution_config.response.model_output.exclude_nulls must be a boolean"
673
+ )
674
+
675
+ max_items = model_output.get("max_items")
676
+ if (
677
+ max_items is not None
678
+ and (isinstance(max_items, bool) or not isinstance(max_items, int) or max_items <= 0)
679
+ ):
680
+ raise IAToolkitException(
681
+ IAToolkitException.ErrorType.INVALID_PARAMETER,
682
+ "execution_config.response.model_output.max_items must be a positive integer"
683
+ )
684
+
587
685
  @staticmethod
588
686
  def _build_tool_snapshot(tool_obj) -> dict:
589
687
  if tool_obj is None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.21.3
3
+ Version: 2.22.0
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