iatoolkit 2.28.2__tar.gz → 2.28.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.28.2/src/iatoolkit.egg-info → iatoolkit-2.28.4}/PKG-INFO +1 -1
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/__init__.py +1 -1
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/model_registry.py +1 -14
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +17 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/attachment_policy_service.py +126 -14
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/query_service.py +4 -12
- {iatoolkit-2.28.2 → iatoolkit-2.28.4/src/iatoolkit.egg-info}/PKG-INFO +1 -1
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/LICENSE +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/pyproject.toml +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/readme.md +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/requirements.txt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/setup.cfg +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/routes.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/secret_resolver.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/core.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/google_auth_client.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/inference_handler.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/locales/en.yaml +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/locales/es.yaml +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/api_key_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/database_manager.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/knowledge_wiki_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/memory_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/models.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/runtime_logging.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/api_key_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/benchmark_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/company_context_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/configuration_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/context_builder_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/dispatcher_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/history_manager_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/http_tool_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/inference_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/knowledge_base_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/llm_client_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/mcp_token_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/memory_compiler_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/memory_lint_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/memory_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/memory_wiki_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/contracts.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/parsers/validator.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/pdf_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/prompt_resource_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/prompt_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/sql_dataset_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/sql_source_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/storage_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/structured_output_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/system_tools.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/telemetry_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/tenant_wiki_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/tool_output_contract.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/tool_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/visual_kb_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/visual_tool_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/warmup_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/web_search/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/services/web_search_service.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_main.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/account.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/home_hosted_default.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/pdf/base.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/pdf/letter.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/pdf/report.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/pdf/simple.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/account_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/api_key_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/categories_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/configuration_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/connectors_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/memory_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/rag_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/tool_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -100,9 +100,8 @@ class ModelRegistry:
|
|
|
100
100
|
}
|
|
101
101
|
supports_text_verbosity = normalized_provider in {"openai", "xai", "openrouter"}
|
|
102
102
|
supports_store = normalized_provider in {"openai", "xai"}
|
|
103
|
-
supports_native_images = self._resolve_native_image_support(normalized_provider)
|
|
104
103
|
|
|
105
|
-
|
|
104
|
+
return {
|
|
106
105
|
"provider": normalized_provider,
|
|
107
106
|
"history_type": self.get_history_type(model),
|
|
108
107
|
"supports_reasoning_effort": supports_reasoning_effort,
|
|
@@ -111,9 +110,6 @@ class ModelRegistry:
|
|
|
111
110
|
"allowed_text_verbosity": list(self._text_verbosity_options) if supports_text_verbosity else [],
|
|
112
111
|
"supports_store": supports_store,
|
|
113
112
|
}
|
|
114
|
-
if supports_native_images is not None:
|
|
115
|
-
capabilities["supports_native_images"] = supports_native_images
|
|
116
|
-
return capabilities
|
|
117
113
|
|
|
118
114
|
def get_request_defaults(self, model: str) -> dict:
|
|
119
115
|
"""
|
|
@@ -195,12 +191,3 @@ class ModelRegistry:
|
|
|
195
191
|
|
|
196
192
|
def is_anthropic_model(self, model: str) -> bool:
|
|
197
193
|
return self.get_provider(model) == "anthropic"
|
|
198
|
-
|
|
199
|
-
@staticmethod
|
|
200
|
-
def _resolve_native_image_support(provider: ProviderType) -> bool | None:
|
|
201
|
-
# Keep this conservative and only publish a hint when we know the family behavior.
|
|
202
|
-
if provider in {"openai", "gemini", "anthropic"}:
|
|
203
|
-
return True
|
|
204
|
-
if provider == "deepseek":
|
|
205
|
-
return False
|
|
206
|
-
return None
|
|
@@ -31,6 +31,7 @@ class DeepseekAdapter(OpenAICompatibleChatAdapter):
|
|
|
31
31
|
|
|
32
32
|
def create_response(self, model: str, input: list[dict], **kwargs):
|
|
33
33
|
self._validate_model(model)
|
|
34
|
+
self._validate_multimodal_inputs(kwargs)
|
|
34
35
|
return super().create_response(model=model, input=input, **kwargs)
|
|
35
36
|
|
|
36
37
|
@classmethod
|
|
@@ -73,3 +74,19 @@ class DeepseekAdapter(OpenAICompatibleChatAdapter):
|
|
|
73
74
|
# Keep the default deterministic: unless a prompt explicitly asks for
|
|
74
75
|
# reasoning, use non-thinking mode.
|
|
75
76
|
return {"type": "disabled"}
|
|
77
|
+
|
|
78
|
+
@staticmethod
|
|
79
|
+
def _validate_multimodal_inputs(kwargs: dict) -> None:
|
|
80
|
+
images = kwargs.get("images") or []
|
|
81
|
+
attachments = kwargs.get("attachments") or []
|
|
82
|
+
if not images and not attachments:
|
|
83
|
+
return
|
|
84
|
+
|
|
85
|
+
raise IAToolkitException(
|
|
86
|
+
IAToolkitException.ErrorType.LLM_ERROR,
|
|
87
|
+
(
|
|
88
|
+
"Este modelo/provider no expone visión ni archivos nativos por API en este endpoint: "
|
|
89
|
+
"DeepSeek API directa no acepta imagenes ni archivos nativos aqui. "
|
|
90
|
+
"Usa un modelo/provider que publique soporte API nativo de image/file input."
|
|
91
|
+
),
|
|
92
|
+
)
|
|
@@ -10,6 +10,10 @@ from typing import Any, Dict, List
|
|
|
10
10
|
import base64
|
|
11
11
|
import logging
|
|
12
12
|
import mimetypes
|
|
13
|
+
import threading
|
|
14
|
+
import time
|
|
15
|
+
|
|
16
|
+
import requests
|
|
13
17
|
|
|
14
18
|
from injector import inject
|
|
15
19
|
|
|
@@ -26,12 +30,16 @@ class AttachmentPolicyService:
|
|
|
26
30
|
|
|
27
31
|
DEFAULT_MODE = MODE_EXTRACTED_ONLY
|
|
28
32
|
DEFAULT_FALLBACK = FALLBACK_EXTRACT
|
|
33
|
+
OPENROUTER_MODELS_CACHE_TTL_SECONDS = 300
|
|
34
|
+
OPENROUTER_MODELS_TIMEOUT_SECONDS = 8
|
|
29
35
|
|
|
30
36
|
@inject
|
|
31
37
|
def __init__(self, configuration_service: ConfigurationService, util: Utility):
|
|
32
38
|
self.configuration_service = configuration_service
|
|
33
39
|
self.util = util
|
|
34
40
|
self._default_capabilities: dict | None = None
|
|
41
|
+
self._openrouter_models_cache: dict[str, dict[str, Any]] = {}
|
|
42
|
+
self._openrouter_models_cache_lock = threading.Lock()
|
|
35
43
|
self._default_capabilities_path = (
|
|
36
44
|
Path(__file__).resolve().parent.parent / "config" / "llm_capabilities.yaml"
|
|
37
45
|
)
|
|
@@ -60,12 +68,11 @@ class AttachmentPolicyService:
|
|
|
60
68
|
provider: str,
|
|
61
69
|
files: list | None,
|
|
62
70
|
policy: dict | None = None,
|
|
63
|
-
|
|
71
|
+
model: str | None = None,
|
|
64
72
|
) -> dict:
|
|
65
73
|
mode = self.normalize_mode((policy or {}).get("attachment_mode"))
|
|
66
74
|
fallback = self.normalize_fallback((policy or {}).get("attachment_fallback"))
|
|
67
75
|
capabilities = self.get_effective_provider_capabilities(company_short_name, provider)
|
|
68
|
-
capabilities = self._apply_model_capability_hints(capabilities, model_capabilities)
|
|
69
76
|
|
|
70
77
|
if not files:
|
|
71
78
|
return {
|
|
@@ -95,6 +102,8 @@ class AttachmentPolicyService:
|
|
|
95
102
|
"fallback_to_extract": 0,
|
|
96
103
|
"errors": 0,
|
|
97
104
|
}
|
|
105
|
+
openrouter_native_image_error: str | None = None
|
|
106
|
+
openrouter_native_image_checked = False
|
|
98
107
|
|
|
99
108
|
for file_obj in files:
|
|
100
109
|
stats["total_files"] += 1
|
|
@@ -105,16 +114,33 @@ class AttachmentPolicyService:
|
|
|
105
114
|
wants_native = self._wants_native(mode, meta, capabilities)
|
|
106
115
|
wants_extract = self._wants_extract(mode, meta, capabilities)
|
|
107
116
|
native_ok = False
|
|
117
|
+
native_blocked_by_model_catalog = False
|
|
108
118
|
|
|
109
119
|
if wants_native:
|
|
110
|
-
if
|
|
120
|
+
if str(provider or "").strip().lower() == "openrouter":
|
|
121
|
+
if not openrouter_native_image_checked:
|
|
122
|
+
openrouter_native_image_error = self._get_openrouter_native_image_error(
|
|
123
|
+
company_short_name=company_short_name,
|
|
124
|
+
model=model,
|
|
125
|
+
)
|
|
126
|
+
openrouter_native_image_checked = True
|
|
127
|
+
if openrouter_native_image_error:
|
|
128
|
+
if fallback == self.FALLBACK_EXTRACT or wants_extract:
|
|
129
|
+
stats["fallback_to_extract"] += 1
|
|
130
|
+
wants_extract = True
|
|
131
|
+
native_blocked_by_model_catalog = True
|
|
132
|
+
else:
|
|
133
|
+
if openrouter_native_image_error not in errors:
|
|
134
|
+
errors.append(openrouter_native_image_error)
|
|
135
|
+
continue
|
|
136
|
+
if (not native_blocked_by_model_catalog) and bool(capabilities.get("supports_native_images")):
|
|
111
137
|
files_for_context.append(dict(file_obj))
|
|
112
138
|
native_ok = True
|
|
113
139
|
stats["native_sent_count"] += 1
|
|
114
|
-
elif fallback == self.FALLBACK_EXTRACT or wants_extract:
|
|
140
|
+
elif (not native_blocked_by_model_catalog) and (fallback == self.FALLBACK_EXTRACT or wants_extract):
|
|
115
141
|
stats["fallback_to_extract"] += 1
|
|
116
142
|
wants_extract = True
|
|
117
|
-
|
|
143
|
+
elif not native_blocked_by_model_catalog:
|
|
118
144
|
errors.append(
|
|
119
145
|
f"Image attachment '{filename}' cannot be sent as native image for provider '{provider}'."
|
|
120
146
|
)
|
|
@@ -244,17 +270,103 @@ class AttachmentPolicyService:
|
|
|
244
270
|
merged.setdefault("max_files_per_request", 0)
|
|
245
271
|
return merged
|
|
246
272
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
273
|
+
def _get_openrouter_native_image_error(self, company_short_name: str, model: str | None) -> str | None:
|
|
274
|
+
model_id = str(model or "").strip()
|
|
275
|
+
if not model_id:
|
|
276
|
+
return (
|
|
277
|
+
"Este modelo/provider no expone visión nativa por API: no se resolvio el modelo efectivo "
|
|
278
|
+
"para OpenRouter, por lo que no puedo confirmar soporte de imagenes nativas."
|
|
279
|
+
)
|
|
280
|
+
|
|
281
|
+
model_metadata, verified = self._lookup_openrouter_model_metadata(company_short_name, model_id)
|
|
282
|
+
if not verified:
|
|
283
|
+
return None
|
|
284
|
+
if not isinstance(model_metadata, dict):
|
|
285
|
+
return (
|
|
286
|
+
"Este modelo/provider no expone visión nativa por API verificable: "
|
|
287
|
+
f"OpenRouter no publica metadata para el modelo '{model_id}', por lo que no puedo confirmar "
|
|
288
|
+
"que acepte imagenes nativas."
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
architecture = model_metadata.get("architecture") or {}
|
|
292
|
+
raw_input_modalities = architecture.get("input_modalities") or []
|
|
293
|
+
input_modalities = [
|
|
294
|
+
str(modality or "").strip().lower()
|
|
295
|
+
for modality in raw_input_modalities
|
|
296
|
+
if str(modality or "").strip()
|
|
297
|
+
]
|
|
298
|
+
if "image" in input_modalities:
|
|
299
|
+
return None
|
|
300
|
+
|
|
301
|
+
published_model_id = str(model_metadata.get("id") or model_id).strip() or model_id
|
|
302
|
+
published_modalities = ", ".join(input_modalities) if input_modalities else "(vacio)"
|
|
303
|
+
return (
|
|
304
|
+
"Este modelo/provider no expone visión nativa por API: "
|
|
305
|
+
f"OpenRouter publica el modelo '{published_model_id}' con input_modalities={published_modalities}, "
|
|
306
|
+
"sin 'image'. Para enviar imagenes nativas usa un modelo/provider que publique 'image' "
|
|
307
|
+
"como modalidad de entrada."
|
|
308
|
+
)
|
|
252
309
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
310
|
+
def _lookup_openrouter_model_metadata(self, company_short_name: str, model: str) -> tuple[dict | None, bool]:
|
|
311
|
+
provider_config = self.configuration_service.get_llm_provider_config(company_short_name, "openrouter") or {}
|
|
312
|
+
base_url = str(provider_config.get("base_url") or "https://openrouter.ai/api/v1").strip()
|
|
313
|
+
models_url = f"{base_url.rstrip('/')}/models"
|
|
314
|
+
catalog = self._get_openrouter_models_catalog(models_url)
|
|
315
|
+
if catalog is None:
|
|
316
|
+
return None, False
|
|
317
|
+
|
|
318
|
+
model_key = str(model or "").strip().lower()
|
|
319
|
+
for item in catalog:
|
|
320
|
+
if not isinstance(item, dict):
|
|
321
|
+
continue
|
|
322
|
+
candidates = {
|
|
323
|
+
str(item.get("id") or "").strip().lower(),
|
|
324
|
+
str(item.get("canonical_slug") or "").strip().lower(),
|
|
325
|
+
}
|
|
326
|
+
candidates.update(
|
|
327
|
+
{
|
|
328
|
+
candidate.split("/")[-1]
|
|
329
|
+
for candidate in list(candidates)
|
|
330
|
+
if candidate and "/" in candidate
|
|
331
|
+
}
|
|
332
|
+
)
|
|
333
|
+
if model_key and model_key in candidates:
|
|
334
|
+
return item, True
|
|
335
|
+
|
|
336
|
+
return None, True
|
|
337
|
+
|
|
338
|
+
def _get_openrouter_models_catalog(self, models_url: str) -> list[dict] | None:
|
|
339
|
+
current_time = time.time()
|
|
340
|
+
with self._openrouter_models_cache_lock:
|
|
341
|
+
cached_entry = self._openrouter_models_cache.get(models_url)
|
|
342
|
+
if cached_entry and (current_time - float(cached_entry.get("fetched_at") or 0)) < self.OPENROUTER_MODELS_CACHE_TTL_SECONDS:
|
|
343
|
+
cached_data = cached_entry.get("data")
|
|
344
|
+
if isinstance(cached_data, list):
|
|
345
|
+
return cached_data
|
|
256
346
|
|
|
257
|
-
|
|
347
|
+
try:
|
|
348
|
+
response = requests.get(
|
|
349
|
+
models_url,
|
|
350
|
+
params={"output_modalities": "all"},
|
|
351
|
+
timeout=self.OPENROUTER_MODELS_TIMEOUT_SECONDS,
|
|
352
|
+
headers={"User-Agent": "IAToolkit AttachmentPolicy/1.0"},
|
|
353
|
+
)
|
|
354
|
+
response.raise_for_status()
|
|
355
|
+
payload = response.json()
|
|
356
|
+
catalog = payload.get("data") if isinstance(payload, dict) else None
|
|
357
|
+
if not isinstance(catalog, list):
|
|
358
|
+
logging.warning("OpenRouter models API returned an unexpected payload shape for '%s'.", models_url)
|
|
359
|
+
return None
|
|
360
|
+
except Exception as exc:
|
|
361
|
+
logging.warning("Could not fetch OpenRouter model metadata from '%s': %s", models_url, exc)
|
|
362
|
+
return None
|
|
363
|
+
|
|
364
|
+
with self._openrouter_models_cache_lock:
|
|
365
|
+
self._openrouter_models_cache[models_url] = {
|
|
366
|
+
"fetched_at": current_time,
|
|
367
|
+
"data": catalog,
|
|
368
|
+
}
|
|
369
|
+
return catalog
|
|
258
370
|
|
|
259
371
|
def _normalize_file_meta(self, file_obj: dict) -> dict:
|
|
260
372
|
if not isinstance(file_obj, dict):
|
|
@@ -201,14 +201,12 @@ class QueryService:
|
|
|
201
201
|
company_short_name: str,
|
|
202
202
|
model: Optional[str],
|
|
203
203
|
prompt_output_contract: dict | None = None) -> str:
|
|
204
|
-
# Priority: 1.
|
|
205
|
-
effective_model = None
|
|
206
|
-
if isinstance(prompt_output_contract, dict):
|
|
204
|
+
# Priority: 1. Explicit model override -> 2. Prompt model -> 3. Company config
|
|
205
|
+
effective_model = str(model or "").strip() or None
|
|
206
|
+
if not effective_model and isinstance(prompt_output_contract, dict):
|
|
207
207
|
prompt_model = str(prompt_output_contract.get("llm_model") or "").strip()
|
|
208
208
|
if prompt_model:
|
|
209
209
|
effective_model = prompt_model
|
|
210
|
-
if not effective_model:
|
|
211
|
-
effective_model = model
|
|
212
210
|
if not effective_model:
|
|
213
211
|
llm_config = self.configuration_service.get_configuration(company_short_name, 'llm')
|
|
214
212
|
if llm_config and llm_config.get('model'):
|
|
@@ -1422,18 +1420,12 @@ class QueryService:
|
|
|
1422
1420
|
},
|
|
1423
1421
|
}
|
|
1424
1422
|
if self.attachment_policy_service:
|
|
1425
|
-
get_capabilities_fn = getattr(self.model_registry, "get_capabilities", None)
|
|
1426
|
-
model_capabilities = (
|
|
1427
|
-
get_capabilities_fn(effective_model)
|
|
1428
|
-
if callable(get_capabilities_fn)
|
|
1429
|
-
else None
|
|
1430
|
-
)
|
|
1431
1423
|
attachment_plan = self.attachment_policy_service.build_attachment_plan(
|
|
1432
1424
|
company_short_name=company_short_name,
|
|
1433
1425
|
provider=provider,
|
|
1434
1426
|
files=files or [],
|
|
1435
1427
|
policy=effective_attachment_policy,
|
|
1436
|
-
|
|
1428
|
+
model=effective_model,
|
|
1437
1429
|
)
|
|
1438
1430
|
log_stage("attachment_plan")
|
|
1439
1431
|
|
|
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.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/memory_lint_trigger.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/common/interfaces/signup_policy_resolver.py
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.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
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/core_identity.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/email_output.prompt
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/format_styles.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/html_structures.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/links_documents.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/memory_usage.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/output_basics.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_casting.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.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
|
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/connectors/file_connector_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/connectors/google_drive_connector.py
RENAMED
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.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.28.2 → iatoolkit-2.28.4}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.28.2 → iatoolkit-2.28.4}/src/iatoolkit/repositories/filesystem_asset_repository.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
|
|
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
|