iatoolkit 2.75.2__tar.gz → 2.75.4__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.
- {iatoolkit-2.75.2/src/iatoolkit.egg-info → iatoolkit-2.75.4}/PKG-INFO +1 -1
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/__init__.py +1 -1
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/history_compaction_service.py +3 -1
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/history_manager_service.py +76 -5
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/base_login_view.py +32 -37
- {iatoolkit-2.75.2 → iatoolkit-2.75.4/src/iatoolkit.egg-info}/PKG-INFO +1 -1
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit.egg-info/SOURCES.txt +0 -1
- iatoolkit-2.75.2/src/iatoolkit/templates/onboarding_shell.html +0 -106
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/LICENSE +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/pyproject.toml +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/readme.md +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/setup.cfg +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/access.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/bridge_validation.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/company_paths.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/history_compaction_trigger.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/memory_tools.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/model_registry.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/routes.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/search_terms.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/secret_resolver.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/text_splitter.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/url_safety.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/history_compaction.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/memory_compiler.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/memory_correction.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/memory_document_ingest.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/memory_image_ingest.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/memory_meeting_ingest.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/memory_question_review.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents_pack.yaml +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/core.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/google_auth_client.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/inference_handler.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/locales/en.yaml +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/locales/es.yaml +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/advisory_lock.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/api_key_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/bridge_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/database_manager.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/knowledge_wiki_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/memory_question_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/memory_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/memory_usage_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/models.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/runtime_logging.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/api_key_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/attachment_policy_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/company_context_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/configuration_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/context_builder_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/dispatcher_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/http_tool_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/inference_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/knowledge_base_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/llm_client_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/mcp_token_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/memory_compiler_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/memory_question_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/memory_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/memory_sources.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/memory_usage_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/memory_wiki_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/noop_history_compaction_trigger.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/operator_identity_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/contracts.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/parsers/validator.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/pdf_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/prompt_resource_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/prompt_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/query_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/resource_access_scope.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/sql_catalog_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/sql_dataset_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/sql_source_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/storage_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/structured_output_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/system_agent_catalog.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/system_agent_runner.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/system_tools.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/telemetry_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/tenant_wiki_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/tool_output_contract.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/tool_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/visual_kb_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/visual_tool_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/warmup_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/web_search/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/web_search_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/services/wiki_page_index_service.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/images/favicon.ico +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/images/favicon.png +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_header_navigation.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_main.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/styles/account.css +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/static/styles/wiki_page.css +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/_chat_header.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/account.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/home_hosted_default.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/login_global.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/pdf/base.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/pdf/letter.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/pdf/report.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/pdf/simple.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/templates/wiki_page.html +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/account_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/api_key_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/categories_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/configuration_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/connectors_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/memory_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/rag_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/tool_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/views/wiki_page_view.py +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -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
|
-
|
|
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,29 @@ 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
|
|
50
|
-
#: compaction, and at which the next turn
|
|
51
|
-
#: background one did not land in time
|
|
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. 64k
|
|
58
|
+
#: compacted every few SQL turns; with old tool outputs cut, 100k (asks at
|
|
59
|
+
#: 70k) leaves a long conversation alone. A company may set its own with
|
|
60
|
+
#: `llm.compaction_budget_tokens`.
|
|
61
|
+
DEFAULT_COMPACTION_BUDGET_TOKENS = 100000
|
|
62
|
+
|
|
63
|
+
#: Tool outputs of the turns older than this many are cut down in the
|
|
64
|
+
#: stored history: an SQL result or a schema is what the model needs on the
|
|
65
|
+
#: turn that asked for it, and resending it whole on every later turn was
|
|
66
|
+
#: most of the history's growth (4k -> 11k tokens on one SQL turn in
|
|
67
|
+
#: production). The model can call the tool again.
|
|
68
|
+
KEEP_TOOL_OUTPUT_TURNS = 2
|
|
69
|
+
#: What is kept of a cut output: its beginning, enough to remember its shape.
|
|
70
|
+
TRIMMED_TOOL_OUTPUT_CHARS = 1500
|
|
71
|
+
TRIMMED_TOOL_OUTPUT_MARKER = "[tool output trimmed"
|
|
54
72
|
#: Parts an in-line compaction may summarize: one, the person is waiting.
|
|
55
73
|
INLINE_COMPACTION_MAX_CHUNKS = 1
|
|
56
74
|
#: How long a turn waits for a compaction that is writing the history.
|
|
@@ -201,6 +219,7 @@ class HistoryManagerService:
|
|
|
201
219
|
elif response.get('answer'):
|
|
202
220
|
context_history.append({"role": "assistant", "content": response.get('answer', '')})
|
|
203
221
|
|
|
222
|
+
self._trim_old_tool_outputs(context_history)
|
|
204
223
|
self._cap_stored_history(company_short_name, model, context_history)
|
|
205
224
|
|
|
206
225
|
self.session_context.save_context_history(
|
|
@@ -223,7 +242,15 @@ class HistoryManagerService:
|
|
|
223
242
|
try:
|
|
224
243
|
self.session_context.save_context_tokens(company_short_name, user_identifier, context_tokens, model=model)
|
|
225
244
|
budget = self.context_budget_tokens(company_short_name, model)
|
|
226
|
-
|
|
245
|
+
threshold = int(self.compaction_budget_tokens(company_short_name, model) * self.COMPACTION_TRIGGER_SHARE)
|
|
246
|
+
compact = context_tokens >= threshold
|
|
247
|
+
# One line per turn: how a conversation grows, and when it asked for a compaction.
|
|
248
|
+
logging.info(
|
|
249
|
+
f"Context of {company_short_name}/{user_identifier} (model={model}): {context_tokens} tokens, "
|
|
250
|
+
f"{context_tokens * 100 // max(budget, 1)}% of the {budget} budget; compaction at {threshold}"
|
|
251
|
+
f"{' -> requested' if compact else ''}."
|
|
252
|
+
)
|
|
253
|
+
if compact:
|
|
227
254
|
self.compaction_trigger.trigger(company_short_name, user_identifier, model)
|
|
228
255
|
except Exception as e:
|
|
229
256
|
# A compaction that is not asked for now is asked for on the next turn.
|
|
@@ -314,8 +341,18 @@ class HistoryManagerService:
|
|
|
314
341
|
cap = self._company_context_cap(company_short_name) or self.DEFAULT_MAX_CONTEXT_TOKENS
|
|
315
342
|
return min(budget, cap)
|
|
316
343
|
|
|
344
|
+
def compaction_budget_tokens(self, company_short_name: str, model: Optional[str]) -> int:
|
|
345
|
+
"""The size the history is compacted toward: never above the budget."""
|
|
346
|
+
target = (self._company_llm_setting(company_short_name, "compaction_budget_tokens")
|
|
347
|
+
or self.DEFAULT_COMPACTION_BUDGET_TOKENS)
|
|
348
|
+
return min(target, self.context_budget_tokens(company_short_name, model))
|
|
349
|
+
|
|
317
350
|
def _company_context_cap(self, company_short_name: str) -> int:
|
|
318
351
|
"""`llm.max_context_tokens` in company.yaml; 0 when not set (the platform default applies)."""
|
|
352
|
+
return self._company_llm_setting(company_short_name, "max_context_tokens")
|
|
353
|
+
|
|
354
|
+
def _company_llm_setting(self, company_short_name: str, key: str) -> int:
|
|
355
|
+
"""A positive integer under `llm` in company.yaml; 0 when not set."""
|
|
319
356
|
if self.configuration_service is None:
|
|
320
357
|
return 0
|
|
321
358
|
try:
|
|
@@ -324,7 +361,7 @@ class HistoryManagerService:
|
|
|
324
361
|
return 0
|
|
325
362
|
if not isinstance(llm_config, dict):
|
|
326
363
|
return 0
|
|
327
|
-
return self._positive_int(llm_config.get(
|
|
364
|
+
return self._positive_int(llm_config.get(key))
|
|
328
365
|
|
|
329
366
|
@staticmethod
|
|
330
367
|
def _positive_int(value) -> int:
|
|
@@ -349,6 +386,40 @@ class HistoryManagerService:
|
|
|
349
386
|
and not cls.is_summary_message(message)
|
|
350
387
|
]
|
|
351
388
|
|
|
389
|
+
@classmethod
|
|
390
|
+
def _trim_old_tool_outputs(cls, context_history: list):
|
|
391
|
+
"""Cuts the long tool outputs of all but the last KEEP_TOOL_OUTPUT_TURNS turns, in place.
|
|
392
|
+
|
|
393
|
+
Each output keeps its message (a tool call without its output is a
|
|
394
|
+
history every provider rejects) and its beginning, plus a note naming the
|
|
395
|
+
tool so the model knows it can call it again. An output is cut once: the
|
|
396
|
+
stored history then stays the same from turn to turn, which is what a
|
|
397
|
+
provider's prompt cache reuses.
|
|
398
|
+
"""
|
|
399
|
+
turn_starts = cls.turn_starts(context_history)
|
|
400
|
+
if len(turn_starts) <= cls.KEEP_TOOL_OUTPUT_TURNS:
|
|
401
|
+
return
|
|
402
|
+
boundary = turn_starts[-cls.KEEP_TOOL_OUTPUT_TURNS]
|
|
403
|
+
tool_names = {}
|
|
404
|
+
for message in context_history[:boundary]:
|
|
405
|
+
for call in (message.get("tool_calls") or []) if isinstance(message, dict) else []:
|
|
406
|
+
if isinstance(call, dict):
|
|
407
|
+
tool_names[call.get("id")] = (call.get("function") or {}).get("name")
|
|
408
|
+
for message in context_history[:boundary]:
|
|
409
|
+
if not isinstance(message, dict) or message.get("type") != "function_call_output":
|
|
410
|
+
continue
|
|
411
|
+
output = message.get("output")
|
|
412
|
+
if not isinstance(output, str) or len(output) <= cls.TRIMMED_TOOL_OUTPUT_CHARS:
|
|
413
|
+
continue
|
|
414
|
+
if cls.TRIMMED_TOOL_OUTPUT_MARKER in output[cls.TRIMMED_TOOL_OUTPUT_CHARS:]:
|
|
415
|
+
continue
|
|
416
|
+
tool = tool_names.get(message.get("call_id")) or "the tool"
|
|
417
|
+
message["output"] = (
|
|
418
|
+
f"{output[:cls.TRIMMED_TOOL_OUTPUT_CHARS]}\n"
|
|
419
|
+
f"{cls.TRIMMED_TOOL_OUTPUT_MARKER}: {len(output)} characters, from an earlier turn. "
|
|
420
|
+
f"Call {tool} again if you need all of it.]"
|
|
421
|
+
)
|
|
422
|
+
|
|
352
423
|
def _cap_stored_history(self, company_short_name: str, model: Optional[str], context_history: list):
|
|
353
424
|
"""Keeps the stored history under STORED_HISTORY_MAX_BUDGETS budgets, whole turns at a time."""
|
|
354
425
|
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
|
-
|
|
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
|
-
#
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
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
|
-
|
|
95
|
-
|
|
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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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:
|
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/history_compaction_trigger.py
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/signup_policy_resolver.py
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/common/interfaces/web_search_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/history_compaction.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/memory_compiler.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/memory_correction.prompt
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_agents/memory_image_ingest.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/core_identity.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/email_output.prompt
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/format_styles.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/html_structures.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/links_documents.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/memory_usage.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/output_basics.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_casting.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/connectors/file_connector_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/connectors/google_drive_connector.py
RENAMED
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/connectors/local_file_connector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.75.2 → iatoolkit-2.75.4}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|