iatoolkit 2.75.2__tar.gz → 2.75.3__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 (282) hide show
  1. {iatoolkit-2.75.2/src/iatoolkit.egg-info → iatoolkit-2.75.3}/PKG-INFO +1 -1
  2. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/__init__.py +1 -1
  3. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/history_compaction_service.py +3 -1
  4. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/history_manager_service.py +74 -5
  5. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/base_login_view.py +32 -37
  6. {iatoolkit-2.75.2 → iatoolkit-2.75.3/src/iatoolkit.egg-info}/PKG-INFO +1 -1
  7. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit.egg-info/SOURCES.txt +0 -1
  8. iatoolkit-2.75.2/src/iatoolkit/templates/onboarding_shell.html +0 -106
  9. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/LICENSE +0 -0
  10. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/LICENSE_COMMUNITY.md +0 -0
  11. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/pyproject.toml +0 -0
  12. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/readme.md +0 -0
  13. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/setup.cfg +0 -0
  14. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/base_company.py +0 -0
  15. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/cli_commands.py +0 -0
  16. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/__init__.py +0 -0
  17. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/access.py +0 -0
  18. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/bridge_validation.py +0 -0
  19. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/company_paths.py +0 -0
  20. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/exceptions.py +0 -0
  21. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/interfaces/__init__.py +0 -0
  22. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
  23. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
  24. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/interfaces/history_compaction_trigger.py +0 -0
  25. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
  26. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
  27. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
  28. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
  29. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/memory_tools.py +0 -0
  30. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/model_registry.py +0 -0
  31. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/routes.py +0 -0
  32. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/search_terms.py +0 -0
  33. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/secret_resolver.py +0 -0
  34. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/session_manager.py +0 -0
  35. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/text_splitter.py +0 -0
  36. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/url_safety.py +0 -0
  37. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/common/util.py +0 -0
  38. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/company_registry.py +0 -0
  39. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/__init__.py +0 -0
  40. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
  41. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_agents/history_compaction.prompt +0 -0
  42. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_agents/memory_compiler.prompt +0 -0
  43. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_agents/memory_correction.prompt +0 -0
  44. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_agents/memory_document_ingest.prompt +0 -0
  45. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_agents/memory_image_ingest.prompt +0 -0
  46. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_agents/memory_meeting_ingest.prompt +0 -0
  47. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_agents/memory_question_review.prompt +0 -0
  48. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_agents_pack.yaml +0 -0
  49. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
  50. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
  51. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
  52. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
  53. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
  54. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
  55. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
  56. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
  57. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
  58. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
  59. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
  60. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
  61. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
  62. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
  63. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
  64. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
  65. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
  66. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
  67. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
  68. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
  69. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
  70. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
  71. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
  72. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
  73. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
  74. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
  75. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
  76. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/core.py +0 -0
  77. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/__init__.py +0 -0
  78. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
  79. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/call_service.py +0 -0
  80. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  81. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  82. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  83. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  84. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  85. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  86. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  87. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/google_auth_client.py +0 -0
  88. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/google_chat_app.py +0 -0
  89. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
  90. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/inference_handler.py +0 -0
  91. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
  92. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
  93. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
  94. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
  95. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
  96. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
  97. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
  98. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
  99. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
  100. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/llm_proxy.py +0 -0
  101. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/llm_response.py +0 -0
  102. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  103. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/locales/en.yaml +0 -0
  104. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/locales/es.yaml +0 -0
  105. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/__init__.py +0 -0
  106. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/advisory_lock.py +0 -0
  107. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/api_key_repo.py +0 -0
  108. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/bridge_repo.py +0 -0
  109. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/database_manager.py +0 -0
  110. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/document_repo.py +0 -0
  111. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
  112. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
  113. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/knowledge_wiki_repo.py +0 -0
  114. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  115. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
  116. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/memory_question_repo.py +0 -0
  117. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/memory_repo.py +0 -0
  118. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/memory_usage_repo.py +0 -0
  119. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/models.py +0 -0
  120. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/profile_repo.py +0 -0
  121. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
  122. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
  123. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
  124. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/repositories/vs_repo.py +0 -0
  125. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/runtime_logging.py +0 -0
  126. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/__init__.py +0 -0
  127. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/api_key_service.py +0 -0
  128. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/attachment_policy_service.py +0 -0
  129. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/auth_service.py +0 -0
  130. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/branding_service.py +0 -0
  131. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/company_context_service.py +0 -0
  132. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/configuration_service.py +0 -0
  133. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/context_builder_service.py +0 -0
  134. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/dispatcher_service.py +0 -0
  135. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/embedding_service.py +0 -0
  136. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/excel_service.py +0 -0
  137. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/file_processor_service.py +0 -0
  138. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/http_tool_service.py +0 -0
  139. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/i18n_service.py +0 -0
  140. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/inference_service.py +0 -0
  141. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/jwt_service.py +0 -0
  142. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/knowledge_base_service.py +0 -0
  143. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/language_service.py +0 -0
  144. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/license_service.py +0 -0
  145. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/llm_client_service.py +0 -0
  146. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/mail_service.py +0 -0
  147. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
  148. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/mcp_token_service.py +0 -0
  149. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/memory_compiler_service.py +0 -0
  150. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
  151. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/memory_question_service.py +0 -0
  152. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/memory_service.py +0 -0
  153. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/memory_sources.py +0 -0
  154. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/memory_usage_service.py +0 -0
  155. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/memory_wiki_service.py +0 -0
  156. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/noop_history_compaction_trigger.py +0 -0
  157. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
  158. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/operator_identity_service.py +0 -0
  159. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/__init__.py +0 -0
  160. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/contracts.py +0 -0
  161. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
  162. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
  163. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
  164. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
  165. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
  166. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
  167. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
  168. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
  169. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/parsers/validator.py +0 -0
  170. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/pdf_service.py +0 -0
  171. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/profile_service.py +0 -0
  172. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/prompt_resource_service.py +0 -0
  173. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/prompt_service.py +0 -0
  174. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/query_service.py +0 -0
  175. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/resource_access_scope.py +0 -0
  176. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
  177. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/sql_catalog_service.py +0 -0
  178. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/sql_dataset_service.py +0 -0
  179. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/sql_service.py +0 -0
  180. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/sql_source_service.py +0 -0
  181. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/storage_service.py +0 -0
  182. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/structured_output_service.py +0 -0
  183. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/system_agent_catalog.py +0 -0
  184. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/system_agent_runner.py +0 -0
  185. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
  186. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/system_tools.py +0 -0
  187. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/telemetry_service.py +0 -0
  188. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/tenant_wiki_service.py +0 -0
  189. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/tool_output_contract.py +0 -0
  190. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/tool_service.py +0 -0
  191. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/user_feedback_service.py +0 -0
  192. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/user_session_context_service.py +0 -0
  193. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/visual_kb_service.py +0 -0
  194. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/visual_tool_service.py +0 -0
  195. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/warmup_service.py +0 -0
  196. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/web_search/__init__.py +0 -0
  197. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
  198. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
  199. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
  200. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/web_search_service.py +0 -0
  201. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/services/wiki_page_index_service.py +0 -0
  202. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/images/favicon.ico +0 -0
  203. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/images/favicon.png +0 -0
  204. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  205. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
  206. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
  207. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  208. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  209. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_header_navigation.js +0 -0
  210. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  211. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  212. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  213. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_main.js +0 -0
  214. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
  215. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
  216. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  217. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  218. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/styles/account.css +0 -0
  219. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  220. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  221. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/styles/chat_public.css +0 -0
  222. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/styles/documents.css +0 -0
  223. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/styles/landing_page.css +0 -0
  224. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/styles/llm_output.css +0 -0
  225. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/styles/onboarding.css +0 -0
  226. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/static/styles/wiki_page.css +0 -0
  227. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/_chat_header.html +0 -0
  228. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/_company_header.html +0 -0
  229. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/_login_widget.html +0 -0
  230. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/account.html +0 -0
  231. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/base.html +0 -0
  232. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/change_password.html +0 -0
  233. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/chat.html +0 -0
  234. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
  235. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/chat_modals.html +0 -0
  236. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/error.html +0 -0
  237. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/forgot_password.html +0 -0
  238. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/home_hosted_default.html +0 -0
  239. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/login_global.html +0 -0
  240. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
  241. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/pdf/base.html +0 -0
  242. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/pdf/letter.html +0 -0
  243. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/pdf/report.html +0 -0
  244. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/pdf/simple.html +0 -0
  245. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/signup.html +0 -0
  246. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/templates/wiki_page.html +0 -0
  247. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/__init__.py +0 -0
  248. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/account_view.py +0 -0
  249. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/api_key_api_view.py +0 -0
  250. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/categories_api_view.py +0 -0
  251. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/change_password_view.py +0 -0
  252. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
  253. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/chat_view.py +0 -0
  254. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/configuration_api_view.py +0 -0
  255. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/connectors_api_view.py +0 -0
  256. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/embedding_api_view.py +0 -0
  257. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/forgot_password_view.py +0 -0
  258. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/help_content_api_view.py +0 -0
  259. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/history_api_view.py +0 -0
  260. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/home_view.py +0 -0
  261. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/init_context_api_view.py +0 -0
  262. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  263. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/load_document_api_view.py +0 -0
  264. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/login_view.py +0 -0
  265. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/logout_api_view.py +0 -0
  266. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/memory_api_view.py +0 -0
  267. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/profile_api_view.py +0 -0
  268. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/prompt_api_view.py +0 -0
  269. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
  270. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
  271. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/rag_api_view.py +0 -0
  272. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/root_redirect_view.py +0 -0
  273. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/signup_view.py +0 -0
  274. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/static_page_view.py +0 -0
  275. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/tool_api_view.py +0 -0
  276. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  277. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/users_api_view.py +0 -0
  278. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/verify_user_view.py +0 -0
  279. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit/views/wiki_page_view.py +0 -0
  280. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  281. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/src/iatoolkit.egg-info/requires.txt +0 -0
  282. {iatoolkit-2.75.2 → iatoolkit-2.75.3}/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.75.2
