iatoolkit 2.47.1__tar.gz → 2.48.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.47.1/src/iatoolkit.egg-info → iatoolkit-2.48.0}/PKG-INFO +1 -1
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/__init__.py +1 -1
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/url_safety.py +71 -9
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/locales/en.yaml +83 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/locales/es.yaml +83 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/models.py +1 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/tool_service.py +4 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0/src/iatoolkit.egg-info}/PKG-INFO +1 -1
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/LICENSE +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/pyproject.toml +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/readme.md +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/requirements.txt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/setup.cfg +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/bridge_validation.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/model_registry.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/routes.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/secret_resolver.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/core.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/google_auth_client.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/inference_handler.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/api_key_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/bridge_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/database_manager.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/knowledge_wiki_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/memory_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/runtime_logging.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/api_key_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/attachment_policy_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/benchmark_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/company_context_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/configuration_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/context_builder_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/dispatcher_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/history_manager_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/http_tool_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/inference_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/knowledge_base_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/llm_client_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/mcp_token_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/memory_compiler_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/memory_lint_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/memory_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/memory_wiki_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/operator_identity_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/contracts.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/parsers/validator.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/pdf_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/prompt_resource_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/prompt_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/query_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/sql_dataset_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/sql_source_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/storage_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/structured_output_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/system_tools.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/telemetry_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/tenant_wiki_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/tool_output_contract.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/visual_kb_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/visual_tool_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/warmup_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/web_search/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/services/web_search_service.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_main.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/account.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/home_hosted_default.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/pdf/base.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/pdf/letter.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/pdf/report.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/pdf/simple.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/account_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/api_key_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/categories_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/configuration_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/connectors_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/memory_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/rag_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/tool_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -19,6 +19,10 @@ as well, and a public URL can 302 to one. This module therefore:
|
|
|
19
19
|
* resolves hostnames and rejects them when ANY resolved address falls in those
|
|
20
20
|
ranges (fail-closed on a private answer; fail-open only when the name cannot
|
|
21
21
|
be resolved at all, since that request could not have reached anything);
|
|
22
|
+
* accepts an operator-configured ``allowed_private_hosts`` list, so a deployment
|
|
23
|
+
whose callback or download target is legitimately internal (portal-backend on
|
|
24
|
+
172.19.x and the like) can name that host instead of loosening the guard for
|
|
25
|
+
everyone - loopback, link-local and reserved stay unreachable even when listed;
|
|
22
26
|
* offers ``fetch_with_safe_redirects`` which never lets ``requests`` follow a
|
|
23
27
|
redirect blindly: every hop is re-validated with the same rules.
|
|
24
28
|
|
|
@@ -89,10 +93,42 @@ def resolve_host_classifications(hostname: str) -> list[str] | None:
|
|
|
89
93
|
return classifications
|
|
90
94
|
|
|
91
95
|
|
|
96
|
+
def _normalize_host_allowlist(allowed_hosts) -> frozenset[str]:
|
|
97
|
+
"""Reduces every entry to the bare hostname ``urlparse`` will hand us, so the
|
|
98
|
+
comparison cannot silently miss.
|
|
99
|
+
|
|
100
|
+
Accepts what an operator actually types in a config file: a hostname, a
|
|
101
|
+
hostname with a port, or the whole callback URL
|
|
102
|
+
(``https://portal-api.example.com/hook``). An entry that never matched would
|
|
103
|
+
look like correct configuration while the target kept failing with the same
|
|
104
|
+
opaque error, which is the worst outcome available here.
|
|
105
|
+
"""
|
|
106
|
+
normalized = set()
|
|
107
|
+
for entry in allowed_hosts or ():
|
|
108
|
+
text = str(entry or "").strip().lower()
|
|
109
|
+
if not text:
|
|
110
|
+
continue
|
|
111
|
+
if "://" in text:
|
|
112
|
+
text = urlparse(text).hostname or ""
|
|
113
|
+
elif text.startswith("["):
|
|
114
|
+
# Bracketed IPv6 literal ("[fd00::1]:8443") - the colons are part of
|
|
115
|
+
# the address, so it cannot go through the host:port split below.
|
|
116
|
+
text = text[1:].split("]", 1)[0]
|
|
117
|
+
else:
|
|
118
|
+
# host[:port][/path] with no scheme: urlparse would read the whole
|
|
119
|
+
# thing as a path, so strip the port and path by hand.
|
|
120
|
+
text = text.split("/", 1)[0].split(":", 1)[0]
|
|
121
|
+
text = text.strip().rstrip(".")
|
|
122
|
+
if text:
|
|
123
|
+
normalized.add(text)
|
|
124
|
+
return frozenset(normalized)
|
|
125
|
+
|
|
126
|
+
|
|
92
127
|
def assert_public_http_url(
|
|
93
128
|
url: str,
|
|
94
129
|
*,
|
|
95
130
|
allowed_schemes: tuple[str, ...] = ("https",),
|
|
131
|
+
allowed_private_hosts: tuple[str, ...] = (),
|
|
96
132
|
error_type: IAToolkitException.ErrorType = IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
97
133
|
label: str = "URL",
|
|
98
134
|
) -> ParseResult:
|
|
@@ -100,6 +136,16 @@ def assert_public_http_url(
|
|
|
100
136
|
Raises IAToolkitException(error_type) unless ``url`` is an absolute URL with
|
|
101
137
|
an allowed scheme whose host is a public internet address (literal or via
|
|
102
138
|
DNS). Returns the parsed URL on success.
|
|
139
|
+
|
|
140
|
+
``allowed_private_hosts`` is the operator's escape hatch for the legitimate
|
|
141
|
+
case this guard otherwise blocks: a target that is internal on purpose, such
|
|
142
|
+
as a callback back into the deployment's own network. A host named there is
|
|
143
|
+
accepted when it is **private** (RFC1918 & friends), by literal IP or via
|
|
144
|
+
DNS. It is still rejected when it is loopback, link-local, multicast,
|
|
145
|
+
reserved or unspecified - those are the ranges an SSRF payload actually
|
|
146
|
+
wants (127.0.0.1, ::1, 169.254.169.254), and the tenant configuration that
|
|
147
|
+
feeds this list is editable by tenant admins, who are not the platform
|
|
148
|
+
operator. The blocked local *names* stay blocked for the same reason.
|
|
103
149
|
"""
|
|
104
150
|
normalized = str(url or "").strip()
|
|
105
151
|
parsed = urlparse(normalized)
|
|
@@ -116,18 +162,29 @@ def assert_public_http_url(
|
|
|
116
162
|
if hostname in _BLOCKED_HOSTNAMES or hostname.endswith(_BLOCKED_HOST_SUFFIXES):
|
|
117
163
|
raise IAToolkitException(error_type, f"{label} host is not allowed.")
|
|
118
164
|
|
|
165
|
+
host_allows_private = hostname in _normalize_host_allowlist(allowed_private_hosts)
|
|
166
|
+
|
|
119
167
|
ip_value = _to_ip_or_none(hostname)
|
|
120
168
|
if ip_value is not None:
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
169
|
+
classification = classify_ip(ip_value)
|
|
170
|
+
if classification == "public" or (classification == "private" and host_allows_private):
|
|
171
|
+
return parsed
|
|
172
|
+
raise IAToolkitException(error_type, f"{label} host is not allowed.")
|
|
124
173
|
|
|
125
174
|
classifications = resolve_host_classifications(hostname)
|
|
126
|
-
if classifications
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
175
|
+
if classifications:
|
|
176
|
+
# 'blocked' is never openable from configuration - see the docstring.
|
|
177
|
+
if any(kind == "blocked" for kind in classifications):
|
|
178
|
+
raise IAToolkitException(
|
|
179
|
+
error_type,
|
|
180
|
+
f"{label} host is not allowed "
|
|
181
|
+
"(resolves to a loopback, link-local or reserved address).",
|
|
182
|
+
)
|
|
183
|
+
if any(kind == "private" for kind in classifications) and not host_allows_private:
|
|
184
|
+
raise IAToolkitException(
|
|
185
|
+
error_type,
|
|
186
|
+
f"{label} host is not allowed (resolves to a private or reserved address).",
|
|
187
|
+
)
|
|
131
188
|
return parsed
|
|
132
189
|
|
|
133
190
|
|
|
@@ -135,6 +192,7 @@ def fetch_with_safe_redirects(
|
|
|
135
192
|
url: str,
|
|
136
193
|
*,
|
|
137
194
|
allowed_schemes: tuple[str, ...] = ("https",),
|
|
195
|
+
allowed_private_hosts: tuple[str, ...] = (),
|
|
138
196
|
error_type: IAToolkitException.ErrorType = IAToolkitException.ErrorType.INVALID_PARAMETER,
|
|
139
197
|
label: str = "URL",
|
|
140
198
|
max_redirects: int = 3,
|
|
@@ -151,7 +209,11 @@ def fetch_with_safe_redirects(
|
|
|
151
209
|
current_url = str(url or "").strip()
|
|
152
210
|
for _ in range(max_redirects + 1):
|
|
153
211
|
assert_public_http_url(
|
|
154
|
-
current_url,
|
|
212
|
+
current_url,
|
|
213
|
+
allowed_schemes=allowed_schemes,
|
|
214
|
+
allowed_private_hosts=allowed_private_hosts,
|
|
215
|
+
error_type=error_type,
|
|
216
|
+
label=label,
|
|
155
217
|
)
|
|
156
218
|
response = requests.get(current_url, allow_redirects=False, **requests_kwargs)
|
|
157
219
|
location = response.headers.get("Location") if response.status_code in _REDIRECT_STATUSES else None
|
|
@@ -1038,6 +1038,89 @@ ui:
|
|
|
1038
1038
|
status_auth_redirect: "Auth redirect"
|
|
1039
1039
|
unknown_client: "unknown client"
|
|
1040
1040
|
|
|
1041
|
+
scheduled_jobs:
|
|
1042
|
+
title: "Scheduled jobs"
|
|
1043
|
+
schedules: "Schedules"
|
|
1044
|
+
runs: "History"
|
|
1045
|
+
schedules_title: "Scheduled executions"
|
|
1046
|
+
runs_title: "Run history"
|
|
1047
|
+
loading: "Loading..."
|
|
1048
|
+
show_disabled: "Show disabled"
|
|
1049
|
+
new_schedule: "New schedule"
|
|
1050
|
+
edit_schedule: "Edit schedule"
|
|
1051
|
+
search_placeholder: "Search schedules or targets"
|
|
1052
|
+
refresh: "Refresh"
|
|
1053
|
+
name: "Name"
|
|
1054
|
+
schedule: "Schedule"
|
|
1055
|
+
next_run: "Next run"
|
|
1056
|
+
last_result: "Last result"
|
|
1057
|
+
enabled: "Enabled"
|
|
1058
|
+
disabled: "Disabled"
|
|
1059
|
+
actions: "Actions"
|
|
1060
|
+
all_schedules: "All schedules"
|
|
1061
|
+
status: "Status"
|
|
1062
|
+
all_statuses: "All statuses"
|
|
1063
|
+
default_view: "Default view"
|
|
1064
|
+
run: "Run"
|
|
1065
|
+
scheduled_for: "Scheduled for"
|
|
1066
|
+
duration: "Duration"
|
|
1067
|
+
detail: "Detail"
|
|
1068
|
+
identity: "Identity"
|
|
1069
|
+
target: "Target"
|
|
1070
|
+
target_type: "What to run"
|
|
1071
|
+
target_type_tool: "Tool"
|
|
1072
|
+
target_type_native_job: "Native job"
|
|
1073
|
+
target_type_pipeline: "Pipeline"
|
|
1074
|
+
timing: "Timing"
|
|
1075
|
+
cron_expression: "Cron expression"
|
|
1076
|
+
cron_help_format: "Format: minute, hour, day of month, month, day of week."
|
|
1077
|
+
cron_every_10_minutes: "every 10 min"
|
|
1078
|
+
cron_daily_at_3: "daily at 03:00"
|
|
1079
|
+
cron_weekdays_at_9: "weekdays at 09:00"
|
|
1080
|
+
timezone: "Timezone"
|
|
1081
|
+
execution: "Execution"
|
|
1082
|
+
queue: "Queue"
|
|
1083
|
+
timeout_seconds: "Timeout (seconds)"
|
|
1084
|
+
max_retries: "Retries"
|
|
1085
|
+
arguments_json: "Arguments (JSON)"
|
|
1086
|
+
policies: "Policies"
|
|
1087
|
+
misfire_policy: "After downtime"
|
|
1088
|
+
policy_skip: "Skip"
|
|
1089
|
+
policy_run_once: "Run once"
|
|
1090
|
+
policy_catch_up: "Catch up"
|
|
1091
|
+
grace_seconds: "Grace (seconds)"
|
|
1092
|
+
max_catch_up: "Catch-up limit"
|
|
1093
|
+
overlap_policy: "When a previous run is active"
|
|
1094
|
+
overlap_skip: "Skip new run"
|
|
1095
|
+
overlap_allow: "Allow overlap"
|
|
1096
|
+
delete_title: "Delete schedule?"
|
|
1097
|
+
delete_message: "The schedule and its run history will be permanently deleted."
|
|
1098
|
+
summary: "{active} active of {total}"
|
|
1099
|
+
empty: "No schedules found."
|
|
1100
|
+
run_now: "Run now"
|
|
1101
|
+
view_runs: "View runs"
|
|
1102
|
+
runs_summary: "{count} recent runs"
|
|
1103
|
+
runs_empty: "No runs found."
|
|
1104
|
+
attempt: "Attempt {count}"
|
|
1105
|
+
select_tool: "Select a tool"
|
|
1106
|
+
select_native_job: "Select a native job"
|
|
1107
|
+
select_pipeline: "Select a pipeline"
|
|
1108
|
+
invalid_arguments_json: "Arguments must be a valid JSON object."
|
|
1109
|
+
request_failed: "Request failed"
|
|
1110
|
+
saved: "Schedule saved."
|
|
1111
|
+
enabled_success: "Schedule enabled."
|
|
1112
|
+
disabled_success: "Schedule disabled."
|
|
1113
|
+
run_queued: "Run queued."
|
|
1114
|
+
deleted: "Schedule deleted."
|
|
1115
|
+
status_never: "Never run"
|
|
1116
|
+
status_pending: "Pending"
|
|
1117
|
+
status_queued: "Queued"
|
|
1118
|
+
status_running: "Running"
|
|
1119
|
+
status_retrying: "Retrying"
|
|
1120
|
+
status_succeeded: "Succeeded"
|
|
1121
|
+
status_failed: "Failed"
|
|
1122
|
+
status_skipped: "Skipped"
|
|
1123
|
+
|
|
1041
1124
|
pipelines:
|
|
1042
1125
|
source_root_label: "Root (prefix)"
|
|
1043
1126
|
source_root_placeholder: "companies/<company_short_name>/..."
|
|
@@ -1053,6 +1053,89 @@ ui:
|
|
|
1053
1053
|
unknown_client: "cliente desconocido"
|
|
1054
1054
|
|
|
1055
1055
|
|
|
1056
|
+
scheduled_jobs:
|
|
1057
|
+
title: "Jobs programados"
|
|
1058
|
+
schedules: "Programaciones"
|
|
1059
|
+
runs: "Historial"
|
|
1060
|
+
schedules_title: "Ejecuciones programadas"
|
|
1061
|
+
runs_title: "Historial de ejecuciones"
|
|
1062
|
+
loading: "Cargando..."
|
|
1063
|
+
show_disabled: "Mostrar deshabilitados"
|
|
1064
|
+
new_schedule: "Nueva programación"
|
|
1065
|
+
edit_schedule: "Editar programación"
|
|
1066
|
+
search_placeholder: "Buscar programaciones o destinos"
|
|
1067
|
+
refresh: "Actualizar"
|
|
1068
|
+
name: "Nombre"
|
|
1069
|
+
schedule: "Programación"
|
|
1070
|
+
next_run: "Próxima ejecución"
|
|
1071
|
+
last_result: "Último resultado"
|
|
1072
|
+
enabled: "Habilitada"
|
|
1073
|
+
disabled: "Deshabilitada"
|
|
1074
|
+
actions: "Acciones"
|
|
1075
|
+
all_schedules: "Todas las programaciones"
|
|
1076
|
+
status: "Estado"
|
|
1077
|
+
all_statuses: "Todos los estados"
|
|
1078
|
+
default_view: "Vista por defecto"
|
|
1079
|
+
run: "Ejecución"
|
|
1080
|
+
scheduled_for: "Programada para"
|
|
1081
|
+
duration: "Duración"
|
|
1082
|
+
detail: "Detalle"
|
|
1083
|
+
identity: "Identidad"
|
|
1084
|
+
target: "Destino"
|
|
1085
|
+
target_type: "Qué ejecutar"
|
|
1086
|
+
target_type_tool: "Tool"
|
|
1087
|
+
target_type_native_job: "Job nativo"
|
|
1088
|
+
target_type_pipeline: "Pipeline"
|
|
1089
|
+
timing: "Horario"
|
|
1090
|
+
cron_expression: "Expresión cron"
|
|
1091
|
+
cron_help_format: "Formato: minuto, hora, día del mes, mes, día de la semana."
|
|
1092
|
+
cron_every_10_minutes: "cada 10 min"
|
|
1093
|
+
cron_daily_at_3: "diariamente a las 03:00"
|
|
1094
|
+
cron_weekdays_at_9: "lunes a viernes a las 09:00"
|
|
1095
|
+
timezone: "Zona horaria"
|
|
1096
|
+
execution: "Ejecución"
|
|
1097
|
+
queue: "Cola"
|
|
1098
|
+
timeout_seconds: "Timeout (segundos)"
|
|
1099
|
+
max_retries: "Reintentos"
|
|
1100
|
+
arguments_json: "Argumentos (JSON)"
|
|
1101
|
+
policies: "Políticas"
|
|
1102
|
+
misfire_policy: "Después de una interrupción"
|
|
1103
|
+
policy_skip: "Omitir"
|
|
1104
|
+
policy_run_once: "Ejecutar una vez"
|
|
1105
|
+
policy_catch_up: "Recuperar pendientes"
|
|
1106
|
+
grace_seconds: "Tolerancia (segundos)"
|
|
1107
|
+
max_catch_up: "Límite de recuperación"
|
|
1108
|
+
overlap_policy: "Cuando una ejecución anterior sigue activa"
|
|
1109
|
+
overlap_skip: "Omitir nueva ejecución"
|
|
1110
|
+
overlap_allow: "Permitir solapamiento"
|
|
1111
|
+
delete_title: "¿Eliminar programación?"
|
|
1112
|
+
delete_message: "La programación y su historial de ejecuciones se eliminarán permanentemente."
|
|
1113
|
+
summary: "{active} activas de {total}"
|
|
1114
|
+
empty: "No se encontraron programaciones."
|
|
1115
|
+
run_now: "Ejecutar ahora"
|
|
1116
|
+
view_runs: "Ver ejecuciones"
|
|
1117
|
+
runs_summary: "{count} ejecuciones recientes"
|
|
1118
|
+
runs_empty: "No se encontraron ejecuciones."
|
|
1119
|
+
attempt: "Intento {count}"
|
|
1120
|
+
select_tool: "Selecciona una tool"
|
|
1121
|
+
select_native_job: "Selecciona un job nativo"
|
|
1122
|
+
select_pipeline: "Selecciona un pipeline"
|
|
1123
|
+
invalid_arguments_json: "Los argumentos deben ser un objeto JSON válido."
|
|
1124
|
+
request_failed: "La solicitud falló"
|
|
1125
|
+
saved: "Programación guardada."
|
|
1126
|
+
enabled_success: "Programación habilitada."
|
|
1127
|
+
disabled_success: "Programación deshabilitada."
|
|
1128
|
+
run_queued: "Ejecución encolada."
|
|
1129
|
+
deleted: "Programación eliminada."
|
|
1130
|
+
status_never: "Nunca ejecutada"
|
|
1131
|
+
status_pending: "Pendiente"
|
|
1132
|
+
status_queued: "En cola"
|
|
1133
|
+
status_running: "Ejecutando"
|
|
1134
|
+
status_retrying: "Reintentando"
|
|
1135
|
+
status_succeeded: "Exitosa"
|
|
1136
|
+
status_failed: "Fallida"
|
|
1137
|
+
status_skipped: "Omitida"
|
|
1138
|
+
|
|
1056
1139
|
pipelines:
|
|
1057
1140
|
source_root_label: "Raiz (prefijo)"
|
|
1058
1141
|
source_root_placeholder: "companies/<company_short_name>/..."
|
|
@@ -358,6 +358,7 @@ class Tool(Base):
|
|
|
358
358
|
|
|
359
359
|
# source of the definition (Source of Truth)
|
|
360
360
|
SOURCE_SYSTEM = 'SYSTEM'
|
|
361
|
+
SOURCE_EXTENSION = 'EXTENSION' # registered by an installed runtime extension
|
|
361
362
|
SOURCE_YAML = 'YAML' # defined in company.yaml
|
|
362
363
|
SOURCE_USER = 'USER' # defined via GUI/API
|
|
363
364
|
SOURCE_PACK = 'PACK' # materialized by enterprise control-plane
|
|
@@ -983,6 +983,8 @@ class ToolService:
|
|
|
983
983
|
desired_names.discard("")
|
|
984
984
|
|
|
985
985
|
for name, tool in existing_by_name.items():
|
|
986
|
+
if tool.source == Tool.SOURCE_EXTENSION:
|
|
987
|
+
continue
|
|
986
988
|
if name not in desired_names and bool(tool.is_active):
|
|
987
989
|
return True
|
|
988
990
|
|
|
@@ -1042,6 +1044,8 @@ class ToolService:
|
|
|
1042
1044
|
desired_names.discard("")
|
|
1043
1045
|
deactivated_tools = 0
|
|
1044
1046
|
for name, tool in existing_by_name.items():
|
|
1047
|
+
if tool.source == Tool.SOURCE_EXTENSION:
|
|
1048
|
+
continue
|
|
1045
1049
|
if name in desired_names or not bool(tool.is_active):
|
|
1046
1050
|
continue
|
|
1047
1051
|
tool.is_active = False
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.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.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/core_identity.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/email_output.prompt
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/format_styles.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/html_structures.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/links_documents.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/output_basics.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.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
|
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/connectors/file_connector_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.0}/src/iatoolkit/infra/connectors/google_drive_connector.py
RENAMED
|
File without changes
|
{iatoolkit-2.47.1 → iatoolkit-2.48.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.47.1 → iatoolkit-2.48.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.47.1 → iatoolkit-2.48.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.47.1 → iatoolkit-2.48.0}/src/iatoolkit/repositories/filesystem_asset_repository.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|