iatoolkit 2.24.0__tar.gz → 2.25.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.24.0/src/iatoolkit.egg-info → iatoolkit-2.25.0}/PKG-INFO +1 -1
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/__init__.py +1 -1
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/locales/en.yaml +12 -1
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/locales/es.yaml +12 -1
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/dispatcher_service.py +96 -1
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/http_tool_service.py +62 -6
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/inference_service.py +1 -1
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/llm_client_service.py +1 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/tool_service.py +91 -31
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/tool_api_view.py +4 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0/src/iatoolkit.egg-info}/PKG-INFO +1 -1
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/LICENSE +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/pyproject.toml +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/readme.md +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/requirements.txt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/setup.cfg +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/model_registry.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/routes.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/secret_resolver.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/core.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/google_auth_client.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/inference_handler.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/api_key_repo.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/database_manager.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/memory_repo.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/models.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/runtime_logging.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/api_key_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/attachment_policy_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/benchmark_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/company_context_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/configuration_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/context_builder_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/history_manager_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/knowledge_base_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/mcp_token_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/memory_compiler_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/memory_lint_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/memory_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/memory_wiki_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/contracts.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/parsers/validator.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/pdf_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/prompt_resource_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/prompt_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/query_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/sql_dataset_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/sql_source_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/storage_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/structured_output_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/system_tools.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/telemetry_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/tool_output_contract.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/visual_kb_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/visual_tool_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/warmup_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/web_search/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/services/web_search_service.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_main.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/account.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/home_hosted_default.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/pdf/base.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/pdf/letter.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/pdf/report.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/pdf/simple.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/account_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/api_key_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/categories_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/configuration_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/connectors_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/memory_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/rag_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -1627,7 +1627,7 @@ ui:
|
|
|
1627
1627
|
output_contract_title: "Output Contract"
|
|
1628
1628
|
output_contract_hint: "Optional. Use YAML/JSON to describe the returned artifact, for example kind/image/file/audio/video plus transport and field names such as image_url or download_link."
|
|
1629
1629
|
model_output_title: "Model Output"
|
|
1630
|
-
model_output_hint: "Define the final JSON returned to the model after the HTTP response is received. Default mode is raw."
|
|
1630
|
+
model_output_hint: "Define the final JSON returned to the model after the HTTP response is received. Default mode is raw. Use include/exclude and describe to keep responses compact and meaningful."
|
|
1631
1631
|
modal_output_contract_label: "Initial output_contract"
|
|
1632
1632
|
modal_output_contract_placeholder: "kind: image\nmime_type: image/png\ntransport: signed_url\nurl_field: image_url"
|
|
1633
1633
|
routing_profile_title: "Routing Profile"
|
|
@@ -1859,6 +1859,10 @@ ui:
|
|
|
1859
1859
|
company_config_desc: "Core runtime, branding, connector, and company behavior configuration."
|
|
1860
1860
|
company_card_title: "Company"
|
|
1861
1861
|
company_card_desc: "Core identity and runtime information for this company."
|
|
1862
|
+
company_editor_desc: "Review and update the full company configuration for identity, runtime, and branding."
|
|
1863
|
+
policies_card_title: "Policies"
|
|
1864
|
+
policies_card_desc: "Manage runtime access policies, quotas, and tool or model controls."
|
|
1865
|
+
policies_editor_desc: "Review and update the runtime policy file used for access decisions."
|
|
1862
1866
|
company_name: "Company name"
|
|
1863
1867
|
short_name: "Short name"
|
|
1864
1868
|
runtime_mode: "Runtime mode"
|
|
@@ -2613,9 +2617,16 @@ js_messages:
|
|
|
2613
2617
|
tool_http_model_output_label: "model_output"
|
|
2614
2618
|
tool_http_model_output_object: "model_output must be an object"
|
|
2615
2619
|
tool_http_model_output_unknown_keys: "model_output has unsupported keys: {keys}"
|
|
2620
|
+
tool_http_model_output_description_invalid: "model_output.description must be a string"
|
|
2621
|
+
tool_http_model_output_list_invalid: "model_output.{field} must be a list"
|
|
2622
|
+
tool_http_model_output_list_item_invalid: "model_output.{field}[{index}] must be a non-empty string"
|
|
2623
|
+
tool_http_model_output_describe_object: "model_output.describe must be an object"
|
|
2624
|
+
tool_http_model_output_describe_field_name_invalid: "model_output.describe must use non-empty field names"
|
|
2625
|
+
tool_http_model_output_describe_field_invalid: "model_output.describe.{field} must be a string"
|
|
2616
2626
|
tool_http_model_output_mode_invalid: "model_output.mode must be one of raw, extract, map"
|
|
2617
2627
|
tool_http_model_output_path_required: "model_output.path is required when mode=extract"
|
|
2618
2628
|
tool_http_model_output_root_invalid: "model_output.root must be a non-empty string"
|
|
2629
|
+
tool_http_model_output_fields_object: "model_output.fields must be an object"
|
|
2619
2630
|
tool_http_model_output_fields_required: "model_output.fields must be a non-empty object when mode=map"
|
|
2620
2631
|
tool_http_model_output_field_name_invalid: "model_output.fields must use non-empty field names"
|
|
2621
2632
|
tool_http_model_output_field_path_required: "model_output.fields.{field} must define a path"
|
|
@@ -1631,7 +1631,7 @@ ui:
|
|
|
1631
1631
|
output_contract_title: "Output Contract"
|
|
1632
1632
|
output_contract_hint: "Opcional. Usa YAML/JSON para describir el artefacto devuelto, por ejemplo kind/image/file/audio/video más transport y nombres de campos como image_url o download_link."
|
|
1633
1633
|
model_output_title: "Model Output"
|
|
1634
|
-
model_output_hint: "Define el JSON final que recibe el modelo después de ejecutar la tool HTTP. El modo por defecto es raw."
|
|
1634
|
+
model_output_hint: "Define el JSON final que recibe el modelo después de ejecutar la tool HTTP. El modo por defecto es raw. Usa include/exclude y describe para mantener respuestas compactas y significativas."
|
|
1635
1635
|
modal_output_contract_label: "output_contract inicial"
|
|
1636
1636
|
modal_output_contract_placeholder: "kind: image\nmime_type: image/png\ntransport: signed_url\nurl_field: image_url"
|
|
1637
1637
|
routing_profile_title: "Routing Profile"
|
|
@@ -1863,6 +1863,10 @@ ui:
|
|
|
1863
1863
|
company_config_desc: "Configuración central de runtime, branding, conectores y comportamiento de la empresa."
|
|
1864
1864
|
company_card_title: "Empresa"
|
|
1865
1865
|
company_card_desc: "Identidad principal e información de runtime para esta empresa."
|
|
1866
|
+
company_editor_desc: "Revisa y actualiza la configuración completa de empresa para identidad, runtime y branding."
|
|
1867
|
+
policies_card_title: "Políticas"
|
|
1868
|
+
policies_card_desc: "Administra políticas de acceso, cuotas y controles de tools o modelos en runtime."
|
|
1869
|
+
policies_editor_desc: "Revisa y actualiza el archivo de políticas usado para decisiones de acceso en runtime."
|
|
1866
1870
|
company_name: "Nombre de la empresa"
|
|
1867
1871
|
short_name: "Nombre corto"
|
|
1868
1872
|
runtime_mode: "Modo runtime"
|
|
@@ -2616,9 +2620,16 @@ js_messages:
|
|
|
2616
2620
|
tool_http_model_output_label: "model_output"
|
|
2617
2621
|
tool_http_model_output_object: "model_output debe ser un objeto"
|
|
2618
2622
|
tool_http_model_output_unknown_keys: "model_output tiene claves no soportadas: {keys}"
|
|
2623
|
+
tool_http_model_output_description_invalid: "model_output.description debe ser un string"
|
|
2624
|
+
tool_http_model_output_list_invalid: "model_output.{field} debe ser una lista"
|
|
2625
|
+
tool_http_model_output_list_item_invalid: "model_output.{field}[{index}] debe ser un string no vacío"
|
|
2626
|
+
tool_http_model_output_describe_object: "model_output.describe debe ser un objeto"
|
|
2627
|
+
tool_http_model_output_describe_field_name_invalid: "model_output.describe debe usar nombres de campo no vacíos"
|
|
2628
|
+
tool_http_model_output_describe_field_invalid: "model_output.describe.{field} debe ser un string"
|
|
2619
2629
|
tool_http_model_output_mode_invalid: "model_output.mode debe ser uno de raw, extract, map"
|
|
2620
2630
|
tool_http_model_output_path_required: "model_output.path es obligatorio cuando mode=extract"
|
|
2621
2631
|
tool_http_model_output_root_invalid: "model_output.root debe ser un string no vacío"
|
|
2632
|
+
tool_http_model_output_fields_object: "model_output.fields debe ser un objeto"
|
|
2622
2633
|
tool_http_model_output_fields_required: "model_output.fields debe ser un objeto no vacío cuando mode=map"
|
|
2623
2634
|
tool_http_model_output_field_name_invalid: "model_output.fields debe usar nombres de campo no vacíos"
|
|
2624
2635
|
tool_http_model_output_field_path_required: "model_output.fields.{field} debe definir un path"
|
|
@@ -10,10 +10,13 @@ from iatoolkit.common.util import Utility
|
|
|
10
10
|
from injector import inject
|
|
11
11
|
import inspect
|
|
12
12
|
import logging
|
|
13
|
+
from time import perf_counter
|
|
14
|
+
from uuid import uuid4
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
class Dispatcher:
|
|
16
18
|
USER_SCOPED_SYSTEM_TOOLS = {"iat_memory_search", "iat_memory_get_page"}
|
|
19
|
+
_tool_execution_hook = None
|
|
17
20
|
|
|
18
21
|
@inject
|
|
19
22
|
def __init__(self,
|
|
@@ -55,6 +58,32 @@ class Dispatcher:
|
|
|
55
58
|
for parameter in signature.parameters.values()
|
|
56
59
|
)
|
|
57
60
|
|
|
61
|
+
@classmethod
|
|
62
|
+
def register_tool_execution_hook(cls, hook):
|
|
63
|
+
cls._tool_execution_hook = hook
|
|
64
|
+
|
|
65
|
+
@classmethod
|
|
66
|
+
def clear_tool_execution_hook(cls):
|
|
67
|
+
cls._tool_execution_hook = None
|
|
68
|
+
|
|
69
|
+
def _notify_tool_execution_hook(self, event: str, **payload) -> None:
|
|
70
|
+
hook = type(self)._tool_execution_hook
|
|
71
|
+
if not callable(hook):
|
|
72
|
+
return
|
|
73
|
+
|
|
74
|
+
try:
|
|
75
|
+
hook(event=event, **payload)
|
|
76
|
+
except IAToolkitException:
|
|
77
|
+
raise
|
|
78
|
+
except Exception as exc:
|
|
79
|
+
logging.warning(
|
|
80
|
+
"Tool execution hook failed for event=%s company=%s tool=%s: %s",
|
|
81
|
+
event,
|
|
82
|
+
payload.get("company_short_name"),
|
|
83
|
+
payload.get("function_name"),
|
|
84
|
+
exc,
|
|
85
|
+
)
|
|
86
|
+
|
|
58
87
|
@property
|
|
59
88
|
def tool_service(self):
|
|
60
89
|
"""Lazy-loads and returns the ToolService instance to avoid circular imports."""
|
|
@@ -91,7 +120,14 @@ class Dispatcher:
|
|
|
91
120
|
return self._company_instances
|
|
92
121
|
|
|
93
122
|
|
|
94
|
-
def dispatch(
|
|
123
|
+
def dispatch(
|
|
124
|
+
self,
|
|
125
|
+
company_short_name: str,
|
|
126
|
+
function_name: str,
|
|
127
|
+
user_identifier: str | None = None,
|
|
128
|
+
_iat_runtime_source: str | None = None,
|
|
129
|
+
**kwargs,
|
|
130
|
+
) -> dict:
|
|
95
131
|
# 1. Consult the Database (Source of Truth) for the tool definition
|
|
96
132
|
tool_def = self.tool_service.get_tool_definition(company_short_name, function_name)
|
|
97
133
|
if not tool_def:
|
|
@@ -100,6 +136,65 @@ class Dispatcher:
|
|
|
100
136
|
f"Tool '{function_name}' not registered for company '{company_short_name}'"
|
|
101
137
|
)
|
|
102
138
|
|
|
139
|
+
execution_id = uuid4().hex
|
|
140
|
+
self._notify_tool_execution_hook(
|
|
141
|
+
"before_dispatch",
|
|
142
|
+
execution_id=execution_id,
|
|
143
|
+
company_short_name=company_short_name,
|
|
144
|
+
function_name=function_name,
|
|
145
|
+
user_identifier=user_identifier,
|
|
146
|
+
runtime_source=_iat_runtime_source,
|
|
147
|
+
tool_def=tool_def,
|
|
148
|
+
arguments=dict(kwargs),
|
|
149
|
+
)
|
|
150
|
+
started_at = perf_counter()
|
|
151
|
+
try:
|
|
152
|
+
result = self._dispatch_resolved_tool(
|
|
153
|
+
company_short_name=company_short_name,
|
|
154
|
+
function_name=function_name,
|
|
155
|
+
user_identifier=user_identifier,
|
|
156
|
+
tool_def=tool_def,
|
|
157
|
+
**kwargs,
|
|
158
|
+
)
|
|
159
|
+
self._notify_tool_execution_hook(
|
|
160
|
+
"after_dispatch",
|
|
161
|
+
execution_id=execution_id,
|
|
162
|
+
company_short_name=company_short_name,
|
|
163
|
+
function_name=function_name,
|
|
164
|
+
user_identifier=user_identifier,
|
|
165
|
+
runtime_source=_iat_runtime_source,
|
|
166
|
+
tool_def=tool_def,
|
|
167
|
+
arguments=dict(kwargs),
|
|
168
|
+
status="success",
|
|
169
|
+
duration_ms=int(round((perf_counter() - started_at) * 1000)),
|
|
170
|
+
result=result,
|
|
171
|
+
)
|
|
172
|
+
return result
|
|
173
|
+
except Exception as exc:
|
|
174
|
+
self._notify_tool_execution_hook(
|
|
175
|
+
"after_dispatch",
|
|
176
|
+
execution_id=execution_id,
|
|
177
|
+
company_short_name=company_short_name,
|
|
178
|
+
function_name=function_name,
|
|
179
|
+
user_identifier=user_identifier,
|
|
180
|
+
runtime_source=_iat_runtime_source,
|
|
181
|
+
tool_def=tool_def,
|
|
182
|
+
arguments=dict(kwargs),
|
|
183
|
+
status="error",
|
|
184
|
+
duration_ms=int(round((perf_counter() - started_at) * 1000)),
|
|
185
|
+
error=exc,
|
|
186
|
+
)
|
|
187
|
+
raise
|
|
188
|
+
|
|
189
|
+
def _dispatch_resolved_tool(
|
|
190
|
+
self,
|
|
191
|
+
*,
|
|
192
|
+
company_short_name: str,
|
|
193
|
+
function_name: str,
|
|
194
|
+
user_identifier: str | None,
|
|
195
|
+
tool_def,
|
|
196
|
+
**kwargs,
|
|
197
|
+
) -> dict:
|
|
103
198
|
# 2. Dispatch based on Tool Type
|
|
104
199
|
if tool_def.tool_type == 'SYSTEM':
|
|
105
200
|
# Map to internal handler
|
|
@@ -588,13 +588,15 @@ class HttpToolService:
|
|
|
588
588
|
root_path = str(model_output.get("root") or "").strip()
|
|
589
589
|
source = self._extract_path(value, root_path) if root_path else value
|
|
590
590
|
fields = model_output.get("fields") or {}
|
|
591
|
-
if not isinstance(fields, dict)
|
|
591
|
+
if not isinstance(fields, dict):
|
|
592
592
|
raise IAToolkitException(
|
|
593
593
|
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
594
|
-
"execution_config.response.model_output.fields must be
|
|
594
|
+
"execution_config.response.model_output.fields must be an object"
|
|
595
595
|
)
|
|
596
596
|
|
|
597
597
|
exclude_nulls = model_output.get("exclude_nulls") is True
|
|
598
|
+
include_fields = self._normalize_model_output_field_names(model_output.get("include"))
|
|
599
|
+
exclude_fields = set(self._normalize_model_output_field_names(model_output.get("exclude")))
|
|
598
600
|
max_items = model_output.get("max_items")
|
|
599
601
|
|
|
600
602
|
if isinstance(source, list):
|
|
@@ -604,27 +606,81 @@ class HttpToolService:
|
|
|
604
606
|
else source
|
|
605
607
|
)
|
|
606
608
|
return [
|
|
607
|
-
self._map_model_output_item(
|
|
609
|
+
self._map_model_output_item(
|
|
610
|
+
item,
|
|
611
|
+
fields=fields,
|
|
612
|
+
include_fields=include_fields,
|
|
613
|
+
exclude_fields=exclude_fields,
|
|
614
|
+
exclude_nulls=exclude_nulls,
|
|
615
|
+
)
|
|
608
616
|
for item in items
|
|
609
617
|
]
|
|
610
618
|
if isinstance(source, dict):
|
|
611
|
-
return self._map_model_output_item(
|
|
619
|
+
return self._map_model_output_item(
|
|
620
|
+
source,
|
|
621
|
+
fields=fields,
|
|
622
|
+
include_fields=include_fields,
|
|
623
|
+
exclude_fields=exclude_fields,
|
|
624
|
+
exclude_nulls=exclude_nulls,
|
|
625
|
+
)
|
|
612
626
|
|
|
613
627
|
raise IAToolkitException(
|
|
614
628
|
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
615
629
|
f"Cannot map model_output over type '{type(source).__name__}'"
|
|
616
630
|
)
|
|
617
631
|
|
|
618
|
-
def _map_model_output_item(
|
|
619
|
-
|
|
632
|
+
def _map_model_output_item(
|
|
633
|
+
self,
|
|
634
|
+
source,
|
|
635
|
+
*,
|
|
636
|
+
fields: dict,
|
|
637
|
+
include_fields: list[str],
|
|
638
|
+
exclude_fields: set[str],
|
|
639
|
+
exclude_nulls: bool,
|
|
640
|
+
) -> dict:
|
|
641
|
+
if not isinstance(source, dict):
|
|
642
|
+
raise IAToolkitException(
|
|
643
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
644
|
+
f"Cannot map model_output item over type '{type(source).__name__}'"
|
|
645
|
+
)
|
|
646
|
+
|
|
647
|
+
if include_fields:
|
|
648
|
+
mapped = {}
|
|
649
|
+
for field_name in include_fields:
|
|
650
|
+
field_value = source.get(field_name)
|
|
651
|
+
if field_value is None and exclude_nulls:
|
|
652
|
+
continue
|
|
653
|
+
mapped[field_name] = field_value
|
|
654
|
+
else:
|
|
655
|
+
mapped = {
|
|
656
|
+
field_name: field_value
|
|
657
|
+
for field_name, field_value in source.items()
|
|
658
|
+
if not (field_value is None and exclude_nulls)
|
|
659
|
+
}
|
|
660
|
+
|
|
620
661
|
for output_name, field_config in fields.items():
|
|
621
662
|
path = self._resolve_model_output_field_path(output_name, field_config)
|
|
622
663
|
found, field_value = self._try_extract_path(source, path)
|
|
623
664
|
if (not found or field_value is None) and exclude_nulls:
|
|
624
665
|
continue
|
|
625
666
|
mapped[output_name] = field_value if found else None
|
|
667
|
+
|
|
668
|
+
for field_name in exclude_fields:
|
|
669
|
+
mapped.pop(field_name, None)
|
|
670
|
+
|
|
626
671
|
return mapped
|
|
627
672
|
|
|
673
|
+
@staticmethod
|
|
674
|
+
def _normalize_model_output_field_names(value) -> list[str]:
|
|
675
|
+
if not isinstance(value, list):
|
|
676
|
+
return []
|
|
677
|
+
names = []
|
|
678
|
+
for item in value:
|
|
679
|
+
text = str(item or "").strip()
|
|
680
|
+
if text:
|
|
681
|
+
names.append(text)
|
|
682
|
+
return names
|
|
683
|
+
|
|
628
684
|
@staticmethod
|
|
629
685
|
def _resolve_model_output_field_path(output_name: str, field_config) -> str:
|
|
630
686
|
if isinstance(field_config, str):
|
|
@@ -101,7 +101,7 @@ class InferenceService:
|
|
|
101
101
|
payload["parameters"] = parameters
|
|
102
102
|
|
|
103
103
|
# 4. Execute Call
|
|
104
|
-
logging.
|
|
104
|
+
logging.debug("Calling inference tool %s with model %s.", tool_name, model_id)
|
|
105
105
|
response_data = self._call_endpoint(
|
|
106
106
|
endpoint_url,
|
|
107
107
|
api_key,
|
|
@@ -596,7 +596,18 @@ class ToolService:
|
|
|
596
596
|
"execution_config.response.model_output must be a JSON object"
|
|
597
597
|
)
|
|
598
598
|
|
|
599
|
-
allowed_keys = {
|
|
599
|
+
allowed_keys = {
|
|
600
|
+
"mode",
|
|
601
|
+
"path",
|
|
602
|
+
"root",
|
|
603
|
+
"fields",
|
|
604
|
+
"include",
|
|
605
|
+
"exclude",
|
|
606
|
+
"description",
|
|
607
|
+
"describe",
|
|
608
|
+
"exclude_nulls",
|
|
609
|
+
"max_items",
|
|
610
|
+
}
|
|
600
611
|
unknown_keys = sorted(key for key in model_output.keys() if key not in allowed_keys)
|
|
601
612
|
if unknown_keys:
|
|
602
613
|
raise IAToolkitException(
|
|
@@ -604,6 +615,17 @@ class ToolService:
|
|
|
604
615
|
f"execution_config.response.model_output has unsupported keys: {unknown_keys}"
|
|
605
616
|
)
|
|
606
617
|
|
|
618
|
+
description = model_output.get("description")
|
|
619
|
+
if description is not None and not isinstance(description, str):
|
|
620
|
+
raise IAToolkitException(
|
|
621
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
622
|
+
"execution_config.response.model_output.description must be a string"
|
|
623
|
+
)
|
|
624
|
+
|
|
625
|
+
self._validate_http_model_output_string_list(model_output.get("include"), "include")
|
|
626
|
+
self._validate_http_model_output_string_list(model_output.get("exclude"), "exclude")
|
|
627
|
+
self._validate_http_model_output_descriptions(model_output.get("describe"))
|
|
628
|
+
|
|
607
629
|
mode = str(model_output.get("mode", "raw")).strip().lower()
|
|
608
630
|
if mode not in self.HTTP_ALLOWED_MODEL_OUTPUT_MODES:
|
|
609
631
|
raise IAToolkitException(
|
|
@@ -628,42 +650,43 @@ class ToolService:
|
|
|
628
650
|
)
|
|
629
651
|
|
|
630
652
|
fields = model_output.get("fields")
|
|
631
|
-
if
|
|
632
|
-
|
|
633
|
-
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
634
|
-
"execution_config.response.model_output.fields must be a non-empty object when mode is 'map'"
|
|
635
|
-
)
|
|
636
|
-
for field_name, field_config in fields.items():
|
|
637
|
-
if not isinstance(field_name, str) or not field_name.strip():
|
|
653
|
+
if fields is not None:
|
|
654
|
+
if not isinstance(fields, dict):
|
|
638
655
|
raise IAToolkitException(
|
|
639
656
|
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
640
|
-
"execution_config.response.model_output.fields must
|
|
657
|
+
"execution_config.response.model_output.fields must be an object"
|
|
641
658
|
)
|
|
642
|
-
|
|
643
|
-
if not
|
|
659
|
+
for field_name, field_config in fields.items():
|
|
660
|
+
if not isinstance(field_name, str) or not field_name.strip():
|
|
644
661
|
raise IAToolkitException(
|
|
645
662
|
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
646
|
-
|
|
663
|
+
"execution_config.response.model_output.fields must use non-empty string field names"
|
|
647
664
|
)
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
665
|
+
if isinstance(field_config, str):
|
|
666
|
+
if not field_config.strip():
|
|
667
|
+
raise IAToolkitException(
|
|
668
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
669
|
+
f"execution_config.response.model_output.fields.{field_name} must be a non-empty path"
|
|
670
|
+
)
|
|
671
|
+
continue
|
|
672
|
+
if isinstance(field_config, dict):
|
|
673
|
+
path = field_config.get("path")
|
|
674
|
+
if not isinstance(path, str) or not path.strip():
|
|
675
|
+
raise IAToolkitException(
|
|
676
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
677
|
+
f"execution_config.response.model_output.fields.{field_name}.path must be a non-empty string"
|
|
678
|
+
)
|
|
679
|
+
description = field_config.get("description")
|
|
680
|
+
if description is not None and not isinstance(description, str):
|
|
681
|
+
raise IAToolkitException(
|
|
682
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
683
|
+
f"execution_config.response.model_output.fields.{field_name}.description must be a string"
|
|
684
|
+
)
|
|
685
|
+
continue
|
|
686
|
+
raise IAToolkitException(
|
|
687
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
688
|
+
f"execution_config.response.model_output.fields.{field_name} must be a path string or object"
|
|
689
|
+
)
|
|
667
690
|
|
|
668
691
|
exclude_nulls = model_output.get("exclude_nulls")
|
|
669
692
|
if exclude_nulls is not None and not isinstance(exclude_nulls, bool):
|
|
@@ -682,6 +705,43 @@ class ToolService:
|
|
|
682
705
|
"execution_config.response.model_output.max_items must be a positive integer"
|
|
683
706
|
)
|
|
684
707
|
|
|
708
|
+
@staticmethod
|
|
709
|
+
def _validate_http_model_output_string_list(value, field_name: str) -> None:
|
|
710
|
+
if value is None:
|
|
711
|
+
return
|
|
712
|
+
if not isinstance(value, list):
|
|
713
|
+
raise IAToolkitException(
|
|
714
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
715
|
+
f"execution_config.response.model_output.{field_name} must be a list"
|
|
716
|
+
)
|
|
717
|
+
for index, item in enumerate(value):
|
|
718
|
+
if not isinstance(item, str) or not item.strip():
|
|
719
|
+
raise IAToolkitException(
|
|
720
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
721
|
+
f"execution_config.response.model_output.{field_name}[{index}] must be a non-empty string"
|
|
722
|
+
)
|
|
723
|
+
|
|
724
|
+
@staticmethod
|
|
725
|
+
def _validate_http_model_output_descriptions(value) -> None:
|
|
726
|
+
if value is None:
|
|
727
|
+
return
|
|
728
|
+
if not isinstance(value, dict):
|
|
729
|
+
raise IAToolkitException(
|
|
730
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
731
|
+
"execution_config.response.model_output.describe must be an object"
|
|
732
|
+
)
|
|
733
|
+
for field_name, description in value.items():
|
|
734
|
+
if not isinstance(field_name, str) or not field_name.strip():
|
|
735
|
+
raise IAToolkitException(
|
|
736
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
737
|
+
"execution_config.response.model_output.describe must use non-empty string field names"
|
|
738
|
+
)
|
|
739
|
+
if not isinstance(description, str):
|
|
740
|
+
raise IAToolkitException(
|
|
741
|
+
IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
742
|
+
f"execution_config.response.model_output.describe.{field_name} must be a string"
|
|
743
|
+
)
|
|
744
|
+
|
|
685
745
|
@staticmethod
|
|
686
746
|
def _build_tool_snapshot(tool_obj) -> dict:
|
|
687
747
|
if tool_obj is None:
|
|
@@ -188,6 +188,8 @@ class ToolApiView(MethodView):
|
|
|
188
188
|
result = self.dispatcher.dispatch(
|
|
189
189
|
company_short_name=company_short_name,
|
|
190
190
|
function_name=tool_name,
|
|
191
|
+
user_identifier=auth_result.get("user_identifier"),
|
|
192
|
+
_iat_runtime_source="api",
|
|
191
193
|
**call_kwargs
|
|
192
194
|
)
|
|
193
195
|
|
|
@@ -211,6 +213,8 @@ class ToolApiView(MethodView):
|
|
|
211
213
|
status_code = 404
|
|
212
214
|
elif e.error_type in [IAToolkitException.ErrorType.MISSING_PARAMETER, IAToolkitException.ErrorType.INVALID_PARAMETER]:
|
|
213
215
|
status_code = 400
|
|
216
|
+
elif e.error_type == IAToolkitException.ErrorType.PERMISSION:
|
|
217
|
+
status_code = 403
|
|
214
218
|
elif e.error_type in [IAToolkitException.ErrorType.DUPLICATE_ENTRY, IAToolkitException.ErrorType.INVALID_OPERATION]:
|
|
215
219
|
status_code = 409
|
|
216
220
|
|
|
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.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py
RENAMED
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py
RENAMED
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.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
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/core_identity.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/email_output.prompt
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/format_styles.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/html_structures.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/links_documents.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/output_basics.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.24.0 → iatoolkit-2.25.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt
RENAMED
|
File without changes
|