3
+ Version: 2.75.3
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.75.2"
6
+ __version__ = "2.75.3"
7
7
 
8
8
  # Expose main classes and functions at the top level of the package
9
9
 
@@ -93,7 +93,9 @@ class HistoryCompactionService:
93
93
  def _compact(self, company_short_name: str, user_identifier: str, model: str,
94
94
  max_chunks: Optional[int]) -> dict:
95
95
  history = self.session_context.get_context_history(company_short_name, user_identifier, model=model) or []
96
- budget = self.history_manager.context_budget_tokens(company_short_name, model)
96
+ # What the recent turns may keep verbatim is a share of the size the
97
+ # history is compacted toward, not of the whole budget.
98
+ budget = self.history_manager.compaction_budget_tokens(company_short_name, model)
97
99
  plan = self.plan(history, budget)
98
100
  if plan is None:
99
101
  return {"status": "skipped", "reason": "nothing_to_compact"}
@@ -46,11 +46,27 @@ class HistoryManagerService:
46
46
  #: set its own with `llm.max_context_tokens`.
47
47
  DEFAULT_MAX_CONTEXT_TOKENS = 200000
48
48
 
49
- #: Share of the budget at which a finished turn asks for a background
50
- #: compaction, and at which the next turn compacts in line because the
51
- #: background one did not land in time (BL-009, Fase E).
49
+ #: Share of the compaction budget at which a finished turn asks for a
50
+ #: background compaction, and share of the budget at which the next turn
51
+ #: compacts in line because the background one did not land in time
52
+ #: (BL-009, Fase E).
52
53
  COMPACTION_TRIGGER_SHARE = 0.70
