iatoolkit 2.10.0__tar.gz → 2.11.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.10.0/src/iatoolkit.egg-info → iatoolkit-2.11.0}/PKG-INFO +2 -1
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/requirements.txt +1 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/__init__.py +1 -1
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/database_provider.py +9 -1
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/sql_casting.prompt +1 -1
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/sql_core.prompt +4 -1
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/sql_jsonb.prompt +1 -1
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts_pack.yaml +20 -2
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/database_manager.py +54 -19
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/company_context_service.py +3 -1
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/context_builder_service.py +18 -5
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/prompt_service.py +61 -1
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/sql_service.py +9 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0/src/iatoolkit.egg-info}/PKG-INFO +2 -1
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit.egg-info/requires.txt +1 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/LICENSE +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/LICENSE_COMMUNITY.md +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/pyproject.toml +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/readme.md +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/setup.cfg +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/asset_storage.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/secret_provider.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/web_search_provider.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/model_registry.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/routes.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/secret_resolver.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/util.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/llm_capabilities.yaml +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/core_identity.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/email_output.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/file_download_output.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/html_structures.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/links_documents.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/output_basics.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/presentation_formatting.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/query_main.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/sql_aggregation_scope.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/tool_html_passthrough.prompt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_tools_pack.yaml +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/core.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/brevo_mail_app.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/google_auth_client.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/inference_embeddings_client.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/inference_handler.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/jina_embeddings_client.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_providers/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_providers/deepseek_adapter.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_providers/gemini_adapter.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_providers/openai_adapter.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_providers/openai_compatible_chat_adapter.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/locales/en.yaml +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/locales/es.yaml +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/api_key_repo.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/env_secret_provider.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/filesystem_asset_repository.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/mcp_personal_access_token_repo.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/memory_repo.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/models.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/prompt_resource_repo.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/sql_dataset_repo.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/sql_source_repo.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/api_key_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/attachment_policy_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/benchmark_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/configuration_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/dispatcher_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/embedding_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/history_manager_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/http_tool_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/i18n_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/inference_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/knowledge_base_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/language_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/license_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/llm_client_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/mcp_personal_access_token_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/memory_compiler_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/memory_lint_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/memory_lookup_policy_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/memory_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/memory_wiki_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/noop_memory_compilation_trigger.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/noop_memory_lint_trigger.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/contracts.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/image_normalizer.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/parsing_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/pdf_ocr_detection.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/provider_factory.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/provider_resolver.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/providers/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/providers/basic_provider.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/providers/docling_provider.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/parsers/validator.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/pdf_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/prompt_resource_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/query_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/signup_policy_resolver.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/sql_dataset_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/sql_source_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/storage_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/structured_output_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/system_prompt_catalog.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/system_tools.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/telemetry_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/tool_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/visual_kb_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/visual_tool_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/warmup_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/web_search/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/web_search/provider_factory.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/web_search/providers/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/web_search/providers/brave_provider.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/services/web_search_service.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/images/iatoolkit_core.png +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/images/iatoolkit_logo.png +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_help_content.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_main.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_memory_button.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_model_selector.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/styles/chat_public.css +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/styles/documents.css +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/system_prompts/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/_company_header.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/_login_widget.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/account.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/chat_memory_modal.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/home_hosted_default.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/memory/wiki_schema.md +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/pdf/base.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/pdf/letter.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/pdf/report.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/pdf/simple.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/account_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/api_key_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/categories_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/chat_context_preview_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/chat_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/configuration_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/connectors_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/embedding_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/help_content_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/home_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/load_document_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/memory_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/profile_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/prompt_context_preview_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/prompt_resource_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/rag_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/root_redirect_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/static_page_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/tool_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/users_api_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iatoolkit
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.11.0
|
|
4
4
|
Summary: IAToolkit
|
|
5
5
|
Author: Fernando Libedinsky
|
|
6
6
|
License-Expression: MIT
|
|
@@ -57,6 +57,7 @@ Requires-Dist: pgvector==0.3.6
|
|
|
57
57
|
Requires-Dist: pillow==11.0.0
|
|
58
58
|
Requires-Dist: psutil==7.0.0
|
|
59
59
|
Requires-Dist: psycopg2-binary==2.9.10
|
|
60
|
+
Requires-Dist: PyMySQL==1.1.1
|
|
60
61
|
Requires-Dist: PyJWT==2.10.1
|
|
61
62
|
Requires-Dist: PyMuPDF==1.25.0
|
|
62
63
|
Requires-Dist: python-dotenv==1.0.1
|
|
@@ -24,6 +24,14 @@ class DatabaseProvider(abc.ABC):
|
|
|
24
24
|
"""
|
|
25
25
|
pass
|
|
26
26
|
|
|
27
|
+
@abc.abstractmethod
|
|
28
|
+
def get_dialect(self) -> str:
|
|
29
|
+
"""
|
|
30
|
+
Returns the normalized SQL dialect/backend name used by this provider
|
|
31
|
+
(for example: 'postgresql', 'mysql', 'sqlite').
|
|
32
|
+
"""
|
|
33
|
+
pass
|
|
34
|
+
|
|
27
35
|
# --- Execution Methods ---
|
|
28
36
|
@abc.abstractmethod
|
|
29
37
|
def execute_query(self, query: str, commit: bool = False) -> Union[List[Dict[str, Any]], Dict[str, int]]:
|
|
@@ -40,4 +48,4 @@ class DatabaseProvider(abc.ABC):
|
|
|
40
48
|
|
|
41
49
|
@abc.abstractmethod
|
|
42
50
|
def rollback(self) -> None:
|
|
43
|
-
pass
|
|
51
|
+
pass
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
### SQL: reglas base
|
|
2
2
|
|
|
3
|
-
- Trabaja siempre
|
|
3
|
+
- Trabaja siempre con el dialecto SQL indicado para la base seleccionada.
|
|
4
|
+
- Antes de escribir la consulta, revisa el contexto de la base y respeta su marcador
|
|
5
|
+
`dialect=...` (por ejemplo `postgresql` o `mysql`).
|
|
4
6
|
- Usa solo tablas, columnas y relaciones presentes en el schema provisto.
|
|
5
7
|
No inventes columnas ni supongas nombres parecidos.
|
|
6
8
|
- Si la consulta requiere una base especifica, usa `iat_sql_query` con el
|
|
7
9
|
`database_key` correcto.
|
|
8
10
|
- Si hay mas de una tabla, subconsulta o CTE, califica las columnas con alias
|
|
9
11
|
en `SELECT`, `JOIN`, `ON`, `WHERE`, `GROUP BY`, `HAVING` y `ORDER BY`.
|
|
12
|
+
- No mezcles sintaxis de distintos dialectos en la misma consulta.
|
|
@@ -106,7 +106,7 @@ prompts:
|
|
|
106
106
|
- chat
|
|
107
107
|
- agent
|
|
108
108
|
all_capabilities:
|
|
109
|
-
-
|
|
109
|
+
- can_query_sql_postgres
|
|
110
110
|
- key: sql_casting
|
|
111
111
|
filename: sql_casting.prompt
|
|
112
112
|
section: data_access_rules
|
|
@@ -115,7 +115,7 @@ prompts:
|
|
|
115
115
|
- chat
|
|
116
116
|
- agent
|
|
117
117
|
all_capabilities:
|
|
118
|
-
-
|
|
118
|
+
- can_query_sql_postgres
|
|
119
119
|
- key: sql_aggregation_scope
|
|
120
120
|
filename: sql_aggregation_scope.prompt
|
|
121
121
|
section: data_access_rules
|
|
@@ -125,3 +125,21 @@ prompts:
|
|
|
125
125
|
- agent
|
|
126
126
|
all_capabilities:
|
|
127
127
|
- can_query_sql
|
|
128
|
+
- key: sql_mysql_json
|
|
129
|
+
filename: sql_mysql_json.prompt
|
|
130
|
+
section: data_access_rules
|
|
131
|
+
include:
|
|
132
|
+
execution_modes:
|
|
133
|
+
- chat
|
|
134
|
+
- agent
|
|
135
|
+
all_capabilities:
|
|
136
|
+
- can_query_sql_mysql
|
|
137
|
+
- key: sql_mysql_casting
|
|
138
|
+
filename: sql_mysql_casting.prompt
|
|
139
|
+
section: data_access_rules
|
|
140
|
+
include:
|
|
141
|
+
execution_modes:
|
|
142
|
+
- chat
|
|
143
|
+
- agent
|
|
144
|
+
all_capabilities:
|
|
145
|
+
- can_query_sql_mysql
|
|
@@ -37,8 +37,9 @@ class DatabaseManager(DatabaseProvider):
|
|
|
37
37
|
database_url = database_url.replace("postgres://", "postgresql://", 1)
|
|
38
38
|
|
|
39
39
|
self.url = make_url(database_url)
|
|
40
|
+
self.backend = self.url.get_backend_name()
|
|
40
41
|
|
|
41
|
-
if
|
|
42
|
+
if self.backend == 'sqlite':
|
|
42
43
|
raw_engine = create_engine(database_url, echo=False)
|
|
43
44
|
else:
|
|
44
45
|
raw_engine = create_engine(
|
|
@@ -50,16 +51,10 @@ class DatabaseManager(DatabaseProvider):
|
|
|
50
51
|
pool_recycle=1800,
|
|
51
52
|
pool_pre_ping=True,
|
|
52
53
|
pool_use_lifo=True,
|
|
53
|
-
connect_args=
|
|
54
|
-
"keepalives": 1,
|
|
55
|
-
"keepalives_idle": 30,
|
|
56
|
-
"keepalives_interval": 10,
|
|
57
|
-
"keepalives_count": 5,
|
|
58
|
-
"connect_timeout": 10,
|
|
59
|
-
},
|
|
54
|
+
connect_args=self._build_connect_args(),
|
|
60
55
|
future=True,
|
|
61
56
|
)
|
|
62
|
-
translated_schema =
|
|
57
|
+
translated_schema = self.schema if self._is_postgres() else None
|
|
63
58
|
self._engine = raw_engine.execution_options(
|
|
64
59
|
schema_translate_map={ORM_SCHEMA: translated_schema}
|
|
65
60
|
)
|
|
@@ -70,8 +65,7 @@ class DatabaseManager(DatabaseProvider):
|
|
|
70
65
|
self.scoped_session = scoped_session(self.SessionFactory)
|
|
71
66
|
|
|
72
67
|
# Register pgvector for each new connection
|
|
73
|
-
|
|
74
|
-
if backend == 'postgresql' or backend == 'postgres':
|
|
68
|
+
if self._is_postgres():
|
|
75
69
|
if register_pgvector:
|
|
76
70
|
event.listen(raw_engine, 'connect', self.on_connect)
|
|
77
71
|
|
|
@@ -79,6 +73,45 @@ class DatabaseManager(DatabaseProvider):
|
|
|
79
73
|
if self.schema:
|
|
80
74
|
event.listen(raw_engine, 'checkout', self.set_search_path)
|
|
81
75
|
|
|
76
|
+
def _is_postgres(self) -> bool:
|
|
77
|
+
return self.backend in ('postgresql', 'postgres')
|
|
78
|
+
|
|
79
|
+
def _is_mysql(self) -> bool:
|
|
80
|
+
return self.backend == 'mysql'
|
|
81
|
+
|
|
82
|
+
def _build_connect_args(self) -> dict:
|
|
83
|
+
if self._is_postgres():
|
|
84
|
+
return {
|
|
85
|
+
"keepalives": 1,
|
|
86
|
+
"keepalives_idle": 30,
|
|
87
|
+
"keepalives_interval": 10,
|
|
88
|
+
"keepalives_count": 5,
|
|
89
|
+
"connect_timeout": 10,
|
|
90
|
+
}
|
|
91
|
+
if self._is_mysql():
|
|
92
|
+
return {
|
|
93
|
+
"connect_timeout": 10,
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
"connect_timeout": 10,
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
def _effective_schema(self) -> str | None:
|
|
100
|
+
if self.backend == 'sqlite':
|
|
101
|
+
return None
|
|
102
|
+
|
|
103
|
+
if self._is_postgres():
|
|
104
|
+
return self.schema
|
|
105
|
+
|
|
106
|
+
if self._is_mysql():
|
|
107
|
+
normalized = str(self.schema or "").strip()
|
|
108
|
+
if normalized and normalized.lower() != "public":
|
|
109
|
+
return normalized
|
|
110
|
+
return self.url.database
|
|
111
|
+
|
|
112
|
+
normalized = str(self.schema or "").strip()
|
|
113
|
+
return normalized or None
|
|
114
|
+
|
|
82
115
|
def set_search_path(self, dbapi_connection, connection_record, connection_proxy):
|
|
83
116
|
# Configure the search_path for this connection
|
|
84
117
|
cursor = dbapi_connection.cursor()
|
|
@@ -110,10 +143,12 @@ class DatabaseManager(DatabaseProvider):
|
|
|
110
143
|
def get_connection(self):
|
|
111
144
|
return self._engine.connect()
|
|
112
145
|
|
|
146
|
+
def get_dialect(self) -> str:
|
|
147
|
+
return str(self.backend or "").strip().lower()
|
|
148
|
+
|
|
113
149
|
def create_all(self):
|
|
114
150
|
# if there is a schema defined, make sure it exists before creating tables
|
|
115
|
-
|
|
116
|
-
if self.schema and (backend == 'postgresql' or backend == 'postgres'):
|
|
151
|
+
if self.schema and self._is_postgres():
|
|
117
152
|
with self._engine.begin() as conn:
|
|
118
153
|
conn.execute(text(f"CREATE SCHEMA IF NOT EXISTS {self.schema}"))
|
|
119
154
|
|
|
@@ -126,8 +161,7 @@ class DatabaseManager(DatabaseProvider):
|
|
|
126
161
|
)
|
|
127
162
|
|
|
128
163
|
def _apply_bootstrap_patches(self) -> list[str]:
|
|
129
|
-
|
|
130
|
-
if backend not in ('postgresql', 'postgres'):
|
|
164
|
+
if not self._is_postgres():
|
|
131
165
|
return []
|
|
132
166
|
|
|
133
167
|
applied = []
|
|
@@ -154,7 +188,7 @@ class DatabaseManager(DatabaseProvider):
|
|
|
154
188
|
Implementation for Direct SQLAlchemy connection.
|
|
155
189
|
"""
|
|
156
190
|
session = self.get_session()
|
|
157
|
-
if self.schema:
|
|
191
|
+
if self._is_postgres() and self.schema:
|
|
158
192
|
session.execute(text(f"SET search_path TO {self.schema}"))
|
|
159
193
|
|
|
160
194
|
result = session.execute(text(query))
|
|
@@ -178,14 +212,15 @@ class DatabaseManager(DatabaseProvider):
|
|
|
178
212
|
def get_database_structure(self) -> dict:
|
|
179
213
|
inspector = inspect(self._engine)
|
|
180
214
|
structure = {}
|
|
181
|
-
|
|
215
|
+
effective_schema = self._effective_schema()
|
|
216
|
+
for table in inspector.get_table_names(schema=effective_schema):
|
|
182
217
|
columns_data = []
|
|
183
218
|
|
|
184
219
|
# get columns
|
|
185
220
|
try:
|
|
186
|
-
columns = inspector.get_columns(table, schema=
|
|
221
|
+
columns = inspector.get_columns(table, schema=effective_schema)
|
|
187
222
|
# Obtener PKs para marcarlas
|
|
188
|
-
pks = inspector.get_pk_constraint(table, schema=
|
|
223
|
+
pks = inspector.get_pk_constraint(table, schema=effective_schema).get('constrained_columns', [])
|
|
189
224
|
|
|
190
225
|
for col in columns:
|
|
191
226
|
columns_data.append({
|
|
@@ -128,7 +128,9 @@ class CompanyContextService:
|
|
|
128
128
|
continue
|
|
129
129
|
|
|
130
130
|
# 2. Build Header for this Database
|
|
131
|
-
|
|
131
|
+
dialect = self.sql_service.get_database_dialect(company_short_name, db_name)
|
|
132
|
+
dialect_suffix = f" [dialect={dialect}]" if dialect else ""
|
|
133
|
+
db_context = f"### Base SQL (`database_key`): {db_name}{dialect_suffix}\n"
|
|
132
134
|
|
|
133
135
|
# Optional: Add DB description from config if available (useful context)
|
|
134
136
|
db_desc = source.get('description', '')
|
|
@@ -73,7 +73,10 @@ class ContextBuilderService:
|
|
|
73
73
|
company_id=company.id,
|
|
74
74
|
company_short_name=company.short_name,
|
|
75
75
|
query_text=query_text,
|
|
76
|
-
capabilities_override=self.
|
|
76
|
+
capabilities_override=self.prompt_service.resolve_system_prompt_capabilities(
|
|
77
|
+
company.short_name,
|
|
78
|
+
self._resolve_system_prompt_capabilities(available_tools),
|
|
79
|
+
),
|
|
77
80
|
execution_mode="chat",
|
|
78
81
|
response_mode="chat_compatible",
|
|
79
82
|
)
|
|
@@ -179,7 +182,10 @@ class ContextBuilderService:
|
|
|
179
182
|
company_id=company.id,
|
|
180
183
|
company_short_name=company.short_name,
|
|
181
184
|
query_text=query_text,
|
|
182
|
-
capabilities_override=self.
|
|
185
|
+
capabilities_override=self.prompt_service.resolve_system_prompt_capabilities(
|
|
186
|
+
company.short_name,
|
|
187
|
+
self._resolve_system_prompt_capabilities(available_tools),
|
|
188
|
+
),
|
|
183
189
|
execution_mode="chat",
|
|
184
190
|
response_mode="chat_compatible",
|
|
185
191
|
)
|
|
@@ -282,15 +288,22 @@ class ContextBuilderService:
|
|
|
282
288
|
PromptResourceType.RAG_COLLECTION.value,
|
|
283
289
|
)
|
|
284
290
|
|
|
285
|
-
|
|
291
|
+
prompt_capabilities = self._resolve_system_prompt_capabilities(enabled_tools)
|
|
286
292
|
if self.SQL_TOOL_NAME in enabled_tool_names and not sql_sources:
|
|
287
|
-
|
|
293
|
+
prompt_capabilities.discard("can_query_sql")
|
|
294
|
+
prompt_capabilities.discard("can_query_sql_postgres")
|
|
295
|
+
prompt_capabilities.discard("can_query_sql_mysql")
|
|
296
|
+
prompt_capabilities = self.prompt_service.resolve_system_prompt_capabilities(
|
|
297
|
+
company.short_name,
|
|
298
|
+
prompt_capabilities,
|
|
299
|
+
allowed_sql_databases=sql_sources if self.SQL_TOOL_NAME in enabled_tool_names else None,
|
|
300
|
+
)
|
|
288
301
|
|
|
289
302
|
system_prompt_payload = self.prompt_service.get_system_prompt_payload(
|
|
290
303
|
company_id=company.id,
|
|
291
304
|
company_short_name=company.short_name,
|
|
292
305
|
query_text=query_text,
|
|
293
|
-
capabilities_override=
|
|
306
|
+
capabilities_override=prompt_capabilities,
|
|
294
307
|
execution_mode="agent",
|
|
295
308
|
response_mode=str(resolved_contract.get("response_mode") or "chat_compatible").strip().lower() or "chat_compatible",
|
|
296
309
|
)
|
|
@@ -633,14 +633,50 @@ class PromptService:
|
|
|
633
633
|
self.llm_query_repo.delete_prompt(prompt_db)
|
|
634
634
|
|
|
635
635
|
def _resolve_system_prompt_capabilities(self, company_short_name: str) -> set[str]:
|
|
636
|
+
return self._resolve_sql_prompt_capabilities(company_short_name)
|
|
637
|
+
|
|
638
|
+
def _resolve_sql_prompt_capabilities(
|
|
639
|
+
self,
|
|
640
|
+
company_short_name: str,
|
|
641
|
+
allowed_sql_databases: list[str] | None = None,
|
|
642
|
+
) -> set[str]:
|
|
636
643
|
capabilities: set[str] = set()
|
|
637
644
|
if not company_short_name:
|
|
638
645
|
return capabilities
|
|
639
646
|
|
|
640
647
|
try:
|
|
641
648
|
db_names = self.sql_service.get_db_names(company_short_name)
|
|
642
|
-
if isinstance(db_names, list)
|
|
649
|
+
if not isinstance(db_names, list):
|
|
650
|
+
return capabilities
|
|
651
|
+
|
|
652
|
+
allowed_database_set = None
|
|
653
|
+
if allowed_sql_databases is not None:
|
|
654
|
+
allowed_database_set = {
|
|
655
|
+
str(item or "").strip()
|
|
656
|
+
for item in allowed_sql_databases
|
|
657
|
+
if str(item or "").strip()
|
|
658
|
+
}
|
|
659
|
+
db_names = [db_name for db_name in db_names if db_name in allowed_database_set]
|
|
660
|
+
|
|
661
|
+
if db_names:
|
|
643
662
|
capabilities.add("can_query_sql")
|
|
663
|
+
|
|
664
|
+
dialects: set[str] = set()
|
|
665
|
+
for db_name in db_names:
|
|
666
|
+
try:
|
|
667
|
+
dialect = self.sql_service.get_database_dialect(company_short_name, db_name)
|
|
668
|
+
except Exception:
|
|
669
|
+
continue
|
|
670
|
+
normalized = str(dialect or "").strip().lower()
|
|
671
|
+
if normalized:
|
|
672
|
+
dialects.add(normalized)
|
|
673
|
+
|
|
674
|
+
if len(dialects) == 1:
|
|
675
|
+
only_dialect = next(iter(dialects))
|
|
676
|
+
if only_dialect in {"postgresql", "postgres"}:
|
|
677
|
+
capabilities.add("can_query_sql_postgres")
|
|
678
|
+
elif only_dialect == "mysql":
|
|
679
|
+
capabilities.add("can_query_sql_mysql")
|
|
644
680
|
except Exception as e:
|
|
645
681
|
logging.debug(
|
|
646
682
|
"Could not resolve SQL capabilities for company '%s': %s",
|
|
@@ -650,6 +686,30 @@ class PromptService:
|
|
|
650
686
|
|
|
651
687
|
return capabilities
|
|
652
688
|
|
|
689
|
+
def resolve_system_prompt_capabilities(
|
|
690
|
+
self,
|
|
691
|
+
company_short_name: str,
|
|
692
|
+
base_capabilities: set[str] | list[str] | tuple[str, ...] | None = None,
|
|
693
|
+
allowed_sql_databases: list[str] | None = None,
|
|
694
|
+
) -> set[str]:
|
|
695
|
+
capabilities = {
|
|
696
|
+
str(item or "").strip()
|
|
697
|
+
for item in (base_capabilities or set())
|
|
698
|
+
if str(item or "").strip()
|
|
699
|
+
}
|
|
700
|
+
sql_capabilities = self._resolve_sql_prompt_capabilities(
|
|
701
|
+
company_short_name,
|
|
702
|
+
allowed_sql_databases=allowed_sql_databases,
|
|
703
|
+
)
|
|
704
|
+
|
|
705
|
+
if "can_query_sql" in capabilities:
|
|
706
|
+
capabilities.update(sql_capabilities)
|
|
707
|
+
else:
|
|
708
|
+
capabilities.discard("can_query_sql_postgres")
|
|
709
|
+
capabilities.discard("can_query_sql_mysql")
|
|
710
|
+
|
|
711
|
+
return capabilities
|
|
712
|
+
|
|
653
713
|
def get_system_prompt_payload(
|
|
654
714
|
self,
|
|
655
715
|
company_id: int,
|
|
@@ -102,6 +102,15 @@ class SqlService:
|
|
|
102
102
|
"""
|
|
103
103
|
return [db for (co, db) in self._db_connections.keys() if co == company_short_name]
|
|
104
104
|
|
|
105
|
+
def get_database_dialect(self, company_short_name: str, db_name: str) -> str:
|
|
106
|
+
provider = self.get_database_provider(company_short_name, db_name)
|
|
107
|
+
dialect = getattr(provider, "get_dialect", None)
|
|
108
|
+
if callable(dialect):
|
|
109
|
+
value = dialect()
|
|
110
|
+
if isinstance(value, str):
|
|
111
|
+
return value.strip().lower()
|
|
112
|
+
return ""
|
|
113
|
+
|
|
105
114
|
def get_database_provider(self, company_short_name: str, db_name: str) -> DatabaseProvider:
|
|
106
115
|
"""
|
|
107
116
|
Retrieves a registered DatabaseProvider instance using the composite key.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iatoolkit
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.11.0
|
|
4
4
|
Summary: IAToolkit
|
|
5
5
|
Author: Fernando Libedinsky
|
|
6
6
|
License-Expression: MIT
|
|
@@ -57,6 +57,7 @@ Requires-Dist: pgvector==0.3.6
|
|
|
57
57
|
Requires-Dist: pillow==11.0.0
|
|
58
58
|
Requires-Dist: psutil==7.0.0
|
|
59
59
|
Requires-Dist: psycopg2-binary==2.9.10
|
|
60
|
+
Requires-Dist: PyMySQL==1.1.1
|
|
60
61
|
Requires-Dist: PyJWT==2.10.1
|
|
61
62
|
Requires-Dist: PyMuPDF==1.25.0
|
|
62
63
|
Requires-Dist: python-dotenv==1.0.1
|
|
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.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/memory_compilation_trigger.py
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/memory_lint_trigger.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/signup_policy_resolver.py
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/common/interfaces/web_search_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/chat_state_rules.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/chat_user_profile.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/core_identity.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/email_output.prompt
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/format_styles.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/html_structures.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/links_documents.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/memory_usage.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/multimodal_basics.prompt
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/config/system_prompts/output_basics.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
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/connectors/file_connector_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/connectors/google_drive_connector.py
RENAMED
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/connectors/local_file_connector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_providers/anthropic_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-2.10.0 → iatoolkit-2.11.0}/src/iatoolkit/infra/llm_providers/openrouter_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|