iatoolkit 2.64.6__tar.gz → 2.65.1__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.64.6/src/iatoolkit.egg-info → iatoolkit-2.65.1}/PKG-INFO +1 -1
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/__init__.py +1 -1
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/locales/en.yaml +18 -1
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/locales/es.yaml +18 -1
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/memory_compiler_service.py +31 -3
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/memory_question_service.py +3 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/system_agent_runner.py +81 -15
- {iatoolkit-2.64.6 → iatoolkit-2.65.1/src/iatoolkit.egg-info}/PKG-INFO +1 -1
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/LICENSE +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/pyproject.toml +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/readme.md +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/setup.cfg +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/bridge_validation.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/company_paths.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/interfaces/database_provider.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/model_registry.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/routes.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/search_terms.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/secret_resolver.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/text_splitter.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/url_safety.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_agents/memory_compiler.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_agents/memory_correction.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_agents/memory_question_review.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_agents_pack.yaml +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/channel_business_identity.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/channel_conversation_continuity.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/channel_response_style.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_casting.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_core.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_redshift_types.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts_pack.yaml +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/core.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/google_auth_client.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/inference_handler.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/llm_gateway_resolver.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/api_key_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/bridge_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/database_manager.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/knowledge_wiki_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/mcp_token_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/memory_question_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/memory_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/models.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/runtime_logging.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/api_key_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/attachment_policy_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/company_context_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/configuration_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/context_builder_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/dispatcher_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/history_manager_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/http_tool_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/inference_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/knowledge_base_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/llm_client_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/markdown_wiki_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/mcp_token_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/memory_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/memory_wiki_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/operator_identity_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/contracts.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/parsers/validator.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/pdf_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/prompt_resource_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/prompt_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/query_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/sql_dataset_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/sql_source_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/storage_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/structured_output_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/system_agent_catalog.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/system_tools.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/telemetry_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/tenant_wiki_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/tool_output_contract.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/tool_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/visual_kb_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/visual_tool_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/warmup_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/web_search/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/services/web_search_service.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/images/favicon.ico +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/images/favicon.png +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_header_navigation.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_main.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/styles/account.css +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/static/styles/wiki_page.css +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/_chat_header.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/account.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/home_hosted_default.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/login_global.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/pdf/base.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/pdf/letter.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/pdf/report.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/pdf/simple.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/templates/wiki_page.html +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/account_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/api_key_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/categories_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/configuration_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/connectors_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/memory_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/rag_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/tool_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/views/wiki_page_view.py +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -55,7 +55,6 @@ ui:
|
|
|
55
55
|
tab_chats: "Live Chats"
|
|
56
56
|
tab_agents: "Agents"
|
|
57
57
|
tab_logs: "Access Logs"
|
|
58
|
-
tab_tools: "Tools Router"
|
|
59
58
|
tab_apps: "Apps"
|
|
60
59
|
search_placeholder: "Search user or text..."
|
|
61
60
|
tool_router_config_title: "Router configuration"
|
|
@@ -81,6 +80,24 @@ ui:
|
|
|
81
80
|
tab_overview: "Overview"
|
|
82
81
|
tab_input: "Input / Context"
|
|
83
82
|
tab_response: "Full Response"
|
|
83
|
+
tab_tools: "Tools"
|
|
84
|
+
routing_title: "Tool routing"
|
|
85
|
+
routing_none: "No routing: the run had every tool available."
|
|
86
|
+
routing_mode: "Mode / Reason"
|
|
87
|
+
routing_latency: "Selector latency"
|
|
88
|
+
routing_selection: "Selected / candidates"
|
|
89
|
+
routing_system_prompts: "System prompts selected"
|
|
90
|
+
routing_forced_tools: "Always-included system tools"
|
|
91
|
+
routing_ranked: "Ranked tools"
|
|
92
|
+
routing_metadata: "Router metadata"
|
|
93
|
+
tools_summary: "Execution summary"
|
|
94
|
+
tools_unique: "Unique tools"
|
|
95
|
+
tools_calls: "Total calls"
|
|
96
|
+
tools_time: "Tool time"
|
|
97
|
+
tools_avg: "Avg / call"
|
|
98
|
+
tools_coverage: "Coverage"
|
|
99
|
+
tools_coverage_hit: "Selected and executed"
|
|
100
|
+
tools_coverage_miss: "Selected but not executed"
|
|
84
101
|
session_meta: "Session Metadata"
|
|
85
102
|
user_id: "User Identifier"
|
|
86
103
|
timestamp: "Timestamp"
|
|
@@ -68,7 +68,6 @@ ui:
|
|
|
68
68
|
tab_chats: "Chats en Vivo"
|
|
69
69
|
tab_agents: "Agentes"
|
|
70
70
|
tab_logs: "Logs de Acceso"
|
|
71
|
-
tab_tools: "Router de Herramientas"
|
|
72
71
|
tab_apps: "Apps"
|
|
73
72
|
search_placeholder: "Buscar usuario o texto..."
|
|
74
73
|
tool_router_config_title: "Configuración del router"
|
|
@@ -94,6 +93,24 @@ ui:
|
|
|
94
93
|
tab_overview: "Resumen"
|
|
95
94
|
tab_input: "Entrada / Contexto"
|
|
96
95
|
tab_response: "Respuesta Completa"
|
|
96
|
+
tab_tools: "Herramientas"
|
|
97
|
+
routing_title: "Routing de herramientas"
|
|
98
|
+
routing_none: "Sin routing: la ejecución tuvo todas las herramientas disponibles."
|
|
99
|
+
routing_mode: "Modo / Motivo"
|
|
100
|
+
routing_latency: "Latencia del selector"
|
|
101
|
+
routing_selection: "Seleccionadas / candidatas"
|
|
102
|
+
routing_system_prompts: "System prompts seleccionados"
|
|
103
|
+
routing_forced_tools: "Herramientas de sistema siempre incluidas"
|
|
104
|
+
routing_ranked: "Ranking de herramientas"
|
|
105
|
+
routing_metadata: "Metadatos del router"
|
|
106
|
+
tools_summary: "Resumen de ejecución"
|
|
107
|
+
tools_unique: "Herramientas distintas"
|
|
108
|
+
tools_calls: "Llamadas totales"
|
|
109
|
+
tools_time: "Tiempo en herramientas"
|
|
110
|
+
tools_avg: "Promedio / llamada"
|
|
111
|
+
tools_coverage: "Cobertura"
|
|
112
|
+
tools_coverage_hit: "Seleccionadas y ejecutadas"
|
|
113
|
+
tools_coverage_miss: "Seleccionadas y no ejecutadas"
|
|
97
114
|
session_meta: "Metadatos de Sesión"
|
|
98
115
|
user_id: "Identificador Usuario"
|
|
99
116
|
timestamp: "Fecha/Hora"
|
|
@@ -23,7 +23,7 @@ from iatoolkit.repositories.models import Company, MemoryCapture, MemoryCaptureS
|
|
|
23
23
|
from iatoolkit.repositories.profile_repo import ProfileRepo
|
|
24
24
|
from iatoolkit.services.memory_wiki_service import MemoryWikiService
|
|
25
25
|
from iatoolkit.services.storage_service import StorageService
|
|
26
|
-
from iatoolkit.services.system_agent_runner import SystemAgentRunner
|
|
26
|
+
from iatoolkit.services.system_agent_runner import SystemAgentDisabled, SystemAgentRunner
|
|
27
27
|
from iatoolkit.services.tenant_wiki_service import TenantWikiService
|
|
28
28
|
|
|
29
29
|
|
|
@@ -85,6 +85,7 @@ class MemoryCompilerService:
|
|
|
85
85
|
|
|
86
86
|
compiled_count = 0
|
|
87
87
|
processed_count = 0
|
|
88
|
+
waiting_count = 0
|
|
88
89
|
with self._company_lock(company.id):
|
|
89
90
|
# Keep draining: a capture saved while this run held the lock waited
|
|
90
91
|
# for it instead of compiling concurrently, and must not be left behind.
|
|
@@ -92,15 +93,29 @@ class MemoryCompilerService:
|
|
|
92
93
|
pending_captures = self.memory_repo.get_pending_captures(company.id, limit=limit)
|
|
93
94
|
if not pending_captures:
|
|
94
95
|
break
|
|
96
|
+
batch_waiting = 0
|
|
95
97
|
for capture in pending_captures:
|
|
98
|
+
if not SystemAgentRunner.is_enabled(self._agent_for(capture)):
|
|
99
|
+
# Its agent is turned off by the platform: the capture stays
|
|
100
|
+
# pending and is compiled when the agent is turned on again.
|
|
101
|
+
batch_waiting += 1
|
|
102
|
+
continue
|
|
96
103
|
processed_count += 1
|
|
97
|
-
|
|
104
|
+
compiled = self._compile_capture_safely(company, capture)
|
|
105
|
+
if compiled is None:
|
|
106
|
+
batch_waiting += 1
|
|
107
|
+
elif compiled:
|
|
98
108
|
compiled_count += 1
|
|
109
|
+
waiting_count += batch_waiting
|
|
110
|
+
if batch_waiting == len(pending_captures):
|
|
111
|
+
# Nothing in this batch could move; reading it again would only repeat that.
|
|
112
|
+
break
|
|
99
113
|
|
|
100
114
|
return {
|
|
101
115
|
"status": "success",
|
|
102
116
|
"compiled_count": compiled_count,
|
|
103
117
|
"processed_count": processed_count,
|
|
118
|
+
"waiting_count": waiting_count,
|
|
104
119
|
"pending_count": len(self.memory_repo.get_pending_captures(company.id, limit=limit)),
|
|
105
120
|
}
|
|
106
121
|
|
|
@@ -136,7 +151,12 @@ class MemoryCompilerService:
|
|
|
136
151
|
finally:
|
|
137
152
|
connection.close()
|
|
138
153
|
|
|
139
|
-
def
|
|
154
|
+
def _agent_for(self, capture: MemoryCapture) -> str:
|
|
155
|
+
is_correction = dict(capture.meta or {}).get("mode") == self.CORRECTION_MODE
|
|
156
|
+
return self.CORRECTION_AGENT if is_correction else self.COMPILER_AGENT
|
|
157
|
+
|
|
158
|
+
def _compile_capture_safely(self, company: Company, capture: MemoryCapture) -> bool | None:
|
|
159
|
+
"""Whether the capture became a page; None when it stays pending (its agent was turned off)."""
|
|
140
160
|
items = self.memory_repo.list_capture_items(capture.id)
|
|
141
161
|
if not items:
|
|
142
162
|
self._mark_capture_compiled(capture, items)
|
|
@@ -145,6 +165,10 @@ class MemoryCompilerService:
|
|
|
145
165
|
for item in items:
|
|
146
166
|
self._enrich_item(company.short_name, item)
|
|
147
167
|
return self._compile_single_capture(company, capture, items)
|
|
168
|
+
except SystemAgentDisabled:
|
|
169
|
+
# Turned off while this run was going: leave it pending, untouched.
|
|
170
|
+
self.memory_repo.rollback()
|
|
171
|
+
return None
|
|
148
172
|
except Exception as exc:
|
|
149
173
|
logging.exception("Memory compilation failed for capture %s: %s", capture.id, exc)
|
|
150
174
|
self.memory_repo.rollback()
|
|
@@ -316,6 +340,8 @@ class MemoryCompilerService:
|
|
|
316
340
|
user_identifier=capture.user_identifier,
|
|
317
341
|
question=f"Apply memory correction {capture.id}",
|
|
318
342
|
)
|
|
343
|
+
except SystemAgentDisabled:
|
|
344
|
+
raise
|
|
319
345
|
except Exception as exc:
|
|
320
346
|
logging.warning("Memory correction %s could not reach the model: %s", capture.id, exc)
|
|
321
347
|
return None
|
|
@@ -406,6 +432,8 @@ class MemoryCompilerService:
|
|
|
406
432
|
question=f"Compile memory capture {capture.id}",
|
|
407
433
|
attachments=native_pdf_attachments,
|
|
408
434
|
)
|
|
435
|
+
except SystemAgentDisabled:
|
|
436
|
+
raise
|
|
409
437
|
except Exception as exc:
|
|
410
438
|
logging.warning("Memory compiler LLM fallback activated for capture %s: %s", capture.id, exc)
|
|
411
439
|
return None
|
|
@@ -198,6 +198,9 @@ class MemoryQuestionService:
|
|
|
198
198
|
self._advance(cursor, queries[-1].id if queries else None)
|
|
199
199
|
return {"status": "success", "counts": counts}
|
|
200
200
|
|
|
201
|
+
if not SystemAgentRunner.is_enabled(self.REVIEW_AGENT):
|
|
202
|
+
# Turned off by the platform: the cursor stays, so the turns are reviewed once it is on again.
|
|
203
|
+
return {"status": "skipped", "reason": "the review agent is turned off", "counts": counts}
|
|
201
204
|
if not self.system_agent_runner.resolve_model(
|
|
202
205
|
company.short_name, SystemAgentCatalog.get(self.REVIEW_AGENT)).model:
|
|
203
206
|
return {"status": "error", "error_message": "the company has no model configured", "counts": counts}
|
|
@@ -8,6 +8,7 @@ from __future__ import annotations
|
|
|
8
8
|
import json
|
|
9
9
|
import logging
|
|
10
10
|
from dataclasses import dataclass
|
|
11
|
+
from typing import Callable
|
|
11
12
|
|
|
12
13
|
from injector import inject
|
|
13
14
|
from jinja2 import StrictUndefined
|
|
@@ -23,14 +24,28 @@ class SystemAgentUnavailable(Exception):
|
|
|
23
24
|
"""The company has no model to run the agent with."""
|
|
24
25
|
|
|
25
26
|
|
|
27
|
+
class SystemAgentDisabled(SystemAgentUnavailable):
|
|
28
|
+
"""The platform turned the agent off: its work waits until it is turned on again."""
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass(frozen=True)
|
|
32
|
+
class PlatformAgentSettings:
|
|
33
|
+
"""What the platform operator set for an agent, for every tenant (BL-012, Fase 2)."""
|
|
34
|
+
default_model: str | None = None
|
|
35
|
+
enabled: bool = True
|
|
36
|
+
|
|
37
|
+
|
|
26
38
|
@dataclass(frozen=True)
|
|
27
39
|
class ResolvedModel:
|
|
28
40
|
model: str | None
|
|
29
|
-
# Where it came from: "tenant" (company.yaml), "
|
|
30
|
-
#
|
|
41
|
+
# Where it came from: "tenant" (company.yaml), "platform" (the operator's
|
|
42
|
+
# default for the agent), "catalog" (the agent's default in its pack) or
|
|
43
|
+
# "company" (the company's default model).
|
|
31
44
|
source: str | None
|
|
32
45
|
# The tenant's choice when it could not be used (no longer enabled).
|
|
33
46
|
ignored_choice: str | None = None
|
|
47
|
+
# The platform's model when this company does not have it enabled.
|
|
48
|
+
ignored_platform_model: str | None = None
|
|
34
49
|
|
|
35
50
|
|
|
36
51
|
class SystemAgentRunner:
|
|
@@ -40,11 +55,16 @@ class SystemAgentRunner:
|
|
|
40
55
|
output contract. Interpreting and repairing the answer stays with the caller.
|
|
41
56
|
|
|
42
57
|
The model is resolved from the most specific to the most general: the one the
|
|
43
|
-
tenant picked (`system_agents.<key>.model` in company.yaml), the
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
58
|
+
tenant picked (`system_agents.<key>.model` in company.yaml), the one the
|
|
59
|
+
platform set for the agent, the agent's default in the catalog, the
|
|
60
|
+
company's default model. A model the company does not have enabled is
|
|
61
|
+
skipped (the platform's too: a tenant is never charged for a model it does
|
|
62
|
+
not have), and a call that fails with a picked model is retried once with
|
|
63
|
+
the company's default, so a bad choice never stops the agent.
|
|
64
|
+
|
|
65
|
+
The platform's settings (default model, on/off) come from a provider the
|
|
66
|
+
deployment registers (`register_platform_settings_provider`); without one,
|
|
67
|
+
every agent is on and has no platform model.
|
|
48
68
|
|
|
49
69
|
Deliberately light: it does not go through tasks or the agent runtime, so
|
|
50
70
|
the services that use it gain no dependency beyond the model client.
|
|
@@ -52,9 +72,12 @@ class SystemAgentRunner:
|
|
|
52
72
|
|
|
53
73
|
CONFIG_SECTION = "system_agents"
|
|
54
74
|
SOURCE_TENANT = "tenant"
|
|
75
|
+
SOURCE_PLATFORM = "platform"
|
|
55
76
|
SOURCE_CATALOG = "catalog"
|
|
56
77
|
SOURCE_COMPANY = "company"
|
|
57
78
|
|
|
79
|
+
_platform_settings_provider: Callable[[str], PlatformAgentSettings | None] | None = None
|
|
80
|
+
|
|
58
81
|
_template_env = ImmutableSandboxedEnvironment(
|
|
59
82
|
undefined=StrictUndefined,
|
|
60
83
|
trim_blocks=True,
|
|
@@ -69,6 +92,33 @@ class SystemAgentRunner:
|
|
|
69
92
|
self.llm_client = llm_client
|
|
70
93
|
self.configuration_service = configuration_service
|
|
71
94
|
|
|
95
|
+
# =====================================================================
|
|
96
|
+
# Platform settings
|
|
97
|
+
# =====================================================================
|
|
98
|
+
|
|
99
|
+
@classmethod
|
|
100
|
+
def register_platform_settings_provider(cls,
|
|
101
|
+
provider: Callable[[str], PlatformAgentSettings | None] | None) -> None:
|
|
102
|
+
"""`provider(agent_key)` returns the platform's settings for an agent, or None for the defaults."""
|
|
103
|
+
cls._platform_settings_provider = provider
|
|
104
|
+
|
|
105
|
+
@classmethod
|
|
106
|
+
def platform_settings(cls, agent_key: str) -> PlatformAgentSettings:
|
|
107
|
+
provider = cls._platform_settings_provider
|
|
108
|
+
if provider is None:
|
|
109
|
+
return PlatformAgentSettings()
|
|
110
|
+
try:
|
|
111
|
+
settings = provider(agent_key)
|
|
112
|
+
except Exception as exc:
|
|
113
|
+
# The platform's store unreachable must not stop the tenants' agents.
|
|
114
|
+
logging.warning("Platform settings of system agent '%s' could not be read: %s", agent_key, exc)
|
|
115
|
+
return PlatformAgentSettings()
|
|
116
|
+
return settings if isinstance(settings, PlatformAgentSettings) else PlatformAgentSettings()
|
|
117
|
+
|
|
118
|
+
@classmethod
|
|
119
|
+
def is_enabled(cls, agent_key: str) -> bool:
|
|
120
|
+
return cls.platform_settings(agent_key).enabled
|
|
121
|
+
|
|
72
122
|
# =====================================================================
|
|
73
123
|
# Running
|
|
74
124
|
# =====================================================================
|
|
@@ -83,11 +133,15 @@ class SystemAgentRunner:
|
|
|
83
133
|
attachments: list | None = None) -> dict:
|
|
84
134
|
"""
|
|
85
135
|
The model's response (as llmClient.invoke returns it). Raises
|
|
136
|
+
SystemAgentDisabled when the platform turned the agent off,
|
|
86
137
|
SystemAgentUnavailable without a model, and whatever the model client
|
|
87
138
|
raises when even the company's default model fails.
|
|
88
139
|
"""
|
|
89
140
|
agent = SystemAgentCatalog.get(agent_key)
|
|
90
|
-
|
|
141
|
+
platform = self.platform_settings(agent.key)
|
|
142
|
+
if not platform.enabled:
|
|
143
|
+
raise SystemAgentDisabled(f"system agent '{agent.key}' is turned off by the platform")
|
|
144
|
+
resolved = self.resolve_model(company.short_name, agent, platform=platform)
|
|
91
145
|
if not resolved.model:
|
|
92
146
|
raise SystemAgentUnavailable(f"{company.short_name} has no model for system agent '{agent.key}'")
|
|
93
147
|
prompt = self.render_prompt(agent, inputs)
|
|
@@ -135,11 +189,12 @@ class SystemAgentRunner:
|
|
|
135
189
|
def resolve_model(self,
|
|
136
190
|
company_short_name: str,
|
|
137
191
|
agent: SystemAgent,
|
|
138
|
-
llm_configuration: tuple | None = None
|
|
192
|
+
llm_configuration: tuple | None = None,
|
|
193
|
+
platform: PlatformAgentSettings | None = None) -> ResolvedModel:
|
|
139
194
|
"""
|
|
140
|
-
`llm_configuration` is get_llm_configuration's (default, available)
|
|
141
|
-
the
|
|
142
|
-
|
|
195
|
+
`llm_configuration` is get_llm_configuration's (default, available) and
|
|
196
|
+
`platform` the agent's platform settings, when the caller already read
|
|
197
|
+
them: resolving many agents then costs one read of each.
|
|
143
198
|
"""
|
|
144
199
|
default_model, available = llm_configuration or self.configuration_service.get_llm_configuration(company_short_name)
|
|
145
200
|
enabled = self._model_ids(available)
|
|
@@ -158,9 +213,16 @@ class SystemAgentRunner:
|
|
|
158
213
|
"System agent '%s' of %s: model '%s' is no longer enabled; using the next level.",
|
|
159
214
|
agent.key, company_short_name, chosen,
|
|
160
215
|
)
|
|
216
|
+
platform = platform or self.platform_settings(agent.key)
|
|
217
|
+
ignored_platform = None
|
|
218
|
+
if platform.default_model:
|
|
219
|
+
if usable(platform.default_model):
|
|
220
|
+
return ResolvedModel(platform.default_model, self.SOURCE_PLATFORM, ignored)
|
|
221
|
+
ignored_platform = platform.default_model
|
|
161
222
|
if usable(agent.default_model):
|
|
162
|
-
return ResolvedModel(agent.default_model, self.SOURCE_CATALOG, ignored)
|
|
163
|
-
return ResolvedModel(default_model or None, self.SOURCE_COMPANY if default_model else None,
|
|
223
|
+
return ResolvedModel(agent.default_model, self.SOURCE_CATALOG, ignored, ignored_platform)
|
|
224
|
+
return ResolvedModel(default_model or None, self.SOURCE_COMPANY if default_model else None,
|
|
225
|
+
ignored, ignored_platform)
|
|
164
226
|
|
|
165
227
|
def tenant_choice(self, company_short_name: str, agent_key: str) -> str | None:
|
|
166
228
|
section = self._tenant_section(company_short_name)
|
|
@@ -243,7 +305,8 @@ class SystemAgentRunner:
|
|
|
243
305
|
llm_configuration = llm_configuration or self.configuration_service.get_llm_configuration(company_short_name)
|
|
244
306
|
result = []
|
|
245
307
|
for agent in SystemAgentCatalog.list():
|
|
246
|
-
|
|
308
|
+
platform = self.platform_settings(agent.key)
|
|
309
|
+
resolved = self.resolve_model(company_short_name, agent, llm_configuration, platform)
|
|
247
310
|
result.append({
|
|
248
311
|
"key": agent.key,
|
|
249
312
|
"name": agent.name,
|
|
@@ -260,5 +323,8 @@ class SystemAgentRunner:
|
|
|
260
323
|
"effective_model": resolved.model,
|
|
261
324
|
"model_source": resolved.source,
|
|
262
325
|
"ignored_model": resolved.ignored_choice,
|
|
326
|
+
"platform_model": platform.default_model,
|
|
327
|
+
"ignored_platform_model": resolved.ignored_platform_model,
|
|
328
|
+
"enabled": platform.enabled,
|
|
263
329
|
})
|
|
264
330
|
return result
|
|
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.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/common/interfaces/signup_policy_resolver.py
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/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.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_agents/memory_compiler.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_agents/memory_correction.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/core_identity.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/email_output.prompt
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/format_styles.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/html_structures.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/links_documents.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/memory_usage.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/output_basics.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_casting.prompt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_mysql_casting.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_mysql_json.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/config/system_prompts/sql_redshift_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/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.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/connectors/file_connector_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/src/iatoolkit/infra/connectors/google_drive_connector.py
RENAMED
|
File without changes
|
{iatoolkit-2.64.6 → iatoolkit-2.65.1}/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.64.6 → iatoolkit-2.65.1}/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.64.6 → iatoolkit-2.65.1}/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.64.6 → iatoolkit-2.65.1}/src/iatoolkit/repositories/filesystem_asset_repository.py
RENAMED
|
File without changes
|
|
File without changes
|