53
54
  INLINE_COMPACTION_SHARE = 0.95
55
+ #: The size the history is kept near, whatever the budget: the budget stops
56
+ #: a request from overflowing, this keeps every turn from resending 140k
57
+ #: tokens (70% of the 200k default) before the first compaction. A company
58
+ #: may set its own with `llm.compaction_budget_tokens`.
59
+ DEFAULT_COMPACTION_BUDGET_TOKENS = 64000
60
+
61
+ #: Tool outputs of the turns older than this many are cut down in the
62
+ #: stored history: an SQL result or a schema is what the model needs on the
63
+ #: turn that asked for it, and resending it whole on every later turn was
64
+ #: most of the history's growth (4k -> 11k tokens on one SQL turn in
65
+ #: production). The model can call the tool again.
66
+ KEEP_TOOL_OUTPUT_TURNS = 2
67
+ #: What is kept of a cut output: its beginning, enough to remember its shape.
68
+ TRIMMED_TOOL_OUTPUT_CHARS = 1500
69
+ TRIMMED_TOOL_OUTPUT_MARKER = "[tool output trimmed"
54
70
  #: Parts an in-line compaction may summarize: one, the person is waiting.
55
71
  INLINE_COMPACTION_MAX_CHUNKS = 1
56
72
  #: How long a turn waits for a compaction that is writing the history.
