iatoolkit 2.11.2__tar.gz → 2.12.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 (239) hide show
  1. {iatoolkit-2.11.2/src/iatoolkit.egg-info → iatoolkit-2.12.1}/PKG-INFO +1 -1
  2. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/__init__.py +1 -1
  3. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +32 -1
  4. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/locales/en.yaml +280 -0
  5. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/locales/es.yaml +280 -0
  6. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/llm_query_repo.py +20 -8
  7. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/models.py +8 -1
  8. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/configuration_service.py +12 -3
  9. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/context_builder_service.py +8 -6
  10. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/llm_client_service.py +28 -1
  11. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/prompt_service.py +55 -18
  12. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/query_service.py +201 -8
  13. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/categories_api_view.py +7 -0
  14. {iatoolkit-2.11.2 → iatoolkit-2.12.1/src/iatoolkit.egg-info}/PKG-INFO +1 -1
  15. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/LICENSE +0 -0
  16. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/LICENSE_COMMUNITY.md +0 -0
  17. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/pyproject.toml +0 -0
  18. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/readme.md +0 -0
  19. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/requirements.txt +0 -0
  20. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/setup.cfg +0 -0
  21. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/base_company.py +0 -0
  22. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/cli_commands.py +0 -0
  23. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/__init__.py +0 -0
  24. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/exceptions.py +0 -0
  25. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/interfaces/__init__.py +0 -0
  26. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
  27. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
  28. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
  29. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
  30. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
  31. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
  32. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
  33. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/model_registry.py +0 -0
  34. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/routes.py +0 -0
  35. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/secret_resolver.py +0 -0
  36. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/session_manager.py +0 -0
  37. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/common/util.py +0 -0
  38. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/company_registry.py +0 -0
  39. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/__init__.py +0 -0
  40. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
  41. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
  42. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
  43. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
  44. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
  45. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
  46. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
  47. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
  48. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
  49. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
  50. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
  51. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
  52. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
  53. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
  54. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
  55. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
  56. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
  57. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
  58. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
  59. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
  60. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
  61. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
  62. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
  63. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
  64. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/core.py +0 -0
  65. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/__init__.py +0 -0
  66. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  67. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/call_service.py +0 -0
  68. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  69. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  70. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  71. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  72. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  73. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  74. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  75. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/google_auth_client.py +0 -0
  76. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/google_chat_app.py +0 -0
  77. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
  78. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/inference_handler.py +0 -0
  79. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
  80. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  81. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
  82. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
  83. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
  84. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
  85. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
  86. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/llm_proxy.py +0 -0
  87. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/llm_response.py +0 -0
  88. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  89. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/__init__.py +0 -0
  90. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/api_key_repo.py +0 -0
  91. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/database_manager.py +0 -0
  92. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/document_repo.py +0 -0
  93. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
  94. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
  95. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/mcp_personal_access_token_repo.py +0 -0
  96. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/memory_repo.py +0 -0
  97. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/profile_repo.py +0 -0
  98. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
  99. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
  100. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
  101. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/repositories/vs_repo.py +0 -0
  102. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/__init__.py +0 -0
  103. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/api_key_service.py +0 -0
  104. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/attachment_policy_service.py +0 -0
  105. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/auth_service.py +0 -0
  106. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/benchmark_service.py +0 -0
  107. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/branding_service.py +0 -0
  108. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/company_context_service.py +0 -0
  109. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/dispatcher_service.py +0 -0
  110. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/embedding_service.py +0 -0
  111. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/excel_service.py +0 -0
  112. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/file_processor_service.py +0 -0
  113. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/history_manager_service.py +0 -0
  114. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/http_tool_service.py +0 -0
  115. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/i18n_service.py +0 -0
  116. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/inference_service.py +0 -0
  117. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/jwt_service.py +0 -0
  118. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/knowledge_base_service.py +0 -0
  119. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/language_service.py +0 -0
  120. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/license_service.py +0 -0
  121. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/mail_service.py +0 -0
  122. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/mcp_personal_access_token_service.py +0 -0
  123. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/memory_compiler_service.py +0 -0
  124. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/memory_lint_service.py +0 -0
  125. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
  126. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/memory_service.py +0 -0
  127. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/memory_wiki_service.py +0 -0
  128. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
  129. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
  130. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/__init__.py +0 -0
  131. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/contracts.py +0 -0
  132. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
  133. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
  134. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
  135. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
  136. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
  137. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
  138. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
  139. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
  140. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/parsers/validator.py +0 -0
  141. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/pdf_service.py +0 -0
  142. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/profile_service.py +0 -0
  143. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/prompt_resource_service.py +0 -0
  144. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
  145. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/sql_dataset_service.py +0 -0
  146. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/sql_service.py +0 -0
  147. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/sql_source_service.py +0 -0
  148. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/storage_service.py +0 -0
  149. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/structured_output_service.py +0 -0
  150. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
  151. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/system_tools.py +0 -0
  152. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/telemetry_service.py +0 -0
  153. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/tool_service.py +0 -0
  154. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/user_feedback_service.py +0 -0
  155. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/user_session_context_service.py +0 -0
  156. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/visual_kb_service.py +0 -0
  157. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/visual_tool_service.py +0 -0
  158. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/warmup_service.py +0 -0
  159. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/web_search/__init__.py +0 -0
  160. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
  161. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
  162. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
  163. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/services/web_search_service.py +0 -0
  164. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  165. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  166. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  167. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  168. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  169. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  170. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  171. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  172. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_main.js +0 -0
  173. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
  174. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
  175. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  176. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  177. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  178. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  179. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  180. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/styles/chat_public.css +0 -0
  181. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/styles/documents.css +0 -0
  182. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/styles/landing_page.css +0 -0
  183. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/styles/llm_output.css +0 -0
  184. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/static/styles/onboarding.css +0 -0
  185. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/system_prompts/__init__.py +0 -0
  186. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/_company_header.html +0 -0
  187. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/_login_widget.html +0 -0
  188. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/account.html +0 -0
  189. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/base.html +0 -0
  190. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/change_password.html +0 -0
  191. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/chat.html +0 -0
  192. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
  193. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/chat_modals.html +0 -0
  194. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/error.html +0 -0
  195. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/forgot_password.html +0 -0
  196. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/home_hosted_default.html +0 -0
  197. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
  198. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  199. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/pdf/base.html +0 -0
  200. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/pdf/letter.html +0 -0
  201. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/pdf/report.html +0 -0
  202. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/pdf/simple.html +0 -0
  203. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/templates/signup.html +0 -0
  204. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/__init__.py +0 -0
  205. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/account_view.py +0 -0
  206. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/api_key_api_view.py +0 -0
  207. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/base_login_view.py +0 -0
  208. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/change_password_view.py +0 -0
  209. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
  210. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/chat_view.py +0 -0
  211. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/configuration_api_view.py +0 -0
  212. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/connectors_api_view.py +0 -0
  213. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/embedding_api_view.py +0 -0
  214. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/forgot_password_view.py +0 -0
  215. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/help_content_api_view.py +0 -0
  216. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/history_api_view.py +0 -0
  217. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/home_view.py +0 -0
  218. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/init_context_api_view.py +0 -0
  219. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  220. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/load_document_api_view.py +0 -0
  221. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/login_view.py +0 -0
  222. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/logout_api_view.py +0 -0
  223. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/memory_api_view.py +0 -0
  224. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/profile_api_view.py +0 -0
  225. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/prompt_api_view.py +0 -0
  226. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
  227. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
  228. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/rag_api_view.py +0 -0
  229. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/root_redirect_view.py +0 -0
  230. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/signup_view.py +0 -0
  231. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/static_page_view.py +0 -0
  232. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/tool_api_view.py +0 -0
  233. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  234. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/users_api_view.py +0 -0
  235. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit/views/verify_user_view.py +0 -0
  236. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
  237. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  238. {iatoolkit-2.11.2 → iatoolkit-2.12.1}/src/iatoolkit.egg-info/requires.txt +0 -0
  239. {iatoolkit-2.11.2 → iatoolkit-2.12.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.11.2
3
+ Version: 2.12.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.11.2"
6
+ __version__ = "2.12.1"
7
7
 
8
8
  # Expose main classes and functions at the top level of the package
9
9
 
@@ -129,7 +129,7 @@ class OpenAICompatibleChatAdapter:
129
129
  self.provider_label,
130
130
  len(messages),
131
131
  )
