iatoolkit 2.2.3__tar.gz → 2.3.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.2.3/src/iatoolkit.egg-info → iatoolkit-2.3.0}/PKG-INFO +1 -1
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/__init__.py +1 -1
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/routes.py +7 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/config/llm_capabilities.yaml +2 -2
- iatoolkit-2.3.0/src/iatoolkit/config/system_prompts_pack.yaml +106 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/llm_proxy.py +178 -10
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/locales/en.yaml +27 -7
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/locales/es.yaml +27 -7
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/llm_query_repo.py +21 -23
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/models.py +51 -4
- iatoolkit-2.3.0/src/iatoolkit/repositories/prompt_resource_repo.py +40 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/company_context_service.py +21 -1
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/configuration_service.py +12 -9
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/context_builder_service.py +182 -10
- iatoolkit-2.3.0/src/iatoolkit/services/prompt_resource_service.py +182 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/prompt_service.py +81 -31
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/query_service.py +190 -37
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/system_prompt_catalog.py +102 -7
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/chat_state_rules.prompt +5 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/chat_user_profile.prompt +6 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/core_identity.prompt +6 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/email_output.prompt +6 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/file_download_output.prompt +10 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/html_structures.prompt +14 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/links_documents.prompt +26 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/multimodal_basics.prompt +6 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/output_basics.prompt +8 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/presentation_formatting.prompt +10 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/sql_aggregation_scope.prompt +14 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/sql_casting.prompt +14 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/sql_core.prompt +9 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/sql_jsonb.prompt +12 -0
- iatoolkit-2.3.0/src/iatoolkit/system_prompts/tool_html_passthrough.prompt +8 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/categories_api_view.py +4 -4
- iatoolkit-2.3.0/src/iatoolkit/views/prompt_resource_api_view.py +90 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0/src/iatoolkit.egg-info}/PKG-INFO +1 -1
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit.egg-info/SOURCES.txt +18 -0
- iatoolkit-2.2.3/src/iatoolkit/config/system_prompts_pack.yaml +0 -13
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/LICENSE +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/pyproject.toml +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/readme.md +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/requirements.txt +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/setup.cfg +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/model_registry.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/secret_resolver.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/config/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/core.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/google_auth_client.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/inference_handler.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/api_key_repo.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/database_manager.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/memory_repo.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/api_key_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/attachment_policy_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/benchmark_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/dispatcher_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/history_manager_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/http_tool_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/inference_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/knowledge_base_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/llm_client_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/memory_compiler_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/memory_lint_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/memory_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/memory_wiki_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/contracts.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/parsers/validator.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/pdf_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/sql_dataset_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/sql_source_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/storage_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/structured_output_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/system_tools.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/tool_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/visual_kb_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/visual_tool_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/warmup_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/web_search/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/services/web_search_service.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_main.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/system_prompts/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/system_prompts/query_main.prompt +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/home_hosted_default.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/pdf/base.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/pdf/letter.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/pdf/report.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/pdf/simple.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/api_key_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/configuration_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/connectors_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/memory_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/rag_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/tool_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-2.2.3 → iatoolkit-2.3.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -22,6 +22,7 @@ def register_views(app):
|
|
|
22
22
|
from iatoolkit.views.load_document_api_view import LoadDocumentApiView
|
|
23
23
|
from iatoolkit.views.user_feedback_api_view import UserFeedbackApiView
|
|
24
24
|
from iatoolkit.views.prompt_api_view import PromptApiView
|
|
25
|
+
from iatoolkit.views.prompt_resource_api_view import PromptResourceApiView
|
|
25
26
|
from iatoolkit.views.history_api_view import HistoryApiView
|
|
26
27
|
from iatoolkit.views.help_content_api_view import HelpContentApiView
|
|
27
28
|
from iatoolkit.views.profile_api_view import UserLanguageApiView
|
|
@@ -121,6 +122,12 @@ def register_views(app):
|
|
|
121
122
|
app.add_url_rule('/<company_short_name>/api/prompts/<prompt_name>',
|
|
122
123
|
view_func=prompt_view,
|
|
123
124
|
methods=['GET', 'POST','PUT', 'DELETE'])
|
|
125
|
+
|
|
126
|
+
app.add_url_rule(
|
|
127
|
+
'/<string:company_short_name>/api/admin/prompts/<string:prompt_name>/resources',
|
|
128
|
+
view_func=PromptResourceApiView.as_view('prompt_resources_api'),
|
|
129
|
+
methods=['GET', 'PUT'],
|
|
130
|
+
)
|
|
124
131
|
# toolbar buttons
|
|
125
132
|
app.add_url_rule('/<company_short_name>/api/feedback', view_func=UserFeedbackApiView.as_view('feedback'))
|
|
126
133
|
app.add_url_rule('/<company_short_name>/api/history', view_func=HistoryApiView.as_view('history'))
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
prompts:
|
|
3
|
+
- key: core_identity
|
|
4
|
+
filename: core_identity.prompt
|
|
5
|
+
include:
|
|
6
|
+
execution_modes:
|
|
7
|
+
- chat
|
|
8
|
+
- agent
|
|
9
|
+
- key: chat_user_profile
|
|
10
|
+
filename: chat_user_profile.prompt
|
|
11
|
+
include:
|
|
12
|
+
execution_modes:
|
|
13
|
+
- chat
|
|
14
|
+
- key: chat_state_rules
|
|
15
|
+
filename: chat_state_rules.prompt
|
|
16
|
+
include:
|
|
17
|
+
execution_modes:
|
|
18
|
+
- chat
|
|
19
|
+
- key: links_documents
|
|
20
|
+
filename: links_documents.prompt
|
|
21
|
+
include:
|
|
22
|
+
execution_modes:
|
|
23
|
+
- chat
|
|
24
|
+
- agent
|
|
25
|
+
- key: multimodal_basics
|
|
26
|
+
filename: multimodal_basics.prompt
|
|
27
|
+
include:
|
|
28
|
+
execution_modes:
|
|
29
|
+
- chat
|
|
30
|
+
- agent
|
|
31
|
+
- key: output_basics
|
|
32
|
+
filename: output_basics.prompt
|
|
33
|
+
include:
|
|
34
|
+
execution_modes:
|
|
35
|
+
- chat
|
|
36
|
+
- agent
|
|
37
|
+
response_modes:
|
|
38
|
+
- chat_compatible
|
|
39
|
+
- key: presentation_formatting
|
|
40
|
+
filename: presentation_formatting.prompt
|
|
41
|
+
include:
|
|
42
|
+
execution_modes:
|
|
43
|
+
- chat
|
|
44
|
+
response_modes:
|
|
45
|
+
- chat_compatible
|
|
46
|
+
- key: html_structures
|
|
47
|
+
filename: html_structures.prompt
|
|
48
|
+
include:
|
|
49
|
+
execution_modes:
|
|
50
|
+
- chat
|
|
51
|
+
response_modes:
|
|
52
|
+
- chat_compatible
|
|
53
|
+
- key: tool_html_passthrough
|
|
54
|
+
filename: tool_html_passthrough.prompt
|
|
55
|
+
include:
|
|
56
|
+
execution_modes:
|
|
57
|
+
- chat
|
|
58
|
+
- agent
|
|
59
|
+
- key: file_download_output
|
|
60
|
+
filename: file_download_output.prompt
|
|
61
|
+
include:
|
|
62
|
+
execution_modes:
|
|
63
|
+
- chat
|
|
64
|
+
- agent
|
|
65
|
+
all_capabilities:
|
|
66
|
+
- can_generate_files
|
|
67
|
+
- key: email_output
|
|
68
|
+
filename: email_output.prompt
|
|
69
|
+
include:
|
|
70
|
+
execution_modes:
|
|
71
|
+
- chat
|
|
72
|
+
- agent
|
|
73
|
+
all_capabilities:
|
|
74
|
+
- can_send_email
|
|
75
|
+
- key: sql_core
|
|
76
|
+
filename: sql_core.prompt
|
|
77
|
+
include:
|
|
78
|
+
execution_modes:
|
|
79
|
+
- chat
|
|
80
|
+
- agent
|
|
81
|
+
all_capabilities:
|
|
82
|
+
- can_query_sql
|
|
83
|
+
- key: sql_jsonb
|
|
84
|
+
filename: sql_jsonb.prompt
|
|
85
|
+
include:
|
|
86
|
+
execution_modes:
|
|
87
|
+
- chat
|
|
88
|
+
- agent
|
|
89
|
+
all_capabilities:
|
|
90
|
+
- can_query_sql
|
|
91
|
+
- key: sql_casting
|
|
92
|
+
filename: sql_casting.prompt
|
|
93
|
+
include:
|
|
94
|
+
execution_modes:
|
|
95
|
+
- chat
|
|
96
|
+
- agent
|
|
97
|
+
all_capabilities:
|
|
98
|
+
- can_query_sql
|
|
99
|
+
- key: sql_aggregation_scope
|
|
100
|
+
filename: sql_aggregation_scope.prompt
|
|
101
|
+
include:
|
|
102
|
+
execution_modes:
|
|
103
|
+
- chat
|
|
104
|
+
- agent
|
|
105
|
+
all_capabilities:
|
|
106
|
+
- can_query_sql
|
|
@@ -16,7 +16,7 @@ from iatoolkit.common.model_registry import ModelRegistry
|
|
|
16
16
|
from iatoolkit.common.interfaces.secret_provider import SecretProvider
|
|
17
17
|
from iatoolkit.common.secret_resolver import resolve_secret
|
|
18
18
|
|
|
19
|
-
from openai import OpenAI # For OpenAI and xAI (OpenAI-compatible)
|
|
19
|
+
from openai import OpenAI, Timeout # For OpenAI and xAI (OpenAI-compatible)
|
|
20
20
|
|
|
21
21
|
from typing import Dict, List, Any, Tuple
|
|
22
22
|
import threading
|
|
@@ -29,7 +29,7 @@ class LLMProxy:
|
|
|
29
29
|
"""
|
|
30
30
|
|
|
31
31
|
# Class-level cache for low-level clients (per provider + API key)
|
|
32
|
-
_clients_cache: Dict[Tuple[
|
|
32
|
+
_clients_cache: Dict[Tuple[Any, ...], Any] = {}
|
|
33
33
|
_clients_cache_lock = threading.Lock()
|
|
34
34
|
|
|
35
35
|
# Provider identifiers
|
|
@@ -39,6 +39,9 @@ class LLMProxy:
|
|
|
39
39
|
PROVIDER_XAI = "xai"
|
|
40
40
|
PROVIDER_ANTHROPIC = "anthropic"
|
|
41
41
|
PROVIDER_OPENAI_COMPATIBLE = "openai_compatible"
|
|
42
|
+
DEFAULT_CONNECT_TIMEOUT_SECONDS = 10.0
|
|
43
|
+
DEFAULT_READ_TIMEOUT_SECONDS = 300.0
|
|
44
|
+
DEFAULT_MAX_RETRIES = 0
|
|
42
45
|
|
|
43
46
|
@inject
|
|
44
47
|
def __init__(
|
|
@@ -58,7 +61,7 @@ class LLMProxy:
|
|
|
58
61
|
self.secret_provider = secret_provider
|
|
59
62
|
|
|
60
63
|
# adapter cache by (provider, api_key, base_url)
|
|
61
|
-
self.adapters: Dict[Tuple[
|
|
64
|
+
self.adapters: Dict[Tuple[Any, ...], Any] = {}
|
|
62
65
|
|
|
63
66
|
# -------------------------------------------------------------------------
|
|
64
67
|
# Public API
|
|
@@ -142,14 +145,31 @@ class LLMProxy:
|
|
|
142
145
|
client_config = self._get_client_config(company_short_name, provider)
|
|
143
146
|
api_key = client_config["api_key"]
|
|
144
147
|
base_url = client_config.get("base_url") or ""
|
|
145
|
-
|
|
148
|
+
connect_timeout_seconds = client_config["connect_timeout_seconds"]
|
|
149
|
+
read_timeout_seconds = client_config["read_timeout_seconds"]
|
|
150
|
+
max_retries = client_config["max_retries"]
|
|
151
|
+
adapter_cache_key = (
|
|
152
|
+
provider,
|
|
153
|
+
api_key or "",
|
|
154
|
+
base_url,
|
|
155
|
+
connect_timeout_seconds,
|
|
156
|
+
read_timeout_seconds,
|
|
157
|
+
max_retries,
|
|
158
|
+
)
|
|
146
159
|
|
|
147
160
|
# If already created for this provider+key, just return it
|
|
148
161
|
if adapter_cache_key in self.adapters and self.adapters[adapter_cache_key] is not None:
|
|
149
162
|
return self.adapters[adapter_cache_key]
|
|
150
163
|
|
|
151
164
|
# Otherwise, create low-level client from configuration
|
|
152
|
-
client = self._get_or_create_client(
|
|
165
|
+
client = self._get_or_create_client(
|
|
166
|
+
provider,
|
|
167
|
+
api_key,
|
|
168
|
+
base_url=base_url,
|
|
169
|
+
connect_timeout_seconds=connect_timeout_seconds,
|
|
170
|
+
read_timeout_seconds=read_timeout_seconds,
|
|
171
|
+
max_retries=max_retries,
|
|
172
|
+
)
|
|
153
173
|
|
|
154
174
|
# Wrap client with the correct adapter
|
|
155
175
|
if provider == self.PROVIDER_OPENAI:
|
|
@@ -194,35 +214,90 @@ class LLMProxy:
|
|
|
194
214
|
# Client cache
|
|
195
215
|
# -------------------------------------------------------------------------
|
|
196
216
|
|
|
197
|
-
def _get_or_create_client(
|
|
217
|
+
def _get_or_create_client(
|
|
218
|
+
self,
|
|
219
|
+
provider: str,
|
|
220
|
+
api_key: str,
|
|
221
|
+
base_url: str = "",
|
|
222
|
+
*,
|
|
223
|
+
connect_timeout_seconds: float | None = None,
|
|
224
|
+
read_timeout_seconds: float | None = None,
|
|
225
|
+
max_retries: int | None = None,
|
|
226
|
+
) -> Any:
|
|
198
227
|
"""
|
|
199
228
|
Return a low-level client for the given provider and API key.
|
|
200
229
|
Uses a class-level cache to avoid recreating clients.
|
|
201
230
|
"""
|
|
202
|
-
|
|
231
|
+
connect_timeout_seconds = self._normalize_positive_float(
|
|
232
|
+
connect_timeout_seconds,
|
|
233
|
+
self.DEFAULT_CONNECT_TIMEOUT_SECONDS,
|
|
234
|
+
)
|
|
235
|
+
read_timeout_seconds = self._normalize_positive_float(
|
|
236
|
+
read_timeout_seconds,
|
|
237
|
+
self.DEFAULT_READ_TIMEOUT_SECONDS,
|
|
238
|
+
)
|
|
239
|
+
max_retries = self._normalize_non_negative_int(
|
|
240
|
+
max_retries,
|
|
241
|
+
self.DEFAULT_MAX_RETRIES,
|
|
242
|
+
)
|
|
243
|
+
cache_key = (
|
|
244
|
+
provider,
|
|
245
|
+
api_key or "",
|
|
246
|
+
base_url or "",
|
|
247
|
+
connect_timeout_seconds,
|
|
248
|
+
read_timeout_seconds,
|
|
249
|
+
max_retries,
|
|
250
|
+
)
|
|
203
251
|
|
|
204
252
|
with self._clients_cache_lock:
|
|
205
253
|
if cache_key in self._clients_cache:
|
|
206
254
|
return self._clients_cache[cache_key]
|
|
207
255
|
|
|
208
|
-
client = self._create_client_for_provider(
|
|
256
|
+
client = self._create_client_for_provider(
|
|
257
|
+
provider,
|
|
258
|
+
api_key,
|
|
259
|
+
base_url=base_url,
|
|
260
|
+
connect_timeout_seconds=connect_timeout_seconds,
|
|
261
|
+
read_timeout_seconds=read_timeout_seconds,
|
|
262
|
+
max_retries=max_retries,
|
|
263
|
+
)
|
|
209
264
|
self._clients_cache[cache_key] = client
|
|
210
265
|
return client
|
|
211
266
|
|
|
212
|
-
def _create_client_for_provider(
|
|
267
|
+
def _create_client_for_provider(
|
|
268
|
+
self,
|
|
269
|
+
provider: str,
|
|
270
|
+
api_key: str,
|
|
271
|
+
base_url: str = "",
|
|
272
|
+
*,
|
|
273
|
+
connect_timeout_seconds: float | None = None,
|
|
274
|
+
read_timeout_seconds: float | None = None,
|
|
275
|
+
max_retries: int | None = None,
|
|
276
|
+
) -> Any:
|
|
213
277
|
"""
|
|
214
278
|
Actually create the low-level client for a provider.
|
|
215
279
|
This is the only place where provider-specific client construction lives.
|
|
216
280
|
"""
|
|
281
|
+
timeout = self._build_openai_timeout(
|
|
282
|
+
connect_timeout_seconds=connect_timeout_seconds,
|
|
283
|
+
read_timeout_seconds=read_timeout_seconds,
|
|
284
|
+
)
|
|
285
|
+
max_retries = self._normalize_non_negative_int(
|
|
286
|
+
max_retries,
|
|
287
|
+
self.DEFAULT_MAX_RETRIES,
|
|
288
|
+
)
|
|
289
|
+
|
|
217
290
|
if provider == self.PROVIDER_OPENAI:
|
|
218
291
|
# Standard OpenAI client for GPT models
|
|
219
|
-
return OpenAI(api_key=api_key)
|
|
292
|
+
return OpenAI(api_key=api_key, timeout=timeout, max_retries=max_retries)
|
|
220
293
|
|
|
221
294
|
if provider == self.PROVIDER_XAI:
|
|
222
295
|
# xAI Grok is OpenAI-compatible; we can use the OpenAI client with a different base_url.
|
|
223
296
|
return OpenAI(
|
|
224
297
|
api_key=api_key,
|
|
225
298
|
base_url="https://api.x.ai/v1",
|
|
299
|
+
timeout=timeout,
|
|
300
|
+
max_retries=max_retries,
|
|
226
301
|
)
|
|
227
302
|
|
|
228
303
|
if provider == self.PROVIDER_DEEPSEEK:
|
|
@@ -233,6 +308,8 @@ class LLMProxy:
|
|
|
233
308
|
return OpenAI(
|
|
234
309
|
api_key=api_key,
|
|
235
310
|
base_url="https://api.deepseek.com",
|
|
311
|
+
timeout=timeout,
|
|
312
|
+
max_retries=max_retries,
|
|
236
313
|
)
|
|
237
314
|
|
|
238
315
|
if provider == self.PROVIDER_OPENAI_COMPATIBLE:
|
|
@@ -244,6 +321,8 @@ class LLMProxy:
|
|
|
244
321
|
return OpenAI(
|
|
245
322
|
api_key=api_key,
|
|
246
323
|
base_url=base_url,
|
|
324
|
+
timeout=timeout,
|
|
325
|
+
max_retries=max_retries,
|
|
247
326
|
)
|
|
248
327
|
|
|
249
328
|
if provider == self.PROVIDER_GEMINI:
|
|
@@ -270,11 +349,100 @@ class LLMProxy:
|
|
|
270
349
|
)
|
|
271
350
|
|
|
272
351
|
def _get_client_config(self, company_short_name: str, provider: str) -> dict:
|
|
352
|
+
provider_config = self.configuration_service.get_llm_provider_config(company_short_name, provider) or {}
|
|
273
353
|
return {
|
|
274
354
|
"api_key": self._get_api_key_from_config(company_short_name, provider),
|
|
275
355
|
"base_url": self._get_base_url_from_config(company_short_name, provider),
|
|
356
|
+
"connect_timeout_seconds": self._resolve_provider_float(
|
|
357
|
+
provider_config,
|
|
358
|
+
("connect_timeout_seconds",),
|
|
359
|
+
self.DEFAULT_CONNECT_TIMEOUT_SECONDS,
|
|
360
|
+
minimum=0.1,
|
|
361
|
+
),
|
|
362
|
+
"read_timeout_seconds": self._resolve_provider_float(
|
|
363
|
+
provider_config,
|
|
364
|
+
("read_timeout_seconds", "request_timeout_seconds", "timeout_seconds"),
|
|
365
|
+
self.DEFAULT_READ_TIMEOUT_SECONDS,
|
|
366
|
+
minimum=0.1,
|
|
367
|
+
),
|
|
368
|
+
"max_retries": self._resolve_provider_int(
|
|
369
|
+
provider_config,
|
|
370
|
+
("max_retries",),
|
|
371
|
+
self.DEFAULT_MAX_RETRIES,
|
|
372
|
+
minimum=0,
|
|
373
|
+
),
|
|
276
374
|
}
|
|
277
375
|
|
|
376
|
+
@classmethod
|
|
377
|
+
def _build_openai_timeout(
|
|
378
|
+
cls,
|
|
379
|
+
*,
|
|
380
|
+
connect_timeout_seconds: float | None,
|
|
381
|
+
read_timeout_seconds: float | None,
|
|
382
|
+
) -> Timeout:
|
|
383
|
+
connect_timeout_seconds = cls._normalize_positive_float(
|
|
384
|
+
connect_timeout_seconds,
|
|
385
|
+
cls.DEFAULT_CONNECT_TIMEOUT_SECONDS,
|
|
386
|
+
)
|
|
387
|
+
read_timeout_seconds = cls._normalize_positive_float(
|
|
388
|
+
read_timeout_seconds,
|
|
389
|
+
cls.DEFAULT_READ_TIMEOUT_SECONDS,
|
|
390
|
+
)
|
|
391
|
+
return Timeout(
|
|
392
|
+
connect=connect_timeout_seconds,
|
|
393
|
+
read=read_timeout_seconds,
|
|
394
|
+
write=read_timeout_seconds,
|
|
395
|
+
pool=read_timeout_seconds,
|
|
396
|
+
)
|
|
397
|
+
|
|
398
|
+
@classmethod
|
|
399
|
+
def _resolve_provider_float(
|
|
400
|
+
cls,
|
|
401
|
+
provider_config: Dict[str, Any],
|
|
402
|
+
keys: tuple[str, ...],
|
|
403
|
+
default: float,
|
|
404
|
+
*,
|
|
405
|
+
minimum: float,
|
|
406
|
+
) -> float:
|
|
407
|
+
for key in keys:
|
|
408
|
+
if key in provider_config:
|
|
409
|
+
return cls._normalize_positive_float(provider_config.get(key), default, minimum=minimum)
|
|
410
|
+
return cls._normalize_positive_float(default, default, minimum=minimum)
|
|
411
|
+
|
|
412
|
+
@classmethod
|
|
413
|
+
def _resolve_provider_int(
|
|
414
|
+
cls,
|
|
415
|
+
provider_config: Dict[str, Any],
|
|
416
|
+
keys: tuple[str, ...],
|
|
417
|
+
default: int,
|
|
418
|
+
*,
|
|
419
|
+
minimum: int,
|
|
420
|
+
) -> int:
|
|
421
|
+
for key in keys:
|
|
422
|
+
if key in provider_config:
|
|
423
|
+
return cls._normalize_non_negative_int(provider_config.get(key), default, minimum=minimum)
|
|
424
|
+
return cls._normalize_non_negative_int(default, default, minimum=minimum)
|
|
425
|
+
|
|
426
|
+
@staticmethod
|
|
427
|
+
def _normalize_positive_float(value, default: float, *, minimum: float = 0.1) -> float:
|
|
428
|
+
try:
|
|
429
|
+
parsed = float(value)
|
|
430
|
+
if parsed >= minimum:
|
|
431
|
+
return parsed
|
|
432
|
+
except (TypeError, ValueError):
|
|
433
|
+
pass
|
|
434
|
+
return float(default)
|
|
435
|
+
|
|
436
|
+
@staticmethod
|
|
437
|
+
def _normalize_non_negative_int(value, default: int, *, minimum: int = 0) -> int:
|
|
438
|
+
try:
|
|
439
|
+
parsed = int(value)
|
|
440
|
+
if parsed >= minimum:
|
|
441
|
+
return parsed
|
|
442
|
+
except (TypeError, ValueError):
|
|
443
|
+
pass
|
|
444
|
+
return int(default)
|
|
445
|
+
|
|
278
446
|
# -------------------------------------------------------------------------
|
|
279
447
|
# Configuration helpers
|
|
280
448
|
# -------------------------------------------------------------------------
|
|
@@ -312,14 +312,14 @@ ui:
|
|
|
312
312
|
restore_failed: "Failed to restore skill version."
|
|
313
313
|
restore_ok: "Skill version restored."
|
|
314
314
|
readonly_message: "Skill editing requires admin or owner role."
|
|
315
|
-
uncategorized: "
|
|
315
|
+
uncategorized: "General"
|
|
316
316
|
binding_label: "Binding {number}"
|
|
317
317
|
resource_type_label: "Resource type"
|
|
318
318
|
resource_key_label: "Resource key"
|
|
319
319
|
resource_key_placeholder: "routing.yaml or collection name"
|
|
320
320
|
metadata_json_label: "Metadata JSON"
|
|
321
|
-
|
|
322
|
-
|
|
321
|
+
execution_mode_agentic: "Agentic"
|
|
322
|
+
execution_mode_conversational: "Conversational"
|
|
323
323
|
resource_type_tool: "Tool"
|
|
324
324
|
resource_type_rag_collection: "RAG collection"
|
|
325
325
|
resource_type_sql_source: "SQL source"
|
|
@@ -661,6 +661,9 @@ ui:
|
|
|
661
661
|
definition_error_loading: "Could not load pipeline definition"
|
|
662
662
|
definition_error_loading_list: "Could not load pipeline definitions"
|
|
663
663
|
no_definitions: "No pipeline definitions yet."
|
|
664
|
+
no_active_definitions: "No active pipeline definitions."
|
|
665
|
+
show_inactive: "Show inactive"
|
|
666
|
+
definitions_filter_summary: "Showing {visible} of {total} pipelines"
|
|
664
667
|
definition_last_run: "Last run"
|
|
665
668
|
definition_no_runs: "No runs"
|
|
666
669
|
definition_column_pipeline: "Pipeline"
|
|
@@ -674,6 +677,12 @@ ui:
|
|
|
674
677
|
definition_caption: "Pipeline"
|
|
675
678
|
definition_delete_ok: "Pipeline definition deleted"
|
|
676
679
|
definition_delete_failed: "Could not delete pipeline definition"
|
|
680
|
+
reset_state: "Reset pipeline state"
|
|
681
|
+
reset_state_title: "Reset pipeline state?"
|
|
682
|
+
reset_state_message: "This permanently deletes prior run inputs and artifacts for this pipeline, clears remembered processing state, and makes the next execution start from scratch."
|
|
683
|
+
reset_state_confirm: "Reset state"
|
|
684
|
+
reset_state_ok: "Pipeline state reset. The next run will start from scratch."
|
|
685
|
+
reset_state_failed: "Could not reset pipeline state"
|
|
677
686
|
execution_mode_taskless: "Taskless"
|
|
678
687
|
execution_mode_task_driven: "Task-driven"
|
|
679
688
|
import_yaml_file: "YAML file"
|
|
@@ -730,7 +739,10 @@ ui:
|
|
|
730
739
|
daily_cost: "Daily Cost"
|
|
731
740
|
usage_detail: "Usage Detail"
|
|
732
741
|
usage_by_user: "Usage by User Identifier"
|
|
733
|
-
usage_by_prompt: "Usage by
|
|
742
|
+
usage_by_prompt: "Usage by Agent"
|
|
743
|
+
usage_by_prompt_empty: "No agent usage data"
|
|
744
|
+
usage_by_prompt_meta_empty: "0 agents"
|
|
745
|
+
usage_by_prompt_meta_summary: "{count} agents · {tokens} tokens"
|
|
734
746
|
invoices: "Invoices"
|
|
735
747
|
daily_closures: "Daily Closures"
|
|
736
748
|
invoice_detail_title: "Invoice Detail"
|
|
@@ -740,7 +752,7 @@ ui:
|
|
|
740
752
|
col_date: "Date"
|
|
741
753
|
col_model: "Model"
|
|
742
754
|
col_user_identifier: "User Identifier"
|
|
743
|
-
col_prompt_name: "
|
|
755
|
+
col_prompt_name: "Agent Name"
|
|
744
756
|
col_queries: "Queries"
|
|
745
757
|
col_prompt: "Prompt"
|
|
746
758
|
col_completion: "Completion"
|
|
@@ -763,7 +775,7 @@ ui:
|
|
|
763
775
|
tab_summary: "Summary"
|
|
764
776
|
tab_usage: "Usage"
|
|
765
777
|
tab_usage_by_user: "Usage by User"
|
|
766
|
-
tab_usage_by_prompt: "Usage by
|
|
778
|
+
tab_usage_by_prompt: "Usage by Agent"
|
|
767
779
|
tab_runs: "Billing Runs"
|
|
768
780
|
tab_invoices: "Invoices"
|
|
769
781
|
tab_billing: "Billing"
|
|
@@ -975,12 +987,13 @@ ui:
|
|
|
975
987
|
tab_editor: "Editor"
|
|
976
988
|
tab_output: "Output"
|
|
977
989
|
tab_tools: "Tools"
|
|
990
|
+
tab_resources: "Resources"
|
|
978
991
|
tab_playground: "Playground"
|
|
979
992
|
config_title: "Config"
|
|
980
993
|
desc_label: "Description"
|
|
981
994
|
desc_placeholder: "Describe this prompt..."
|
|
982
995
|
vars_label: "Input Variables"
|
|
983
|
-
|
|
996
|
+
execution_mode_label: "Execution Mode"
|
|
984
997
|
active_label: "Active"
|
|
985
998
|
output_type_label: "Output Type"
|
|
986
999
|
output_type_free_text: "Free text"
|
|
@@ -1047,6 +1060,13 @@ ui:
|
|
|
1047
1060
|
tools_type_http: "HTTP"
|
|
1048
1061
|
tools_type_native: "NATIVE"
|
|
1049
1062
|
tools_type_system: "SYSTEM"
|
|
1063
|
+
resources_title: "Agent Resources"
|
|
1064
|
+
resources_help: "Define the data scope visible to this agent. Only typed resources relevant to the selected tools are shown."
|
|
1065
|
+
resources_sql_title: "SQL Sources"
|
|
1066
|
+
resources_sql_help: "Select the SQL sources this agent can use."
|
|
1067
|
+
resources_rag_title: "RAG Collections"
|
|
1068
|
+
resources_rag_help: "Select the document collections this agent can search."
|
|
1069
|
+
resources_memory_hint: "Memory tools use the current user scope and do not require extra bindings."
|
|
1050
1070
|
run_btn: "Run"
|
|
1051
1071
|
copy_html_btn: "Copy HTML"
|
|
1052
1072
|
copy_json_btn: "Copy JSON"
|
|
@@ -312,14 +312,14 @@ ui:
|
|
|
312
312
|
restore_failed: "No se pudo restaurar la versión de la skill."
|
|
313
313
|
restore_ok: "Versión de skill restaurada."
|
|
314
314
|
readonly_message: "La edición de skills requiere rol admin u owner."
|
|
315
|
-
uncategorized: "
|
|
315
|
+
uncategorized: "General"
|
|
316
316
|
binding_label: "Binding {number}"
|
|
317
317
|
resource_type_label: "Tipo de recurso"
|
|
318
318
|
resource_key_label: "Key del recurso"
|
|
319
319
|
resource_key_placeholder: "routing.yaml o nombre de colección"
|
|
320
320
|
metadata_json_label: "Metadata JSON"
|
|
321
|
-
|
|
322
|
-
|
|
321
|
+
execution_mode_agentic: "Agéntico"
|
|
322
|
+
execution_mode_conversational: "Conversacional"
|
|
323
323
|
resource_type_tool: "Tool"
|
|
324
324
|
resource_type_rag_collection: "Colección RAG"
|
|
325
325
|
resource_type_sql_source: "Fuente SQL"
|
|
@@ -662,6 +662,9 @@ ui:
|
|
|
662
662
|
definition_error_loading: "No se pudo cargar la definición de pipeline"
|
|
663
663
|
definition_error_loading_list: "No se pudieron cargar las definiciones de pipeline"
|
|
664
664
|
no_definitions: "Todavía no hay definiciones de pipeline."
|
|
665
|
+
no_active_definitions: "No hay definiciones de pipeline activas."
|
|
666
|
+
show_inactive: "Mostrar inactivas"
|
|
667
|
+
definitions_filter_summary: "Mostrando {visible} de {total} pipelines"
|
|
665
668
|
definition_last_run: "Última ejecución"
|
|
666
669
|
definition_no_runs: "Sin ejecuciones"
|
|
667
670
|
definition_column_pipeline: "Pipeline"
|
|
@@ -675,6 +678,12 @@ ui:
|
|
|
675
678
|
definition_caption: "Pipeline"
|
|
676
679
|
definition_delete_ok: "Definición de pipeline eliminada"
|
|
677
680
|
definition_delete_failed: "No se pudo eliminar la definición de pipeline"
|
|
681
|
+
reset_state: "Resetear estado del pipeline"
|
|
682
|
+
reset_state_title: "¿Resetear estado del pipeline?"
|
|
683
|
+
reset_state_message: "Esto elimina de forma permanente los inputs y artifacts de ejecuciones previas de este pipeline, limpia el estado recordado de procesamiento y hace que la próxima ejecución arranque desde cero."
|
|
684
|
+
reset_state_confirm: "Resetear estado"
|
|
685
|
+
reset_state_ok: "Se reseteó el estado del pipeline. La próxima ejecución arrancará desde cero."
|
|
686
|
+
reset_state_failed: "No se pudo resetear el estado del pipeline"
|
|
678
687
|
execution_mode_taskless: "Taskless"
|
|
679
688
|
execution_mode_task_driven: "Con tasks"
|
|
680
689
|
import_yaml_file: "Archivo YAML"
|
|
@@ -731,7 +740,10 @@ ui:
|
|
|
731
740
|
daily_cost: "Costo Diario"
|
|
732
741
|
usage_detail: "Detalle de Uso"
|
|
733
742
|
usage_by_user: "Uso por Usuario"
|
|
734
|
-
usage_by_prompt: "Uso por
|
|
743
|
+
usage_by_prompt: "Uso por Agente"
|
|
744
|
+
usage_by_prompt_empty: "No hay datos de uso por agente"
|
|
745
|
+
usage_by_prompt_meta_empty: "0 agentes"
|
|
746
|
+
usage_by_prompt_meta_summary: "{count} agentes · {tokens} tokens"
|
|
735
747
|
invoices: "Facturas"
|
|
736
748
|
daily_closures: "Cierres Diarios"
|
|
737
749
|
invoice_detail_title: "Detalle de Factura"
|
|
@@ -741,7 +753,7 @@ ui:
|
|
|
741
753
|
col_date: "Fecha"
|
|
742
754
|
col_model: "Modelo"
|
|
743
755
|
col_user_identifier: "Usuario"
|
|
744
|
-
col_prompt_name: "Nombre del
|
|
756
|
+
col_prompt_name: "Nombre del Agente"
|
|
745
757
|
col_queries: "Consultas"
|
|
746
758
|
col_prompt: "Prompt"
|
|
747
759
|
col_completion: "Respuesta"
|
|
@@ -764,7 +776,7 @@ ui:
|
|
|
764
776
|
tab_summary: "Resumen"
|
|
765
777
|
tab_usage: "Uso"
|
|
766
778
|
tab_usage_by_user: "Uso por Usuario"
|
|
767
|
-
tab_usage_by_prompt: "Uso por
|
|
779
|
+
tab_usage_by_prompt: "Uso por Agente"
|
|
768
780
|
tab_runs: "Operaciones"
|
|
769
781
|
tab_invoices: "Facturas"
|
|
770
782
|
tab_billing: "Facturación"
|
|
@@ -978,12 +990,13 @@ ui:
|
|
|
978
990
|
tab_editor: "Editor"
|
|
979
991
|
tab_output: "Salida"
|
|
980
992
|
tab_tools: "Tools"
|
|
993
|
+
tab_resources: "Recursos"
|
|
981
994
|
tab_playground: "Playground"
|
|
982
995
|
config_title: "Configuración"
|
|
983
996
|
desc_label: "Descripción"
|
|
984
997
|
desc_placeholder: "Describe este prompt..."
|
|
985
998
|
vars_label: "Variables de Entrada"
|
|
986
|
-
|
|
999
|
+
execution_mode_label: "Modo de ejecución"
|
|
987
1000
|
active_label: "Activo"
|
|
988
1001
|
output_type_label: "Tipo de Salida"
|
|
989
1002
|
output_type_free_text: "Texto libre"
|
|
@@ -1050,6 +1063,13 @@ ui:
|
|
|
1050
1063
|
tools_type_http: "HTTP"
|
|
1051
1064
|
tools_type_native: "NATIVE"
|
|
1052
1065
|
tools_type_system: "SYSTEM"
|
|
1066
|
+
resources_title: "Recursos del Agente"
|
|
1067
|
+
resources_help: "Define el alcance de datos visible para este agente. Solo se muestran recursos tipados relevantes para las tools seleccionadas."
|
|
1068
|
+
resources_sql_title: "Fuentes SQL"
|
|
1069
|
+
resources_sql_help: "Selecciona las fuentes SQL que este agente podrá usar."
|
|
1070
|
+
resources_rag_title: "Colecciones RAG"
|
|
1071
|
+
resources_rag_help: "Selecciona las colecciones documentales que este agente podrá consultar."
|
|
1072
|
+
resources_memory_hint: "Las tools de memoria usan el scope del usuario actual y no requieren bindings adicionales."
|
|
1053
1073
|
run_btn: "Ejecutar"
|
|
1054
1074
|
copy_html_btn: "Copiar HTML"
|
|
1055
1075
|
copy_json_btn: "Copiar JSON"
|