@@ -201,6 +217,7 @@ class HistoryManagerService:
201
217
  elif response.get('answer'):
202
218
  context_history.append({"role": "assistant", "content": response.get('answer', '')})
203
219
 
220
+ self._trim_old_tool_outputs(context_history)
204
221
  self._cap_stored_history(company_short_name, model, context_history)
205
222
 
206
223
  self.session_context.save_context_history(
@@ -223,7 +240,15 @@ class HistoryManagerService:
223
240
  try:
224
241
  self.session_context.save_context_tokens(company_short_name, user_identifier, context_tokens, model=model)
225
242
  budget = self.context_budget_tokens(company_short_name, model)
226
- if context_tokens >= budget * self.COMPACTION_TRIGGER_SHARE:
243
+ threshold = int(self.compaction_budget_tokens(company_short_name, model) * self.COMPACTION_TRIGGER_SHARE)
244
+ compact = context_tokens >= threshold
245
+ # One line per turn: how a conversation grows, and when it asked for a compaction.
246
+ logging.info(
247
+ f"Context of {company_short_name}/{user_identifier} (model={model}): {context_tokens} tokens, "
248
+ f"{context_tokens * 100 // max(budget, 1)}% of the {budget} budget; compaction at {threshold}"
249
+ f"{' -> requested' if compact else ''}."
250
+ )
251
+ if compact:
227
252
  self.compaction_trigger.trigger(company_short_name, user_identifier, model)
228
253
  except Exception as e:
229
254
  # A compaction that is not asked for now is asked for on the next turn.
@@ -314,8 +339,18 @@ class HistoryManagerService:
314
339
  cap = self._company_context_cap(company_short_name) or self.DEFAULT_MAX_CONTEXT_TOKENS
315
340
  return min(budget, cap)
316
341
 
342
+ def compaction_budget_tokens(self, company_short_name: str, model: Optional[str]) -> int:
343
+ """The size the history is compacted toward: never above the budget."""
344
+ target = (self._company_llm_setting(company_short_name, "compaction_budget_tokens")
345
+ or self.DEFAULT_COMPACTION_BUDGET_TOKENS)
346
+ return min(target, self.context_budget_tokens(company_short_name, model))
347
+
317
348
  def _company_context_cap(self, company_short_name: str) -> int:
318
349
  """`llm.max_context_tokens` in company.yaml; 0 when not set (the platform default applies)."""
350
+ return self._company_llm_setting(company_short_name, "max_context_tokens")
351
+
352
+ def _company_llm_setting(self, company_short_name: str, key: str) -> int:
353
+ """A positive integer under `llm` in company.yaml; 0 when not set."""
319
354
  if self.configuration_service is None:
320
355
  return 0
321
356
  try:
@@ -324,7 +359,7 @@ class HistoryManagerService:
324
359
  return 0
325
360
  if not isinstance(llm_config, dict):
326
361
  return 0
327
- return self._positive_int(llm_config.get("max_context_tokens"))
362
+ return self._positive_int(llm_config.get(key))
328
363
 
329
364
  @staticmethod
330
365
  def _positive_int(value) -> int:
@@ -349,6 +384,40 @@ class HistoryManagerService:
349
384
  and not cls.is_summary_message(message)
350
385
  ]
351
386
 
