iatoolkit 2.51.3__tar.gz → 2.53.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.51.3/src/iatoolkit.egg-info → iatoolkit-2.53.0}/PKG-INFO +1 -1
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/__init__.py +1 -1
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/routes.py +7 -1
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_tools_pack.yaml +3 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/locales/en.yaml +1 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/locales/es.yaml +1 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/models.py +25 -1
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/configuration_service.py +6 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/dispatcher_service.py +39 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/llm_client_service.py +23 -2
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/query_service.py +36 -2
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/system_tools.py +9 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/tool_service.py +5 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0/src/iatoolkit.egg-info}/PKG-INFO +1 -1
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/LICENSE +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/pyproject.toml +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/readme.md +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/setup.cfg +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/bridge_validation.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/model_registry.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/secret_resolver.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/text_splitter.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/url_safety.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/core.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/google_auth_client.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/inference_handler.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/api_key_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/bridge_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/database_manager.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/knowledge_wiki_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/memory_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/runtime_logging.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/api_key_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/attachment_policy_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/company_context_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/context_builder_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/history_manager_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/http_tool_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/inference_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/knowledge_base_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/mcp_token_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/memory_compiler_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/memory_lint_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/memory_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/memory_wiki_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/operator_identity_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/contracts.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/parsers/validator.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/pdf_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/prompt_resource_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/prompt_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/sql_dataset_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/sql_source_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/storage_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/structured_output_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/telemetry_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/tenant_wiki_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/tool_output_contract.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/visual_kb_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/visual_tool_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/warmup_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/web_search/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/services/web_search_service.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_main.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/account.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/home_hosted_default.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/pdf/base.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/pdf/letter.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/pdf/report.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/pdf/simple.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/account_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/api_key_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/categories_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/configuration_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/connectors_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/memory_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/rag_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/tool_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -299,7 +299,13 @@ def register_views(app):
|
|
|
299
299
|
return redirect(signed_url)
|
|
300
300
|
|
|
301
301
|
# Fallback path: stream bytes from storage through Flask.
|
|
302
|
-
|
|
302
|
+
try:
|
|
303
|
+
file_bytes = storage_service.get_document_content(company_short_name, storage_key)
|
|
304
|
+
except IAToolkitException as e:
|
|
305
|
+
if e.error_type != IAToolkitException.ErrorType.FILE_IO_ERROR:
|
|
306
|
+
raise
|
|
307
|
+
# Generated downloads are deleted after the tenant's retention.
|
|
308
|
+
abort(404, "This file has expired or is no longer available.")
|
|
303
309
|
guessed_mime, _ = mimetypes.guess_type(output_filename)
|
|
304
310
|
return send_file(
|
|
305
311
|
BytesIO(file_bytes),
|
|
@@ -128,6 +128,9 @@ tools:
|
|
|
128
128
|
- orientation
|
|
129
129
|
- function_name: iat_send_email
|
|
130
130
|
description: iatoolkit mail system. envia mails cuando un usuario lo solicita.
|
|
131
|
+
# Sends a real email: simulated, never sent, when an evaluation replays an agent.
|
|
132
|
+
execution_config:
|
|
133
|
+
side_effects: true
|
|
131
134
|
routing_profile:
|
|
132
135
|
tags:
|
|
133
136
|
- email
|
|
@@ -1425,6 +1425,7 @@ ui:
|
|
|
1425
1425
|
definitions_filter_summary: "Showing {visible} of {total} pipelines"
|
|
1426
1426
|
definition_last_run: "Last run"
|
|
1427
1427
|
definition_no_runs: "No runs"
|
|
1428
|
+
definition_column_id: "ID"
|
|
1428
1429
|
definition_column_pipeline: "Pipeline"
|
|
1429
1430
|
definition_column_input: "Input"
|
|
1430
1431
|
definition_column_steps: "Steps"
|
|
@@ -1440,6 +1440,7 @@ ui:
|
|
|
1440
1440
|
definitions_filter_summary: "Mostrando {visible} de {total} pipelines"
|
|
1441
1441
|
definition_last_run: "Última ejecución"
|
|
1442
1442
|
definition_no_runs: "Sin ejecuciones"
|
|
1443
|
+
definition_column_id: "ID"
|
|
1443
1444
|
definition_column_pipeline: "Pipeline"
|
|
1444
1445
|
definition_column_input: "Entrada"
|
|
1445
1446
|
definition_column_steps: "Pasos"
|
|
@@ -9,7 +9,7 @@ from sqlalchemy import Column, Integer, BigInteger, String, DateTime, Enum, Text
|
|
|
9
9
|
from sqlalchemy.orm import DeclarativeBase
|
|
10
10
|
from sqlalchemy.orm import relationship, class_mapper
|
|
11
11
|
from sqlalchemy.sql import func
|
|
12
|
-
from sqlalchemy import UniqueConstraint
|
|
12
|
+
from sqlalchemy import UniqueConstraint, Index
|
|
13
13
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
14
14
|
from datetime import datetime
|
|
15
15
|
from pgvector.sqlalchemy import Vector
|
|
@@ -385,6 +385,17 @@ class Tool(Base):
|
|
|
385
385
|
|
|
386
386
|
company = relationship('Company', back_populates='tools')
|
|
387
387
|
|
|
388
|
+
@property
|
|
389
|
+
def has_side_effects(self) -> bool:
|
|
390
|
+
"""Whether calling this tool changes something outside the conversation.
|
|
391
|
+
|
|
392
|
+
Declared explicitly with `execution_config.side_effects: true`; tools
|
|
393
|
+
are read-only unless they say otherwise. Model evaluations replay real
|
|
394
|
+
executions and simulate these tools instead of running them.
|
|
395
|
+
"""
|
|
396
|
+
config = self.execution_config if isinstance(self.execution_config, dict) else {}
|
|
397
|
+
return config.get("side_effects") is True
|
|
398
|
+
|
|
388
399
|
def to_dict(self):
|
|
389
400
|
return {column.key: getattr(self, column.key) for column in class_mapper(self.__class__).columns}
|
|
390
401
|
|
|
@@ -598,6 +609,19 @@ class LLMQuery(Base):
|
|
|
598
609
|
created_at = Column(DateTime, default=datetime.now)
|
|
599
610
|
task_id = Column(Integer, default=None, nullable=True)
|
|
600
611
|
|
|
612
|
+
# Execution trace: enough to replay an agent execution later (model
|
|
613
|
+
# evaluations). prompt_inputs are the caller's raw inputs, before they are
|
|
614
|
+
# merged with the user profile; input_files hold storage references only,
|
|
615
|
+
# never file content.
|
|
616
|
+
prompt_name = Column(String, nullable=True)
|
|
617
|
+
prompt_inputs = Column(JSON, nullable=True)
|
|
618
|
+
input_files = Column(JSON, nullable=True)
|
|
619
|
+
input_files_purged_at = Column(DateTime, nullable=True)
|
|
620
|
+
|
|
621
|
+
__table_args__ = (
|
|
622
|
+
Index('ix_iat_queries_company_prompt_created', 'company_id', 'prompt_name', 'created_at'),
|
|
623
|
+
)
|
|
624
|
+
|
|
601
625
|
company = relationship("Company", back_populates="llm_queries")
|
|
602
626
|
|
|
603
627
|
def to_dict(self):
|
|
@@ -790,6 +790,12 @@ class ConfigurationService:
|
|
|
790
790
|
add_error(f"tools[{i}]", "Missing required key: 'description'")
|
|
791
791
|
if not isinstance(tool.get("params"), dict):
|
|
792
792
|
add_error(f"tools[{i}]", "'params' key must be a dictionary.")
|
|
793
|
+
execution_config = tool.get("execution_config")
|
|
794
|
+
if execution_config is not None:
|
|
795
|
+
if not isinstance(execution_config, dict):
|
|
796
|
+
add_error(f"tools[{i}].execution_config", "Must be a dictionary.")
|
|
797
|
+
elif "side_effects" in execution_config and not isinstance(execution_config["side_effects"], bool):
|
|
798
|
+
add_error(f"tools[{i}].execution_config.side_effects", "Must be true or false.")
|
|
793
799
|
|
|
794
800
|
# 6. Prompts
|
|
795
801
|
prompt_list, categories_config = self._get_prompt_config(config)
|
|
@@ -14,6 +14,11 @@ from time import perf_counter
|
|
|
14
14
|
from uuid import uuid4
|
|
15
15
|
|
|
16
16
|
|
|
17
|
+
#: request_source of the executions a model evaluation replays. Tools that
|
|
18
|
+
#: declare side effects are simulated for them instead of being run.
|
|
19
|
+
EVALUATION_REQUEST_SOURCE = "evaluation"
|
|
20
|
+
|
|
21
|
+
|
|
17
22
|
class Dispatcher:
|
|
18
23
|
# System tools whose answer depends on who is asking, so the dispatcher
|
|
19
24
|
# injects the identity server-side. The wiki tools are here because a page's
|
|
@@ -157,6 +162,22 @@ class Dispatcher:
|
|
|
157
162
|
arguments=dict(kwargs),
|
|
158
163
|
)
|
|
159
164
|
started_at = perf_counter()
|
|
165
|
+
if self._is_simulated_call(tool_def, _iat_runtime_source):
|
|
166
|
+
result = self._simulated_result(function_name)
|
|
167
|
+
self._notify_tool_execution_hook(
|
|
168
|
+
"after_dispatch",
|
|
169
|
+
execution_id=execution_id,
|
|
170
|
+
company_short_name=company_short_name,
|
|
171
|
+
function_name=function_name,
|
|
172
|
+
user_identifier=user_identifier,
|
|
173
|
+
runtime_source=_iat_runtime_source,
|
|
174
|
+
tool_def=tool_def,
|
|
175
|
+
arguments=dict(kwargs),
|
|
176
|
+
status="simulated",
|
|
177
|
+
duration_ms=int(round((perf_counter() - started_at) * 1000)),
|
|
178
|
+
result=result,
|
|
179
|
+
)
|
|
180
|
+
return result
|
|
160
181
|
try:
|
|
161
182
|
result = self._dispatch_resolved_tool(
|
|
162
183
|
company_short_name=company_short_name,
|
|
@@ -195,6 +216,24 @@ class Dispatcher:
|
|
|
195
216
|
)
|
|
196
217
|
raise
|
|
197
218
|
|
|
219
|
+
@staticmethod
|
|
220
|
+
def _is_simulated_call(tool_def, runtime_source: str | None) -> bool:
|
|
221
|
+
if str(runtime_source or "").strip().lower() != EVALUATION_REQUEST_SOURCE:
|
|
222
|
+
return False
|
|
223
|
+
return bool(getattr(tool_def, "has_side_effects", False))
|
|
224
|
+
|
|
225
|
+
@staticmethod
|
|
226
|
+
def _simulated_result(function_name: str) -> dict:
|
|
227
|
+
# Returned to the model in place of the real call, so the agent can keep
|
|
228
|
+
# going: the evaluation measures its reasoning, not this action's outcome.
|
|
229
|
+
return {
|
|
230
|
+
"status": "simulated",
|
|
231
|
+
"message": (
|
|
232
|
+
f"Action '{function_name}' was not executed: this is a model evaluation "
|
|
233
|
+
"and the tool has side effects. Continue as if it had succeeded."
|
|
234
|
+
),
|
|
235
|
+
}
|
|
236
|
+
|
|
198
237
|
def _dispatch_resolved_tool(
|
|
199
238
|
self,
|
|
200
239
|
*,
|
|
@@ -131,7 +131,8 @@ class llmClient:
|
|
|
131
131
|
execution_metadata: Optional[Dict[str, Any]] = None,
|
|
132
132
|
request_metadata: Optional[Dict[str, str]] = None,
|
|
133
133
|
telemetry_request: Optional[Dict[str, Any]] = None,
|
|
134
|
-
response_contract: Optional[Dict[str, Any]] = None
|
|
134
|
+
response_contract: Optional[Dict[str, Any]] = None,
|
|
135
|
+
execution_trace: Optional[Dict[str, Any]] = None
|
|
135
136
|
) -> dict:
|
|
136
137
|
|
|
137
138
|
self._assert_runtime_not_suspended(company)
|
|
@@ -426,7 +427,8 @@ class llmClient:
|
|
|
426
427
|
response=self.serialize_response(response, decoded_response),
|
|
427
428
|
function_calls=f_calls,
|
|
428
429
|
stats=combined_stats,
|
|
429
|
-
answer_time=stats['response_time']
|
|
430
|
+
answer_time=stats['response_time'],
|
|
431
|
+
**self._execution_trace_columns(execution_trace)
|
|
430
432
|
)
|
|
431
433
|
self.llmquery_repo.add_query(query)
|
|
432
434
|
telemetry_execution.finalize(
|
|
@@ -503,6 +505,7 @@ class llmClient:
|
|
|
503
505
|
response={},
|
|
504
506
|
valid_response=False,
|
|
505
507
|
function_calls=f_calls,
|
|
508
|
+
**self._execution_trace_columns(execution_trace)
|
|
506
509
|
)
|
|
507
510
|
self.llmquery_repo.add_query(query)
|
|
508
511
|
telemetry_execution.finalize(
|
|
@@ -1324,6 +1327,24 @@ class llmClient:
|
|
|
1324
1327
|
stats_dict["provider_calls"] = provider_calls
|
|
1325
1328
|
return stats_dict
|
|
1326
1329
|
|
|
1330
|
+
@staticmethod
|
|
1331
|
+
def _execution_trace_columns(execution_trace: Optional[Dict[str, Any]]) -> dict:
|
|
1332
|
+
"""Maps the caller's execution trace onto the LLMQuery trace columns."""
|
|
1333
|
+
if not isinstance(execution_trace, dict):
|
|
1334
|
+
return {}
|
|
1335
|
+
|
|
1336
|
+
columns = {}
|
|
1337
|
+
prompt_name = str(execution_trace.get("prompt_name") or "").strip()
|
|
1338
|
+
if prompt_name:
|
|
1339
|
+
columns["prompt_name"] = prompt_name
|
|
1340
|
+
prompt_inputs = execution_trace.get("prompt_inputs")
|
|
1341
|
+
if isinstance(prompt_inputs, dict):
|
|
1342
|
+
columns["prompt_inputs"] = prompt_inputs
|
|
1343
|
+
input_files = execution_trace.get("input_files")
|
|
1344
|
+
if isinstance(input_files, list) and input_files:
|
|
1345
|
+
columns["input_files"] = input_files
|
|
1346
|
+
return columns
|
|
1347
|
+
|
|
1327
1348
|
@classmethod
|
|
1328
1349
|
def _compact_execution_metadata_for_stats(cls, key: str, value):
|
|
1329
1350
|
if key == "tool_router":
|
|
@@ -963,6 +963,30 @@ class QueryService:
|
|
|
963
963
|
return False
|
|
964
964
|
return any(marker in error_text for marker in cls._PREVIOUS_RESPONSE_NOT_FOUND_MARKERS)
|
|
965
965
|
|
|
966
|
+
@staticmethod
|
|
967
|
+
def build_execution_trace(*,
|
|
968
|
+
prompt_name: str | None,
|
|
969
|
+
client_data: dict | None,
|
|
970
|
+
input_files: list | None) -> dict:
|
|
971
|
+
"""
|
|
972
|
+
What an agent execution needs to be replayed later. Inputs are taken
|
|
973
|
+
as the caller sent them, before build_user_turn_prompt merges them with
|
|
974
|
+
the user profile; keys starting with "_" are internal plumbing.
|
|
975
|
+
"""
|
|
976
|
+
trace = {}
|
|
977
|
+
normalized_prompt_name = str(prompt_name or "").strip()
|
|
978
|
+
if normalized_prompt_name:
|
|
979
|
+
trace["prompt_name"] = normalized_prompt_name
|
|
980
|
+
safe_client_data = client_data if isinstance(client_data, dict) else {}
|
|
981
|
+
trace["prompt_inputs"] = {
|
|
982
|
+
key: value
|
|
983
|
+
for key, value in safe_client_data.items()
|
|
984
|
+
if not str(key or "").startswith("_")
|
|
985
|
+
}
|
|
986
|
+
if isinstance(input_files, list) and input_files:
|
|
987
|
+
trace["input_files"] = [dict(item) for item in input_files if isinstance(item, dict)]
|
|
988
|
+
return trace
|
|
989
|
+
|
|
966
990
|
def _invoke_with_history_recovery(self,
|
|
967
991
|
*,
|
|
968
992
|
company,
|
|
@@ -984,7 +1008,8 @@ class QueryService:
|
|
|
984
1008
|
telemetry_request: dict | None,
|
|
985
1009
|
prompt_output_contract: dict,
|
|
986
1010
|
history_handle: HistoryHandle,
|
|
987
|
-
ignore_history: bool
|
|
1011
|
+
ignore_history: bool,
|
|
1012
|
+
execution_trace: dict | None = None) -> tuple[dict, HistoryHandle]:
|
|
988
1013
|
previous_response_id = history_handle.request_params.get('previous_response_id')
|
|
989
1014
|
context_history = history_handle.request_params.get('context_history')
|
|
990
1015
|
|
|
@@ -1009,6 +1034,7 @@ class QueryService:
|
|
|
1009
1034
|
request_metadata=request_metadata,
|
|
1010
1035
|
telemetry_request=telemetry_request,
|
|
1011
1036
|
response_contract=prompt_output_contract if prompt_output_contract.get("schema") else None,
|
|
1037
|
+
execution_trace=execution_trace,
|
|
1012
1038
|
)
|
|
1013
1039
|
return response, history_handle
|
|
1014
1040
|
except Exception as invoke_error:
|
|
@@ -1067,6 +1093,7 @@ class QueryService:
|
|
|
1067
1093
|
request_metadata=request_metadata,
|
|
1068
1094
|
telemetry_request=telemetry_request,
|
|
1069
1095
|
response_contract=prompt_output_contract if prompt_output_contract.get("schema") else None,
|
|
1096
|
+
execution_trace=execution_trace,
|
|
1070
1097
|
)
|
|
1071
1098
|
return response, retry_history_handle
|
|
1072
1099
|
|
|
@@ -1377,10 +1404,16 @@ class QueryService:
|
|
|
1377
1404
|
client_data: dict = {},
|
|
1378
1405
|
task_id: Optional[int] = None,
|
|
1379
1406
|
ignore_history: bool = False,
|
|
1380
|
-
files: list = []
|
|
1407
|
+
files: list = [],
|
|
1408
|
+
input_files: list | None = None
|
|
1381
1409
|
) -> dict:
|
|
1382
1410
|
try:
|
|
1383
1411
|
stage_started_at = time.time()
|
|
1412
|
+
execution_trace = self.build_execution_trace(
|
|
1413
|
+
prompt_name=prompt_name,
|
|
1414
|
+
client_data=client_data,
|
|
1415
|
+
input_files=input_files,
|
|
1416
|
+
)
|
|
1384
1417
|
request_source = None
|
|
1385
1418
|
|
|
1386
1419
|
logging.debug(
|
|
@@ -1742,6 +1775,7 @@ class QueryService:
|
|
|
1742
1775
|
prompt_output_contract=prompt_output_contract,
|
|
1743
1776
|
history_handle=history_handle,
|
|
1744
1777
|
ignore_history=ignore_history,
|
|
1778
|
+
execution_trace=execution_trace,
|
|
1745
1779
|
)
|
|
1746
1780
|
log_stage("invoke_with_history_recovery")
|
|
1747
1781
|
|
|
@@ -56,6 +56,13 @@ def _validate_system_tool_entry(entry: dict, index: int) -> dict:
|
|
|
56
56
|
routing_profile = entry.get("routing_profile")
|
|
57
57
|
normalized_routing_profile = _validate_routing_profile(routing_profile, index)
|
|
58
58
|
|
|
59
|
+
execution_config = entry.get("execution_config")
|
|
60
|
+
if execution_config is not None:
|
|
61
|
+
if not isinstance(execution_config, dict):
|
|
62
|
+
raise ValueError(f"tools[{index}].execution_config must be an object")
|
|
63
|
+
if "side_effects" in execution_config and not isinstance(execution_config["side_effects"], bool):
|
|
64
|
+
raise ValueError(f"tools[{index}].execution_config.side_effects must be a boolean")
|
|
65
|
+
|
|
59
66
|
normalized = {
|
|
60
67
|
"function_name": function_name,
|
|
61
68
|
"description": description,
|
|
@@ -67,6 +74,8 @@ def _validate_system_tool_entry(entry: dict, index: int) -> dict:
|
|
|
67
74
|
normalized["routing"] = normalized_routing
|
|
68
75
|
if normalized_routing_profile is not None:
|
|
69
76
|
normalized["routing_profile"] = normalized_routing_profile
|
|
77
|
+
if execution_config is not None:
|
|
78
|
+
normalized["execution_config"] = copy.deepcopy(execution_config)
|
|
70
79
|
return normalized
|
|
71
80
|
|
|
72
81
|
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
# IAToolkit is open source software.
|
|
5
5
|
|
|
6
6
|
from injector import inject
|
|
7
|
+
import copy
|
|
7
8
|
import os
|
|
8
9
|
import json
|
|
9
10
|
import logging
|
|
@@ -930,6 +931,7 @@ class ToolService:
|
|
|
930
931
|
name=function['function_name'],
|
|
931
932
|
description=function['description'],
|
|
932
933
|
parameters=function['parameters'],
|
|
934
|
+
execution_config=copy.deepcopy(function.get("execution_config")),
|
|
933
935
|
output_contract=clone_output_contract(function.get("output_contract")),
|
|
934
936
|
tool_type=Tool.TYPE_SYSTEM,
|
|
935
937
|
source=Tool.SOURCE_SYSTEM,
|
|
@@ -972,6 +974,7 @@ class ToolService:
|
|
|
972
974
|
and tool.description == definition.get("description")
|
|
973
975
|
and (tool.parameters or {}) == (definition.get("parameters") or {})
|
|
974
976
|
and (tool.output_contract or {}) == (definition.get("output_contract") or {})
|
|
977
|
+
and (tool.execution_config or {}) == (definition.get("execution_config") or {})
|
|
975
978
|
)
|
|
976
979
|
|
|
977
980
|
def _system_tools_catalog_has_drift(
|
|
@@ -1032,6 +1035,7 @@ class ToolService:
|
|
|
1032
1035
|
name=function_name,
|
|
1033
1036
|
description=function.get("description"),
|
|
1034
1037
|
parameters=function.get("parameters") or {},
|
|
1038
|
+
execution_config=copy.deepcopy(function.get("execution_config")),
|
|
1035
1039
|
output_contract=clone_output_contract(function.get("output_contract")),
|
|
1036
1040
|
tool_type=Tool.TYPE_SYSTEM,
|
|
1037
1041
|
source=Tool.SOURCE_SYSTEM,
|
|
@@ -1128,6 +1132,7 @@ class ToolService:
|
|
|
1128
1132
|
name=name,
|
|
1129
1133
|
description=tool_data['description'],
|
|
1130
1134
|
parameters=tool_data['params'],
|
|
1135
|
+
execution_config=copy.deepcopy(tool_data.get('execution_config')),
|
|
1131
1136
|
output_contract=clone_output_contract(tool_data.get('output_contract')),
|
|
1132
1137
|
|
|
1133
1138
|
tool_type=Tool.TYPE_NATIVE,
|
|
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.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.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
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/core_identity.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/email_output.prompt
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/format_styles.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/html_structures.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/links_documents.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/output_basics.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.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.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/connectors/file_connector_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/infra/connectors/google_drive_connector.py
RENAMED
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.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.51.3 → iatoolkit-2.53.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.51.3 → iatoolkit-2.53.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
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.51.3 → iatoolkit-2.53.0}/src/iatoolkit/repositories/filesystem_asset_repository.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|