132
- response = self.client.chat.completions.create(**call_kwargs)
132
+ response = self._create_chat_completion(call_kwargs)
133
133
 
134
134
  return self._map_chat_completion_response(response)
135
135
 
@@ -152,6 +152,37 @@ class OpenAICompatibleChatAdapter:
152
152
  _ = call_kwargs
153
153
  _ = kwargs
154
154
 
155
+ def _create_chat_completion(self, call_kwargs: Dict[str, Any]) -> Any:
156
+ try:
157
+ return self.client.chat.completions.create(**call_kwargs)
158
+ except Exception as ex:
159
+ retry_call_kwargs = self._build_retry_without_tool_choice_kwargs(call_kwargs, ex)
160
+ if retry_call_kwargs is None:
161
+ raise
162
+
163
+ logging.warning(
164
+ "[%sAdapter] Provider rejected tool_choice for model '%s'; retrying without tool_choice.",
165
+ self.provider_label,
166
+ call_kwargs.get("model"),
167
+ )
168
+ return self.client.chat.completions.create(**retry_call_kwargs)
169
+
170
+ @staticmethod
171
+ def _build_retry_without_tool_choice_kwargs(
172
+ call_kwargs: Dict[str, Any],
173
+ ex: Exception,
174
+ ) -> Optional[Dict[str, Any]]:
175
+ if "tool_choice" not in call_kwargs:
176
+ return None
177
+
178
+ error_message = str(ex or "").lower()
179
+ if "does not support this tool_choice" not in error_message:
180
+ return None
181
+
182
+ retry_call_kwargs = dict(call_kwargs)
183
+ retry_call_kwargs.pop("tool_choice", None)
184
+ return retry_call_kwargs
185
+
155
186
  def _apply_reasoning_request_options(
156
187
  self,
157
188
  call_kwargs: Dict[str, Any],
@@ -82,6 +82,172 @@ ui:
82
82
  telemetry_disabled: "Disabled"
83
83
  telemetry_unknown_provider: "unknown provider"
84
84
 
85
+ communications:
86
+ title: "Communications"
87
+ new_conversation: "New conversation"
88
+ new_short: "New"
89
+ tab_inbox: "Inbox"
90
+ tab_contacts: "Contacts"
91
+ tab_identity_links: "Identity Links"
92
+ search_placeholder: "Search phone or text"
93
+ direction_filter_label: "Message direction"
94
+ status_filter_label: "Message status"
95
+ filter_all_directions: "All directions"
96
+ direction_inbound: "Inbound"
97
+ direction_outbound: "Outbound"
98
+ filter_all_statuses: "All statuses"
99
+ loading_conversations: "Loading conversations..."
100
+ select_conversation: "Select a conversation"
101
+ select_conversation_subtitle: "Choose a WhatsApp thread from the left rail."
102
+ customer: "Customer"
103
+ agent: "Agent"
104
+ transcript: "Transcript"
105
+ diagnostics: "Diagnostics"
106
+ prompt: "Prompt"
107
+ task_status_label: "Task status"
108
+ delivery_status_label: "Delivery status"
109
+ last_update: "Last update"
110
+ last_error: "Last error"
111
+ workspace_placeholder: "Review the thread and the agent response without leaving Communications."
112
+ modal_title: "Start WhatsApp conversation"
113
+ modal_subtitle: "Send a first outbound turn and bind it to a prompt."
114
+ phone_number: "Phone number"
115
+ loading_prompts: "Loading prompts..."
116
+ initial_message: "Initial message / instruction"
117
+ initial_message_placeholder: "Example: introduce yourself, explain the offer and ask whether the customer wants more details."
118
+ initial_message_help: "This text is sent directly as the first outbound message and binds the selected prompt to the thread."
119
+ start_conversation: "Start conversation"
120
+ no_prompts_available: "No prompts available"
121
+ select_prompt: "Select a prompt"
122
+ phone_required: "You need to enter a phone number."
123
+ prompt_required: "You need to select a prompt."
124
+ initial_message_required: "You need to enter the initial message."
125
+ conversation_started: "Conversation started."
126
+ conversation_start_error: "Could not start the conversation."
127
+ load_activity_error: "Failed to load WhatsApp activity."
128
+ inbox_load_error: "Unable to load inbox."
129
+ no_conversations_filtered: "No conversations match the current filters."
130
+ no_text_yet: "No text yet."
131
+ loading_thread: "Loading thread..."
132
+ thread_load_error: "Could not load the thread."
133
+ conversation: "Conversation"
134
+ conversation_load_error: "The selected conversation could not be loaded."
135
+ no_inbound_message_yet: "No inbound message yet."
136
+ no_agent_response_yet: "No agent response yet."
137
+ no_thread_messages: "No persisted messages found for this thread."
138
+ agent_named: "Agent {name}"
139
+ agent_named_label: "Agent: {name}"
140
+ linked_contact: "Linked contact"
141
+ linked_contact_named: "Linked to {name}"
142
+ linked_short: "Linked"
143
+ unlinked: "Unlinked"
144
+ link_identity: "Link identity"
145
+ link_contact_action_short: "Link to contact"
146
+ change_linked_contact: "Change linked contact"
147
+ whatsapp_conversation: "WhatsApp conversation"
148
+ task_executed: "Task executed"
149
+ link_contact_modal_title: "Link to existing contact"
150
+ link_contact_modal_subtitle: "Search an existing contact and link the current WhatsApp conversation to it."
151
+ contact_picker_identity_label: "WhatsApp identity"
152
+ contact_picker_current_label: "Current contact"
153
+ contact_picker_search_placeholder: "Search contact, phone or email"
154
+ select_contact_action: "Link this contact"
155
+ current_contact_badge: "Current"
156
+ contacts_title: "Contacts"
157
+ contacts_subtitle: "Manage external business contacts and their WhatsApp links."
158
+ add_contact: "Add contact"
159
+ contacts_search_placeholder: "Search contact, phone or email"
160
+ contacts_status_filter: "Contact status"
161
+ contacts_filter_all_statuses: "All statuses"
162
+ loading_contacts: "Loading contacts..."
163
+ contacts_load_error: "Could not load contacts."
164
+ contacts_empty: "No contacts found."
165
+ contact_modal_title: "Create contact"
166
+ contact_modal_title_edit: "Edit contact"
167
+ contact_modal_subtitle: "Store a business contact before or after linking a WhatsApp identity."
168
+ contact_modal_subtitle_edit: "Update the business contact details."
169
+ contact_details_section: "Contact details"
170
+ contact_metadata_section: "Metadata"
171
+ contact_metadata_json_label: "Metadata JSON"
172
+ contact_metadata_json_help: "Visible when editing an existing contact. Use valid JSON only."
173
+ contact_metadata_invalid: "Contact metadata must be valid JSON."
174
+ save_contact: "Save contact"
175
+ contact_saved: "Contact saved."
176
+ contact_save_error: "Could not save the contact."
177
+ contacts_deleted: "Selected contacts deleted."
178
+ contact_delete_error: "Could not delete the selected contacts."
179
+ delete_selected_contacts_confirm: "Delete the selected contacts? This action cannot be undone."
180
+ identity_links_title: "Identity Links"
181
+ identity_links_subtitle: "Map WhatsApp identities to external contacts."
182
+ add_identity_link: "Add link"
183
+ identity_links_search_placeholder: "Search WhatsApp or contact"
184
+ identity_links_status_filter: "Identity link status"
185
+ identity_links_filter_all_statuses: "All statuses"
186
+ loading_identity_links: "Loading identity links..."
187
+ identity_links_load_error: "Could not load identity links."
188
+ identity_links_empty: "No identity links found."
189
+ identity_link_modal_title: "Link WhatsApp identity"
190
+ identity_link_modal_title_edit: "Edit linked contact"
191
+ identity_link_modal_subtitle: "Create or update the external contact associated with this WhatsApp identity."
192
+ identity_link_modal_subtitle_edit: "Update the external contact linked to this WhatsApp identity."
193
+ identity_link_contact_subtitle: "Update the channel type and identity for this contact."
194
+ channel: "Channel"
195
+ channel_user_identifier: "Channel user identifier"
196
+ contact_full_name: "Contact name"
197
+ contact_full_name_placeholder: "Example: Juan Perez"
198
+ contact_email: "Email"
199
+ contact_government_id: "Government ID / RUT"
200
+ contact_government_id_chile: "RUT"
201
+ contact_external_key: "External contact key"
202
+ whatsapp_link_label: "WhatsApp link"
203
+ links_label: "Links"
204
+ identity_link_status_label: "Link status"
205
+ identity_link_source_label: "Source"
206
+ save_identity_link: "Save link"
207
+ revoke_identity_link: "Revoke"
208
+ link_whatsapp: "Link WhatsApp"
209
+ edit_identity_link: "Edit WhatsApp link"
210
+ identity_link_saved: "Identity link saved."
211
+ identity_link_save_error: "Could not save the identity link."
212
+ identity_link_revoke_confirm: "Do you want to revoke this identity link?"
213
+ identity_link_revoked: "Identity link revoked."
214
+ identity_link_revoke_error: "Could not revoke the identity link."
215
+ identity_link_existing_contact_required: "Link the WhatsApp identity from an existing contact."
216
+ contact_required: "You need to enter at least one contact field."
217
+ channel_identity_required: "You need to enter a WhatsApp identity or phone number."
218
+ select_conversation_first: "Select a conversation first."
219
+ actions: "Actions"
220
+ contact_status:
221
+ active: "Active"
222
+ archived: "Archived"
223
+ state:
224
+ new: "New"
225
+ processing: "Processing"
226
+ answered: "Answered"
227
+ delivered: "Delivered"
228
+ read: "Read"
229
+ failed: "Failed"
230
+ active: "Active"
231
+ status:
232
+ received: "Received"
233
+ queued: "Queued"
234
+ sent: "Sent"
235
+ delivered: "Delivered"
236
+ read: "Read"
237
+ failed: "Failed"
238
+ ignored: "Ignored"
239
+ task_status:
240
+ pending: "Pending"
241
+ running: "Running"
242
+ executed: "Executed"
243
+ failed: "Failed"
244
+ stopped: "Stopped"
245
+ waiting_review: "In review"
246
+ identity_link_status:
247
+ active: "Active"
248
+ pending_review: "Pending review"
249
+ revoked: "Revoked"
250
+
85
251
  login_widget:
86
252
  title: "Sign In"
87
253
  welcome_message: "Enter your credentials or register to access this platform."
@@ -209,6 +375,118 @@ ui:
209
375
  delete_confirm_button: "Delete"
210
376
  run_lint: "Review Memory"
211
377
 
378
+ campaigns:
379
+ title: "Campaigns"
380
+ loading: "Loading campaigns..."
381
+ load_error: "Could not load campaigns."
382
+ empty: "There are no campaigns yet."
383
+ untitled: "Untitled campaign"
384
+ search_placeholder: "Search campaigns"
385
+ new_campaign: "New campaign"
386
+ create_campaign: "Create campaign"
387
+ create_modal_title: "Create campaign"
388
+ create_modal_subtitle: "Create a campaign, then define its agent profile, template, and audience."
389
+ created: "Campaign created."
390
+ create_error: "Could not create the campaign."
391
+ save_error: "Could not save the campaign."
392
+ saved: "Campaign saved."
393
+ name_label: "Name"
394
+ name_placeholder: "Collections May 2026"
395
+ name_required: "Campaign name is required."
396
+ agent_profile_label: "Agent profile"
397
+ loading_agent_profiles: "Loading agent profiles..."
398
+ select_agent_profile: "Select an agent profile"
399
+ no_agent_profile: "No agent profile"
400
+ channel_label: "Channel"
401
+ status_label: "Status"
402
+ source_label: "Source"
403
+ no_source: "No file uploaded yet"
404
+ tab_template: "Template"
405
+ tab_settings: "Settings"
406
+ tab_audience: "Audience"
407
+ tab_executions: "Executions"
408
+ template_label: "Initial message"
409
+ template_help: "This template is rendered per contact when the campaign is activated. You can use variables such as {{ full_name }}, {{ company_name }}, or {{ source.product }}."
410
+ template_placeholder: "You can use variables like {{ full_name }}, {{ email }}, {{ phone_number }}, {{ government_id }}, {{ external_contact_key }}, {{ company_name }}, {{ company_short_name }}, {{ metadata.* }}, and {{ source.* }}"
411
+ audience_title: "Audience"
412
+ audience_help: "Upload a CSV, map the core columns, and turn those rows into contacts ready to activate over WhatsApp."
413
+ audience_empty: "No audience has been imported yet."
414
+ audience_load_error: "Could not load the campaign audience."
415
+ audience_table_title: "Recipients"
416
+ audience_col_contact: "Contact"
417
+ audience_col_rut: "ID"
418
+ audience_col_email: "Email"
419
+ audience_col_status: "Status"
420
+ audience_col_delivery: "Activation"
421
+ audience_col_error: "Error"
422
+ audience_col_actions: "Actions"
423
+ audience_total_label: "{count} contacts"
424
+ summary_total: "Total"
425
+ summary_ready: "Ready"
426
+ summary_pending: "Pending"
427
+ summary_activated: "Activated"
428
+ summary_failed: "Failed"
429
+ summary_skipped: "Skipped"
430
+ executions_title: "Execution status"
431
+ executions_empty: "This campaign has not been launched yet."
432
+ executions_last_launch: "Last launch: {date}"
433
+ select_campaign: "Select a campaign"
434
+ workspace_placeholder: "Create or select a campaign to edit its template, settings, and audience."
435
+ import_csv: "Import CSV"
436
+ csv_required: "Choose a CSV file first."
437
+ import_modal_title: "Import audience from CSV"
438
+ import_modal_subtitle: "Preview the file, map columns, and replace the campaign's current audience."
439
+ csv_file_label: "CSV file"
440
+ preview_csv: "Preview CSV"
441
+ preview_title: "Preview"
442
+ preview_empty: "The preview will appear here after you load a CSV."
443
+ preview_error: "Could not preview the CSV."
444
+ import_csv_confirm: "Import audience"
445
+ import_error: "Could not import the audience from CSV."
446
+ import_success: "Audience imported."
447
+ mapping_full_name: "Name column"
448
+ mapping_phone_number: "Phone column"
449
+ mapping_email: "Email column"
450
+ mapping_government_id: "Government ID column"
451
+ mapping_external_contact_key: "External key column"
452
+ mapping_ignore: "Ignore"
453
+ launch_campaign: "Launch campaign"
454
+ launch_success: "Campaign launched."
455
+ launch_error: "Could not launch the campaign."
456
+ select_campaign_first: "Select a campaign first."
457
+ add_to_campaign: "Add to campaign"
458
+ add_to_campaign_help: "Add the selected contacts to an existing campaign."
459
+ add_to_campaign_success: "Contacts added to the campaign."
460
+ add_to_campaign_error: "Could not add the selected contacts."
461
+ remove_from_audience: "Remove from audience"
462
+ remove_from_audience_success: "Contact removed from audience."
463
+ remove_from_audience_error: "Could not remove the contact from the audience."
464
+ create_campaign_from_contacts: "Create campaign"
465
+ create_campaign_from_contacts_help: "Create a new campaign using the selected contacts as the initial audience."
466
+ contacts_selected_count: "{count} selected"
467
+ select_contacts_first: "Select at least one contact first."
468
+ no_campaigns_available: "Create a campaign first."
469
+ delete_campaign_confirm: "Delete this campaign? This action cannot be undone."
470
+ delete_campaign_success: "Campaign deleted."
471
+ delete_campaign_error: "Could not delete the campaign."
472
+ row_label: "Row {row}"
473
+ status:
474
+ draft: "Draft"
475
+ ready: "Ready"
476
+ running: "Running"
477
+ completed: "Completed"
478
+ failed: "Failed"
479
+ paused: "Paused"
480
+ audience_status:
481
+ ready: "Ready"
482
+ invalid: "Invalid"
483
+ skipped: "Skipped"
484
+ activation_status:
485
+ pending: "Pending"
486
+ activated: "Activated"
487
+ failed: "Failed"
488
+ skipped: "Skipped"
489
+
212
490
  admin:
213
491
  workspace: "Workspace"
214
492
  configuration: "Configuration"
@@ -1065,6 +1343,8 @@ ui:
1065
1343
  desc_placeholder: "Describe this prompt..."
1066
1344
  vars_label: "Input Variables"
1067
1345
  execution_mode_label: "Execution Mode"
1346
+ agent_profile_label: "Agent profile"
1347
+ agent_profile_help: "Mark this agent to govern persistent conversations such as WhatsApp, campaigns, or collections."
1068
1348
  active_label: "Active"
1069
1349
  output_type_label: "Output Type"
1070
1350
  output_type_free_text: "Free text"
@@ -83,6 +83,172 @@ ui:
83
83
  telemetry_disabled: "Deshabilitada"
84
84
  telemetry_unknown_provider: "provider desconocido"
85
85
 
86
+ communications:
87
+ title: "Communications"
88
+ new_conversation: "Nueva conversación"
89
+ new_short: "Nueva"
90
+ tab_inbox: "Inbox"
91
+ tab_contacts: "Contacts"
92
+ tab_identity_links: "Identity Links"
93
+ search_placeholder: "Buscar teléfono o texto"
94
+ direction_filter_label: "Dirección del mensaje"
95
+ status_filter_label: "Estado del mensaje"
96
+ filter_all_directions: "Todas las direcciones"
97
+ direction_inbound: "Entrante"
98
+ direction_outbound: "Saliente"
99
+ filter_all_statuses: "Todos los estados"
100
+ loading_conversations: "Cargando conversaciones..."
101
+ select_conversation: "Selecciona una conversación"
102
+ select_conversation_subtitle: "Elige un hilo de WhatsApp desde la lista lateral."
103
+ customer: "Cliente"
104
+ agent: "Agente"
105
+ transcript: "Transcript"
106
+ diagnostics: "Diagnóstico"
107
+ prompt: "Prompt"
108
+ task_status_label: "Estado de tarea"
109
+ delivery_status_label: "Estado de envío"
110
+ last_update: "Última actualización"
111
+ last_error: "Último error"
112
+ workspace_placeholder: "Revisa el hilo y la respuesta del agente sin salir de Communications."
113
+ modal_title: "Iniciar conversación por WhatsApp"
114
+ modal_subtitle: "Envía un primer turno saliente y asígnalo a un prompt."
115
+ phone_number: "Número de teléfono"
116
+ loading_prompts: "Cargando prompts..."
117
+ initial_message: "Mensaje inicial / instrucción"
118
+ initial_message_placeholder: "Ejemplo: preséntate, explica la oferta y pregunta si el cliente quiere más detalles."
119
+ initial_message_help: "Este texto se envía directo como primer mensaje saliente y deja vinculado el prompt seleccionado al hilo."
120
+ start_conversation: "Iniciar conversación"
121
+ no_prompts_available: "No hay prompts disponibles"
122
+ select_prompt: "Selecciona un prompt"
123
+ phone_required: "Debes ingresar un número."
124
+ prompt_required: "Debes seleccionar un prompt."
125
+ initial_message_required: "Debes ingresar el mensaje inicial."
126
+ conversation_started: "Conversación iniciada."
127
+ conversation_start_error: "No se pudo iniciar la conversación."
128
+ load_activity_error: "No se pudo cargar la actividad de WhatsApp."
129
+ inbox_load_error: "No se pudo cargar la bandeja."
130
+ no_conversations_filtered: "No hay conversaciones para los filtros actuales."
131
+ no_text_yet: "Sin texto todavía."
132
+ loading_thread: "Cargando hilo..."
133
+ thread_load_error: "No se pudo cargar el hilo."
134
+ conversation: "Conversación"
135
+ conversation_load_error: "No se pudo cargar la conversación seleccionada."
136
+ no_inbound_message_yet: "Sin mensaje entrante todavía."
137
+ no_agent_response_yet: "Todavía no hay respuesta del agente."
138
+ no_thread_messages: "No hay mensajes persistidos para este hilo."
139
+ agent_named: "Agente {name}"
140
+ agent_named_label: "Agente: {name}"
141
+ linked_contact: "Contacto vinculado"
142
+ linked_contact_named: "Vinculado a {name}"
143
+ linked_short: "Vinculado"
144
+ unlinked: "Sin vínculo"
145
+ link_identity: "Vincular identidad"
146
+ link_contact_action_short: "Vincular contacto"
147
+ change_linked_contact: "Cambiar contacto vinculado"
148
+ whatsapp_conversation: "Conversación de WhatsApp"
149
+ task_executed: "Tarea ejecutada"
150
+ link_contact_modal_title: "Vincular a contacto existente"
151
+ link_contact_modal_subtitle: "Busca un contacto existente y vincula la conversación actual de WhatsApp a ese registro."
152
+ contact_picker_identity_label: "Identidad de WhatsApp"
153
+ contact_picker_current_label: "Contacto actual"
154
+ contact_picker_search_placeholder: "Buscar contacto, teléfono o email"
155
+ select_contact_action: "Vincular este contacto"
156
+ current_contact_badge: "Actual"
157
+ contacts_title: "Contacts"
158
+ contacts_subtitle: "Gestiona contactos externos del negocio y sus vínculos de WhatsApp."
159
+ add_contact: "Agregar contacto"
160
+ contacts_search_placeholder: "Buscar contacto, teléfono o email"
161
+ contacts_status_filter: "Estado del contacto"
162
+ contacts_filter_all_statuses: "Todos los estados"
163
+ loading_contacts: "Cargando contactos..."
164
+ contacts_load_error: "No se pudieron cargar los contactos."
165
+ contacts_empty: "No hay contactos."
166
+ contact_modal_title: "Crear contacto"
167
+ contact_modal_title_edit: "Editar contacto"
168
+ contact_modal_subtitle: "Guarda un contacto de negocio antes o después de vincular una identidad de WhatsApp."
169
+ contact_modal_subtitle_edit: "Actualiza los datos del contacto de negocio."
170
+ contact_details_section: "Datos del contacto"
171
+ contact_metadata_section: "Metadata"
172
+ contact_metadata_json_label: "Metadata JSON"
173
+ contact_metadata_json_help: "Visible al editar un contacto existente. Usa solo JSON válido."
174
+ contact_metadata_invalid: "La metadata del contacto debe ser un JSON válido."
175
+ save_contact: "Guardar contacto"
176
+ contact_saved: "Contacto guardado."
177
+ contact_save_error: "No se pudo guardar el contacto."
178
+ contacts_deleted: "Contactos eliminados."
179
+ contact_delete_error: "No se pudieron eliminar los contactos seleccionados."
180
+ delete_selected_contacts_confirm: "¿Quieres eliminar los contactos seleccionados? Esta acción no se puede deshacer."
181
+ identity_links_title: "Identity Links"
182
+ identity_links_subtitle: "Mapea identidades de WhatsApp a contactos externos."
183
+ add_identity_link: "Agregar vínculo"
184
+ identity_links_search_placeholder: "Buscar WhatsApp o contacto"
185
+ identity_links_status_filter: "Estado del vínculo"
186
+ identity_links_filter_all_statuses: "Todos los estados"
187
+ loading_identity_links: "Cargando vínculos..."
188
+ identity_links_load_error: "No se pudieron cargar los vínculos."
189
+ identity_links_empty: "No hay vínculos de identidad."
190
+ identity_link_modal_title: "Vincular identidad de WhatsApp"
191
+ identity_link_modal_title_edit: "Editar contacto vinculado"
192
+ identity_link_modal_subtitle: "Crea o actualiza el contacto externo asociado a esta identidad de WhatsApp."
193
+ identity_link_modal_subtitle_edit: "Actualiza el contacto externo vinculado a esta identidad de WhatsApp."
194
+ identity_link_contact_subtitle: "Actualiza el canal y la identidad para este contacto."
195
+ channel: "Canal"
196
+ channel_user_identifier: "Identidad del canal"
197
+ contact_full_name: "Nombre del contacto"
198
+ contact_full_name_placeholder: "Ejemplo: Juan Perez"
199
+ contact_email: "Email"
200
+ contact_government_id: "RUT / documento"
201
+ contact_government_id_chile: "RUT"
202
+ contact_external_key: "Clave externa del contacto"
203
+ whatsapp_link_label: "Vínculo WhatsApp"
204
+ links_label: "Vínculos"
205
+ identity_link_status_label: "Estado del vínculo"
206
+ identity_link_source_label: "Origen"
207
+ save_identity_link: "Guardar vínculo"
208
+ revoke_identity_link: "Revocar"
209
+ link_whatsapp: "Vincular WhatsApp"
210
+ edit_identity_link: "Editar vínculo de WhatsApp"
211
+ identity_link_saved: "Vínculo guardado."
212
+ identity_link_save_error: "No se pudo guardar el vínculo."
213
+ identity_link_revoke_confirm: "¿Quieres revocar este vínculo de identidad?"
214
+ identity_link_revoked: "Vínculo revocado."
215
+ identity_link_revoke_error: "No se pudo revocar el vínculo."
216
+ identity_link_existing_contact_required: "La identidad de WhatsApp solo se puede vincular desde un contacto existente."
217
+ contact_required: "Debes ingresar al menos un dato del contacto."
218
+ channel_identity_required: "Debes ingresar una identidad de WhatsApp o un número."
219
+ select_conversation_first: "Primero selecciona una conversación."
220
+ actions: "Acciones"
221
+ contact_status:
222
+ active: "Activo"
223
+ archived: "Archivado"
224
+ state:
225
+ new: "Nuevo"
226
+ processing: "Procesando"
227
+ answered: "Respondido"
228
+ delivered: "Entregado"
229
+ read: "Leído"
230
+ failed: "Falló"
231
+ active: "Activo"
232
+ status:
233
+ received: "Recibido"
234
+ queued: "En cola"
235
+ sent: "Enviado"
236
+ delivered: "Entregado"
237
+ read: "Leído"
238
+ failed: "Fallido"
239
+ ignored: "Ignorado"
240
+ task_status:
241
+ pending: "Pendiente"
242
+ running: "Corriendo"
243
+ executed: "Ejecutada"
244
+ failed: "Fallida"
245
+ stopped: "Detenida"
246
+ waiting_review: "En revisión"
247
+ identity_link_status:
248
+ active: "Activo"
249
+ pending_review: "Pendiente de revisión"
250
+ revoked: "Revocado"
251
+
86
252
 
87
253
  login_widget:
88
254
  title: "Iniciar Sesión"
@@ -210,6 +376,118 @@ ui:
210
376
  delete_confirm_button: "Eliminar"
211
377
  run_lint: "Revisar Memoria"
212
378
 
379
+ campaigns:
380
+ title: "Campañas"
381
+ loading: "Cargando campañas..."
382
+ load_error: "No se pudieron cargar las campañas."
383
+ empty: "Todavía no hay campañas."
384
+ untitled: "Campaña sin nombre"
385
+ search_placeholder: "Buscar campañas"
386
+ new_campaign: "Nueva campaña"
387
+ create_campaign: "Crear campaña"
388
+ create_modal_title: "Crear campaña"
389
+ create_modal_subtitle: "Crea una campaña y luego define su agent profile, template y audiencia."
390
+ created: "Campaña creada."
391
+ create_error: "No se pudo crear la campaña."
392
+ save_error: "No se pudo guardar la campaña."
393
+ saved: "Campaña guardada."
394
+ name_label: "Nombre"
395
+ name_placeholder: "Cobranza mayo 2026"
396
+ name_required: "Debes ingresar un nombre de campaña."
397
+ agent_profile_label: "Agent profile"
398
+ loading_agent_profiles: "Cargando agent profiles..."
399
+ select_agent_profile: "Selecciona un agent profile"
400
+ no_agent_profile: "Sin agent profile"
401
+ channel_label: "Canal"
402
+ status_label: "Estado"
403
+ source_label: "Fuente"
404
+ no_source: "Sin archivo cargado todavía"
405
+ tab_template: "Template"
406
+ tab_settings: "Settings"
407
+ tab_audience: "Audience"
408
+ tab_executions: "Ejecuciones"
409
+ template_label: "Mensaje inicial"
410
+ template_help: "Este template se renderiza por contacto al activar la campaña. Puedes usar variables como {{ full_name }}, {{ company_name }} o {{ source.producto }}."
411
+ template_placeholder: "Puedes usar variables como {{ full_name }}, {{ email }}, {{ phone_number }}, {{ government_id }}, {{ external_contact_key }}, {{ company_name }}, {{ company_short_name }}, {{ metadata.* }} y {{ source.* }}"
412
+ audience_title: "Audiencia"
413
+ audience_help: "Carga un CSV, mapea columnas básicas y convierte las filas en contactos listos para activar por WhatsApp."
414
+ audience_empty: "Todavía no hay audiencia cargada."
415
+ audience_load_error: "No se pudo cargar la audiencia de la campaña."
416
+ audience_table_title: "Destinatarios"
417
+ audience_col_contact: "Contacto"
418
+ audience_col_rut: "RUT"
419
+ audience_col_email: "Email"
420
+ audience_col_status: "Estado"
421
+ audience_col_delivery: "Activación"
422
+ audience_col_error: "Error"
423
+ audience_col_actions: "Acciones"
424
+ audience_total_label: "{count} contactos"
425
+ summary_total: "Total"
426
+ summary_ready: "Listos"
427
+ summary_pending: "Pendientes"
428
+ summary_activated: "Activados"
429
+ summary_failed: "Fallidos"
430
+ summary_skipped: "Omitidos"
431
+ executions_title: "Estado de ejecución"
432
+ executions_empty: "Esta campaña todavía no se ha lanzado."
433
+ executions_last_launch: "Último lanzamiento: {date}"
434
+ select_campaign: "Selecciona una campaña"
435
+ workspace_placeholder: "Crea o selecciona una campaña para editar su template, settings y audiencia."
436
+ import_csv: "Importar CSV"
437
+ csv_required: "Primero debes elegir un archivo CSV."
438
+ import_modal_title: "Importar audiencia desde CSV"
439
+ import_modal_subtitle: "Previsualiza el archivo, mapea columnas y reemplaza la audiencia actual de la campaña."
440
+ csv_file_label: "Archivo CSV"
441
+ preview_csv: "Previsualizar CSV"
442
+ preview_title: "Preview"
443
+ preview_empty: "La preview aparecerá aquí después de cargar un CSV."
444
+ preview_error: "No se pudo previsualizar el CSV."
445
+ import_csv_confirm: "Importar audiencia"
446
+ import_error: "No se pudo importar la audiencia desde CSV."
447
+ import_success: "Audiencia importada."
448
+ mapping_full_name: "Columna nombre"
449
+ mapping_phone_number: "Columna teléfono"
450
+ mapping_email: "Columna email"
451
+ mapping_government_id: "Columna RUT / documento"
452
+ mapping_external_contact_key: "Columna clave externa"
453
+ mapping_ignore: "Ignorar"
454
+ launch_campaign: "Lanzar campaña"
455
+ launch_success: "Campaña lanzada."
456
+ launch_error: "No se pudo lanzar la campaña."
457
+ select_campaign_first: "Primero selecciona una campaña."
458
+ add_to_campaign: "Agregar a campaña"
459
+ add_to_campaign_help: "Agrega los contactos seleccionados a una campaña existente."
460
+ add_to_campaign_success: "Contactos agregados a la campaña."
461
+ add_to_campaign_error: "No se pudieron agregar los contactos seleccionados."
462
+ remove_from_audience: "Quitar de la audiencia"
463
+ remove_from_audience_success: "Contacto quitado de la audiencia."
464
+ remove_from_audience_error: "No se pudo quitar el contacto de la audiencia."
465
+ create_campaign_from_contacts: "Crear campaña"
466
+ create_campaign_from_contacts_help: "Crea una nueva campaña usando los contactos seleccionados como audiencia inicial."
467
+ contacts_selected_count: "{count} seleccionados"
468
+ select_contacts_first: "Primero selecciona al menos un contacto."
469
+ no_campaigns_available: "Primero crea una campaña."
470
+ delete_campaign_confirm: "¿Quieres eliminar esta campaña? Esta acción no se puede deshacer."
471
+ delete_campaign_success: "Campaña eliminada."
472
+ delete_campaign_error: "No se pudo eliminar la campaña."
473
+ row_label: "Fila {row}"
474
+ status:
475
+ draft: "Borrador"
476
+ ready: "Lista"
477
+ running: "En ejecución"
478
+ completed: "Completada"
479
+ failed: "Fallida"
480
+ paused: "Pausada"
481
+ audience_status:
482
+ ready: "Lista"
483
+ invalid: "Inválida"
484
+ skipped: "Omitida"
485
+ activation_status:
486
+ pending: "Pendiente"
487
+ activated: "Activada"
488
+ failed: "Fallida"
489
+ skipped: "Omitida"
490
+
213
491
  admin:
214
492
  workspace: "Recursos"
215
493
  configuration: "Configuración"
@@ -1068,6 +1346,8 @@ ui:
1068
1346
  desc_placeholder: "Describe este prompt..."
1069
1347
  vars_label: "Variables de Entrada"
1070
1348
  execution_mode_label: "Modo de ejecución"
1349
+ agent_profile_label: "Agent profile"
1350
+ agent_profile_help: "Marca este agente para gobernar conversaciones persistentes como WhatsApp, campañas o cobranza."
1071
1351
  active_label: "Activo"
1072
1352
  output_type_label: "Tipo de Salida"
1073
1353
  output_type_free_text: "Texto libre"