387
+ @classmethod
388
+ def _trim_old_tool_outputs(cls, context_history: list):
389
+ """Cuts the long tool outputs of all but the last KEEP_TOOL_OUTPUT_TURNS turns, in place.
390
+
391
+ Each output keeps its message (a tool call without its output is a
392
+ history every provider rejects) and its beginning, plus a note naming the
393
+ tool so the model knows it can call it again. An output is cut once: the
394
+ stored history then stays the same from turn to turn, which is what a
395
+ provider's prompt cache reuses.
396
+ """
397
+ turn_starts = cls.turn_starts(context_history)
398
+ if len(turn_starts) <= cls.KEEP_TOOL_OUTPUT_TURNS:
399
+ return
400
+ boundary = turn_starts[-cls.KEEP_TOOL_OUTPUT_TURNS]
401
+ tool_names = {}
402
+ for message in context_history[:boundary]:
403
+ for call in (message.get("tool_calls") or []) if isinstance(message, dict) else []:
404
+ if isinstance(call, dict):
405
+ tool_names[call.get("id")] = (call.get("function") or {}).get("name")
406
+ for message in context_history[:boundary]:
407
+ if not isinstance(message, dict) or message.get("type") != "function_call_output":
408
+ continue
409
+ output = message.get("output")
410
+ if not isinstance(output, str) or len(output) <= cls.TRIMMED_TOOL_OUTPUT_CHARS:
411
+ continue
412
+ if cls.TRIMMED_TOOL_OUTPUT_MARKER in output[cls.TRIMMED_TOOL_OUTPUT_CHARS:]:
413
+ continue
414
+ tool = tool_names.get(message.get("call_id")) or "the tool"
415
+ message["output"] = (
416
+ f"{output[:cls.TRIMMED_TOOL_OUTPUT_CHARS]}\n"
417
+ f"{cls.TRIMMED_TOOL_OUTPUT_MARKER}: {len(output)} characters, from an earlier turn. "
418
+ f"Call {tool} again if you need all of it.]"
419
+ )
420
+
352
421
  def _cap_stored_history(self, company_short_name: str, model: Optional[str], context_history: list):
353
422
  """Keeps the stored history under STORED_HISTORY_MAX_BUDGETS budgets, whole turns at a time."""
354
423
  cap = self.context_budget_tokens(company_short_name, model) * self.STORED_HISTORY_MAX_BUDGETS
@@ -55,11 +55,13 @@ class BaseLoginView(MethodView):
55
55
  target_url: str,
56
56
  redeem_token: str = None):
57
57
  """
58
- Centralized logic to decide between the fast path and the slow path.
58
+ Starts the session's context and renders the chat. `target_url` (the old
59
+ loading shell's iframe) is no longer used: since BL-009 starting the context
60
+ calls no model, so there is nothing to wait for behind onboarding cards.
59
61
  """
60
62
  self._trigger_warmup(company_short_name, "post_login")
61
63
 
62
- # --- Get the company branding and onboarding_cards
64
+ # --- Get the company branding and onboarding_cards (the chat's help button shows them)
63
65
  branding_data = self.branding_service.get_company_branding(company_short_name)
64
66
  onboarding_cards = self.config_service.get_configuration(company_short_name, 'onboarding_cards')
65
67
 
@@ -67,46 +69,39 @@ class BaseLoginView(MethodView):
67
69
  prep_result = self.query_service.prepare_context(
68
70
  company_short_name=company_short_name, user_identifier=user_identifier
69
71
  )
70
-
71
72
  if prep_result.get('rebuild_needed'):
