iatoolkit 2.53.0__tar.gz → 2.54.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {iatoolkit-2.53.0/src/iatoolkit.egg-info → iatoolkit-2.54.0}/PKG-INFO +1 -1
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/__init__.py +1 -1
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/core.py +7 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/llm_proxy.py +21 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/locales/en.yaml +7 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/locales/es.yaml +7 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/database_manager.py +31 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/models.py +2 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/dispatcher_service.py +45 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/tool_service.py +49 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_main.js +4 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0/src/iatoolkit.egg-info}/PKG-INFO +1 -1
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/LICENSE +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/pyproject.toml +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/readme.md +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/setup.cfg +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/bridge_validation.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/model_registry.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/routes.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/secret_resolver.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/text_splitter.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/url_safety.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/google_auth_client.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/inference_handler.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/api_key_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/bridge_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/knowledge_wiki_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/memory_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/runtime_logging.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/api_key_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/attachment_policy_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/company_context_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/configuration_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/context_builder_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/history_manager_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/http_tool_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/inference_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/knowledge_base_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/llm_client_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/mcp_token_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/memory_compiler_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/memory_lint_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/memory_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/memory_wiki_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/operator_identity_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/contracts.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/parsers/validator.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/pdf_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/prompt_resource_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/prompt_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/query_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/sql_dataset_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/sql_source_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/storage_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/structured_output_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/system_tools.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/telemetry_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/tenant_wiki_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/tool_output_contract.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/visual_kb_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/visual_tool_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/warmup_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/web_search/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/services/web_search_service.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/account.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/home_hosted_default.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/pdf/base.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/pdf/letter.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/pdf/report.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/pdf/simple.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/account_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/api_key_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/categories_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/configuration_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/connectors_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/memory_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/rag_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/tool_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -175,6 +175,13 @@ class IAToolkit:
|
|
|
175
175
|
logging.info("🔥 Startup warm-up completed for endpoints=%s", woken_endpoints)
|
|
176
176
|
except Exception:
|
|
177
177
|
logging.exception("⚠️ Startup warm-up failed.")
|
|
178
|
+
finally:
|
|
179
|
+
# The scoped session is per thread: whatever this thread read
|
|
180
|
+
# (the endpoint's credentials, from the secrets table) keeps its
|
|
181
|
+
# connection "idle in transaction" until the thread's own session
|
|
182
|
+
# is removed - and nothing else ever removes it.
|
|
183
|
+
if self.db_manager is not None:
|
|
184
|
+
self.db_manager.remove_session()
|
|
178
185
|
|
|
179
186
|
thread = threading.Thread(target=_run_warmup, name="iatoolkit-startup-warmup", daemon=True)
|
|
180
187
|
thread.start()
|
|
@@ -89,6 +89,23 @@ class LLMProxy:
|
|
|
89
89
|
self._telemetry_service = NoopTelemetryService()
|
|
90
90
|
return self._telemetry_service
|
|
91
91
|
|
|
92
|
+
@staticmethod
|
|
93
|
+
def _release_database_transaction() -> None:
|
|
94
|
+
"""
|
|
95
|
+
Hands the request's database connection back to the pool before the
|
|
96
|
+
provider call. Resolved lazily, like telemetry: the proxy is also built
|
|
97
|
+
outside a running toolkit (tests, scripts), where there is nothing to
|
|
98
|
+
release.
|
|
99
|
+
"""
|
|
100
|
+
try:
|
|
101
|
+
from iatoolkit import current_iatoolkit
|
|
102
|
+
from iatoolkit.repositories.database_manager import DatabaseManager
|
|
103
|
+
|
|
104
|
+
db_manager = current_iatoolkit().get_injector().get(DatabaseManager)
|
|
105
|
+
except Exception:
|
|
106
|
+
return
|
|
107
|
+
db_manager.release_idle_transaction()
|
|
108
|
+
|
|
92
109
|
# -------------------------------------------------------------------------
|
|
93
110
|
# Public API
|
|
94
111
|
# -------------------------------------------------------------------------
|
|
@@ -146,6 +163,10 @@ class LLMProxy:
|
|
|
146
163
|
if telemetry_execution is not None:
|
|
147
164
|
request_kwargs["telemetry_execution"] = telemetry_execution
|
|
148
165
|
|
|
166
|
+
# Everything the call needs from the database is resolved by now; the
|
|
167
|
+
# model can take minutes, and the connection should not wait with it.
|
|
168
|
+
self._release_database_transaction()
|
|
169
|
+
|
|
149
170
|
# Delegate to the adapter (OpenAI, Gemini, DeepSeek, xAI, Anthropic, etc.)
|
|
150
171
|
return adapter.create_response(
|
|
151
172
|
model=self._wire_model(model, model_config),
|
|
@@ -1247,6 +1247,13 @@ ui:
|
|
|
1247
1247
|
run_duration_seconds: "Duration (s)"
|
|
1248
1248
|
run_duration_minutes: "Duration (min)"
|
|
1249
1249
|
duration_minutes_suffix: "mins."
|
|
1250
|
+
timing_duration: "Duration"
|
|
1251
|
+
timing_rate: "Rate"
|
|
1252
|
+
timing_eta: "ETA"
|
|
1253
|
+
timing_eta_after_discovery: "ETA after discovery"
|
|
1254
|
+
timing_eta_pending: "ETA pending"
|
|
1255
|
+
timing_processed_rate_suffix: "processed"
|
|
1256
|
+
timing_submitted_rate_suffix: "submitted"
|
|
1250
1257
|
run_finished: "Finished"
|
|
1251
1258
|
run_actions: "Actions"
|
|
1252
1259
|
run_discovered: "Discovered"
|
|
@@ -1262,6 +1262,13 @@ ui:
|
|
|
1262
1262
|
run_duration_seconds: "Duración (s)"
|
|
1263
1263
|
run_duration_minutes: "Duración (min)"
|
|
1264
1264
|
duration_minutes_suffix: "mins."
|
|
1265
|
+
timing_duration: "Duración"
|
|
1266
|
+
timing_rate: "Ritmo"
|
|
1267
|
+
timing_eta: "ETA"
|
|
1268
|
+
timing_eta_after_discovery: "ETA después de discovery"
|
|
1269
|
+
timing_eta_pending: "ETA pendiente"
|
|
1270
|
+
timing_processed_rate_suffix: "procesados"
|
|
1271
|
+
timing_submitted_rate_suffix: "enviados"
|
|
1265
1272
|
run_finished: "Fin"
|
|
1266
1273
|
run_actions: "Acciones"
|
|
1267
1274
|
run_discovered: "Descubiertos"
|
|
@@ -324,6 +324,37 @@ class DatabaseManager(DatabaseProvider):
|
|
|
324
324
|
def remove_session(self):
|
|
325
325
|
self.scoped_session.remove()
|
|
326
326
|
|
|
327
|
+
def release_idle_transaction(self) -> bool:
|
|
328
|
+
"""
|
|
329
|
+
Ends the current session's transaction and returns its connection to the
|
|
330
|
+
pool, before a call that waits on something other than the database.
|
|
331
|
+
|
|
332
|
+
Any read opens a transaction that lasts until the next commit, so a
|
|
333
|
+
session that read config or secrets and then waited minutes on an LLM
|
|
334
|
+
held its connection "idle in transaction" the whole time. A web process
|
|
335
|
+
serves many requests from one small pool, and a few such waits were
|
|
336
|
+
enough to time out every other request.
|
|
337
|
+
|
|
338
|
+
Commits rather than rolls back: a rollback expires every loaded object
|
|
339
|
+
and would discard writes already flushed. The session factory keeps
|
|
340
|
+
objects on commit, so callers go on using what they loaded. Leaves the
|
|
341
|
+
session alone when it has pending changes - committing them here would
|
|
342
|
+
be the caller's decision, not ours.
|
|
343
|
+
"""
|
|
344
|
+
try:
|
|
345
|
+
if not self.scoped_session.registry.has():
|
|
346
|
+
return False
|
|
347
|
+
session = self.scoped_session.registry()
|
|
348
|
+
if not session.in_transaction():
|
|
349
|
+
return False
|
|
350
|
+
if session.new or session.dirty or session.deleted:
|
|
351
|
+
return False
|
|
352
|
+
session.commit()
|
|
353
|
+
return True
|
|
354
|
+
except Exception as e:
|
|
355
|
+
logging.debug("Could not release the idle database transaction: %s", e)
|
|
356
|
+
return False
|
|
357
|
+
|
|
327
358
|
# -- execution methods ----
|
|
328
359
|
|
|
329
360
|
def execute_query(self, query: str, commit: bool = False, params: dict | None = None) -> list[dict] | dict:
|
|
@@ -360,6 +360,7 @@ class Tool(Base):
|
|
|
360
360
|
TYPE_NATIVE = 'NATIVE' # executed by company class in Python
|
|
361
361
|
TYPE_INFERENCE = 'INFERENCE' # executed by InferenceService
|
|
362
362
|
TYPE_HTTP = 'HTTP' # executed by HttpToolService
|
|
363
|
+
TYPE_MCP = 'MCP' # executed by the handler an extension registers (Dispatcher.register_tool_type_handler)
|
|
363
364
|
|
|
364
365
|
# source of the definition (Source of Truth)
|
|
365
366
|
SOURCE_SYSTEM = 'SYSTEM'
|
|
@@ -367,6 +368,7 @@ class Tool(Base):
|
|
|
367
368
|
SOURCE_YAML = 'YAML' # defined in company.yaml
|
|
368
369
|
SOURCE_USER = 'USER' # defined via GUI/API
|
|
369
370
|
SOURCE_PACK = 'PACK' # materialized by enterprise control-plane
|
|
371
|
+
SOURCE_MCP = 'MCP' # imported from an external MCP server
|
|
370
372
|
|
|
371
373
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
372
374
|
company_id = Column(Integer,
|
|
@@ -31,6 +31,11 @@ class Dispatcher:
|
|
|
31
31
|
"iat_wiki_get_page",
|
|
32
32
|
}
|
|
33
33
|
_tool_execution_hook = None
|
|
34
|
+
# Tool types this module executes itself; an extension cannot take them over.
|
|
35
|
+
BUILTIN_TOOL_TYPES = frozenset({"SYSTEM", "INFERENCE", "HTTP", "NATIVE"})
|
|
36
|
+
# Executors for tool types an extension owns (e.g. Enterprise's MCP client
|
|
37
|
+
# for tool_type='MCP'). This module knows nothing about what they do.
|
|
38
|
+
_tool_type_handlers: dict = {}
|
|
34
39
|
|
|
35
40
|
@inject
|
|
36
41
|
def __init__(self,
|
|
@@ -80,6 +85,33 @@ class Dispatcher:
|
|
|
80
85
|
def clear_tool_execution_hook(cls):
|
|
81
86
|
cls._tool_execution_hook = None
|
|
82
87
|
|
|
88
|
+
@classmethod
|
|
89
|
+
def register_tool_type_handler(cls, tool_type: str, handler):
|
|
90
|
+
"""
|
|
91
|
+
Registers the executor for tools whose tool_type is not built in.
|
|
92
|
+
handler is called as:
|
|
93
|
+
|
|
94
|
+
handler(company_short_name=..., function_name=..., tool_def=...,
|
|
95
|
+
user_identifier=..., runtime_source=..., arguments={...})
|
|
96
|
+
|
|
97
|
+
and returns the tool result, exactly like a native tool would.
|
|
98
|
+
"""
|
|
99
|
+
normalized = str(tool_type or "").strip().upper()
|
|
100
|
+
if not normalized:
|
|
101
|
+
raise ValueError("tool_type is required")
|
|
102
|
+
if normalized in cls.BUILTIN_TOOL_TYPES:
|
|
103
|
+
raise ValueError(f"Tool type '{normalized}' is built in and cannot be overridden")
|
|
104
|
+
if not callable(handler):
|
|
105
|
+
raise ValueError("handler must be callable")
|
|
106
|
+
cls._tool_type_handlers = {**cls._tool_type_handlers, normalized: handler}
|
|
107
|
+
|
|
108
|
+
@classmethod
|
|
109
|
+
def clear_tool_type_handler(cls, tool_type: str):
|
|
110
|
+
normalized = str(tool_type or "").strip().upper()
|
|
111
|
+
cls._tool_type_handlers = {
|
|
112
|
+
key: value for key, value in cls._tool_type_handlers.items() if key != normalized
|
|
113
|
+
}
|
|
114
|
+
|
|
83
115
|
def _notify_tool_execution_hook(self, event: str, **payload) -> None:
|
|
84
116
|
hook = type(self)._tool_execution_hook
|
|
85
117
|
if not callable(hook):
|
|
@@ -184,6 +216,7 @@ class Dispatcher:
|
|
|
184
216
|
function_name=function_name,
|
|
185
217
|
user_identifier=user_identifier,
|
|
186
218
|
tool_def=tool_def,
|
|
219
|
+
runtime_source=_iat_runtime_source,
|
|
187
220
|
**kwargs,
|
|
188
221
|
)
|
|
189
222
|
self._notify_tool_execution_hook(
|
|
@@ -241,6 +274,7 @@ class Dispatcher:
|
|
|
241
274
|
function_name: str,
|
|
242
275
|
user_identifier: str | None,
|
|
243
276
|
tool_def,
|
|
277
|
+
runtime_source: str | None = None,
|
|
244
278
|
**kwargs,
|
|
245
279
|
) -> dict:
|
|
246
280
|
# 2. Dispatch based on Tool Type
|
|
@@ -320,6 +354,17 @@ class Dispatcher:
|
|
|
320
354
|
f"Error executing native tool '{method_name}': {str(e)}") from e
|
|
321
355
|
|
|
322
356
|
else:
|
|
357
|
+
handler = type(self)._tool_type_handlers.get(str(tool_def.tool_type or "").strip().upper())
|
|
358
|
+
if handler:
|
|
359
|
+
logging.debug(f"Dispatching {tool_def.tool_type} tool: {function_name}")
|
|
360
|
+
return handler(
|
|
361
|
+
company_short_name=company_short_name,
|
|
362
|
+
function_name=function_name,
|
|
363
|
+
tool_def=tool_def,
|
|
364
|
+
user_identifier=user_identifier,
|
|
365
|
+
runtime_source=runtime_source,
|
|
366
|
+
arguments=dict(kwargs),
|
|
367
|
+
)
|
|
323
368
|
raise IAToolkitException(
|
|
324
369
|
IAToolkitException.ErrorType.EXTERNAL_SOURCE_ERROR,
|
|
325
370
|
f"Unknown tool type '{tool_def.tool_type}'"
|
|
@@ -1191,6 +1191,11 @@ class ToolService:
|
|
|
1191
1191
|
raise IAToolkitException(IAToolkitException.ErrorType.MISSING_PARAMETER, "Name and Description are required")
|
|
1192
1192
|
|
|
1193
1193
|
tool_type = tool_data.get('tool_type', Tool.TYPE_NATIVE)
|
|
1194
|
+
if str(tool_type or '').strip().upper() == Tool.TYPE_MCP:
|
|
1195
|
+
raise IAToolkitException(
|
|
1196
|
+
IAToolkitException.ErrorType.INVALID_OPERATION,
|
|
1197
|
+
"MCP tools are imported from a registered MCP server, not created by hand",
|
|
1198
|
+
)
|
|
1194
1199
|
execution_config = tool_data.get('execution_config')
|
|
1195
1200
|
output_contract = normalize_output_contract(tool_data.get('output_contract'))
|
|
1196
1201
|
self._validate_tool_contract(tool_type, execution_config, output_contract, company=company)
|
|
@@ -1243,6 +1248,13 @@ class ToolService:
|
|
|
1243
1248
|
raise IAToolkitException(IAToolkitException.ErrorType.INVALID_OPERATION, "Cannot modify System Tools")
|
|
1244
1249
|
if tool.source == Tool.SOURCE_PACK:
|
|
1245
1250
|
raise IAToolkitException(IAToolkitException.ErrorType.INVALID_OPERATION, "Cannot modify PACK tools")
|
|
1251
|
+
if tool.source == Tool.SOURCE_MCP:
|
|
1252
|
+
return self._update_mcp_tool(company_short_name, tool, tool_data, actor_identifier)
|
|
1253
|
+
if str(tool_data.get('tool_type') or '').strip().upper() == Tool.TYPE_MCP:
|
|
1254
|
+
raise IAToolkitException(
|
|
1255
|
+
IAToolkitException.ErrorType.INVALID_OPERATION,
|
|
1256
|
+
"A tool cannot be turned into an MCP tool; import it from its MCP server",
|
|
1257
|
+
)
|
|
1246
1258
|
|
|
1247
1259
|
normalized_name = None
|
|
1248
1260
|
if 'name' in tool_data or 'key' in tool_data:
|
|
@@ -1286,6 +1298,43 @@ class ToolService:
|
|
|
1286
1298
|
)
|
|
1287
1299
|
return tool.to_dict()
|
|
1288
1300
|
|
|
1301
|
+
MCP_TOOL_EDITABLE_FIELDS = ('description', 'is_active')
|
|
1302
|
+
|
|
1303
|
+
def _update_mcp_tool(self, company_short_name: str, tool, tool_data: dict,
|
|
1304
|
+
actor_identifier: str | None) -> dict:
|
|
1305
|
+
"""
|
|
1306
|
+
An imported MCP tool mirrors a tool on its server: its name, schema and
|
|
1307
|
+
execution config come from there (and agents reference the name), so
|
|
1308
|
+
only what stays local can change here.
|
|
1309
|
+
"""
|
|
1310
|
+
unsupported = sorted(
|
|
1311
|
+
key for key in tool_data.keys()
|
|
1312
|
+
if key not in self.MCP_TOOL_EDITABLE_FIELDS
|
|
1313
|
+
)
|
|
1314
|
+
if unsupported:
|
|
1315
|
+
raise IAToolkitException(
|
|
1316
|
+
IAToolkitException.ErrorType.INVALID_OPERATION,
|
|
1317
|
+
f"MCP tools only allow editing {list(self.MCP_TOOL_EDITABLE_FIELDS)}; "
|
|
1318
|
+
f"{unsupported} come from the MCP server",
|
|
1319
|
+
)
|
|
1320
|
+
|
|
1321
|
+
if 'description' in tool_data:
|
|
1322
|
+
description = str(tool_data.get('description') or '').strip()
|
|
1323
|
+
if not description:
|
|
1324
|
+
raise IAToolkitException(IAToolkitException.ErrorType.MISSING_PARAMETER, "Description is required")
|
|
1325
|
+
tool.description = description
|
|
1326
|
+
if 'is_active' in tool_data:
|
|
1327
|
+
tool.is_active = bool(tool_data['is_active'])
|
|
1328
|
+
|
|
1329
|
+
self.llm_query_repo.commit()
|
|
1330
|
+
self._notify_tool_lifecycle_hook(
|
|
1331
|
+
event=self.TOOL_EVENT_UPDATED,
|
|
1332
|
+
company_short_name=company_short_name,
|
|
1333
|
+
tool_obj=tool,
|
|
1334
|
+
actor_identifier=actor_identifier,
|
|
1335
|
+
)
|
|
1336
|
+
return tool.to_dict()
|
|
1337
|
+
|
|
1289
1338
|
def delete_tool(
|
|
1290
1339
|
self,
|
|
1291
1340
|
company_short_name: str,
|
|
@@ -53,6 +53,10 @@ function sanitizeHtmlFragment(html) {
|
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
55
|
if (tag === 'a') {
|
|
56
|
+
// A link in an answer never replaces the chat: following it in
|
|
57
|
+
// the same tab loses the conversation on screen (e.g. the link to
|
|
58
|
+
// connect an external MCP account).
|
|
59
|
+
el.setAttribute('target', '_blank');
|
|
56
60
|
el.setAttribute('rel', 'noopener noreferrer');
|
|
57
61
|
}
|
|
58
62
|
walk(el);
|
|
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.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/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
|
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/core_identity.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/email_output.prompt
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/format_styles.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/html_structures.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/links_documents.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/output_basics.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/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.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/connectors/file_connector_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/src/iatoolkit/infra/connectors/google_drive_connector.py
RENAMED
|
File without changes
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/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.53.0 → iatoolkit-2.54.0}/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.53.0 → iatoolkit-2.54.0}/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
|
{iatoolkit-2.53.0 → iatoolkit-2.54.0}/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
|
|
File without changes
|