72
- # --- SLOW PATH: Render the loading shell ---
73
- return render_template(
74
- "onboarding_shell.html",
75
- company_short_name=company_short_name,
76
- user_identifier=user_identifier,
77
- iframe_src_url=target_url,
78
- branding=branding_data,
79
- onboarding_cards=onboarding_cards
73
+ # Starts the history with the prepared context, in the session only.
74
+ self.query_service.set_context_for_llm(
75
+ company_short_name=company_short_name, user_identifier=user_identifier
80
76
  )
81
- else:
82
- # --- FAST PATH: Render the chat page directly ---
83
- # LLM configuration: default model and availables
84
- default_llm_model, available_llm_models = self.config_service.get_llm_configuration(company_short_name)
85
- default_llm_model, available_llm_models = access.filter_llm_models(
86
- company_short_name, user_identifier, default_llm_model, available_llm_models)
87
- llm_request_defaults = self.config_service.get_llm_request_defaults(company_short_name) or {}
88
- llm_default_reasoning_effort = str(
89
- ((llm_request_defaults.get("reasoning") or {}).get("effort")) or ""
90
- ).strip().lower()
91
77
 
92
- prompts = self.prompt_service.get_prompts(company_short_name, user_identifier=user_identifier)
78
+ # LLM configuration: default model and availables
79
+ default_llm_model, available_llm_models = self.config_service.get_llm_configuration(company_short_name)
80
+ default_llm_model, available_llm_models = access.filter_llm_models(
81
+ company_short_name, user_identifier, default_llm_model, available_llm_models)
82
+ llm_request_defaults = self.config_service.get_llm_request_defaults(company_short_name) or {}
83
+ llm_default_reasoning_effort = str(
84
+ ((llm_request_defaults.get("reasoning") or {}).get("effort")) or ""
85
+ ).strip().lower()
86
+
87
+ prompts = self.prompt_service.get_prompts(company_short_name, user_identifier=user_identifier)
93
88
 
94
- # Get the entire 'js_messages' block in the correct language.
95
- js_translations = self.i18n_service.get_translation_block('js_messages')
89
+ # Get the entire 'js_messages' block in the correct language.
90
+ js_translations = self.i18n_service.get_translation_block('js_messages')
96
91
 
97
- return render_template(
98
- "chat.html",
99
- company_short_name=company_short_name,
100
- user_identifier=user_identifier,
101
- prompts=prompts,
102
- branding=branding_data,
103
- onboarding_cards=onboarding_cards,
104
- js_translations=js_translations,
105
- redeem_token=redeem_token,
106
- llm_default_model=default_llm_model,
107
- llm_available_models = available_llm_models,
108
- llm_default_reasoning_effort=llm_default_reasoning_effort,
109
- )
92
+ return render_template(
93
+ "chat.html",
94
+ company_short_name=company_short_name,
95
+ user_identifier=user_identifier,
96
+ prompts=prompts,
97
+ branding=branding_data,
98
+ onboarding_cards=onboarding_cards,
99
+ js_translations=js_translations,
100
+ redeem_token=redeem_token,
101
+ llm_default_model=default_llm_model,
102
+ llm_available_models = available_llm_models,
103
+ llm_default_reasoning_effort=llm_default_reasoning_effort,
104
+ )
110
105
 
111
106
  def _trigger_warmup(self, company_short_name: str, trigger: str):
112
107
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 2.75.2
3
+ Version: 2.75.3
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -236,7 +236,6 @@ src/iatoolkit/templates/error.html
236
236
  src/iatoolkit/templates/forgot_password.html
237
237
  src/iatoolkit/templates/home_hosted_default.html
238
238
  src/iatoolkit/templates/login_global.html
239
- src/iatoolkit/templates/onboarding_shell.html
240
239
  src/iatoolkit/templates/signup.html
241
240
  src/iatoolkit/templates/wiki_page.html
242
241
  src/iatoolkit/templates/memory/wiki_schema.md
@@ -1,106 +0,0 @@
1
- {% extends "base.html" %}
2
-
3
- {% block title %}Iniciando {{ branding.name }} IA...{% endblock %}
4
-
5
- {% block styles %}
6
- {% endblock %}
7
-
8
- {% block content %}
9
-
10
- <link rel="stylesheet" href="{{ url_for('static', filename='styles/llm_output.css', _external=True) }}?v=6">
11
- <link rel="stylesheet" href="{{ url_for('static', filename='styles/onboarding.css', _external=True) }}?v=6">
12
-
13
- <style>
14
- {% if branding and branding.css_variables %}
15
- {{ branding.css_variables|safe }}
16
- {% endif %}
17
-
18
- {# 2. Ahora definimos las reglas que usan esas variables #}
19
- .onboarding-shell-root { position: relative; height: 100vh; }
20
- .onboarding-shell-root #loader-wrapper { position: absolute; inset: 0; background: #f4f7f6; z-index: 1000; display:flex; align-items:center; justify-content:center; padding:20px; box-sizing:border-box; transition: opacity .5s; }
21
- .onboarding-shell-root .ob-stack { width:100%; max-width:520px; display:flex; flex-direction:column; gap:16px; }
22
- .onboarding-shell-root .ob-loading-band { display:flex; align-items:center; justify-content:center; gap:12px; padding:12px 14px; background:#fff; border-radius:12px; box-shadow:0 4px 20px rgba(0,0,0,.08); }
23
- .onboarding-shell-root .spinner { width:28px; height:28px; border:4px solid rgba(0,0,0,.1); border-top-color: var(--brand-primary-color, #FF5100); border-radius:50%; animation: spin 1s linear infinite; }
24
- @keyframes spin { to { transform: rotate(360deg); } }
25
- .onboarding-shell-root #content-container { width:100%; height:100%; }
26
- .onboarding-shell-root #content-container iframe { width:100%; height:100%; border:none; }
27
-
28
- /* Forzar colores de marca (sube especificidad y evita overrides) */
29
- .onboarding-shell-root .ob-brand-header { color: var(--brand-secondary-color, #06326B) !important; }
30
- .onboarding-shell-root .ob-brand-header .brand-name { color: var(--brand-primary-color, #FF5100) !important; }
31
- .onboarding-shell-root .ob-icon { color: var(--brand-primary-color, #FF5100) !important; }
32
- .onboarding-shell-root .ob-btn { background-color: var(--brand-secondary-color, #06326B) !important; color: var(--brand-text-on-secondary, #FFFFFF) !important; border:none !important; }
33
- .onboarding-shell-root .ob-dots > div.active { background-color: var(--brand-primary-color, #FF5100) !important; }
34
- </style>
35
-
36
- <div class="onboarding-shell-root ob-root">
37
- <div id="loader-wrapper">
38
- <div class="ob-stack">
39
- <h1 id="ob-brand-header" class="ob-brand-header">
40
- <span class="brand-name text-brand-primary">{{ branding.name | default('IAToolkit') }}</span>
41
- </h1>
42
-
43
- <div id="card-container" class="ob-card">
44
- <div id="card-icon" class="ob-icon"><i class="fas fa-lightbulb"></i></div>
45
- <h3 id="card-title" class="ob-title">Título de la Tarjeta</h3>
46
- <p id="card-text" class="ob-text">Descripción de la tarjeta de capacitación.</p>
47
- <p id="card-example" class="ob-example"></p>
48
-
49
- <div class="ob-nav">
50
- <button id="prev-card" class="ob-btn btn-branded-primary" aria-label="Anterior">
51
- <i class="fas fa-chevron-left"></i>
52
- </button>
53
- <div id="progress-dots" class="ob-dots"></div>
54
- <button id="next-card" class="ob-btn btn-branded-primary" aria-label="Siguiente">
55
- <i class="fas fa-chevron-right"></i>
56
- </button>
57
- </div>
58
- </div>
59
-
60
- <div id="loading-status" class="ob-loading-band">
61
- <div class="spinner"></div>
62
- <p>{{ t('ui.chat.init_context') }} </p>
63
- </div>
64
- </div>
65
- </div>
66
-
67
- <div id="content-container"></div>
68
- </div>
69
- {% endblock %}
70
-
71
- {% block scripts %}
72
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
73
-
74
- <script src="{{ url_for('static', filename='js/chat_onboarding_button.js', _external=True) }}"></script>
75
- <script>
76
- (function() {
77
- const cardsData = {{ onboarding_cards | tojson }};
78
- const iframeSrc = "{{ iframe_src_url }}";
79
-
80
- if (!window.initOnboarding) {
81
- console.error('initOnboarding no está disponible. Verifica la carga de chat_onboarding.js');
82
- return;
83
- }
84
-
85
- const onboarding = initOnboarding({
86
- mode: 'shell',
87
- cards: cardsData,
88
- ui: {
89
- icon: '#card-icon',
90
- title: '#card-title',
91
- text: '#card-text',
92
- example: '#card-example',
93
- dots: '#progress-dots',
94
- prev: '#prev-card',
95
- next: '#next-card',
96
- loader: '#loader-wrapper',
97
- container: '#content-container'
98
- },
99
- autoRotateMs: 5000,
100
- shell: { iframeSrc: iframeSrc }
101
- });
102
-
103
- onboarding.start();
104
- })();
105
- </script>
106
- {% endblock %}
File without changes
File without changes
File without changes
File without changes