From f7430c3a06a31d283543bcbcb0f6b284a4a777e4 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Wed, 17 Dec 2025 16:31:42 +0000 Subject: [PATCH 01/17] Core infrastructure for LLM integration. --- docs/en_US/images/preferences_ai.png | Bin 0 -> 96441 bytes docs/en_US/preferences.rst | 52 + web/config.py | 62 + web/jest.config.js | 2 +- .../versions/add_tools_ai_permission_.py | 58 + web/package.json | 1 + web/pgadmin/browser/static/js/constants.js | 4 +- web/pgadmin/llm/README.md | 90 + web/pgadmin/llm/__init__.py | 763 +++++++ web/pgadmin/llm/client.py | 204 ++ web/pgadmin/llm/models.py | 201 ++ web/pgadmin/llm/providers/__init__.py | 16 + web/pgadmin/llm/providers/anthropic.py | 273 +++ web/pgadmin/llm/providers/docker.py | 345 ++++ web/pgadmin/llm/providers/ollama.py | 289 +++ web/pgadmin/llm/providers/openai.py | 339 +++ web/pgadmin/llm/tests/README.md | 187 ++ web/pgadmin/llm/tests/__init__.py | 8 + web/pgadmin/llm/tests/test_llm_status.py | 75 + web/pgadmin/llm/utils.py | 356 ++++ .../js/components/PreferencesHelper.jsx | 68 + .../static/js/components/FormComponents.jsx | 6 +- .../static/js/components/SelectRefresh.jsx | 149 +- web/pgadmin/submodules.py | 2 + .../user_management/PgAdminPermissions.py | 6 + web/pgadmin/utils/constants.py | 1 + web/yarn.lock | 1836 ++++++++++++----- 27 files changed, 4868 insertions(+), 525 deletions(-) create mode 100644 docs/en_US/images/preferences_ai.png create mode 100644 web/migrations/versions/add_tools_ai_permission_.py create mode 100644 web/pgadmin/llm/README.md create mode 100644 web/pgadmin/llm/__init__.py create mode 100644 web/pgadmin/llm/client.py create mode 100644 web/pgadmin/llm/models.py create mode 100644 web/pgadmin/llm/providers/__init__.py create mode 100644 web/pgadmin/llm/providers/anthropic.py create mode 100644 web/pgadmin/llm/providers/docker.py create mode 100644 web/pgadmin/llm/providers/ollama.py create mode 100644 web/pgadmin/llm/providers/openai.py create mode 100644 web/pgadmin/llm/tests/README.md create mode 100644 web/pgadmin/llm/tests/__init__.py create mode 100644 web/pgadmin/llm/tests/test_llm_status.py create mode 100644 web/pgadmin/llm/utils.py diff --git a/docs/en_US/images/preferences_ai.png b/docs/en_US/images/preferences_ai.png new file mode 100644 index 0000000000000000000000000000000000000000..edb065ec3ada85fdf0aab02ab283421d285f5b22 GIT binary patch literal 96441 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 JnyT@Y{|o3i{SN>D literal 0 HcmV?d00001 diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst index 40dca82ff31..7fc51ecbdb7 100644 --- a/docs/en_US/preferences.rst +++ b/docs/en_US/preferences.rst @@ -27,6 +27,58 @@ The left pane of the *Preferences* tab displays a tree control; each node of the tree control provides access to options that are related to the node under which they are displayed. +The AI Node +*********** + +Use preferences found in the *AI* node of the tree control to configure +AI-powered features and LLM (Large Language Model) providers. + +.. image:: images/preferences_ai.png + :alt: Preferences AI section + :align: center + +**Note:** AI features must be enabled in the server configuration (``LLM_ENABLED = True`` +in ``config.py``) for these preferences to be available. + +Use the fields on the *AI* panel to configure your LLM provider: + +* Use the *Default Provider* drop-down to select your LLM provider. Options include: + *Anthropic*, *OpenAI*, *Ollama*, or *Docker Model Runner*. + +**Anthropic Settings:** + +* Use the *API Key File* field to specify the path to a file containing your + Anthropic API key. + +* Use the *Model* field to select from the available Claude models. Click the + refresh button to fetch the latest available models from Anthropic. + +**OpenAI Settings:** + +* Use the *API Key File* field to specify the path to a file containing your + OpenAI API key. + +* Use the *Model* field to select from the available GPT models. Click the + refresh button to fetch the latest available models from OpenAI. + +**Ollama Settings:** + +* Use the *API URL* field to specify the Ollama server URL + (default: ``http://localhost:11434``). + +* Use the *Model* field to select from the available models or enter a custom + model name (e.g., ``llama2``, ``mistral``). Click the refresh button to fetch + the latest available models from your Ollama server. + +**Docker Model Runner Settings:** + +* Use the *API URL* field to specify the Docker Model Runner API URL + (default: ``http://localhost:12434``). Available in Docker Desktop 4.40+. + +* Use the *Model* field to select from the available models or enter a custom + model name. Click the refresh button to fetch the latest available models + from your Docker Model Runner. + The Browser Node **************** diff --git a/web/config.py b/web/config.py index 10e9e626b35..0bec13fc428 100644 --- a/web/config.py +++ b/web/config.py @@ -970,6 +970,68 @@ ON_DEMAND_LOG_COUNT = 10000 +########################################################################## +# AI/LLM Settings +########################################################################## + +# Master switch to enable/disable LLM features entirely. +# When False, all AI/LLM features are disabled and cannot be enabled +# by users through preferences. When True, users can configure their +# preferred LLM provider in preferences. +LLM_ENABLED = True + +# Default LLM Provider +# Specifies which LLM provider to use by default when LLM_ENABLED is True. +# Users can override this in their preferences. +# Valid values: 'anthropic', 'openai', 'ollama', 'docker', or '' (disabled) +DEFAULT_LLM_PROVIDER = '' + +# Anthropic Configuration +# Path to a file containing the Anthropic API key. The file should contain +# only the API key with no additional whitespace or formatting. +# Default: ~/.anthropic-api-key +ANTHROPIC_API_KEY_FILE = '~/.anthropic-api-key' + +# The Anthropic model to use for AI features. +# Examples: claude-sonnet-4-20250514, claude-3-5-haiku-20241022 +ANTHROPIC_API_MODEL = '' + +# OpenAI Configuration +# Path to a file containing the OpenAI API key. The file should contain +# only the API key with no additional whitespace or formatting. +# Default: ~/.openai-api-key +OPENAI_API_KEY_FILE = '~/.openai-api-key' + +# The OpenAI model to use for AI features. +# Examples: gpt-4o, gpt-4o-mini, gpt-4-turbo +OPENAI_API_MODEL = '' + +# Ollama Configuration +# URL for the Ollama API endpoint. Leave empty to disable Ollama. +# Typical value: http://localhost:11434 +OLLAMA_API_URL = '' + +# The Ollama model to use for AI features. +# Examples: llama3.2, codellama, mistral +OLLAMA_API_MODEL = '' + +# Docker Model Runner Configuration +# Docker Desktop 4.40+ includes a built-in model runner with an OpenAI-compatible +# API. No API key is required. +# URL for the Docker Model Runner API endpoint. Leave empty to disable. +# Default value: http://localhost:12434 +DOCKER_API_URL = '' + +# The Docker Model Runner model to use for AI features. +# Examples: ai/qwen3-coder, ai/llama3.2 +DOCKER_API_MODEL = '' + +# Maximum Tool Iterations +# The maximum number of tool call iterations allowed during an AI conversation. +# This prevents runaway conversations that could consume excessive resources. +# Users can override this in their preferences. +MAX_LLM_TOOL_ITERATIONS = 20 + ############################################################################# # Patch the default config with custom config and other manipulations ############################################################################# diff --git a/web/jest.config.js b/web/jest.config.js index a05a787c494..0b4ffb646ae 100644 --- a/web/jest.config.js +++ b/web/jest.config.js @@ -52,7 +52,7 @@ module.exports = { ], 'testEnvironment': 'jsdom', 'transformIgnorePatterns': [ - '[/\\\\]node_modules[/\\\\](?!react-dnd|dnd-core|@react-dnd|react-resize-detector|react-data-grid).+\\.(js|jsx|mjs|cjs|ts|tsx)$', + '[/\\\\]node_modules[/\\\\](?!react-dnd|dnd-core|@react-dnd|react-resize-detector|react-data-grid|marked).+\\.(js|jsx|mjs|cjs|ts|tsx)$', '^.+\\.module\\.(css|sass|scss)$' ] }; diff --git a/web/migrations/versions/add_tools_ai_permission_.py b/web/migrations/versions/add_tools_ai_permission_.py new file mode 100644 index 00000000000..2ae7fe4617a --- /dev/null +++ b/web/migrations/versions/add_tools_ai_permission_.py @@ -0,0 +1,58 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Add tools_ai permission to existing roles + +Revision ID: add_tools_ai_perm +Revises: efbbe5d5862f +Create Date: 2025-12-01 + +""" +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision = 'add_tools_ai_perm' +down_revision = 'efbbe5d5862f' +branch_labels = None +depends_on = None + + +def upgrade(): + # Get metadata from current connection + meta = sa.MetaData() + meta.reflect(op.get_bind(), only=('role',)) + role_table = sa.Table('role', meta) + + # Get all roles with permissions + conn = op.get_bind() + result = conn.execute( + sa.select(role_table.c.id, role_table.c.permissions) + .where(role_table.c.permissions.isnot(None)) + ) + + # Add tools_ai permission to each role that has permissions + for row in result: + role_id = row[0] + permissions = row[1] + if permissions: + perms_list = permissions.split(',') + if 'tools_ai' not in perms_list: + perms_list.append('tools_ai') + new_permissions = ','.join(perms_list) + conn.execute( + role_table.update() + .where(role_table.c.id == role_id) + .values(permissions=new_permissions) + ) + + +def downgrade(): + # pgAdmin only upgrades, downgrade not implemented. + pass diff --git a/web/package.json b/web/package.json index 1a6065844cf..580422411ca 100644 --- a/web/package.json +++ b/web/package.json @@ -117,6 +117,7 @@ "json-bignumber": "^1.0.1", "leaflet": "^1.9.4", "lodash": "4.*", + "marked": "^17.0.1", "moment": "^2.29.4", "moment-timezone": "^0.6.0", "notificar": "^1.0.1", diff --git a/web/pgadmin/browser/static/js/constants.js b/web/pgadmin/browser/static/js/constants.js index a77e1243852..54cbe187be5 100644 --- a/web/pgadmin/browser/static/js/constants.js +++ b/web/pgadmin/browser/static/js/constants.js @@ -44,7 +44,8 @@ export const BROWSER_PANELS = { USER_MANAGEMENT: 'id-user-management', IMPORT_EXPORT_SERVERS: 'id-import-export-servers', WELCOME_QUERY_TOOL: 'id-welcome-querytool', - WELCOME_PSQL_TOOL: 'id-welcome-psql' + WELCOME_PSQL_TOOL: 'id-welcome-psql', + AI_REPORT_PREFIX: 'id-ai-report' }; @@ -139,6 +140,7 @@ export const AllPermissionTypes = { TOOLS_MAINTENANCE: 'tools_maintenance', TOOLS_SCHEMA_DIFF: 'tools_schema_diff', TOOLS_GRANT_WIZARD: 'tools_grant_wizard', + TOOLS_AI: 'tools_ai', STORAGE_ADD_FOLDER: 'storage_add_folder', STORAGE_REMOVE_FOLDER: 'storage_remove_folder' }; diff --git a/web/pgadmin/llm/README.md b/web/pgadmin/llm/README.md new file mode 100644 index 00000000000..caf7e39bada --- /dev/null +++ b/web/pgadmin/llm/README.md @@ -0,0 +1,90 @@ +# pgAdmin LLM Integration + +This module provides AI/LLM functionality for pgAdmin, including database security analysis, performance reports, and design reviews powered by large language models. + +## Features + +- **Security Reports**: Analyze database configurations for security issues +- **Performance Reports**: Get optimization recommendations for databases +- **Design Reviews**: Review schema design and structure +- **Streaming Reports**: Real-time report generation with progress updates via Server-Sent Events (SSE) + +## Supported LLM Providers + +- **Anthropic Claude** (recommended) +- **OpenAI GPT** +- **Ollama** (local models) + +## Configuration + +Configure LLM providers in `config.py`: + +- `DEFAULT_LLM_PROVIDER`: Set to 'anthropic', 'openai', or 'ollama' +- `ANTHROPIC_API_KEY_FILE`: Path to file containing Anthropic API key +- `OPENAI_API_KEY_FILE`: Path to file containing OpenAI API key +- `OLLAMA_API_URL`: URL for Ollama server (e.g., 'http://localhost:11434') + +If API keys are not found, the LLM features will be gracefully disabled. + +## Testing + +### Python Tests + +The Python test suite uses pgAdmin's existing test framework based on `BaseTestGenerator` with the scenarios pattern. + +Run all LLM tests: +```bash +cd web/regression +python3 runtests.py --pkg llm +``` + +Run specific test modules: +```bash +python3 runtests.py --pkg llm --modules test_llm_status +python3 runtests.py --pkg llm --modules test_report_endpoints +``` + +### JavaScript Tests + +The JavaScript test suite uses Jest with React Testing Library. + +Run all JavaScript tests (including LLM tests): +```bash +cd web +yarn run test:js +``` + +Run only LLM JavaScript tests: +```bash +cd web +yarn run test:js-once -- llm +``` + +### Test Coverage + +The tests use mocking to avoid requiring actual LLM API credentials. All external dependencies (utility functions, report generators) are mocked, allowing the tests to run in CI/CD environments without any API keys configured. + +Test files: +- `tests/test_llm_status.py` - Tests LLM client initialization and status endpoint +- `tests/test_report_endpoints.py` - Tests report generation endpoints at server, database, and schema levels +- `regression/javascript/llm/AIReport.spec.js` - Tests React component for report display + +## Architecture + +- `client.py` - LLM client abstraction layer supporting multiple providers +- `reports/` - Report generation system + - `generator.py` - Main report generation logic + - `security.py` - Security analysis prompts and logic + - `performance.py` - Performance analysis prompts and logic + - `design.py` - Design review prompts and logic +- `views.py` - Flask endpoints for reports and chat +- `static/js/AIReport.jsx` - React component for displaying reports with dark mode support + +## Usage + +Access AI reports through the pgAdmin browser tree: +1. Right-click on a server, database, or schema +2. Select "AI Analysis" submenu +3. Choose report type (Security, Performance, or Design) +4. View streaming report generation with progress updates +5. Download reports as markdown files diff --git a/web/pgadmin/llm/__init__.py b/web/pgadmin/llm/__init__.py new file mode 100644 index 00000000000..8573f873bfa --- /dev/null +++ b/web/pgadmin/llm/__init__.py @@ -0,0 +1,763 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""A blueprint module implementing LLM/AI configuration.""" + +import json +import ssl +from flask import Response, request +from flask_babel import gettext +from pgadmin.utils import PgAdminModule +from pgadmin.utils.preferences import Preferences +from pgadmin.utils.ajax import make_json_response, internal_server_error +from pgadmin.user_login_check import pga_login_required +from pgadmin.utils.constants import MIMETYPE_APP_JS +from pgadmin.utils.csrf import pgCSRFProtect +import config + +# Try to use certifi for proper SSL certificate handling +try: + import certifi + SSL_CONTEXT = ssl.create_default_context(cafile=certifi.where()) +except ImportError: + SSL_CONTEXT = ssl.create_default_context() + + +MODULE_NAME = 'llm' + +# Valid LLM providers +LLM_PROVIDERS = ['anthropic', 'openai', 'ollama', 'docker'] + + +class LLMModule(PgAdminModule): + """LLM configuration module for pgAdmin.""" + + def register_preferences(self): + """ + Register preferences for LLM providers. + """ + self.preference = Preferences('ai', gettext('AI')) + + # Default Provider Setting + provider_options = [ + {'label': gettext('None (Disabled)'), 'value': ''}, + {'label': gettext('Anthropic'), 'value': 'anthropic'}, + {'label': gettext('OpenAI'), 'value': 'openai'}, + {'label': gettext('Ollama'), 'value': 'ollama'}, + {'label': gettext('Docker Model Runner'), 'value': 'docker'}, + ] + + # Get default provider from config + default_provider_value = getattr(config, 'DEFAULT_LLM_PROVIDER', '') + + self.default_provider = self.preference.register( + 'general', 'default_provider', + gettext("Default Provider"), 'options', + default_provider_value, + category_label=gettext('AI Configuration'), + options=provider_options, + help_str=gettext( + 'The LLM provider to use for AI features. ' + 'Select "None (Disabled)" to disable AI features. ' + 'Note: AI features must also be enabled in the server ' + 'configuration (LLM_ENABLED) for this setting to take effect.' + ), + control_props={'allowClear': False} + ) + + # Maximum Tool Iterations + max_tool_iterations_default = getattr( + config, 'MAX_LLM_TOOL_ITERATIONS', 20 + ) + self.max_tool_iterations = self.preference.register( + 'general', 'max_tool_iterations', + gettext("Max Tool Iterations"), 'integer', + max_tool_iterations_default, + category_label=gettext('AI Configuration'), + min_val=1, + max_val=100, + help_str=gettext( + 'Maximum number of tool call iterations allowed during an AI ' + 'conversation. Higher values allow more complex queries but ' + 'may consume more resources. Default is 20.' + ) + ) + + # Anthropic Settings + # Get defaults from config + anthropic_key_file_default = getattr( + config, 'ANTHROPIC_API_KEY_FILE', '' + ) + anthropic_model_default = getattr(config, 'ANTHROPIC_API_MODEL', '') + + self.anthropic_api_key_file = self.preference.register( + 'anthropic', 'anthropic_api_key_file', + gettext("API Key File"), 'text', + anthropic_key_file_default, + category_label=gettext('Anthropic'), + help_str=gettext( + 'Path to a file containing your Anthropic API key. ' + 'The file should contain only the API key.' + ) + ) + + # Fallback Anthropic models (used if API fetch fails) + anthropic_model_options = [] + + self.anthropic_api_model = self.preference.register( + 'anthropic', 'anthropic_api_model', + gettext("Model"), 'options', + anthropic_model_default, + category_label=gettext('Anthropic'), + options=anthropic_model_options, + help_str=gettext( + 'The Anthropic model to use. Models are loaded dynamically ' + 'from your API key. You can also type a custom model name. ' + 'Leave empty to use the default (Claude Sonnet 4).' + ), + control_props={ + 'allowClear': True, + 'creatable': True, + 'tags': True, + 'placeholder': gettext('Select or type a model name...'), + 'optionsUrl': 'llm.models_anthropic', + 'optionsRefreshUrl': 'llm.refresh_models_anthropic', + 'refreshDepNames': { + 'api_key_file': 'anthropic_api_key_file' + } + } + ) + + # OpenAI Settings + # Get defaults from config + openai_key_file_default = getattr(config, 'OPENAI_API_KEY_FILE', '') + openai_model_default = getattr(config, 'OPENAI_API_MODEL', '') + + self.openai_api_key_file = self.preference.register( + 'openai', 'openai_api_key_file', + gettext("API Key File"), 'text', + openai_key_file_default, + category_label=gettext('OpenAI'), + help_str=gettext( + 'Path to a file containing your OpenAI API key. ' + 'The file should contain only the API key.' + ) + ) + + # Fallback OpenAI models (used if API fetch fails) + openai_model_options = [] + + self.openai_api_model = self.preference.register( + 'openai', 'openai_api_model', + gettext("Model"), 'options', + openai_model_default, + category_label=gettext('OpenAI'), + options=openai_model_options, + help_str=gettext( + 'The OpenAI model to use. Models are loaded dynamically ' + 'from your API key. You can also type a custom model name. ' + 'Leave empty to use the default (GPT-4o).' + ), + control_props={ + 'allowClear': True, + 'creatable': True, + 'tags': True, + 'placeholder': gettext('Select or type a model name...'), + 'optionsUrl': 'llm.models_openai', + 'optionsRefreshUrl': 'llm.refresh_models_openai', + 'refreshDepNames': { + 'api_key_file': 'openai_api_key_file' + } + } + ) + + # Ollama Settings + # Get defaults from config + ollama_url_default = getattr(config, 'OLLAMA_API_URL', '') + ollama_model_default = getattr(config, 'OLLAMA_API_MODEL', '') + + self.ollama_api_url = self.preference.register( + 'ollama', 'ollama_api_url', + gettext("API URL"), 'text', + ollama_url_default, + category_label=gettext('Ollama'), + help_str=gettext( + 'URL for the Ollama API endpoint ' + '(e.g., http://localhost:11434).' + ) + ) + + # Fallback Ollama models (used if API fetch fails) + ollama_model_options = [] + + self.ollama_api_model = self.preference.register( + 'ollama', 'ollama_api_model', + gettext("Model"), 'options', + ollama_model_default, + category_label=gettext('Ollama'), + options=ollama_model_options, + help_str=gettext( + 'The Ollama model to use. Models are loaded dynamically ' + 'from your Ollama server. You can also type a custom model name.' + ), + control_props={ + 'allowClear': True, + 'creatable': True, + 'tags': True, + 'placeholder': gettext('Select or type a model name...'), + 'optionsUrl': 'llm.models_ollama', + 'optionsRefreshUrl': 'llm.refresh_models_ollama', + 'refreshDepNames': { + 'api_url': 'ollama_api_url' + } + } + ) + + # Docker Model Runner Settings + # Get defaults from config + docker_url_default = getattr(config, 'DOCKER_API_URL', '') + docker_model_default = getattr(config, 'DOCKER_API_MODEL', '') + + self.docker_api_url = self.preference.register( + 'docker', 'docker_api_url', + gettext("API URL"), 'text', + docker_url_default, + category_label=gettext('Docker Model Runner'), + help_str=gettext( + 'URL for the Docker Model Runner API endpoint ' + '(e.g., http://localhost:12434). Available in Docker Desktop ' + '4.40 and later.' + ) + ) + + # Fallback Docker models (used if API fetch fails) + docker_model_options = [] + + self.docker_api_model = self.preference.register( + 'docker', 'docker_api_model', + gettext("Model"), 'options', + docker_model_default, + category_label=gettext('Docker Model Runner'), + options=docker_model_options, + help_str=gettext( + 'The Docker model to use. Models are loaded dynamically ' + 'from your Docker Model Runner. You can also type a custom ' + 'model name.' + ), + control_props={ + 'allowClear': True, + 'creatable': True, + 'tags': True, + 'placeholder': gettext('Select or type a model name...'), + 'optionsUrl': 'llm.models_docker', + 'optionsRefreshUrl': 'llm.refresh_models_docker', + 'refreshDepNames': { + 'api_url': 'docker_api_url' + } + } + ) + + def get_exposed_url_endpoints(self): + """ + Returns the list of URLs exposed to the client. + """ + return [ + 'llm.models_anthropic', + 'llm.models_openai', + 'llm.models_ollama', + 'llm.models_docker', + 'llm.refresh_models_anthropic', + 'llm.refresh_models_openai', + 'llm.refresh_models_ollama', + 'llm.refresh_models_docker', + 'llm.status', + ] + + +# Initialise the module +blueprint = LLMModule(MODULE_NAME, __name__) + + +@blueprint.route("/status", methods=["GET"], endpoint='status') +@pga_login_required +def get_llm_status(): + """ + Get the LLM configuration status. + Returns whether LLM is enabled at system and user level, + and the configured provider and model. + """ + from pgadmin.llm.utils import ( + is_llm_enabled, is_llm_enabled_system, get_default_provider, + get_anthropic_model, get_openai_model, get_ollama_model, + get_docker_model + ) + + provider = get_default_provider() + model = None + if provider == 'anthropic': + model = get_anthropic_model() + elif provider == 'openai': + model = get_openai_model() + elif provider == 'ollama': + model = get_ollama_model() + elif provider == 'docker': + model = get_docker_model() + + return make_json_response( + success=1, + data={ + 'enabled': is_llm_enabled(), + 'system_enabled': is_llm_enabled_system(), + 'provider': provider, + 'model': model + } + ) + + +@blueprint.route("/models/anthropic", methods=["GET"], endpoint='models_anthropic') +@pga_login_required +def get_anthropic_models(): + """ + Fetch available Anthropic models. + Returns models that support tool use. + """ + from pgadmin.llm.utils import get_anthropic_api_key + + api_key = get_anthropic_api_key() + if not api_key: + return make_json_response( + data={'models': [], 'error': 'No API key configured'}, + status=200 + ) + + try: + models = _fetch_anthropic_models(api_key) + return make_json_response(data={'models': models}, status=200) + except Exception as e: + return make_json_response( + data={'models': [], 'error': str(e)}, + status=200 + ) + + +@blueprint.route( + "/models/anthropic/refresh", + methods=["POST"], + endpoint='refresh_models_anthropic' +) +@pga_login_required +def refresh_anthropic_models(): + """ + Fetch available Anthropic models using a provided API key file path. + Used by the preferences refresh button to load models before saving. + """ + from pgadmin.llm.utils import read_api_key_file + + data = request.get_json(force=True, silent=True) or {} + api_key_file = data.get('api_key_file', '') + + if not api_key_file: + return make_json_response( + data={'models': [], 'error': 'No API key file provided'}, + status=200 + ) + + api_key = read_api_key_file(api_key_file) + if not api_key: + return make_json_response( + data={'models': [], 'error': 'Could not read API key from file'}, + status=200 + ) + + try: + models = _fetch_anthropic_models(api_key) + return make_json_response(data={'models': models}, status=200) + except Exception as e: + return make_json_response( + data={'models': [], 'error': str(e)}, + status=200 + ) + + +@blueprint.route("/models/openai", methods=["GET"], endpoint='models_openai') +@pga_login_required +def get_openai_models(): + """ + Fetch available OpenAI models. + Returns models that support function calling. + """ + from pgadmin.llm.utils import get_openai_api_key + + api_key = get_openai_api_key() + if not api_key: + return make_json_response( + data={'models': [], 'error': 'No API key configured'}, + status=200 + ) + + try: + models = _fetch_openai_models(api_key) + return make_json_response(data={'models': models}, status=200) + except Exception as e: + return make_json_response( + data={'models': [], 'error': str(e)}, + status=200 + ) + + +@blueprint.route( + "/models/openai/refresh", + methods=["POST"], + endpoint='refresh_models_openai' +) +@pga_login_required +def refresh_openai_models(): + """ + Fetch available OpenAI models using a provided API key file path. + Used by the preferences refresh button to load models before saving. + """ + from pgadmin.llm.utils import read_api_key_file + + data = request.get_json(force=True, silent=True) or {} + api_key_file = data.get('api_key_file', '') + + if not api_key_file: + return make_json_response( + data={'models': [], 'error': 'No API key file provided'}, + status=200 + ) + + api_key = read_api_key_file(api_key_file) + if not api_key: + return make_json_response( + data={'models': [], 'error': 'Could not read API key from file'}, + status=200 + ) + + try: + models = _fetch_openai_models(api_key) + return make_json_response(data={'models': models}, status=200) + except Exception as e: + return make_json_response( + data={'models': [], 'error': str(e)}, + status=200 + ) + + +@blueprint.route("/models/ollama", methods=["GET"], endpoint='models_ollama') +@pga_login_required +def get_ollama_models(): + """ + Fetch available Ollama models. + """ + from pgadmin.llm.utils import get_ollama_api_url + + api_url = get_ollama_api_url() + if not api_url: + return make_json_response( + data={'models': [], 'error': 'No API URL configured'}, + status=200 + ) + + try: + models = _fetch_ollama_models(api_url) + return make_json_response(data={'models': models}, status=200) + except Exception as e: + return make_json_response( + data={'models': [], 'error': str(e)}, + status=200 + ) + + +@blueprint.route( + "/models/ollama/refresh", + methods=["POST"], + endpoint='refresh_models_ollama' +) +@pga_login_required +def refresh_ollama_models(): + """ + Fetch available Ollama models using a provided API URL. + Used by the preferences refresh button to load models before saving. + """ + data = request.get_json(force=True, silent=True) or {} + api_url = data.get('api_url', '') + + if not api_url: + return make_json_response( + data={'models': [], 'error': 'No API URL provided'}, + status=200 + ) + + try: + models = _fetch_ollama_models(api_url) + return make_json_response(data={'models': models}, status=200) + except Exception as e: + return make_json_response( + data={'models': [], 'error': str(e)}, + status=200 + ) + + +@blueprint.route("/models/docker", methods=["GET"], endpoint='models_docker') +@pga_login_required +def get_docker_models(): + """ + Fetch available Docker Model Runner models. + """ + from pgadmin.llm.utils import get_docker_api_url + + api_url = get_docker_api_url() + if not api_url: + return make_json_response( + data={'models': [], 'error': 'No API URL configured'}, + status=200 + ) + + try: + models = _fetch_docker_models(api_url) + return make_json_response(data={'models': models}, status=200) + except Exception as e: + return make_json_response( + data={'models': [], 'error': str(e)}, + status=200 + ) + + +@blueprint.route( + "/models/docker/refresh", + methods=["POST"], + endpoint='refresh_models_docker' +) +@pga_login_required +def refresh_docker_models(): + """ + Fetch available Docker models using a provided API URL. + Used by the preferences refresh button to load models before saving. + """ + data = request.get_json(force=True, silent=True) or {} + api_url = data.get('api_url', '') + + if not api_url: + return make_json_response( + data={'models': [], 'error': 'No API URL provided'}, + status=200 + ) + + try: + models = _fetch_docker_models(api_url) + return make_json_response(data={'models': models}, status=200) + except Exception as e: + return make_json_response( + data={'models': [], 'error': str(e)}, + status=200 + ) + + +def _fetch_anthropic_models(api_key): + """ + Fetch models from Anthropic API. + Returns a list of model options with label and value. + """ + import urllib.request + import urllib.error + + req = urllib.request.Request( + 'https://api.anthropic.com/v1/models', + headers={ + 'x-api-key': api_key, + 'anthropic-version': '2023-06-01' + } + ) + + try: + with urllib.request.urlopen( + req, timeout=30, context=SSL_CONTEXT + ) as response: + data = json.loads(response.read().decode('utf-8')) + except urllib.error.HTTPError as e: + if e.code == 401: + raise Exception('Invalid API key') + raise Exception(f'API error: {e.code}') + + models = [] + seen = set() + + for model in data.get('data', []): + model_id = model.get('id', '') + display_name = model.get('display_name', model_id) + + # Skip if already seen or empty + if not model_id or model_id in seen: + continue + seen.add(model_id) + + # Create a user-friendly label + if display_name and display_name != model_id: + label = f"{display_name} ({model_id})" + else: + label = model_id + + models.append({ + 'label': label, + 'value': model_id + }) + + # Sort alphabetically by model ID + models.sort(key=lambda x: x['value']) + + return models + + +def _fetch_openai_models(api_key): + """ + Fetch models from OpenAI API. + Returns a list of model options with label and value. + """ + import urllib.request + import urllib.error + + req = urllib.request.Request( + 'https://api.openai.com/v1/models', + headers={ + 'Authorization': f'Bearer {api_key}', + 'Content-Type': 'application/json' + } + ) + + try: + with urllib.request.urlopen( + req, timeout=30, context=SSL_CONTEXT + ) as response: + data = json.loads(response.read().decode('utf-8')) + except urllib.error.HTTPError as e: + if e.code == 401: + raise Exception('Invalid API key') + raise Exception(f'API error: {e.code}') + + models = [] + seen = set() + + for model in data.get('data', []): + model_id = model.get('id', '') + + # Skip if already seen or empty + if not model_id or model_id in seen: + continue + seen.add(model_id) + + models.append({ + 'label': model_id, + 'value': model_id + }) + + # Sort alphabetically + models.sort(key=lambda x: x['value']) + + return models + + +def _fetch_ollama_models(api_url): + """ + Fetch models from Ollama API. + Returns a list of model options with label and value. + """ + import urllib.request + import urllib.error + + # Normalize URL + api_url = api_url.rstrip('/') + url = f'{api_url}/api/tags' + + req = urllib.request.Request(url) + + try: + with urllib.request.urlopen( + req, timeout=30, context=SSL_CONTEXT + ) as response: + data = json.loads(response.read().decode('utf-8')) + except urllib.error.URLError as e: + raise Exception(f'Cannot connect to Ollama: {e.reason}') + except Exception as e: + raise Exception(f'Error fetching models: {str(e)}') + + models = [] + for model in data.get('models', []): + name = model.get('name', '') + if name: + # Format size if available + size = model.get('size', 0) + if size: + size_gb = size / (1024 ** 3) + label = f"{name} ({size_gb:.1f} GB)" + else: + label = name + + models.append({ + 'label': label, + 'value': name + }) + + # Sort alphabetically + models.sort(key=lambda x: x['value']) + + return models + + +def _fetch_docker_models(api_url): + """ + Fetch models from Docker Model Runner API. + Returns a list of model options with label and value. + + Docker Model Runner uses an OpenAI-compatible API at /engines/v1/models + """ + import urllib.request + import urllib.error + + # Normalize URL + api_url = api_url.rstrip('/') + url = f'{api_url}/engines/v1/models' + + req = urllib.request.Request(url) + + try: + with urllib.request.urlopen( + req, timeout=30, context=SSL_CONTEXT + ) as response: + data = json.loads(response.read().decode('utf-8')) + except urllib.error.URLError as e: + raise Exception( + f'Cannot connect to Docker Model Runner: {e.reason}. ' + f'Is Docker Desktop running with model runner enabled?' + ) + except Exception as e: + raise Exception(f'Error fetching models: {str(e)}') + + models = [] + seen = set() + + for model in data.get('data', []): + model_id = model.get('id', '') + + # Skip if already seen or empty + if not model_id or model_id in seen: + continue + seen.add(model_id) + + models.append({ + 'label': model_id, + 'value': model_id + }) + + # Sort alphabetically + models.sort(key=lambda x: x['value']) + + return models + + diff --git a/web/pgadmin/llm/client.py b/web/pgadmin/llm/client.py new file mode 100644 index 00000000000..a901cc4f5a2 --- /dev/null +++ b/web/pgadmin/llm/client.py @@ -0,0 +1,204 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Base LLM client interface and factory.""" + +from abc import ABC, abstractmethod +from typing import Optional + +from pgadmin.llm.models import ( + Message, Tool, LLMResponse, LLMError +) + + +class LLMClient(ABC): + """ + Abstract base class for LLM clients. + + All LLM provider implementations should inherit from this class + and implement the required methods. + """ + + @property + @abstractmethod + def provider_name(self) -> str: + """Return the name of the LLM provider.""" + pass + + @property + @abstractmethod + def model_name(self) -> str: + """Return the name of the model being used.""" + pass + + @abstractmethod + def is_available(self) -> bool: + """ + Check if the LLM client is properly configured and available. + + Returns: + True if the client can be used, False otherwise. + """ + pass + + @abstractmethod + def chat( + self, + messages: list[Message], + tools: Optional[list[Tool]] = None, + system_prompt: Optional[str] = None, + max_tokens: int = 4096, + temperature: float = 0.0, + **kwargs + ) -> LLMResponse: + """ + Send a chat request to the LLM. + + Args: + messages: List of conversation messages. + tools: Optional list of tools the LLM can use. + system_prompt: Optional system prompt to set context. + max_tokens: Maximum tokens in the response. + temperature: Sampling temperature (0.0 = deterministic). + **kwargs: Additional provider-specific parameters. + + Returns: + LLMResponse containing the model's response. + + Raises: + LLMError: If the request fails. + """ + pass + + def validate_connection(self) -> tuple[bool, Optional[str]]: + """ + Validate the connection to the LLM provider. + + Returns: + Tuple of (success, error_message). + If success is True, error_message is None. + """ + try: + # Try a minimal request to validate the connection + response = self.chat( + messages=[Message.user("Hello")], + max_tokens=10 + ) + return True, None + except LLMError as e: + return False, str(e) + except Exception as e: + return False, f"Connection failed: {str(e)}" + + +class LLMClientError(Exception): + """Exception raised for LLM client errors.""" + + def __init__(self, error: LLMError): + self.error = error + super().__init__(str(error)) + + +def get_llm_client( + provider: Optional[str] = None, + model: Optional[str] = None +) -> Optional[LLMClient]: + """ + Get an LLM client instance for the specified or default provider. + + Args: + provider: Optional provider name ('anthropic', 'openai', 'ollama', + 'docker'). If not specified, uses the configured default + provider. + model: Optional model name to use. If not specified, uses the + configured default model for the provider. + + Returns: + An LLMClient instance, or None if no provider is configured. + + Raises: + ValueError: If an invalid provider is specified. + LLMClientError: If the client cannot be initialized. + """ + from pgadmin.llm.utils import ( + get_default_provider, + get_anthropic_api_key, get_anthropic_model, + get_openai_api_key, get_openai_model, + get_ollama_api_url, get_ollama_model, + get_docker_api_url, get_docker_model + ) + + # Determine which provider to use + if provider is None: + provider = get_default_provider() + if provider is None: + return None + + provider = provider.lower() + + if provider == 'anthropic': + from pgadmin.llm.providers.anthropic import AnthropicClient + api_key = get_anthropic_api_key() + if not api_key: + raise LLMClientError(LLMError( + message="Anthropic API key not configured", + provider="anthropic" + )) + model_name = model or get_anthropic_model() + return AnthropicClient(api_key=api_key, model=model_name) + + elif provider == 'openai': + from pgadmin.llm.providers.openai import OpenAIClient + api_key = get_openai_api_key() + if not api_key: + raise LLMClientError(LLMError( + message="OpenAI API key not configured", + provider="openai" + )) + model_name = model or get_openai_model() + return OpenAIClient(api_key=api_key, model=model_name) + + elif provider == 'ollama': + from pgadmin.llm.providers.ollama import OllamaClient + api_url = get_ollama_api_url() + if not api_url: + raise LLMClientError(LLMError( + message="Ollama API URL not configured", + provider="ollama" + )) + model_name = model or get_ollama_model() + return OllamaClient(api_url=api_url, model=model_name) + + elif provider == 'docker': + from pgadmin.llm.providers.docker import DockerClient + api_url = get_docker_api_url() + if not api_url: + raise LLMClientError(LLMError( + message="Docker Model Runner API URL not configured", + provider="docker" + )) + model_name = model or get_docker_model() + return DockerClient(api_url=api_url, model=model_name) + + else: + raise ValueError(f"Unknown LLM provider: {provider}") + + +def is_llm_available() -> bool: + """ + Check if an LLM client is available and properly configured. + + Returns: + True if an LLM client can be created, False otherwise. + """ + try: + client = get_llm_client() + return client is not None and client.is_available() + except (LLMClientError, ValueError): + return False diff --git a/web/pgadmin/llm/models.py b/web/pgadmin/llm/models.py new file mode 100644 index 00000000000..95a365cae84 --- /dev/null +++ b/web/pgadmin/llm/models.py @@ -0,0 +1,201 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Data models for LLM interactions.""" + +from dataclasses import dataclass, field +from typing import Any, Optional +from enum import Enum + + +class Role(str, Enum): + """Message roles in a conversation.""" + SYSTEM = 'system' + USER = 'user' + ASSISTANT = 'assistant' + TOOL = 'tool' + + +class StopReason(str, Enum): + """Reasons why the LLM stopped generating.""" + END_TURN = 'end_turn' + TOOL_USE = 'tool_use' + MAX_TOKENS = 'max_tokens' + STOP_SEQUENCE = 'stop_sequence' + ERROR = 'error' + UNKNOWN = 'unknown' + + +@dataclass +class ToolCall: + """Represents a tool call requested by the LLM.""" + id: str + name: str + arguments: dict[str, Any] + + def to_dict(self) -> dict: + """Convert to dictionary representation.""" + return { + 'id': self.id, + 'name': self.name, + 'arguments': self.arguments + } + + +@dataclass +class ToolResult: + """Represents the result of a tool execution.""" + tool_call_id: str + content: str + is_error: bool = False + + def to_dict(self) -> dict: + """Convert to dictionary representation.""" + return { + 'tool_call_id': self.tool_call_id, + 'content': self.content, + 'is_error': self.is_error + } + + +@dataclass +class Message: + """Represents a message in a conversation.""" + role: Role + content: str + tool_calls: list[ToolCall] = field(default_factory=list) + tool_results: list[ToolResult] = field(default_factory=list) + name: Optional[str] = None + + def to_dict(self) -> dict: + """Convert to dictionary representation.""" + result = { + 'role': self.role.value, + 'content': self.content + } + if self.tool_calls: + result['tool_calls'] = [tc.to_dict() for tc in self.tool_calls] + if self.tool_results: + result['tool_results'] = [tr.to_dict() for tr in self.tool_results] + if self.name: + result['name'] = self.name + return result + + @classmethod + def system(cls, content: str) -> 'Message': + """Create a system message.""" + return cls(role=Role.SYSTEM, content=content) + + @classmethod + def user(cls, content: str) -> 'Message': + """Create a user message.""" + return cls(role=Role.USER, content=content) + + @classmethod + def assistant(cls, content: str, + tool_calls: list[ToolCall] = None) -> 'Message': + """Create an assistant message.""" + return cls( + role=Role.ASSISTANT, + content=content, + tool_calls=tool_calls or [] + ) + + @classmethod + def tool_result(cls, tool_call_id: str, content: str, + is_error: bool = False) -> 'Message': + """Create a tool result message.""" + return cls( + role=Role.TOOL, + content='', + tool_results=[ToolResult( + tool_call_id=tool_call_id, + content=content, + is_error=is_error + )] + ) + + +@dataclass +class Tool: + """Represents a tool that can be called by the LLM.""" + name: str + description: str + parameters: dict[str, Any] + + def to_dict(self) -> dict: + """Convert to dictionary representation.""" + return { + 'name': self.name, + 'description': self.description, + 'parameters': self.parameters + } + + +@dataclass +class Usage: + """Token usage information.""" + input_tokens: int = 0 + output_tokens: int = 0 + total_tokens: int = 0 + + def to_dict(self) -> dict: + """Convert to dictionary representation.""" + return { + 'input_tokens': self.input_tokens, + 'output_tokens': self.output_tokens, + 'total_tokens': self.total_tokens + } + + +@dataclass +class LLMResponse: + """Represents a response from an LLM.""" + content: str + tool_calls: list[ToolCall] = field(default_factory=list) + stop_reason: StopReason = StopReason.END_TURN + model: str = '' + usage: Usage = field(default_factory=Usage) + raw_response: Optional[Any] = None + + @property + def has_tool_calls(self) -> bool: + """Check if the response contains tool calls.""" + return len(self.tool_calls) > 0 + + def to_message(self) -> Message: + """Convert response to an assistant message.""" + return Message.assistant( + content=self.content, + tool_calls=self.tool_calls + ) + + def to_dict(self) -> dict: + """Convert to dictionary representation.""" + return { + 'content': self.content, + 'tool_calls': [tc.to_dict() for tc in self.tool_calls], + 'stop_reason': self.stop_reason.value, + 'model': self.model, + 'usage': self.usage.to_dict() + } + + +@dataclass +class LLMError: + """Represents an error from an LLM operation.""" + message: str + code: Optional[str] = None + provider: Optional[str] = None + retryable: bool = False + + def __str__(self) -> str: + if self.code: + return f"[{self.code}] {self.message}" + return self.message diff --git a/web/pgadmin/llm/providers/__init__.py b/web/pgadmin/llm/providers/__init__.py new file mode 100644 index 00000000000..31631eb7965 --- /dev/null +++ b/web/pgadmin/llm/providers/__init__.py @@ -0,0 +1,16 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""LLM provider implementations.""" + +from pgadmin.llm.providers.anthropic import AnthropicClient +from pgadmin.llm.providers.openai import OpenAIClient +from pgadmin.llm.providers.ollama import OllamaClient + +__all__ = ['AnthropicClient', 'OpenAIClient', 'OllamaClient'] diff --git a/web/pgadmin/llm/providers/anthropic.py b/web/pgadmin/llm/providers/anthropic.py new file mode 100644 index 00000000000..e80c67786e5 --- /dev/null +++ b/web/pgadmin/llm/providers/anthropic.py @@ -0,0 +1,273 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Anthropic Claude LLM client implementation.""" + +import json +import ssl +import urllib.request +import urllib.error +from typing import Optional +import uuid + +# Try to use certifi for proper SSL certificate handling +try: + import certifi + SSL_CONTEXT = ssl.create_default_context(cafile=certifi.where()) +except ImportError: + SSL_CONTEXT = ssl.create_default_context() + +from pgadmin.llm.client import LLMClient, LLMClientError +from pgadmin.llm.models import ( + Message, Tool, ToolCall, LLMResponse, LLMError, + Role, StopReason, Usage +) + + +# Default model if none specified +DEFAULT_MODEL = 'claude-sonnet-4-20250514' + +# API configuration +API_URL = 'https://api.anthropic.com/v1/messages' +API_VERSION = '2023-06-01' + + +class AnthropicClient(LLMClient): + """ + Anthropic Claude API client. + + Implements the LLMClient interface for Anthropic's Claude models. + """ + + def __init__(self, api_key: str, model: Optional[str] = None): + """ + Initialize the Anthropic client. + + Args: + api_key: The Anthropic API key. + model: Optional model name. Defaults to claude-sonnet-4-20250514. + """ + self._api_key = api_key + self._model = model or DEFAULT_MODEL + + @property + def provider_name(self) -> str: + return 'anthropic' + + @property + def model_name(self) -> str: + return self._model + + def is_available(self) -> bool: + """Check if the client is properly configured.""" + return bool(self._api_key) + + def chat( + self, + messages: list[Message], + tools: Optional[list[Tool]] = None, + system_prompt: Optional[str] = None, + max_tokens: int = 4096, + temperature: float = 0.0, + **kwargs + ) -> LLMResponse: + """ + Send a chat request to Claude. + + Args: + messages: List of conversation messages. + tools: Optional list of tools Claude can use. + system_prompt: Optional system prompt. + max_tokens: Maximum tokens in response. + temperature: Sampling temperature. + **kwargs: Additional parameters. + + Returns: + LLMResponse containing Claude's response. + + Raises: + LLMClientError: If the request fails. + """ + # Build the request payload + payload = { + 'model': self._model, + 'max_tokens': max_tokens, + 'messages': self._convert_messages(messages) + } + + if system_prompt: + payload['system'] = system_prompt + + if temperature > 0: + payload['temperature'] = temperature + + if tools: + payload['tools'] = self._convert_tools(tools) + + # Make the API request + try: + response_data = self._make_request(payload) + return self._parse_response(response_data) + except LLMClientError: + raise + except Exception as e: + raise LLMClientError(LLMError( + message=f"Request failed: {str(e)}", + provider=self.provider_name + )) + + def _convert_messages(self, messages: list[Message]) -> list[dict]: + """Convert Message objects to Anthropic API format.""" + result = [] + + for msg in messages: + if msg.role == Role.SYSTEM: + # System messages are handled separately in Anthropic API + continue + + if msg.role == Role.USER: + result.append({ + 'role': 'user', + 'content': msg.content + }) + + elif msg.role == Role.ASSISTANT: + content = [] + if msg.content: + content.append({'type': 'text', 'text': msg.content}) + + # Add tool use blocks + for tc in msg.tool_calls: + content.append({ + 'type': 'tool_use', + 'id': tc.id, + 'name': tc.name, + 'input': tc.arguments + }) + + result.append({ + 'role': 'assistant', + 'content': content if content else msg.content + }) + + elif msg.role == Role.TOOL: + # Tool results in Anthropic are sent as user messages + content = [] + for tr in msg.tool_results: + content.append({ + 'type': 'tool_result', + 'tool_use_id': tr.tool_call_id, + 'content': tr.content, + 'is_error': tr.is_error + }) + result.append({ + 'role': 'user', + 'content': content + }) + + return result + + def _convert_tools(self, tools: list[Tool]) -> list[dict]: + """Convert Tool objects to Anthropic API format.""" + return [ + { + 'name': tool.name, + 'description': tool.description, + 'input_schema': tool.parameters + } + for tool in tools + ] + + def _make_request(self, payload: dict) -> dict: + """Make an HTTP request to the Anthropic API.""" + headers = { + 'Content-Type': 'application/json', + 'x-api-key': self._api_key, + 'anthropic-version': API_VERSION + } + + request = urllib.request.Request( + API_URL, + data=json.dumps(payload).encode('utf-8'), + headers=headers, + method='POST' + ) + + try: + with urllib.request.urlopen( + request, timeout=120, context=SSL_CONTEXT + ) as response: + return json.loads(response.read().decode('utf-8')) + except urllib.error.HTTPError as e: + error_body = e.read().decode('utf-8') + try: + error_data = json.loads(error_body) + error_msg = error_data.get('error', {}).get('message', str(e)) + except json.JSONDecodeError: + error_msg = error_body or str(e) + + raise LLMClientError(LLMError( + message=error_msg, + code=str(e.code), + provider=self.provider_name, + retryable=e.code in (429, 500, 502, 503, 504) + )) + except urllib.error.URLError as e: + raise LLMClientError(LLMError( + message=f"Connection error: {e.reason}", + provider=self.provider_name, + retryable=True + )) + + def _parse_response(self, data: dict) -> LLMResponse: + """Parse the Anthropic API response into an LLMResponse.""" + content_parts = [] + tool_calls = [] + + for block in data.get('content', []): + if block.get('type') == 'text': + content_parts.append(block.get('text', '')) + elif block.get('type') == 'tool_use': + tool_calls.append(ToolCall( + id=block.get('id', str(uuid.uuid4())), + name=block.get('name', ''), + arguments=block.get('input', {}) + )) + + # Map Anthropic stop reasons to our enum + stop_reason_map = { + 'end_turn': StopReason.END_TURN, + 'tool_use': StopReason.TOOL_USE, + 'max_tokens': StopReason.MAX_TOKENS, + 'stop_sequence': StopReason.STOP_SEQUENCE + } + stop_reason = stop_reason_map.get( + data.get('stop_reason', ''), + StopReason.UNKNOWN + ) + + # Parse usage information + usage_data = data.get('usage', {}) + usage = Usage( + input_tokens=usage_data.get('input_tokens', 0), + output_tokens=usage_data.get('output_tokens', 0), + total_tokens=( + usage_data.get('input_tokens', 0) + + usage_data.get('output_tokens', 0) + ) + ) + + return LLMResponse( + content='\n'.join(content_parts), + tool_calls=tool_calls, + stop_reason=stop_reason, + model=data.get('model', self._model), + usage=usage, + raw_response=data + ) diff --git a/web/pgadmin/llm/providers/docker.py b/web/pgadmin/llm/providers/docker.py new file mode 100644 index 00000000000..3f99406deb6 --- /dev/null +++ b/web/pgadmin/llm/providers/docker.py @@ -0,0 +1,345 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Docker Model Runner LLM client implementation. + +Docker Desktop 4.40+ includes a built-in model runner that provides an +OpenAI-compatible API at http://localhost:12434. No API key is required. +""" + +import json +import socket +import ssl +import urllib.request +import urllib.error +from typing import Optional +import uuid + +# Try to use certifi for proper SSL certificate handling +try: + import certifi + SSL_CONTEXT = ssl.create_default_context(cafile=certifi.where()) +except ImportError: + SSL_CONTEXT = ssl.create_default_context() + +from pgadmin.llm.client import LLMClient, LLMClientError +from pgadmin.llm.models import ( + Message, Tool, ToolCall, LLMResponse, LLMError, + Role, StopReason, Usage +) + + +# Default configuration +DEFAULT_API_URL = 'http://localhost:12434' +DEFAULT_MODEL = 'ai/qwen3-coder' + + +class DockerClient(LLMClient): + """ + Docker Model Runner API client. + + Implements the LLMClient interface for Docker's built-in model runner, + which provides an OpenAI-compatible API. + """ + + def __init__(self, api_url: Optional[str] = None, model: Optional[str] = None): + """ + Initialize the Docker Model Runner client. + + Args: + api_url: The Docker Model Runner API URL (default: http://localhost:12434). + model: Optional model name. Defaults to ai/qwen3-coder. + """ + self._api_url = (api_url or DEFAULT_API_URL).rstrip('/') + self._model = model or DEFAULT_MODEL + + @property + def provider_name(self) -> str: + return 'docker' + + @property + def model_name(self) -> str: + return self._model + + def is_available(self) -> bool: + """Check if the client is properly configured.""" + return bool(self._api_url) + + def chat( + self, + messages: list[Message], + tools: Optional[list[Tool]] = None, + system_prompt: Optional[str] = None, + max_tokens: int = 4096, + temperature: float = 0.0, + **kwargs + ) -> LLMResponse: + """ + Send a chat request to Docker Model Runner. + + Args: + messages: List of conversation messages. + tools: Optional list of tools the model can use. + system_prompt: Optional system prompt. + max_tokens: Maximum tokens in response. + temperature: Sampling temperature. + **kwargs: Additional parameters. + + Returns: + LLMResponse containing the model's response. + + Raises: + LLMClientError: If the request fails. + """ + # Build the request payload + converted_messages = self._convert_messages(messages) + + # Add system prompt at the beginning if provided + if system_prompt: + converted_messages.insert(0, { + 'role': 'system', + 'content': system_prompt + }) + + payload = { + 'model': self._model, + 'messages': converted_messages, + 'max_completion_tokens': max_tokens, + 'temperature': temperature + } + + if tools: + payload['tools'] = self._convert_tools(tools) + payload['tool_choice'] = 'auto' + + # Make the API request + try: + response_data = self._make_request(payload) + return self._parse_response(response_data) + except LLMClientError: + raise + except Exception as e: + raise LLMClientError(LLMError( + message=f"Request failed: {str(e)}", + provider=self.provider_name + )) + + def _convert_messages(self, messages: list[Message]) -> list[dict]: + """Convert Message objects to OpenAI API format.""" + result = [] + + for msg in messages: + if msg.role == Role.SYSTEM: + result.append({ + 'role': 'system', + 'content': msg.content + }) + + elif msg.role == Role.USER: + result.append({ + 'role': 'user', + 'content': msg.content + }) + + elif msg.role == Role.ASSISTANT: + message = { + 'role': 'assistant', + 'content': msg.content or None + } + + # Add tool calls if present + if msg.tool_calls: + message['tool_calls'] = [ + { + 'id': tc.id, + 'type': 'function', + 'function': { + 'name': tc.name, + 'arguments': json.dumps(tc.arguments) + } + } + for tc in msg.tool_calls + ] + + result.append(message) + + elif msg.role == Role.TOOL: + # Each tool result is a separate message in OpenAI format + for tr in msg.tool_results: + result.append({ + 'role': 'tool', + 'tool_call_id': tr.tool_call_id, + 'content': tr.content + }) + + return result + + def _convert_tools(self, tools: list[Tool]) -> list[dict]: + """Convert Tool objects to OpenAI API format.""" + return [ + { + 'type': 'function', + 'function': { + 'name': tool.name, + 'description': tool.description, + 'parameters': tool.parameters + } + } + for tool in tools + ] + + def _make_request(self, payload: dict) -> dict: + """Make an HTTP request to the Docker Model Runner API.""" + headers = { + 'Content-Type': 'application/json' + } + + # Docker Model Runner uses /engines/v1 path for OpenAI-compatible API + url = f'{self._api_url}/engines/v1/chat/completions' + + request = urllib.request.Request( + url, + data=json.dumps(payload).encode('utf-8'), + headers=headers, + method='POST' + ) + + try: + # Use longer timeout for local models which can be slower + with urllib.request.urlopen( + request, timeout=300, context=SSL_CONTEXT + ) as response: + return json.loads(response.read().decode('utf-8')) + except urllib.error.HTTPError as e: + error_body = e.read().decode('utf-8') + try: + error_data = json.loads(error_body) + error_msg = error_data.get('error', {}).get('message', str(e)) + except json.JSONDecodeError: + error_msg = error_body or str(e) + + raise LLMClientError(LLMError( + message=error_msg, + code=str(e.code), + provider=self.provider_name, + retryable=e.code in (429, 500, 502, 503, 504) + )) + except urllib.error.URLError as e: + raise LLMClientError(LLMError( + message=f"Connection error: {e.reason}. " + f"Is Docker Model Runner running at {self._api_url}?", + provider=self.provider_name, + retryable=True + )) + except socket.timeout: + raise LLMClientError(LLMError( + message="Request timed out. Local models can be slow - " + "try a smaller model or wait for the response.", + code='timeout', + provider=self.provider_name, + retryable=True + )) + + def _parse_response(self, data: dict) -> LLMResponse: + """Parse the API response into an LLMResponse.""" + # Check for API-level errors in the response + if 'error' in data: + error_info = data['error'] + raise LLMClientError(LLMError( + message=error_info.get('message', 'Unknown API error'), + code=error_info.get('code', 'unknown'), + provider=self.provider_name, + retryable=False + )) + + choices = data.get('choices', []) + if not choices: + raise LLMClientError(LLMError( + message='No response choices returned from API', + provider=self.provider_name, + retryable=False + )) + + choice = choices[0] + message = choice.get('message', {}) + + # Check for refusal (content moderation) + if message.get('refusal'): + raise LLMClientError(LLMError( + message=f"Request refused: {message.get('refusal')}", + provider=self.provider_name, + retryable=False + )) + + content = message.get('content', '') or '' + tool_calls = [] + + # Parse tool calls if present + for tc in message.get('tool_calls', []): + if tc.get('type') == 'function': + func = tc.get('function', {}) + try: + arguments = json.loads(func.get('arguments', '{}')) + except json.JSONDecodeError: + arguments = {} + + tool_calls.append(ToolCall( + id=tc.get('id', str(uuid.uuid4())), + name=func.get('name', ''), + arguments=arguments + )) + + # Map finish reasons to our enum + finish_reason = choice.get('finish_reason', '') + stop_reason_map = { + 'stop': StopReason.END_TURN, + 'tool_calls': StopReason.TOOL_USE, + 'length': StopReason.MAX_TOKENS, + 'content_filter': StopReason.STOP_SEQUENCE + } + stop_reason = stop_reason_map.get(finish_reason, StopReason.UNKNOWN) + + # Parse usage information + usage_data = data.get('usage', {}) + usage = Usage( + input_tokens=usage_data.get('prompt_tokens', 0), + output_tokens=usage_data.get('completion_tokens', 0), + total_tokens=usage_data.get('total_tokens', 0) + ) + + # Check for problematic responses + if not content and not tool_calls: + if stop_reason == StopReason.MAX_TOKENS: + input_tokens = usage.input_tokens + raise LLMClientError(LLMError( + message=f'Response truncated due to token limit ' + f'(input: {input_tokens} tokens). ' + f'The request is too large for model {self._model}. ' + f'Try using a model with a larger context window, ' + f'or analyze a smaller scope.', + code='max_tokens', + provider=self.provider_name, + retryable=False + )) + elif finish_reason and finish_reason not in ('stop', 'tool_calls'): + raise LLMClientError(LLMError( + message=f'Empty response with finish reason: {finish_reason}', + code=finish_reason, + provider=self.provider_name, + retryable=False + )) + + return LLMResponse( + content=content, + tool_calls=tool_calls, + stop_reason=stop_reason, + model=data.get('model', self._model), + usage=usage, + raw_response=data + ) diff --git a/web/pgadmin/llm/providers/ollama.py b/web/pgadmin/llm/providers/ollama.py new file mode 100644 index 00000000000..8b92a714c37 --- /dev/null +++ b/web/pgadmin/llm/providers/ollama.py @@ -0,0 +1,289 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Ollama LLM client implementation.""" + +import json +import re +import urllib.request +import urllib.error +from typing import Optional +import uuid + +from pgadmin.llm.client import LLMClient, LLMClientError +from pgadmin.llm.models import ( + Message, Tool, ToolCall, LLMResponse, LLMError, + Role, StopReason, Usage +) + + +# Default model if none specified +DEFAULT_MODEL = 'llama3.2' + + +class OllamaClient(LLMClient): + """ + Ollama API client. + + Implements the LLMClient interface for locally-hosted Ollama models. + Uses the Ollama chat API with tool support. + """ + + def __init__(self, api_url: str, model: Optional[str] = None): + """ + Initialize the Ollama client. + + Args: + api_url: The Ollama API base URL (e.g., http://localhost:11434). + model: Optional model name. Defaults to llama3.2. + """ + self._api_url = api_url.rstrip('/') + self._model = model or DEFAULT_MODEL + + @property + def provider_name(self) -> str: + return 'ollama' + + @property + def model_name(self) -> str: + return self._model + + def is_available(self) -> bool: + """Check if Ollama is running and the model is available.""" + if not self._api_url: + return False + + try: + # Check if Ollama is running + req = urllib.request.Request(f'{self._api_url}/api/tags') + with urllib.request.urlopen(req, timeout=5) as response: + data = json.loads(response.read().decode('utf-8')) + # Check if our model is available + models = [m.get('name', '') for m in data.get('models', [])] + # Model names might include tags like ':latest' + return any( + self._model == m or self._model == m.split(':')[0] + for m in models + ) + except Exception: + return False + + def chat( + self, + messages: list[Message], + tools: Optional[list[Tool]] = None, + system_prompt: Optional[str] = None, + max_tokens: int = 4096, + temperature: float = 0.0, + **kwargs + ) -> LLMResponse: + """ + Send a chat request to Ollama. + + Args: + messages: List of conversation messages. + tools: Optional list of tools the model can use. + system_prompt: Optional system prompt. + max_tokens: Maximum tokens in response (num_predict in Ollama). + temperature: Sampling temperature. + **kwargs: Additional parameters. + + Returns: + LLMResponse containing the model's response. + + Raises: + LLMClientError: If the request fails. + """ + # Build the request payload + converted_messages = self._convert_messages(messages) + + # Add system prompt at the beginning if provided + if system_prompt: + converted_messages.insert(0, { + 'role': 'system', + 'content': system_prompt + }) + + payload = { + 'model': self._model, + 'messages': converted_messages, + 'stream': False, + 'options': { + 'num_predict': max_tokens, + 'temperature': temperature + } + } + + if tools: + payload['tools'] = self._convert_tools(tools) + + # Make the API request + try: + response_data = self._make_request(payload) + return self._parse_response(response_data) + except LLMClientError: + raise + except Exception as e: + raise LLMClientError(LLMError( + message=f"Request failed: {str(e)}", + provider=self.provider_name + )) + + def _convert_messages(self, messages: list[Message]) -> list[dict]: + """Convert Message objects to Ollama API format.""" + result = [] + + for msg in messages: + if msg.role == Role.SYSTEM: + result.append({ + 'role': 'system', + 'content': msg.content + }) + + elif msg.role == Role.USER: + result.append({ + 'role': 'user', + 'content': msg.content + }) + + elif msg.role == Role.ASSISTANT: + message = { + 'role': 'assistant', + 'content': msg.content or '' + } + + # Add tool calls if present + if msg.tool_calls: + message['tool_calls'] = [ + { + 'function': { + 'name': tc.name, + 'arguments': tc.arguments + } + } + for tc in msg.tool_calls + ] + + result.append(message) + + elif msg.role == Role.TOOL: + # Tool results in Ollama + for tr in msg.tool_results: + result.append({ + 'role': 'tool', + 'content': tr.content + }) + + return result + + def _convert_tools(self, tools: list[Tool]) -> list[dict]: + """Convert Tool objects to Ollama API format.""" + return [ + { + 'type': 'function', + 'function': { + 'name': tool.name, + 'description': tool.description, + 'parameters': tool.parameters + } + } + for tool in tools + ] + + def _make_request(self, payload: dict) -> dict: + """Make an HTTP request to the Ollama API.""" + url = f'{self._api_url}/api/chat' + + request = urllib.request.Request( + url, + data=json.dumps(payload).encode('utf-8'), + headers={'Content-Type': 'application/json'}, + method='POST' + ) + + try: + with urllib.request.urlopen(request, timeout=300) as response: + return json.loads(response.read().decode('utf-8')) + except urllib.error.HTTPError as e: + error_body = e.read().decode('utf-8') + try: + error_data = json.loads(error_body) + error_msg = error_data.get('error', str(e)) + except json.JSONDecodeError: + error_msg = error_body or str(e) + + raise LLMClientError(LLMError( + message=error_msg, + code=str(e.code), + provider=self.provider_name, + retryable=e.code in (500, 502, 503, 504) + )) + except urllib.error.URLError as e: + raise LLMClientError(LLMError( + message=f"Cannot connect to Ollama: {e.reason}", + provider=self.provider_name, + retryable=True + )) + + def _parse_response(self, data: dict) -> LLMResponse: + """Parse the Ollama API response into an LLMResponse.""" + import re + + message = data.get('message', {}) + content = message.get('content', '') + tool_calls = [] + + # Parse tool calls if present (native Ollama format) + for tc in message.get('tool_calls', []): + func = tc.get('function', {}) + arguments = func.get('arguments', {}) + + # Arguments might be a string that needs parsing + if isinstance(arguments, str): + try: + arguments = json.loads(arguments) + except json.JSONDecodeError: + arguments = {} + + tool_calls.append(ToolCall( + id=str(uuid.uuid4()), # Ollama doesn't provide IDs + name=func.get('name', ''), + arguments=arguments + )) + + # Determine stop reason + done_reason = data.get('done_reason', '') + if tool_calls: + stop_reason = StopReason.TOOL_USE + elif done_reason == 'stop': + stop_reason = StopReason.END_TURN + elif done_reason == 'length': + stop_reason = StopReason.MAX_TOKENS + else: + stop_reason = StopReason.UNKNOWN + + # Parse usage information + # Ollama provides eval_count (output) and prompt_eval_count (input) + usage = Usage( + input_tokens=data.get('prompt_eval_count', 0), + output_tokens=data.get('eval_count', 0), + total_tokens=( + data.get('prompt_eval_count', 0) + + data.get('eval_count', 0) + ) + ) + + return LLMResponse( + content=content, + tool_calls=tool_calls, + stop_reason=stop_reason, + model=data.get('model', self._model), + usage=usage, + raw_response=data + ) diff --git a/web/pgadmin/llm/providers/openai.py b/web/pgadmin/llm/providers/openai.py new file mode 100644 index 00000000000..4ef77e78bce --- /dev/null +++ b/web/pgadmin/llm/providers/openai.py @@ -0,0 +1,339 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""OpenAI GPT LLM client implementation.""" + +import json +import socket +import ssl +import urllib.request +import urllib.error +from typing import Optional +import uuid + +# Try to use certifi for proper SSL certificate handling +try: + import certifi + SSL_CONTEXT = ssl.create_default_context(cafile=certifi.where()) +except ImportError: + SSL_CONTEXT = ssl.create_default_context() + +from pgadmin.llm.client import LLMClient, LLMClientError +from pgadmin.llm.models import ( + Message, Tool, ToolCall, LLMResponse, LLMError, + Role, StopReason, Usage +) + + +# Default model if none specified +DEFAULT_MODEL = 'gpt-4o' + +# API configuration +API_URL = 'https://api.openai.com/v1/chat/completions' + + +class OpenAIClient(LLMClient): + """ + OpenAI GPT API client. + + Implements the LLMClient interface for OpenAI's GPT models. + """ + + def __init__(self, api_key: str, model: Optional[str] = None): + """ + Initialize the OpenAI client. + + Args: + api_key: The OpenAI API key. + model: Optional model name. Defaults to gpt-4o. + """ + self._api_key = api_key + self._model = model or DEFAULT_MODEL + + @property + def provider_name(self) -> str: + return 'openai' + + @property + def model_name(self) -> str: + return self._model + + def is_available(self) -> bool: + """Check if the client is properly configured.""" + return bool(self._api_key) + + def chat( + self, + messages: list[Message], + tools: Optional[list[Tool]] = None, + system_prompt: Optional[str] = None, + max_tokens: int = 4096, + temperature: float = 0.0, + **kwargs + ) -> LLMResponse: + """ + Send a chat request to OpenAI. + + Args: + messages: List of conversation messages. + tools: Optional list of tools the model can use. + system_prompt: Optional system prompt. + max_tokens: Maximum tokens in response. + temperature: Sampling temperature. + **kwargs: Additional parameters. + + Returns: + LLMResponse containing the model's response. + + Raises: + LLMClientError: If the request fails. + """ + # Build the request payload + converted_messages = self._convert_messages(messages) + + # Add system prompt at the beginning if provided + if system_prompt: + converted_messages.insert(0, { + 'role': 'system', + 'content': system_prompt + }) + + payload = { + 'model': self._model, + 'messages': converted_messages, + 'max_completion_tokens': max_tokens, + 'temperature': temperature + } + + if tools: + payload['tools'] = self._convert_tools(tools) + payload['tool_choice'] = 'auto' + + # Make the API request + try: + response_data = self._make_request(payload) + return self._parse_response(response_data) + except LLMClientError: + raise + except Exception as e: + raise LLMClientError(LLMError( + message=f"Request failed: {str(e)}", + provider=self.provider_name + )) + + def _convert_messages(self, messages: list[Message]) -> list[dict]: + """Convert Message objects to OpenAI API format.""" + result = [] + + for msg in messages: + if msg.role == Role.SYSTEM: + result.append({ + 'role': 'system', + 'content': msg.content + }) + + elif msg.role == Role.USER: + result.append({ + 'role': 'user', + 'content': msg.content + }) + + elif msg.role == Role.ASSISTANT: + message = { + 'role': 'assistant', + 'content': msg.content or None + } + + # Add tool calls if present + if msg.tool_calls: + message['tool_calls'] = [ + { + 'id': tc.id, + 'type': 'function', + 'function': { + 'name': tc.name, + 'arguments': json.dumps(tc.arguments) + } + } + for tc in msg.tool_calls + ] + + result.append(message) + + elif msg.role == Role.TOOL: + # Each tool result is a separate message in OpenAI + for tr in msg.tool_results: + result.append({ + 'role': 'tool', + 'tool_call_id': tr.tool_call_id, + 'content': tr.content + }) + + return result + + def _convert_tools(self, tools: list[Tool]) -> list[dict]: + """Convert Tool objects to OpenAI API format.""" + return [ + { + 'type': 'function', + 'function': { + 'name': tool.name, + 'description': tool.description, + 'parameters': tool.parameters + } + } + for tool in tools + ] + + def _make_request(self, payload: dict) -> dict: + """Make an HTTP request to the OpenAI API.""" + headers = { + 'Content-Type': 'application/json', + 'Authorization': f'Bearer {self._api_key}' + } + + request = urllib.request.Request( + API_URL, + data=json.dumps(payload).encode('utf-8'), + headers=headers, + method='POST' + ) + + try: + with urllib.request.urlopen( + request, timeout=120, context=SSL_CONTEXT + ) as response: + return json.loads(response.read().decode('utf-8')) + except urllib.error.HTTPError as e: + error_body = e.read().decode('utf-8') + try: + error_data = json.loads(error_body) + error_msg = error_data.get('error', {}).get('message', str(e)) + except json.JSONDecodeError: + error_msg = error_body or str(e) + + raise LLMClientError(LLMError( + message=error_msg, + code=str(e.code), + provider=self.provider_name, + retryable=e.code in (429, 500, 502, 503, 504) + )) + except urllib.error.URLError as e: + raise LLMClientError(LLMError( + message=f"Connection error: {e.reason}", + provider=self.provider_name, + retryable=True + )) + except socket.timeout: + raise LLMClientError(LLMError( + message="Request timed out. The request may be too large " + "or the server is slow to respond.", + code='timeout', + provider=self.provider_name, + retryable=True + )) + + def _parse_response(self, data: dict) -> LLMResponse: + """Parse the OpenAI API response into an LLMResponse.""" + # Check for API-level errors in the response + if 'error' in data: + error_info = data['error'] + raise LLMClientError(LLMError( + message=error_info.get('message', 'Unknown API error'), + code=error_info.get('code', 'unknown'), + provider=self.provider_name, + retryable=False + )) + + choices = data.get('choices', []) + if not choices: + raise LLMClientError(LLMError( + message='No response choices returned from API', + provider=self.provider_name, + retryable=False + )) + + choice = choices[0] + message = choice.get('message', {}) + + # Check for refusal (content moderation) + if message.get('refusal'): + raise LLMClientError(LLMError( + message=f"Request refused: {message.get('refusal')}", + provider=self.provider_name, + retryable=False + )) + + content = message.get('content', '') or '' + tool_calls = [] + + # Parse tool calls if present + for tc in message.get('tool_calls', []): + if tc.get('type') == 'function': + func = tc.get('function', {}) + try: + arguments = json.loads(func.get('arguments', '{}')) + except json.JSONDecodeError: + arguments = {} + + tool_calls.append(ToolCall( + id=tc.get('id', str(uuid.uuid4())), + name=func.get('name', ''), + arguments=arguments + )) + + # Map OpenAI finish reasons to our enum + finish_reason = choice.get('finish_reason', '') + stop_reason_map = { + 'stop': StopReason.END_TURN, + 'tool_calls': StopReason.TOOL_USE, + 'length': StopReason.MAX_TOKENS, + 'content_filter': StopReason.STOP_SEQUENCE + } + stop_reason = stop_reason_map.get(finish_reason, StopReason.UNKNOWN) + + # Parse usage information + usage_data = data.get('usage', {}) + usage = Usage( + input_tokens=usage_data.get('prompt_tokens', 0), + output_tokens=usage_data.get('completion_tokens', 0), + total_tokens=usage_data.get('total_tokens', 0) + ) + + # Check for problematic responses + if not content and not tool_calls: + if stop_reason == StopReason.MAX_TOKENS: + input_tokens = usage.input_tokens + raise LLMClientError(LLMError( + message=f'Response truncated due to token limit ' + f'(input: {input_tokens} tokens). ' + f'The request is too large for model {self._model}. ' + f'Try using a model with a larger context window, ' + f'or analyze a smaller scope (e.g., a specific schema ' + f'instead of the entire database).', + code='max_tokens', + provider=self.provider_name, + retryable=False + )) + elif finish_reason and finish_reason not in ('stop', 'tool_calls'): + raise LLMClientError(LLMError( + message=f'Empty response with finish reason: {finish_reason}', + code=finish_reason, + provider=self.provider_name, + retryable=False + )) + + return LLMResponse( + content=content, + tool_calls=tool_calls, + stop_reason=stop_reason, + model=data.get('model', self._model), + usage=usage, + raw_response=data + ) diff --git a/web/pgadmin/llm/tests/README.md b/web/pgadmin/llm/tests/README.md new file mode 100644 index 00000000000..8a17532d594 --- /dev/null +++ b/web/pgadmin/llm/tests/README.md @@ -0,0 +1,187 @@ +# LLM Module Tests + +This directory contains comprehensive tests for the pgAdmin LLM/AI functionality. + +## Test Files + +### Python Tests + +#### `test_client.py` - LLM Client Tests +Tests the core LLM client functionality including: +- Provider initialization (Anthropic, OpenAI, Ollama) +- API key loading from files and environment variables +- Graceful handling of missing API keys +- User preference overrides +- Provider selection logic +- Whitespace handling in API keys + +**Key Features:** +- Tests pass even without API keys configured +- Mocks external API calls +- Tests all three provider types + +#### `test_reports.py` - Report Generation Tests +Tests report generation functionality including: +- Security, performance, and design report types +- Server, database, and schema level reports +- Report request validation +- Progress callback functionality +- Error handling during generation +- Markdown formatting + +**Key Features:** +- Tests data collection from PostgreSQL +- Validates report structure +- Tests streaming progress updates + +#### `test_chat.py` - Chat Session Tests +Tests interactive chat functionality including: +- Chat session initialization +- Message history management +- Context passing (database, SQL queries) +- Streaming responses +- Token counting for context management +- Maximum history limits +- Error handling + +**Key Features:** +- Tests conversation flow +- Validates context integration +- Tests memory management + +#### `test_views.py` - API Endpoint Tests +Tests Flask endpoints including: +- `/llm/status` - LLM availability check +- `/llm/reports/security/*` - Security report endpoints +- `/llm/reports/performance/*` - Performance report endpoints +- `/llm/reports/design/*` - Design review endpoints +- `/llm/chat` - Chat endpoint +- Streaming endpoints with SSE + +**Key Features:** +- Tests authentication and permissions +- Tests API error responses +- Tests SSE streaming format + +### JavaScript Tests + +#### `AIReport.spec.js` - AIReport Component Tests +Tests the React component for AI report display including: +- Component rendering in light and dark modes +- Theme detection from body styles +- Progress display during generation +- Error handling +- Markdown rendering +- Download functionality +- SSE event handling +- Support for all report categories and types + +**Key Features:** +- Tests with React Testing Library +- Mocks EventSource for SSE +- Tests theme transitions +- Validates accessibility + +## Running the Tests + +### Python Tests + +From the `web` directory: + +```bash +# Run all LLM tests +python -m pytest pgadmin/llm/tests/ + +# Run specific test file +python -m pytest pgadmin/llm/tests/test_client.py + +# Run specific test case +python -m pytest pgadmin/llm/tests/test_client.py::LLMClientTestCase::test_anthropic_provider_with_api_key + +# Run with coverage +python -m pytest --cov=pgadmin/llm pgadmin/llm/tests/ +``` + +### JavaScript Tests + +From the `web` directory: + +```bash +# Run all JavaScript tests +yarn run test:karma + +# Run specific test file +yarn run test:karma -- --file regression/javascript/llm/AIReport.spec.js +``` + +## Test Coverage + +### What's Tested + +✅ LLM client initialization with all providers +✅ API key loading from files and environment +✅ Graceful handling of missing API keys +✅ User preference overrides +✅ Report generation for all categories (security, performance, design) +✅ Report generation for all levels (server, database, schema) +✅ Chat session management and history +✅ Streaming progress updates via SSE +✅ API endpoint authentication and authorization +✅ React component rendering in both themes +✅ Dark mode text color detection +✅ Error handling throughout the stack + +### What's Mocked + +- External LLM API calls (Anthropic, OpenAI, Ollama) +- PostgreSQL database connections +- File system access for API keys +- EventSource for SSE streaming +- Theme detection (window.getComputedStyle) + +## Environment Variables for Testing + +These environment variables can be set for integration testing with real APIs: + +```bash +# For Anthropic +export ANTHROPIC_API_KEY="your-api-key" + +# For OpenAI +export OPENAI_API_KEY="your-api-key" + +# For Ollama +export OLLAMA_API_URL="http://localhost:11434" +``` + +**Note:** Tests are designed to pass without these variables set. They will mock API responses when keys are not available. + +## Test Philosophy + +1. **Graceful Degradation**: All tests pass even without API keys configured +2. **Mocking by Default**: External APIs are mocked to avoid dependencies +3. **Comprehensive Coverage**: Tests cover happy paths, error cases, and edge cases +4. **Documentation**: Tests serve as documentation for expected behavior +5. **Integration Ready**: Tests can be run with real APIs when keys are provided + +## Adding New Tests + +When adding new functionality to the LLM module: + +1. Add unit tests to the appropriate test file +2. Mock external dependencies +3. Test both success and failure cases +4. Test with and without API keys/configuration +5. Update this README with new test coverage + +## Troubleshooting + +### Common Issues + +**Import errors**: Make sure you're running tests from the `web` directory + +**API key warnings**: These are expected - tests should pass without API keys + +**Theme mocking errors**: Ensure `fake_theme.js` is available in regression/javascript/ + +**EventSource not found**: This is mocked in JavaScript tests, ensure mocks are properly set up diff --git a/web/pgadmin/llm/tests/__init__.py b/web/pgadmin/llm/tests/__init__.py new file mode 100644 index 00000000000..3a080d6bcf9 --- /dev/null +++ b/web/pgadmin/llm/tests/__init__.py @@ -0,0 +1,8 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## diff --git a/web/pgadmin/llm/tests/test_llm_status.py b/web/pgadmin/llm/tests/test_llm_status.py new file mode 100644 index 00000000000..5279c4c1475 --- /dev/null +++ b/web/pgadmin/llm/tests/test_llm_status.py @@ -0,0 +1,75 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +import json +from unittest.mock import patch, MagicMock, mock_open +from pgadmin.utils.route import BaseTestGenerator +from regression.python_test_utils import test_utils as utils + + +class LLMStatusTestCase(BaseTestGenerator): + """Test cases for LLM status endpoint""" + + scenarios = [ + ('LLM Status - Disabled', dict( + url='/llm/status', + provider_enabled=False, + expected_enabled=False + )), + ('LLM Status - Anthropic Enabled', dict( + url='/llm/status', + provider_enabled=True, + expected_enabled=True, + provider_name='anthropic' + )), + ('LLM Status - OpenAI Enabled', dict( + url='/llm/status', + provider_enabled=True, + expected_enabled=True, + provider_name='openai' + )), + ('LLM Status - Ollama Enabled', dict( + url='/llm/status', + provider_enabled=True, + expected_enabled=True, + provider_name='ollama' + )), + ] + + def setUp(self): + pass + + def runTest(self): + """Test LLM status endpoint returns correct availability status""" + provider_value = self.provider_name if ( + self.provider_enabled and hasattr(self, 'provider_name') + ) else None + + with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ + patch('pgadmin.llm.utils.is_llm_enabled_system') as mock_system, \ + patch('pgadmin.llm.utils.get_default_provider') as mock_provider, \ + patch('pgadmin.authenticate.mfa.utils.mfa_required', lambda f: f): + + mock_enabled.return_value = self.expected_enabled + mock_system.return_value = self.provider_enabled + mock_provider.return_value = provider_value + + response = self.tester.get( + self.url, + content_type='application/json', + follow_redirects=True + ) + + self.assertEqual(response.status_code, 200) + data = json.loads(response.data) + self.assertTrue(data['success']) + self.assertEqual(data['data']['enabled'], self.expected_enabled) + + if self.expected_enabled and hasattr(self, 'provider_name'): + self.assertEqual(data['data']['provider'], self.provider_name) diff --git a/web/pgadmin/llm/utils.py b/web/pgadmin/llm/utils.py new file mode 100644 index 00000000000..48bfecdb663 --- /dev/null +++ b/web/pgadmin/llm/utils.py @@ -0,0 +1,356 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Utility functions for LLM configuration access.""" + +import os +from pgadmin.utils.preferences import Preferences +import config + + +def _expand_path(path): + """Expand user home directory in path.""" + if path: + return os.path.expanduser(path) + return path + + +def _read_api_key_from_file(file_path): + """ + Read an API key from a file. + + Args: + file_path: Path to the file containing the API key. + + Returns: + The API key string, or None if the file doesn't exist or is empty. + """ + if not file_path: + return None + + expanded_path = _expand_path(file_path) + + if not os.path.isfile(expanded_path): + return None + + try: + with open(expanded_path, 'r') as f: + key = f.read().strip() + return key if key else None + except (IOError, OSError): + return None + + +# Public alias for use by refresh endpoints +read_api_key_file = _read_api_key_from_file + + +def _get_preference_value(name): + """ + Get a preference value, returning None if empty or not set. + + Args: + name: The preference name (e.g., 'anthropic_api_key_file') + + Returns: + The preference value or None if empty/not set. + """ + try: + pref_module = Preferences.module('ai') + if pref_module: + pref = pref_module.preference(name) + if pref: + value = pref.get() + if value and str(value).strip(): + return str(value).strip() + except Exception: + pass + return None + + +def get_anthropic_api_key(): + """ + Get the Anthropic API key. + + Checks user preferences first, then falls back to system configuration. + + Returns: + The API key string, or None if not configured or file doesn't exist. + """ + # Check user preference first + pref_file = _get_preference_value('anthropic_api_key_file') + if pref_file: + key = _read_api_key_from_file(pref_file) + if key: + return key + + # Fall back to system configuration + return _read_api_key_from_file(config.ANTHROPIC_API_KEY_FILE) + + +def get_anthropic_model(): + """ + Get the Anthropic model to use. + + Checks user preferences first, then falls back to system configuration. + + Returns: + The model name string, or empty string if not configured. + """ + # Check user preference first + pref_model = _get_preference_value('anthropic_api_model') + if pref_model: + return pref_model + + # Fall back to system configuration + return config.ANTHROPIC_API_MODEL or '' + + +def get_openai_api_key(): + """ + Get the OpenAI API key. + + Checks user preferences first, then falls back to system configuration. + + Returns: + The API key string, or None if not configured or file doesn't exist. + """ + # Check user preference first + pref_file = _get_preference_value('openai_api_key_file') + if pref_file: + key = _read_api_key_from_file(pref_file) + if key: + return key + + # Fall back to system configuration + return _read_api_key_from_file(config.OPENAI_API_KEY_FILE) + + +def get_openai_model(): + """ + Get the OpenAI model to use. + + Checks user preferences first, then falls back to system configuration. + + Returns: + The model name string, or empty string if not configured. + """ + # Check user preference first + pref_model = _get_preference_value('openai_api_model') + if pref_model: + return pref_model + + # Fall back to system configuration + return config.OPENAI_API_MODEL or '' + + +def get_ollama_api_url(): + """ + Get the Ollama API URL. + + Checks user preferences first, then falls back to system configuration. + + Returns: + The URL string, or empty string if not configured. + """ + # Check user preference first + pref_url = _get_preference_value('ollama_api_url') + if pref_url: + return pref_url + + # Fall back to system configuration + return config.OLLAMA_API_URL or '' + + +def get_ollama_model(): + """ + Get the Ollama model to use. + + Checks user preferences first, then falls back to system configuration. + + Returns: + The model name string, or empty string if not configured. + """ + # Check user preference first + pref_model = _get_preference_value('ollama_api_model') + if pref_model: + return pref_model + + # Fall back to system configuration + return config.OLLAMA_API_MODEL or '' + + +def get_docker_api_url(): + """ + Get the Docker Model Runner API URL. + + Checks user preferences first, then falls back to system configuration. + + Returns: + The URL string, or empty string if not configured. + """ + # Check user preference first + pref_url = _get_preference_value('docker_api_url') + if pref_url: + return pref_url + + # Fall back to system configuration + return config.DOCKER_API_URL or '' + + +def get_docker_model(): + """ + Get the Docker Model Runner model to use. + + Checks user preferences first, then falls back to system configuration. + + Returns: + The model name string, or empty string if not configured. + """ + # Check user preference first + pref_model = _get_preference_value('docker_api_model') + if pref_model: + return pref_model + + # Fall back to system configuration + return config.DOCKER_API_MODEL or '' + + +def get_default_provider(): + """ + Get the default LLM provider. + + First checks if LLM is enabled at the system level (config.LLM_ENABLED). + If enabled, reads from user preferences (which default to system config). + Returns None if disabled at system level or user preference is empty. + + Returns: + The provider name ('anthropic', 'openai', 'ollama') or None if disabled. + """ + # Check master switch first - cannot be overridden by user + if not getattr(config, 'LLM_ENABLED', False): + return None + + # Valid provider values + valid_providers = {'anthropic', 'openai', 'ollama', 'docker'} + + # Get preference value (includes config default if not set by user) + try: + pref_module = Preferences.module('ai') + if pref_module: + pref = pref_module.preference('default_provider') + if pref: + value = pref.get() + # Check if it's a valid provider + if value and str(value).strip() in valid_providers: + return str(value).strip() + except Exception: + pass + + # No valid provider configured + return None + + +def is_llm_enabled_system(): + """ + Check if LLM features are enabled at the system level. + + This checks the config.LLM_ENABLED setting which cannot be + overridden by user preferences. + + Returns: + True if LLM is enabled in system config, False otherwise. + """ + return getattr(config, 'LLM_ENABLED', False) + + +def is_llm_enabled(): + """ + Check if LLM features are enabled for the current user. + + This checks both the system-level config (LLM_ENABLED) and + whether a valid provider is configured in user preferences. + + Returns: + True if LLM is enabled and a provider is configured, False otherwise. + """ + return get_default_provider() is not None + + +def get_max_tool_iterations(): + """ + Get the maximum number of tool iterations for AI conversations. + + Checks user preferences first, then falls back to system configuration. + + Returns: + The maximum tool iterations (default 20). + """ + try: + pref_module = Preferences.module('ai') + if pref_module: + pref = pref_module.preference('max_tool_iterations') + if pref: + value = pref.get() + if value is not None: + return int(value) + except Exception: + pass + + # Fall back to system configuration + return getattr(config, 'MAX_LLM_TOOL_ITERATIONS', 20) + + +def get_llm_config(): + """ + Get complete LLM configuration for all providers. + + Returns: + A dictionary containing configuration for all providers: + { + 'default_provider': str or None, + 'enabled': bool, + 'anthropic': { + 'api_key': str or None, + 'model': str + }, + 'openai': { + 'api_key': str or None, + 'model': str + }, + 'ollama': { + 'api_url': str, + 'model': str + }, + 'docker': { + 'api_url': str, + 'model': str + } + } + """ + return { + 'default_provider': get_default_provider(), + 'enabled': is_llm_enabled(), + 'anthropic': { + 'api_key': get_anthropic_api_key(), + 'model': get_anthropic_model() + }, + 'openai': { + 'api_key': get_openai_api_key(), + 'model': get_openai_model() + }, + 'ollama': { + 'api_url': get_ollama_api_url(), + 'model': get_ollama_model() + }, + 'docker': { + 'api_url': get_docker_api_url(), + 'model': get_docker_model() + } + } diff --git a/web/pgadmin/preferences/static/js/components/PreferencesHelper.jsx b/web/pgadmin/preferences/static/js/components/PreferencesHelper.jsx index a9f3cdebbbb..ac35b78f0e4 100644 --- a/web/pgadmin/preferences/static/js/components/PreferencesHelper.jsx +++ b/web/pgadmin/preferences/static/js/components/PreferencesHelper.jsx @@ -18,6 +18,7 @@ import { getBrowser } from '../../../../static/js/utils'; import SaveSharpIcon from '@mui/icons-material/SaveSharp'; import CloseIcon from '@mui/icons-material/CloseRounded'; import HTMLReactParser from 'html-react-parser/lib/index'; +import getApiInstance from '../../../../static/js/api_instance'; export async function reloadPgAdmin() { @@ -95,11 +96,78 @@ export function prepareSubnodeData(node, subNode, nodeData, preferencesStore) { fieldValues[element.id] = element.value; if (element.name === 'theme') { + // Theme has special handling - process before dynamic options element.type = 'theme'; element.options.forEach((opt) => { opt.selected = opt.value === element.value; opt.preview_src = opt.preview_src && url_for('static', { filename: opt.preview_src }); }); + } else if (element.controlProps.optionsRefreshUrl) { + // Use select-refresh type when refresh URL is provided + element.type = 'select-refresh'; + + // Build refreshDeps by looking up IDs for the named dependencies + const refreshDepNames = element.controlProps.refreshDepNames || {}; + const refreshDeps = {}; + for (const [paramName, prefName] of Object.entries(refreshDepNames)) { + // Find the preference with this name in the same subNode + const depPref = subNode.preferences.find((p) => p.name === prefName); + if (depPref) { + refreshDeps[paramName] = depPref.id; + } + } + element.controlProps.refreshDeps = refreshDeps; + + // Also set up initial options loading via optionsUrl + if (element.controlProps.optionsUrl) { + const optionsEndpoint = element.controlProps.optionsUrl; + const staticOptions = element.options || []; + element.options = () => { + return new Promise((resolve) => { + const api = getApiInstance(); + const optionsUrl = url_for(optionsEndpoint); + api.get(optionsUrl) + .then((res) => { + if (res.data?.data?.models) { + const dynamicOptions = res.data.data.models; + resolve([...dynamicOptions, ...staticOptions]); + } else { + resolve(staticOptions); + } + }) + .catch(() => { + resolve(staticOptions); + }); + }); + }; + } + } else if (element.controlProps.optionsUrl) { + // Support dynamic options loading via optionsUrl (endpoint name) + const optionsEndpoint = element.controlProps.optionsUrl; + const staticOptions = element.options || []; + // Replace options with a function that fetches from the URL + element.options = () => { + return new Promise((resolve) => { + const api = getApiInstance(); + // Use url_for to resolve the endpoint to a proper URL + const optionsUrl = url_for(optionsEndpoint); + api.get(optionsUrl) + .then((res) => { + if (res.data?.data?.models) { + // Dynamic models loaded successfully + const dynamicOptions = res.data.data.models; + resolve([...dynamicOptions, ...staticOptions]); + } else { + // No models in response, use static options + resolve(staticOptions); + } + }) + .catch(() => { + // On error, fall back to static options + resolve(staticOptions); + }); + }); + }; } } else if (type === 'keyboardShortcut') { element.type = 'keyboardShortcut'; diff --git a/web/pgadmin/static/js/components/FormComponents.jsx b/web/pgadmin/static/js/components/FormComponents.jsx index 2405e719bc2..912ba3942d6 100644 --- a/web/pgadmin/static/js/components/FormComponents.jsx +++ b/web/pgadmin/static/js/components/FormComponents.jsx @@ -918,6 +918,8 @@ InputSelectNonSearch.propTypes = { export function InputSelect({ref, cid, helpid, onChange, options, readonly = false, value, controlProps = {}, optionsLoaded, optionsReloadBasis, disabled, onError, ...props}) { const [[finalOptions, isLoading], setFinalOptions] = useState([[], true]); + // Force options to reload on component remount (each mount gets a new ID) + const [mountId] = useState(() => Math.random()); const theme = useTheme(); useWindowSize(); @@ -954,12 +956,12 @@ export function InputSelect({ref, cid, helpid, onChange, options, readonly = fal } }) .catch((err)=>{ - let error_msg = err.response.data.errormsg; + let error_msg = err?.response?.data?.errormsg || err?.message || 'Unknown error'; onError?.(error_msg); setFinalOptions([[], false]); }); return () => umounted = true; - }, [optionsReloadBasis]); + }, [optionsReloadBasis, mountId]); /* Apply filter if any */ const filteredOptions = (controlProps.filter?.(finalOptions)) || finalOptions; diff --git a/web/pgadmin/static/js/components/SelectRefresh.jsx b/web/pgadmin/static/js/components/SelectRefresh.jsx index 0fb81774e77..5a30bbcbb61 100644 --- a/web/pgadmin/static/js/components/SelectRefresh.jsx +++ b/web/pgadmin/static/js/components/SelectRefresh.jsx @@ -7,48 +7,143 @@ // ////////////////////////////////////////////////////////////// -import { useState } from 'react'; -import { Box} from '@mui/material'; -import {InputSelect, FormInput} from './FormComponents'; +import { useState, useContext, useCallback } from 'react'; +import { Box } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import { InputSelect, FormInput } from './FormComponents'; import PropTypes from 'prop-types'; import CustomPropTypes from '../custom_prop_types'; import RefreshIcon from '@mui/icons-material/Refresh'; import { PgIconButton } from './Buttons'; +import getApiInstance from '../api_instance'; +import url_for from 'sources/url_for'; +import gettext from 'sources/gettext'; +import { SchemaStateContext } from '../SchemaView/SchemaState'; +import { usePgAdmin } from '../PgAdminProvider'; -function ChildContent({cid, helpid, onRefreshClick, label, ...props}) { - return - - - - - } title={label||''}/> - - ; +const StyledBox = styled(Box)(() => ({ + display: 'flex', + alignItems: 'flex-start', + '& .SelectRefresh-selectContainer': { + flexGrow: 1, + }, + '& .SelectRefresh-buttonContainer': { + marginLeft: '4px', + '& button': { + height: '30px', + width: '30px', + }, + }, +})); + +function ChildContent({ cid, helpid, onRefreshClick, isRefreshing, ...props }) { + return ( + + + + + + } + title={gettext('Refresh models')} + disabled={isRefreshing} + /> + + + ); } ChildContent.propTypes = { cid: PropTypes.string, helpid: PropTypes.string, onRefreshClick: PropTypes.func, - label: PropTypes.string, + isRefreshing: PropTypes.bool, }; -export function SelectRefresh({ required, className, label, helpMessage, testcid, controlProps, ...props }){ - const [options, setOptions] = useState([]); - const [optionsReloadBasis, setOptionsReloadBasis] = useState(false); - const {getOptionsOnRefresh, ...selectControlProps} = controlProps; - - const onRefreshClick = ()=>{ - getOptionsOnRefresh?.() - .then((res)=>{ - setOptions(res); - setOptionsReloadBasis((prevVal)=>!prevVal); - }); - }; + +export function SelectRefresh({ required, className, label, helpMessage, testcid, controlProps, ...props }) { + const [optionsState, setOptionsState] = useState({ options: [], reloadBasis: 0 }); + const [isRefreshing, setIsRefreshing] = useState(false); + const schemaState = useContext(SchemaStateContext); + const pgAdmin = usePgAdmin(); + const { + getOptionsOnRefresh, + optionsRefreshUrl, + refreshDeps, + ...selectControlProps + } = controlProps; + + const onRefreshClick = useCallback(() => { + // If we have an optionsRefreshUrl, make a POST request with dependent field values + if (optionsRefreshUrl && refreshDeps && schemaState) { + setIsRefreshing(true); + + // Build the request body from dependent field values + const requestBody = {}; + for (const [paramName, fieldId] of Object.entries(refreshDeps)) { + // Find the field value from schema state + // fieldId is the preference ID, we need to look it up in state + const fieldValue = schemaState.data?.[fieldId]; + // Only include non-empty values + if (fieldValue !== undefined && fieldValue !== null && fieldValue !== '') { + requestBody[paramName] = fieldValue; + } + } + + const api = getApiInstance(); + const refreshUrl = url_for(optionsRefreshUrl); + + api.post(refreshUrl, requestBody) + .then((res) => { + if (res.data?.data?.error) { + // Server returned an error message - clear options and show error + setOptionsState((prev) => ({ options: [], reloadBasis: prev.reloadBasis + 1 })); + pgAdmin.Browser.notifier.error(res.data.data.error); + } else if (res.data?.data?.models) { + const models = res.data.data.models; + setOptionsState((prev) => ({ options: models, reloadBasis: prev.reloadBasis + 1 })); + } else { + // No models returned - clear the list + setOptionsState((prev) => ({ options: [], reloadBasis: prev.reloadBasis + 1 })); + } + }) + .catch((err) => { + // Network or other error - clear options and show error + setOptionsState((prev) => ({ options: [], reloadBasis: prev.reloadBasis + 1 })); + const errMsg = err.response?.data?.errormsg || err.message || gettext('Failed to refresh models'); + pgAdmin.Browser.notifier.error(errMsg); + }) + .finally(() => { + setIsRefreshing(false); + }); + } else if (getOptionsOnRefresh) { + // Fall back to the original getOptionsOnRefresh callback + setIsRefreshing(true); + getOptionsOnRefresh() + .then((res) => { + setOptionsState((prev) => ({ options: res, reloadBasis: prev.reloadBasis + 1 })); + }) + .catch((err) => { + setOptionsState((prev) => ({ options: [], reloadBasis: prev.reloadBasis + 1 })); + const errMsg = err.message || gettext('Failed to refresh options'); + pgAdmin.Browser.notifier.error(errMsg); + }) + .finally(() => { + setIsRefreshing(false); + }); + } + }, [optionsRefreshUrl, refreshDeps, schemaState, getOptionsOnRefresh, pgAdmin]); return ( - + ); } diff --git a/web/pgadmin/submodules.py b/web/pgadmin/submodules.py index e85183ee3b1..f74c6f62ed9 100644 --- a/web/pgadmin/submodules.py +++ b/web/pgadmin/submodules.py @@ -3,6 +3,7 @@ from .browser import blueprint as BrowserModule from .dashboard import blueprint as DashboardModule from .help import blueprint as HelpModule +from .llm import blueprint as LLMModule from .misc import blueprint as MiscModule from .preferences import blueprint as PreferencesModule from .redirects import blueprint as RedirectModule @@ -17,6 +18,7 @@ def get_submodules(): BrowserModule, DashboardModule, HelpModule, + LLMModule, MiscModule, PreferencesModule, RedirectModule, diff --git a/web/pgadmin/tools/user_management/PgAdminPermissions.py b/web/pgadmin/tools/user_management/PgAdminPermissions.py index 847a2eb971f..388f9765090 100644 --- a/web/pgadmin/tools/user_management/PgAdminPermissions.py +++ b/web/pgadmin/tools/user_management/PgAdminPermissions.py @@ -24,6 +24,7 @@ class AllPermissionTypes: tools_maintenance = 'tools_maintenance' tools_schema_diff = 'tools_schema_diff' tools_grant_wizard = 'tools_grant_wizard' + tools_ai = 'tools_ai' storage_add_folder = 'storage_add_folder' storage_remove_folder = 'storage_remove_folder' change_password = 'change_password' @@ -110,6 +111,11 @@ def __init__(self): AllPermissionTypes.tools_erd_tool, gettext("ERD Tool") ) + self.add_permission( + AllPermissionCategories.tools, + AllPermissionTypes.tools_ai, + gettext("AI Reports") + ) self.add_permission( AllPermissionCategories.storage_manager, AllPermissionTypes.storage_add_folder, diff --git a/web/pgadmin/utils/constants.py b/web/pgadmin/utils/constants.py index ea164d6d1ac..d0567b39c2f 100644 --- a/web/pgadmin/utils/constants.py +++ b/web/pgadmin/utils/constants.py @@ -32,6 +32,7 @@ PREF_LABEL_GRAPH_VISUALISER = gettext('Graph Visualiser') PREF_LABEL_USER_INTERFACE = gettext('User Interface') PREF_LABEL_FILE_DOWNLOADS = gettext('File Downloads') +PREF_LABEL_AI = gettext('AI') PGADMIN_STRING_SEPARATOR = '_$PGADMIN$_' PGADMIN_NODE = 'pgadmin.node.%s' diff --git a/web/yarn.lock b/web/yarn.lock index 8beaf91189b..3945ebf5a71 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -25,7 +25,18 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.27.1" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": version: 7.29.0 resolution: "@babel/code-frame@npm:7.29.0" dependencies: @@ -36,7 +47,14 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.28.6, @babel/compat-data@npm:^7.29.0": +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/compat-data@npm:7.28.5" + checksum: 10c0/702a25de73087b0eba325c1d10979eed7c9b6662677386ba7b5aa6eace0fc0676f78343bae080a0176ae26f58bd5535d73b9d0fbb547fef377692e8b249353a7 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.28.6, @babel/compat-data@npm:^7.29.0": version: 7.29.0 resolution: "@babel/compat-data@npm:7.29.0" checksum: 10c0/08f348554989d23aa801bf1405aa34b15e841c0d52d79da7e524285c77a5f9d298e70e11d91cc578d8e2c9542efc586d50c5f5cf8e1915b254a9dcf786913a94 @@ -44,31 +62,31 @@ __metadata: linkType: hard "@babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4, @babel/core@npm:^7.28.3": - version: 7.29.0 - resolution: "@babel/core@npm:7.29.0" + version: 7.28.5 + resolution: "@babel/core@npm:7.28.5" dependencies: - "@babel/code-frame": "npm:^7.29.0" - "@babel/generator": "npm:^7.29.0" - "@babel/helper-compilation-targets": "npm:^7.28.6" - "@babel/helper-module-transforms": "npm:^7.28.6" - "@babel/helpers": "npm:^7.28.6" - "@babel/parser": "npm:^7.29.0" - "@babel/template": "npm:^7.28.6" - "@babel/traverse": "npm:^7.29.0" - "@babel/types": "npm:^7.29.0" + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.5" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-module-transforms": "npm:^7.28.3" + "@babel/helpers": "npm:^7.28.4" + "@babel/parser": "npm:^7.28.5" + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" "@jridgewell/remapping": "npm:^2.3.5" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/5127d2e8e842ae409e11bcbb5c2dff9874abf5415e8026925af7308e903f4f43397341467a130490d1a39884f461bc2b67f3063bce0be44340db89687fd852aa + checksum: 10c0/535f82238027621da6bdffbdbe896ebad3558b311d6f8abc680637a9859b96edbf929ab010757055381570b29cf66c4a295b5618318d27a4273c0e2033925e72 languageName: node linkType: hard "@babel/eslint-parser@npm:^7.26.5": - version: 7.28.6 - resolution: "@babel/eslint-parser@npm:7.28.6" + version: 7.28.5 + resolution: "@babel/eslint-parser@npm:7.28.5" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" @@ -76,7 +94,7 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/58a85f67a056ba8389978c4654b690b890a6dcd19aa9655c5d7d9349a0c25f124cabad8a190b6bf7045a063aeee1b8e2ab23cfe4d8fa0e0517716a8b70e758bc + checksum: 10c0/4d13f765434b6be83ab3917f06ad712dedf0d5bfa80fe54cd6cea44adac6a0d2519020ad307d66b4490e46a435874829eac6a9fd3a9cad54d7616c47d288aaed languageName: node linkType: hard @@ -92,7 +110,20 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.0": +"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/generator@npm:7.28.5" + dependencies: + "@babel/parser": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10c0/9f219fe1d5431b6919f1a5c60db8d5d34fe546c0d8f5a8511b32f847569234ffc8032beb9e7404649a143f54e15224ecb53a3d11b6bb85c3203e573d91fca752 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.29.0": version: 7.29.1 resolution: "@babel/generator@npm:7.29.1" dependencies: @@ -114,7 +145,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.28.6": +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/helper-compilation-targets@npm:7.27.2" + dependencies: + "@babel/compat-data": "npm:^7.27.2" + "@babel/helper-validator-option": "npm:^7.27.1" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/f338fa00dcfea931804a7c55d1a1c81b6f0a09787e528ec580d5c21b3ecb3913f6cb0f361368973ce953b824d910d3ac3e8a8ee15192710d3563826447193ad1 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-compilation-targets@npm:7.28.6" dependencies: @@ -127,7 +171,24 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.28.6": +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3, @babel/helper-create-class-features-plugin@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-create-class-features-plugin@npm:7.28.5" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-member-expression-to-functions": "npm:^7.28.5" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.5" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/786a6514efcf4514aaad85beed419b9184d059f4c9a9a95108f320142764999827252a851f7071de19f29424d369616573ecbaa347f1ce23fb12fc6827d9ff56 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-create-class-features-plugin@npm:7.28.6" dependencies: @@ -157,7 +218,22 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.6.5, @babel/helper-define-polyfill-provider@npm:^0.6.6": +"@babel/helper-define-polyfill-provider@npm:^0.6.5": + version: 0.6.5 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + debug: "npm:^4.4.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.22.10" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/4886a068d9ca1e70af395340656a9dda33c50502c67eed39ff6451785f370bdfc6e57095b90cb92678adcd4a111ca60909af53d3a741120719c5604346ae409e + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.6.6": version: 0.6.6 resolution: "@babel/helper-define-polyfill-provider@npm:0.6.6" dependencies: @@ -179,7 +255,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.28.5": +"@babel/helper-member-expression-to-functions@npm:^7.27.1, @babel/helper-member-expression-to-functions@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-member-expression-to-functions@npm:7.28.5" dependencies: @@ -189,7 +265,17 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.28.6": +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-imports@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/e00aace096e4e29290ff8648455c2bc4ed982f0d61dbf2db1b5e750b9b98f318bf5788d75a4f974c151bd318fd549e81dbcab595f46b14b81c12eda3023f51e8 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-imports@npm:7.28.6" dependencies: @@ -199,7 +285,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.6": +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-module-transforms@npm:7.28.3" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/549be62515a6d50cd4cfefcab1b005c47f89bd9135a22d602ee6a5e3a01f27571868ada10b75b033569f24dc4a2bb8d04bfa05ee75c16da7ade2d0db1437fcdb + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-transforms@npm:7.28.6" dependencies: @@ -221,7 +320,14 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.28.6, @babel/helper-plugin-utils@npm:^7.8.0": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.27.1 + resolution: "@babel/helper-plugin-utils@npm:7.27.1" + checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-plugin-utils@npm:7.28.6" checksum: 10c0/3f5f8acc152fdbb69a84b8624145ff4f9b9f6e776cb989f9f968f8606eb7185c5c3cfcf3ba08534e37e1e0e1c118ac67080610333f56baa4f7376c99b5f1143d @@ -241,7 +347,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.27.1, @babel/helper-replace-supers@npm:^7.28.6": +"@babel/helper-replace-supers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-replace-supers@npm:7.27.1" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/4f2eaaf5fcc196580221a7ccd0f8873447b5d52745ad4096418f6101a1d2e712e9f93722c9a32bc9769a1dc197e001f60d6f5438d4dfde4b9c6a9e4df719354c + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-replace-supers@npm:7.28.6" dependencies: @@ -271,7 +390,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.28.5": +"@babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-validator-identifier@npm:7.28.5" checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 @@ -286,27 +405,38 @@ __metadata: linkType: hard "@babel/helper-wrap-function@npm:^7.27.1": - version: 7.28.6 - resolution: "@babel/helper-wrap-function@npm:7.28.6" + version: 7.28.3 + resolution: "@babel/helper-wrap-function@npm:7.28.3" dependencies: - "@babel/template": "npm:^7.28.6" - "@babel/traverse": "npm:^7.28.6" - "@babel/types": "npm:^7.28.6" - checksum: 10c0/110674c7aa705dd8cc34f278628f540b37a4cb35e81fcaf557772e026a6fd95f571feb51a8efb146e4e91bbf567dc9dd7f534f78da80f55f4be2ec842f36b678 + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.28.3" + "@babel/types": "npm:^7.28.2" + checksum: 10c0/aecb8a457efd893dc3c6378ab9221d06197573fb2fe64afabe7923e7732607d59b07f4c5603909877d69bea3ee87025f4b1d8e4f0403ae0a07b14e9ce0bf355a languageName: node linkType: hard -"@babel/helpers@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/helpers@npm:7.28.6" +"@babel/helpers@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/helpers@npm:7.28.4" dependencies: - "@babel/template": "npm:^7.28.6" - "@babel/types": "npm:^7.28.6" - checksum: 10c0/c4a779c66396bb0cf619402d92f1610601ff3832db2d3b86b9c9dd10983bf79502270e97ac6d5280cea1b1a37de2f06ecbac561bd2271545270407fbe64027cb + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.4" + checksum: 10c0/aaa5fb8098926dfed5f223adf2c5e4c7fbba4b911b73dfec2d7d3083f8ba694d201a206db673da2d9b3ae8c01793e795767654558c450c8c14b4c2175b4fcb44 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/parser@npm:7.28.5" + dependencies: + "@babel/types": "npm:^7.28.5" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/5bbe48bf2c79594ac02b490a41ffde7ef5aa22a9a88ad6bcc78432a6ba8a9d638d531d868bd1f104633f1f6bba9905746e15185b8276a3756c42b765d131b1ef + languageName: node + linkType: hard + +"@babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": version: 7.29.0 resolution: "@babel/parser@npm:7.29.0" dependencies: @@ -364,6 +494,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/3cdc27c4e08a632a58e62c6017369401976edf1cd9ae73fd9f0d6770ddd9accf40b494db15b66bab8db2a8d5dc5bab5ca8c65b19b81fdca955cd8cbbe24daadb + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.6" @@ -456,6 +598,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-import-assertions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/06a954ee672f7a7c44d52b6e55598da43a7064e80df219765c51c37a0692641277e90411028f7cae4f4d1dedeed084f0c453576fa421c35a81f1603c5e3e0146 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-assertions@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-syntax-import-assertions@npm:7.28.6" @@ -467,7 +620,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.28.6": +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e66f7a761b8360419bbb93ab67d87c8a97465ef4637a985ff682ce7ba6918b34b29d81190204cf908d0933058ee7b42737423cd8a999546c21b3aabad4affa9a + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-syntax-import-attributes@npm:7.28.6" dependencies: @@ -500,14 +664,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.16.0, @babel/plugin-syntax-jsx@npm:^7.27.1, @babel/plugin-syntax-jsx@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-syntax-jsx@npm:7.28.6" +"@babel/plugin-syntax-jsx@npm:^7.16.0, @babel/plugin-syntax-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b98fc3cd75e4ca3d5ca1162f610c286e14ede1486e0d297c13a5eb0ac85680ac9656d17d348bddd9160a54d797a08cea5eaac02b9330ddebb7b26732b7b99fb5 + checksum: 10c0/bc5afe6a458d5f0492c02a54ad98c5756a0c13bd6d20609aae65acd560a9e141b0876da5f358dce34ea136f271c1016df58b461184d7ae9c4321e0f98588bc84 languageName: node linkType: hard @@ -599,14 +763,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" +"@babel/plugin-syntax-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b0c392a35624883ac480277401ac7d92d8646b66e33639f5d350de7a6723924265985ae11ab9ebd551740ded261c443eaa9a87ea19def9763ca1e0d78c97dea8 + checksum: 10c0/11589b4c89c66ef02d57bf56c6246267851ec0c361f58929327dc3e070b0dab644be625bbe7fb4c4df30c3634bfdfe31244e1f517be397d2def1487dbbe3c37d languageName: node linkType: hard @@ -633,6 +797,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-generator-functions@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-remap-async-to-generator": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/739d577e649d7d7b9845dc309e132964327ab3eaea43ad04d04a7dcb977c63f9aa9a423d1ca39baf10939128d02f52e6fda39c834fb9f1753785b1497e72c4dc + languageName: node + linkType: hard + "@babel/plugin-transform-async-generator-functions@npm:^7.29.0": version: 7.29.0 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.29.0" @@ -646,6 +823,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-remap-async-to-generator": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e76b1f6f9c3bbf72e17d7639406d47f09481806de4db99a8de375a0bb40957ea309b20aa705f0c25ab1d7c845e3f365af67eafa368034521151a0e352a03ef2f + languageName: node + linkType: hard + "@babel/plugin-transform-async-to-generator@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-async-to-generator@npm:7.28.6" @@ -670,6 +860,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoping@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-block-scoping@npm:7.28.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6b098887b375c23813ccee7a00179501fc5f709b4ee5a4b2a5c5c9ef3b44cee49e240214b1a9b4ad2bd1911fab3335eac2f0a3c5f014938a1b61bec84cec4845 + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoping@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-block-scoping@npm:7.28.6" @@ -681,6 +882,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cc0662633c0fe6df95819fef223506ddf26c369c8d64ab21a728d9007ec866bf9436a253909819216c24a82186b6ccbc1ec94d7aaf3f82df227c7c02fa6a704b + languageName: node + linkType: hard + "@babel/plugin-transform-class-properties@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-class-properties@npm:7.28.6" @@ -693,6 +906,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-static-block@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.28.3" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 10c0/8c922a64f6f5b359f7515c89ef0037bad583b4484dfebc1f6bc1cf13462547aaceb19788827c57ec9a2d62495f34c4b471ca636bf61af00fdaea5e9642c82b60 + languageName: node + linkType: hard + "@babel/plugin-transform-class-static-block@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-class-static-block@npm:7.28.6" @@ -705,6 +930,22 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-classes@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/plugin-transform-classes@npm:7.28.4" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/76687ed37216ff012c599870dc00183fb716f22e1a02fe9481943664c0e4d0d88c3da347dc3fe290d4728f4d47cd594ffa621d23845e2bb8ab446e586308e066 + languageName: node + linkType: hard + "@babel/plugin-transform-classes@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-classes@npm:7.28.6" @@ -721,6 +962,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-computed-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/template": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e09a12f8c8ae0e6a6144c102956947b4ec05f6c844169121d0ec4529c2d30ad1dc59fee67736193b87a402f44552c888a519a680a31853bdb4d34788c28af3b0 + languageName: node + linkType: hard + "@babel/plugin-transform-computed-properties@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-computed-properties@npm:7.28.6" @@ -733,7 +986,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.28.5": +"@babel/plugin-transform-destructuring@npm:^7.28.0, @babel/plugin-transform-destructuring@npm:^7.28.5": version: 7.28.5 resolution: "@babel/plugin-transform-destructuring@npm:7.28.5" dependencies: @@ -745,6 +998,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-dotall-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f9caddfad9a551b4dabe0dcb7c040f458fbaaa7bbb44200c20198b32c8259be8e050e58d2c853fdac901a4cfe490b86aa857036d8d461b192dd010d0e242dedb + languageName: node + linkType: hard + "@babel/plugin-transform-dotall-regex@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-dotall-regex@npm:7.28.6" @@ -768,6 +1033,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/121502a252b3206913e1e990a47fea34397b4cbf7804d4cd872d45961bc45b603423f60ca87f3a3023a62528f5feb475ac1c9ec76096899ec182fcb135eba375 + languageName: node + linkType: hard + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.29.0": version: 7.29.0 resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.29.0" @@ -791,6 +1068,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3baa706af3112adf2ae0c7ec0dc61b63dd02695eb5582f3c3a2b2d05399c6aa7756f55e7bbbd5412e613a6ba1dd6b6736904074b4d7ebd6b45a1e3f9145e4094 + languageName: node + linkType: hard + "@babel/plugin-transform-explicit-resource-management@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.6" @@ -803,6 +1092,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-exponentiation-operator@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/006566e003c2a8175346cc4b3260fcd9f719b912ceae8a4e930ce02ee3cf0b2841d5c21795ba71790871783d3c0c1c3d22ce441b8819c37975844bfba027d3f7 + languageName: node + linkType: hard + "@babel/plugin-transform-exponentiation-operator@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.6" @@ -850,6 +1150,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-json-strings@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2379714aca025516452a7c1afa1ca42a22b9b51a5050a653cc6198a51665ab82bdecf36106d32d731512706a1e373c5637f5ff635737319aa42f3827da2326d6 + languageName: node + linkType: hard + "@babel/plugin-transform-json-strings@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-json-strings@npm:7.28.6" @@ -872,6 +1183,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-logical-assignment-operators@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/fba4faa96d86fa745b0539bb631deee3f2296f0643c087a50ad0fac2e5f0a787fa885e9bdd90ae3e7832803f3c08e7cd3f1e830e7079dbdc023704923589bb23 + languageName: node + linkType: hard + "@babel/plugin-transform-logical-assignment-operators@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.6" @@ -906,7 +1228,19 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.27.1, @babel/plugin-transform-modules-commonjs@npm:^7.28.6": +"@babel/plugin-transform-modules-commonjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4def972dcd23375a266ea1189115a4ff61744b2c9366fc1de648b3fab2c650faf1a94092de93a33ff18858d2e6c4dddeeee5384cb42ba0129baeab01a5cdf1e2 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.28.6" dependencies: @@ -918,6 +1252,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-systemjs@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.28.5" + dependencies: + "@babel/helper-module-transforms": "npm:^7.28.3" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" + "@babel/traverse": "npm:^7.28.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7e8c0bcff79689702b974f6a0fedb5d0c6eeb5a5e3384deb7028e7cfe92a5242cc80e981e9c1817aad29f2ecc01841753365dd38d877aa0b91737ceec2acfd07 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-systemjs@npm:^7.29.0": version: 7.29.0 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.29.0" @@ -944,6 +1292,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/8eaa8c9aee00a00f3bd8bd8b561d3f569644d98cb2cfe3026d7398aabf9b29afd62f24f142b4112fa1f572d9b0e1928291b099cde59f56d6b59f4d565e58abf2 + languageName: node + linkType: hard + "@babel/plugin-transform-named-capturing-groups-regex@npm:^7.29.0": version: 7.29.0 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.29.0" @@ -967,6 +1327,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a435fc03aaa65c6ef8e99b2d61af0994eb5cdd4a28562d78c3b0b0228ca7e501aa255e1dff091a6996d7d3ea808eb5a65fd50ecd28dfb10687a8a1095dcadc7a + languageName: node + linkType: hard + "@babel/plugin-transform-nullish-coalescing-operator@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.28.6" @@ -978,6 +1349,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-numeric-separator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b72cbebbfe46fcf319504edc1cf59f3f41c992dd6840db766367f6a1d232cd2c52143c5eaf57e0316710bee251cae94be97c6d646b5022fcd9274ccb131b470c + languageName: node + linkType: hard + "@babel/plugin-transform-numeric-separator@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-numeric-separator@npm:7.28.6" @@ -989,6 +1371,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-rest-spread@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.0" + "@babel/plugin-transform-parameters": "npm:^7.27.7" + "@babel/traverse": "npm:^7.28.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/81725c8d6349957899975f3f789b1d4fb050ee8b04468ebfaccd5b59e0bda15cbfdef09aee8b4359f322b6715149d680361f11c1a420c4bdbac095537ecf7a90 + languageName: node + linkType: hard + "@babel/plugin-transform-object-rest-spread@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.6" @@ -1016,6 +1413,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-catch-binding@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/807a4330f1fac08e2682d57bc82e714868fc651c8876f9a8b3a3fd8f53c129e87371f8243e712ac7dae11e090b737a2219a02fe1b6459a29e664fa073c3277bb + languageName: node + linkType: hard + "@babel/plugin-transform-optional-catch-binding@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.28.6" @@ -1027,7 +1435,19 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.6": +"@babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/adf5f70b1f9eb0dd6ff3d159a714683af3c910775653e667bd9f864c3dc2dc9872aba95f6c1e5f2a9675067241942f4fd0d641147ef4bf2bd8bc15f1fa0f2ed5 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.6" dependencies: @@ -1050,6 +1470,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-methods@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/232bedfe9d28df215fb03cc7623bdde468b1246bdd6dc24465ff4bf9cc5f5a256ae33daea1fafa6cc59705e4d29da9024bb79baccaa5cd92811ac5db9b9244f2 + languageName: node + linkType: hard + "@babel/plugin-transform-private-methods@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-private-methods@npm:7.28.6" @@ -1062,6 +1494,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-property-in-object@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a8c4536273ca716dcc98e74ea25ca76431528554922f184392be3ddaf1761d4aa0e06f1311577755bd1613f7054fb51d29de2ada1130f743d329170a1aa1fe56 + languageName: node + linkType: hard + "@babel/plugin-transform-private-property-in-object@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-private-property-in-object@npm:7.28.6" @@ -1120,17 +1565,17 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx@npm:^7.27.1": - version: 7.28.6 - resolution: "@babel/plugin-transform-react-jsx@npm:7.28.6" + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-module-imports": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" - "@babel/plugin-syntax-jsx": "npm:^7.28.6" - "@babel/types": "npm:^7.28.6" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/cc75b9bb3997751df6cf7e86afe1b3fa33130b5031a412f6f12cc5faec083650fe852de0af5ec8f88d3588cc3428a3f514d3bc1f423d26f8b014cc5dff9f15a7 + checksum: 10c0/1a08637c39fc78c9760dd4a3ed363fdbc762994bf83ed7872ad5bda0232fcd0fc557332f2ce36b522c0226dfd9cc8faac6b88eddda535f24825198a689e571af languageName: node linkType: hard @@ -1146,6 +1591,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-regenerator@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5ad14647ffaac63c920e28df1b580ee2e932586bbdc71f61ec264398f68a5406c71a7f921de397a41b954a69316c5ab90e5d789ffa2bb34c5e6feb3727cfefb8 + languageName: node + linkType: hard + "@babel/plugin-transform-regenerator@npm:^7.29.0": version: 7.29.0 resolution: "@babel/plugin-transform-regenerator@npm:7.29.0" @@ -1157,6 +1613,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/31ae596ab56751cf43468a6c0a9d6bc3521d306d2bee9c6957cdb64bea53812ce24bd13a32f766150d62b737bca5b0650b2c62db379382fff0dccbf076055c33 + languageName: node + linkType: hard + "@babel/plugin-transform-regexp-modifiers@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.28.6" @@ -1181,18 +1649,18 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.28.3": - version: 7.29.0 - resolution: "@babel/plugin-transform-runtime@npm:7.29.0" + version: 7.28.5 + resolution: "@babel/plugin-transform-runtime@npm:7.28.5" dependencies: - "@babel/helper-module-imports": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" babel-plugin-polyfill-corejs2: "npm:^0.4.14" babel-plugin-polyfill-corejs3: "npm:^0.13.0" babel-plugin-polyfill-regenerator: "npm:^0.6.5" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/05a451cb96a1e6ccfdd1a123773208615cd14cb156aa0aa99a448d86e4326b36b9ab2be8267037bd27644a5918dac88378b791d020b3c08a4fd8f3415621a006 + checksum: 10c0/d20901d179a7044327dec7b37dd4fadbc4c1c0dc1cb6a3dd69e67166b43b06c262dd0f2e70aedf1c0dab42044c0c063468d99019ae1c9290312b6b8802c502f9 languageName: node linkType: hard @@ -1207,6 +1675,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-spread@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-spread@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b34fc58b33bd35b47d67416655c2cbc8578fbb3948b4592bc15eb6d8b4046986e25c06e3b9929460fa4ab08e9653582415e7ef8b87d265e1239251bdf5a4c162 + languageName: node + linkType: hard + "@babel/plugin-transform-spread@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-spread@npm:7.28.6" @@ -1253,17 +1733,17 @@ __metadata: linkType: hard "@babel/plugin-transform-typescript@npm:^7.28.5": - version: 7.28.6 - resolution: "@babel/plugin-transform-typescript@npm:7.28.6" + version: 7.28.5 + resolution: "@babel/plugin-transform-typescript@npm:7.28.5" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-create-class-features-plugin": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-create-class-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/plugin-syntax-typescript": "npm:^7.28.6" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/72dbfd3e5f71c4e30445e610758ec0eef65347fafd72bd46f4903733df0d537663a72a81c1626f213a0feab7afc68ba83f1648ffece888dd0868115c9cb748f6 + checksum: 10c0/09e574ba5462e56452b4ceecae65e53c8e697a2d3559ce5d210bed10ac28a18aa69377e7550c30520eb29b40c417ee61997d5d58112657f22983244b78915a7c languageName: node linkType: hard @@ -1278,6 +1758,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a332bc3cb3eeea67c47502bc52d13a0f8abae5a7bfcb08b93a8300ddaff8d9e1238f912969494c1b494c1898c6f19687054440706700b6d12cb0b90d88beb4d0 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-property-regex@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.28.6" @@ -1302,6 +1794,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/236645f4d0a1fba7c18dc8ffe3975933af93e478f2665650c2d91cf528cfa1587cde5cfe277e0e501fc03b5bf57638369575d6539cef478632fb93bd7d7d7178 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-sets-regex@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.28.6" @@ -1309,12 +1813,92 @@ __metadata: "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/c03c8818736b138db73d1f7a96fbfa22d1994639164d743f0f00e6383d3b7b3144d333de960ff4afad0bddd0baaac257295e3316969eba995b1b6a1b4dec933e + "@babel/core": ^7.0.0 + checksum: 10c0/c03c8818736b138db73d1f7a96fbfa22d1994639164d743f0f00e6383d3b7b3144d333de960ff4afad0bddd0baaac257295e3316969eba995b1b6a1b4dec933e + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.20.2": + version: 7.28.5 + resolution: "@babel/preset-env@npm:7.28.5" + dependencies: + "@babel/compat-data": "npm:^7.28.5" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.28.5" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.3" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" + "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" + "@babel/plugin-transform-async-generator-functions": "npm:^7.28.0" + "@babel/plugin-transform-async-to-generator": "npm:^7.27.1" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" + "@babel/plugin-transform-block-scoping": "npm:^7.28.5" + "@babel/plugin-transform-class-properties": "npm:^7.27.1" + "@babel/plugin-transform-class-static-block": "npm:^7.28.3" + "@babel/plugin-transform-classes": "npm:^7.28.4" + "@babel/plugin-transform-computed-properties": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.28.5" + "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" + "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.0" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.5" + "@babel/plugin-transform-export-namespace-from": "npm:^7.27.1" + "@babel/plugin-transform-for-of": "npm:^7.27.1" + "@babel/plugin-transform-function-name": "npm:^7.27.1" + "@babel/plugin-transform-json-strings": "npm:^7.27.1" + "@babel/plugin-transform-literals": "npm:^7.27.1" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.28.5" + "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" + "@babel/plugin-transform-modules-amd": "npm:^7.27.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-systemjs": "npm:^7.28.5" + "@babel/plugin-transform-modules-umd": "npm:^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-new-target": "npm:^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" + "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" + "@babel/plugin-transform-object-rest-spread": "npm:^7.28.4" + "@babel/plugin-transform-object-super": "npm:^7.27.1" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.28.5" + "@babel/plugin-transform-parameters": "npm:^7.27.7" + "@babel/plugin-transform-private-methods": "npm:^7.27.1" + "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" + "@babel/plugin-transform-property-literals": "npm:^7.27.1" + "@babel/plugin-transform-regenerator": "npm:^7.28.4" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" + "@babel/plugin-transform-reserved-words": "npm:^7.27.1" + "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" + "@babel/plugin-transform-spread": "npm:^7.27.1" + "@babel/plugin-transform-sticky-regex": "npm:^7.27.1" + "@babel/plugin-transform-template-literals": "npm:^7.27.1" + "@babel/plugin-transform-typeof-symbol": "npm:^7.27.1" + "@babel/plugin-transform-unicode-escapes": "npm:^7.27.1" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.27.1" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.14" + babel-plugin-polyfill-corejs3: "npm:^0.13.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.5" + core-js-compat: "npm:^3.43.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d1b730158de290f1c54ed7db0f4fed3f82db5f868ab0a4cb3fc2ea76ed683b986ae136f6e7eb0b44b91bc9a99039a2559851656b4fd50193af1a815a3e32e524 languageName: node linkType: hard -"@babel/preset-env@npm:^7.20.2, @babel/preset-env@npm:^7.29.0": +"@babel/preset-env@npm:^7.29.0": version: 7.29.0 resolution: "@babel/preset-env@npm:7.29.0" dependencies: @@ -1439,12 +2023,30 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.28.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.28.4 + resolution: "@babel/runtime@npm:7.28.4" + checksum: 10c0/792ce7af9750fb9b93879cc9d1db175701c4689da890e6ced242ea0207c9da411ccf16dc04e689cc01158b28d7898c40d75598f4559109f761c12ce01e959bf7 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.28.6": version: 7.28.6 resolution: "@babel/runtime@npm:7.28.6" checksum: 10c0/358cf2429992ac1c466df1a21c1601d595c46930a13c1d4662fde908d44ee78ec3c183aaff513ecb01ef8c55c3624afe0309eeeb34715672dbfadb7feedb2c0d languageName: node linkType: hard +"@babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/template@npm:7.27.2" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.2" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/ed9e9022651e463cc5f2cc21942f0e74544f1754d231add6348ff1b472985a3b3502041c0be62dc99ed2d12cfae0c51394bf827452b98a2f8769c03b87aadc81 + languageName: node + linkType: hard + "@babel/template@npm:^7.28.6": version: 7.28.6 resolution: "@babel/template@npm:7.28.6" @@ -1456,7 +2058,22 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.5, @babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/traverse@npm:7.28.5" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.28.5" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.28.5" + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.28.5" + debug: "npm:^4.3.1" + checksum: 10c0/f6c4a595993ae2b73f2d4cd9c062f2e232174d293edd4abe1d715bd6281da8d99e47c65857e8d0917d9384c65972f4acdebc6749a7c40a8fcc38b3c7fb3e706f + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": version: 7.29.0 resolution: "@babel/traverse@npm:7.29.0" dependencies: @@ -1471,7 +2088,17 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.5, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0, @babel/types@npm:^7.4.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.4.4": + version: 7.28.5 + resolution: "@babel/types@npm:7.28.5" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" + checksum: 10c0/a5a483d2100befbf125793640dec26b90b95fd233a94c19573325898a5ce1e52cdfa96e495c7dcc31b5eca5b66ce3e6d4a0f5a4a62daec271455959f208ab08a + languageName: node + linkType: hard + +"@babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": version: 7.29.0 resolution: "@babel/types@npm:7.29.0" dependencies: @@ -1501,14 +2128,14 @@ __metadata: linkType: hard "@codemirror/commands@npm:^6.0.0, @codemirror/commands@npm:^6.7.1": - version: 6.10.1 - resolution: "@codemirror/commands@npm:6.10.1" + version: 6.10.0 + resolution: "@codemirror/commands@npm:6.10.0" dependencies: "@codemirror/language": "npm:^6.0.0" "@codemirror/state": "npm:^6.4.0" "@codemirror/view": "npm:^6.27.0" "@lezer/common": "npm:^1.1.0" - checksum: 10c0/1841d8ad6751f0d10d10200e81333c5c9b0d6afb55692e41df85992a3737abc8c2ee97e14816ce624276381fbb0261e7aaf8474e170b74f796c3ba62500be3da + checksum: 10c0/5122c026ef3578049a9d166a0afe9cd66abcc20fd5a2a084c97a60b519db6f38e3b8f05af813e5bdbbf249d3a95dce07a52cd30f77083da4a2da660c1b424a88 languageName: node linkType: hard @@ -1537,59 +2164,59 @@ __metadata: linkType: hard "@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.10.3": - version: 6.12.1 - resolution: "@codemirror/language@npm:6.12.1" + version: 6.11.3 + resolution: "@codemirror/language@npm:6.11.3" dependencies: "@codemirror/state": "npm:^6.0.0" "@codemirror/view": "npm:^6.23.0" - "@lezer/common": "npm:^1.5.0" + "@lezer/common": "npm:^1.1.0" "@lezer/highlight": "npm:^1.0.0" "@lezer/lr": "npm:^1.0.0" style-mod: "npm:^4.0.0" - checksum: 10c0/d37e526a839f571f767372c49e28649c4e79a539c73845a74117ee408ad31c29d60a32b5e1bad439637b1456d18154d672eb225e9b4482d3e00eca150461bc6a + checksum: 10c0/0cbc2a98bd9e94e8e186af30613741a553fc45479e3875c79bddc32340d4d75ecc36229c66e2ee5fcffbc8fdd49b442e43847799d1d68651e3b4f8ec20d3d092 languageName: node linkType: hard "@codemirror/lint@npm:^6.0.0, @codemirror/lint@npm:^6.8.2": - version: 6.9.3 - resolution: "@codemirror/lint@npm:6.9.3" + version: 6.9.2 + resolution: "@codemirror/lint@npm:6.9.2" dependencies: "@codemirror/state": "npm:^6.0.0" "@codemirror/view": "npm:^6.35.0" crelt: "npm:^1.0.5" - checksum: 10c0/729af1fc39ced59edb5ad73ef95a71df8e4a7ed7bccac53bac3e6232a4f018f5d8b2b1c320eb014f5ba07a1a0e53fbc094907679e017dc5f3b5707765b2c6541 + checksum: 10c0/f938391b6d216784d3196e9494c7d492d5524109fa36566708fba73f48e69d5d18332f7e9993f472eb34fe4271727b5636b6390abb804cae7ef70120427fece2 languageName: node linkType: hard "@codemirror/search@npm:^6.0.0, @codemirror/search@npm:^6.5.6": - version: 6.6.0 - resolution: "@codemirror/search@npm:6.6.0" + version: 6.5.11 + resolution: "@codemirror/search@npm:6.5.11" dependencies: "@codemirror/state": "npm:^6.0.0" - "@codemirror/view": "npm:^6.37.0" + "@codemirror/view": "npm:^6.0.0" crelt: "npm:^1.0.5" - checksum: 10c0/dacb6dbf94dbc4513b681ea2ea215b5771b478bc940c88e52976b7981dc135b3f17cfcb1e3e929579078f334b42e91bdfee89b9ec874638ddaf82f87cefa0de2 + checksum: 10c0/8f25647ceb9a255a6e5797c20ec787587537e8496f651d8815d3f8f6c9fc5bf586b6552dadfcc7ad24364c659fcd12315c5fa235a098ba15840bb76bed35cc09 languageName: node linkType: hard "@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.4.0, @codemirror/state@npm:^6.4.1, @codemirror/state@npm:^6.5.0": - version: 6.5.4 - resolution: "@codemirror/state@npm:6.5.4" + version: 6.5.2 + resolution: "@codemirror/state@npm:6.5.2" dependencies: "@marijn/find-cluster-break": "npm:^1.0.0" - checksum: 10c0/8f40e1a22b84752fc44637e586cb3d804f775c0cf9c8083a79eed5cb18fbdfb30b83c112d8b6d819046526d1f9e49bf1198bdca4c4c3427bdf2c657a96df7adf + checksum: 10c0/1ef773394e32c077a8cfc1ec6d881aefb1918876f82161748e505c38d143aa1c6893c314cfec91097d28f704ec07b2a6c6b75abd435086208974256dee997282 languageName: node linkType: hard -"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0, @codemirror/view@npm:^6.34.1, @codemirror/view@npm:^6.35.0, @codemirror/view@npm:^6.37.0": - version: 6.39.12 - resolution: "@codemirror/view@npm:6.39.12" +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0, @codemirror/view@npm:^6.34.1, @codemirror/view@npm:^6.35.0": + version: 6.39.4 + resolution: "@codemirror/view@npm:6.39.4" dependencies: "@codemirror/state": "npm:^6.5.0" crelt: "npm:^1.0.6" style-mod: "npm:^4.1.0" w3c-keyname: "npm:^2.2.4" - checksum: 10c0/b5584fbe3f642fb3c5b35a7e1e36be9432b2967b5a937d31f89d311e83b3f9190c2bbdacfedeb6c10b294b2d9d8c3c54d49eb23790e5ff9193b438e6d21f1a2b + checksum: 10c0/aa17cfbfb0714243cccc9e970f4f382c3e747435f2fc63d40125370379227436fb529473dde856a276b8b7df98f83c55f4cc5cd0c24a56335f24233103b7dfd0 languageName: node linkType: hard @@ -1675,21 +2302,21 @@ __metadata: linkType: hard "@emnapi/core@npm:^1.4.3": - version: 1.8.1 - resolution: "@emnapi/core@npm:1.8.1" + version: 1.7.1 + resolution: "@emnapi/core@npm:1.7.1" dependencies: "@emnapi/wasi-threads": "npm:1.1.0" tslib: "npm:^2.4.0" - checksum: 10c0/2c242f4b49779bac403e1cbcc98edacdb1c8ad36562408ba9a20663824669e930bc8493be46a2522d9dc946b8d96cd7073970bae914928c7671b5221c85b432e + checksum: 10c0/f3740be23440b439333e3ae3832163f60c96c4e35337f3220ceba88f36ee89a57a871d27c94eb7a9ff98a09911ed9a2089e477ab549f4d30029f8b907f84a351 languageName: node linkType: hard "@emnapi/runtime@npm:^1.4.3, @emnapi/runtime@npm:^1.7.0": - version: 1.8.1 - resolution: "@emnapi/runtime@npm:1.8.1" + version: 1.7.1 + resolution: "@emnapi/runtime@npm:1.7.1" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/f4929d75e37aafb24da77d2f58816761fe3f826aad2e37fa6d4421dac9060cbd5098eea1ac3c9ecc4526b89deb58153852fa432f87021dc57863f2ff726d713f + checksum: 10c0/26b851cd3e93877d8732a985a2ebf5152325bbacc6204ef5336a47359dedcc23faeb08cdfcb8bb389b5401b3e894b882bc1a1e55b4b7c1ed1e67c991a760ddd5 languageName: node linkType: hard @@ -1855,7 +2482,18 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": +"@eslint-community/eslint-utils@npm:^4.7.0, @eslint-community/eslint-utils@npm:^4.8.0": + version: 4.9.0 + resolution: "@eslint-community/eslint-utils@npm:4.9.0" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.9.1": version: 4.9.1 resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: @@ -1943,22 +2581,22 @@ __metadata: languageName: node linkType: hard -"@floating-ui/core@npm:^1.7.4": - version: 1.7.4 - resolution: "@floating-ui/core@npm:1.7.4" +"@floating-ui/core@npm:^1.7.3": + version: 1.7.3 + resolution: "@floating-ui/core@npm:1.7.3" dependencies: "@floating-ui/utils": "npm:^0.2.10" - checksum: 10c0/b1175d92c0edbd0053c4ba014ad1f798ccc107de87a43a099e97af6265610cc25ef600f2b15d3763d39a79f7d36db11fcb84d0c28027beb3317e13a7ba197516 + checksum: 10c0/edfc23800122d81df0df0fb780b7328ae6c5f00efbb55bd48ea340f4af8c5b3b121ceb4bb81220966ab0f87b443204d37105abdd93d94846468be3243984144c languageName: node linkType: hard "@floating-ui/dom@npm:^1.0.1": - version: 1.7.5 - resolution: "@floating-ui/dom@npm:1.7.5" + version: 1.7.4 + resolution: "@floating-ui/dom@npm:1.7.4" dependencies: - "@floating-ui/core": "npm:^1.7.4" + "@floating-ui/core": "npm:^1.7.3" "@floating-ui/utils": "npm:^0.2.10" - checksum: 10c0/94bd262127fbf1177e542f4908cb07c17392782b1ca0ab9f2dfd7e102cabcc77b4de807847304dcb4c864d4b48e8ba292b27cdcfaca3ad4e3525ab397b766a3a + checksum: 10c0/da6166c25f9b0729caa9f498685a73a0e28251613b35d27db8de8014bc9d045158a23c092b405321a3d67c2064909b6e2a7e6c1c9cc0f62967dca5779f5aef30 languageName: node linkType: hard @@ -2282,12 +2920,12 @@ __metadata: languageName: node linkType: hard -"@isaacs/brace-expansion@npm:^5.0.1": - version: 5.0.1 - resolution: "@isaacs/brace-expansion@npm:5.0.1" +"@isaacs/brace-expansion@npm:^5.0.0": + version: 5.0.0 + resolution: "@isaacs/brace-expansion@npm:5.0.0" dependencies: "@isaacs/balanced-match": "npm:^4.0.1" - checksum: 10c0/e5d67c7bbf1f17b88132a35bc638af306d48acbb72810d48fa6e6edd8ab375854773108e8bf70f021f7ef6a8273455a6d1f0c3b5aa2aff06ce7894049ab77fb8 + checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 languageName: node linkType: hard @@ -2716,10 +3354,10 @@ __metadata: languageName: node linkType: hard -"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.1.0, @lezer/common@npm:^1.2.0, @lezer/common@npm:^1.3.0, @lezer/common@npm:^1.5.0": - version: 1.5.1 - resolution: "@lezer/common@npm:1.5.1" - checksum: 10c0/49baefdfc6f2244ad4f7d4a318149729fbecfd634fe1f7769883b5098ab9b35429140851e524c3a97614594004d8a3ad08fdd91221a63438be8c31ff2431fb54 +"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.1.0, @lezer/common@npm:^1.2.0, @lezer/common@npm:^1.3.0": + version: 1.4.0 + resolution: "@lezer/common@npm:1.4.0" + checksum: 10c0/6b7a0b5f9b969d5eb87b1a6407abf90809ed4cb290afa4ce0fd412102176144b1d01748f243b27fef1300e0444eb690a519395388cda936fbbb536fd0abb8ebc languageName: node linkType: hard @@ -2744,11 +3382,11 @@ __metadata: linkType: hard "@lezer/lr@npm:^1.0.0": - version: 1.4.8 - resolution: "@lezer/lr@npm:1.4.8" + version: 1.4.5 + resolution: "@lezer/lr@npm:1.4.5" dependencies: "@lezer/common": "npm:^1.0.0" - checksum: 10c0/8bd2228a316a5ef8da01908e3e22aca95fa9695211ffe56f3e8be756b37d0810d5aa91fbbdd274b198a343051d8637e130e26f51161161f089244af242b653c9 + checksum: 10c0/06a6fcba5093eb654303f0bcca5009c404fe865d19c5e302e095c3d317ca50ceafd5753bb05aa26403996fc039dffa12288154fb9e201f49a94dea798d0cb6bc languageName: node linkType: hard @@ -2759,38 +3397,38 @@ __metadata: languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^7.3.7": - version: 7.3.7 - resolution: "@mui/core-downloads-tracker@npm:7.3.7" - checksum: 10c0/a1352bb47e1d9dc8dad3c33f7f2f8e544806d7a2de40049a3f24cbde8c7a101b6d54fcd251bd0051ab55303ffef1355eb567c8cf5447918797ea0ca920b1a097 +"@mui/core-downloads-tracker@npm:^7.3.8": + version: 7.3.8 + resolution: "@mui/core-downloads-tracker@npm:7.3.8" + checksum: 10c0/bbce4375e47b8ef46af762d8837e006ccca26cc56c0efb34ac497a090e7e9fff868ea2dd423d3c28c4cf51ff9e4fbbb024d3afe1d19849533b06e6924fcfc4e9 languageName: node linkType: hard "@mui/icons-material@npm:^7.3.6": - version: 7.3.7 - resolution: "@mui/icons-material@npm:7.3.7" + version: 7.3.6 + resolution: "@mui/icons-material@npm:7.3.6" dependencies: "@babel/runtime": "npm:^7.28.4" peerDependencies: - "@mui/material": ^7.3.7 + "@mui/material": ^7.3.6 "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/902a2a942539ac577c0cc9dfce09bed383362eb9e68c8dc6dff179c377ec685b2ae7032baf9ef04ba4ab595302a13455ae2c24ea22fd0ed28768c3b20c62b210 + checksum: 10c0/ec0286beb22a7070566d6242410b75f4106e15b2ead7b5d5115f00e1c7fc70d44d47289a1d27059781d56907cf291e53261868dafd7dba2843245abe18799d65 languageName: node linkType: hard "@mui/material@npm:^7.3.7": - version: 7.3.7 - resolution: "@mui/material@npm:7.3.7" - dependencies: - "@babel/runtime": "npm:^7.28.4" - "@mui/core-downloads-tracker": "npm:^7.3.7" - "@mui/system": "npm:^7.3.7" - "@mui/types": "npm:^7.4.10" - "@mui/utils": "npm:^7.3.7" + version: 7.3.8 + resolution: "@mui/material@npm:7.3.8" + dependencies: + "@babel/runtime": "npm:^7.28.6" + "@mui/core-downloads-tracker": "npm:^7.3.8" + "@mui/system": "npm:^7.3.8" + "@mui/types": "npm:^7.4.11" + "@mui/utils": "npm:^7.3.8" "@popperjs/core": "npm:^2.11.8" "@types/react-transition-group": "npm:^4.4.12" clsx: "npm:^2.1.1" @@ -2801,7 +3439,7 @@ __metadata: peerDependencies: "@emotion/react": ^11.5.0 "@emotion/styled": ^11.3.0 - "@mui/material-pigment-css": ^7.3.7 + "@mui/material-pigment-css": ^7.3.8 "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -2814,16 +3452,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/e9355505d34cea112f9aef2498af415666b12a78985ec5a936918d14202ef10e7da7cce9d5480dca86af25e307424d93e6d72b04c78446b3fd70536cc5559c62 + checksum: 10c0/065b97627cfdb7dd6237ff4437639c5d8df610e844bfa6f8c84e647d1f7bb0157cfd7b1938cf371d2b281d8bf85580c8b405638d741aae797ff64ee3b98943fc languageName: node linkType: hard -"@mui/private-theming@npm:^7.3.7": - version: 7.3.7 - resolution: "@mui/private-theming@npm:7.3.7" +"@mui/private-theming@npm:^7.3.8": + version: 7.3.8 + resolution: "@mui/private-theming@npm:7.3.8" dependencies: - "@babel/runtime": "npm:^7.28.4" - "@mui/utils": "npm:^7.3.7" + "@babel/runtime": "npm:^7.28.6" + "@mui/utils": "npm:^7.3.8" prop-types: "npm:^15.8.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -2831,15 +3469,15 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/aa848bea257f0c4a6a8784ab71aa7189aa31a2a98f02628c783c956a25e759be71a65d7809688c6ac1835504d21e798123aeb3eeaedea1473a16337e60a5d50c + checksum: 10c0/4e7f1528dcaf00a036ee03a430569d66fe66313c2e11d6d70df705a54cb15e88af00e69ef55de2182ea86966c66d9f9f7e4d389059a8213901159fb03ecd679d languageName: node linkType: hard -"@mui/styled-engine@npm:^7.3.7": - version: 7.3.7 - resolution: "@mui/styled-engine@npm:7.3.7" +"@mui/styled-engine@npm:^7.3.8": + version: 7.3.8 + resolution: "@mui/styled-engine@npm:7.3.8" dependencies: - "@babel/runtime": "npm:^7.28.4" + "@babel/runtime": "npm:^7.28.6" "@emotion/cache": "npm:^11.14.0" "@emotion/serialize": "npm:^1.3.3" "@emotion/sheet": "npm:^1.4.0" @@ -2854,19 +3492,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 10c0/7350f45ea8314643ffc95430b9cc980d0a88d3144629af1deb2842c9aea62d34d8736dfa8197bb51e28785e56144b252fdbb7904c7800d69c547f479bca87805 + checksum: 10c0/44defb63e5c489943c36c6b0a8551093389a65429c9c2cf21fe5f3fb338962a45f5fd57300a64c965de43be755424b65aef762944a55e2de862018d99b82f6a8 languageName: node linkType: hard -"@mui/system@npm:^7.3.7": - version: 7.3.7 - resolution: "@mui/system@npm:7.3.7" +"@mui/system@npm:^7.3.8": + version: 7.3.8 + resolution: "@mui/system@npm:7.3.8" dependencies: - "@babel/runtime": "npm:^7.28.4" - "@mui/private-theming": "npm:^7.3.7" - "@mui/styled-engine": "npm:^7.3.7" - "@mui/types": "npm:^7.4.10" - "@mui/utils": "npm:^7.3.7" + "@babel/runtime": "npm:^7.28.6" + "@mui/private-theming": "npm:^7.3.8" + "@mui/styled-engine": "npm:^7.3.8" + "@mui/types": "npm:^7.4.11" + "@mui/utils": "npm:^7.3.8" clsx: "npm:^2.1.1" csstype: "npm:^3.2.3" prop-types: "npm:^15.8.1" @@ -2882,13 +3520,27 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/0b020d39812431e29ac20ebc0ce1317750d108633237a27f6fb595824eb1f979ffd283e8a89f2487ea1d658aee18c23d68226f6efa2bdfd621493a4aabcf1e74 + checksum: 10c0/e584af421b553c1ab11783a769c26ca38f2415d71ffd0fc7296e299e47ab0650d35c6be408f8486239b1eab78481af8a663615c758f96bc1e8290482afcc0c22 + languageName: node + linkType: hard + +"@mui/types@npm:^7.4.11": + version: 7.4.11 + resolution: "@mui/types@npm:7.4.11" + dependencies: + "@babel/runtime": "npm:^7.28.6" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/c7e73d3fbcd3d8fa55ef172faa58d5b8aa64d1faf26b2f4a13871444dd0e57577567c9eefc4a14de0bc0644f7c325302942496a41b165007defed24548e7da04 languageName: node linkType: hard -"@mui/types@npm:^7.4.10": - version: 7.4.10 - resolution: "@mui/types@npm:7.4.10" +"@mui/types@npm:^7.4.9": + version: 7.4.9 + resolution: "@mui/types@npm:7.4.9" dependencies: "@babel/runtime": "npm:^7.28.4" peerDependencies: @@ -2896,16 +3548,36 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/2e1e807795dcb6f5bdb62eb49068a7f4414299c62f55ceaaa05925a1d043799216150873c00c02f086fd631f7171c97ea416dc66c099c98649503ee3046dab3d + checksum: 10c0/ed371a08af12a712fb5985547162b99fc58b5d451ea1101927a6d2f2c005087eb25603553d2c4242ee3a34359333b917432052148c93ed7dded5d80042fec504 languageName: node linkType: hard -"@mui/utils@npm:^7.3.5, @mui/utils@npm:^7.3.7": - version: 7.3.7 - resolution: "@mui/utils@npm:7.3.7" +"@mui/utils@npm:^7.3.5": + version: 7.3.6 + resolution: "@mui/utils@npm:7.3.6" dependencies: "@babel/runtime": "npm:^7.28.4" - "@mui/types": "npm:^7.4.10" + "@mui/types": "npm:^7.4.9" + "@types/prop-types": "npm:^15.7.15" + clsx: "npm:^2.1.1" + prop-types: "npm:^15.8.1" + react-is: "npm:^19.2.0" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10c0/0af5f65a022028fa25b6a331443c44fdfd9060355495fd10849807f7aee9c9a4f776592cfe427b3c478f4ee4bf96349d9e84d1a035d5e31ba84d821748b4f185 + languageName: node + linkType: hard + +"@mui/utils@npm:^7.3.8": + version: 7.3.8 + resolution: "@mui/utils@npm:7.3.8" + dependencies: + "@babel/runtime": "npm:^7.28.6" + "@mui/types": "npm:^7.4.11" "@types/prop-types": "npm:^15.7.15" clsx: "npm:^2.1.1" prop-types: "npm:^15.8.1" @@ -2916,7 +3588,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/2732a01a24968c8fe73b1cf3c7afabffd8a5f13556f3f8078529eaf09d855a05cb7905421b733cb671f771406eb857f5dddb3b82166ecc2a3d0ab1a987954d08 + checksum: 10c0/369e53295f8cd75d7ea3ef8d1c532cae6a34b7e7d834b2333933f52db04bf2aa3b8a808bdb864ed69b6cc56b1395337e93952e0cd06da872dfd867f1bb53dd34 languageName: node linkType: hard @@ -3217,40 +3889,40 @@ __metadata: linkType: hard "@rc-component/motion@npm:^1.1.3, @rc-component/motion@npm:^1.1.4": - version: 1.2.0 - resolution: "@rc-component/motion@npm:1.2.0" + version: 1.1.6 + resolution: "@rc-component/motion@npm:1.1.6" dependencies: "@rc-component/util": "npm:^1.2.0" clsx: "npm:^2.1.1" peerDependencies: react: ">=16.9.0" react-dom: ">=16.9.0" - checksum: 10c0/f94734cc4d9386ea3211c83c0fff95efcec396b568082dd1c90c40d6663dab2c83f31929644aa197fb84db3418c15703be9b57402a5f384e860c64dc9322a301 + checksum: 10c0/f4bf999d1f622784b609e3c900049b1d0664d22bf4b6af819c604152484a8a9266290d4db513704ea2c9ef18b006fb36abc91c06683a167e27f92ee410b32616 languageName: node linkType: hard -"@rc-component/portal@npm:^2.2.0": - version: 2.2.0 - resolution: "@rc-component/portal@npm:2.2.0" +"@rc-component/portal@npm:^2.0.0": + version: 2.0.1 + resolution: "@rc-component/portal@npm:2.0.1" dependencies: "@rc-component/util": "npm:^1.2.1" clsx: "npm:^2.1.1" peerDependencies: react: ">=18.0.0" react-dom: ">=18.0.0" - checksum: 10c0/5b6441536b4b6a2f7390b8f4ea101fa78ef483564a7ac533c146dac896cbdd27665be6314c92366d0750720fe163bf9fc37db789ef4c879772cfb965fd4f6901 + checksum: 10c0/8fb15c84f5fe35a31a2cdec91fd0971d9a3f56f6bafd364564d7351cf1fc49b21c7400ba565ec6730046bd02c9537b33b6fd23abc30391e7ff46282ade5bbff8 languageName: node linkType: hard -"@rc-component/resize-observer@npm:^1.0.0, @rc-component/resize-observer@npm:^1.1.1": - version: 1.1.1 - resolution: "@rc-component/resize-observer@npm:1.1.1" +"@rc-component/resize-observer@npm:^1.0.0": + version: 1.0.1 + resolution: "@rc-component/resize-observer@npm:1.0.1" dependencies: "@rc-component/util": "npm:^1.2.0" peerDependencies: react: ">=16.9.0" react-dom: ">=16.9.0" - checksum: 10c0/8b5931475f887497020e4c25f4eff9c4d591274b43e267ea67d361160783b29d3e35654ac79fa4e47be9532cd25186f45a40655ddb5f1412ecbe9c3afb714cd0 + checksum: 10c0/5053d413ffa65badd3f2d06c54dc47db67d8b573d589bfce90d5474d32b1d80bb05b73809a26f771ed94a6a29e02754fa177c67e000d3126d10e41e98965c61b languageName: node linkType: hard @@ -3272,31 +3944,31 @@ __metadata: linkType: hard "@rc-component/trigger@npm:^3.0.0": - version: 3.9.0 - resolution: "@rc-component/trigger@npm:3.9.0" + version: 3.7.1 + resolution: "@rc-component/trigger@npm:3.7.1" dependencies: "@rc-component/motion": "npm:^1.1.4" - "@rc-component/portal": "npm:^2.2.0" - "@rc-component/resize-observer": "npm:^1.1.1" + "@rc-component/portal": "npm:^2.0.0" + "@rc-component/resize-observer": "npm:^1.0.0" "@rc-component/util": "npm:^1.2.1" clsx: "npm:^2.1.1" peerDependencies: react: ">=18.0.0" react-dom: ">=18.0.0" - checksum: 10c0/3e7edd6328c2b04b2a81328fbbf3dd11d39b8000b62b9574f0f907db3eff450f96a3a87f46808cbab7aa77b35e1fbf0493bc9cdf920e9c01326cfc068f03c0da + checksum: 10c0/b4caab7be8a66bdea81b10b318f0d7f2dc9143d27313916b08ef716aa261a0a8e23eb1b2e861da5907c4aa3f2f4c8383be265231be12e2b7f9eb2bd6d10b8d28 languageName: node linkType: hard "@rc-component/util@npm:^1.2.0, @rc-component/util@npm:^1.2.1, @rc-component/util@npm:^1.3.0": - version: 1.9.0 - resolution: "@rc-component/util@npm:1.9.0" + version: 1.6.0 + resolution: "@rc-component/util@npm:1.6.0" dependencies: is-mobile: "npm:^5.0.0" react-is: "npm:^18.2.0" peerDependencies: react: ">=18.0.0" react-dom: ">=18.0.0" - checksum: 10c0/0c004b82cdd45d624e5da315d4e534b739b04af4d5b070281ed13434d5fa09c40b89d06e8c4b97d262682a0f5dadcd2edfa2467498e0476eb6134bcbc391d4bb + checksum: 10c0/d1ad7158abc4c38456192f6c236bcfc09c1563fe2a65497cee6816035bb917b373124d16e720d8c91d959366fd06897a7361b313a1610345d0f7286aac38e356 languageName: node linkType: hard @@ -3375,9 +4047,9 @@ __metadata: linkType: hard "@sinclair/typebox@npm:^0.34.0": - version: 0.34.48 - resolution: "@sinclair/typebox@npm:0.34.48" - checksum: 10c0/e09f26d8ad471a07ee64004eea7c4ec185349a1f61c03e87e71ea33cbe98e97959940076c2e52968a955ffd4c215bf5ba7035e77079511aac7935f25e989e29d + version: 0.34.41 + resolution: "@sinclair/typebox@npm:0.34.41" + checksum: 10c0/0fb61fc2f90c25e30b19b0096eb8ab3ccef401d3e2acfce42168ff0ee877ba5981c8243fa6b1035ac756cde95316724e978b2837dd642d7e4e095de03a999c90 languageName: node linkType: hard @@ -3605,13 +4277,13 @@ __metadata: linkType: hard "@tanstack/react-query@npm:^5.90.19": - version: 5.90.20 - resolution: "@tanstack/react-query@npm:5.90.20" + version: 5.90.21 + resolution: "@tanstack/react-query@npm:5.90.21" dependencies: "@tanstack/query-core": "npm:5.90.20" peerDependencies: react: ^18 || ^19 - checksum: 10c0/a8da6455d02ec769afc9ad528ec7b576d0becedfb5349e32592b9991a3c71a162f7115c054116d0101b55a473c689c06f8b03a7f56a9904f4329f75370e5a3f4 + checksum: 10c0/e8994c57f6ceb2c886a4d6486a8c6a3f89bc6b1220de3e732448d7fcbeb386e9358f03c73804de72004c6ac2668d0bf1b44cedbb273d3e4b33afcbaee7b7d24d languageName: node linkType: hard @@ -3628,14 +4300,14 @@ __metadata: linkType: hard "@tanstack/react-virtual@npm:^3.13.13": - version: 3.13.18 - resolution: "@tanstack/react-virtual@npm:3.13.18" + version: 3.13.13 + resolution: "@tanstack/react-virtual@npm:3.13.13" dependencies: - "@tanstack/virtual-core": "npm:3.13.18" + "@tanstack/virtual-core": "npm:3.13.13" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/600fabdf9fe077d609dad5114025c502aa1125d21bfd64ae4eeeab4743de1c76ca0d5c29ca4cba0c1220834a9dfedbe0c7304276b0e0e7f9048e2c8a5562fa26 + checksum: 10c0/7c711592c7a3b61059d58292dba9ef2a1ff5ad6827d2add4802d50bf218bb17014292b7dd4da72cf148e2fbf1856e928269283e8831cbf1675aa5a2d86fd7c88 languageName: node linkType: hard @@ -3646,10 +4318,10 @@ __metadata: languageName: node linkType: hard -"@tanstack/virtual-core@npm:3.13.18": - version: 3.13.18 - resolution: "@tanstack/virtual-core@npm:3.13.18" - checksum: 10c0/f43a92bbe4e891242a6bb5274ee60b166534abfcd5115cbe7f92f833e745941ac3b8cb808dd0537cbf1e0c5004aacd2d2cab4a1ce738f7930ec723566e37ec11 +"@tanstack/virtual-core@npm:3.13.13": + version: 3.13.13 + resolution: "@tanstack/virtual-core@npm:3.13.13" + checksum: 10c0/0411295054a6fff21a22944c224f2e414c77c6455015b319f378ea3e9937aefb3b43f4113df2ab9096e5f3db673b085cd778d69ec9918f42bbb94c2dbd43a639 languageName: node linkType: hard @@ -3894,11 +4566,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 25.2.1 - resolution: "@types/node@npm:25.2.1" + version: 25.0.2 + resolution: "@types/node@npm:25.0.2" dependencies: undici-types: "npm:~7.16.0" - checksum: 10c0/ce42fa07495093c55b6398e3c4346d644a61b8c4f59d2e0c0ed152ea0e4327c60a41d5fdfa3e0fc4f4776eb925e2b783b6b942501fc044328a44980bc2de4dc6 + checksum: 10c0/12c4044bf2e46ba3d313ddf6256ee3c88e336a62d129fe788eeab8ff2631b3df51eb31ade4cdc04552fbe51e285f0663c49b60c78acd31da2b9f2c86a84347e3 languageName: node linkType: hard @@ -3942,11 +4614,11 @@ __metadata: linkType: hard "@types/react@npm:^19.2.9": - version: 19.2.13 - resolution: "@types/react@npm:19.2.13" + version: 19.2.14 + resolution: "@types/react@npm:19.2.14" dependencies: csstype: "npm:^3.2.2" - checksum: 10c0/e512dc53b805b9066f5c6ad42944372e1204290d618dbaec634d8bbd80d3aadcc1b8cdd7251329936bbdafae0425c02f531083213473bb370df903f20bb66e91 + checksum: 10c0/7d25bf41b57719452d86d2ac0570b659210402707313a36ee612666bf11275a1c69824f8c3ee1fdca077ccfe15452f6da8f1224529b917050eb2d861e52b59b7 languageName: node linkType: hard @@ -3980,105 +4652,163 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.54.0": - version: 8.54.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.54.0" +"@typescript-eslint/eslint-plugin@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.56.0" dependencies: "@eslint-community/regexpp": "npm:^4.12.2" - "@typescript-eslint/scope-manager": "npm:8.54.0" - "@typescript-eslint/type-utils": "npm:8.54.0" - "@typescript-eslint/utils": "npm:8.54.0" - "@typescript-eslint/visitor-keys": "npm:8.54.0" + "@typescript-eslint/scope-manager": "npm:8.56.0" + "@typescript-eslint/type-utils": "npm:8.56.0" + "@typescript-eslint/utils": "npm:8.56.0" + "@typescript-eslint/visitor-keys": "npm:8.56.0" ignore: "npm:^7.0.5" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.4.0" peerDependencies: - "@typescript-eslint/parser": ^8.54.0 - eslint: ^8.57.0 || ^9.0.0 + "@typescript-eslint/parser": ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/e533c8285880b883e02a833f378597c2776e6b0c20a5935440e2a02c1c42f40069a8badcf6d581bb4ec35a6856a806c4b66674c1c15c33cd64cc6b9c0cdd1dad + checksum: 10c0/26e56d14562b3d2d34b366859ec56668fdac909d6ea534451cdb4267846ff50dcccd0026a4eba71ca41f7c8bdef30ef1356620c1ff2363ad64bd8fad33a72b19 languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.54.0": - version: 8.54.0 - resolution: "@typescript-eslint/parser@npm:8.54.0" +"@typescript-eslint/parser@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/parser@npm:8.56.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.54.0" - "@typescript-eslint/types": "npm:8.54.0" - "@typescript-eslint/typescript-estree": "npm:8.54.0" - "@typescript-eslint/visitor-keys": "npm:8.54.0" + "@typescript-eslint/scope-manager": "npm:8.56.0" + "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/typescript-estree": "npm:8.56.0" + "@typescript-eslint/visitor-keys": "npm:8.56.0" debug: "npm:^4.4.3" peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/60a1cfe94bc23086f03701640f4d83d7e37b8f4d729011e0f029e5accf2b3d099c50938c0a798a399e86046279432ff663f33102ba4338c4c82f7acead2bcbac + checksum: 10c0/f3a29c6fdc4e0d1a1e7ddb9909ab839c2f67591933e432c10f44aabb69ae2229f8d2072a220f63b70618cc35c67ff53de0ed110be86b33f4f354c19993f764cb languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.54.0": - version: 8.54.0 - resolution: "@typescript-eslint/project-service@npm:8.54.0" +"@typescript-eslint/project-service@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/project-service@npm:8.49.0" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.54.0" - "@typescript-eslint/types": "npm:^8.54.0" + "@typescript-eslint/tsconfig-utils": "npm:^8.49.0" + "@typescript-eslint/types": "npm:^8.49.0" + debug: "npm:^4.3.4" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/da6342fe99786c9d9c1d2fc3291ffd62afa043b42f4c7b5c1f8b3a6af266bd9af662281a0905ee70b069a811b63faf7efb63932f6bf55cb138e42309e4ced425 + languageName: node + linkType: hard + +"@typescript-eslint/project-service@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/project-service@npm:8.56.0" + dependencies: + "@typescript-eslint/tsconfig-utils": "npm:^8.56.0" + "@typescript-eslint/types": "npm:^8.56.0" debug: "npm:^4.4.3" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/3392ae259199021a80616a44d9484d1c363f61bc5c631dff2d08c6a906c98716a20caa7b832b8970120a1eb1eb2de3ee890cd527d6edb04f532f4e48a690a792 + checksum: 10c0/8302dc30ad8c0342137998ea872782cdd673f9e7ec4b244eeb0976915b86d6c44ef55485e2cdac2987dbf309d3663aaf293c85e88326093fc7656b51432369f6 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/scope-manager@npm:8.49.0" + dependencies: + "@typescript-eslint/types": "npm:8.49.0" + "@typescript-eslint/visitor-keys": "npm:8.49.0" + checksum: 10c0/fe7a036e186e8cb933375ecc3b6ea8ce7604f1dd53d72c24d26158cbc2563527f8c1ba7a894b58bcbd079315fe950ff3c5eb5f7061658f39ff473c04d54ef701 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.54.0": - version: 8.54.0 - resolution: "@typescript-eslint/scope-manager@npm:8.54.0" +"@typescript-eslint/scope-manager@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/scope-manager@npm:8.56.0" dependencies: - "@typescript-eslint/types": "npm:8.54.0" - "@typescript-eslint/visitor-keys": "npm:8.54.0" - checksum: 10c0/794740a5c0c1afc38d71e6bc59cc62870286e40d99f15e9760e76fb3d4197e961ee151c286c428535c404f5137721242a14da21350b749d0feb1f589f167814f + "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/visitor-keys": "npm:8.56.0" + checksum: 10c0/898b705295e0a4081702a52f98e0d1e50f8047900becd087b232bc71f8af2b87ed70a065bed0076a26abec8f4e5c6bb4a3a0de33b7ea0e3704ecdc7487043b57 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.49.0, @typescript-eslint/tsconfig-utils@npm:^8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.49.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/1b255149d3f0d99b6cf5df4b62925a79f44f243748c6e877a7cf1dd0cdbff7411f2971d5e9fa85472ed76055bd1826e55c1adc99f3d82f504bd9fcd6e76f4b3a languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.54.0, @typescript-eslint/tsconfig-utils@npm:^8.54.0": - version: 8.54.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.54.0" +"@typescript-eslint/tsconfig-utils@npm:8.56.0, @typescript-eslint/tsconfig-utils@npm:^8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.56.0" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/e8598b0f051650c085d749002138d12249a3efd03e7de02e9e7913939dddd649d159b91f29ca3d28f5ee798b3f528a7195688e23c5e0b315d534e7af20a0c99a + checksum: 10c0/20f48af8b497d8a730dcac3724314b4f49ecc436f8871f3e17f5193d83e7d290c8838a126971767cd011208969bc4ff0f4bddc40eac167348c88d29fdb379c8b languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.54.0": - version: 8.54.0 - resolution: "@typescript-eslint/type-utils@npm:8.54.0" +"@typescript-eslint/type-utils@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/type-utils@npm:8.56.0" dependencies: - "@typescript-eslint/types": "npm:8.54.0" - "@typescript-eslint/typescript-estree": "npm:8.54.0" - "@typescript-eslint/utils": "npm:8.54.0" + "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/typescript-estree": "npm:8.56.0" + "@typescript-eslint/utils": "npm:8.56.0" debug: "npm:^4.4.3" ts-api-utils: "npm:^2.4.0" peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/ad807800d8b2662f823505249a84a6f5b1246b192a7ff08c49f298e220e4d9bb3d76f1f0852510421e030161604a4b939bff87f11b9074f118a3bd1d26139c6f + checksum: 10c0/4da61c36fa46f9d21a519a06b4ea6c91e9fa8a8e420fede41fb5d0f29866faa11641562b6e01c221ca6ec86bc0c3ecd7b8f11fc85b92277c3fd450ffc8fa2522 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:8.49.0, @typescript-eslint/types@npm:^8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/types@npm:8.49.0" + checksum: 10c0/75b26207b142576cf9af86406815b440c7f4bc6645fa58c58a3d781a5d80a39ba7e44d4b4df297980019a7aa1db10da5ac515191aaaf0f1ef6007996c126d8f9 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.54.0, @typescript-eslint/types@npm:^8.54.0": - version: 8.54.0 - resolution: "@typescript-eslint/types@npm:8.54.0" - checksum: 10c0/2219594fe5e8931ff91fd1b7a2606d33cd4f093d43f9ca71bcaa37f106ef79ad51f830dea51392f7e3d8bca77f7077ef98733f87bc008fad2f0bbd9ea5fb8a40 +"@typescript-eslint/types@npm:8.56.0, @typescript-eslint/types@npm:^8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/types@npm:8.56.0" + checksum: 10c0/5deb4ebf5fa62f9f927f6aa45f7245aa03567e88941cd76e7b083175fd59fc40368a804ba7ff7581eac75706e42ddd5c77d2a60d6b1e76ab7865d559c9af9937 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.49.0" + dependencies: + "@typescript-eslint/project-service": "npm:8.49.0" + "@typescript-eslint/tsconfig-utils": "npm:8.49.0" + "@typescript-eslint/types": "npm:8.49.0" + "@typescript-eslint/visitor-keys": "npm:8.49.0" + debug: "npm:^4.3.4" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + tinyglobby: "npm:^0.2.15" + ts-api-utils: "npm:^2.1.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/91d0e4ed00021085142c2845571cc91c89b700ee184eb508e8d1f97a02533c029630f00c3f0f796942b28397ec9f61502b153c81971d228893363fc546bbb341 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.54.0": - version: 8.54.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.54.0" +"@typescript-eslint/typescript-estree@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.56.0" dependencies: - "@typescript-eslint/project-service": "npm:8.54.0" - "@typescript-eslint/tsconfig-utils": "npm:8.54.0" - "@typescript-eslint/types": "npm:8.54.0" - "@typescript-eslint/visitor-keys": "npm:8.54.0" + "@typescript-eslint/project-service": "npm:8.56.0" + "@typescript-eslint/tsconfig-utils": "npm:8.56.0" + "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/visitor-keys": "npm:8.56.0" debug: "npm:^4.4.3" minimatch: "npm:^9.0.5" semver: "npm:^7.7.3" @@ -4086,32 +4816,57 @@ __metadata: ts-api-utils: "npm:^2.4.0" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/1a1a7c0a318e71f3547ab5573198d36165ea152c50447ef92e6326303f9a5c397606201ba80c7b86a725dcdd2913e924be94466a0c33b1b0c3ee852059e646b6 + checksum: 10c0/cc2ba5bbfabb71c1510aea8fb8bf0d8385cabb9ca5b65a621e73f3088a91089a02aea56a9d9a31bd707593b5ba4d33d0aa2fcbdeee3cc7f4eca8226107523c28 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.54.0, @typescript-eslint/utils@npm:^8.0.0": - version: 8.54.0 - resolution: "@typescript-eslint/utils@npm:8.54.0" +"@typescript-eslint/utils@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/utils@npm:8.56.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.9.1" - "@typescript-eslint/scope-manager": "npm:8.54.0" - "@typescript-eslint/types": "npm:8.54.0" - "@typescript-eslint/typescript-estree": "npm:8.54.0" + "@typescript-eslint/scope-manager": "npm:8.56.0" + "@typescript-eslint/types": "npm:8.56.0" + "@typescript-eslint/typescript-estree": "npm:8.56.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/49545d399345bb4d8113d1001ec60c05c7e0d28fd44cb3c75128e58a53c9bf7ae8d0680ca089a4f37ab9eea8a3ef39011fc731eb4ad8dd4ab642849d84318645 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:^8.0.0": + version: 8.49.0 + resolution: "@typescript-eslint/utils@npm:8.49.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.7.0" + "@typescript-eslint/scope-manager": "npm:8.49.0" + "@typescript-eslint/types": "npm:8.49.0" + "@typescript-eslint/typescript-estree": "npm:8.49.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/949a97dca8024d39666e04ecdf2d4e12722f5064c387901e72bdcc7adafb96cf650a070dc79f9dd46fa1aae6ac2b5eac5ae3fe5a6979385208c28809a1bd143f + checksum: 10c0/d10fe4d844dacb2f76f0a6e018455d94ba29204845d57248ae220030bda7e13e0e7b488b3ccf8ce1b5d577e1e1775cbdbbff911261a586d9bc7fdfc3cc001697 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.54.0": - version: 8.54.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.54.0" +"@typescript-eslint/visitor-keys@npm:8.49.0": + version: 8.49.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.49.0" dependencies: - "@typescript-eslint/types": "npm:8.54.0" + "@typescript-eslint/types": "npm:8.49.0" eslint-visitor-keys: "npm:^4.2.1" - checksum: 10c0/f83a9aa92f7f4d1fdb12cbca28c6f5704c36371264606b456388b2c869fc61e73c86d3736556e1bb6e253f3a607128b5b1bf6c68395800ca06f18705576faadd + checksum: 10c0/442c47bf8e46dda50a765cddbd524f6fef9e76acc3d11de2505ca7097054f24e53f12fe57be34b72fb56115f8f74499573a2704f3465bffdb96834083b616cf1 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.56.0" + dependencies: + "@typescript-eslint/types": "npm:8.56.0" + eslint-visitor-keys: "npm:^5.0.0" + checksum: 10c0/4cb7668430042da70707ac5cad826348e808af94095aca1f3d07d39d566745a33991d3defccd1e687f1b1f8aeea52eeb47591933e962452eb51c4bcd88773c12 languageName: node linkType: hard @@ -5002,11 +5757,11 @@ __metadata: linkType: hard "autoprefixer@npm:^10.4.23": - version: 10.4.24 - resolution: "autoprefixer@npm:10.4.24" + version: 10.4.23 + resolution: "autoprefixer@npm:10.4.23" dependencies: browserslist: "npm:^4.28.1" - caniuse-lite: "npm:^1.0.30001766" + caniuse-lite: "npm:^1.0.30001760" fraction.js: "npm:^5.3.4" picocolors: "npm:^1.1.1" postcss-value-parser: "npm:^4.2.0" @@ -5014,7 +5769,7 @@ __metadata: postcss: ^8.1.0 bin: autoprefixer: bin/autoprefixer - checksum: 10c0/16737dfc865afed338f3166718ece0f77539e53c1ba9f064f2e6369b9dec9ea0542f3fb98bcb7ab37e64897dc3304bae6b2004fbf79ada8b2aeaa3db336e4b77 + checksum: 10c0/3765c5d0fa3e95fb2ebe9d5a6d4da0156f5d346c7ec9ac0fbf5c97c8139d0ca1e8743bf5dc1b4aa954467be6929fddf8498a3b6202d468d70b5f359f3b6af90f languageName: node linkType: hard @@ -5040,13 +5795,13 @@ __metadata: linkType: hard "axios@npm:^1.13.4": - version: 1.13.4 - resolution: "axios@npm:1.13.4" + version: 1.13.5 + resolution: "axios@npm:1.13.5" dependencies: - follow-redirects: "npm:^1.15.6" - form-data: "npm:^4.0.4" + follow-redirects: "npm:^1.15.11" + form-data: "npm:^4.0.5" proxy-from-env: "npm:^1.1.0" - checksum: 10c0/474c00b7d71f4de4ad562589dae6b615149df7c2583bbc5ebba96229f3f85bfb0775d23705338df072f12e48d3e85685c065a3cf6855d58968a672d19214c728 + checksum: 10c0/abf468c34f2d145f3dc7dbc0f1be67e520630624307bda69a41bbe8d386bd672d87b4405c4ee77f9ff54b235ab02f96a9968fb00e75b13ce64706e352a3068fd languageName: node linkType: hard @@ -5119,7 +5874,20 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.14, babel-plugin-polyfill-corejs2@npm:^0.4.15": +"babel-plugin-polyfill-corejs2@npm:^0.4.14": + version: 0.4.14 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" + dependencies: + "@babel/compat-data": "npm:^7.27.7" + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/d74cba0600a6508e86d220bde7164eb528755d91be58020e5ea92ea7fbb12c9d8d2c29246525485adfe7f68ae02618ec428f9a589cac6cbedf53cc3972ad7fbe + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.15": version: 0.4.15 resolution: "babel-plugin-polyfill-corejs2@npm:0.4.15" dependencies: @@ -5156,7 +5924,18 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.6.5, babel-plugin-polyfill-regenerator@npm:^0.6.6": +"babel-plugin-polyfill-regenerator@npm:^0.6.5": + version: 0.6.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/63aa8ed716df6a9277c6ab42b887858fa9f57a70cc1d0ae2b91bdf081e45d4502848cba306fb60b02f59f99b32fd02ff4753b373cac48ccdac9b7d19dd56f06d + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.6.6": version: 0.6.6 resolution: "babel-plugin-polyfill-regenerator@npm:0.6.6" dependencies: @@ -5228,11 +6007,11 @@ __metadata: linkType: hard "baseline-browser-mapping@npm:^2.9.0": - version: 2.9.19 - resolution: "baseline-browser-mapping@npm:2.9.19" + version: 2.9.7 + resolution: "baseline-browser-mapping@npm:2.9.7" bin: baseline-browser-mapping: dist/cli.js - checksum: 10c0/569928db78bcd081953d7db79e4243a59a579a34b4ae1806b9b42d3b7f84e5bc40e6e82ae4fa06e7bef8291bf747b33b3f9ef5d3c6e1e420cb129d9295536129 + checksum: 10c0/500af82926d71d23fab20bcf821eb27deeaad45d1a01bd33d2dea7aab6114149068fa0d42bb9c5c18657e996b6e8063b84612c8fb8ac8ba6c6c6028fa4930ed1 languageName: node linkType: hard @@ -5486,7 +6265,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.24.0, browserslist@npm:^4.27.0, browserslist@npm:^4.28.1": +"browserslist@npm:^4.0.0, browserslist@npm:^4.24.0, browserslist@npm:^4.26.3, browserslist@npm:^4.27.0, browserslist@npm:^4.28.0, browserslist@npm:^4.28.1": version: 4.28.1 resolution: "browserslist@npm:4.28.1" dependencies: @@ -5689,10 +6468,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001759, caniuse-lite@npm:^1.0.30001766": - version: 1.0.30001769 - resolution: "caniuse-lite@npm:1.0.30001769" - checksum: 10c0/161b8c30ab967371807d45d361f0d5bc06e38ef2dbf811493d70cd97c21e1522f5b91fd944c419a00047ee09c931ca64627f125a9ffa7a17a9fdff8dad9765b0 +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001759, caniuse-lite@npm:^1.0.30001760": + version: 1.0.30001760 + resolution: "caniuse-lite@npm:1.0.30001760" + checksum: 10c0/cee26dff5c5b15ba073ab230200e43c0d4e88dc3bac0afe0c9ab963df70aaa876c3e513dde42a027f317136bf6e274818d77b073708b74c5807dfad33c029d3c languageName: node linkType: hard @@ -5756,9 +6535,9 @@ __metadata: linkType: hard "ci-info@npm:^4.2.0": - version: 4.4.0 - resolution: "ci-info@npm:4.4.0" - checksum: 10c0/44156201545b8dde01aa8a09ee2fe9fc7a73b1bef9adbd4606c9f61c8caeeb73fb7a575c88b0443f7b4edb5ee45debaa59ed54ba5f99698339393ca01349eb3a + version: 4.3.1 + resolution: "ci-info@npm:4.3.1" + checksum: 10c0/7dd82000f514d76ddfe7775e4cb0d66e5c638f5fa0e2a3be29557e898da0d32ac04f231217d414d07fb968b1fbc6d980ee17ddde0d2c516f23da9cfff608f6c1 languageName: node linkType: hard @@ -5774,9 +6553,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^2.1.0": - version: 2.2.0 - resolution: "cjs-module-lexer@npm:2.2.0" - checksum: 10c0/aec4ca58f87145fac221386790ecaae8b012f2e2359a45acb61d8c75ea4fa84f6ea869f17abc1a7e91a808eff0fed581209632f03540de16f72f0a28f5fd35ac + version: 2.1.1 + resolution: "cjs-module-lexer@npm:2.1.1" + checksum: 10c0/813697c0ed1533f4a88bd8051d8ae1cb1b21d3ff1c6a5720353817d50c3f3f83bb2af6bd83922aae94b3ef90d64d01a6eb123fa8249f4dc7215e3afd89364f86 languageName: node linkType: hard @@ -6044,7 +6823,16 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.43.0, core-js-compat@npm:^3.48.0": +"core-js-compat@npm:^3.43.0": + version: 3.47.0 + resolution: "core-js-compat@npm:3.47.0" + dependencies: + browserslist: "npm:^4.28.0" + checksum: 10c0/71da415899633120db7638dd7b250eee56031f63c4560dcba8eeeafd1168fae171d59b223e3fd2e0aa543a490d64bac7d946764721e2c05897056fdfb22cce33 + languageName: node + linkType: hard + +"core-js-compat@npm:^3.48.0": version: 3.48.0 resolution: "core-js-compat@npm:3.48.0" dependencies: @@ -6203,17 +6991,17 @@ __metadata: linkType: hard "css-declaration-sorter@npm:^7.2.0": - version: 7.3.1 - resolution: "css-declaration-sorter@npm:7.3.1" + version: 7.3.0 + resolution: "css-declaration-sorter@npm:7.3.0" peerDependencies: postcss: ^8.0.9 - checksum: 10c0/8348ec76157e4b370ce4383a80e23fde28dde53901572ae5bcb5cd02cfc2ba0a76a7b5433c361524ed4cea713023802abc7b56e2304aad0721e449011fa83b37 + checksum: 10c0/a715c90ac1b849e52cb697eb3c28ae86ee80fa9ccb26a9da60eb5621a0a6657c41a8126e27d96a622f96ca70692e210ac33362888f0274ba23056ac401089fa5 languageName: node linkType: hard "css-loader@npm:^7.1.3": - version: 7.1.3 - resolution: "css-loader@npm:7.1.3" + version: 7.1.4 + resolution: "css-loader@npm:7.1.4" dependencies: icss-utils: "npm:^5.1.0" postcss: "npm:^8.4.40" @@ -6224,14 +7012,14 @@ __metadata: postcss-value-parser: "npm:^4.2.0" semver: "npm:^7.6.3" peerDependencies: - "@rspack/core": 0.x || 1.x + "@rspack/core": 0.x || ^1.0.0 || ^2.0.0-0 webpack: ^5.27.0 peerDependenciesMeta: "@rspack/core": optional: true webpack: optional: true - checksum: 10c0/8743a8f1a0beff371d0fbeae7dbae7b079e546c734e3c936f0c5dc4603a716a576200e9261c934565584cf0e090cca444efb613efa4282ee3fcab81db4c73c7e + checksum: 10c0/a3a3a6b564d4fcf978961be8bc6ca06fb3836fc8fbd729ddae4b0b94166a0f5ccf119fb3301a6fecbe90608a8edbfd418bdc644cf053615e6271aa65b3fdc00b languageName: node linkType: hard @@ -6498,7 +7286,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.4.3, debug@npm:~4.4.1": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.4.1, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -6510,6 +7298,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:~4.3.1, debug@npm:~4.3.2": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b + languageName: node + linkType: hard + "decamelize-keys@npm:^1.1.0": version: 1.1.1 resolution: "decamelize-keys@npm:1.1.1" @@ -6542,14 +7342,14 @@ __metadata: linkType: hard "dedent@npm:^1.6.0": - version: 1.7.1 - resolution: "dedent@npm:1.7.1" + version: 1.7.0 + resolution: "dedent@npm:1.7.0" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: 10c0/ae29ec1c5bd5216c698c9f23acaa5b720260fd4cef3c8b5af887eb5f8c9e6fdd5fed8668767437b4efea35e2991bd798987717633411a1734807c28255769b78 + checksum: 10c0/c5e8a8beb5072bd5e520cb64b27a82d7ec3c2a63ee5ce47dbc2a05d5b7700cefd77a992a752cd0a8b1d979c1db06b14fb9486e805f3ad6088eda6e07cd9bf2d5 languageName: node linkType: hard @@ -6675,10 +7475,10 @@ __metadata: languageName: node linkType: hard -"devalue@npm:^5.6.2": - version: 5.6.2 - resolution: "devalue@npm:5.6.2" - checksum: 10c0/654f257ec525a2d3f35c941bfbb361148bc65ced060710969fbaa1c45abf1c9d7c4fcb77310bf8d2fb73c34cf60bad10710e7bf5b15643bbc082518ea04cb00b +"devalue@npm:^5.5.0": + version: 5.6.1 + resolution: "devalue@npm:5.6.1" + checksum: 10c0/4dca0e800336003fd1e268c142adfe78f3539cda7384b4f69762a93e0dfc33e223b580251da0a6da4be44962958fcba5eadf122f9720e09f437b28904af9c43e languageName: node linkType: hard @@ -6875,9 +7675,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.263": - version: 1.5.286 - resolution: "electron-to-chromium@npm:1.5.286" - checksum: 10c0/5384510f9682d7e46f98fa48b874c3901d9639de96e9e387afce1fe010fbac31376df0534524edc15f66e9902bfacee54037a5e598004e9c6a617884e379926d + version: 1.5.267 + resolution: "electron-to-chromium@npm:1.5.267" + checksum: 10c0/0732bdb891b657f2e43266a3db8cf86fff6cecdcc8d693a92beff214e136cb5c2ee7dc5945ed75fa1db16e16bad0c38695527a020d15f39e79084e0b2e447621 languageName: node linkType: hard @@ -6934,15 +7734,15 @@ __metadata: linkType: hard "engine.io-client@npm:~6.6.1": - version: 6.6.4 - resolution: "engine.io-client@npm:6.6.4" + version: 6.6.3 + resolution: "engine.io-client@npm:6.6.3" dependencies: "@socket.io/component-emitter": "npm:~3.1.0" - debug: "npm:~4.4.1" + debug: "npm:~4.3.1" engine.io-parser: "npm:~5.2.1" - ws: "npm:~8.18.3" + ws: "npm:~8.17.1" xmlhttprequest-ssl: "npm:~2.1.1" - checksum: 10c0/d90bc32d614f67db9c198d1c26a787529f3038a7429c75e677f5495938cc45f9e89d435e8860bcfcc01db410e21d2f245b914f2fcbdb03ffd50d30f2aeec5143 + checksum: 10c0/ebe0b1da6831d5a68564f9ffb80efe682da4f0538488eaffadf0bcf5177a8b4472cdb01d18a9f20dece2f8de30e2df951eb4635bef2f1b492e9f08a523db91a0 languageName: node linkType: hard @@ -6953,13 +7753,13 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.19.0": - version: 5.19.0 - resolution: "enhanced-resolve@npm:5.19.0" +"enhanced-resolve@npm:^5.17.3": + version: 5.18.4 + resolution: "enhanced-resolve@npm:5.18.4" dependencies: graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.3.0" - checksum: 10c0/966b1dffb82d5f6a4d6a86e904e812104a999066aa29f9223040aaa751e7c453b462a3f5ef91f8bd4408131ff6f7f90651dd1c804bdcb7944e2099a9c2e45ee2 + tapable: "npm:^2.2.0" + checksum: 10c0/8f6d42c8a0787a746c493e724c9de5d091cfe8e3f871f2464e2f78a6c55fa1a3aaba495334f923c8ea3ac23e1472491f79feef6fc0fb46a75169cb447ffbe2dc languageName: node linkType: hard @@ -7116,10 +7916,10 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^2.0.0": - version: 2.0.0 - resolution: "es-module-lexer@npm:2.0.0" - checksum: 10c0/ae78dbbd43035a4b972c46cfb6877e374ea290adfc62bc2f5a083fea242c0b2baaab25c5886af86be55f092f4a326741cb94334cd3c478c383fdc8a9ec5ff817 +"es-module-lexer@npm:^1.2.1": + version: 1.7.0 + resolution: "es-module-lexer@npm:1.7.0" + checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b languageName: node linkType: hard @@ -7165,14 +7965,14 @@ __metadata: linkType: hard "es-toolkit@npm:^1.39.6": - version: 1.44.0 - resolution: "es-toolkit@npm:1.44.0" + version: 1.43.0 + resolution: "es-toolkit@npm:1.43.0" dependenciesMeta: "@trivago/prettier-plugin-sort-imports@4.3.0": unplugged: true prettier-plugin-sort-re-exports@0.0.1: unplugged: true - checksum: 10c0/b80ff52ddc85ba26914cda57c9d4e46379ccc38c60dc097ef0d065cc0b20f95a16cf8d537969eea600b51c6687b5900a6cce67489db16d5ccc14d47597a29c34 + checksum: 10c0/bbff0b591fd01be9f37a34dad7964b590e4952fc594c1230140771687f05136caa6ab21962a6e9cde7c4b529a149171ed5179d6379d4a8e656dbf7e8d126999c languageName: node linkType: hard @@ -7198,13 +7998,13 @@ __metadata: linkType: hard "eslint-plugin-jest@npm:^29.9.0": - version: 29.12.2 - resolution: "eslint-plugin-jest@npm:29.12.2" + version: 29.15.0 + resolution: "eslint-plugin-jest@npm:29.15.0" dependencies: "@typescript-eslint/utils": "npm:^8.0.0" peerDependencies: "@typescript-eslint/eslint-plugin": ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 jest: "*" typescript: ">=4.8.4 <6.0.0" peerDependenciesMeta: @@ -7214,7 +8014,7 @@ __metadata: optional: true typescript: optional: true - checksum: 10c0/e314b1171e7fa14c1cba9d02a1d88c0258f57ff00b4d45297ccb9d15d293378924afb4a402aa18c00c42500cdcd6f64acfc2a2210d2da17f19989bb591287194 + checksum: 10c0/e3d8f67708ba4a77a628f8d97a9ebbb20f62ad690d7cc155c0a1066d36b74a6ad8e943fda5c54264c4ad4186dd8d212075bce9f5c2debdd35708ed74ecdc81ef languageName: node linkType: hard @@ -7307,6 +8107,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^5.0.0": + version: 5.0.0 + resolution: "eslint-visitor-keys@npm:5.0.0" + checksum: 10c0/5ec68b7ae350f6e7813a9ab469f8c64e01e5a954e6e6ee6dc441cc24d315eb342e5fb81ab5fc21f352cf0125096ab4ed93ca892f602a1576ad1eedce591fe64a + languageName: node + linkType: hard + "eslint@npm:^9.39.2": version: 9.39.2 resolution: "eslint@npm:9.39.2" @@ -7385,20 +8192,20 @@ __metadata: linkType: hard "esquery@npm:^1.5.0": - version: 1.7.0 - resolution: "esquery@npm:1.7.0" + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 languageName: node linkType: hard -"esrap@npm:^2.2.2": - version: 2.2.2 - resolution: "esrap@npm:2.2.2" +"esrap@npm:^2.2.1": + version: 2.2.1 + resolution: "esrap@npm:2.2.1" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.4.15" - checksum: 10c0/859675c5cc529a7260b1a9c1fc308eacd9090c1b615adfe2bfc706dada1381daaf5c293fae25da9b28f0ec134cac9e70dc7fb6559fc1d973fe808c7e19cf6e9b + checksum: 10c0/bd351c19b6827b69c73f86d9e5bb20fa890911c8e9aaa0581e61a38211346498e8bf4a1ac58811e9306ddbb13cd395db89e0b5302702aba121e8aaf880006f68 languageName: node linkType: hard @@ -7569,11 +8376,11 @@ __metadata: linkType: hard "fastq@npm:^1.6.0": - version: 1.20.1 - resolution: "fastq@npm:1.20.1" + version: 1.19.1 + resolution: "fastq@npm:1.19.1" dependencies: reusify: "npm:^1.0.4" - checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e + checksum: 10c0/ebc6e50ac7048daaeb8e64522a1ea7a26e92b3cee5cd1c7f2316cdca81ba543aa40a136b53891446ea5c3a67ec215fbaca87ad405f102dd97012f62916905630 languageName: node linkType: hard @@ -7701,7 +8508,7 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.15.6": +"follow-redirects@npm:^1.15.11": version: 1.15.11 resolution: "follow-redirects@npm:1.15.11" peerDependenciesMeta: @@ -7730,7 +8537,7 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^4.0.4": +"form-data@npm:^4.0.5": version: 4.0.5 resolution: "form-data@npm:4.0.5" dependencies: @@ -7971,13 +8778,13 @@ __metadata: linkType: hard "glob@npm:^13.0.0": - version: 13.0.1 - resolution: "glob@npm:13.0.1" + version: 13.0.0 + resolution: "glob@npm:13.0.0" dependencies: - minimatch: "npm:^10.1.2" + minimatch: "npm:^10.1.1" minipass: "npm:^7.1.2" path-scurry: "npm:^2.0.0" - checksum: 10c0/af7b863dec8dff74f61d7d6e53104e1f6bbdd482157a196cade8ed857481e876ec35181b38a059b2a7b93ea3b08248f4ff0792fef6dc91814fd5097a716f48e4 + checksum: 10c0/8e2f5821f3f7c312dd102e23a15b80c79e0837a9872784293ba2e15ec73b3f3749a49a42a31bfcb4e52c84820a474e92331c2eebf18819d20308f5c33876630a languageName: node linkType: hard @@ -8249,13 +9056,13 @@ __metadata: languageName: node linkType: hard -"html-dom-parser@npm:5.1.7": - version: 5.1.7 - resolution: "html-dom-parser@npm:5.1.7" +"html-dom-parser@npm:5.1.8": + version: 5.1.8 + resolution: "html-dom-parser@npm:5.1.8" dependencies: domhandler: "npm:5.0.3" htmlparser2: "npm:10.1.0" - checksum: 10c0/a97ca5cb361ffb36da46eb1b5421e7eb48c34e6056053bcb7926a4dd5669c6cea6bdae8da5575f3e4105cad9d88a23a19417151838e01bbef806907aefe503a0 + checksum: 10c0/749c2b7767e8385c95d3ed6e78cce8ddea65d63b7d3c310b5e51d8ae96a71689f13eb5a0ba22775a981edacf13f1f4ab616e6469ce8ae1bd805887082bda32b9 languageName: node linkType: hard @@ -8276,11 +9083,11 @@ __metadata: linkType: hard "html-react-parser@npm:^5.2.15": - version: 5.2.16 - resolution: "html-react-parser@npm:5.2.16" + version: 5.2.17 + resolution: "html-react-parser@npm:5.2.17" dependencies: domhandler: "npm:5.0.3" - html-dom-parser: "npm:5.1.7" + html-dom-parser: "npm:5.1.8" react-property: "npm:2.0.2" style-to-js: "npm:1.1.21" peerDependencies: @@ -8289,7 +9096,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/d481d724f679ef72beb1ed2758e7f8f5a278b35c111655b3c68a9e88b8c86a4a34a92546631e93e98e140aea31d6aa5c91a927a598962c939f6d6fce8f23c025 + checksum: 10c0/57b3ea22f851fbd9a6a5772550981d4608053f018afbadf8a31484c90a1f333f8f5d0f371ccce0b3d396dc46095b1b67ba417ee6c4747135858222f7e7b34d53 languageName: node linkType: hard @@ -8996,9 +9803,9 @@ __metadata: linkType: hard "isexe@npm:^3.1.1": - version: 3.1.2 - resolution: "isexe@npm:3.1.2" - checksum: 10c0/1081adb0e9d8dd6d313916e39c81b683ab0e304bcec388b7bb400da988180dc576be7b298e6cd55d89fc5e98f32c1d73c2e04d2454c6115f58b28a8040d421ed + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 languageName: node linkType: hard @@ -9756,11 +10563,11 @@ __metadata: linkType: hard "jsonrepair@npm:^3.0.0": - version: 3.13.2 - resolution: "jsonrepair@npm:3.13.2" + version: 3.13.1 + resolution: "jsonrepair@npm:3.13.1" bin: jsonrepair: bin/cli.js - checksum: 10c0/36cbb1c047d705b73d2027fe4189ca21323c420113c5ad45e6df753168d1b105472727dcb7aeb6b4b7cc76c141d27aa74e5e9614238a9e481a3929ceea6d2237 + checksum: 10c0/2162c9e562f631d39f804980b2b0aa679eba16de7004af11c0949bb73b5107dc09d24b5bd7f9d74f90a85360ff47f3d4c379840f2ce3a214d9d27a2d96903ed6 languageName: node linkType: hard @@ -9902,9 +10709,9 @@ __metadata: linkType: hard "lodash-es@npm:^4.17.21": - version: 4.17.23 - resolution: "lodash-es@npm:4.17.23" - checksum: 10c0/3150fb6660c14c7a6b5f23bd11597d884b140c0e862a17fdb415aaa5ef7741523182904a6b7929f04e5f60a11edb5a79499eb448734381c99ffb3c4734beeddd + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: 10c0/fb407355f7e6cd523a9383e76e6b455321f0f153a6c9625e21a8827d10c54c2a2341bd2ae8d034358b60e07325e1330c14c224ff582d04612a46a4f0479ff2f2 languageName: node linkType: hard @@ -10123,9 +10930,9 @@ __metadata: linkType: hard "lodash@npm:4, lodash@npm:4.*, lodash@npm:^4.14.1, lodash@npm:^4.17.10, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21": - version: 4.17.23 - resolution: "lodash@npm:4.17.23" - checksum: 10c0/1264a90469f5bb95d4739c43eb6277d15b6d9e186df4ac68c3620443160fc669e2f14c11e7d8b2ccf078b81d06147c01a8ccced9aab9f9f63d50dcf8cace6bf6 + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c languageName: node linkType: hard @@ -10157,9 +10964,9 @@ __metadata: linkType: hard "lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": - version: 11.2.5 - resolution: "lru-cache@npm:11.2.5" - checksum: 10c0/cc98958d25dddf1c8a8cbdc49588bd3b24450e8dfa78f32168fd188a20d4a0331c7406d0f3250c86a46619ee288056fd7a1195e8df56dc8a9592397f4fbd8e1d + version: 11.2.4 + resolution: "lru-cache@npm:11.2.4" + checksum: 10c0/4a24f9b17537619f9144d7b8e42cd5a225efdfd7076ebe7b5e7dc02b860a818455201e67fbf000765233fe7e339d3c8229fc815e9b58ee6ede511e07608c19b2 languageName: node linkType: hard @@ -10281,6 +11088,15 @@ __metadata: languageName: node linkType: hard +"marked@npm:^17.0.1": + version: 17.0.1 + resolution: "marked@npm:17.0.1" + bin: + marked: bin/marked.js + checksum: 10c0/0197337aad33882308cea52d2c86d7b830a89be729a4010a26a488ae1c224cdc7520b8cce056832a81a127fc39a3827f45e3865c1ff257324cb553cb06ce0e57 + languageName: node + linkType: hard + "marked@npm:^5.1.2": version: 5.1.2 resolution: "marked@npm:5.1.2" @@ -10462,12 +11278,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^10.1.2": - version: 10.1.2 - resolution: "minimatch@npm:10.1.2" +"minimatch@npm:^10.1.1": + version: 10.1.1 + resolution: "minimatch@npm:10.1.1" dependencies: - "@isaacs/brace-expansion": "npm:^5.0.1" - checksum: 10c0/0cccef3622201703de6ecf9d772c0be1d5513dcc038ed9feb866c20cf798243e678ac35605dac3f1a054650c28037486713fe9e9a34b184b9097959114daf086 + "@isaacs/brace-expansion": "npm:^5.0.0" + checksum: 10c0/c85d44821c71973d636091fddbfbffe62370f5ee3caf0241c5b60c18cd289e916200acb2361b7e987558cd06896d153e25d505db9fc1e43e6b4b6752e2702902 languageName: node linkType: hard @@ -10550,17 +11366,17 @@ __metadata: linkType: hard "minipass-fetch@npm:^5.0.0": - version: 5.0.1 - resolution: "minipass-fetch@npm:5.0.1" + version: 5.0.0 + resolution: "minipass-fetch@npm:5.0.0" dependencies: encoding: "npm:^0.1.13" minipass: "npm:^7.0.3" - minipass-sized: "npm:^2.0.0" + minipass-sized: "npm:^1.0.3" minizlib: "npm:^3.0.1" dependenciesMeta: encoding: optional: true - checksum: 10c0/50bcf48c9841ebb25e29a2817468595219c72cfffc7c175a1d7327843c8bef9b72cb01778f46df7eca695dfe47ab98e6167af4cb026ddd80f660842919a5193c + checksum: 10c0/9443aab5feab190972f84b64116e54e58dd87a58e62399cae0a4a7461b80568281039b7c3a38ba96453431ebc799d1e26999e548540156216729a4967cd5ef06 languageName: node linkType: hard @@ -10591,15 +11407,6 @@ __metadata: languageName: node linkType: hard -"minipass-sized@npm:^2.0.0": - version: 2.0.0 - resolution: "minipass-sized@npm:2.0.0" - dependencies: - minipass: "npm:^7.1.2" - checksum: 10c0/f9201696a6f6d68610d04c9c83e3d2e5cb9c026aae1c8cbf7e17f386105cb79c1bb088dbc21bf0b1eb4f3fb5df384fd1e7aa3bf1f33868c416ae8c8a92679db8 - languageName: node - linkType: hard - "minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": version: 3.3.6 resolution: "minipass@npm:3.3.6" @@ -10721,11 +11528,11 @@ __metadata: linkType: hard "nan@npm:^2.14.2": - version: 2.25.0 - resolution: "nan@npm:2.25.0" + version: 2.24.0 + resolution: "nan@npm:2.24.0" dependencies: node-gyp: "npm:latest" - checksum: 10c0/add28b255a880f705f937b6276550ebc09274e8ea9d0e8f598f286c817aedfba22223844297840e597a478d7264537294f8c1eda0eb33a228b7aee57ecf52d45 + checksum: 10c0/6f9828a15464999ccefcae61b0f94f1f37067048a56363966e892cc6a194e3500966ae6964dd5a6a8acc5e1a849d60d620b120a84bc66c60445379a930c5b0f8 languageName: node linkType: hard @@ -10847,8 +11654,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 12.2.0 - resolution: "node-gyp@npm:12.2.0" + version: 12.1.0 + resolution: "node-gyp@npm:12.1.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -10857,12 +11664,12 @@ __metadata: nopt: "npm:^9.0.0" proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" - tar: "npm:^7.5.4" + tar: "npm:^7.5.2" tinyglobby: "npm:^0.2.12" which: "npm:^6.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/3ed046746a5a7d90950cd8b0547332b06598443f31fe213ef4332a7174c7b7d259e1704835feda79b87d3f02e59d7791842aac60642ede4396ab25fdf0f8f759 + checksum: 10c0/f43efea8aaf0beb6b2f6184e533edad779b2ae38062953e21951f46221dd104006cc574154f2ad4a135467a5aae92c49e84ef289311a82e08481c5df0e8dc495 languageName: node linkType: hard @@ -11943,11 +12750,11 @@ __metadata: linkType: hard "qs@npm:^6.12.3": - version: 6.14.1 - resolution: "qs@npm:6.14.1" + version: 6.14.0 + resolution: "qs@npm:6.14.0" dependencies: side-channel: "npm:^1.1.0" - checksum: 10c0/0e3b22dc451f48ce5940cbbc7c7d9068d895074f8c969c0801ac15c1313d1859c4d738e46dc4da2f498f41a9ffd8c201bd9fb12df67799b827db94cc373d2613 + checksum: 10c0/8ea5d91bf34f440598ee389d4a7d95820e3b837d3fd9f433871f7924801becaa0cd3b3b4628d49a7784d06a8aea9bc4554d2b6d8d584e2d221dc06238a42909c languageName: node linkType: hard @@ -12218,13 +13025,13 @@ __metadata: linkType: hard "react-dom@npm:^19.2.3": - version: 19.2.4 - resolution: "react-dom@npm:19.2.4" + version: 19.2.3 + resolution: "react-dom@npm:19.2.3" dependencies: scheduler: "npm:^0.27.0" peerDependencies: - react: ^19.2.4 - checksum: 10c0/f0c63f1794dedb154136d4d0f59af00b41907f4859571c155940296808f4b94bf9c0c20633db75b5b2112ec13d8d7dd4f9bf57362ed48782f317b11d05a44f35 + react: ^19.2.3 + checksum: 10c0/dc43f7ede06f46f3acc16ee83107c925530de9b91d1d0b3824583814746ff4c498ea64fd65cd83aba363205268adff52e2827c582634ae7b15069deaeabc4892 languageName: node linkType: hard @@ -12255,15 +13062,15 @@ __metadata: linkType: hard "react-dropzone@npm:^14.4.0": - version: 14.4.0 - resolution: "react-dropzone@npm:14.4.0" + version: 14.4.1 + resolution: "react-dropzone@npm:14.4.1" dependencies: attr-accept: "npm:^2.2.4" file-selector: "npm:^2.1.0" prop-types: "npm:^15.8.1" peerDependencies: react: ">= 16.8 || 18.0.0" - checksum: 10c0/a714b171af3c3a51b0a940e8e16e1a9ed2ee2ff5e9b6ccc8bd2c21a2dcee310532a46479eee0833ceb6d607086b99716f06749e014ed293e68694a9bb2ebbaee + checksum: 10c0/ee66f88a06fcd1250f0e0d79cc967055f9b9fb9ce1d024c2ca92ff165b81fb44fe680b5f4e1bd49f9ca64dd834018868a6d8996548426cafcc0d770c075570c8 languageName: node linkType: hard @@ -12299,6 +13106,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^19.2.0": + version: 19.2.3 + resolution: "react-is@npm:19.2.3" + checksum: 10c0/2b54c422c21b8dbd68a435a1cce21ecd5b6f06f48659531f7d53dd7368365da5a67e946f352fb2010d11ca40658aa67bec90995f0f1ec5556c0f71dbffe54994 + languageName: node + linkType: hard + "react-is@npm:^19.2.3": version: 19.2.4 resolution: "react-is@npm:19.2.4" @@ -12408,22 +13222,22 @@ __metadata: linkType: hard "react-transition-state@npm:^2.3.1": - version: 2.3.3 - resolution: "react-transition-state@npm:2.3.3" + version: 2.3.1 + resolution: "react-transition-state@npm:2.3.1" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 10c0/701e0adf639c0f05ee043431472211f8a7805488448a4908c9d97c431be26847acfe8ba6b0772931c305496598ea16329bdace407260fdba95be2844374c91e3 + checksum: 10c0/145f20e45c53d570f9db5fe749e0fd794b62bdf464c67c594c454df44f31fa58c16ccec705f9fdccf4c5250a309e4f7da5bd2e85cd686ba52d6b79e1c22b811f languageName: node linkType: hard "react-virtualized-auto-sizer@npm:^2.0.2": - version: 2.0.2 - resolution: "react-virtualized-auto-sizer@npm:2.0.2" + version: 2.0.3 + resolution: "react-virtualized-auto-sizer@npm:2.0.3" peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - checksum: 10c0/61c24a1cb17277b4fb571acb3be47f34d011968191680e75c4b7ff8c9b6c9ee5c60a939b8cc8559d3c7ae1ca1fd6c2aa6d7a0d9c134bfdff7e9efadaa2bdaefa + checksum: 10c0/3788e77a696a696a0f5a72de8a43cab7bdf8b60476d18244802e0cd8ba6d3d83bebb3aa0c56a2f28a911b701056d0c323a6c965ed26ae413503528f028261c94 languageName: node linkType: hard @@ -12450,9 +13264,9 @@ __metadata: linkType: hard "react@npm:^19.2.3": - version: 19.2.4 - resolution: "react@npm:19.2.4" - checksum: 10c0/cd2c9ff67a720799cc3b38a516009986f7fc4cb8d3e15716c6211cf098d1357ee3e348ab05ad0600042bbb0fd888530ba92e329198c92eafa0994f5213396596 + version: 19.2.3 + resolution: "react@npm:19.2.3" + checksum: 10c0/094220b3ba3a76c1b668f972ace1dd15509b157aead1b40391d1c8e657e720c201d9719537375eff08f5e0514748c0319063392a6f000e31303aafc4471f1436 languageName: node linkType: hard @@ -12700,7 +13514,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.4, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.11, resolve@npm:^1.4.0": +"resolve@npm:^1.1.4, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.10, resolve@npm:^1.22.11, resolve@npm:^1.4.0": version: 1.22.11 resolution: "resolve@npm:1.22.11" dependencies: @@ -12726,7 +13540,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.1.4#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.11#optional!builtin, resolve@patch:resolve@npm%3A^1.4.0#optional!builtin": +"resolve@patch:resolve@npm%3A^1.1.4#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.10#optional!builtin, resolve@patch:resolve@npm%3A^1.22.11#optional!builtin, resolve@patch:resolve@npm%3A^1.4.0#optional!builtin": version: 1.22.11 resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" dependencies: @@ -12884,6 +13698,7 @@ __metadata: leaflet: "npm:^1.9.4" loader-utils: "npm:^3.2.1" lodash: "npm:4.*" + marked: "npm:^17.0.1" mini-css-extract-plugin: "npm:^2.10.0" moment: "npm:^2.29.4" moment-timezone: "npm:^0.6.0" @@ -13019,9 +13834,9 @@ __metadata: linkType: hard "sax@npm:^1.2.4, sax@npm:^1.4.1": - version: 1.4.4 - resolution: "sax@npm:1.4.4" - checksum: 10c0/acb642f2de02ad6ae157cbf91fb026acea80cdf92e88c0aec2aa350c7db3479f62a7365c34a58e3b70a72ce11fa856a02c38cfd27f49e83c18c9c7e1d52aee55 + version: 1.4.3 + resolution: "sax@npm:1.4.3" + checksum: 10c0/45bba07561d93f184a8686e1a543418ced8c844b994fbe45cc49d5cd2fc8ac7ec949dae38565e35e388ad0cca2b75997a29b6857c927bf6553da3f80ed0e4e62 languageName: node linkType: hard @@ -13073,7 +13888,16 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.2, semver@npm:^7.6.3, semver@npm:^7.7.2, semver@npm:^7.7.3": +"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.7.2, semver@npm:^7.7.3": + version: 7.7.3 + resolution: "semver@npm:7.7.3" + bin: + semver: bin/semver.js + checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e + languageName: node + linkType: hard + +"semver@npm:^7.6.3": version: 7.7.4 resolution: "semver@npm:7.7.4" bin: @@ -13419,24 +14243,24 @@ __metadata: linkType: hard "socket.io-client@npm:^4.5.0": - version: 4.8.3 - resolution: "socket.io-client@npm:4.8.3" + version: 4.8.1 + resolution: "socket.io-client@npm:4.8.1" dependencies: "@socket.io/component-emitter": "npm:~3.1.0" - debug: "npm:~4.4.1" + debug: "npm:~4.3.2" engine.io-client: "npm:~6.6.1" socket.io-parser: "npm:~4.2.4" - checksum: 10c0/76c0d86de0b636d0bf5011cf3425212c900f43dac632db6eb493816920cd035af7ddd92fea9a106b45eb347405953c0414eb3a5d465b180215e46fc8b61420b3 + checksum: 10c0/544c49cc8cc77118ef68b758a8a580c8e680a5909cae05c566d2cc07ec6cd6720a4f5b7e985489bf2a8391749177a5437ac30b8afbdf30b9da6402687ad51c86 languageName: node linkType: hard "socket.io-parser@npm:~4.2.4": - version: 4.2.5 - resolution: "socket.io-parser@npm:4.2.5" + version: 4.2.4 + resolution: "socket.io-parser@npm:4.2.4" dependencies: "@socket.io/component-emitter": "npm:~3.1.0" - debug: "npm:~4.4.1" - checksum: 10c0/fce2b7a76eed9babc7b4156e82e5cd478b0bc5eb877d52ae48aa0d90fe2d11be5a9e576fbc8bdbf3dd656863965ad133ba6c7d45172a1e020270e7c7891c1b35 + debug: "npm:~4.3.1" + checksum: 10c0/9383b30358fde4a801ea4ec5e6860915c0389a091321f1c1f41506618b5cf7cd685d0a31c587467a0c4ee99ef98c2b99fb87911f9dfb329716c43b587f29ca48 languageName: node linkType: hard @@ -13569,14 +14393,14 @@ __metadata: linkType: hard "sql-formatter@npm:^15.6.10": - version: 15.7.0 - resolution: "sql-formatter@npm:15.7.0" + version: 15.6.12 + resolution: "sql-formatter@npm:15.6.12" dependencies: argparse: "npm:^2.0.1" nearley: "npm:^2.20.1" bin: sql-formatter: bin/sql-formatter-cli.cjs - checksum: 10c0/2af1e9deb75c733119f800bdd4c4c4f9e7438165fc082d0c264e4a6295ae641082281b90b5d70f2faac8f0f79ab9b0971124a8aa7d46d5c4837a9e5cd6347bfc + checksum: 10c0/af386685dc2b061aac89eff5723b818431c40bf4f104f15338ccf90e5a9f416e19228f822eb10461d2f8428268aaedeb4533e2d5cea9d5a73ecbb577c18449d2 languageName: node linkType: hard @@ -13942,8 +14766,8 @@ __metadata: linkType: hard "svelte@npm:^5.0.0": - version: 5.49.2 - resolution: "svelte@npm:5.49.2" + version: 5.46.0 + resolution: "svelte@npm:5.46.0" dependencies: "@jridgewell/remapping": "npm:^2.3.4" "@jridgewell/sourcemap-codec": "npm:^1.5.0" @@ -13953,14 +14777,14 @@ __metadata: aria-query: "npm:^5.3.1" axobject-query: "npm:^4.1.0" clsx: "npm:^2.1.1" - devalue: "npm:^5.6.2" + devalue: "npm:^5.5.0" esm-env: "npm:^1.2.1" - esrap: "npm:^2.2.2" + esrap: "npm:^2.2.1" is-reference: "npm:^3.0.3" locate-character: "npm:^3.0.0" magic-string: "npm:^0.30.11" zimmerframe: "npm:^1.1.2" - checksum: 10c0/f0698452adca08809597cbefc42c5073933c210b3d77fb485de61401068d34da8fd9e20d754925e90b216336cb004510fc1ef132a537ff8f318975fe16060e9f + checksum: 10c0/c54e551562a4522a507f346d9048158c7ad529b93f1f22e5752612960f94962fffde66bf17c80cdc35177352632bd8a35a553b460df00f37387aae7d5fa5b2b8 languageName: node linkType: hard @@ -14069,11 +14893,11 @@ __metadata: linkType: hard "synckit@npm:^0.11.8": - version: 0.11.12 - resolution: "synckit@npm:0.11.12" + version: 0.11.11 + resolution: "synckit@npm:0.11.11" dependencies: "@pkgr/core": "npm:^0.2.9" - checksum: 10c0/cc4d446806688ae0d728ae7bb3f53176d065cf9536647fb85bdd721dcefbd7bf94874df6799ff61580f2b03a392659219b778a9254ad499f9a1f56c34787c235 + checksum: 10c0/f0761495953d12d94a86edf6326b3a565496c72f9b94c02549b6961fb4d999f4ca316ce6b3eb8ed2e4bfc5056a8de65cda0bd03a233333a35221cd2fdc0e196b languageName: node linkType: hard @@ -14086,7 +14910,7 @@ __metadata: languageName: node linkType: hard -"tapable@npm:^2.2.1, tapable@npm:^2.3.0": +"tapable@npm:^2.2.0, tapable@npm:^2.2.1, tapable@npm:^2.3.0": version: 2.3.0 resolution: "tapable@npm:2.3.0" checksum: 10c0/cb9d67cc2c6a74dedc812ef3085d9d681edd2c1fa18e4aef57a3c0605fdbe44e6b8ea00bd9ef21bc74dd45314e39d31227aa031ebf2f5e38164df514136f2681 @@ -14107,20 +14931,20 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.5.4": - version: 7.5.7 - resolution: "tar@npm:7.5.7" +"tar@npm:^7.5.2": + version: 7.5.2 + resolution: "tar@npm:7.5.2" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10c0/51f261afc437e1112c3e7919478d6176ea83f7f7727864d8c2cce10f0b03a631d1911644a567348c3063c45abdae39718ba97abb073d22aa3538b9a53ae1e31c + checksum: 10c0/a7d8b801139b52f93a7e34830db0de54c5aa45487c7cb551f6f3d44a112c67f1cb8ffdae856b05fd4f17b1749911f1c26f1e3a23bbe0279e17fd96077f13f467 languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.3.12, terser-webpack-plugin@npm:^5.3.16": +"terser-webpack-plugin@npm:^5.3.11, terser-webpack-plugin@npm:^5.3.12": version: 5.3.16 resolution: "terser-webpack-plugin@npm:5.3.16" dependencies: @@ -14143,8 +14967,8 @@ __metadata: linkType: hard "terser@npm:^5.31.1": - version: 5.46.0 - resolution: "terser@npm:5.46.0" + version: 5.44.1 + resolution: "terser@npm:5.44.1" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.15.0" @@ -14152,7 +14976,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10c0/93ad468f13187c4f66b609bbfc00a6aee752007779ca3157f2c1ee063697815748d6010fd449a16c30be33213748431d5f54cc0224ba6a3fbbf5acd3582a4356 + checksum: 10c0/ee7a76692cb39b1ed22c30ff366c33ff3c977d9bb769575338ff5664676168fcba59192fb5168ef80c7cd901ef5411a1b0351261f5eaa50decf0fc71f63bde75 languageName: node linkType: hard @@ -14280,6 +15104,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^2.1.0": + version: 2.1.0 + resolution: "ts-api-utils@npm:2.1.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 10c0/9806a38adea2db0f6aa217ccc6bc9c391ddba338a9fe3080676d0d50ed806d305bb90e8cef0276e793d28c8a929f400abb184ddd7ff83a416959c0f4d2ce754f + languageName: node + linkType: hard + "ts-api-utils@npm:^2.4.0": version: 2.4.0 resolution: "ts-api-utils@npm:2.4.0" @@ -14438,17 +15271,17 @@ __metadata: linkType: hard "typescript-eslint@npm:^8.54.0": - version: 8.54.0 - resolution: "typescript-eslint@npm:8.54.0" + version: 8.56.0 + resolution: "typescript-eslint@npm:8.56.0" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.54.0" - "@typescript-eslint/parser": "npm:8.54.0" - "@typescript-eslint/typescript-estree": "npm:8.54.0" - "@typescript-eslint/utils": "npm:8.54.0" + "@typescript-eslint/eslint-plugin": "npm:8.56.0" + "@typescript-eslint/parser": "npm:8.56.0" + "@typescript-eslint/typescript-estree": "npm:8.56.0" + "@typescript-eslint/utils": "npm:8.56.0" peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/0ba92aa22c0aa10c88b0f4732950ed64245947f1c4ac17328dff94b43eaeddd3068595788725781fba07a87cc964304a075b3e37f9a86312173498fcc6ab4338 + checksum: 10c0/13c47bb4a82d6714d482e96991faf2895c45a8e74235191a2ebbd36272487595c0824d128958942a1d1d18eddf8ca40c5850e2e314958a0a2e3c40be92f2d5a0 languageName: node linkType: hard @@ -14673,8 +15506,8 @@ __metadata: linkType: hard "update-browserslist-db@npm:^1.2.0": - version: 1.2.3 - resolution: "update-browserslist-db@npm:1.2.3" + version: 1.2.2 + resolution: "update-browserslist-db@npm:1.2.2" dependencies: escalade: "npm:^3.2.0" picocolors: "npm:^1.1.1" @@ -14682,7 +15515,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10c0/13a00355ea822388f68af57410ce3255941d5fb9b7c49342c4709a07c9f230bbef7f7499ae0ca7e0de532e79a82cc0c4edbd125f1a323a1845bf914efddf8bec + checksum: 10c0/39c3ea08b397ffc8dc3a1c517f5c6ed5cc4179b5e185383dab9bf745879623c12062a2e6bf4f9427cc59389c7bfa0010e86858b923c1e349e32fdddd9b043bb2 languageName: node linkType: hard @@ -14925,13 +15758,13 @@ __metadata: languageName: node linkType: hard -"watchpack@npm:^2.5.1": - version: 2.5.1 - resolution: "watchpack@npm:2.5.1" +"watchpack@npm:^2.4.4": + version: 2.4.4 + resolution: "watchpack@npm:2.4.4" dependencies: glob-to-regexp: "npm:^0.4.1" graceful-fs: "npm:^4.1.2" - checksum: 10c0/dffbb483d1f61be90dc570630a1eb308581e2227d507d783b1d94a57ac7b705ecd9a1a4b73d73c15eab596d39874e5276a3d9cb88bbb698bafc3f8d08c34cf17 + checksum: 10c0/6c0901f75ce245d33991225af915eea1c5ae4ba087f3aee2b70dd377d4cacb34bef02a48daf109da9d59b2d31ec6463d924a0d72f8618ae1643dd07b95de5275 languageName: node linkType: hard @@ -15033,8 +15866,8 @@ __metadata: linkType: hard "webpack@npm:^5.103.0": - version: 5.105.0 - resolution: "webpack@npm:5.105.0" + version: 5.103.0 + resolution: "webpack@npm:5.103.0" dependencies: "@types/eslint-scope": "npm:^3.7.7" "@types/estree": "npm:^1.0.8" @@ -15044,10 +15877,10 @@ __metadata: "@webassemblyjs/wasm-parser": "npm:^1.14.1" acorn: "npm:^8.15.0" acorn-import-phases: "npm:^1.0.3" - browserslist: "npm:^4.28.1" + browserslist: "npm:^4.26.3" chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.19.0" - es-module-lexer: "npm:^2.0.0" + enhanced-resolve: "npm:^5.17.3" + es-module-lexer: "npm:^1.2.1" eslint-scope: "npm:5.1.1" events: "npm:^3.2.0" glob-to-regexp: "npm:^0.4.1" @@ -15058,15 +15891,15 @@ __metadata: neo-async: "npm:^2.6.2" schema-utils: "npm:^4.3.3" tapable: "npm:^2.3.0" - terser-webpack-plugin: "npm:^5.3.16" - watchpack: "npm:^2.5.1" + terser-webpack-plugin: "npm:^5.3.11" + watchpack: "npm:^2.4.4" webpack-sources: "npm:^3.3.3" peerDependenciesMeta: webpack-cli: optional: true bin: webpack: bin/webpack.js - checksum: 10c0/4aea6b976485b5364e122f301c08f48efa84ddb2c0cb5d09f27445d1f2da0b9875cd889e41b58cac3ff05618a9c965be716df52586d151b5f52a7bbed7662174 + checksum: 10c0/d0cf86f8cac249874d6f36292e25011413ebb5bae82c48fa78a165a217e63db00b1a1f563f5195070eb17a055c6da4b6ab89fbdd37f781abdda862aa8c0bd623 languageName: node linkType: hard @@ -15143,8 +15976,8 @@ __metadata: linkType: hard "which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19, which-typed-array@npm:^1.1.2": - version: 1.1.20 - resolution: "which-typed-array@npm:1.1.20" + version: 1.1.19 + resolution: "which-typed-array@npm:1.1.19" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.8" @@ -15153,7 +15986,7 @@ __metadata: get-proto: "npm:^1.0.1" gopd: "npm:^1.2.0" has-tostringtag: "npm:^1.0.2" - checksum: 10c0/16fcdada95c8afb821cd1117f0ab50b4d8551677ac08187f21d4e444530913c9ffd2dac634f0c1183345f96344b69280f40f9a8bc52164ef409e555567c2604b + checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f languageName: node linkType: hard @@ -15257,7 +16090,22 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.18.0, ws@npm:^8.19.0": +"ws@npm:^8.18.0": + version: 8.18.3 + resolution: "ws@npm:8.18.3" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 + languageName: node + linkType: hard + +"ws@npm:^8.19.0": version: 8.19.0 resolution: "ws@npm:8.19.0" peerDependencies: @@ -15272,9 +16120,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:~8.18.3": - version: 8.18.3 - resolution: "ws@npm:8.18.3" +"ws@npm:~8.17.1": + version: 8.17.1 + resolution: "ws@npm:8.17.1" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -15283,7 +16131,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 + checksum: 10c0/f4a49064afae4500be772abdc2211c8518f39e1c959640457dcee15d4488628620625c783902a52af2dd02f68558da2868fd06e6fd0e67ebcd09e6881b1b5bfe languageName: node linkType: hard @@ -15411,8 +16259,8 @@ __metadata: linkType: hard "zustand@npm:^5.0.9": - version: 5.0.11 - resolution: "zustand@npm:5.0.11" + version: 5.0.9 + resolution: "zustand@npm:5.0.9" peerDependencies: "@types/react": ">=18.0.0" immer: ">=9.0.6" @@ -15427,6 +16275,6 @@ __metadata: optional: true use-sync-external-store: optional: true - checksum: 10c0/61836b48dac5978c9d1b8289d5162a151bee77828371b9aba6431a079b77faca0635ba53da3f7b331295fbc4e78318a109a4527f7a051cb63abfe79b69ccbecf + checksum: 10c0/552849e4546c7760704d6509a5c412d57c62a1fa9e53169c939ba5e3d75f8cb3df50a64c3a22e6c3f1c8cc00de7543e4edd61ab5ae0c9169ba9a98e28303aba6 languageName: node linkType: hard From 9b2639d7affae159a4bbc5713bd9836a711342fb Mon Sep 17 00:00:00 2001 From: Dave Page Date: Wed, 17 Dec 2025 16:32:46 +0000 Subject: [PATCH 02/17] Add support for a number of different AI generated reports on security, performance, and schema design on servers, databases, and schemas, as appropriate. --- docs/en_US/ai_tools.rst | 242 ++++ docs/en_US/developer_tools.rst | 1 + docs/en_US/images/ai_security_report.png | Bin 0 -> 181401 bytes docs/en_US/menu_bar.rst | 6 + web/pgadmin/llm/__init__.py | 1162 +++++++++++++++++ web/pgadmin/llm/reports/__init__.py | 37 + web/pgadmin/llm/reports/generator.py | 291 +++++ web/pgadmin/llm/reports/models.py | 112 ++ web/pgadmin/llm/reports/pipeline.py | 453 +++++++ web/pgadmin/llm/reports/prompts.py | 237 ++++ web/pgadmin/llm/reports/queries.py | 907 +++++++++++++ web/pgadmin/llm/reports/sections.py | 387 ++++++ web/pgadmin/llm/static/js/AIReport.jsx | 764 +++++++++++ web/pgadmin/llm/static/js/SecurityReport.jsx | 383 ++++++ web/pgadmin/llm/static/js/ai_tools.js | 469 +++++++ .../llm/tests/test_report_endpoints.py | 233 ++++ web/pgadmin/llm/tools/__init__.py | 30 + web/pgadmin/llm/tools/database.py | 806 ++++++++++++ .../javascript/llm/AIReport.spec.js | 297 +++++ web/webpack.config.js | 1 + web/webpack.shim.js | 1 + 21 files changed, 6819 insertions(+) create mode 100644 docs/en_US/ai_tools.rst create mode 100644 docs/en_US/images/ai_security_report.png create mode 100644 web/pgadmin/llm/reports/__init__.py create mode 100644 web/pgadmin/llm/reports/generator.py create mode 100644 web/pgadmin/llm/reports/models.py create mode 100644 web/pgadmin/llm/reports/pipeline.py create mode 100644 web/pgadmin/llm/reports/prompts.py create mode 100644 web/pgadmin/llm/reports/queries.py create mode 100644 web/pgadmin/llm/reports/sections.py create mode 100644 web/pgadmin/llm/static/js/AIReport.jsx create mode 100644 web/pgadmin/llm/static/js/SecurityReport.jsx create mode 100644 web/pgadmin/llm/static/js/ai_tools.js create mode 100644 web/pgadmin/llm/tests/test_report_endpoints.py create mode 100644 web/pgadmin/llm/tools/__init__.py create mode 100644 web/pgadmin/llm/tools/database.py create mode 100644 web/regression/javascript/llm/AIReport.spec.js diff --git a/docs/en_US/ai_tools.rst b/docs/en_US/ai_tools.rst new file mode 100644 index 00000000000..fb96a7e6351 --- /dev/null +++ b/docs/en_US/ai_tools.rst @@ -0,0 +1,242 @@ +.. _ai_tools: + +******************* +`AI Reports`:index: +******************* + +**AI Reports** is a feature that provides AI-powered database analysis and insights +using Large Language Models (LLMs). Use the *Tools → AI Reports* menu to access +the various AI-powered reports. + +The AI Reports feature allows you to: + + * Generate security reports to identify potential security vulnerabilities and configuration issues. + + * Create performance reports with optimization recommendations for queries and configurations. + + * Perform design reviews to analyze database schema structure and suggest improvements. + +**Prerequisites:** + +Before using AI Reports, you must: + + 1. Ensure AI features are enabled in the server configuration (set ``LLM_ENABLED`` to ``True`` in ``config.py``). + + 2. Configure an LLM provider in :ref:`Preferences → AI `. + +**Note:** + + * AI Reports using cloud providers (Anthropic, OpenAI) require an active internet connection. + Local providers (Ollama, Docker Model Runner) do not require internet access. + + * API usage may incur costs depending on your LLM provider's pricing model. + Local providers (Ollama, Docker Model Runner) are free to use. + + * The quality and accuracy of reports depend on the LLM provider and model configured. + + +Configuring AI Reports +********************** + +To configure AI Reports, navigate to *File → Preferences → AI* (or click the *Settings* +button and select *AI*). + +.. image:: images/preferences_ai.png + :alt: AI preferences + :align: center + +Select your preferred LLM provider from the dropdown: + +**Anthropic** + Use Claude models from Anthropic. Requires an Anthropic API key. + + * **API Key File**: Path to a file containing your Anthropic API key (obtain from https://console.anthropic.com/). + * **Model**: Select from available Claude models (e.g., claude-sonnet-4-20250514). + +**OpenAI** + Use GPT models from OpenAI. Requires an OpenAI API key. + + * **API Key File**: Path to a file containing your OpenAI API key (obtain from https://platform.openai.com/). + * **Model**: Select from available GPT models (e.g., gpt-4). + +**Ollama** + Use locally-hosted open-source models via Ollama. Requires a running Ollama instance. + + * **API URL**: The URL of your Ollama server (default: http://localhost:11434). + * **Model**: Enter the name of the Ollama model to use (e.g., llama2, mistral). + +**Docker Model Runner** + Use models running in Docker Desktop's built-in model runner (available in Docker Desktop 4.40+). + No API key is required. + + * **API URL**: The URL of the Docker Model Runner API (default: http://localhost:12434). + * **Model**: Select from available models or enter a custom model name. + +After configuring your provider, click *Save* to apply the changes. + + +Security Reports +**************** + +Security Reports analyze your PostgreSQL server, database, or schema for potential +security vulnerabilities and configuration issues. + +To generate a security report: + +1. In the *Browser* tree, select a server, database, or schema. + +2. Choose *Tools → AI Reports → Security* from the menu, or right-click the + object and select *Security* from the context menu. + +3. The report will be generated and displayed in a new tab. + +.. image:: images/ai_security_report.png + :alt: AI security report + :align: center + +**Security Report Scope:** + +* **Server Level**: Analyzes server configuration, authentication settings, roles, and permissions. + +* **Database Level**: Reviews database-specific security settings, roles with database access, and object permissions. + +* **Schema Level**: Examines schema permissions, object ownership, and access controls. + +Each report includes: + +* **Security Findings**: Identified vulnerabilities or security concerns. + +* **Risk Assessment**: Severity levels for each finding (Critical, High, Medium, Low). + +* **Recommendations**: Specific actions to remediate security issues. + +* **Best Practices**: General security recommendations for PostgreSQL. + + +Performance Reports +******************* + +Performance Reports analyze query performance, configuration settings, and provide +optimization recommendations. + +To generate a performance report: + +1. In the *Browser* tree, select a server or database. + +2. Choose *Tools → AI Reports → Performance* from the menu, or right-click the + object and select *Performance* from the context menu. + +3. The report will be generated and displayed in a new tab. + +**Performance Report Scope:** + +* **Server Level**: Analyzes server configuration parameters, resource utilization, and overall server performance metrics. + +* **Database Level**: Reviews database-specific configuration, query performance, index usage, and table statistics. + +Each report includes: + +* **Performance Metrics**: Key performance indicators and statistics. + +* **Configuration Analysis**: Review of relevant configuration parameters. + +* **Query Optimization**: Recommendations for improving slow queries. + +* **Index Recommendations**: Suggestions for adding, removing, or modifying indexes. + +* **Capacity Planning**: Resource utilization trends and recommendations. + + +Design Review Reports +********************* + +Design Review Reports analyze your database schema structure and suggest +improvements for normalization, naming conventions, and best practices. + +To generate a design review report: + +1. In the *Browser* tree, select a database or schema. + +2. Choose *Tools → AI Reports → Design* from the menu, or right-click the + object and select *Design* from the context menu. + +3. The report will be generated and displayed in a new tab. + +**Design Review Scope:** + +* **Database Level**: Reviews overall database structure, schema organization, and cross-schema dependencies. + +* **Schema Level**: Analyzes tables, views, functions, and other objects within the schema. + +Each report includes: + +* **Schema Structure Analysis**: Review of table structures, relationships, and constraints. + +* **Normalization Review**: Recommendations for database normalization (1NF, 2NF, 3NF, etc.). + +* **Naming Conventions**: Suggestions for consistent naming patterns. + +* **Data Type Usage**: Review of data type choices and recommendations. + +* **Index Design**: Analysis of indexing strategy. + +* **Best Practices**: General PostgreSQL schema design recommendations. + + +Working with Reports +******************** + +All AI reports are displayed in a dedicated panel with the following features: + +**Report Display** + Reports are formatted as Markdown and rendered with syntax highlighting for SQL code. + +**Toolbar Actions** + + * **Stop** - Cancel the current report generation. This is useful if the report + is taking too long or if you want to change parameters. + + * **Regenerate** - Generate a new report for the same object. Useful when you + want to get a fresh analysis or if data has changed. + + * **Download** - Download the report as a Markdown (.md) file. The filename + includes the report type, object name, and date for easy identification. + +**Multiple Reports** + You can generate and view multiple reports simultaneously. Each report opens in + a new tab, allowing you to compare reports across different servers, databases, + or schemas. + +**Report Management** + Each report tab can be closed individually by clicking the *X* in the tab. + Panel titles show the object name and report type for easy identification. + +**Copying Content** + You can select and copy text from reports to use in documentation or share with + your team. + + +Troubleshooting +*************** + +**"AI features are disabled in the server configuration"** + The administrator has disabled AI features on the server. Contact your + pgAdmin administrator to enable the ``LLM_ENABLED`` configuration option. + +**"Please configure an LLM provider in Preferences"** + You need to configure an LLM provider before using AI Reports. See *Configuring AI Reports* above. + +**"Please connect to the server/database first"** + You must establish a connection to the server or database before generating reports. + +**API Connection Errors** + * Verify your API key is correct (for Anthropic and OpenAI). + * Check your internet connection (for cloud providers). + * For Ollama, ensure the Ollama server is running and accessible. + * For Docker Model Runner, ensure Docker Desktop 4.40+ is running with the model runner enabled. + * Check that your firewall allows connections to the LLM provider's API. + +**Report Generation Fails** + * Check the pgAdmin logs for detailed error messages. + * Verify the database connection is still active. + * Ensure the selected model is available for your account/subscription. diff --git a/docs/en_US/developer_tools.rst b/docs/en_US/developer_tools.rst index bb67e33a013..cc9cd1347bf 100644 --- a/docs/en_US/developer_tools.rst +++ b/docs/en_US/developer_tools.rst @@ -17,3 +17,4 @@ PL/SQL code. schema_diff erd_tool psql_tool + ai_tools diff --git a/docs/en_US/images/ai_security_report.png b/docs/en_US/images/ai_security_report.png new file mode 100644 index 0000000000000000000000000000000000000000..be186814869e8afe1a1ca3b1f69317252fa3c3c8 GIT binary patch literal 181401 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

uFod`dR)yg!RriOCl(fKDtI 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 literal 0 HcmV?d00001 diff --git a/docs/en_US/menu_bar.rst b/docs/en_US/menu_bar.rst index 381d5a16ca7..871de8799ae 100644 --- a/docs/en_US/menu_bar.rst +++ b/docs/en_US/menu_bar.rst @@ -156,6 +156,12 @@ Use the *Tools* menu to access the following options (in alphabetical order): +------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | *Search Objects...* | Click to open the :ref:`Search Objects... ` and start searching any kind of objects in a database. | +------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ +| *AI Reports* | Click to access a submenu with AI-powered analysis options (requires :ref:`AI configuration `): | +| | | +| | - *Security Report* - Generate an AI-powered security analysis for the selected server, database, or schema. | +| | - *Performance Report* - Generate an AI-powered performance analysis for the selected server or database. | +| | - *Design Report* - Generate an AI-powered design review for the selected database or schema. | ++------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | *Add named restore point* | Click to open the :ref:`Add named restore point... ` dialog to take a point-in-time snapshot of the current | | | server state. | +------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/web/pgadmin/llm/__init__.py b/web/pgadmin/llm/__init__.py index 8573f873bfa..412debf018b 100644 --- a/web/pgadmin/llm/__init__.py +++ b/web/pgadmin/llm/__init__.py @@ -277,6 +277,26 @@ def get_exposed_url_endpoints(self): 'llm.refresh_models_ollama', 'llm.refresh_models_docker', 'llm.status', + # Security reports + 'llm.security_report', + 'llm.database_security_report', + 'llm.schema_security_report', + # Security report streams + 'llm.security_report_stream', + 'llm.database_security_report_stream', + 'llm.schema_security_report_stream', + # Performance reports + 'llm.performance_report', + 'llm.database_performance_report', + # Performance report streams + 'llm.performance_report_stream', + 'llm.database_performance_report_stream', + # Design reviews + 'llm.database_design_report', + 'llm.schema_design_report', + # Design report streams + 'llm.database_design_report_stream', + 'llm.schema_design_report_stream', ] @@ -761,3 +781,1145 @@ def _fetch_docker_models(api_url): return models +@blueprint.route( + "/security-report/", + methods=["GET"], + endpoint='security_report' +) +@pga_login_required +def generate_security_report(sid): + """ + Generate a security report for the specified server. + Uses the multi-stage pipeline to analyze server configuration. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import generate_report_sync + from pgadmin.utils.driver import get_driver + + # Check if LLM is configured + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + # Get database connection + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection() + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Server is not connected.') + ) + + # Generate report using pipeline + context = {} + success, result = generate_report_sync( + report_type='security', + scope='server', + conn=conn, + manager=manager, + context=context + ) + + if success: + return make_json_response( + success=1, + data={'report': result} + ) + else: + return make_json_response( + success=0, + errormsg=result + ) + + except Exception as e: + return make_json_response( + success=0, + errormsg=gettext('Failed to generate report: ') + str(e) + ) + + +@blueprint.route( + "/security-report//stream", + methods=["GET"], + endpoint='security_report_stream' +) +@pgCSRFProtect.exempt +@pga_login_required +def generate_security_report_stream(sid): + """ + Stream a security report for the specified server via SSE. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import ( + generate_report_streaming, create_sse_response + ) + from pgadmin.utils.driver import get_driver + + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection() + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Server is not connected.') + ) + + context = {} + generator = generate_report_streaming( + report_type='security', + scope='server', + conn=conn, + manager=manager, + context=context + ) + + return create_sse_response(generator) + + except Exception as e: + return make_json_response( + success=0, + errormsg=str(e) + ) + + +def _gather_security_config(conn, manager): + """ + Gather security-related configuration from the PostgreSQL server. + """ + security_info = { + 'server_version': manager.ver, + 'server_version_num': manager.sversion, + } + + # Get security-related settings from pg_settings + settings_query = """ + SELECT name, setting, short_desc, context, source + FROM pg_settings + WHERE name IN ( + -- Connection settings + 'listen_addresses', 'port', 'max_connections', + 'superuser_reserved_connections', + -- Authentication + 'password_encryption', 'krb_server_keyfile', + 'authentication_timeout', 'ssl', 'ssl_ciphers', + 'ssl_prefer_server_ciphers', 'ssl_min_protocol_version', + 'ssl_max_protocol_version', 'ssl_cert_file', 'ssl_key_file', + 'ssl_ca_file', 'ssl_crl_file', + -- Security + 'db_user_namespace', 'row_security', 'default_roles_initialized', + -- Logging (security-relevant) + 'log_connections', 'log_disconnections', + 'log_hostname', 'log_statement', 'log_line_prefix', + 'log_duration', 'log_min_duration_statement', + 'log_min_error_statement', 'log_replication_commands', + -- Client connection defaults + 'client_min_messages', 'search_path', + -- Resource usage (DoS prevention) + 'statement_timeout', 'idle_in_transaction_session_timeout', + 'idle_session_timeout', 'lock_timeout', + -- Write ahead log + 'wal_level', 'archive_mode', + -- Misc + 'shared_preload_libraries', 'local_preload_libraries' + ) + ORDER BY name + """ + + status, result = conn.execute_dict(settings_query) + if status and result: + security_info['settings'] = result.get('rows', []) + else: + security_info['settings'] = [] + + # Get pg_hba.conf rules (if available via pg_hba_file_rules) + hba_query = """ + SELECT line_number, type, database, user_name, address, + netmask, auth_method, options, error + FROM pg_hba_file_rules + ORDER BY line_number + """ + + status, result = conn.execute_dict(hba_query) + if status and result: + security_info['hba_rules'] = result.get('rows', []) + else: + # View might not exist or user doesn't have permission + security_info['hba_rules'] = [] + security_info['hba_note'] = 'Unable to read pg_hba.conf rules' + + # Get superuser roles + superusers_query = """ + SELECT rolname, rolcreaterole, rolcreatedb, rolbypassrls, + rolconnlimit, rolvaliduntil + FROM pg_roles + WHERE rolsuper = true + ORDER BY rolname + """ + + status, result = conn.execute_dict(superusers_query) + if status and result: + security_info['superusers'] = result.get('rows', []) + else: + security_info['superusers'] = [] + + # Get roles with special privileges + special_roles_query = """ + SELECT rolname, rolsuper, rolcreaterole, rolcreatedb, + rolreplication, rolbypassrls, rolcanlogin, rolconnlimit + FROM pg_roles + WHERE (rolcreaterole OR rolcreatedb OR rolreplication OR rolbypassrls) + AND NOT rolsuper + ORDER BY rolname + """ + + status, result = conn.execute_dict(special_roles_query) + if status and result: + security_info['privileged_roles'] = result.get('rows', []) + else: + security_info['privileged_roles'] = [] + + # Get roles with no password expiry that can login + no_expiry_query = """ + SELECT rolname, rolvaliduntil + FROM pg_roles + WHERE rolcanlogin = true + AND (rolvaliduntil IS NULL OR rolvaliduntil = 'infinity') + ORDER BY rolname + """ + + status, result = conn.execute_dict(no_expiry_query) + if status and result: + security_info['roles_no_expiry'] = result.get('rows', []) + else: + security_info['roles_no_expiry'] = [] + + # Check for loaded extensions + extensions_query = """ + SELECT extname, extversion + FROM pg_extension + ORDER BY extname + """ + + status, result = conn.execute_dict(extensions_query) + if status and result: + security_info['extensions'] = result.get('rows', []) + else: + security_info['extensions'] = [] + + return security_info + + +def _generate_security_report_llm(client, security_info, manager): + """ + Use the LLM to analyze the security configuration and generate a report. + """ + from pgadmin.llm.models import Message + + # Build the system prompt + system_prompt = """You are a PostgreSQL security expert. Your task is to analyze +the security configuration of a PostgreSQL database server and generate a comprehensive +security report in Markdown format. + +Focus ONLY on server-level security configuration, not database objects or data. + +IMPORTANT: Do NOT include a report title, header block, or generation date at the top +of your response. The title and metadata are added separately by the application. +Start directly with the Executive Summary section. + +The report should include: +1. **Executive Summary** - Brief overview of the security posture +2. **Critical Issues** - Security vulnerabilities that need immediate attention +3. **Warnings** - Important security concerns that should be addressed +4. **Recommendations** - Best practices that could improve security +5. **Configuration Review** - Analysis of key security settings + +Use severity indicators: +- 🔴 Critical - Immediate action required +- 🟠 Warning - Should be addressed soon +- 🟡 Advisory - Recommended improvement +- 🟢 Good - Configuration is secure + +Be specific and actionable in your recommendations. Include the current setting values +when discussing issues. Format the output as well-structured Markdown.""" + + # Build the user message with the security configuration + user_message = f"""Please analyze the following PostgreSQL server security configuration +and generate a security report. + +## Server Information +- Server Version: {security_info.get('server_version', 'Unknown')} + +## Security Settings +```json +{json.dumps(security_info.get('settings', []), indent=2, default=str)} +``` + +## pg_hba.conf Rules +{security_info.get('hba_note', '')} +```json +{json.dumps(security_info.get('hba_rules', []), indent=2, default=str)} +``` + +## Superuser Roles +```json +{json.dumps(security_info.get('superusers', []), indent=2, default=str)} +``` + +## Roles with Special Privileges +```json +{json.dumps(security_info.get('privileged_roles', []), indent=2, default=str)} +``` + +## Login Roles Without Password Expiry +```json +{json.dumps(security_info.get('roles_no_expiry', []), indent=2, default=str)} +``` + +## Installed Extensions +```json +{json.dumps(security_info.get('extensions', []), indent=2, default=str)} +``` + +Please generate a comprehensive security report analyzing this configuration.""" + + # Call the LLM + messages = [Message.user(user_message)] + response = client.chat( + messages=messages, + system_prompt=system_prompt, + max_tokens=4096, + temperature=0.3 # Lower temperature for more consistent analysis + ) + + return response.content + + +# ============================================================================= +# Database Security Report +# ============================================================================= + +@blueprint.route( + "/database-security-report//", + methods=["GET"], + endpoint='database_security_report' +) +@pga_login_required +def generate_database_security_report(sid, did): + """ + Generate a security report for the specified database. + Uses the multi-stage pipeline to analyze database security. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import generate_report_sync + from pgadmin.utils.driver import get_driver + + # Check if LLM is configured + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + # Get database connection + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection(did=did) + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Database is not connected.') + ) + + # Generate report using pipeline + context = { + 'database_name': conn.db + } + success, result = generate_report_sync( + report_type='security', + scope='database', + conn=conn, + manager=manager, + context=context + ) + + if success: + return make_json_response( + success=1, + data={'report': result} + ) + else: + return make_json_response( + success=0, + errormsg=result + ) + + except Exception as e: + return make_json_response( + success=0, + errormsg=gettext('Failed to generate report: ') + str(e) + ) + + +@blueprint.route( + "/database-security-report///stream", + methods=["GET"], + endpoint='database_security_report_stream' +) +@pgCSRFProtect.exempt +@pga_login_required +def generate_database_security_report_stream(sid, did): + """ + Stream a database security report via SSE. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import ( + generate_report_streaming, create_sse_response + ) + from pgadmin.utils.driver import get_driver + + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection(did=did) + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Database is not connected.') + ) + + context = { + 'database_name': conn.db + } + generator = generate_report_streaming( + report_type='security', + scope='database', + conn=conn, + manager=manager, + context=context + ) + + return create_sse_response(generator) + + except Exception as e: + return make_json_response( + success=0, + errormsg=str(e) + ) + + +# ============================================================================= +# Schema Security Report +# ============================================================================= + +@blueprint.route( + "/schema-security-report///", + methods=["GET"], + endpoint='schema_security_report' +) +@pga_login_required +def generate_schema_security_report(sid, did, scid): + """ + Generate a security report for the specified schema. + Uses the multi-stage pipeline to analyze schema security. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import generate_report_sync + from pgadmin.utils.driver import get_driver + + # Check if LLM is configured + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + # Get database connection + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection(did=did) + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Database is not connected.') + ) + + # Get schema name from scid + schema_query = "SELECT nspname FROM pg_namespace WHERE oid = %s" + status, result = conn.execute_dict(schema_query, [scid]) + if not status or not result.get('rows'): + return make_json_response( + success=0, + errormsg=gettext('Schema not found.') + ) + schema_name = result['rows'][0]['nspname'] + + # Generate report using pipeline + context = { + 'database_name': conn.db, + 'schema_name': schema_name, + 'schema_oid': scid + } + success, result = generate_report_sync( + report_type='security', + scope='schema', + conn=conn, + manager=manager, + context=context + ) + + if success: + return make_json_response( + success=1, + data={'report': result} + ) + else: + return make_json_response( + success=0, + errormsg=result + ) + + except Exception as e: + return make_json_response( + success=0, + errormsg=gettext('Failed to generate report: ') + str(e) + ) + + +@blueprint.route( + "/schema-security-report////stream", + methods=["GET"], + endpoint='schema_security_report_stream' +) +@pgCSRFProtect.exempt +@pga_login_required +def generate_schema_security_report_stream(sid, did, scid): + """ + Stream a schema security report via SSE. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import ( + generate_report_streaming, create_sse_response + ) + from pgadmin.utils.driver import get_driver + + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection(did=did) + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Database is not connected.') + ) + + # Get schema name from scid + schema_query = "SELECT nspname FROM pg_namespace WHERE oid = %s" + status, result = conn.execute_dict(schema_query, [scid]) + if not status or not result.get('rows'): + return make_json_response( + success=0, + errormsg=gettext('Schema not found.') + ) + schema_name = result['rows'][0]['nspname'] + + context = { + 'database_name': conn.db, + 'schema_name': schema_name, + 'schema_oid': scid + } + generator = generate_report_streaming( + report_type='security', + scope='schema', + conn=conn, + manager=manager, + context=context + ) + + return create_sse_response(generator) + + except Exception as e: + return make_json_response( + success=0, + errormsg=str(e) + ) + + +# ============================================================================= +# Server Performance Report +# ============================================================================= + +@blueprint.route( + "/performance-report/", + methods=["GET"], + endpoint='performance_report' +) +@pga_login_required +def generate_performance_report(sid): + """ + Generate a performance report for the specified server. + Uses the multi-stage pipeline to analyze server performance. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import generate_report_sync + from pgadmin.utils.driver import get_driver + + # Check if LLM is configured + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + # Get database connection + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection() + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Server is not connected.') + ) + + # Generate report using pipeline + context = {} + success, result = generate_report_sync( + report_type='performance', + scope='server', + conn=conn, + manager=manager, + context=context + ) + + if success: + return make_json_response( + success=1, + data={'report': result} + ) + else: + return make_json_response( + success=0, + errormsg=result + ) + + except Exception as e: + return make_json_response( + success=0, + errormsg=gettext('Failed to generate report: ') + str(e) + ) + + +@blueprint.route( + "/performance-report//stream", + methods=["GET"], + endpoint='performance_report_stream' +) +@pgCSRFProtect.exempt +@pga_login_required +def generate_performance_report_stream(sid): + """ + Stream a server performance report via SSE. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import ( + generate_report_streaming, create_sse_response + ) + from pgadmin.utils.driver import get_driver + + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection() + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Server is not connected.') + ) + + context = {} + generator = generate_report_streaming( + report_type='performance', + scope='server', + conn=conn, + manager=manager, + context=context + ) + + return create_sse_response(generator) + + except Exception as e: + return make_json_response( + success=0, + errormsg=str(e) + ) + + +# ============================================================================= +# Database Performance Report +# ============================================================================= + +@blueprint.route( + "/database-performance-report//", + methods=["GET"], + endpoint='database_performance_report' +) +@pga_login_required +def generate_database_performance_report(sid, did): + """ + Generate a performance report for the specified database. + Uses the multi-stage pipeline to analyze database performance. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import generate_report_sync + from pgadmin.utils.driver import get_driver + + # Check if LLM is configured + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + # Get database connection + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection(did=did) + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Database is not connected.') + ) + + # Generate report using pipeline + context = { + 'database_name': conn.db + } + success, result = generate_report_sync( + report_type='performance', + scope='database', + conn=conn, + manager=manager, + context=context + ) + + if success: + return make_json_response( + success=1, + data={'report': result} + ) + else: + return make_json_response( + success=0, + errormsg=result + ) + + except Exception as e: + return make_json_response( + success=0, + errormsg=gettext('Failed to generate report: ') + str(e) + ) + + +@blueprint.route( + "/database-performance-report///stream", + methods=["GET"], + endpoint='database_performance_report_stream' +) +@pgCSRFProtect.exempt +@pga_login_required +def generate_database_performance_report_stream(sid, did): + """ + Stream a database performance report via SSE. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import ( + generate_report_streaming, create_sse_response + ) + from pgadmin.utils.driver import get_driver + + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection(did=did) + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Database is not connected.') + ) + + context = { + 'database_name': conn.db + } + generator = generate_report_streaming( + report_type='performance', + scope='database', + conn=conn, + manager=manager, + context=context + ) + + return create_sse_response(generator) + + except Exception as e: + return make_json_response( + success=0, + errormsg=str(e) + ) + + +# ============================================================================= +# Database Design Review +# ============================================================================= + +@blueprint.route( + "/database-design-report//", + methods=["GET"], + endpoint='database_design_report' +) +@pga_login_required +def generate_database_design_report(sid, did): + """ + Generate a design review report for the specified database. + Uses the multi-stage pipeline to analyze database schema design. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import generate_report_sync + from pgadmin.utils.driver import get_driver + + # Check if LLM is configured + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + # Get database connection + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection(did=did) + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Database is not connected.') + ) + + # Generate report using pipeline + context = { + 'database_name': conn.db + } + success, result = generate_report_sync( + report_type='design', + scope='database', + conn=conn, + manager=manager, + context=context + ) + + if success: + return make_json_response( + success=1, + data={'report': result} + ) + else: + return make_json_response( + success=0, + errormsg=result + ) + + except Exception as e: + return make_json_response( + success=0, + errormsg=gettext('Failed to generate report: ') + str(e) + ) + + +@blueprint.route( + "/database-design-report///stream", + methods=["GET"], + endpoint='database_design_report_stream' +) +@pgCSRFProtect.exempt +@pga_login_required +def generate_database_design_report_stream(sid, did): + """ + Stream a database design report via SSE. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import ( + generate_report_streaming, create_sse_response + ) + from pgadmin.utils.driver import get_driver + + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection(did=did) + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Database is not connected.') + ) + + context = { + 'database_name': conn.db + } + generator = generate_report_streaming( + report_type='design', + scope='database', + conn=conn, + manager=manager, + context=context + ) + + return create_sse_response(generator) + + except Exception as e: + return make_json_response( + success=0, + errormsg=str(e) + ) + + +# ============================================================================= +# Schema Design Review +# ============================================================================= + +@blueprint.route( + "/schema-design-report///", + methods=["GET"], + endpoint='schema_design_report' +) +@pga_login_required +def generate_schema_design_report(sid, did, scid): + """ + Generate a design review report for the specified schema. + Uses the multi-stage pipeline to analyze schema design. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import generate_report_sync + from pgadmin.utils.driver import get_driver + + # Check if LLM is configured + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + # Get database connection + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection(did=did) + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Database is not connected.') + ) + + # Get schema name from scid + schema_query = "SELECT nspname FROM pg_namespace WHERE oid = %s" + status, result = conn.execute_dict(schema_query, [scid]) + if not status or not result.get('rows'): + return make_json_response( + success=0, + errormsg=gettext('Schema not found.') + ) + schema_name = result['rows'][0]['nspname'] + + # Generate report using pipeline + context = { + 'database_name': conn.db, + 'schema_name': schema_name, + 'schema_oid': scid + } + success, result = generate_report_sync( + report_type='design', + scope='schema', + conn=conn, + manager=manager, + context=context + ) + + if success: + return make_json_response( + success=1, + data={'report': result} + ) + else: + return make_json_response( + success=0, + errormsg=result + ) + + except Exception as e: + return make_json_response( + success=0, + errormsg=gettext('Failed to generate report: ') + str(e) + ) + + +@blueprint.route( + "/schema-design-report////stream", + methods=["GET"], + endpoint='schema_design_report_stream' +) +@pgCSRFProtect.exempt +@pga_login_required +def generate_schema_design_report_stream(sid, did, scid): + """ + Stream a schema design report via SSE. + """ + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.reports.generator import ( + generate_report_streaming, create_sse_response + ) + from pgadmin.utils.driver import get_driver + + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'LLM is not configured. Please configure an LLM provider ' + 'in Preferences > AI.' + ) + ) + + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + conn = manager.connection(did=did) + + if not conn.connected(): + return make_json_response( + success=0, + errormsg=gettext('Database is not connected.') + ) + + # Get schema name from scid + schema_query = "SELECT nspname FROM pg_namespace WHERE oid = %s" + status, result = conn.execute_dict(schema_query, [scid]) + if not status or not result.get('rows'): + return make_json_response( + success=0, + errormsg=gettext('Schema not found.') + ) + schema_name = result['rows'][0]['nspname'] + + context = { + 'database_name': conn.db, + 'schema_name': schema_name, + 'schema_oid': scid + } + generator = generate_report_streaming( + report_type='design', + scope='schema', + conn=conn, + manager=manager, + context=context + ) + + return create_sse_response(generator) + + except Exception as e: + return make_json_response( + success=0, + errormsg=str(e) + ) diff --git a/web/pgadmin/llm/reports/__init__.py b/web/pgadmin/llm/reports/__init__.py new file mode 100644 index 00000000000..96d01367c62 --- /dev/null +++ b/web/pgadmin/llm/reports/__init__.py @@ -0,0 +1,37 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Multi-stage LLM report generation pipeline. + +This module provides a staged approach to generating reports that works +within token limits of various LLM models by breaking analysis into +sections that are summarized independently and then synthesized. +""" + +from pgadmin.llm.reports.pipeline import ReportPipeline +from pgadmin.llm.reports.models import Section, SectionResult, Severity +from pgadmin.llm.reports.sections import ( + SECURITY_SECTIONS, PERFORMANCE_SECTIONS, DESIGN_SECTIONS, + get_sections_for_report, get_sections_for_scope +) +from pgadmin.llm.reports.queries import get_query, execute_query + +__all__ = [ + 'ReportPipeline', + 'Section', + 'SectionResult', + 'Severity', + 'SECURITY_SECTIONS', + 'PERFORMANCE_SECTIONS', + 'DESIGN_SECTIONS', + 'get_sections_for_report', + 'get_sections_for_scope', + 'get_query', + 'execute_query', +] diff --git a/web/pgadmin/llm/reports/generator.py b/web/pgadmin/llm/reports/generator.py new file mode 100644 index 00000000000..9ff8afb824d --- /dev/null +++ b/web/pgadmin/llm/reports/generator.py @@ -0,0 +1,291 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""High-level report generation functions using the pipeline.""" + +import json +from typing import Generator, Optional, Any + +from flask import Response, stream_with_context +from flask_babel import gettext + +from pgadmin.llm.client import get_llm_client, LLMClient +from pgadmin.llm.reports.pipeline import ReportPipeline +from pgadmin.llm.reports.sections import get_sections_for_scope +from pgadmin.llm.reports.queries import execute_query, QUERIES + + +def create_query_executor(conn) -> callable: + """Create a query executor function for the pipeline. + + Args: + conn: Database connection object. + + Returns: + A callable that executes queries by ID. + """ + def executor(query_id: str, context: dict) -> dict[str, Any]: + """Execute a query by ID. + + Args: + query_id: The query identifier from QUERIES registry. + context: Execution context (may contain schema_id for filtering). + + Returns: + Dictionary with query results. + """ + query_def = QUERIES.get(query_id) + if not query_def: + return {'error': f'Unknown query: {query_id}', 'rows': []} + + sql = query_def['sql'] + + # Check if query requires an extension + required_ext = query_def.get('requires_extension') + if required_ext: + check_sql = f""" + SELECT EXISTS ( + SELECT 1 FROM pg_extension WHERE extname = '{required_ext}' + ) as available + """ + status, result = conn.execute_dict(check_sql) + if not (status and result and + result.get('rows', [{}])[0].get('available', False)): + return { + 'note': f"Extension '{required_ext}' not installed", + 'rows': [] + } + + # Handle schema-scoped queries + schema_id = context.get('schema_id') + if schema_id and '%s' in sql: + status, result = conn.execute_dict(sql, [schema_id]) + else: + status, result = conn.execute_dict(sql) + + if status and result: + return {'rows': result.get('rows', [])} + else: + return {'error': 'Query failed', 'rows': []} + + return executor + + +def generate_report_streaming( + report_type: str, + scope: str, + conn, + manager, + context: dict, + client: Optional[LLMClient] = None +) -> Generator[str, None, None]: + """Generate a report with streaming progress updates. + + Yields Server-Sent Events (SSE) formatted strings. + + Args: + report_type: One of 'security', 'performance', 'design'. + scope: One of 'server', 'database', 'schema'. + conn: Database connection. + manager: Connection manager. + context: Report context dict with keys like: + - server_version + - database_name + - schema_name + - schema_id (for schema-scoped reports) + client: Optional LLM client (will create one if not provided). + + Yields: + SSE-formatted event strings. + """ + # Get or create LLM client + if client is None: + client = get_llm_client() + if not client: + yield _sse_event({ + 'type': 'error', + 'message': gettext('Failed to initialize LLM client.') + }) + return + + # Get sections for this report type and scope + sections = get_sections_for_scope(report_type, scope) + if not sections: + yield _sse_event({ + 'type': 'error', + 'message': gettext('No sections available for this report type.') + }) + return + + # Add server version to context + context['server_version'] = manager.ver + + # Create the pipeline + query_executor = create_query_executor(conn) + pipeline = ReportPipeline( + report_type=report_type, + sections=sections, + client=client, + query_executor=query_executor + ) + + # Execute pipeline and stream events + try: + for event in pipeline.execute_with_progress(context): + if event.get('type') == 'complete': + # Add disclaimer to final report + report = event.get('report', '') + disclaimer = gettext( + '> **Note:** This report was generated by ' + '%(provider)s / %(model)s. ' + 'AI systems can make mistakes. Please verify all findings ' + 'and recommendations before taking action.\n\n' + ) % { + 'provider': client.provider_name, + 'model': client.model_name + } + event['report'] = disclaimer + report + + yield _sse_event(event) + + except Exception as e: + yield _sse_event({ + 'type': 'error', + 'message': gettext('Failed to generate report: ') + str(e) + }) + + +def generate_report_sync( + report_type: str, + scope: str, + conn, + manager, + context: dict, + client: Optional[LLMClient] = None +) -> tuple[bool, str]: + """Generate a report synchronously (non-streaming). + + Args: + report_type: One of 'security', 'performance', 'design'. + scope: One of 'server', 'database', 'schema'. + conn: Database connection. + manager: Connection manager. + context: Report context dict. + client: Optional LLM client. + + Returns: + Tuple of (success, report_or_error_message). + """ + # Get or create LLM client + if client is None: + client = get_llm_client() + if not client: + return False, gettext('Failed to initialize LLM client.') + + # Get sections for this report type and scope + sections = get_sections_for_scope(report_type, scope) + if not sections: + return False, gettext('No sections available for this report type.') + + # Add server version to context + context['server_version'] = manager.ver + + # Create and execute the pipeline + query_executor = create_query_executor(conn) + pipeline = ReportPipeline( + report_type=report_type, + sections=sections, + client=client, + query_executor=query_executor + ) + + try: + report = pipeline.execute(context) + + # Add disclaimer + disclaimer = gettext( + '> **Note:** This report was generated by ' + '%(provider)s / %(model)s. ' + 'AI systems can make mistakes. Please verify all findings ' + 'and recommendations before taking action.\n\n' + ) % { + 'provider': client.provider_name, + 'model': client.model_name + } + + return True, disclaimer + report + + except Exception as e: + return False, gettext('Failed to generate report: ') + str(e) + + +def _sse_event(data: dict) -> bytes: + """Format data as an SSE event. + + Args: + data: Event data dictionary. + + Returns: + SSE-formatted bytes with padding to help flush buffers. + """ + # Add padding comment to help flush buffers in some WSGI servers + # Some servers buffer until a certain amount of data is received + json_data = json.dumps(data) + # Minimum 2KB total to help flush various buffer sizes + padding_needed = max(0, 2048 - len(json_data) - 20) + padding = f": {'.' * padding_needed}\n" if padding_needed > 0 else "" + return f"{padding}data: {json_data}\n\n".encode('utf-8') + + +def _wrap_generator_with_keepalive(generator: Generator) -> Generator: + """Wrap a generator to add SSE keepalive and initial flush. + + Args: + generator: Original event generator. + + Yields: + SSE events (as bytes) with initial connection event. + """ + # Send initial comment to establish connection and flush headers + # The retry directive tells browser to reconnect after 3s if disconnected + yield b": SSE stream connected\nretry: 3000\n\n" + + # Yield all events from the original generator + for event in generator: + yield event + + +def create_sse_response(generator: Generator) -> Response: + """Create a Flask Response for SSE streaming. + + Args: + generator: Generator that yields SSE event strings. + + Returns: + Flask Response configured for SSE. + """ + # Wrap generator with keepalive/flush helper + wrapped = _wrap_generator_with_keepalive(generator) + + # stream_with_context maintains Flask's request context throughout + # the generator's lifecycle, which is required for streaming responses + response = Response( + stream_with_context(wrapped), + mimetype='text/event-stream', + headers={ + 'Cache-Control': 'no-cache, no-store, must-revalidate', + 'Pragma': 'no-cache', + 'Expires': '0', + 'Connection': 'keep-alive', + 'X-Accel-Buffering': 'no', # Disable nginx buffering + } + ) + # Disable Werkzeug's response buffering - critical for SSE to work + response.direct_passthrough = True + return response diff --git a/web/pgadmin/llm/reports/models.py b/web/pgadmin/llm/reports/models.py new file mode 100644 index 00000000000..d8853eb823e --- /dev/null +++ b/web/pgadmin/llm/reports/models.py @@ -0,0 +1,112 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Data models for the report generation pipeline.""" + +from dataclasses import dataclass, field +from typing import Any, Optional +from enum import Enum + + +class Severity(str, Enum): + """Severity levels for report findings.""" + CRITICAL = 'critical' + WARNING = 'warning' + ADVISORY = 'advisory' + GOOD = 'good' + INFO = 'info' + + +@dataclass +class Section: + """Definition of a report section. + + Attributes: + id: Unique identifier for the section. + name: Human-readable name for display. + description: What this section analyzes. + queries: List of query identifiers to run for this section. + scope: What scope this section applies to ('server', 'database', 'schema'). + """ + id: str + name: str + description: str + queries: list[str] + scope: list[str] = field(default_factory=lambda: ['server', 'database', 'schema']) + + +@dataclass +class SectionResult: + """Result from analyzing a report section. + + Attributes: + section_id: The section that was analyzed. + section_name: Human-readable section name. + data: Raw data gathered from SQL queries. + summary: LLM-generated summary of the section. + severity: Overall severity of findings in this section. + error: Error message if analysis failed. + """ + section_id: str + section_name: str + data: dict[str, Any] = field(default_factory=dict) + summary: str = '' + severity: Severity = Severity.INFO + error: Optional[str] = None + + @property + def has_error(self) -> bool: + """Check if this section had an error.""" + return self.error is not None + + def to_dict(self) -> dict: + """Convert to dictionary representation.""" + return { + 'section_id': self.section_id, + 'section_name': self.section_name, + 'summary': self.summary, + 'severity': self.severity.value, + 'error': self.error + } + + +@dataclass +class PipelineProgress: + """Progress update from the pipeline. + + Attributes: + stage: Current stage ('planning', 'gathering', 'analyzing', 'synthesizing'). + section: Current section being processed (if applicable). + message: Human-readable progress message. + completed: Number of sections completed. + total: Total number of sections. + retry_wait: Seconds waiting before retry (if rate limited). + """ + stage: str + message: str + section: Optional[str] = None + completed: int = 0 + total: int = 0 + retry_wait: Optional[int] = None + + def to_dict(self) -> dict: + """Convert to dictionary for SSE event.""" + result = { + 'type': 'progress' if self.retry_wait is None else 'retry', + 'stage': self.stage, + 'message': self.message + } + if self.section: + result['section'] = self.section + if self.completed or self.total: + result['completed'] = self.completed + result['total'] = self.total + if self.retry_wait is not None: + result['wait_seconds'] = self.retry_wait + return result diff --git a/web/pgadmin/llm/reports/pipeline.py b/web/pgadmin/llm/reports/pipeline.py new file mode 100644 index 00000000000..ab5ebc32bbe --- /dev/null +++ b/web/pgadmin/llm/reports/pipeline.py @@ -0,0 +1,453 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Core report generation pipeline implementation.""" + +import json +import time +from typing import Generator, Optional, Callable, Any + +from pgadmin.llm.client import LLMClient, LLMClientError +from pgadmin.llm.models import Message +from pgadmin.llm.reports.models import ( + Section, SectionResult, Severity, PipelineProgress +) +from pgadmin.llm.reports.prompts import ( + PLANNING_SYSTEM_PROMPT, get_planning_user_prompt, + SECTION_ANALYSIS_SYSTEM_PROMPT, get_section_analysis_prompt, + SYNTHESIS_SYSTEM_PROMPT, get_synthesis_prompt +) + + +class ReportPipelineError(Exception): + """Error during report pipeline execution.""" + pass + + +class ReportPipeline: + """Multi-stage report generation pipeline. + + This pipeline breaks report generation into 4 stages: + 1. Planning - LLM selects which sections to analyze + 2. Data Gathering - Run SQL queries for each section + 3. Section Analysis - LLM summarizes each section independently + 4. Synthesis - LLM merges section summaries into final report + + This approach keeps each LLM call within token limits while + producing comprehensive, well-structured reports. + """ + + def __init__( + self, + report_type: str, + sections: list[Section], + client: LLMClient, + query_executor: Callable[[str, dict], dict], + max_retries: int = 3, + retry_base_delay: float = 5.0 + ): + """Initialize the pipeline. + + Args: + report_type: Type of report ('security', 'performance', 'design'). + sections: List of available Section definitions. + client: LLM client for making API calls. + query_executor: Function to execute queries given query_id and context. + max_retries: Maximum retry attempts for rate-limited calls. + retry_base_delay: Base delay in seconds for exponential backoff. + """ + self.report_type = report_type + self.sections = {s.id: s for s in sections} + self.client = client + self.query_executor = query_executor + self.max_retries = max_retries + self.retry_base_delay = retry_base_delay + + def execute(self, context: dict) -> str: + """Execute the pipeline and return the final report. + + Args: + context: Dictionary with database context (server_version, + database_name, schema_name, etc.) + + Returns: + Final report as markdown string. + + Raises: + ReportPipelineError: If pipeline fails. + """ + # Consume the generator to get final result + result = None + for event in self.execute_with_progress(context): + if event.get('type') == 'complete': + result = event.get('report', '') + elif event.get('type') == 'error': + raise ReportPipelineError(event.get('message', 'Unknown error')) + return result or '' + + def execute_with_progress( + self, + context: dict + ) -> Generator[dict, None, None]: + """Execute the pipeline with progress updates. + + Yields SSE-compatible event dictionaries throughout execution. + + Args: + context: Dictionary with database context. + + Yields: + Event dictionaries with type, stage, message, etc. + """ + try: + # Stage 1: Planning + yield {'type': 'stage', 'stage': 'planning', + 'message': 'Planning analysis sections...'} + + selected_section_ids = self._planning_stage(context) + + if not selected_section_ids: + # Fallback to all sections if planning returns empty + selected_section_ids = list(self.sections.keys()) + + total_sections = len(selected_section_ids) + + # Stage 2: Data Gathering + yield {'type': 'stage', 'stage': 'gathering', + 'message': 'Gathering data...'} + + section_data = {} + for i, section_id in enumerate(selected_section_ids): + section = self.sections.get(section_id) + if not section: + continue + + yield {'type': 'progress', 'stage': 'gathering', + 'section': section.name, + 'message': f'Gathering {section.name} data...', + 'completed': i, 'total': total_sections} + + section_data[section_id] = self._gather_section_data( + section, context + ) + + # Stage 3: Section Analysis + yield {'type': 'stage', 'stage': 'analyzing', + 'message': 'Analyzing sections...'} + + section_results = [] + for i, section_id in enumerate(selected_section_ids): + section = self.sections.get(section_id) + if not section or section_id not in section_data: + continue + + yield {'type': 'progress', 'stage': 'analyzing', + 'section': section.name, + 'message': f'Analyzing {section.name}...', + 'completed': i, 'total': total_sections} + + # Call LLM with retry for rate limits + for retry_event in self._analyze_section_with_retry( + section, section_data[section_id], context + ): + if retry_event.get('type') == 'retry': + yield retry_event + elif retry_event.get('type') == 'result': + section_results.append(retry_event['result']) + + # Stage 4: Synthesis + yield {'type': 'stage', 'stage': 'synthesizing', + 'message': 'Creating final report...'} + + for retry_event in self._synthesize_with_retry( + section_results, context + ): + if retry_event.get('type') == 'retry': + yield retry_event + elif retry_event.get('type') == 'result': + final_report = retry_event['result'] + + yield {'type': 'complete', 'report': final_report} + + except ReportPipelineError: + raise + except Exception as e: + yield {'type': 'error', 'message': str(e)} + + def _planning_stage(self, context: dict) -> list[str]: + """Run the planning stage to select relevant sections. + + Args: + context: Database context. + + Returns: + List of section IDs to analyze. + """ + # Filter sections by scope + scope = 'server' + if context.get('schema_name'): + scope = 'schema' + elif context.get('database_name'): + scope = 'database' + + available_sections = [ + {'id': s.id, 'name': s.name, 'description': s.description} + for s in self.sections.values() + if scope in s.scope + ] + + if not available_sections: + return [] + + # Ask LLM to select sections + user_prompt = get_planning_user_prompt( + self.report_type, available_sections, context + ) + + try: + response = self._call_llm_with_retry( + messages=[Message.user(user_prompt)], + system_prompt=PLANNING_SYSTEM_PROMPT, + max_tokens=500, + temperature=0.0 + ) + + # Parse JSON response + content = response.content.strip() + # Handle markdown code blocks + if content.startswith('```'): + content = content.split('\n', 1)[1] + content = content.rsplit('```', 1)[0] + + selected_ids = json.loads(content) + + # Validate section IDs + valid_ids = [ + sid for sid in selected_ids + if sid in self.sections + ] + + return valid_ids if valid_ids else [s['id'] for s in available_sections] + + except (json.JSONDecodeError, LLMClientError): + # Fallback to all available sections + return [s['id'] for s in available_sections] + + def _gather_section_data( + self, + section: Section, + context: dict + ) -> dict[str, Any]: + """Gather data for a section by executing its queries. + + Args: + section: Section definition with query IDs. + context: Database context. + + Returns: + Dictionary mapping query_id to query results. + """ + data = {} + for query_id in section.queries: + try: + result = self.query_executor(query_id, context) + data[query_id] = result + except Exception as e: + data[query_id] = {'error': str(e)} + return data + + def _analyze_section_with_retry( + self, + section: Section, + data: dict, + context: dict + ) -> Generator[dict, None, None]: + """Analyze a section with retry logic. + + Args: + section: Section to analyze. + data: Query results for this section. + context: Database context. + + Yields: + Retry events and final result event. + """ + user_prompt = get_section_analysis_prompt( + section.name, section.description, data, context + ) + + for attempt in range(self.max_retries): + try: + response = self.client.chat( + messages=[Message.user(user_prompt)], + system_prompt=SECTION_ANALYSIS_SYSTEM_PROMPT, + max_tokens=1500, + temperature=0.3 + ) + + # Determine severity from content + severity = self._extract_severity(response.content) + + result = SectionResult( + section_id=section.id, + section_name=section.name, + data=data, + summary=response.content, + severity=severity + ) + + yield {'type': 'result', 'result': result} + return + + except LLMClientError as e: + if e.error.retryable and attempt < self.max_retries - 1: + wait_time = int(self.retry_base_delay * (2 ** attempt)) + yield { + 'type': 'retry', + 'reason': 'rate_limit', + 'message': f'Rate limited, retrying in {wait_time}s...', + 'wait_seconds': wait_time + } + time.sleep(wait_time) + else: + # Return error result + result = SectionResult( + section_id=section.id, + section_name=section.name, + data=data, + error=str(e) + ) + yield {'type': 'result', 'result': result} + return + + def _synthesize_with_retry( + self, + section_results: list[SectionResult], + context: dict + ) -> Generator[dict, None, None]: + """Synthesize final report with retry logic. + + Args: + section_results: Results from section analysis. + context: Database context. + + Yields: + Retry events and final result event. + """ + # Filter out failed sections + successful_results = [ + { + 'section_id': r.section_id, + 'section_name': r.section_name, + 'summary': r.summary, + 'severity': r.severity.value + } + for r in section_results + if not r.has_error and r.summary + ] + + if not successful_results: + yield { + 'type': 'result', + 'result': '**Error**: No sections were successfully analyzed.' + } + return + + user_prompt = get_synthesis_prompt( + self.report_type, successful_results, context + ) + + for attempt in range(self.max_retries): + try: + response = self.client.chat( + messages=[Message.user(user_prompt)], + system_prompt=SYNTHESIS_SYSTEM_PROMPT, + max_tokens=4096, + temperature=0.3 + ) + + yield {'type': 'result', 'result': response.content} + return + + except LLMClientError as e: + if e.error.retryable and attempt < self.max_retries - 1: + wait_time = int(self.retry_base_delay * (2 ** attempt)) + yield { + 'type': 'retry', + 'reason': 'rate_limit', + 'message': f'Rate limited, retrying in {wait_time}s...', + 'wait_seconds': wait_time + } + time.sleep(wait_time) + else: + # Return partial report with section summaries + partial = "**Note**: Synthesis failed. Section summaries:\n\n" + for r in successful_results: + partial += f"## {r['section_name']}\n\n{r['summary']}\n\n" + yield {'type': 'result', 'result': partial} + return + + def _call_llm_with_retry( + self, + messages: list[Message], + system_prompt: str, + max_tokens: int = 4096, + temperature: float = 0.3 + ): + """Call LLM with exponential backoff retry. + + Args: + messages: Messages to send. + system_prompt: System prompt. + max_tokens: Maximum response tokens. + temperature: Sampling temperature. + + Returns: + LLMResponse from the client. + + Raises: + LLMClientError: If all retries fail. + """ + for attempt in range(self.max_retries): + try: + return self.client.chat( + messages=messages, + system_prompt=system_prompt, + max_tokens=max_tokens, + temperature=temperature + ) + except LLMClientError as e: + if e.error.retryable and attempt < self.max_retries - 1: + wait_time = self.retry_base_delay * (2 ** attempt) + time.sleep(wait_time) + else: + raise + + def _extract_severity(self, content: str) -> Severity: + """Extract overall severity from section analysis content. + + Args: + content: LLM response content. + + Returns: + Extracted Severity level. + """ + content_lower = content.lower() + + # Look for status line + if '**status**: critical' in content_lower or '🔴' in content: + return Severity.CRITICAL + elif '**status**: warning' in content_lower or '🟠' in content: + return Severity.WARNING + elif '**status**: advisory' in content_lower or '🟡' in content: + return Severity.ADVISORY + elif '**status**: good' in content_lower or '🟢' in content: + return Severity.GOOD + + return Severity.INFO diff --git a/web/pgadmin/llm/reports/prompts.py b/web/pgadmin/llm/reports/prompts.py new file mode 100644 index 00000000000..79b0d4f5472 --- /dev/null +++ b/web/pgadmin/llm/reports/prompts.py @@ -0,0 +1,237 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Prompt templates for report generation pipeline stages.""" + + +# ============================================================================= +# Planning Stage Prompts +# ============================================================================= + +PLANNING_SYSTEM_PROMPT = """You are a PostgreSQL expert helping to plan a database analysis report. + +Your task is to select which analysis sections are most relevant for the given report type and database context. + +Return ONLY a JSON array of section IDs to analyze, ordered by priority. +Only include sections that are relevant given the database characteristics. +Do not include any explanation, just the JSON array.""" + + +def get_planning_user_prompt( + report_type: str, + sections: list[dict], + context: dict +) -> str: + """Build the planning stage user prompt. + + Args: + report_type: Type of report ('security', 'performance', 'design'). + sections: List of available sections with id, name, description. + context: Database context (version, size, table count, etc.). + + Returns: + Formatted user prompt for planning. + """ + sections_list = '\n'.join([ + f"- {s['id']}: {s['name']} - {s['description']}" + for s in sections + ]) + + return f"""Select the most relevant sections for a {report_type} report. + +Available sections: +{sections_list} + +Database context: +- Server version: {context.get('server_version', 'Unknown')} +- Database name: {context.get('database_name', 'N/A')} +- Schema name: {context.get('schema_name', 'N/A')} +- Table count: {context.get('table_count', 'Unknown')} +- Has pg_stat_statements: {context.get('has_stat_statements', False)} + +Return a JSON array of section IDs to analyze, e.g.: ["section1", "section2", "section3"]""" + + +# ============================================================================= +# Section Analysis Prompts +# ============================================================================= + +SECTION_ANALYSIS_SYSTEM_PROMPT = """You are a PostgreSQL expert analyzing database configuration. + +Analyze the provided data and generate a concise summary (max 300 words). + +Your response MUST follow this exact format: +### [Section Name] + +**Status**: [One of: Good, Advisory, Warning, Critical] + +**Findings**: +- [Finding 1] +- [Finding 2] +- [etc.] + +**Recommendations**: +- [Recommendation 1 with specific action] +- [Recommendation 2 with specific action] +- [etc.] + +Use these severity indicators in findings: +- 🔴 for Critical issues +- 🟠 for Warning issues +- 🟡 for Advisory items +- 🟢 for Good/positive findings + +Be specific and actionable. Include SQL commands where relevant.""" + + +def get_section_analysis_prompt( + section_name: str, + section_description: str, + data: dict, + context: dict +) -> str: + """Build the section analysis user prompt. + + Args: + section_name: Name of the section being analyzed. + section_description: Description of what this section covers. + data: Query results for this section. + context: Database context. + + Returns: + Formatted user prompt for section analysis. + """ + import json + + data_json = json.dumps(data, indent=2, default=str) + + return f"""Analyze the following {section_name} data for a PostgreSQL {context.get('server_version', '')} server. + +Section focus: {section_description} + +Database: {context.get('database_name', 'N/A')} +Schema: {context.get('schema_name', 'all schemas')} + +Data: +```json +{data_json} +``` + +Provide your analysis following the required format.""" + + +# ============================================================================= +# Synthesis Prompts +# ============================================================================= + +SYNTHESIS_SYSTEM_PROMPT = """You are a PostgreSQL expert creating a comprehensive report. + +Combine the section summaries into a cohesive, well-organized report. + +Your report MUST: +1. Start with an **Executive Summary** (3-5 sentences overview) +2. Include a **Critical Issues** section (aggregate all critical/warning findings) +3. Include each section's detailed analysis (use the section content as-is, don't add duplicate headers) +4. End with **Prioritized Recommendations** (numbered list, most important first) + +IMPORTANT: +- Do NOT include a report title at the very beginning - start directly with Executive Summary +- Each section already has its own ### header - do NOT add extra headers around them +- Simply organize and flow the sections together naturally + +Use severity indicators consistently: +- 🔴 Critical - Immediate action required +- 🟠 Warning - Should be addressed soon +- 🟡 Advisory - Consider improving +- 🟢 Good - No issues found + +Be professional and actionable. Include SQL commands for recommendations where helpful.""" + + +def get_synthesis_prompt( + report_type: str, + section_summaries: list[dict], + context: dict +) -> str: + """Build the synthesis stage user prompt. + + Args: + report_type: Type of report being generated. + section_summaries: List of section results with summaries. + context: Database context. + + Returns: + Formatted user prompt for synthesis. + """ + # Don't add extra headers - the section summaries already include them + summaries_text = '\n\n---\n\n'.join([ + s['summary'] + for s in section_summaries + if s.get('summary') and not s.get('error') + ]) + + report_type_display = { + 'security': 'Security', + 'performance': 'Performance', + 'design': 'Design Review' + }.get(report_type, report_type.title()) + + scope_info = context.get('database_name', 'server') + if context.get('schema_name'): + scope_info = f"{context['schema_name']} schema in {scope_info}" + + return f"""Create a comprehensive {report_type_display} Report for {scope_info}. + +Server: PostgreSQL {context.get('server_version', 'Unknown')} + +Section Summaries: + +{summaries_text} + +--- + +Combine these into a final report following the required format. +Start with Executive Summary (do not add a title before it).""" + + +# ============================================================================= +# Report Type Specific Guidance +# ============================================================================= + +SECURITY_GUIDANCE = """ +Focus areas for security analysis: +- Authentication configuration and password policies +- Role privileges and permission escalation risks +- Network exposure and connection security +- Encryption settings (SSL/TLS, password hashing) +- Row-level security and object permissions +- Security definer functions +- Audit logging configuration +""" + +PERFORMANCE_GUIDANCE = """ +Focus areas for performance analysis: +- Memory configuration (shared_buffers, work_mem, effective_cache_size) +- Checkpoint and WAL settings +- Autovacuum effectiveness +- Query planner configuration +- Index utilization and missing indexes +- Cache hit ratios +- Connection management +""" + +DESIGN_GUIDANCE = """ +Focus areas for design analysis: +- Table structure and normalization +- Primary key and foreign key design +- Index strategy and coverage +- Constraint completeness +- Data type appropriateness +- Naming conventions +""" diff --git a/web/pgadmin/llm/reports/queries.py b/web/pgadmin/llm/reports/queries.py new file mode 100644 index 00000000000..d78f8115067 --- /dev/null +++ b/web/pgadmin/llm/reports/queries.py @@ -0,0 +1,907 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""SQL query registry for report generation pipeline. + +Each query is identified by a unique ID and includes the SQL statement +along with metadata about how to execute it. +""" + +from typing import Any, Optional + +# ============================================================================= +# Query Registry +# ============================================================================= + +QUERIES = { + # ========================================================================= + # SECURITY QUERIES + # ========================================================================= + + # Authentication & Connection Settings + 'security_settings': { + 'sql': """ + SELECT name, setting, short_desc, context, source + FROM pg_settings + WHERE name IN ( + 'listen_addresses', 'port', 'max_connections', + 'superuser_reserved_connections', + 'password_encryption', 'authentication_timeout', + 'ssl', 'ssl_ciphers', 'ssl_prefer_server_ciphers', + 'ssl_min_protocol_version', 'ssl_max_protocol_version', + 'db_user_namespace', 'row_security' + ) + ORDER BY name + """, + 'scope': ['server', 'database'], + }, + + 'hba_rules': { + 'sql': """ + SELECT line_number, type, database, user_name, address, + netmask, auth_method, options, error + FROM pg_hba_file_rules + ORDER BY line_number + LIMIT 50 + """, + 'scope': ['server'], + }, + + # Role & Access Control + 'superusers': { + 'sql': """ + SELECT rolname, rolcreaterole, rolcreatedb, rolbypassrls, + rolconnlimit, rolvaliduntil + FROM pg_roles + WHERE rolsuper = true + ORDER BY rolname + """, + 'scope': ['server', 'database'], + }, + + 'privileged_roles': { + 'sql': """ + SELECT rolname, rolsuper, rolcreaterole, rolcreatedb, + rolreplication, rolbypassrls, rolcanlogin, rolconnlimit + FROM pg_roles + WHERE (rolcreaterole OR rolcreatedb OR rolreplication OR rolbypassrls) + AND NOT rolsuper + ORDER BY rolname + LIMIT 30 + """, + 'scope': ['server', 'database'], + }, + + 'roles_no_expiry': { + 'sql': """ + SELECT rolname, rolvaliduntil + FROM pg_roles + WHERE rolcanlogin = true + AND (rolvaliduntil IS NULL OR rolvaliduntil = 'infinity') + ORDER BY rolname + LIMIT 30 + """, + 'scope': ['server', 'database'], + }, + + 'login_roles': { + 'sql': """ + SELECT r.rolname, r.rolsuper, r.rolcreaterole, r.rolcreatedb, + r.rolcanlogin, r.rolreplication, r.rolbypassrls, + r.rolconnlimit, r.rolvaliduntil, + ARRAY(SELECT b.rolname FROM pg_catalog.pg_auth_members m + JOIN pg_catalog.pg_roles b ON m.roleid = b.oid + WHERE m.member = r.oid) as member_of + FROM pg_roles r + WHERE r.rolcanlogin = true + ORDER BY r.rolname + LIMIT 30 + """, + 'scope': ['database'], + }, + + # Object Permissions + 'database_settings': { + 'sql': """ + SELECT datname, pg_catalog.pg_get_userbyid(datdba) as owner, + datacl, datconnlimit + FROM pg_database + WHERE datname = current_database() + """, + 'scope': ['database'], + }, + + 'schema_acls': { + 'sql': """ + SELECT n.nspname as schema_name, + pg_catalog.pg_get_userbyid(n.nspowner) as owner, + n.nspacl as acl + FROM pg_namespace n + WHERE n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT LIKE 'pg_temp%' + AND n.nspname NOT LIKE 'pg_toast_temp%' + ORDER BY n.nspname + LIMIT 20 + """, + 'scope': ['database'], + }, + + 'table_acls': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + pg_catalog.pg_get_userbyid(c.relowner) as owner, + c.relacl as acl, + c.relrowsecurity as row_security, + c.relforcerowsecurity as force_row_security + FROM pg_class c + JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind IN ('r', 'p') + AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT LIKE 'pg_temp%' + ORDER BY n.nspname, c.relname + LIMIT 50 + """, + 'scope': ['database'], + }, + + # RLS Policies + 'rls_policies': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + pol.polname as policy_name, + pol.polpermissive as permissive, + pol.polcmd as command, + ARRAY(SELECT pg_catalog.pg_get_userbyid(r) + FROM unnest(pol.polroles) r) as roles, + pg_catalog.pg_get_expr(pol.polqual, pol.polrelid) as using_expr, + pg_catalog.pg_get_expr(pol.polwithcheck, pol.polrelid) as check_expr + FROM pg_policy pol + JOIN pg_class c ON c.oid = pol.polrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE n.nspname NOT IN ('pg_catalog', 'information_schema') + ORDER BY n.nspname, c.relname, pol.polname + LIMIT 30 + """, + 'scope': ['database', 'schema'], + }, + + 'rls_enabled_tables': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + c.relrowsecurity as row_security, + c.relforcerowsecurity as force_row_security + FROM pg_class c + JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relrowsecurity = true + AND n.nspname NOT IN ('pg_catalog', 'information_schema') + ORDER BY n.nspname, c.relname + LIMIT 30 + """, + 'scope': ['database'], + }, + + # Security Definer Functions + 'security_definer_functions': { + 'sql': """ + SELECT n.nspname as schema_name, + p.proname as function_name, + pg_catalog.pg_get_userbyid(p.proowner) as owner, + p.proacl as acl + FROM pg_proc p + JOIN pg_namespace n ON n.oid = p.pronamespace + WHERE p.prosecdef = true + AND n.nspname NOT IN ('pg_catalog', 'information_schema') + ORDER BY n.nspname, p.proname + LIMIT 30 + """, + 'scope': ['database', 'schema'], + }, + + # Audit & Logging + 'logging_settings': { + 'sql': """ + SELECT name, setting, short_desc + FROM pg_settings + WHERE name IN ( + 'log_connections', 'log_disconnections', + 'log_hostname', 'log_statement', 'log_line_prefix', + 'log_duration', 'log_min_duration_statement', + 'log_min_error_statement', 'log_replication_commands' + ) + ORDER BY name + """, + 'scope': ['server'], + }, + + # Extensions + 'extensions': { + 'sql': """ + SELECT extname, extversion + FROM pg_extension + ORDER BY extname + """, + 'scope': ['server', 'database'], + }, + + # Default Privileges + 'default_privileges': { + 'sql': """ + SELECT pg_catalog.pg_get_userbyid(d.defaclrole) as role, + n.nspname as schema_name, + CASE d.defaclobjtype + WHEN 'r' THEN 'table' + WHEN 'S' THEN 'sequence' + WHEN 'f' THEN 'function' + WHEN 'T' THEN 'type' + WHEN 'n' THEN 'schema' + END as object_type, + d.defaclacl as default_acl + FROM pg_default_acl d + LEFT JOIN pg_namespace n ON n.oid = d.defaclnamespace + ORDER BY role, schema_name, object_type + LIMIT 30 + """, + 'scope': ['database'], + }, + + # ========================================================================= + # PERFORMANCE QUERIES + # ========================================================================= + + # Memory Configuration + 'memory_settings': { + 'sql': """ + SELECT name, setting, unit, short_desc, context, source + FROM pg_settings + WHERE name IN ( + 'shared_buffers', 'effective_cache_size', 'work_mem', + 'maintenance_work_mem', 'wal_buffers', 'temp_buffers', + 'huge_pages', 'effective_io_concurrency' + ) + ORDER BY name + """, + 'scope': ['server'], + }, + + # Checkpoint & WAL + 'checkpoint_settings': { + 'sql': """ + SELECT name, setting, unit, short_desc + FROM pg_settings + WHERE name IN ( + 'checkpoint_completion_target', 'checkpoint_timeout', + 'max_wal_size', 'min_wal_size' + ) + ORDER BY name + """, + 'scope': ['server'], + }, + + 'wal_settings': { + 'sql': """ + SELECT name, setting, unit, short_desc + FROM pg_settings + WHERE name IN ( + 'wal_level', 'synchronous_commit', 'wal_compression', + 'wal_writer_delay', 'max_wal_senders' + ) + ORDER BY name + """, + 'scope': ['server'], + }, + + 'bgwriter_stats': { + 'sql': """ + SELECT checkpoints_timed, checkpoints_req, checkpoint_write_time, + checkpoint_sync_time, buffers_checkpoint, buffers_clean, + maxwritten_clean, buffers_backend, buffers_backend_fsync, + buffers_alloc, stats_reset + FROM pg_stat_bgwriter + """, + 'scope': ['server'], + }, + + # Autovacuum + 'autovacuum_settings': { + 'sql': """ + SELECT name, setting, unit, short_desc + FROM pg_settings + WHERE name IN ( + 'autovacuum', 'autovacuum_max_workers', + 'autovacuum_naptime', 'autovacuum_vacuum_threshold', + 'autovacuum_vacuum_scale_factor', 'autovacuum_analyze_threshold', + 'autovacuum_analyze_scale_factor', 'autovacuum_vacuum_cost_delay', + 'autovacuum_vacuum_cost_limit' + ) + ORDER BY name + """, + 'scope': ['server'], + }, + + 'tables_needing_vacuum': { + 'sql': """ + SELECT schemaname || '.' || relname as table_name, + n_dead_tup, + n_live_tup, + last_vacuum, + last_autovacuum, + last_analyze, + last_autoanalyze + FROM pg_stat_user_tables + WHERE n_dead_tup > 1000 + ORDER BY n_dead_tup DESC + LIMIT 15 + """, + 'scope': ['database'], + }, + + # Query Planner + 'planner_settings': { + 'sql': """ + SELECT name, setting, unit, short_desc + FROM pg_settings + WHERE name IN ( + 'random_page_cost', 'seq_page_cost', 'cpu_tuple_cost', + 'cpu_index_tuple_cost', 'cpu_operator_cost', + 'parallel_tuple_cost', 'parallel_setup_cost', + 'default_statistics_target', 'enable_partitionwise_join', + 'enable_partitionwise_aggregate', 'jit' + ) + ORDER BY name + """, + 'scope': ['server'], + }, + + # Parallelism + 'parallel_settings': { + 'sql': """ + SELECT name, setting, unit, short_desc + FROM pg_settings + WHERE name IN ( + 'max_worker_processes', 'max_parallel_workers_per_gather', + 'max_parallel_workers', 'max_parallel_maintenance_workers' + ) + ORDER BY name + """, + 'scope': ['server'], + }, + + # Connections + 'connection_settings': { + 'sql': """ + SELECT name, setting, unit, short_desc + FROM pg_settings + WHERE name IN ( + 'max_connections', 'superuser_reserved_connections', + 'idle_in_transaction_session_timeout', 'idle_session_timeout', + 'statement_timeout', 'lock_timeout' + ) + ORDER BY name + """, + 'scope': ['server'], + }, + + 'active_connections': { + 'sql': """ + SELECT + (SELECT count(*) FROM pg_stat_activity) as total_connections, + (SELECT count(*) FROM pg_stat_activity + WHERE state = 'active') as active_queries, + (SELECT count(*) FROM pg_stat_activity + WHERE state = 'idle in transaction') as idle_in_transaction, + (SELECT count(*) FROM pg_stat_activity + WHERE state = 'idle') as idle + """, + 'scope': ['server', 'database'], + }, + + # Cache Efficiency + 'database_stats': { + 'sql': """ + SELECT datname, numbackends, xact_commit, xact_rollback, + blks_read, blks_hit, + CASE WHEN blks_read + blks_hit > 0 + THEN round(100.0 * blks_hit / (blks_read + blks_hit), 2) + ELSE 0 END as cache_hit_ratio, + tup_returned, tup_fetched, tup_inserted, + tup_updated, tup_deleted, + conflicts, temp_files, temp_bytes, + deadlocks, stats_reset + FROM pg_stat_database + WHERE datname NOT IN ('template0', 'template1') + ORDER BY datname + """, + 'scope': ['server'], + }, + + 'table_cache_stats': { + 'sql': """ + SELECT schemaname || '.' || relname as table_name, + heap_blks_read, heap_blks_hit, + CASE WHEN heap_blks_read + heap_blks_hit > 0 + THEN round(100.0 * heap_blks_hit / + (heap_blks_read + heap_blks_hit), 2) + ELSE 0 END as cache_hit_ratio, + idx_blks_read, idx_blks_hit + FROM pg_statio_user_tables + WHERE heap_blks_read + heap_blks_hit > 1000 + ORDER BY heap_blks_read DESC + LIMIT 15 + """, + 'scope': ['database'], + }, + + # Index Usage + 'table_stats': { + 'sql': """ + SELECT schemaname || '.' || relname as table_name, + seq_scan, seq_tup_read, idx_scan, idx_tup_fetch, + n_tup_ins, n_tup_upd, n_tup_del, + n_live_tup, n_dead_tup, + last_vacuum, last_autovacuum, + last_analyze, last_autoanalyze + FROM pg_stat_user_tables + ORDER BY n_dead_tup DESC + LIMIT 20 + """, + 'scope': ['database'], + }, + + 'unused_indexes': { + 'sql': """ + SELECT s.schemaname || '.' || s.relname as table_name, + s.indexrelname as index_name, + pg_size_pretty(pg_relation_size(s.indexrelid)) as size, + s.idx_scan + FROM pg_stat_user_indexes s + JOIN pg_index i ON s.indexrelid = i.indexrelid + WHERE s.idx_scan = 0 + AND NOT i.indisunique + AND NOT i.indisprimary + ORDER BY pg_relation_size(s.indexrelid) DESC + LIMIT 15 + """, + 'scope': ['database'], + }, + + 'tables_needing_indexes': { + 'sql': """ + SELECT schemaname || '.' || relname as table_name, + seq_scan, idx_scan, n_live_tup, + CASE WHEN seq_scan > 0 + THEN round(seq_tup_read::numeric / seq_scan, 0) + ELSE 0 END as avg_seq_tup_read + FROM pg_stat_user_tables + WHERE seq_scan > idx_scan AND seq_scan > 100 AND n_live_tup > 1000 + ORDER BY seq_scan - idx_scan DESC + LIMIT 15 + """, + 'scope': ['database'], + }, + + # Slow Queries (pg_stat_statements) + 'stat_statements_check': { + 'sql': """ + SELECT EXISTS ( + SELECT 1 FROM pg_extension WHERE extname = 'pg_stat_statements' + ) as available + """, + 'scope': ['server', 'database'], + }, + + 'top_queries_by_time': { + 'sql': """ + SELECT left(query, 200) as query_preview, + calls, round(total_exec_time::numeric, 2) as total_exec_time_ms, + round(mean_exec_time::numeric, 2) as mean_exec_time_ms, + rows + FROM pg_stat_statements + ORDER BY total_exec_time DESC + LIMIT 10 + """, + 'scope': ['server', 'database'], + 'requires_extension': 'pg_stat_statements', + }, + + 'top_queries_by_calls': { + 'sql': """ + SELECT left(query, 200) as query_preview, + calls, round(total_exec_time::numeric, 2) as total_exec_time_ms, + round(mean_exec_time::numeric, 2) as mean_exec_time_ms, + rows + FROM pg_stat_statements + ORDER BY calls DESC + LIMIT 10 + """, + 'scope': ['server', 'database'], + 'requires_extension': 'pg_stat_statements', + }, + + # Table Sizes + 'table_sizes': { + 'sql': """ + SELECT schemaname || '.' || relname as table_name, + pg_size_pretty(pg_total_relation_size(relid)) as total_size, + pg_size_pretty(pg_relation_size(relid)) as table_size, + pg_size_pretty(pg_indexes_size(relid)) as indexes_size, + n_live_tup as row_count + FROM pg_stat_user_tables + ORDER BY pg_total_relation_size(relid) DESC + LIMIT 15 + """, + 'scope': ['database'], + }, + + # Replication + 'replication_status': { + 'sql': """ + SELECT client_addr, state, sync_state, + pg_wal_lsn_diff(pg_current_wal_lsn(), sent_lsn) as sent_lag, + pg_wal_lsn_diff(pg_current_wal_lsn(), write_lsn) as write_lag, + pg_wal_lsn_diff(pg_current_wal_lsn(), flush_lsn) as flush_lag, + pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) as replay_lag + FROM pg_stat_replication + LIMIT 10 + """, + 'scope': ['server'], + }, + + # ========================================================================= + # DESIGN QUERIES + # ========================================================================= + + # Table Structure + 'tables_overview': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + pg_catalog.pg_get_userbyid(c.relowner) as owner, + pg_size_pretty(pg_total_relation_size(c.oid)) as total_size, + (SELECT count(*) FROM pg_attribute a + WHERE a.attrelid = c.oid AND a.attnum > 0 + AND NOT a.attisdropped) as column_count, + obj_description(c.oid) as description + FROM pg_class c + JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind IN ('r', 'p') + AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT LIKE 'pg_temp%' + ORDER BY n.nspname, c.relname + LIMIT 50 + """, + 'scope': ['database', 'schema'], + }, + + 'columns_info': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + a.attname as column_name, + pg_catalog.format_type(a.atttypid, a.atttypmod) as data_type, + a.attnotnull as not_null, + pg_get_expr(d.adbin, d.adrelid) as default_value, + col_description(c.oid, a.attnum) as description + FROM pg_attribute a + JOIN pg_class c ON c.oid = a.attrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + LEFT JOIN pg_attrdef d ON d.adrelid = a.attrelid AND d.adnum = a.attnum + WHERE a.attnum > 0 + AND NOT a.attisdropped + AND c.relkind IN ('r', 'p') + AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT LIKE 'pg_temp%' + ORDER BY n.nspname, c.relname, a.attnum + LIMIT 200 + """, + 'scope': ['database', 'schema'], + }, + + # Primary Keys + 'primary_keys': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + con.conname as constraint_name, + array_agg(a.attname ORDER BY array_position(con.conkey, a.attnum)) + as columns + FROM pg_constraint con + JOIN pg_class c ON c.oid = con.conrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + JOIN pg_attribute a ON a.attrelid = c.oid AND a.attnum = ANY(con.conkey) + WHERE con.contype = 'p' + AND n.nspname NOT IN ('pg_catalog', 'information_schema') + GROUP BY n.nspname, c.relname, con.conname + ORDER BY n.nspname, c.relname + LIMIT 50 + """, + 'scope': ['database', 'schema'], + }, + + 'tables_without_pk': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + pg_size_pretty(pg_total_relation_size(c.oid)) as size + FROM pg_class c + JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind = 'r' + AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT LIKE 'pg_temp%' + AND NOT EXISTS ( + SELECT 1 FROM pg_constraint con + WHERE con.conrelid = c.oid AND con.contype = 'p' + ) + ORDER BY pg_total_relation_size(c.oid) DESC + LIMIT 20 + """, + 'scope': ['database', 'schema'], + }, + + # Foreign Keys + 'foreign_keys': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + con.conname as constraint_name, + array_agg(a.attname ORDER BY array_position(con.conkey, a.attnum)) + as columns, + fn.nspname as ref_schema, + fc.relname as ref_table, + array_agg(fa.attname ORDER BY array_position(con.confkey, fa.attnum)) + as ref_columns + FROM pg_constraint con + JOIN pg_class c ON c.oid = con.conrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + JOIN pg_class fc ON fc.oid = con.confrelid + JOIN pg_namespace fn ON fn.oid = fc.relnamespace + JOIN pg_attribute a ON a.attrelid = c.oid AND a.attnum = ANY(con.conkey) + JOIN pg_attribute fa ON fa.attrelid = fc.oid AND fa.attnum = ANY(con.confkey) + WHERE con.contype = 'f' + AND n.nspname NOT IN ('pg_catalog', 'information_schema') + GROUP BY n.nspname, c.relname, con.conname, fn.nspname, fc.relname + ORDER BY n.nspname, c.relname + LIMIT 50 + """, + 'scope': ['database', 'schema'], + }, + + # Indexes + 'indexes_info': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + i.relname as index_name, + am.amname as index_type, + idx.indisunique as is_unique, + idx.indisprimary as is_primary, + pg_get_indexdef(idx.indexrelid) as definition, + pg_size_pretty(pg_relation_size(i.oid)) as size + FROM pg_index idx + JOIN pg_class c ON c.oid = idx.indrelid + JOIN pg_class i ON i.oid = idx.indexrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + JOIN pg_am am ON am.oid = i.relam + WHERE n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + ORDER BY n.nspname, c.relname, i.relname + LIMIT 100 + """, + 'scope': ['database', 'schema'], + }, + + 'duplicate_indexes': { + 'sql': """ + WITH index_cols AS ( + SELECT n.nspname as schema_name, + c.relname as table_name, + i.relname as index_name, + pg_get_indexdef(idx.indexrelid) as definition, + array_agg(a.attname ORDER BY array_position(idx.indkey, a.attnum)) + as columns, + pg_relation_size(i.oid) as size + FROM pg_index idx + JOIN pg_class c ON c.oid = idx.indrelid + JOIN pg_class i ON i.oid = idx.indexrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + JOIN pg_attribute a ON a.attrelid = c.oid + AND a.attnum = ANY(idx.indkey) + WHERE n.nspname NOT IN ('pg_catalog', 'information_schema') + GROUP BY n.nspname, c.relname, i.relname, idx.indexrelid, i.oid + ) + SELECT a.schema_name, a.table_name, + a.index_name as index1, b.index_name as index2, + a.columns, + pg_size_pretty(a.size + b.size) as combined_size + FROM index_cols a + JOIN index_cols b ON a.schema_name = b.schema_name + AND a.table_name = b.table_name + AND a.columns = b.columns + AND a.index_name < b.index_name + ORDER BY a.size + b.size DESC + LIMIT 10 + """, + 'scope': ['database'], + }, + + # Constraints + 'check_constraints': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + con.conname as constraint_name, + pg_get_constraintdef(con.oid) as definition + FROM pg_constraint con + JOIN pg_class c ON c.oid = con.conrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE con.contype = 'c' + AND n.nspname NOT IN ('pg_catalog', 'information_schema') + ORDER BY n.nspname, c.relname, con.conname + LIMIT 50 + """, + 'scope': ['database', 'schema'], + }, + + 'unique_constraints': { + 'sql': """ + SELECT n.nspname as schema_name, + c.relname as table_name, + con.conname as constraint_name, + array_agg(a.attname ORDER BY array_position(con.conkey, a.attnum)) + as columns + FROM pg_constraint con + JOIN pg_class c ON c.oid = con.conrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + JOIN pg_attribute a ON a.attrelid = c.oid AND a.attnum = ANY(con.conkey) + WHERE con.contype = 'u' + AND n.nspname NOT IN ('pg_catalog', 'information_schema') + GROUP BY n.nspname, c.relname, con.conname + ORDER BY n.nspname, c.relname + LIMIT 50 + """, + 'scope': ['database', 'schema'], + }, + + # Normalization Issues + 'repeated_column_names': { + 'sql': """ + SELECT a.attname as column_name, + count(*) as occurrence_count, + array_agg(DISTINCT n.nspname || '.' || c.relname) as tables + FROM pg_attribute a + JOIN pg_class c ON c.oid = a.attrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE a.attnum > 0 + AND NOT a.attisdropped + AND c.relkind = 'r' + AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + GROUP BY a.attname + HAVING count(*) > 3 + ORDER BY count(*) DESC + LIMIT 20 + """, + 'scope': ['database'], + }, + + # Naming Conventions + 'object_names': { + 'sql': """ + SELECT 'table' as object_type, n.nspname as schema_name, c.relname as name + FROM pg_class c + JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relkind IN ('r', 'p') + AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + UNION ALL + SELECT 'column', n.nspname, c.relname || '.' || a.attname + FROM pg_attribute a + JOIN pg_class c ON c.oid = a.attrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE a.attnum > 0 AND NOT a.attisdropped + AND c.relkind = 'r' + AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + LIMIT 200 + """, + 'scope': ['database', 'schema'], + }, + + # Data Types + 'column_types': { + 'sql': """ + SELECT pg_catalog.format_type(a.atttypid, a.atttypmod) as data_type, + count(*) as usage_count, + CASE + WHEN count(*) <= 5 THEN array_agg(DISTINCT n.nspname || '.' || c.relname || '.' || a.attname) + ELSE NULL + END as example_columns + FROM pg_attribute a + JOIN pg_class c ON c.oid = a.attrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE a.attnum > 0 + AND NOT a.attisdropped + AND c.relkind = 'r' + AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + GROUP BY pg_catalog.format_type(a.atttypid, a.atttypmod) + ORDER BY count(*) DESC + LIMIT 20 + """, + 'scope': ['database'], + }, +} + + +def get_query(query_id: str) -> Optional[dict]: + """Get a query definition by ID. + + Args: + query_id: The query identifier. + + Returns: + Query definition dict or None if not found. + """ + return QUERIES.get(query_id) + + +def execute_query( + conn, + query_id: str, + context: dict, + params: Optional[list] = None +) -> dict[str, Any]: + """Execute a registered query and return results. + + Args: + conn: Database connection. + query_id: The query identifier. + context: Execution context (for scope filtering). + params: Optional query parameters. + + Returns: + Dictionary with query results or error. + + Raises: + ValueError: If query not found. + """ + query_def = QUERIES.get(query_id) + if not query_def: + raise ValueError(f"Unknown query: {query_id}") + + sql = query_def['sql'] + + # Check if query requires an extension + required_ext = query_def.get('requires_extension') + if required_ext: + # Check if extension is installed + check_sql = f""" + SELECT EXISTS ( + SELECT 1 FROM pg_extension WHERE extname = '{required_ext}' + ) as available + """ + status, result = conn.execute_dict(check_sql) + if not (status and result and + result.get('rows', [{}])[0].get('available', False)): + return { + 'error': f"Extension '{required_ext}' not installed", + 'rows': [] + } + + # Execute the query + try: + if params: + status, result = conn.execute_dict(sql, params) + else: + status, result = conn.execute_dict(sql) + + if status and result: + return {'rows': result.get('rows', [])} + else: + return {'error': 'Query execution failed', 'rows': []} + + except Exception as e: + return {'error': str(e), 'rows': []} diff --git a/web/pgadmin/llm/reports/sections.py b/web/pgadmin/llm/reports/sections.py new file mode 100644 index 00000000000..de798ab6d6a --- /dev/null +++ b/web/pgadmin/llm/reports/sections.py @@ -0,0 +1,387 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Section definitions for report generation pipeline. + +Each report type has a set of sections that can be analyzed independently. +Sections are mapped to SQL queries and have descriptions for LLM guidance. +""" + +from pgadmin.llm.reports.models import Section + +# ============================================================================= +# SECURITY REPORT SECTIONS +# ============================================================================= + +SECURITY_SECTIONS = [ + Section( + id='authentication', + name='Authentication Configuration', + description=( + 'Password policies, SSL/TLS settings, authentication methods, ' + 'and connection security settings.' + ), + queries=['security_settings', 'hba_rules'], + scope=['server'] + ), + Section( + id='access_control', + name='Access Control & Roles', + description=( + 'Superuser accounts, privileged roles, login roles, ' + 'and role privilege assignments.' + ), + queries=['superusers', 'privileged_roles', 'roles_no_expiry'], + scope=['server', 'database'] + ), + Section( + id='network_security', + name='Network Security', + description=( + 'Network exposure settings, listen addresses, connection limits, ' + 'and pg_hba.conf rules.' + ), + queries=['security_settings', 'hba_rules'], + scope=['server'] + ), + Section( + id='encryption', + name='Encryption & SSL', + description=( + 'SSL/TLS configuration, password encryption method, ' + 'and data-at-rest encryption settings.' + ), + queries=['security_settings'], + scope=['server'] + ), + Section( + id='object_permissions', + name='Object Permissions', + description=( + 'Schema, table, and function access control lists (ACLs), ' + 'default privileges, and ownership.' + ), + queries=['database_settings', 'schema_acls', 'table_acls', + 'default_privileges'], + scope=['database'] + ), + Section( + id='rls_policies', + name='Row-Level Security', + description=( + 'Row-level security policies, RLS-enabled tables, ' + 'and policy coverage analysis.' + ), + queries=['rls_enabled_tables', 'rls_policies'], + scope=['database', 'schema'] + ), + Section( + id='security_definer', + name='Security Definer Functions', + description=( + 'Functions running with elevated privileges (SECURITY DEFINER), ' + 'their ownership, and permissions.' + ), + queries=['security_definer_functions'], + scope=['database', 'schema'] + ), + Section( + id='audit_logging', + name='Audit & Logging', + description=( + 'Connection logging, statement logging, error logging, ' + 'and audit trail configuration.' + ), + queries=['logging_settings'], + scope=['server'] + ), + Section( + id='extensions', + name='Extensions', + description=( + 'Installed extensions and their security implications.' + ), + queries=['extensions'], + scope=['server', 'database'] + ), +] + +# ============================================================================= +# PERFORMANCE REPORT SECTIONS +# ============================================================================= + +PERFORMANCE_SECTIONS = [ + Section( + id='memory_config', + name='Memory Configuration', + description=( + 'shared_buffers, work_mem, effective_cache_size, ' + 'maintenance_work_mem, and other memory settings.' + ), + queries=['memory_settings'], + scope=['server'] + ), + Section( + id='checkpoint_wal', + name='Checkpoint & WAL', + description=( + 'Checkpoint settings, WAL configuration, background writer stats, ' + 'and write-ahead log tuning.' + ), + queries=['checkpoint_settings', 'wal_settings', 'bgwriter_stats'], + scope=['server'] + ), + Section( + id='autovacuum', + name='Autovacuum Configuration', + description=( + 'Autovacuum settings, tables needing vacuum, ' + 'dead tuple accumulation, and maintenance status.' + ), + queries=['autovacuum_settings', 'tables_needing_vacuum'], + scope=['server', 'database'] + ), + Section( + id='query_planner', + name='Query Planner Settings', + description=( + 'Cost parameters, statistics targets, JIT compilation, ' + 'and planner optimization settings.' + ), + queries=['planner_settings'], + scope=['server'] + ), + Section( + id='parallelism', + name='Parallelism & Workers', + description=( + 'Parallel query configuration, worker processes, ' + 'and parallel maintenance settings.' + ), + queries=['parallel_settings'], + scope=['server'] + ), + Section( + id='connection_pooling', + name='Connection Management', + description=( + 'Max connections, reserved connections, timeouts, ' + 'and current connection status.' + ), + queries=['connection_settings', 'active_connections'], + scope=['server'] + ), + Section( + id='cache_efficiency', + name='Cache Efficiency', + description=( + 'Buffer cache hit ratios, database-level cache stats, ' + 'and table-level I/O patterns.' + ), + queries=['database_stats', 'table_cache_stats'], + scope=['server', 'database'] + ), + Section( + id='index_usage', + name='Index Analysis', + description=( + 'Index utilization, unused indexes, tables needing indexes, ' + 'and index size analysis.' + ), + queries=['table_stats', 'unused_indexes', 'tables_needing_indexes', + 'table_sizes'], + scope=['database'] + ), + Section( + id='slow_queries', + name='Query Performance', + description=( + 'Slowest queries, most frequent queries, ' + 'and query execution statistics (requires pg_stat_statements).' + ), + queries=['stat_statements_check', 'top_queries_by_time', + 'top_queries_by_calls'], + scope=['server', 'database'] + ), + Section( + id='replication', + name='Replication Status', + description=( + 'Replication lag, standby status, and WAL sender statistics.' + ), + queries=['replication_status'], + scope=['server'] + ), +] + +# ============================================================================= +# DESIGN REPORT SECTIONS +# ============================================================================= + +DESIGN_SECTIONS = [ + Section( + id='table_structure', + name='Table Structure', + description=( + 'Table definitions, column counts, sizes, ownership, ' + 'and documentation coverage.' + ), + queries=['tables_overview', 'columns_info'], + scope=['database', 'schema'] + ), + Section( + id='primary_keys', + name='Primary Key Analysis', + description=( + 'Primary key design, tables without primary keys, ' + 'and key column choices.' + ), + queries=['primary_keys', 'tables_without_pk'], + scope=['database', 'schema'] + ), + Section( + id='foreign_keys', + name='Referential Integrity', + description=( + 'Foreign key relationships, orphan references, ' + 'and relationship coverage.' + ), + queries=['foreign_keys'], + scope=['database', 'schema'] + ), + Section( + id='indexes', + name='Index Strategy', + description=( + 'Index definitions, duplicate indexes, index types, ' + 'and coverage analysis.' + ), + queries=['indexes_info', 'duplicate_indexes'], + scope=['database', 'schema'] + ), + Section( + id='constraints', + name='Constraints', + description=( + 'Check constraints, unique constraints, ' + 'and data validation coverage.' + ), + queries=['check_constraints', 'unique_constraints'], + scope=['database', 'schema'] + ), + Section( + id='normalization', + name='Normalization Analysis', + description=( + 'Repeated column patterns, potential denormalization issues, ' + 'and data redundancy.' + ), + queries=['repeated_column_names'], + scope=['database'] + ), + Section( + id='naming_conventions', + name='Naming Conventions', + description=( + 'Table and column naming patterns, consistency analysis, ' + 'and naming standard compliance.' + ), + queries=['object_names'], + scope=['database', 'schema'] + ), + Section( + id='data_types', + name='Data Type Review', + description=( + 'Data type usage patterns, type consistency, ' + 'and type appropriateness.' + ), + queries=['column_types'], + scope=['database'] + ), +] + +# ============================================================================= +# SECTION LOOKUPS +# ============================================================================= + +# Convert lists to dictionaries for quick lookup +SECURITY_SECTIONS_DICT = {s.id: s for s in SECURITY_SECTIONS} +PERFORMANCE_SECTIONS_DICT = {s.id: s for s in PERFORMANCE_SECTIONS} +DESIGN_SECTIONS_DICT = {s.id: s for s in DESIGN_SECTIONS} + +# Combined lookup by report type +SECTIONS_BY_TYPE = { + 'security': SECURITY_SECTIONS, + 'performance': PERFORMANCE_SECTIONS, + 'design': DESIGN_SECTIONS, +} + +SECTIONS_DICT_BY_TYPE = { + 'security': SECURITY_SECTIONS_DICT, + 'performance': PERFORMANCE_SECTIONS_DICT, + 'design': DESIGN_SECTIONS_DICT, +} + + +def get_sections_for_report(report_type: str) -> list[Section]: + """Get all sections for a report type. + + Args: + report_type: One of 'security', 'performance', 'design'. + + Returns: + List of Section objects. + + Raises: + ValueError: If report_type is invalid. + """ + sections = SECTIONS_BY_TYPE.get(report_type) + if sections is None: + raise ValueError(f"Invalid report type: {report_type}") + return sections + + +def get_sections_for_scope( + report_type: str, + scope: str +) -> list[Section]: + """Get sections applicable to a specific scope. + + Args: + report_type: One of 'security', 'performance', 'design'. + scope: One of 'server', 'database', 'schema'. + + Returns: + List of Section objects applicable to the scope. + """ + all_sections = get_sections_for_report(report_type) + return [s for s in all_sections if scope in s.scope] + + +def get_section(report_type: str, section_id: str) -> Section: + """Get a specific section by ID. + + Args: + report_type: One of 'security', 'performance', 'design'. + section_id: The section identifier. + + Returns: + Section object. + + Raises: + ValueError: If section not found. + """ + sections_dict = SECTIONS_DICT_BY_TYPE.get(report_type, {}) + section = sections_dict.get(section_id) + if section is None: + raise ValueError( + f"Section '{section_id}' not found in {report_type} report" + ) + return section diff --git a/web/pgadmin/llm/static/js/AIReport.jsx b/web/pgadmin/llm/static/js/AIReport.jsx new file mode 100644 index 00000000000..f12dc522e1a --- /dev/null +++ b/web/pgadmin/llm/static/js/AIReport.jsx @@ -0,0 +1,764 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + +import { useState, useEffect, useRef, useCallback } from 'react'; +import { Box, Paper, Typography, LinearProgress } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import DownloadIcon from '@mui/icons-material/Download'; +import RefreshIcon from '@mui/icons-material/Refresh'; +import StopIcon from '@mui/icons-material/Stop'; +import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined'; +import PropTypes from 'prop-types'; +import { marked } from 'marked'; + +import gettext from 'sources/gettext'; +import url_for from 'sources/url_for'; +import getApiInstance from '../../../static/js/api_instance'; +import Loader from '../../../static/js/components/Loader'; +import { PrimaryButton, DefaultButton } from '../../../static/js/components/Buttons'; +import { usePgAdmin } from '../../../static/js/PgAdminProvider'; + +// Helper to get the internal key for desktop mode authentication +// The key is passed as a URL parameter when pgAdmin launches in desktop mode +function getInternalKey() { + // Try to get from current URL's query params + const urlParams = new URLSearchParams(window.location.search); + const key = urlParams.get('key'); + if (key) return key; + + // Try to get from cookie (if not HTTPOnly) + const cookieValue = `; ${document.cookie}`; + const parts = cookieValue.split('; PGADMIN_INT_KEY='); + if (parts.length === 2) return parts.pop().split(';').shift(); + + return null; +} + +// Configure marked for security and rendering +marked.setOptions({ + gfm: true, // GitHub Flavored Markdown + breaks: true, // Convert \n to
+}); + + +const StyledBox = styled(Box)(({ theme }) => ({ + display: 'flex', + flexDirection: 'column', + height: '100%', + background: theme.palette.grey[400], + '& .AIReport-header': { + display: 'flex', + alignItems: 'center', + justifyContent: 'flex-end', + padding: theme.spacing(1, 2), + borderBottom: `1px solid ${theme.palette.divider}`, + backgroundColor: theme.palette.background.default, + }, + '& .AIReport-actions': { + display: 'flex', + gap: theme.spacing(1), + }, + '& .AIReport-content': { + flex: 1, + overflow: 'auto', + padding: theme.spacing(3), + position: 'relative', + display: 'flex', + justifyContent: 'center', + }, + '& .AIReport-paper': { + width: '100%', + maxWidth: '900px', + minHeight: 'fit-content', + }, + '& .AIReport-markdown': { + ...theme.mixins.panelBorder.all, + backgroundColor: theme.palette.background.default, + color: theme.palette.text.primary, + fontFamily: theme.typography.fontFamily, + fontSize: '0.9rem', + lineHeight: 1.6, + padding: theme.spacing(4), + boxShadow: theme.shadows[2], + userSelect: 'text', + cursor: 'text', + // Ensure all elements inherit the text color for dark mode support + '& *': { + color: 'inherit', + }, + '& a': { + color: theme.palette.primary.main, + }, + '& h1': { + fontSize: '1.5rem', + fontWeight: 600, + marginTop: theme.spacing(2), + marginBottom: theme.spacing(1), + borderBottom: `1px solid ${theme.palette.divider}`, + paddingBottom: theme.spacing(0.5), + color: theme.palette.text.primary, + }, + '& h1:first-of-type': { + marginTop: 0, + }, + '& h2': { + fontSize: '1.25rem', + fontWeight: 600, + marginTop: theme.spacing(2), + marginBottom: theme.spacing(1), + color: theme.palette.text.primary, + }, + '& h3': { + fontSize: '1.1rem', + fontWeight: 600, + marginTop: theme.spacing(1.5), + marginBottom: theme.spacing(0.5), + color: theme.palette.text.primary, + }, + '& p': { + marginTop: 0, + marginBottom: theme.spacing(1.5), + color: theme.palette.text.primary, + }, + '& ul, & ol': { + marginTop: 0, + marginBottom: theme.spacing(1.5), + paddingLeft: theme.spacing(3), + color: theme.palette.text.primary, + }, + '& ul ul, & ol ol, & ul ol, & ol ul': { + marginBottom: 0, + }, + '& li': { + marginBottom: theme.spacing(0.5), + color: theme.palette.text.primary, + '& > p': { + marginBottom: theme.spacing(0.5), + }, + }, + '& li > ul, & li > ol': { + marginTop: theme.spacing(0.5), + }, + // Task list checkboxes (GitHub style) + '& input[type="checkbox"]': { + marginRight: theme.spacing(0.5), + }, + '& code': { + backgroundColor: theme.palette.action.hover, + padding: '2px 6px', + borderRadius: '3px', + fontFamily: 'monospace', + fontSize: '0.85em', + }, + '& pre': { + backgroundColor: theme.palette.action.hover, + padding: theme.spacing(1.5), + borderRadius: '4px', + overflow: 'auto', + '& code': { + backgroundColor: 'transparent', + padding: 0, + }, + }, + '& blockquote': { + borderLeft: `4px solid ${theme.palette.primary.main}`, + margin: theme.spacing(1.5, 0), + padding: theme.spacing(1, 2), + backgroundColor: theme.palette.action.hover, + '& p:last-child': { + marginBottom: 0, + }, + }, + '& table': { + borderCollapse: 'collapse', + width: '100%', + marginBottom: theme.spacing(1.5), + display: 'block', + overflowX: 'auto', + }, + '& thead': { + display: 'table', + width: '100%', + tableLayout: 'fixed', + }, + '& tbody': { + display: 'table', + width: '100%', + tableLayout: 'fixed', + }, + '& tr': { + borderBottom: `1px solid ${theme.palette.divider}`, + }, + '& th, & td': { + border: `1px solid ${theme.palette.divider}`, + padding: theme.spacing(1, 1.5), + textAlign: 'left', + verticalAlign: 'top', + color: theme.palette.text.primary, + }, + '& th': { + backgroundColor: theme.palette.action.hover, + fontWeight: 600, + color: theme.palette.text.primary, + }, + '& tbody tr:hover': { + backgroundColor: theme.palette.action.hover, + }, + '& hr': { + border: 'none', + borderTop: `1px solid ${theme.palette.divider}`, + margin: theme.spacing(2, 0), + }, + '& strong': { + fontWeight: 600, + }, + '& em': { + fontStyle: 'italic', + }, + }, + '& .AIReport-error': { + ...theme.mixins.panelBorder.all, + backgroundColor: theme.palette.background.default, + color: theme.palette.error.main, + padding: theme.spacing(4), + textAlign: 'center', + width: '100%', + maxWidth: '900px', + boxShadow: theme.shadows[2], + userSelect: 'text', + cursor: 'text', + }, + '& .AIReport-placeholder': { + ...theme.mixins.panelBorder.all, + backgroundColor: theme.palette.background.default, + color: theme.palette.text.secondary, + padding: theme.spacing(4), + textAlign: 'center', + width: '100%', + maxWidth: '900px', + boxShadow: theme.shadows[2], + }, + '& .AIReport-progress': { + ...theme.mixins.panelBorder.all, + backgroundColor: theme.palette.background.default, + padding: theme.spacing(4), + width: '100%', + maxWidth: '900px', + boxShadow: theme.shadows[2], + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + gap: theme.spacing(2), + }, + '& .AIReport-progress-bar': { + width: '100%', + maxWidth: '400px', + }, +})); + +// Report category configurations +const REPORT_CONFIGS = { + security: { + endpoints: { + server: 'llm.security_report', + database: 'llm.database_security_report', + schema: 'llm.schema_security_report', + }, + streamEndpoints: { + server: 'llm.security_report_stream', + database: 'llm.database_security_report_stream', + schema: 'llm.schema_security_report_stream', + }, + titles: { + server: () => gettext('Server Security Report'), + database: () => gettext('Database Security Report'), + schema: () => gettext('Schema Security Report'), + }, + loadingMessage: () => gettext('Generating security report'), + filePrefix: 'security-report', + }, + performance: { + endpoints: { + server: 'llm.performance_report', + database: 'llm.database_performance_report', + }, + streamEndpoints: { + server: 'llm.performance_report_stream', + database: 'llm.database_performance_report_stream', + }, + titles: { + server: () => gettext('Server Performance Report'), + database: () => gettext('Database Performance Report'), + }, + loadingMessage: () => gettext('Generating performance report'), + filePrefix: 'performance-report', + }, + design: { + endpoints: { + database: 'llm.database_design_report', + schema: 'llm.schema_design_report', + }, + streamEndpoints: { + database: 'llm.database_design_report_stream', + schema: 'llm.schema_design_report_stream', + }, + titles: { + database: () => gettext('Database Design Review'), + schema: () => gettext('Schema Design Review'), + }, + loadingMessage: () => gettext('Generating design review'), + filePrefix: 'design-review', + }, +}; + +// Stage display names +const STAGE_NAMES = { + planning: () => gettext('Planning Analysis'), + gathering: () => gettext('Gathering Data'), + analyzing: () => gettext('Analyzing Sections'), + synthesizing: () => gettext('Creating Report'), +}; + + +export default function AIReport({ + sid, did, scid, reportCategory = 'security', reportType = 'server', + serverName, databaseName, schemaName, + onClose: _onClose +}) { + const [report, setReport] = useState(''); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const [progress, setProgress] = useState(null); + const [stopped, setStopped] = useState(false); + const pgAdmin = usePgAdmin(); + const eventSourceRef = useRef(null); + const stoppedRef = useRef(false); + + // Get text colors from the body element to match pgAdmin's theme + // The MUI theme may not be synced with pgAdmin's theme in docker tabs + const [textColors, setTextColors] = useState({ + primary: 'inherit', + secondary: 'inherit', + }); + + useEffect(() => { + const updateColors = () => { + const bodyStyles = window.getComputedStyle(document.body); + const primaryColor = bodyStyles.color; + + // For secondary color, create a semi-transparent version of the primary + // by parsing the RGB values and adding opacity + const rgbMatch = primaryColor.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/); + let secondaryColor = primaryColor; + if (rgbMatch) { + const [, r, g, b] = rgbMatch; + secondaryColor = `rgba(${r}, ${g}, ${b}, 0.7)`; + } + + setTextColors({ + primary: primaryColor, + secondary: secondaryColor, + }); + }; + + updateColors(); + + // Check periodically in case theme changes + const interval = setInterval(updateColors, 1000); + return () => clearInterval(interval); + }, []); + + const api = getApiInstance(); + const config = REPORT_CONFIGS[reportCategory]; + + // Build the API URL based on report category and type + const getReportUrl = useCallback((useStream = false) => { + const endpoints = useStream ? config.streamEndpoints : config.endpoints; + const endpoint = endpoints?.[reportType]; + if (!endpoint) { + console.error(`No endpoint for ${reportCategory}/${reportType}`); + return null; + } + + if (reportType === 'schema') { + return url_for(endpoint, { sid, did, scid }); + } else if (reportType === 'database') { + return url_for(endpoint, { sid, did }); + } else { + return url_for(endpoint, { sid }); + } + }, [config, reportType, reportCategory, sid, did, scid]); + + // Close any existing EventSource connection + const closeEventSource = useCallback(() => { + if (eventSourceRef.current) { + eventSourceRef.current.close(); + eventSourceRef.current = null; + } + }, []); + + // Stop the current report generation + const stopReport = useCallback(() => { + stoppedRef.current = true; + closeEventSource(); + setLoading(false); + setProgress(null); + setStopped(true); + setError(null); + }, [closeEventSource]); + + // Fallback to non-streaming API call + const generateReportFallback = useCallback(() => { + const url = getReportUrl(false); + if (!url) { + setError(gettext('Invalid report configuration.')); + return; + } + + stoppedRef.current = false; + setStopped(false); + setLoading(true); + setError(null); + setReport(''); + setProgress(null); + + api.get(url) + .then((res) => { + if (res.data && res.data.success) { + setReport(res.data.data?.report || ''); + } else { + setError(res.data?.errormsg || gettext('Failed to generate report.')); + } + }) + .catch((err) => { + let errMsg = gettext('Failed to generate report.'); + if (err.response?.data?.errormsg) { + errMsg = err.response.data.errormsg; + } else if (err.message) { + errMsg = err.message; + } + setError(errMsg); + pgAdmin.Browser.notifier.error(errMsg); + }) + .finally(() => { + setLoading(false); + }); + }, [getReportUrl, api, pgAdmin]); + + // Generate report using SSE streaming + const generateReportStream = useCallback(() => { + let url = getReportUrl(true); + if (!url) { + setError(gettext('Invalid report configuration.')); + return; + } + + // In desktop mode, add the internal key to the URL for authentication + const internalKey = getInternalKey(); + if (internalKey) { + const separator = url.includes('?') ? '&' : '?'; + url = `${url}${separator}key=${encodeURIComponent(internalKey)}`; + } + + closeEventSource(); + stoppedRef.current = false; + setStopped(false); + setLoading(true); + setError(null); + setReport(''); + setProgress({ stage: 'planning', message: gettext('Starting...') }); + + const eventSource = new EventSource(url, { withCredentials: true }); + eventSourceRef.current = eventSource; + + eventSource.onmessage = (event) => { + try { + const data = JSON.parse(event.data); + + if (data.type === 'stage') { + setProgress({ + stage: data.stage, + message: data.message, + completed: 0, + total: 0, + }); + } else if (data.type === 'progress') { + setProgress((prev) => ({ + ...prev, + stage: data.stage, + message: data.message, + section: data.section, + completed: data.completed || 0, + total: data.total || 0, + })); + } else if (data.type === 'retry') { + setProgress((prev) => ({ + ...prev, + message: data.message, + retrying: true, + })); + } else if (data.type === 'complete') { + setReport(data.report || ''); + setLoading(false); + setProgress(null); + closeEventSource(); + } else if (data.type === 'error') { + setError(data.message || gettext('Failed to generate report.')); + setLoading(false); + setProgress(null); + closeEventSource(); + } + } catch (e) { + console.error('Error parsing SSE event:', e); + } + }; + + // Track error count to detect persistent failures (like 401) + let errorCount = 0; + + eventSource.onerror = () => { + errorCount++; + + // If we get multiple errors quickly (like 401 retries), fall back immediately + if (errorCount >= 2) { + console.warn('SSE connection failed repeatedly, falling back to non-streaming'); + closeEventSource(); + generateReportFallback(); + return; + } + + // If the connection is closed, fall back + if (eventSource.readyState === EventSource.CLOSED) { + closeEventSource(); + generateReportFallback(); + } + }; + }, [getReportUrl, closeEventSource, generateReportFallback]); + + // Main generate function - tries streaming first + const generateReport = useCallback(() => { + // Check if streaming endpoints are available + const streamUrl = getReportUrl(true); + if (streamUrl) { + generateReportStream(); + } else { + generateReportFallback(); + } + }, [getReportUrl, generateReportStream, generateReportFallback]); + + useEffect(() => { + // Generate report on mount + generateReport(); + + // Cleanup on unmount + return () => { + closeEventSource(); + }; + }, [sid, did, scid, reportCategory, reportType]); + + // Build markdown header for the report + const getReportHeader = () => { + const titleFn = config.titles[reportType]; + let title = titleFn ? titleFn() : gettext('Report'); + let subtitle; + + if (reportType === 'schema') { + title += ': ' + schemaName; + subtitle = `${schemaName} ${gettext('in')} ${databaseName} ${gettext('on')} ${serverName}`; + } else if (reportType === 'database') { + title += ': ' + databaseName; + subtitle = `${databaseName} ${gettext('on')} ${serverName}`; + } else { + title += ': ' + serverName; + subtitle = serverName; + } + + const date = new Date().toLocaleDateString(undefined, { + year: 'numeric', + month: 'long', + day: 'numeric' + }); + + return `# ${title}\n\n*${subtitle} • ${date}*\n\n---\n\n`; + }; + + // Build filename for download based on report type + const getDownloadFilename = () => { + const date = new Date().toISOString().slice(0, 10); + const sanitize = (str) => str ? str.replace(/[^a-z0-9]/gi, '_') : ''; + const prefix = config.filePrefix; + + if (reportType === 'schema') { + return `${prefix}-${sanitize(schemaName)}-${sanitize(databaseName)}-${sanitize(serverName)}-${date}.md`; + } else if (reportType === 'database') { + return `${prefix}-${sanitize(databaseName)}-${sanitize(serverName)}-${date}.md`; + } else { + return `${prefix}-${sanitize(serverName)}-${date}.md`; + } + }; + + const handleDownload = () => { + if (!report) return; + + const blob = new Blob([getReportHeader() + report], { type: 'text/markdown' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = getDownloadFilename(); + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + }; + + const reportHtml = report ? marked.parse(getReportHeader() + report) : ''; + + return ( + + + + } + > + {gettext('Stop')} + + } + > + {gettext('Regenerate')} + + } + > + {gettext('Download')} + + + + + + {/* Progress display during streaming */} + {loading && progress && ( + + + {STAGE_NAMES[progress.stage]?.() || progress.stage} + + + {progress.message} + + {progress.total > 0 && ( + + + + {progress.completed} / {progress.total} + + + )} + {!progress.total && ( + + + + )} + + )} + + {/* Fallback loader when not using streaming */} + {loading && !progress && ( + + )} + + {error && !loading && ( + + {error} + + {gettext('Retry')} + + + )} + + {stopped && !loading && !error && ( + + + + {gettext('Report generation was cancelled.')} + + + {gettext('Click Regenerate to start a new report.')} + + + )} + + {!report && !loading && !error && !stopped && ( + + + {gettext('Generating report...')} + + + )} + + {report && !loading && ( + + ({ + color: `${theme.palette.text.primary} !important`, + '& *': { + color: 'inherit !important' + } + })} + > +

+ + + )} + + + ); +} + +AIReport.propTypes = { + sid: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, + did: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + scid: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + reportCategory: PropTypes.oneOf(['security', 'performance', 'design']), + reportType: PropTypes.oneOf(['server', 'database', 'schema']), + serverName: PropTypes.string.isRequired, + databaseName: PropTypes.string, + schemaName: PropTypes.string, + onClose: PropTypes.func, +}; diff --git a/web/pgadmin/llm/static/js/SecurityReport.jsx b/web/pgadmin/llm/static/js/SecurityReport.jsx new file mode 100644 index 00000000000..55d9fb58cbd --- /dev/null +++ b/web/pgadmin/llm/static/js/SecurityReport.jsx @@ -0,0 +1,383 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + +import { useState, useEffect } from 'react'; +import { Box, Paper, Typography } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import DownloadIcon from '@mui/icons-material/Download'; +import RefreshIcon from '@mui/icons-material/Refresh'; +import PropTypes from 'prop-types'; +import { marked } from 'marked'; + +import gettext from 'sources/gettext'; +import url_for from 'sources/url_for'; +import getApiInstance from '../../../static/js/api_instance'; +import Loader from '../../../static/js/components/Loader'; +import { PrimaryButton, DefaultButton } from '../../../static/js/components/Buttons'; +import { usePgAdmin } from '../../../static/js/PgAdminProvider'; + +// Configure marked for security and rendering +marked.setOptions({ + gfm: true, // GitHub Flavored Markdown + breaks: true, // Convert \n to
+}); + + +const StyledBox = styled(Box)(({ theme }) => ({ + display: 'flex', + flexDirection: 'column', + height: '100%', + background: theme.palette.grey[400], + '& .SecurityReport-header': { + display: 'flex', + alignItems: 'center', + justifyContent: 'flex-end', + padding: theme.spacing(1, 2), + borderBottom: `1px solid ${theme.palette.divider}`, + backgroundColor: theme.palette.background.default, + }, + '& .SecurityReport-actions': { + display: 'flex', + gap: theme.spacing(1), + }, + '& .SecurityReport-content': { + flex: 1, + overflow: 'auto', + padding: theme.spacing(3), + position: 'relative', + display: 'flex', + justifyContent: 'center', + }, + '& .SecurityReport-paper': { + width: '100%', + maxWidth: '900px', + minHeight: 'fit-content', + }, + '& .SecurityReport-markdown': { + ...theme.mixins.panelBorder.all, + backgroundColor: theme.palette.background.default, + fontFamily: theme.typography.fontFamily, + fontSize: '0.9rem', + lineHeight: 1.6, + padding: theme.spacing(4), + boxShadow: theme.shadows[2], + userSelect: 'text', + cursor: 'text', + '& h1': { + fontSize: '1.5rem', + fontWeight: 600, + marginTop: theme.spacing(2), + marginBottom: theme.spacing(1), + borderBottom: `1px solid ${theme.palette.divider}`, + paddingBottom: theme.spacing(0.5), + }, + '& h2': { + fontSize: '1.25rem', + fontWeight: 600, + marginTop: theme.spacing(2), + marginBottom: theme.spacing(1), + }, + '& h3': { + fontSize: '1.1rem', + fontWeight: 600, + marginTop: theme.spacing(1.5), + marginBottom: theme.spacing(0.5), + }, + '& p': { + marginTop: 0, + marginBottom: theme.spacing(1.5), + }, + '& ul, & ol': { + marginTop: 0, + marginBottom: theme.spacing(1.5), + paddingLeft: theme.spacing(3), + }, + '& ul ul, & ol ol, & ul ol, & ol ul': { + marginBottom: 0, + }, + '& li': { + marginBottom: theme.spacing(0.5), + '& > p': { + marginBottom: theme.spacing(0.5), + }, + }, + '& li > ul, & li > ol': { + marginTop: theme.spacing(0.5), + }, + // Task list checkboxes (GitHub style) + '& input[type="checkbox"]': { + marginRight: theme.spacing(0.5), + }, + '& code': { + backgroundColor: theme.palette.action.hover, + padding: '2px 6px', + borderRadius: '3px', + fontFamily: 'monospace', + fontSize: '0.85em', + }, + '& pre': { + backgroundColor: theme.palette.action.hover, + padding: theme.spacing(1.5), + borderRadius: '4px', + overflow: 'auto', + '& code': { + backgroundColor: 'transparent', + padding: 0, + }, + }, + '& blockquote': { + borderLeft: `4px solid ${theme.palette.primary.main}`, + margin: theme.spacing(1.5, 0), + padding: theme.spacing(1, 2), + backgroundColor: theme.palette.action.hover, + '& p:last-child': { + marginBottom: 0, + }, + }, + '& table': { + borderCollapse: 'collapse', + width: '100%', + marginBottom: theme.spacing(1.5), + display: 'block', + overflowX: 'auto', + }, + '& thead': { + display: 'table', + width: '100%', + tableLayout: 'fixed', + }, + '& tbody': { + display: 'table', + width: '100%', + tableLayout: 'fixed', + }, + '& tr': { + borderBottom: `1px solid ${theme.palette.divider}`, + }, + '& th, & td': { + border: `1px solid ${theme.palette.divider}`, + padding: theme.spacing(1, 1.5), + textAlign: 'left', + verticalAlign: 'top', + }, + '& th': { + backgroundColor: theme.palette.action.hover, + fontWeight: 600, + }, + '& tbody tr:hover': { + backgroundColor: theme.palette.action.hover, + }, + '& hr': { + border: 'none', + borderTop: `1px solid ${theme.palette.divider}`, + margin: theme.spacing(2, 0), + }, + '& strong': { + fontWeight: 600, + }, + '& em': { + fontStyle: 'italic', + }, + }, + '& .SecurityReport-error': { + ...theme.mixins.panelBorder.all, + backgroundColor: theme.palette.background.default, + color: theme.palette.error.main, + padding: theme.spacing(4), + textAlign: 'center', + width: '100%', + maxWidth: '900px', + boxShadow: theme.shadows[2], + }, + '& .SecurityReport-placeholder': { + ...theme.mixins.panelBorder.all, + backgroundColor: theme.palette.background.default, + color: theme.palette.text.secondary, + padding: theme.spacing(4), + textAlign: 'center', + width: '100%', + maxWidth: '900px', + boxShadow: theme.shadows[2], + }, +})); + + +export default function SecurityReport({ + sid, did, scid, reportType = 'server', + serverName, databaseName, schemaName, + onClose: _onClose +}) { + const [report, setReport] = useState(''); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const pgAdmin = usePgAdmin(); + + const api = getApiInstance(); + + // Build the API URL based on report type + const getReportUrl = () => { + if (reportType === 'schema') { + return url_for('llm.schema_security_report', { sid, did, scid }); + } else if (reportType === 'database') { + return url_for('llm.database_security_report', { sid, did }); + } else { + return url_for('llm.security_report', { sid }); + } + }; + + const generateReport = () => { + setLoading(true); + setError(null); + setReport(''); + + api.get(getReportUrl()) + .then((res) => { + if (res.data && res.data.success) { + setReport(res.data.data?.report || ''); + } else { + setError(res.data?.errormsg || gettext('Failed to generate security report.')); + } + }) + .catch((err) => { + let errMsg = gettext('Failed to generate security report.'); + if (err.response?.data?.errormsg) { + errMsg = err.response.data.errormsg; + } else if (err.message) { + errMsg = err.message; + } + setError(errMsg); + pgAdmin.Browser.notifier.error(errMsg); + }) + .finally(() => { + setLoading(false); + }); + }; + + useEffect(() => { + // Generate report on mount + generateReport(); + }, [sid, did, scid, reportType]); + + // Build markdown header for the report + const getReportHeader = () => { + let title, subtitle; + + if (reportType === 'schema') { + title = gettext('Schema Security Report') + ': ' + schemaName; + subtitle = `${schemaName} ${gettext('in')} ${databaseName} ${gettext('on')} ${serverName}`; + } else if (reportType === 'database') { + title = gettext('Database Security Report') + ': ' + databaseName; + subtitle = `${databaseName} ${gettext('on')} ${serverName}`; + } else { + title = gettext('Server Security Report') + ': ' + serverName; + subtitle = serverName; + } + + const date = new Date().toLocaleDateString(undefined, { + year: 'numeric', + month: 'long', + day: 'numeric' + }); + + return `# ${title}\n\n*${subtitle} • ${date}*\n\n---\n\n`; + }; + + // Build filename for download based on report type + const getDownloadFilename = () => { + const date = new Date().toISOString().slice(0, 10); + const sanitize = (str) => str ? str.replace(/[^a-z0-9]/gi, '_') : ''; + + if (reportType === 'schema') { + return `security-report-${sanitize(schemaName)}-${sanitize(databaseName)}-${sanitize(serverName)}-${date}.md`; + } else if (reportType === 'database') { + return `security-report-${sanitize(databaseName)}-${sanitize(serverName)}-${date}.md`; + } else { + return `security-report-${sanitize(serverName)}-${date}.md`; + } + }; + + const handleDownload = () => { + if (!report) return; + + const blob = new Blob([getReportHeader() + report], { type: 'text/markdown' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = getDownloadFilename(); + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + }; + + const reportHtml = report ? marked.parse(getReportHeader() + report) : ''; + + return ( + + + + } + > + {gettext('Regenerate')} + + } + > + {gettext('Download')} + + + + + + + + {error && !loading && ( + + {error} + + {gettext('Retry')} + + + )} + + {!report && !loading && !error && ( + + + {gettext('Click "Generate" to create a security report for this server.')} + + + )} + + {report && !loading && ( + + +
+ + + )} + + + ); +} + +SecurityReport.propTypes = { + sid: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, + did: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + scid: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + reportType: PropTypes.oneOf(['server', 'database', 'schema']), + serverName: PropTypes.string.isRequired, + databaseName: PropTypes.string, + schemaName: PropTypes.string, + onClose: PropTypes.func, +}; diff --git a/web/pgadmin/llm/static/js/ai_tools.js b/web/pgadmin/llm/static/js/ai_tools.js new file mode 100644 index 00000000000..d6e3e4ff7f7 --- /dev/null +++ b/web/pgadmin/llm/static/js/ai_tools.js @@ -0,0 +1,469 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + +import AIReport from './AIReport'; +import { AllPermissionTypes, BROWSER_PANELS } from '../../../browser/static/js/constants'; +import getApiInstance from '../../../static/js/api_instance'; +import url_for from 'sources/url_for'; + +// AI Reports Module +define([ + 'sources/gettext', 'pgadmin.browser', +], function( + gettext, pgBrowser +) { + + // if module is already initialized, refer to that. + if (pgBrowser.AITools) { + return pgBrowser.AITools; + } + + // Create an Object AITools of pgBrowser class + pgBrowser.AITools = { + llmEnabled: false, + llmSystemEnabled: false, + llmStatusChecked: false, + + init: function() { + if (this.initialized) + return; + + this.initialized = true; + + // Check LLM status + this.checkLLMStatus(); + + // Register AI Reports menu category + pgBrowser.add_menu_category({ + name: 'ai_tools', + label: gettext('AI Reports'), + priority: 100, + }); + + // Define the menus + let menus = []; + + // ===================================================================== + // Security Reports - Server, Database, Schema + // ===================================================================== + menus.push({ + name: 'ai_security_report', + module: this, + applies: ['tools'], + callback: 'show_security_report', + category: 'ai_tools', + priority: 1, + label: gettext('Security'), + icon: 'fa fa-shield-alt', + enable: this.security_report_enabled.bind(this), + data: { + data_disabled: gettext('Please select a server, database, or schema.'), + }, + permission: AllPermissionTypes.TOOLS_AI, + }); + + // Context menus for security reports + for (let node_val of ['server', 'database', 'schema']) { + menus.push({ + name: 'ai_security_report_context_' + node_val, + node: node_val, + module: this, + applies: ['context'], + callback: 'show_security_report', + category: 'ai_tools', + priority: 100, + label: gettext('Security'), + icon: 'fa fa-shield-alt', + enable: this.security_report_enabled.bind(this), + permission: AllPermissionTypes.TOOLS_AI, + }); + } + + // ===================================================================== + // Performance Reports - Server, Database + // ===================================================================== + menus.push({ + name: 'ai_performance_report', + module: this, + applies: ['tools'], + callback: 'show_performance_report', + category: 'ai_tools', + priority: 2, + label: gettext('Performance'), + icon: 'fa fa-tachometer-alt', + enable: this.performance_report_enabled.bind(this), + data: { + data_disabled: gettext('Please select a server or database.'), + }, + permission: AllPermissionTypes.TOOLS_AI, + }); + + // Context menus for performance reports (server and database only) + for (let node_val of ['server', 'database']) { + menus.push({ + name: 'ai_performance_report_context_' + node_val, + node: node_val, + module: this, + applies: ['context'], + callback: 'show_performance_report', + category: 'ai_tools', + priority: 101, + label: gettext('Performance'), + icon: 'fa fa-tachometer-alt', + enable: this.performance_report_enabled.bind(this), + permission: AllPermissionTypes.TOOLS_AI, + }); + } + + // ===================================================================== + // Design Review Reports - Database, Schema + // ===================================================================== + menus.push({ + name: 'ai_design_report', + module: this, + applies: ['tools'], + callback: 'show_design_report', + category: 'ai_tools', + priority: 3, + label: gettext('Design'), + icon: 'fa fa-drafting-compass', + enable: this.design_report_enabled.bind(this), + data: { + data_disabled: gettext('Please select a database or schema.'), + }, + permission: AllPermissionTypes.TOOLS_AI, + }); + + // Context menus for design review (database and schema only) + for (let node_val of ['database', 'schema']) { + menus.push({ + name: 'ai_design_report_context_' + node_val, + node: node_val, + module: this, + applies: ['context'], + callback: 'show_design_report', + category: 'ai_tools', + priority: 102, + label: gettext('Design'), + icon: 'fa fa-drafting-compass', + enable: this.design_report_enabled.bind(this), + permission: AllPermissionTypes.TOOLS_AI, + }); + } + + pgBrowser.add_menus(menus); + + return this; + }, + + // Check if LLM is configured + checkLLMStatus: function() { + const api = getApiInstance(); + api.get(url_for('llm.status')) + .then((res) => { + if (res.data && res.data.success) { + this.llmEnabled = res.data.data?.enabled || false; + this.llmSystemEnabled = res.data.data?.system_enabled || false; + } + this.llmStatusChecked = true; + }) + .catch(() => { + this.llmEnabled = false; + this.llmSystemEnabled = false; + this.llmStatusChecked = true; + }); + }, + + // Get the node type from tree item + getNodeType: function(item) { + let tree = pgBrowser.tree; + let nodeData = tree.itemData(item); + + if (!nodeData) return null; + return nodeData._type; + }, + + // Common LLM enablement check + checkLLMEnabled: function(data) { + if (!this.llmSystemEnabled) { + if (data) { + data.data_disabled = gettext('AI features are disabled in the server configuration.'); + } + return false; + } + + if (!this.llmEnabled) { + if (data) { + data.data_disabled = gettext('Please configure an LLM provider in Preferences > AI to enable this feature.'); + } + return false; + } + + return true; + }, + + // ===================================================================== + // Security Report Functions + // ===================================================================== + + security_report_enabled: function(node, item, data) { + if (!this.checkLLMEnabled(data)) return false; + + if (!node || !item) return false; + + let tree = pgBrowser.tree; + let info = tree.getTreeNodeHierarchy(item); + + if (!info || !info.server) { + if (data) { + data.data_disabled = gettext('Please select a server, database, or schema.'); + } + return false; + } + + if (!info.server.connected) { + if (data) { + data.data_disabled = gettext('Please connect to the server first.'); + } + return false; + } + + let nodeType = this.getNodeType(item); + if (!['server', 'database', 'schema'].includes(nodeType)) { + if (data) { + data.data_disabled = gettext('Please select a server, database, or schema.'); + } + return false; + } + + if (nodeType === 'database' || nodeType === 'schema') { + if (!info.database || !info.database.connected) { + if (data) { + data.data_disabled = gettext('Please connect to the database first.'); + } + return false; + } + } + + return true; + }, + + show_security_report: function() { + this._showReport('security', ['server', 'database', 'schema']); + }, + + // ===================================================================== + // Performance Report Functions + // ===================================================================== + + performance_report_enabled: function(node, item, data) { + if (!this.checkLLMEnabled(data)) return false; + + if (!node || !item) return false; + + let tree = pgBrowser.tree; + let info = tree.getTreeNodeHierarchy(item); + + if (!info || !info.server) { + if (data) { + data.data_disabled = gettext('Please select a server or database.'); + } + return false; + } + + if (!info.server.connected) { + if (data) { + data.data_disabled = gettext('Please connect to the server first.'); + } + return false; + } + + let nodeType = this.getNodeType(item); + if (!['server', 'database'].includes(nodeType)) { + if (data) { + data.data_disabled = gettext('Please select a server or database.'); + } + return false; + } + + if (nodeType === 'database') { + if (!info.database || !info.database.connected) { + if (data) { + data.data_disabled = gettext('Please connect to the database first.'); + } + return false; + } + } + + return true; + }, + + show_performance_report: function() { + this._showReport('performance', ['server', 'database']); + }, + + // ===================================================================== + // Design Review Functions + // ===================================================================== + + design_report_enabled: function(node, item, data) { + if (!this.checkLLMEnabled(data)) return false; + + if (!node || !item) return false; + + let tree = pgBrowser.tree; + let info = tree.getTreeNodeHierarchy(item); + + if (!info || !info.server) { + if (data) { + data.data_disabled = gettext('Please select a database or schema.'); + } + return false; + } + + if (!info.server.connected) { + if (data) { + data.data_disabled = gettext('Please connect to the server first.'); + } + return false; + } + + let nodeType = this.getNodeType(item); + if (!['database', 'schema'].includes(nodeType)) { + if (data) { + data.data_disabled = gettext('Please select a database or schema.'); + } + return false; + } + + if (!info.database || !info.database.connected) { + if (data) { + data.data_disabled = gettext('Please connect to the database first.'); + } + return false; + } + + return true; + }, + + show_design_report: function() { + this._showReport('design', ['database', 'schema']); + }, + + // ===================================================================== + // Common Report Display Function + // ===================================================================== + + _showReport: function(reportCategory, validNodeTypes) { + let t = pgBrowser.tree, + i = t.selected(), + info = pgBrowser.tree.getTreeNodeHierarchy(i); + + if (!info || !info.server) { + pgBrowser.report_error( + gettext('Report'), + gettext('Please select a valid node.') + ); + return; + } + + let nodeType = this.getNodeType(i); + if (!validNodeTypes.includes(nodeType)) { + pgBrowser.report_error( + gettext('Report'), + gettext('Please select a valid node for this report type.') + ); + return; + } + + let sid = info.server._id; + let did = info.database ? info.database._id : null; + let scid = info.schema ? info.schema._id : null; + + // Determine report type based on node + let reportType = nodeType; + + // Build panel title and ID with timestamp for uniqueness + let panelTitle = this._buildPanelTitle(reportCategory, reportType, info); + let panelIdSuffix = this._buildPanelIdSuffix(reportCategory, reportType, sid, did, scid); + const timestamp = Date.now(); + const panelId = `${BROWSER_PANELS.AI_REPORT_PREFIX}-${panelIdSuffix}-${timestamp}`; + + // Get docker handler and open as tab in main panel area + let handler = pgBrowser.getDockerHandler?.( + BROWSER_PANELS.AI_REPORT_PREFIX, + pgBrowser.docker.default_workspace + ); + handler.focus(); + handler.docker.openTab({ + id: panelId, + title: panelTitle, + content: ( + { handler.docker.close(panelId); }} + /> + ), + closable: true, + cache: false, + group: 'playground' + }, BROWSER_PANELS.MAIN, 'middle', true); + }, + + _buildPanelTitle: function(reportCategory, reportType, info) { + let categoryLabel; + switch (reportCategory) { + case 'security': + categoryLabel = gettext('Security Report'); + break; + case 'performance': + categoryLabel = gettext('Performance Report'); + break; + case 'design': + categoryLabel = gettext('Design Review'); + break; + default: + categoryLabel = gettext('Report'); + } + + if (reportType === 'server') { + return info.server.label + ' ' + categoryLabel; + } else if (reportType === 'database') { + return info.database.label + ' ' + gettext('on') + ' ' + + info.server.label + ' ' + categoryLabel; + } else if (reportType === 'schema') { + return info.schema.label + ' ' + gettext('in') + ' ' + + info.database.label + ' ' + gettext('on') + ' ' + + info.server.label + ' ' + categoryLabel; + } + return categoryLabel; + }, + + _buildPanelIdSuffix: function(reportCategory, reportType, sid, did, scid) { + let base = `${reportCategory}_${reportType}`; + if (reportType === 'server') { + return `${base}_${sid}`; + } else if (reportType === 'database') { + return `${base}_${sid}_${did}`; + } else if (reportType === 'schema') { + return `${base}_${sid}_${did}_${scid}`; + } + return base; + }, + }; + + return pgBrowser.AITools; +}); diff --git a/web/pgadmin/llm/tests/test_report_endpoints.py b/web/pgadmin/llm/tests/test_report_endpoints.py new file mode 100644 index 00000000000..ab41af4270f --- /dev/null +++ b/web/pgadmin/llm/tests/test_report_endpoints.py @@ -0,0 +1,233 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +import json +from unittest.mock import patch, MagicMock +from pgadmin.utils.route import BaseTestGenerator +from regression.python_test_utils import test_utils as utils + + +class SecurityReportServerTestCase(BaseTestGenerator): + """Test cases for security report generation at server level""" + + scenarios = [ + ('Security Report - LLM Disabled', dict( + llm_enabled=False + )), + ('Security Report - LLM Enabled', dict( + llm_enabled=True + )), + ] + + def setUp(self): + self.server_id = 1 + + def runTest(self): + """Test security report endpoint at server level""" + with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ + patch('pgadmin.llm.reports.generator.generate_report_sync') as mock_generate, \ + patch('pgadmin.utils.driver.get_driver') as mock_get_driver: + + # Mock database connection + mock_conn = MagicMock() + mock_conn.connected.return_value = True + + mock_manager = MagicMock() + mock_manager.connection.return_value = mock_conn + + mock_driver = MagicMock() + mock_driver.connection_manager.return_value = mock_manager + mock_get_driver.return_value = mock_driver + + mock_enabled.return_value = self.llm_enabled + + if self.llm_enabled: + mock_generate.return_value = (True, "# Security Report\n\nNo issues found.") + + url = '/llm/security-report/' + str(self.server_id) + response = self.tester.get(url, content_type='application/json') + + # All responses return 200, check success field in JSON + self.assertEqual(response.status_code, 200) + data = json.loads(response.data) + + if self.llm_enabled: + self.assertTrue(data['success']) + self.assertIn('report', data['data']) + else: + self.assertFalse(data['success']) + self.assertIn('errormsg', data) + + +class PerformanceReportDatabaseTestCase(BaseTestGenerator): + """Test cases for performance report generation at database level""" + + scenarios = [ + ('Performance Report - Database Level', dict( + llm_enabled=True + )), + ] + + def setUp(self): + self.server_id = 1 + self.db_id = 2 + + def runTest(self): + """Test performance report endpoint at database level""" + with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ + patch('pgadmin.llm.reports.generator.generate_report_sync') as mock_generate, \ + patch('pgadmin.utils.driver.get_driver') as mock_get_driver: + + # Mock database connection + mock_conn = MagicMock() + mock_conn.connected.return_value = True + mock_conn.db = 'testdb' + + mock_manager = MagicMock() + mock_manager.connection.return_value = mock_conn + + mock_driver = MagicMock() + mock_driver.connection_manager.return_value = mock_manager + mock_get_driver.return_value = mock_driver + + mock_enabled.return_value = self.llm_enabled + mock_generate.return_value = (True, "# Performance Report\n\nOptimization suggestions...") + + url = '/llm/database-performance-report/' + str(self.server_id) + '/' + str(self.db_id) + response = self.tester.get(url, content_type='application/json') + + self.assertEqual(response.status_code, 200) + data = json.loads(response.data) + self.assertTrue(data['success']) + + +class DesignReportSchemaTestCase(BaseTestGenerator): + """Test cases for design review report generation at schema level""" + + scenarios = [ + ('Design Report - Schema Level', dict( + llm_enabled=True + )), + ] + + def setUp(self): + self.server_id = 1 + self.db_id = 2 + self.schema_id = 3 + + def runTest(self): + """Test design review report endpoint at schema level""" + with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ + patch('pgadmin.llm.reports.generator.generate_report_sync') as mock_generate, \ + patch('pgadmin.utils.driver.get_driver') as mock_get_driver: + + # Mock connection to return schema name + mock_conn = MagicMock() + mock_conn.connected.return_value = True + mock_conn.db = 'testdb' + mock_conn.execute_dict.return_value = (True, {'rows': [{'nspname': 'public'}]}) + + mock_manager = MagicMock() + mock_manager.connection.return_value = mock_conn + + mock_driver = MagicMock() + mock_driver.connection_manager.return_value = mock_manager + mock_get_driver.return_value = mock_driver + + mock_enabled.return_value = self.llm_enabled + mock_generate.return_value = (True, "# Design Review\n\nSchema structure looks good...") + + url = '/llm/schema-design-report/' + str(self.server_id) + '/' + str(self.db_id) + '/' + str(self.schema_id) + response = self.tester.get(url, content_type='application/json') + + self.assertEqual(response.status_code, 200) + data = json.loads(response.data) + self.assertTrue(data['success']) + + +class StreamingReportTestCase(BaseTestGenerator): + """Test cases for streaming report endpoints with SSE""" + + scenarios = [ + ('Streaming Security Report - Server', dict()), + ] + + def setUp(self): + self.server_id = 1 + + def runTest(self): + """Test streaming report endpoint uses SSE format""" + with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ + patch('pgadmin.llm.reports.generator.generate_report_streaming') as mock_streaming, \ + patch('pgadmin.utils.driver.get_driver') as mock_get_driver: + + # Mock connection + mock_conn = MagicMock() + mock_conn.connected.return_value = True + + mock_manager = MagicMock() + mock_manager.connection.return_value = mock_conn + + mock_driver = MagicMock() + mock_driver.connection_manager.return_value = mock_manager + mock_get_driver.return_value = mock_driver + + mock_enabled.return_value = True + mock_streaming.return_value = iter([]) # Empty generator + + url = '/llm/security-report/' + str(self.server_id) + '/stream' + response = self.tester.get(url) + + # SSE endpoints should return 200 and have text/event-stream content type + self.assertEqual(response.status_code, 200) + self.assertIn('text/event-stream', response.content_type) + + +class ReportErrorHandlingTestCase(BaseTestGenerator): + """Test cases for report error handling""" + + scenarios = [ + ('Report with API Error', dict( + simulate_error=True + )), + ] + + def setUp(self): + self.server_id = 1 + + def runTest(self): + """Test report endpoint handles LLM API errors gracefully""" + with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ + patch('pgadmin.llm.reports.generator.generate_report_sync') as mock_generate, \ + patch('pgadmin.utils.driver.get_driver') as mock_get_driver: + + # Mock database connection + mock_conn = MagicMock() + mock_conn.connected.return_value = True + + mock_manager = MagicMock() + mock_manager.connection.return_value = mock_conn + + mock_driver = MagicMock() + mock_driver.connection_manager.return_value = mock_manager + mock_get_driver.return_value = mock_driver + + mock_enabled.return_value = True + + if self.simulate_error: + mock_generate.side_effect = Exception("API connection failed") + + url = '/llm/security-report/' + str(self.server_id) + response = self.tester.get(url, content_type='application/json') + + # Should return 200 with error in JSON, not crash + self.assertEqual(response.status_code, 200) + data = json.loads(response.data) + self.assertFalse(data['success']) + self.assertIn('errormsg', data) diff --git a/web/pgadmin/llm/tools/__init__.py b/web/pgadmin/llm/tools/__init__.py new file mode 100644 index 00000000000..2a1834c873b --- /dev/null +++ b/web/pgadmin/llm/tools/__init__.py @@ -0,0 +1,30 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""LLM tools for interacting with PostgreSQL databases.""" + +from pgadmin.llm.tools.database import ( + execute_readonly_query, + get_database_schema, + get_table_columns, + get_table_info, + execute_tool, + DatabaseToolError, + DATABASE_TOOLS +) + +__all__ = [ + 'execute_readonly_query', + 'get_database_schema', + 'get_table_columns', + 'get_table_info', + 'execute_tool', + 'DatabaseToolError', + 'DATABASE_TOOLS' +] diff --git a/web/pgadmin/llm/tools/database.py b/web/pgadmin/llm/tools/database.py new file mode 100644 index 00000000000..4595efb3a16 --- /dev/null +++ b/web/pgadmin/llm/tools/database.py @@ -0,0 +1,806 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Database tools for LLM interactions. + +These tools allow the LLM to query PostgreSQL databases in a safe, +read-only manner. All queries are executed within read-only transactions +to prevent any data modification. + +Uses pgAdmin's SQL template infrastructure for version-aware queries. +""" + +import secrets +from typing import Optional + +from flask import render_template + +from pgadmin.utils.driver import get_driver +from pgadmin.utils.compile_template_name import compile_template_path +from pgadmin.llm.models import Tool +import config + + +# Template paths for SQL queries (used with compile_template_path) +SCHEMAS_TEMPLATE_PATH = 'schemas/pg' +TABLES_TEMPLATE_PATH = 'tables/sql' +COLUMNS_TEMPLATE_PATH = 'columns/sql' +INDEXES_TEMPLATE_PATH = 'indexes/sql' + + +# Application name prefix for LLM connections +LLM_APP_NAME_PREFIX = 'pgAdmin 4 - LLM' + + +class DatabaseToolError(Exception): + """Exception raised when a database tool operation fails.""" + + def __init__(self, message: str, code: Optional[str] = None): + self.message = message + self.code = code + super().__init__(message) + + +def _get_connection(sid: int, did: int, conn_id: str): + """ + Get a database connection for the specified server and database. + + Args: + sid: Server ID + did: Database ID (OID) + conn_id: Unique connection identifier + + Returns: + Tuple of (manager, connection) objects + + Raises: + DatabaseToolError: If connection fails + """ + try: + driver = get_driver(config.PG_DEFAULT_DRIVER) + manager = driver.connection_manager(sid) + + # Get connection - this will create one if it doesn't exist + conn = manager.connection( + did=did, + conn_id=conn_id, + auto_reconnect=False, # Don't auto-reconnect for LLM queries + use_binary_placeholder=True, + array_to_string=True + ) + + return manager, conn + + except Exception as e: + raise DatabaseToolError( + f"Failed to get connection: {str(e)}", + code="CONNECTION_ERROR" + ) + + +def _connect_readonly(manager, conn, conn_id: str) -> tuple[bool, str]: + """ + Establish a read-only connection. + + Sets the application_name to identify this as an LLM connection + and ensures the connection is in read-only mode. + + Args: + manager: The server manager + conn: The connection object + conn_id: Connection identifier + + Returns: + Tuple of (success, error_message) + """ + try: + # Connect if not already connected + if not conn.connected(): + status, msg = conn.connect() + if not status: + return False, msg + + # Set application name via SQL - this is thread-safe and doesn't + # require environment variables. The name will be visible in + # pg_stat_activity to identify LLM connections. + app_name = f'{LLM_APP_NAME_PREFIX} - {conn_id}' + # Escape single quotes in the app name for safety + app_name_escaped = app_name.replace("'", "''") + status, _ = conn.execute_void( + f"SET application_name = '{app_name_escaped}'" + ) + if not status: + # Non-fatal - connection still works without custom app name + pass + + return True, None + + except Exception as e: + return False, str(e) + + +def _execute_readonly_query(conn, query: str) -> dict: + """ + Execute a query in a read-only transaction. + + The query is wrapped in a read-only transaction to ensure + no data modifications can occur. + + Args: + conn: Database connection + query: SQL query to execute + + Returns: + Dictionary with 'columns' and 'rows' keys + + Raises: + DatabaseToolError: If query execution fails + """ + # Wrap the query in a read-only transaction + # This ensures even if the query tries to modify data, it will fail + readonly_wrapper = """ + BEGIN TRANSACTION READ ONLY; + {query} + ROLLBACK; + """ + + # For SELECT queries, we need to handle them differently + # We'll set the transaction to read-only, execute, then rollback + try: + # First, set the transaction to read-only mode + status, result = conn.execute_void( + "BEGIN TRANSACTION READ ONLY" + ) + if not status: + raise DatabaseToolError( + f"Failed to start read-only transaction: {result}", + code="TRANSACTION_ERROR" + ) + + try: + # Execute the actual query + status, result = conn.execute_2darray(query) + + if not status: + raise DatabaseToolError( + f"Query execution failed: {result}", + code="QUERY_ERROR" + ) + + # Format the result + columns = [] + rows = [] + + if result and 'columns' in result: + columns = [col['name'] for col in result['columns']] + + if result and 'rows' in result: + rows = result['rows'] + + return { + 'columns': columns, + 'rows': rows, + 'row_count': len(rows) + } + + finally: + # Always rollback - we're read-only anyway + conn.execute_void("ROLLBACK") + + except DatabaseToolError: + raise + except Exception as e: + # Attempt rollback on any error + try: + conn.execute_void("ROLLBACK") + except Exception: + pass + raise DatabaseToolError( + f"Query execution error: {str(e)}", + code="EXECUTION_ERROR" + ) + + +def execute_readonly_query( + sid: int, + did: int, + query: str, + max_rows: int = 1000 +) -> dict: + """ + Execute a read-only SQL query against a PostgreSQL database. + + This function: + 1. Opens a new connection with LLM-specific application_name + 2. Starts a READ ONLY transaction + 3. Executes the query + 4. Returns results (limited to max_rows) + 5. Rolls back and closes the connection + + Args: + sid: Server ID from the Object Explorer + did: Database ID (OID) from the Object Explorer + query: SQL query to execute (should be SELECT or read-only) + max_rows: Maximum number of rows to return (default 1000) + + Returns: + Dictionary containing: + - columns: List of column names + - rows: List of row data (as lists) + - row_count: Number of rows returned + - truncated: True if results were limited + + Raises: + DatabaseToolError: If the query fails or connection cannot be established + """ + # Generate unique connection ID for this LLM query + conn_id = f"llm_{secrets.choice(range(1, 9999999))}" + + manager = None + conn = None + + try: + # Get connection manager and connection object + manager, conn = _get_connection(sid, did, conn_id) + + # Connect with read-only settings + status, error = _connect_readonly(manager, conn, conn_id) + if not status: + raise DatabaseToolError( + f"Connection failed: {error}", + code="CONNECTION_ERROR" + ) + + # Add LIMIT if not already present and query looks like SELECT + query_upper = query.strip().upper() + if query_upper.startswith('SELECT') and 'LIMIT' not in query_upper: + query = f"({query}) AS llm_subquery LIMIT {max_rows + 1}" + query = f"SELECT * FROM {query}" + + # Execute the query + result = _execute_readonly_query(conn, query) + + # Check if we need to truncate + if len(result['rows']) > max_rows: + result['rows'] = result['rows'][:max_rows] + result['truncated'] = True + result['row_count'] = max_rows + else: + result['truncated'] = False + + return result + + finally: + # Always release the connection + if manager and conn_id: + try: + manager.release(conn_id=conn_id) + except Exception: + pass + + +def get_database_schema(sid: int, did: int) -> dict: + """ + Get the schema information for a database. + + Uses pgAdmin's SQL templates for version-aware schema listing. + + Args: + sid: Server ID + did: Database ID + + Returns: + Dictionary containing schema information organized by schema name + """ + conn_id = f"llm_{secrets.choice(range(1, 9999999))}" + manager = None + + try: + manager, conn = _get_connection(sid, did, conn_id) + status, error = _connect_readonly(manager, conn, conn_id) + if not status: + raise DatabaseToolError(f"Connection failed: {error}", + code="CONNECTION_ERROR") + + # Get server version for template selection + sversion = manager.sversion or 0 + + # Build template path with version - the versioned loader will + # find the appropriate directory (e.g., 15_plus, 14_plus, default) + schema_template_path = compile_template_path( + SCHEMAS_TEMPLATE_PATH, sversion + ) + + # Get list of schemas using the template + schema_sql = render_template( + "/".join([schema_template_path, 'sql', 'nodes.sql']), + show_sysobj=False, + scid=None, + schema_restrictions=None + ) + + # Execute in read-only mode + status, _ = conn.execute_void("BEGIN TRANSACTION READ ONLY") + if not status: + raise DatabaseToolError("Failed to start transaction", + code="TRANSACTION_ERROR") + + try: + status, schema_res = conn.execute_dict(schema_sql) + if not status: + raise DatabaseToolError(f"Schema query failed: {schema_res}", + code="QUERY_ERROR") + + schemas = {} + table_template_path = compile_template_path( + TABLES_TEMPLATE_PATH, sversion + ) + + for schema_row in schema_res.get('rows', []): + schema_name = schema_row['name'] + schema_oid = schema_row['oid'] + + # Get tables for this schema using the template + tables_sql = render_template( + "/".join([table_template_path, 'nodes.sql']), + scid=schema_oid, + tid=None, + schema_diff=False + ) + + status, tables_res = conn.execute_dict(tables_sql) + tables = [] + if status and tables_res: + for row in tables_res.get('rows', []): + tables.append({ + 'name': row.get('name'), + 'oid': row.get('oid'), + 'description': row.get('description') + }) + + # Get views for this schema (relkind v=view, m=materialized view) + views_sql = f""" + SELECT c.oid, c.relname AS name, + pg_catalog.obj_description(c.oid, 'pg_class') AS description + FROM pg_catalog.pg_class c + WHERE c.relkind IN ('v', 'm') + AND c.relnamespace = {schema_oid}::oid + ORDER BY c.relname + """ + status, views_res = conn.execute_dict(views_sql) + views = [] + if status and views_res: + for row in views_res.get('rows', []): + views.append({ + 'name': row.get('name'), + 'oid': row.get('oid'), + 'description': row.get('description') + }) + + schemas[schema_name] = { + 'oid': schema_oid, + 'tables': tables, + 'views': views, + 'description': schema_row.get('description') + } + + return {'schemas': schemas} + + finally: + conn.execute_void("ROLLBACK") + + finally: + if manager and conn_id: + try: + manager.release(conn_id=conn_id) + except Exception: + pass + + +def get_table_columns( + sid: int, + did: int, + schema_name: str, + table_name: str +) -> dict: + """ + Get column information for a specific table. + + Uses pgAdmin's SQL templates for version-aware column listing. + + Args: + sid: Server ID + did: Database ID + schema_name: Schema name + table_name: Table name + + Returns: + Dictionary containing column information + """ + conn_id = f"llm_{secrets.choice(range(1, 9999999))}" + manager = None + + try: + manager, conn = _get_connection(sid, did, conn_id) + status, error = _connect_readonly(manager, conn, conn_id) + if not status: + raise DatabaseToolError(f"Connection failed: {error}", + code="CONNECTION_ERROR") + + sversion = manager.sversion or 0 + driver = get_driver(config.PG_DEFAULT_DRIVER) + + # Use qtLiteral for safe SQL escaping + schema_lit = driver.qtLiteral(schema_name, conn) + table_lit = driver.qtLiteral(table_name, conn) + + # Get table OID first + oid_sql = f""" + SELECT c.oid + FROM pg_catalog.pg_class c + JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace + WHERE c.relname = {table_lit} + AND n.nspname = {schema_lit} + """ + + status, _ = conn.execute_void("BEGIN TRANSACTION READ ONLY") + if not status: + raise DatabaseToolError("Failed to start transaction", + code="TRANSACTION_ERROR") + + try: + status, oid_res = conn.execute_dict(oid_sql) + if not status or not oid_res.get('rows'): + raise DatabaseToolError( + f"Table {schema_name}.{table_name} not found", + code="NOT_FOUND" + ) + + table_oid = oid_res['rows'][0]['oid'] + + # Use the columns template + col_template_path = compile_template_path( + COLUMNS_TEMPLATE_PATH, sversion + ) + columns_sql = render_template( + "/".join([col_template_path, 'nodes.sql']), + tid=table_oid, + clid=None, + show_sys_objects=False, + has_oids=False, + conn=conn + ) + + status, cols_res = conn.execute_dict(columns_sql) + if not status: + raise DatabaseToolError(f"Column query failed: {cols_res}", + code="QUERY_ERROR") + + columns = [] + for row in cols_res.get('rows', []): + columns.append({ + 'name': row.get('name'), + 'data_type': row.get('displaytypname') or row.get('datatype'), + 'not_null': row.get('not_null', False), + 'has_default': row.get('has_default_val', False), + 'description': row.get('description') + }) + + return { + 'schema': schema_name, + 'table': table_name, + 'oid': table_oid, + 'columns': columns + } + + finally: + conn.execute_void("ROLLBACK") + + finally: + if manager and conn_id: + try: + manager.release(conn_id=conn_id) + except Exception: + pass + + +def get_table_info( + sid: int, + did: int, + schema_name: str, + table_name: str +) -> dict: + """ + Get detailed information about a table including columns, + constraints, and indexes. + + Uses pgAdmin's SQL templates for version-aware queries. + + Args: + sid: Server ID + did: Database ID + schema_name: Schema name + table_name: Table name + + Returns: + Dictionary containing comprehensive table information + """ + conn_id = f"llm_{secrets.choice(range(1, 9999999))}" + manager = None + + try: + manager, conn = _get_connection(sid, did, conn_id) + status, error = _connect_readonly(manager, conn, conn_id) + if not status: + raise DatabaseToolError(f"Connection failed: {error}", + code="CONNECTION_ERROR") + + sversion = manager.sversion or 0 + driver = get_driver(config.PG_DEFAULT_DRIVER) + + # Use qtLiteral for safe SQL escaping + schema_lit = driver.qtLiteral(schema_name, conn) + table_lit = driver.qtLiteral(table_name, conn) + + # Get table OID first + oid_sql = f""" + SELECT c.oid, n.oid as schema_oid + FROM pg_catalog.pg_class c + JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace + WHERE c.relname = {table_lit} + AND n.nspname = {schema_lit} + """ + + status, _ = conn.execute_void("BEGIN TRANSACTION READ ONLY") + if not status: + raise DatabaseToolError("Failed to start transaction", + code="TRANSACTION_ERROR") + + try: + status, oid_res = conn.execute_dict(oid_sql) + if not status or not oid_res.get('rows'): + raise DatabaseToolError( + f"Table {schema_name}.{table_name} not found", + code="NOT_FOUND" + ) + + table_oid = oid_res['rows'][0]['oid'] + + # Get columns using template + col_template_path = compile_template_path( + COLUMNS_TEMPLATE_PATH, sversion + ) + columns_sql = render_template( + "/".join([col_template_path, 'nodes.sql']), + tid=table_oid, + clid=None, + show_sys_objects=False, + has_oids=False, + conn=conn + ) + + status, cols_res = conn.execute_dict(columns_sql) + columns = [] + if status and cols_res: + for row in cols_res.get('rows', []): + columns.append({ + 'name': row.get('name'), + 'data_type': row.get('displaytypname') or row.get('datatype'), + 'not_null': row.get('not_null', False), + 'has_default': row.get('has_default_val', False), + 'description': row.get('description') + }) + + # Get constraints (using table OID for safety) + constraints_sql = f""" + SELECT + con.conname AS name, + CASE con.contype + WHEN 'p' THEN 'PRIMARY KEY' + WHEN 'u' THEN 'UNIQUE' + WHEN 'f' THEN 'FOREIGN KEY' + WHEN 'c' THEN 'CHECK' + WHEN 'x' THEN 'EXCLUSION' + END AS type, + pg_catalog.pg_get_constraintdef(con.oid, true) AS definition + FROM pg_catalog.pg_constraint con + WHERE con.conrelid = {table_oid}::oid + ORDER BY con.contype, con.conname + """ + + status, cons_res = conn.execute_dict(constraints_sql) + constraints = [] + if status and cons_res: + for row in cons_res.get('rows', []): + constraints.append({ + 'name': row.get('name'), + 'type': row.get('type'), + 'definition': row.get('definition') + }) + + # Get indexes using template + idx_template_path = compile_template_path( + INDEXES_TEMPLATE_PATH, sversion + ) + indexes_sql = render_template( + "/".join([idx_template_path, 'nodes.sql']), + tid=table_oid, + idx=None + ) + + status, idx_res = conn.execute_dict(indexes_sql) + indexes = [] + if status and idx_res: + for row in idx_res.get('rows', []): + indexes.append({ + 'name': row.get('name'), + 'oid': row.get('oid') + }) + + return { + 'schema': schema_name, + 'table': table_name, + 'oid': table_oid, + 'columns': columns, + 'constraints': constraints, + 'indexes': indexes + } + + finally: + conn.execute_void("ROLLBACK") + + finally: + if manager and conn_id: + try: + manager.release(conn_id=conn_id) + except Exception: + pass + + +def execute_tool( + tool_name: str, + arguments: dict, + sid: int, + did: int +) -> dict: + """ + Execute a database tool by name. + + This is the dispatcher function that maps tool calls from the LLM + to the actual function implementations. + + Args: + tool_name: Name of the tool to execute + arguments: Tool arguments from the LLM + sid: Server ID + did: Database ID + + Returns: + Dictionary containing the tool result + + Raises: + DatabaseToolError: If the tool execution fails + ValueError: If the tool name is not recognized + """ + if tool_name == "execute_sql_query": + query = arguments.get("query") + if not query: + raise DatabaseToolError( + "Missing required argument: query", + code="INVALID_ARGUMENTS" + ) + return execute_readonly_query(sid, did, query) + + elif tool_name == "get_database_schema": + return get_database_schema(sid, did) + + elif tool_name == "get_table_columns": + schema_name = arguments.get("schema_name") + table_name = arguments.get("table_name") + if not schema_name or not table_name: + raise DatabaseToolError( + "Missing required arguments: schema_name and table_name", + code="INVALID_ARGUMENTS" + ) + return get_table_columns(sid, did, schema_name, table_name) + + elif tool_name == "get_table_info": + schema_name = arguments.get("schema_name") + table_name = arguments.get("table_name") + if not schema_name or not table_name: + raise DatabaseToolError( + "Missing required arguments: schema_name and table_name", + code="INVALID_ARGUMENTS" + ) + return get_table_info(sid, did, schema_name, table_name) + + else: + raise ValueError(f"Unknown tool: {tool_name}") + + +# Tool definitions for LLM use +DATABASE_TOOLS = [ + Tool( + name="execute_sql_query", + description=( + "Execute a read-only SQL query against the PostgreSQL database. " + "The query runs in a READ ONLY transaction so no data can be " + "modified. Use this to retrieve data, check table contents, " + "or run analytical queries. Results are limited to 1000 rows." + ), + parameters={ + "type": "object", + "properties": { + "query": { + "type": "string", + "description": ( + "The SQL query to execute. Should be a SELECT query " + "or other read-only statement. DML statements will fail." + ) + } + }, + "required": ["query"] + } + ), + Tool( + name="get_database_schema", + description=( + "Get a list of all schemas, tables, and views in the database. " + "Use this to understand the database structure before writing queries." + ), + parameters={ + "type": "object", + "properties": {}, + "required": [] + } + ), + Tool( + name="get_table_columns", + description=( + "Get detailed column information for a specific table, including " + "data types, nullability, defaults, and primary key status." + ), + parameters={ + "type": "object", + "properties": { + "schema_name": { + "type": "string", + "description": "The schema name (e.g., 'public')" + }, + "table_name": { + "type": "string", + "description": "The table name" + } + }, + "required": ["schema_name", "table_name"] + } + ), + Tool( + name="get_table_info", + description=( + "Get comprehensive information about a table including columns, " + "constraints (primary keys, foreign keys, check constraints), " + "and indexes." + ), + parameters={ + "type": "object", + "properties": { + "schema_name": { + "type": "string", + "description": "The schema name (e.g., 'public')" + }, + "table_name": { + "type": "string", + "description": "The table name" + } + }, + "required": ["schema_name", "table_name"] + } + ) +] diff --git a/web/regression/javascript/llm/AIReport.spec.js b/web/regression/javascript/llm/AIReport.spec.js new file mode 100644 index 00000000000..c85c5c735de --- /dev/null +++ b/web/regression/javascript/llm/AIReport.spec.js @@ -0,0 +1,297 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + +import { render, screen, waitFor, fireEvent } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { withTheme } from '../fake_theme'; +import AIReport from '../../../pgadmin/llm/static/js/AIReport.jsx'; + +describe('AIReport Component', () => { + let ThemedAIReport; + + beforeAll(() => { + ThemedAIReport = withTheme(AIReport); + + // Mock window.getComputedStyle for dark mode detection + window.getComputedStyle = jest.fn().mockReturnValue({ + color: 'rgb(212, 212, 212)', + backgroundColor: 'rgb(30, 30, 30)' + }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should render without crashing', () => { + const { container } = render( + + ); + + expect(container).toBeInTheDocument(); + }); + + it('should show regenerate and download buttons', () => { + render( + + ); + + expect(screen.getByText('Regenerate')).toBeInTheDocument(); + expect(screen.getByText('Download')).toBeInTheDocument(); + }); + + it('should disable download button when no report exists', () => { + render( + + ); + + const downloadButton = screen.getByText('Download').closest('button'); + expect(downloadButton).toBeDisabled(); + }); + + it('should detect dark mode from body styles', async () => { + render( + + ); + + // Wait for dark mode detection to run + await waitFor(() => { + // The component should apply light colors in dark mode + // This would be verified by checking computed styles + }, { timeout: 1500 }); + }); + + it('should handle light mode correctly', async () => { + // Mock light mode + window.getComputedStyle = jest.fn().mockReturnValue({ + color: 'rgb(0, 0, 0)', + backgroundColor: 'rgb(255, 255, 255)' + }); + + render( + + ); + + await waitFor(() => { + // Component should apply dark colors in light mode + }, { timeout: 1500 }); + }); + + it('should handle report generation error gracefully', async () => { + // Mock fetch to return error + global.fetch = jest.fn().mockRejectedValue(new Error('API Error')); + + render( + + ); + + const regenerateButton = screen.getByText('Regenerate'); + fireEvent.click(regenerateButton); + + await waitFor(() => { + // Should show error message + // expect(screen.getByText(/error/i)).toBeInTheDocument(); + }); + }); + + it('should display progress during report generation', async () => { + // Mock SSE EventSource + const mockEventSource = { + addEventListener: jest.fn(), + close: jest.fn(), + onerror: null + }; + + global.EventSource = jest.fn(() => mockEventSource); + + render( + + ); + + const regenerateButton = screen.getByText('Regenerate'); + fireEvent.click(regenerateButton); + + // Simulate SSE progress event + const onMessage = mockEventSource.addEventListener.mock.calls.find( + call => call[0] === 'message' + )?.[1]; + + if (onMessage) { + onMessage({ + data: JSON.stringify({ + type: 'progress', + stage: 'analyzing', + message: 'Analyzing database structure...', + completed: 1, + total: 5 + }) + }); + } + + await waitFor(() => { + // Progress should be visible + // expect(screen.getByText(/analyzing/i)).toBeInTheDocument(); + }); + }); + + it('should support all report categories', () => { + const categories = ['security', 'performance', 'design']; + + categories.forEach(category => { + const { unmount } = render( + + ); + + expect(screen.getByText('Regenerate')).toBeInTheDocument(); + unmount(); + }); + }); + + it('should support all report types', () => { + const types = [ + { type: 'server', props: { sid: 1, serverName: 'Test' } }, + { type: 'database', props: { sid: 1, did: 5, serverName: 'Test', databaseName: 'TestDB' } }, + { type: 'schema', props: { sid: 1, did: 5, scid: 10, serverName: 'Test', databaseName: 'TestDB', schemaName: 'public' } } + ]; + + types.forEach(({ type, props }) => { + const { unmount } = render( + + ); + + expect(screen.getByText('Regenerate')).toBeInTheDocument(); + unmount(); + }); + }); + + it('should render markdown content correctly', () => { + render( + + ); + + // Would need to simulate report completion and verify markdown rendering + }); + + it('should handle download functionality', () => { + // Mock URL.createObjectURL + global.URL.createObjectURL = jest.fn(() => 'blob:mock-url'); + global.URL.revokeObjectURL = jest.fn(); + + // Mock document.createElement for download link + const mockLink = { + click: jest.fn(), + setAttribute: jest.fn() + }; + const createElementSpy = jest.spyOn(document, 'createElement').mockReturnValue(mockLink); + const appendChildSpy = jest.spyOn(document.body, 'appendChild').mockImplementation(() => {}); + const removeChildSpy = jest.spyOn(document.body, 'removeChild').mockImplementation(() => {}); + + // Test would simulate having a report and clicking download + + // Restore document mocks + createElementSpy.mockRestore(); + appendChildSpy.mockRestore(); + removeChildSpy.mockRestore(); + }); + + it('should close EventSource on component unmount', () => { + const mockEventSource = { + addEventListener: jest.fn(), + close: jest.fn(), + onerror: null + }; + + global.EventSource = jest.fn(() => mockEventSource); + + const { unmount } = render( + + ); + + unmount(); + + // EventSource should be closed on unmount + // Would verify mockEventSource.close was called + }); + + it('should update text colors when theme changes', async () => { + render( + + ); + + // Change theme + window.getComputedStyle = jest.fn().mockReturnValue({ + color: 'rgb(255, 255, 255)', + backgroundColor: 'rgb(0, 0, 0)' + }); + + // Wait for theme detection interval + await waitFor(() => { + // Colors should update + }, { timeout: 1500 }); + }); +}); diff --git a/web/webpack.config.js b/web/webpack.config.js index 9a6cf7142ea..6b4207eb1d2 100644 --- a/web/webpack.config.js +++ b/web/webpack.config.js @@ -259,6 +259,7 @@ module.exports = [{ 'pure|pgadmin.tools.psql', 'pure|pgadmin.tools.sqleditor', 'pure|pgadmin.misc.cloud', + 'pure|pgadmin.browser.ai_tools', ], }, }, diff --git a/web/webpack.shim.js b/web/webpack.shim.js index f2ec92c9260..16b7bbf55a7 100644 --- a/web/webpack.shim.js +++ b/web/webpack.shim.js @@ -156,6 +156,7 @@ let webpackShimConfig = { 'pgadmin.tools.sqleditor': path.join(__dirname, './pgadmin/tools/sqleditor/static/js/'), 'pgadmin.tools.user_management': path.join(__dirname, './pgadmin/tools/user_management/static/js/'), 'pgadmin.user_management.current_user': '/user_management/current_user', + 'pgadmin.browser.ai_tools': path.join(__dirname, './pgadmin/llm/static/js/ai_tools'), }, externals: [ 'pgadmin.user_management.current_user', From 38675451a764bf162a4e4d0eca5736ed0d788cf7 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Wed, 17 Dec 2025 16:33:32 +0000 Subject: [PATCH 03/17] Add a Natural Language AI assistant to the Query Tool. --- docs/en_US/images/query_ai_assistant.png | Bin 0 -> 135193 bytes docs/en_US/query_tool.rst | 48 +- web/pgadmin/llm/chat.py | 184 ++++ web/pgadmin/llm/prompts/__init__.py | 14 + web/pgadmin/llm/prompts/nlq.py | 35 + web/pgadmin/tools/sqleditor/__init__.py | 211 +++++ .../js/components/QueryToolComponent.jsx | 2 + .../js/components/QueryToolConstants.js | 3 + .../js/components/sections/NLQChatPanel.jsx | 787 ++++++++++++++++++ .../static/js/components/sections/Query.jsx | 7 + .../tools/sqleditor/tests/test_nlq_chat.py | 166 ++++ .../javascript/sqleditor/NLQChatPanel.spec.js | 181 ++++ 12 files changed, 1636 insertions(+), 2 deletions(-) create mode 100644 docs/en_US/images/query_ai_assistant.png create mode 100644 web/pgadmin/llm/chat.py create mode 100644 web/pgadmin/llm/prompts/__init__.py create mode 100644 web/pgadmin/llm/prompts/nlq.py create mode 100644 web/pgadmin/tools/sqleditor/static/js/components/sections/NLQChatPanel.jsx create mode 100644 web/pgadmin/tools/sqleditor/tests/test_nlq_chat.py create mode 100644 web/regression/javascript/sqleditor/NLQChatPanel.spec.js diff --git a/docs/en_US/images/query_ai_assistant.png b/docs/en_US/images/query_ai_assistant.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd09b5bcbd7cf43e68571c6124c9cf22d842aa5 GIT binary patch literal 135193 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ðn3D7eM5?mI%j6_F+|{z)T-;qwO_*3{61?jwn=b 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

@a~ zhHeBwx*Mbfq+@8Lk&u!S6r^JqnxT>I?iP^lq5ctm$p8HMPXD1x;2hn-2C6OWx)wSI%Mq7Yacs>)Dimo@s#o4CLYH5jvQ!s`Om-*{;u_2 zzVh$r7cFKW7;km=_{Cqv6(yf=|8Hn0Cu$>|AfA)^_htrw?&pbds;~b|Dfxg00XX1C zG(Lg_3?qe-_lL(iwBLCF1g68^v%cQL&QI@Q=i>GRgTIaJucP#U4t-Y6_o;BUMxI*O z--8YE1(F5H`Y)yt-_Lz{xfkjGT8L4?53{A+np+;+D4!4d)cj4(&sQELQmXP#q7C75 z^ZSdPwqET1ySOS&)Z80h=9q&H3`fr@F6j5v{1Ds%`>9ItMaH>|v{DULE6&{jlJk4)~nJUH@~GXG2fXB%gd{)cj%JesH@hwDBq7c<}}gq#(oyT?^u67 z-Zz+^sFWt}q;7dk{Y{_GTzz%=O30i?UH$T!u>NGUUBSyufLP(;Q}0qxabTm+?3LoT zT&@t4U$ORb(Gs(|%cAfL%e6_bksOf;Wz#CsV^#c<{(18Gm@cjnqm(xMh+-Mdj7O!04RGuCAukfk#`>wmZv=!@5$9{e8$1CBBa(SXs>f z#rB`$Kh!v8hqzjvkAyDPMa49AQhi*8>bHfQ&i}l^eX0E6k#OZ6R^vSMwiYVpt1vx! zybs+SsJraeNeP~Lhi<3K=ZvrKoxIbeRnKg!o_3^@fpdGXlezc1ci#=Fn5>u4)qA6; z)Shu<+t!OM(|Cvkqg=lZ4EuHz-(mn$=uaGnCYwwHFy^4Cnk1+;L zL8jO(zZSddl{9uXrK3`okS~XaHD)O4yB03SuB3EL+Y*zUk~h6hbBy`AQ{y_uI>A3E zipD0Z9OhdaPp3b01%ay1jvD7vdryxF_v-B%D!ew2Y36=A#$Pw)9yEkLy0d$~b?JB_ zFxjE;1LMSCE{alkp;2fJ(4>bw^!Dr%0d2;c@`-=hn(ipJbG&1rE zY@vX=d;-75qdJSYI;nqaZxBG(8f~Xr7p18`({(S(&p?V#tCQD$s<{z)=(d*xIiiS{ zLN&QbM7rY!oFlG>eU3->&0AN{qQ1Il{$4G`*K;PHY_K+!p=x*89h=xYh1WcNnnY+( zwjUWI-{WN=y;vE-neOh{ z)>q(mNv^wEo`hU_1&?L3QR&q4ChcyCz$>U~q@m}n7>hNAU2jfYjBxAUG_?6rujaG7 zmC@Dqx-`gWQ8-hSRgSPw(&IPf91~Enw2qmz?Gc69fTE$R&{toaM zhU~ z-JVw{JI@-#|4z@2(fZD*tU{T>N%Z6+fOQKI4ZDBEL7PKk5M(;ytd!k zOP|l4EwzciMYpF)yU3`S{IMrS)Yq5HYp5cI91u36kXdk@`yf@_U)NjPwRqjv6i1M9 zsePenv@hUnSiQ`wpj-E&{syksW>@D4Jzvw!?22C=Bovu5*I^vJO^^g_!=S&s(IF@C5EuyFjkTUxf*_`jU?3DVrS~{rHiZ|doUVdH| zRoNnceBfGbRHm+A0_0e!;bLg;gUxJBk;4G`AWFqgfe)B}Dt-$a)I`6V@-cP0rcS$X z(q07bGwoNV;HSaphGtyn*Qs=4j9?u)y`Frf$p_)xe66@}`1R)2dBajpW#WwlDb2R0 z%dXX>-S(R)8zOeH?1r2Yhw1@?vav-pMW~L?h0mPXd7A^&vjyD+l#O15z6<|MnjiH^ zn5GqpaK<~ZmUs|k2uC!$`sluZbp2C8Q5O+Cx1a<^D(X*pEp3BsDVBFIW_51eZpG{? z$FH=T1ZzHn^^mS>WQJYXKP6bsclOwXU75U^5SWLl^~#DMY5lsx1YxDvs(?}!nW+iN zAS$ugVdq1s%JaSR$Je15the^TDq>1x+a zIPdE44u&LliqI4`b6szQyV(?Gf~=mV66|QL&dmj-iZv5uu&kXg*-d-|*Z@bTbq0;W zy9bc~*y3Vq=%PD=C6{ykH(1jG)hMI_)+T6Ak^kAX`#)u9X80b4NvicWs=n+gbqVxl zb>Ds{5&uFBhE*csOX@Z)%H?b^Ov^h|-g*iD0PG_HyKU%-@>b{a0U5&h{ z{@^Bb8SQm3uH0bpFn&K`-?J&}pdoJxTJ$H=Yj*T@yJfa`_05zsk=q|){2Klc-~H0Y zi+wTQ4&?A86t zmO;~=0Oa%S-sWZD)!RFa)Yz5Jlc9Aix91fI?+Jh1x>Lo<2Q4aWZuOk*$X)hp*5uu? z+i?3O$4L({yw=Rk5|K`9%b}iTr3{hLUH%I;1PWs6rg;8%l5*$xxZ@Kd_|1g^3(+-N zQXvk373)M(qTupOsM7Ho>HcY0Z}i96+1#rI(vUvr*hZ@5+(ppjGukG>ftf)V7qWgf z!<`8&{l>fkGS>QPy-wz)DzI9A7W+$v*M4CU4PNqt9CbgVt%-J zzP0y*vqc`@FSSbUJlh*-jkwzMHZ!wnNx}x7ILv+tTndT0ZbQS5xExi#V&B@uGy=s# zDC5gx4WPy?(EQ#^*S1wWe-xH2D%SZTfB+q<@X4RUm~@sTFa#qYErJAO@y%E|W_8Qn zSclvnQ&%S^Nena!m@9rmn7tM;>uR{=klU0v;;*jSt&> zCS31&FhkwQy4cd6!aa!1As~Yq%1UkfC=8o3U!(A3e=oyxC&Ko|%4`PLikd*AD2`H> zPbV22-Bl;RYa)oIYqz|7#}Zw1I)KO}VV$86N=jAUxVRleGAu^AKy|9Rk&J960i%%# zfNw$A1ZcG0Ap3l46*NsnsuglAsj4&$Ue+HpP>RheZSiE=@hwZ2Cs7d(8|z;Ofm?*l z14^>L3=T=RogQ3`?n51lJ^FdF*xuI!lCI(0>}^V(byQ#-1}_d4-3HsSEZ*{TI@F41 zN%{OcWYj4F`}I1#x}LOuTkviIGP{B+0k|7l8Zq4=nYJVmoxNtjRsQy|x&OE=7nw_@ zF9iAs`YJ7U{^N|n9{p(Z1+r_{z?=s93f6hEYP~GA`pf0(4hsf3mOQp~M$Q}L7Q7~b7v?aED0FPy{8>5z&m z?dtk;ew}VA#O9AZL-_pfFI@{g?;YE3O!>{)*^ljDL0+K8vJ|tL1fuQwoG#CAUv4Vs zc$s{oDGsz{OgWlV3^i7Rm!a)aT+?fbN#qdlkHQs|lDYcP?5G;%V;Rn@$cftuVlSNS zFkY;^y8L_eRlP6geUbR(KY11vOUx`0k=95Q69u}u;()NN_#~Qj*H^0(U&V2F(6!2& zR)4xR#y-OX2@(`N%QVvE`e21gS-$EyO*~g~2Rm4~jSyz?2IqrF1BUy&jcscu9!$32 zytKD|ebJLC*w}>-h)A=y6$oxR`lHWsiClX!RQCvg$Ht1QMW{Z{N5Acq=;l3bdH*>zGJTj2EPVy!bb|fls0tD1qapf%#DuU6)xdxi3+uWo z@6BZo#w_8~Kywnsz$?QcnvOMFpcvX$MB#$#((z8E*)bf)s5>S|wbVS219(2<=-ZlpPNCeu&yY1NkA zJ;OH42opr3iD^7cnRPx^R}!5VbqEtx38Cw+p$)R+B#GFNsvfZOQCW<>p2ud7p7B5} z-SYQ)L`Mc!Z%wlO=2&63g|L{4w|gEGldT&>xXRSO2!A}d1Mo_>XdnxJ^0Pbwvq!1= z&bo*ke5rBaeU6+i`F(-dZ>V|eUrfnQ8{ZH&h(?_`Mq%pAq%12_N?W*1yE8iM2i1KX zSxBpsaMPN!F?$L6);CCE!?shU=YIP;eezs~!iw~Jxw5G`_;LFEp281ghAB%#A0dwM z-^4;CTA88afSq#f=o!s#wn}#9F>c%l{64D<4>zGSe&Z=+(cYC-dbo2;+M&$Ybm%nJ z<%`Kd{uTHA2pSJBGP3OU{rN%Y5>w+;qEQva)l*w;kJTSU^FM!-`w0i+9vp#ln<;ED z0Z0oS{}Sub4B6UM1R;X$35pJ})%Q8qP7&XVXgYatXs&RQ;O%zk^;s~#gUGP65%2Zh zX84u7V#$X#-myEv1lo5$E$=v7$!`+u4w5v$Eru8U>gZ%l!hPTY%PCTuCLTT-?@P55 zZ{;#}TNppx&}{WrTf@BkeFMHUVs@VkB~V4*KJPi={Zm}r#um*HKG&5e{1<1IJyxzk z7*pU@QcYm<#DC{?cqhEiOG4nOf_Pp^_v6s9j=ZODJ)@edH5xSQN6?;qdQf`Tv=mH# zF_<`M$_8!LH##M48G1K6a+u)bv$4^&&_~>W&`_l6AqJi9hI<*h=B4@1LQ@~uA^Wr~ zexK=MsLfS%?tGPiyWUZF$EKNzCp+}TvbnHiQdnkU`u_eVq0~Gv*W}7Inr@*Z-NFcT z9C7PV>A#ty{SN`zGFgOw`QKv>*+bjsKpA?MQl`j!vD=9YF%}MMur;@Z=PYV4dV2w< zwJ4Ryo=VtVug27{*01$X`1KT1UqNgy8kX{&A*`TAp|pmn;#0Qz&C${&-j5)|hDYIi zV&+c;*0{^P4NiV3>>tn2+78Rk;z^{28Jc^3k}J^44V)15mSd%DL(oi193f+Z zu#h2!?#;dWB_o6nCY`L;EV7*>PL`-geuPV5liw>aBc010v5aGb%#Nk zR|Havc)IxL06eaS z1VX&WY@mKH4mAx0L@ zB=CKgy3ZsX-G7C**+>2R55S)uxvVBTpWhQd6VrIO5Klc{1x}dqN-jZ^5tlYIo3Iu-w<(s^O360vJ46nDS3L|s7qmWN4k^oF zn+~%=*Y(ik6Yo=dI!^M{{|V9z%|U*N{kWRj`YfY)l7F*{w4x9xC?lZ3{ml?acdF9f zuZjtABmck-6)v=793HEo=F^?&@#2|0weDP9OrSrsV4xu&KRIkD_o>_}vC)YI<@+08 z3!};|_WkejAel8mVDyY2hz#&#boO$nGbxr!d;IJ^@%R?yMEOKb>=T`sbV77AkVAaW zeV<=<-g<8LFLD8u>!-F&rcEYy2KMJJo{47E2|!B8zfQr=H|#ddS3X2|$Nm+IL;@SP!@fUcAq(?F$nXHZ5w|)Zz zmaHfDY#OZZxjg?e{t1*1HTWrb->q5shJTM;h|WI~g-Ajr5t4Td ztdVu4L5=H0PJpTAn9I&Y|8D*1Ov&JiVJ&IM?Ml0$v9UkkY*Kpf4 zPgmQGFFOkZtcZ{JKrtr!B8D-B1WM!xv+{Qh;N@Qe?cH-U^cOb(9_rmw;6^!skXDIA zC|(I5W^9mEj--Ls0LmscKygxS3b!RvfICI;dq=S!Flb4HQL+cK5!t2IlO^ekuSWnH zb1Ymaft1V~;LZuKhC=7)qQ<3_@JfLOGWZ>&7`-KLN z+fofn@%!}e^A{*5yw|+8Qyf>ML8N93Ckl*-FBpL*1#SjpH6_%={xe?+l0`qZ5(JTx zjYqsUkc=r5c!gyEybm7Hr!#)aP)G%3qh=`Ka~oh7xqJo2y-R~%qVT`TIwL`=NPCeu z^zAGmLiHJnON!`kw{0itM1J6Dr6Pc9BQ!i%s{f6@svtiwNmVXw0?vODnFRiE&r}e( zs)Yc3?(a1Ee}BHLKx397l3*?e4jyki|1%tSsN1z`KO z8UE6*AszT%7SLbFXPu6KSmy)fEr`XlRLFRT{NHnr(5t`*=t0jf)+;}7TMRg<<=vPs z)@1Hl45sXC45Vv%K1ne7?^E6nbR7l2iU(QpRzgI1?pKxVa38PT$P`qZhe4|~QdImO z3{;H?vz;CxW^4yNB^7h$G+uef?>u2USzzuwSuUYF2~g**NL&Kzl$2`!XED0Z?`ohp z+h#{{GGSXH?l@awUd>k7X-g*qv$%>R?AhPQ^ptK0&|_;2CKL1HblcP8cN}@b@4Lc7 zqz7}HPx`G#AEuf6uZ92pj6i=#(tQDt+r{B|tynI$Q)OVa?5n#%~Q z$7U~|o{H7}i)%op3c*1q{m$=j^Fq!ZX;`Tjvlrp9b^a|v`PF}5uYZ966F^0)&QPKj zeQ7o~rZhI9cV}f|-x58_7P#-7tW-?eG})W>_wW2TeOJuRCvk|3KE^-DN$r&%{!hij z-wu`p8IhXGje;y}d&r3GmO1RB+()zjg;A_P&4)jh#Xn&aIlw8-oF1jJcrv6vu(b_oXK}0t}{t zotFua|2r@rGv42a#Z;4IW$jCm+^5XJ3V5ezPs*NH6u`wRI*XcwxO71)>@ z+mepVME3(GHc7OAKq9lCr}qv2{WoL{5COVO(&>XaT+dOg(Z=vbK;tD>PwOX2j#S?N zy`Tb<0gIDaE$#;3p40)Zo3M&eL#O3=kInQwzf9JcFG!~uwlwMI_}dopg5QWwEW(s@3NliE| z`#0^IE;pD-P1-%^-T|xx!wNaitKI6IAOh3&PlWb>Bkr{K%{k)E1)z=hWiV0Yjyv=? zMXqEmA0uFt|3Td+47uB5DfRVqtWvJE5j<+Lk!JwgwdAR*7BepFzm8-JRRx z%)1&uit-&pa-91aAT#$7*lL!X!QOlo7`AIXo$#%g1|rS-7(@eMr-we!EWQ;nB(nNW zz&&dwX$1iB7H>Fw-c`4{6^rGaJjoWu??HmsytV=eY$=u;=-qANV_)+}kJ)!j+8P1T zig}=gS2X~NhY3yp7UG+W-P`TS2U>|P0+tVnJ<7Re-+g{N`RN>BCDstV5opl|>a6zw zjlBHNJkS4j_x;@VzeIcb)w{8h^_z5&Q5W0AA66Flkn1vlKNml1l@oO> z8CC`mI#;Qo*N)XEBMO#G4*(g3O3hI{*J*Pf$|9%AXV-wCZOu=$JRmdexgM3qihJP$ zly2(PyY61oWMBsRqfcf4R=fNF!(g(}%Z&za_SMu3m(!YTW(Ei0GB|$JGSg=wboz%9 z#blF@*B#FLGl1h#F!^oiDQYUP@%kRZZ`_JTGYKeIEoIUz0CQ@TwR+C!cKQNJ1HCRc z95&~52RN7?qMokbG2?iMHzt;m0@S6VSWpyUD`q4xYt+sGmW+Ug293uWA;0&M&I~ZRjHI}5#pQU z@%O~SRNxmebwDZq_+-ny+$Of?x7I3e#hk&MC<%k*iE>k!NnnYyr7U_7_hv+@0r2uZ zkBNg**w?h|R`jy@GU7Mg>qv-%GJ!kN?BFT70Pm+_@W}|Cm2v{=dT>rdXC!$%Zd$Qk zF0rvf0;!AtP6Ct5!`<|Iice-~!%GdRUsD z!&c_=$e*bpAG>9J2SfbTXohus0{3YYQo$<_V{%EsUD0>T^a9&9jNVYUR~;ddYIL;} zh>zqG_Xf-*PIr-jqwYB(8+TnnaJei!=ymmBC&iVKaeEb@bUB@bYAz|f2n4ap^JC7n zS3QluK5)U|1YxD^EXropqy`W6=beRmCO1PaedUp z*0H1We22a1qV;^(ih3woBJ=SI4&u;vw}aI1O*p`)DQu1D2lhSxrTNp;g8w()3} zW4cof;J@sBCpW#$QmwN2Ti5DpOptQ(1f#)p=sNq2>VAL%cIh*hn%HXuP^g@Nd&9cV zvJhVzWM}Q;%Vq#50QSIt9v#UQD6hpdrNcYC0tKv~4U++0t5N)vGjz+?;Za~HGO_koNAE4d!k`u4<84!%Jbpg-T%9}#`mtD}@l-K=N5lwuWhN%hAZSv@k zBLm&2t4zLaf+0u=nkRZqNRmBvX2fczvMZ}D&*3T)l6=9ziJ1Pu=usakGf82_eSr{A z0(Woqe10BDSDh(e-(z-~pA&tA`V-I#9OJwI?UmH;9ibWxcwo}p(`SI`_))QmEGX+H zwwJDX3TV>#`zp%u17JkBmF|TZqC+gdI)<#yNZ<=6sHa$FzGNQ3VJmxE28a-PA%xl( zEDMX_NAb*PltL6|;}!grRbF6}dynMIkH?Ct?l|v((C_62gl@ri+4z8wGUUN>tsWj! zhT0?7RP|EPN67j_n7W?O%f8*p#hVz@oWO7);-6#2DtYcij>a z#x=;@-0@i>xgxw@GPC;>-~z4owt0QJ=`wqC>e=(zpF&YW$Hc(rRp!SLxh6JRZ)3lt zv+Jdn!1)EQ{aq$(TdHaM`rT{ipeT;umKSUZmq1HwGnM096Ffbjm;-|PD&PD^wXP*< zSH&kkv1=H9EMG3gbn{1B%0ck_M*tV-rQSgQ^LxT4#?tLZz}*|5gc*`;*(yIHK9l1s z!1jYG76LYD$v*N1N>fAC+yLQMoZMPwe}=)A*Y?oaOk%Fo9r%ZplfmJ{-@ z0LJu(Ka6>-YMI}3p(QmdSc?yU(Fz(jtP38U=CEti}$nfTRLUYjot z7>XYpL6%ngEySY}t=!im@C(y8Wub$%mb7jGwimk#5`Q4bM=&rb22(Ye7Q^9^?C~IA zPrb9_bU<+v^@VqGbR|qgLC~Ti=)tp^+*?8jU=CiKBZ4L~n?(bNciL#`yClv!c2Nn} z-z$?=%OLah*cM9Zo(OFun+kDnZv!mNoqV;Hw`VXHnAvX|zA2+XTSGr6y!(JnG)wjs zIFVvq$>2Hmb-eP-qf_z{Th^SHR--M9!J6bQ0<3qo`V7!q;^kL2D^jHTPvSH;_=^Vz zJ6L9Z^t3S*i+o0)+9@#GB_acdf({>?K9(``w?Mm*iCcYz#2TSMo4H(=wRWUM(*;VW zu_~hcRrUc<%)!~DAL}&zjL1H~wz%yaw}HPKvif+z@MOo<6x&Bd)kk3^$Ll}Kv`QQr zQ0i+L;fpOuL2G9FEVeu`ps#xIuAwXxrDV#F-84Qc*n6g#-IRUxkBjd3uc_S0%vnF~ z$_X7CbKBU>K|7B0EkJFi6Fpb^Zn+t}nu5ze$6<>49NG<*C)c$b01Vt|$aUWiPGLE1 z0A{$j3*7LYl{T)`u-m7D)3n0QK=J#Pvo7nvlo|6*CQr%%V;aeTrjGUZKR2+0K5E&J zh7{UXh-slQ`DpX6sUU6&X@RnbvYlWqa$RezBrd)OgH!O>KOQH|=mO+woBamQ6e&0^ zozrkG8)kcAAk|@?@gt7fQ#1k*gQrWj9Lbzwp^z%McR$?r7sx5hfD6eiYy(otSut*f zsGBg;x%g5*Vjj>0V>U}7oxvbaV!e@Lz6a;lRsIF%cuW+M7SCC}{?xNn{IwnWQ>__e=g3tlCg`+EPq(zfIlWRV%16s9Yl*GPy29L*BzXD zjqwGDH1*IgcS|_?OMKI2@rnsmO24@P5@9VOePUweR4|C#_iq30mR;iFt)}9%6yV`o z+eA&s6b+k}6fnKozwvl1AvC1C>DiI3GH03`yYkb7ht04&vBX&$}M`ycgidO~tWpAMTni@C-Ru z_#o#JE%NouzSVC@*i_u;uBlwE3L#AsOtTS2Px&5LGH5-+irM-docN=oIyz7J&Rrsh+c)C)bS)lTJDoC}vmch1|ed!Dekuz=G>@gXII}Co>Fc68_m_j;bw* zM^?$zxg;DvCd2kjfSECEJssnn{2G?zeagcG%{EW`hrFH1TKsmIDgqD~xg1y3aM!vK zjiL@6E-G7R5E|SL#Wfbwu?Q6*V@2RG?NruESopY@6lP}Xjc+TZ&0i(Gr)U0UC7XrYtO3#> zJWO&>k0Vyq5YcY2aNuGIl4IG(pA9K~!BSH5Z7>|uuR_~|1%DPAKrftMurkHg5)Otx z7O-KaV~0=mtMJI<>!|IM(Sir4|sI768ZfDCilXS5i{m~FABd4 z5vgN#LOFMh0PdO-uq}lzVg>VomgAJ8hjok-$sob6XAGayyc_%(3R8nqN>NS5xvN?P zwP8Ig426yVHgMXeWI2R!&QP;Nv@otiY{|9E6V(IUWVGJymi&pL#OQ!mQHn7b$jf_q z+fe$T={^q#hgj#(NUUNfb#iDL#<4hBAGT*^??=pfzJNm`L&+gBf&mSod@Zg7NG^@i zZpc0ei9sn%+~)ezN?^>t+3&R|RPL&C+H9Q4isiCp7dY_T`ZQySL|=#-{_;?*4c>Je zZt6grF_>j-pm@##Kh5G5B?kv<4!>6Pbi6zoJj2%tI%oFH(fuh9Qx6k?46xh^ZFU^I z$Q6;=Esqr;l65cUg4zFGbPo+~V$Pu69vGIP*{veqa+8HbJ9VEgYzU{4V7PqYz;cxH zv8KC>IU^n8*Sl_1fcYY}Ofbh=_wHW9D6eW!n@$$A?P(I{z_*bHC&x#=VkoukV) z>cvLg$l8dYfoIb8$vRsPs&yv39SasdAGW!Smg5&kLBmQQZH>8jz=M;((wcDbc5yR4 zZA|lz01vN3d1l0{Ycr$>Tb!>mCUxkdtUuOn5k=y2jOM)8jL2*bOfzcfpDLc9(aO=fhi zr(wq?BX4L3*{`fFtZ{OD&~Fosfrd2m7t!&(x$p|`C5i3)R7fY5DA*` z<;t5n>YkdZ>&+GNs63%lR%F9{di`%IBmp$`i2zl!C_LNIPa16ot))D*qc`=Y%o-12 zrC2sXOiqb1Cy7m)B~bhPZpQp<3f9i_4T>b9rlv$gX!_DC~et^qZW@C(}ED z_*cng-#(eDrn1{>Xr%O2l4dqedG~xF-oHR=jIF^wl&G;vY^O>kQJf%bpjCV^@m(0- z^o)f20Q==HLC28som_#RG$8EcJ|nVNf7TfW(9e~UZ;C%PtxSWEzl;Qn;(}{hAAE6M zk*JBad92WcZHEyQycAT|)=VZwaykdsydaj@QxB$(k`o#Rx3XckV&5izBK@W&X#!%xK;&X5q1fNj=hmJYJ7O^aXWj_2taSjfyL^QTTWZnEzj4yG%rxv5o7|bx|42lxowS*CW1pmwpL|o(s zEG1j1Srip;KQs=;l5hgOb6V%l2!d^Dr(2@5Fo`Y)e0O~prmf$*Da$`Yio++TDa#+I zcFXakOY#dcIIHFC@G2|ZIQ$FV?ALEwS+}tw+aUC}oWDr6-^j8AI)F`cqiQ5(07(U1 zMZqQV%HgFbl4n-pg<*2Ex<9Rm=6W{?zGZp7xdH~*p&5!4MKGp||G3XcFj9Eee-{Ow zDM-N|A5A;-g75AS7GG*LExAuRJMnFh#7R$ahSNe`*OY}^*O_439lABHUMBnkv4$WIDQPYZk^W? zZHS8b^ZNciDSQO z)3!5hwvaw|LOv2a(@kK|^OKXH6|+0F<=0gVwdKeabnDR~Xr{ezoi zD&K(hjqqI-mA`46qLyNo2erMoRB$nSjY)Ea4@T5O*z2L7me2U`aTS>%d1Egulz@EN z@UTadaug_dBBm+5#G`ob8LT=*LC1O@+WpHI$M!!6BNeEm2&C)6wYR{LJQ<24L-H*e z*rzDVguAIcZ%eFn%Wu#P6a@&~hro^<8;g)9moWk<&C(u0v%s2vpqGv4$fd&LFjAF% zl}$~jOTf`&|Qm@wM=Cb$TSV*ODaSi<*@>R9>i@(2|DfLsM$vx zhL+*cp`&D(=zAPzvS)-(RC_OP|0Prch~Ahq%IU>xxuk(zQhAC%H1uvom@kds^y!Y^ z;;&V4>cZbBhn1~lkv|xv+L{CQi#H#CT=T-S!vb^HYOHI?S@H@_3b)ehlchvp8OF7m zj`W$O%2}k+FBa{!Gd;M>pw~lJv2uL(MPdhKmsI0xvR_+u?7>g=vR-q)(pVS}>fOft zk8#`OSm4j6zO=QIMPF{C1>m)ctqbji8_QD`p-WdYl^1+{=i4zhX)+@wL=&7r8lT~9 z3_fJQ=jhgCw-QXSVblD4oi{!Y#O;z3Mtv6WuC;k=3|*=!C?3nj`cSe>EK8oo?~Cl% z_tO{{CNe^AtA`Zg;>Sm{tCr)av6g)MStR+ki9l1aR^7$j+C|`nFH&v6c-bfT!RIjV zlEK$W)q~36h#@cQ(-+iuA<2XmmFmxD_B(Hgoig?t)7kNO7dSrj-rijXJCwJkjN(ih;cuWQMTQ( z(iCqdTPBLZYk;A7(AUhrXvS;kdZd(kkO{W^MXagn?mZuf5U0F+llq{m&4@sA*k4bm z@3%)>o&6Y17Y@mh(z{h(=kz?`%m}ZN4>i(Sa<}n8Tpb*^orXDEvMdObZ5z&A+SCw} z=mE$1)>DpP zLcW}Zm#GE(kbHOiq8QpY4i>MuTv0ASU7kL=J^Hp{&uN6nx6$mTL)Yq#UjC$1Z<`<7=kKi+I#XI`yD&_s+6|p;`R658CY^hvl4+| zgEN!Q7{MEeAtM&mMXV@^+xtDqJ%sZEb8N~rE_I-0Wl;ISZjezLEuwVBEwqKgkP~EB z_tWRayKu>@k09FQ)+U_7ey8s;4=8BK`a1F%&wQssx=2FwN}eFS|EQM>SLWGCnNwJ+ z*W?OZQ1WEnMft*SzB&&a&bkylW5rVYdpF>Qv=D!t`g8_poXcOv**$JwMwLUR6tXR! zv_j~=&5-4)k`7}bNrK0}i!?0Bt4e1eCDsSP&HNWAkqY0#-m0At|1H`{09afc@>#J7 z?aWNT@2r0!{;$;8llw}}fVbT_|366aCsC#Q+FbA!i~avXUH`zlziIw}`+^1zW{>|% z68)e5&X+?O2j5$fNGokr%CD3}coaNVA;y8RIoee^0o_twr@2RanI%ZAxl8p*c-p+JSVzNpr3g`3NL%NO!zHz2om+Zf3eA z8F*R;xB3Da*_6v;L22BUZ-T!S+rn!fa|1SAciN45=gg}*E^BnT$D_&+7a&hr4JnSS zBWf+iMT~csR~%E=jV4mL>bN@~Zs1-g!!n}{#2*pgc5Aa_O)|duc)4^M>h9>;IZTdg zOP3d{C@%sA32uOD#d@9k`sBUq3Lst-%NzsHF}Lp}h_)_xb^sjg^IFx+{tfVW(P!6y zN6+`p{!K6P`u`!QD-q^9(RBg>v|EM~^}BH0s5Qr-EU~?!%7Fq{4dNDQ;|2gn7YA@4 z8G1ghX;_>in~oGm7x=9T^E4NFFV+k$;* zjjcJ zi06qFAl`&9D}@4(nSF}+7e~EPHq!msh%II2)XttgFF=%Pxif~waM-MNX0F8MTePJA zvvvT^aGrmW_w{k3o?X}ZA{242VOhZ1q({iPZQi@jU#ZYwvh-bV9|B!3RzoC!`E39f&qjQ?ZCp`|soHxzRfQk7r3Gx;4d(g3tF?X}O3ov9|JHxN0} zyQ{^!I>_w>{Z*^Qqa;#;dvNRQF?#EKz1z8%H;@ZADE3_Y^|?ejQ>4VW4YAJB7K-n7 zkE2QKdi_-hJ=>d~#byGuGhc;YtbrLI-Q_nH?{^Z`iOl%X%bEXM%F z!0zKL0|E`eDzKt@%PqeP01zq>AsV1v)1TkJFppwb(3GLhFxh=hR6`Q*aQvbjz zWNqH*1*pu@oVf5cNVr$4Ks?Tq@?yk@0xQhx(e`Dx88%^IOX0>;WTBRq{gV?v=|AL_ zaPHAk&)AJU0$ckW0f6at+vWA~pbt%tJ9zu3F>rK&?t}@5L@|OZpXe+0cfEx^#klPU zlN$VT$je2(02%1E}~Fsi#WlEl@kKTaC-{+dQ_-j~XEWM!(mk0xA!h zEp@SsIUcm=1K^ym$(r&XNb8dChlT`lv{jWna~l-hC&>hFk~v!Nf8f3TP3yLiVp#_O z%)`p5_pv9WYreR8VfzLF+{Rbj6=*lJ{oufU{>3?E+BT1oeZcu)V_c5#7smq->e+$f zW9+jL`-*O`fr`Hh25xY3?B@L$>TJQw0dio8-S0YUx5-2}SHB!WF$duCzu6GiPS8vn zz-`3W)sU@~R-;?xG?>WC^#ul)PLY@!V=(;To4$&rW5>j<3U&QnU14T3C*~qB1h376UNi=e zJ=*5mjdYdLNs0UeBpRC*?sg3Cj#_2WURiNIl1ZO2iC~@6cbi{-^nR?-TQ~i;rt6e3 z#(6hW=0(`?J-`OVWLabRnL#}AL!$0N>Afbb8vt5{oF&MDI39m#;dG=mgb9L;#_(tK z*}86o&!*ZoABq`^bhT$R+4Lm5$Y8WP0amW_8)_nFN|fn)95D&iE|z!{z@HcII8#iV z-dstPJ=RlQB)Sf|pK+(|P$$5)?Fy67g($>puh!DNp^u%&4rzPz1`(NsjW{trNjkZ* zmB{i%C*AcL>G_JuGblsl;@2?hrec`F(-w;<91Z_^VvrT(Ow+>7t_nMR9=e2OH+jLd z2zxZcwJTV6!}(Kx?fo%Gd}@P;@|0-#VL+lg)pEM1VUO3RvfqWjG(W&f?W*S|*oDgM zXdAo;^_E5!Waub;f3kyc?zLIj^AgDe(6`ZA!3%{rM{_EBH*&H z8l^eTY+Sp!`Oq@P#|=(6$OCiyn%WlY1piug?R=NTojZz7aQpOJHU`&%oA2$fDc6Wd zT&&7lrB9!=o%?w!Hz}vWH7tPW&*scJ8Ai@~Y+czBiLgUmkHqcch9kx@^UBM_EIQG@ zPGsl;4y-c7p8l~h^$gnTr&XW`lW7^B`V%_dI`t28`+rYe>r z^TMkpe9YUQ5iG?p)lMGzYsPKJZuHqF?A;*4ub3|06y!o=&mM9f{pJk|1 zPNk`KfHk)>sQ&ipO^}kSH_gDK(V?UBoSV>}ftHFx%Qtza!V79^2w>6_yF*QMTduDH zy>erG$9awgSXYgtW|VB0yynr^$Y1w$xZsqCAJ`r^PN*6YCzH#mua|HWk0M zy^(uQT07H#dD{bHnRSiNE?HV}333ateqym$45#XzB;TLD&CyRGc%kd2B+--f@P?9Y z%V$kk@-`bM)9ax+j^A-x^gEr*#tm&^Toe@8rFvXSBPS$|?3cCK07@&c@~SqH zI9XgiRp9O?>%`YQR+9DDe8`xp&!`I=FuxF$NqtsKv^FWL>+Heb?su%7d0%MGUfvq0 z^NMBPiZp8?e1^HuQb1#4NCdR)XZtq)lSHBm5Oe#`#jb4)jnxA$l#*98$^HcIY36AW zR&@JJK=p1CDDodyibu)2#hIE%oL~q($!DK!7D=n-A<3nn_xlrw&*E1kuxk5YRl5yO zX6ho!-chcSRZOH6i=zun`#~$7z1;_JkrHv>`+T^t+{aA)l(b0XkxX(+_5$vvUi9^& zS&C&5$FgneF-vWIGv1W(pG)t#@bh2gkOyJ074+Jsi>LEiu5Va=YOoSpA`Z#wWA;c?i{ToT!(d=isrG ziHfVh$fG2ybg5MkE9N$rZa#A_A^so7?7@g6F)OIGk1~&voR8NS&CPq2+PuLW{7|R} zX>kM?GL{d)g-9gE&DW%DS_m36D}f!a2E;R4JN_G+*3+(0HZkOih6 z&rUXtw&>uv>?4=FRu$_?=x}W1mzCWH7l+9W8Hi#tX9jA!SI05U5DqT4*7J|eU(^e2 z`88tyTPL}JmVu>E8Q58_hvTo)E`T> zk2+6b-NNy>w(lhkw_B9WZyrNXTdb}X!Bd)jw;E@Pl`_2DDY=V_8y%TzAodsRaxX#W zYw^lws9s~^{~udl0Tp$-eGS7%cOx-`l(cl0bV^A#A_CIVU4o>vba#rBbVwL<2uO-F z4BhxW+}HQL_kX{;)-2X62If~!oU`{n`#iaMHZpih&d`7wwM6W8&^9^h9ZHd~pJSZ) zE8DkaXEj!6EHtvBlGF3ksQ0n}jQcbtyvr4?M9~1DP`%-B3W?B7BgarJLAFCt?x*<&U zIFaGn;PHy5yrSAoC{1vD+)3<~>odO4HEP}M)b1{y>lW)pwdIAX`7aSX&=adqLOuGQ zrr`z$iXeG~;3~uFzRYK zT<@G*`EbWpimD~ZSAqKP)Oi1q@O=fA>rwdg;L!R_xU$B_AOecoD?FWL8<&vSWkUw} ziV{t^9^ZOWcu)J;Qq5JjB`G2)%i#6Xc1+60c=Do4FTte9p(eFRRntqhJ+cBF7Qrc{~aE7E4}&W7~(WsXmU z^enplc9(x{$EX-tB`-9*fxalJvILj-gnpBf;#$W4s7-pzBZRYNn7~8??d;B<=wH5IEG))g>*U?8_LFLR|7Z^jxaZp~w@b7=kExYL@xCyS4N{_PzJcCjdQjsT&n=G; zqaa_UKvb6dlZei{B(yFxtUet6R+sv?bLJP&S0z%;)IKE88M5oB?uhXc4SpI0ou&Gr zbxZU0de&I~x7>Yu|9X=MjIDLMAEuLnCZ2fB^O1LJW zSj3@n;X=7QEk7e;O3y=$5tA8JP7cvd{?>@3w z{$UOO3oV;>(h^@@kuxMDEx*0YGF&DZYh3rLVyLPu#BN88+*ti?F4=)sX#kHpwO6o5 zktAGG{7rDqy^QV4<;hxaL`U6k%5ai)JW@<|Y^7mn_Yu|Z>$3#^~Wqaw9{0NqQ7=W;!O^Gy>KJ5mPj2ihU92mn1fi zp?-zwzi4w}dx-YKUQz+aoZptl_~tr(o@nnOeM@fwF@lq8oFl%XXi;70BhKQYlI6un z-bWJ4>e1jUm+KQaEl)?}=J$Y`cC<)(Jol}^?|PFFagTtI!TmgXAA^CNp>kBMfL31O zgnMs*1uWk^3E~q@(qaecpCF%iFug`qCFz2P?ZYOYXRW;>!QPqX2B| zKy;IsWm|*-kaId5OHrQkp*&6S%u!CgrWT>S!JH*q;#&H$jt)YJ;od+6u?EN&T}vGn zMw1x@H(`;UfCL4qlN3p=``9+@mFxwg+1p||N6Xe>TdnXo4gzX~e5_BDeowB7u;C}@ zP>AwILWm4al+>InJbR)F^^MR#Z@{ZCY6QMz4D=95@&doQ7sHW!EOV%+-(_*#bNx-7 zLpvUXOC%;)hEyyosVLlz?-ibi9;{<*&aDnlObF^fIsV`%!}1lgCmBy5j=kO#S8?Q- zBN#wB${U-XOM{ zkjQ5TE_=~S!)pPP?5Lb5cM&O`OY%?BK3x&J(oG;}=xYV554GK=FkRBCn%5z?!MEyv zmG}TRy9^0!zsz1_*4u4729KJ1iLTbOINz&7dVS}%+J8GEn^@NbYBNwVoY`x$-s*O( zpGtkx?;bwE)%kru;O^7c!?63ESTe049qk{Il?diPE*n1Pa0plpj2enJv6nx83 zq6cR-?e(|27Rz+)J7!2S{=pmqGZL0&YOn5nyVwgwkr(!?D0z=)fV_R_Bqtcx-&D@# z`L7%;@8Bn!tFiKruDaImI&ia*DrF3_T==2UfOaEV@GDCLav!6}qX+DJ{lAs3=*U%Q z+-SC&JCU|{PpWZ2v3;n==j~!Z+x*NvyT{j{T}X;uI#lRdQ5lV zh#{!9<=uVMce=aW{O)?~CQi%R`9ry({rd0k!Z`4Uk!&$A>fC7w>SKVkjNuXC-jmVN zB0R_~nW;Go8hUT)iEjQ>OI?eQ@NuNpX4~01-yJD&9-34j0l^3FYE-~)+b?Uku($_!sFYd=P_h-KN z@X$)e8XIXrhznbwE+wEnYi*(q`&5r#=J-sNZ@H#V6n;X!dQ6@%wutK>GI6ZX_AnN# ztRWgmSij(PFPnuFHV$0e-i~lvMLv*#Ff-;9&9%H0eukPm3mwPd#K-AChZjXZK`?=I z;4kz>DHk5MG9EA74qHBo|g`sC*jC zCdu{kBI#Klm|dWha|kr`)hp^Qc{I5BcgPiq)My2)5&EdlWG=tkUT9E_Y750W zZmqT!{7@0>JC!*U#p9DSdPL<>v>cnJX>g|8Lm_<7>8g9a(tWH$=g7KcS!h$`q67iA z6ufe2a|m~qU3P5H(YRlv%1K2azMq&t_ft2cwcS@P&&Nt!qDg6E~6ciyg2GOZ5@&wa4Y>Mme>+{}9{3AyjJj;UJ^Dc~NkI_~MW7nmm z5zhLVSfmonH#E^sK8haGD_;=?`&Ny&hXk&_wqZ}D3SbUPU5VIy2iHu{=sGNd6NHos zs2{7(qn&#*ehkOHWlHRzX^K@7JxNUOajPdlM~g$adle7`vZkuyKjmpo3VZ|~QT?14 zk-sDAs9dJ=FthBDS(c^jHmOywP~jFsIJ2|t&kVe6!lJoh%W*-(hBYPr*R1Td@CG^A zg@MQ4E{^?hrtRlxoN6ylw!}!!gMwba6@r+)oAr~}QtX_$yH$=62(IX6ZabdLEQ5~d zm=kRI%vL*RETX&CkH3-Cs&1Bktzos13$VYyx2Pv33qwdEwdqM~{_E=g>u14R@M$S@VB@dn_Fq43qyrSA>X$Rh z4425n@)cw&G-W@^Rp9)&QU82Z0YAh{+dMwKo=y%DU}ba7MK1YJd(b!Lfrw-SqL>@`oLTP|VT?tKL` zBMr;bs;K9Xo-nKg&^1uk4X$l{MZ0dTlQZ$iq#Lja>u6Ew5rf9gn1h%b*fXUo$ z0{x&8w99qS#75Y|DTH4syBo()iEgEe3h@Ga+xn_XqmMdePpkLdzqh!DeSj^d-^I?w z#nsCk&LKFz4$2v|4%a(sz8IZ5qniwE?)u^?tK59pHyuNNumk8g`g4rOV`ZYNx05AL zdbSrwa;4Wm^TSKg8uxwU{=D#`<}*8!n0xYTgY^S+NixdXuKtUp=U9FF$`3xnmwVXg z!#W)BuN>?iOs82fBH~luy-c8oYoAFL=yk*|eiGQsHB?qVg8J-=|GrQgAf#P*bn+$N zcDm{iP`F+gR8vQ2XlOyPfPM3jtb2x4UNvYdI)Vn4aql)`wXgRkHbIxTX+_Ma`^Eeh zK$6ZFjDph;sa>i;e{uMkgPxuJn^205a1HS$Xgg{5qlLG!PT5UN-FU?lvi!#J<++8#qI)X3H_h( zLFS>XicB3`QaUA^46cG53f;PF3@U$?97()^xAbo;$&b$yIM%)a{ZLg1_3#nVBQz0 z04m(qz^#1rYDX75ZT|-b4R%5zVyy8CmnYk6z;qv6Xoox)X(xiIMzlt#MN(1sc@>M3 z7}cnJu`gD7ULCCTX_RR(4<@msOp7!)EV7@MgKpL_fUwGhiTky(8aAmpS!ym{?MAEoFE<%)zO0bRdM%+y8g$>Fa7++wrmw@2IaGH) z7uYta4s%p_zS*z#UC9cf*&{!HEGJjIdDS_AF<1X$(F5E6`ao{`CcM?`AhaRE9Z6R; zolixa#G`u2h=iQHe9;{hLsHKP#;BH6k&RdHE|T!n#P@^Sk4?Rk$*fVG5#!%a_PttD z-Vn2ujX(Mg@pXR(e{SH>pDND8@X>vr9rz25t;6l|e0_k#Vs;j57~xR1-J?-bo#DzQ z)l%E(~R4Fnr~Hl_5%{A#hN$_8k8GxTCL&6Jo`2do8DJOeTh7ry$*5lpr~}*-2C^a zPPYkid*Vgh^V3eh@gkK%Pys5`(s3rqY5!&OhuP3Z^U2v>?@{>KqlJ$pEVCVWn9p2y zW}f(m3-~6SUqylFix{8zV zLlWE;7N_S-(RdzcE5X?`Ys~Cler_TMzm&3Wii{u%-*cdB( z1FEII5RPkfBEi~l{aZ%{`@@N#XFGs|oAAsH4vv-a!OasJ7CDNt`(7u5j7`A=%28Xf zWBuu5qehmy@L&lJ?H5IEUw7^rGqoH6dvg2uX+V3Hkx4ZNi*!xD?l|T3zxC;2A|{l? zAZ8ue9qB!p&&v}o1N&(i6pMFi}xtvk~Ga{_`*&Ek8gfK{Txk zEPAKgq~=~MwzskB)jeM1U|MsG9YyO5=Y_(WHhLvS#6bO?&`rgXbUWC?T2=#XQ(pzu zoo-DkxyxD)XH{nNDr2>*XL%n_B!Z3g$;+l?Wau=+kLfqy1FQCVSp!Crm9HKPg1JVp zXg9hH!LfVdr}=8W1Mv8o;;@o_0yU9bz2)!00v|XMioSb!`?d9*O^Yo8(S*HC2=@I2 z@)B60w#|tc=Sepo+uRwbX?DGuY4dK>hSoERRO8NL%){y(T=hpIy1k*pO?dTmx-XWE zSADGst(x}A*%xNHXHNh_OApi!NqZvsyURD0(EU+~#Y_fOPJ>ppoYtQAA&XQ@STtF~ zZH?;_%p4A8Z67#9g0nhoz&L1My5J46Mj39va~KY36uE9YIv@{QCmcpz2*&*xyQtDS z4Zn(76iw_=z=iEwor`tv3$R|m*|}B{+p8C~Tg7)em_4%1-_iNu(40D8*0U*VKK?!$ zHY%H&!Lzatc5?Eg(>+el?~S($nKh@apdH&u;~1zuFS#&>cPWT;C_pZv-4w&u{{(B) zps#X(;_1$tr@l8o^Mp9q3k4jR$4#bZvE~v`P?wZJNMiUR#5i0_6U7jK?<1SbA(!WF zNi0vl6$%wxwrml$XfbN;uV&xhb!RRNcdHQcU_S}8rKD^7^)=mKb2&&Os%fwN>Lp9m zmV9%fc9@c{&!$Tm!M+A;Vakp7{-y@(+f=PJ)eEsoCAYd0w;J`MawA1V^U$X-%POyv zt!Ax$xol0CI=hwC5=8j*JHI6jn7G7cgHZ3ctgdCg{s*L&mEb!34ANWUKuIcSSHE&=4|sM;>(zv^(&>( zew;ulz%CbJX6JR@)5v$ZB>mk9S<`|gUQ$#oXO-dDrd-arf|2_5UYKkmeovuLlxS+a__uT=JWEhd~5cPcLEdNAM+-L5?4HD-HUA+uv_*?vidR2`?4t- zw3`;Z_@(1IuwPSdA{-vFQB3zj+ouI&y&vl(tqd5x`T@YVsxs~JmI=8wv2eZs&Z66; zV%aOhvZMU!a_lOl=p6mCxy2(JD_19!GcC8&ig6E}#1GL*%wflZYj1idb0m>SzDZ}y zrnH-0t#4nrMedjTmSIQxkub?*Cn05Ni@cZZz7XT|Otsfw9b7p1CcNL2 z2vLOv(`T{qZk5N5GEBHKq#T;$#}=z)SFNt51q2joyl$rQ+Mw~>sb*K*)njHdR79*; zU4G3enP&S*50wGeU#PjfDY~WUXp-!#gFV~0{_O_(f{0f2-4%FcIgF!j(>u9x~CqR zZEyc5tq?rE>D@Laxe8_eYhZ03<&u5SKypC$E@I^j3axOiF4DTk|5a({Nk zQ(fcC3u-khim`}lF?B`Fk0Gse$B!zofZ}SBh}mqsk;hy9{`8yR@1U1d1_5fKr1QRm&5Q>c3>#d?fIlBNad zbW01$iFmMQd(UB<#eEM^Ik}KE;W7q69=0Z_LBV)dy3VOrQFRg`pYzp_&vC|SqL{3b z7eWhT@a7%r9bR{M->XW!guaCP2d;OfbgrP}SEddjX<9~=1xFioenA}yKgA%hMV&<} z(lx8sX3jbmoX1dp8fXf$*K^Z75mg&JDkW$+$4OSJA?7+Gy{{GJVUg$#`uGYZT3^-m zpPgOPR#^L(>=K-*y3M=I1#1(@){hdmMhDD(4!W6W$Jx$dgdKPOM`p3%?DLxt}HO;s8&7bGomxvrpOj+lgcJnQ0nw zZ82=Xr2tvHo}O`mphl-_zafDdr?7WqpVzRTkRoxib@iqV2V!pl%D-EMecFT%jC6Q=yLLXV-H?==@o?!plxm917*puV~Y6;y%dK_9o_A=ev!IFV--9 z%q2Dv$IW~~JkZ5j;MPL-vZlXs`Oq${;t!!8J=M8DlBA4hFEW}DXHscZw~rSme8k{j zH_8>-uUm16$oI-v^+GBT$`zH-y+kn<3{i+i*!m_!NDw&BU-0Ieu^D;;a46?s+^N3!>EMvOPKzo?W96U!EW9n+;#U(sDKvhgE3qlmd zN}hc$%PEde$O|4GfJcHV`b3+Q-f-B{I zxjcc1EsQYt_fxY%cY<&TnB;Rp;Pj*_{r%WJW}OeaG&x&PJ4jz`V|kOBwC*go?$Y_Y zhHwpk*Bl{3A=gElspJ>wG5f|%h`;gp691ekup63;@=3pQ&!P9JVbrHC2tv$EYb~5e zoN(Ib2a78@=QJ5zjJjzKmc_03FQcB=u!NjLdOYi`_BWy(ss}zF)V^$nKf==?Ey84q74M4~Wc;v?lo0d1$m;6T zQ81pd!@i;>!xgbTV*Wg?z~iuPvfZi8HZnUSQ=33{7vRY90Wz1xaT@ID?)3?4&53i^ zhSSV932&e6T2(Nj!@7HO0ebbVpBs9Qlhx7m32w!bJ9dn@%G^N|m~YT>ne(G3nr*IR zBexmQ^@Er*hV})NuKHTjMauSt%o1_J(Nk-*j(h5s=T|C^eUUDrPd){&EBpmkf#ApR zl@cZr4y;)e^cHvO=B6aHPFT~?rpRVPO!Q+b(=?)=2>8+=r5Z0?p zt=}<7rS2(ZoLO36fe~NUS$ir|)Zg>*N%yw;R_waHZJc}4bwQcz%1fyf<@c^3u#}_* zQrC!L*z*D(+yha6V1VH#w|AXHIbI15$FXoFq@zQT`j z-yMd`B4m-cntnwUNyNlecJFpeov@3WSSX@=gw3c zU)15wnAoG99A#gd^T5aLj z+!a1;IM*MzyuTxPy3h1ndAYwkTa2TTuKz%jcziDULD;CF*lH2yn16~Y{OWH^?+I!F zIX$vSRgdKb=)pZgcShPK5k8N4ZIQDY982Z^DMvmp?F>hh{XJURV8CSRhIO9S*^ga8 zI1&lP;oubh- z9!{ZF@liJaE>uwwP(Q-Vl}y{_eKw_R7Gvu%Gk)~1v9lNz*9LUTEvifCN+?kkK_rPH zLrw)$W-_{rFqpbx=Vj+>=M6^As}n+9<|R5UL6PyH2d*2Sx)2AnVJ>Ggb;Yn*T9}&) z)%0Y(~R@}==CijL23oZa-xH0+M5qo9-g2%>VF7GHr8+mCPX>(OCXbf4?975zj zTx~4`R(V-Lu9otQn@!c(;%vXN&*oZ(UO`qt&EP(?=X zzls=bPDIu1EbGd~N3zMU?3zVVOjD1n z_P+NSz23m#Z1nw3D#`BmS_K8Y-1-1%9o^44-#k8LkY0F+Aq|q)-#bym(li;a)+7V_ zf}wOe{1YeJ0?O&5Vyi3JcGZ1aUE|I?bmIH%Tl@PL@TVlj)_B8wS%^#r8NH>gP2uMl zy>c;{@0bPGw*^m>ho9=2`0Q>55M?Pi#8CN)5~zAEWmGT9doMhLb$GvC-Tv{$DmynZ z>@DVyN&X0*&G~H6srzI>^x~`5;wS<$mjyfDHXPhfrO|0krqwWOfSRFCE!J!5)uxSI?C%$J~!#Z(rYrh`m6cxA&(up?K}R+KDRK7jg3`suxbp) zc(pivb9TBMEs`;`S9wHfm$tLq=0=V8Y5K@Ut!GYbR`Ep|@*MKrEk5ewjI*W#JFalK z>GreOH@?MuD`cPicFNgkGpaAIyv433`${W3hA&?DtFHBl_L}HNR1tJElne^==%MUNx`-R>utlE9etJF*mnqL51sDXaN+@1Omd zHxdvV1?nFvj0&HJa*CqLjV!(g>7?PoifBEs#=7U`8Awsan zYp5dJthlbuaIZ}coO5x%gCM!H(oHe1Ha?z;`){_2odfY97dwalFV#Po{y#^)dxJ|2 zK7~O0O#jbs!3Y0(rKA8NDfF}Sth3@*`(wR5`h(`<=s=H;a0H z;r#Z$J%Tl_#t0XH3M`@L0C_G{%@n%LD?AqxnjRqVx1o`Xp@;|7NT2U`ECAW4I3=sM zJ|22hS_3Tu7<1(I7MppYV$x4Qpd>am2{=g3e}jp7X&L;u2AqnSz2?g_WXGim2HMSA zWOW&2nm_c_pA#FPhSp(uT@R)l{u*4<%{*Ek#;9OceeggrJ{1yU)|zS9~@!RRWd-kP-9jRJ=7XddH$K=-6GxH8 z0&+z$g`G{aSTza6VRDgo_KazOS^RU>q@@5dlbr2$sj#jG zcrd|NJE>HY{k)uVl%1$)4u{cU>cMBDpO<3=u&XUN*yLMYsxZ`uzEA)Py^C- zLU}X>Oem%qDdsS5q$-bJQA=svH@sH8zQcgjo8~j?=wQH7c9%+raL=C^HnX?#Lz;gx zV7>f1iO7Ji;7}&CdOB}72>S>xH^$uY?Dy@&soex0@!iqY9*mqG@Flq5X$S}Awb?A> zT0=qsA<#`0v~PA@-v-!xBJg9;-%mGh2M_v@_o9&tEqd>Zw#E9l55eRwl%+PbXvOVv3H3Vs+S)^~k3k(B^IfrM)fIrvY50G*Cg^xk zBNTCpfYqoa25>X)o8GzB%8-G<#G#bT8qa0%>5h7Iqe^A4IFytlM5jd+%1u2*;@cnv z2z%w>5KHxj?fDt-5ZZjSEJR2X2N?D(Y_`)UMa5ZOionK?FAWr40>W}=C2~6s5ea$2 zhP&hlq(%&&esntX665KQ-@9(_ZO?T!|EhkKcHRR$TWfa<)>90w_aZlKz-`OHUG=`*Gh;#{3+vp|JPzG zPfY~Pt7Bd}&hkBY0T*a4QO#6x+b|lMnE&vq=kzBcMBoT;+8?#7XVD{$UrdxNYy7&I z5}Z76xhv-^lx;l`oJ@PgoQ*i;HtFeB`oz~aBQ7rIYu-f$ei{uydRwZ5KC$!CcM8dRc3f_;Y?IpD8O2`Cm|WZ>4J%GG zXm>8CetV+ze_hc*e9E( z<%*O)C$o+BD{`&YO)I%&7_AK@xiHHFwa56}5k1pLI3kW*yl2tYeu{!WHIfB%C~@^w z&YVQA;XOhtcUF%Ykz6SnshbvsK8~fOkJx`=JQ)u(94eFA2gLPuRSczYOX8R!Y=5C` zuCRiXHS2l$T^j)!HB^E89mUeZ*xlcW5J?ve9r{b2p-NUiLyuR~&!0Xwkxhiihxdze zzQsR%5t*RGY^RK06)S$LTU=gYSm6T9THTqg-iqlA5u|9$H^F@*5)X$8D#CuCs zX7;OXaDLqeMQhYItG{~PaaE0U0Q+0fgNW$!er1km(eBro09M`C5xs(XSX^#yjWdWH zQlbOi$$$=F7HVquFq9{_Uig0Hoz_j!>Q{>;?fGt*lP7edqh3fjnm;NKIO-5JRIXa) zMyV+k#Y|HaQG#8aMTNkE8})qk9odrxTF>uj_16nS>-2h!<29DgC(Dwu*n=<}&(UlN zKDwb7F;7$)OtWR(AWU;sTFlg#d2RKARi~`->5kbKF;+=VdPp+q5|ZQvS7vV(V}+m( z+K{DBc&8767?UYILYkOwOV+7Ixel9eln-ZNcgoCBk8htMRSi>s71}K)FZ2v4=n$0C z&c4IXOT_k?jpUarO;t22YB7bK$dJ*1jdEI(+jKY3$Mk!k4M7pRP+Y9P{O5Z9dX;*% z#5o0x9x6@KC?@)xh0xFhyq{Pvacjat2`VH_>4TZ|Ql*HVf0Rq_J;rnKcdA}yK~7dL zLF%2pnMOR1{qG=7Lt)AAty1^a%=mjB&Rn^0TtB9$&SIo%yv}A*MVZn-SFLkm3H{S! z(Q%)j@p8vJZ-96~za3ZEXSgP-pP9`+XOm9++*dsr;iXBYVNv5qn(F*7kwP++zd&CGPF%3pPl&YU|e9H&sNBbo7B4U;Z%vKsd-OA)f6HR=IG$U>*M=eY1`G#)Fof@=ml#l`_7y7{vo z?%7Guq31)kna6d(PyEjho{#2*o*E#0COP*A5XWHR5xIxWarARAUoh1hBF@mn!N1^< zZw)7;%pbp->^5(pOsLddu8zwH1a!A>D+o$;R?xQYr$&dx_NhXkEio`C?>s0M4|In5 zJ))M!*hRc$>t?g*qH+s(grO?FTrr`WLux`9IDu!6pUnK+;MZ+#wB%^g{WVo;Pj1Zr zR(#E%6>PfVGd)bKhLQ=nmUPMZ)PT{ar93a($`X*fCpa^996 zS%+P++4MG+h<8bg3s;hn;M>FH50e5Jy(J&h+5%^aAx$gNt_zoBfwi+NrfFp20PNfYRd{BS8^QULhD z5tH4+Ag-?<1OuBzyR&Q=xH(TKm`7rbb$}55xQrOi75L59&dx4J?-DcIN_NyKj2Agk zcc{7SR2VTU5Y^{7CQQuGJ!tf$sa0^{p^Li|7>NrewrcQYoLyF4EQ5J_x zIE120SN{T>jK64d1?rSgPt>7M8sn);qy+27{ z+$Nf3*VY3knFRM!)3$&o_PVTpw3?I}x;6Nn^37ZhXUY_GpK9K5eq#`=z7qa4;F&8G zN>Ln{^HLu6jV2RHH=*lHaN$khzjj8=I2mppJhg@^NiQu*^BXfTj31KGlPgDK#_ z6Lb~b5^fQRFcv0*%8H=Q=o++a+s&G7JGA70v8V1QAh_Er%Dw5WgrbOXP7)Z3-MvCJ zN0#cb6w4RF46~tGwsaW6`AqP0wHMngV>Tqhw&8h#$IGCD(!i!v?8Gta??1n?{h4Ry zbTuzmu_NAmt@huBXOe9MM0B`vAGvX2xrtMAA6fpm%d6!Od}nx0BFs3dIPM{KclC<$ zu9P3e!gw6eF@K_Q-u8mfqVLR|(&|_n#s9#G@>Zrbg23c@CR{oYQHHeQC1)Q}GFMGN zAQ3_ZcMy@u{Aew97#XWpE82N+5(LQ#mBico#?&cL++k&cL8M2DD-}N%LPtMA8vcLR z`_2T3cdCpBUo!gBf)QkIm(|QxdLx{H1jQBxgWH%T8>%Rwt2=j&GKK!%{{!GZ^&zSu zpHkF-bRT|k7{ayU(!MiBhO5SZ$87;n+5`kPF508^+KE38{XfS*+$O4eMEoY`D5U(~ zD>L}(csT?NWc3I<&$DQHhX0#L-T?!F$_hZ>s_Z$ZXY+sa-hch+YY~W+`Qrsqi-(2ax6e2;@yXJ&Hu;u4kSWLdIu64Gn4+;DGks`(98b( z!JVA?Kfd=7W#G(=E_>~}%{`(2dBJ${)LdNgiczSo4y=#uq<9{Sx|aXzm6GyL< zT(4=KA?mGDL!l^}0sw+R&`O{HB>QiH<}-T|D`XHT6dyc{tWxp``YH40VDgO69QlBA z4Tg~XlA6~6sg;c)U)WW+sPI2bEbvig$B zRR{1Wfa%18Mj!G3q$mUt!RFg<%RS-r%*+argv@XA4(T5}7yyDM_PgL%%bfZK^bh&` zmRitql56FmOL?sF)MKMNdXC^B0#I|x%h~Io)Uu2KVQ#-jw>29rjnKL^PTs@ z$ItH(-pAE-T8jM#&5LVBn@K`=^%t?u3Y#qDpn zpp!hXVu3wmvS;@*67A<*hM1E;A0kib|1LF-FBySWAx2IW+0&@ISm zJEO&_81=Ph#AUJ{Ja6s18Px%2SFmirt8*(!ux@2@s4L; za8cU31$x{iX_3)D;iS;)yjG8&Z}joitk)Va;W8BX|ns>B7zAPiv)OjR0uunH4w zfH?lWM$;xr%&>ATeMTILylZiRg(b9CBU^(}!3~l$4$(qLWWZfqnB{w_w~GNu#;Xws zIDr)9ERo(aw7BnAB?R$Ol@4acLlLXBRjF za3=;KN{v^iJfbWkK=>X4$EGnI(g7T+ez(`vhm|HB#$ni$Wk=y-h(nkT5E<;lG+@NP zutI8{jbCT=nOHQbP`B3n4ux=Zp&}CEs6Qs;FgDD&_5g{+PtesT3BX>PCAGD+hrojhRU}?D z?U9VZ6H#V{B-j zm7yjQpW4t6vFJ>oLmtb9!^ZiSe7FIKE#wDO$j9|~hH`%DIT->@knp!`27HaG{=no5 zI)w>*u85hKaEY<`+9IkCB})T%fNPpX5>6zk3FKbyc6CS9jiJPoBhVb_1wE>dWoI|U z<~|0lw@{NFZn5pD`#=UX3WD^3UyLzog_ezwDJ?ARE};&ue^x{Jy!tOhxtQ1j@W*g3bk}XMuInaee?9 z`Ou?A(WB8LK=Xm)2py#uo`ASWP57U~KZB6837P(l(I})a?1>$Upvgbc1nus5O zD5d+9G4MAE6aLZ;emjHdhX8GbmDN@Hr&We6^EI*o_^ZH~Y*bUCCg`rnCBHc0yquJf z9-fZ49m#7uwNXku)9qBuzm3iWsgVM<@m*SRpr7DoU0UlB1)&ZO6AOqY-|;)JgPMSe zwNR^10MN5}tJn~lhjeiZtm|eQ?`=gNcB9|Zd`5k;J)NTe;l&_0UTLLPCl*U}=fUQk zpHnhJg&vSBZ=UvBJ^g`u@OLcrh$m2jh%^A99CO%)f$Tmui`>7$xVUB1kROb)X^*Vx zrB!vsP0>+=cEJq=9kJMyUZA<_9j0Dc}| zCX!>(hk0JM9>`Wc4#-yzseD?UWhz7XehZ~2&(u@{V)FUZ>nMg4V+5|BXr zfjVoGR+g&g%60G>O9@8uWIS&iiiENx_R5@iR!0QJoCg7JNJ57TP|8=V!jUmPHIQ-9YKs-1^k? zFC_9XXm@3+1Y0fw=McVk|;P>8lUG`nt} z^f+QUT}`oSj8RsxgbN#d)CAIgwJ1mJpv`~oIS4!pI3S?U@MgIsE7o6O-vfdGwWy^O z#E75w-|zghLHy?%JOuixc=kJ{{Hy!13;b9 z9yZjD{O4Exc^`LimqA_Z3EKXz3<~cqLwen6&&u;ZzSoi+Vwm~B<%h#m^1mbTe%j0n-Bt#bU;TmPS_7HyUUaeQmDi^6j1^;>Sa z)7RD5EPu@}TrY^3rny95t^K+fvvywU&(A3w$MiUyeb=5YP|~+u|C|GO!_JR*gr(P@ z#r5zJ``K61+q=t-`-U1a$%xF#sYt}}P(gvGOWyh{v+v(jW1y=N0x_w&>5{?Qzaz|7 z5VMnrK;{Pu>$~5bvj5NJUK0e+N~_78!V+ozI`AX1KsZ~iB2tv{RHClYzgKcp8bm*( zFkFU&yW}S@N}Ae7F)FI(HSfO<{3j{8`RvKfF-oKO&)-U(8=64VSKw})B^T$KMlnZKBEd3R{um{G)7lf=4eW)d(2j;r*q zObH^wQ2Hu-U%pE*)Qy?%rd<}Bbus@8^cP8@{jgG?93F|E#G;?AB;cr#?Eh%Ewl_Na zIo-SZa7cWaGemKi-iH{gM6MiWi&YpLd((w^mL|<(NPJ@YwA6p_>ecX#Olmxat z^~z4m=t3WoD7;!Y>J4hNmLJ=6$tpf^+M5y4DE8Ofey1tuF_6;@z#KZvw1-I#sd@M9N`mQkME7{bAQQWb zKZEdBchj6N9S`wN^G=kY1--iGQ zebzI~@4&iz)kpC@vPCF^Ap=?M!-GDv0$yzhMixsBycwZ&SkWGvbI{C}=O zcNwrm7#%K`V$^ss0sTXv|Hs-}M#Ysb-@^$K9D;jrcYcXxMpC%C&4 z+}+;Jy)*N>GxPuWexTRs#X2pgpYzn-yLMHH*%dkVPGs0OP(tpX5tC%Z*>ZQr%>*Ik z%>;juyIej(>NM&+GLVjE%g?G3e@~YdcgQ$drqn;F*ByZ21>o{%cQc21lcg0+IgL1E;gj(jq>+&s?>fNP= zc!(~-L7laW=KZy$T!+14A^zc+My8bFv}Q6F3?M0q99VD_{hL7ni$1yNuK$V;f8h_X zk7ZIwz)Mh*FAn(@naM_RFp(*J3%AJTRFAXfrjpV*`Q2<)OS@1x#})IC;ceW&H1|5f z6uGK{T%$G#N5xGyRJ7)YmQ)wtN3m#1*7@lKT$!}p@ZnREn>|ik6ZYD@U?df39ksDX z`{GXY?)j#<-W`LZ70q2gZRKI<8P?H2O<}{uUgaT4OUhq)ca$B{-W}hJN{VTst$vP< zlsYrVay1mw<-RXb29wW{G8S3{_ts zqgy7S^J*7yDlrvxwHFpw&!2UBN^oo8Qp)<^L?1!S!lE>iNQd{$tyWgKFF~dDD)}26GEx;LrfI5`OF={7hu`$mTuSvhTyuYG1+BfSt-|64Spn z{Nnfy1xA(dt^Y!e(=8d}EqFzS0zc>42!RPxwY1=U^?9AT9Ds3YLPeoQU$`6GvFS~G zX%Xw-x=+`f?dXbmDMGcBi-HvepGr01-7K@-UYR_;Bk#x?Sj6a2vaOZc;PI*>-VfKa+u?~mv4QOtZDm#h62yIyf`bun0Syme*Ul{u>HUIn=sb1emU&4^w3NcBsIkm1bU zG^qw$J8Ai1rG4MM{!ve?5y-sR1iMCNsa_saUtu~1#vS{c(wNG>cSb4s9JoYVS6;OYBYqP9d-`;>X9JV>y6dhLV>jVMc zl0QZUHGPQtHVT!Af!d;=NL7xL@W@|qe8{i@K;>VeqIw?fxgtP<&csN1+9E!7{(}0V z*k%b>*|Qi)ArX~?;jkl=y`w5k8Bo+;t0=s~Z%omPV^s#6D8sA7jkL_7B?>~a(>zwI(Skc?&#nF{unV_@$)C9c0W_ zR&4{Us}6iA$gm{Q3O+&GWmBjB=Z?uQAX$ z-B347?D&GiKr4|I18bNkY}!Qrso=**06}l;{S{%e(02fCXxOwRRZ%f6mEmLIb$w3t?(7f1X%=t5ft~XA5Q~A6ZpeNmd1ELgjBt!E8?n2)U&x? zh0kJ7N~BN>Mn4>1d}qxE8_Kzct7{rM2(Q7fDvWwXHml=BL6TrcC`Q$2cy0f_-^Qf+ z=6ZwB9$qF3g88NOz`~yDcnc1~k>Tg9U+G=5rtpIdl!s~>ySvu9YzOD2F^HW;IV|Ww z=I4jfCQa1{uKY8094o%fOptLdX^MP#dPc!V#qY@MWd)?&K4fK_lxP!`alhOhQC-#J zb=M+^lw!l^?7Bi|%v?2hU6m*X6=H5s0Q=0L6oSFma!pEv@SMMuE1+h{p|M5rPb@d2 z0!FCEF&vXSxOW}XX?8`Q9#p2%E^D_pMgV$tmLDa5Re4;bZZOT=IW+6DQ}*j|?g(kl zs=PERd(S6n+<9kEeRPBlZKRF$Ehfd2_EDy*rud;&{M;MDL^w-EML_|cJ3^pXk$l9d zh&ahNCQB)Q$a9J;Xt>w^diBftXFC0gr=C-XV}b<{KcC@Oz9#T1Hk%O$c=6Zx8RD-8 zdlW{>&;Tmp^v+X~$GLf0{mS=wFY=3xsV(osm*6q4E$hbPrFh4_AFqiCK8~#zyB|GN zUaqF&ud-4GK9cYm*4GRn=F7NMID587?S9%=Q&H!hJ$?^sNMf_O0cb4bq}lxniC3a! zgM=eiFSC$qKaa8#Q9Z}cw9YUy$GqTLu8ow-Ar=ku=@b_=jQ1&~Mg`;19THBB zq=1V>5acFM4CXcOJ`~r+YN|$h+^HOYt8s#v0X7RsW-^V%;cyVq)6-k6_)EF?3p_F+ z`B1yx^|x+^lAb?wL2m&qnX%E)`2QvHVi1bwj@Zs3mrXg}`=Nw4UtC|G(Swx}KCTp6 zCiKkdgU?8eDa7y}!;AEEAp7Pk|7<40-r4g%YU^<&t zxj0Y&d7*@(LaX-PdbI*ndPdn1qhX&E{-UzMZf1bb+E$-E|Jx zhXtX^15)&VVZG7!TkN)c0% zKwI=`(dVklh&~dgIr1)ACa16~x0()S_yZ(Y#3xNE5tO4*ryC?0XhDR0r1u#S~wS$q?f?4XU0z;J13i{Ea>NOKf3P$;34D@tHqyTTR0Dhl0a2O6CoG8b&#I8{1>+OTl9=L(<)_(8$;bmXL#Y9dL%2~OPWV^u zl1~gsiles;^pXR*e4|NLpETW zt#M-Eu+HkL1b?3NKO}I-1*{4mJRSq{yrV|wuK@6W2hjvjK=MvtO+^KC$^WH2{ds`- zI}LgGD}xk><^8DcLW^8^I(CN!T$b4N!_qiC$Cc^-ETQ|Kx5W2><;Ms5_F@|Qj*`C` zlepjgg0)9JLB(7+c3*m0_+)y$VV?KqM{|<6dY9;NQ%Q}@BmGq2DRGrZ^UH~b8wY2# zPL#)F;d@Kxb;9iV($`JGQ;iyhKRYQehRp{^j83ym3t%OCWE>DL z4r^CL1I#qFfXpasg5(Q3jrbd@@cE85aE0eNw1&zx3CSL>wqz;|Z8<`e>DS7aeHW$J zXf8QQ#utz1F6Y58s$Tax{Yy`7Yr}e{41rJ|pY!>D16hMMqI^{8b zh_F=g(>v9aYpuAS4-IoEzxf?mm{yxACPmg_Ic~i~m3D(Z301hRN|9Na!l~*C$Hc#g zHze6dw!83P5~YbuUb@4YOGkfy7-n|_gbdh?eVaAtMd^^$3{VUnluNVgDyhFI-Na)w0&5i z1K9M<(%tk45K_3@IMf_NYP36ZH`}>54`anE&PQm`roO8jCwzi8yEiY3M_DPfnidOu z4RaQ6)V7-0GUDYG1u}oC=FnZl+`b?AW3xV;qf7p^Y9Vshj%rF6D7$FJ>`i4<0@@nyexe#HsoC*sB5vdxqva=gq-CMJ~Lz$(@M7A{UI_vx<|%-{~?7np}D6J9+`3 zXIw(12F0I@6><*f*I#t_lDu%4bAk`UZmXJ2uuQI z#Wi{X?V9(dt7ZCDvd%R+$I!;Bcl_K2?Yt6!sBvr^iFoxVlDrpYMQ*=;liwaOd_n+5 zz8DJf3udueahjagZmi#>Friim!$JOVNiN5lf~0lj<31_t*Vnzw@x;TZ_u>Lf;=|*m z>pdG7yrJ(e2{c!uL{TGWdsKk>?*KrVx-bXVTNA+2&a|axdy03Y&N*mgirYQU=Fx6? zZ%(;RFhJD1yOD_GvJa|wwW9px_DE-m-m?XTT2bsvs=Kb+0HyoO| zvFxiYTQwt3Mn1GCEE;m@04g=H>kiL+p#$?W`r`HGMGD~qF7bvkxgtA63TH*srH5y% zrOE;u6lHlT{DSL9Q&Q9xr5Uks|5q~KkuSJUmfqIU`YVxa11ni5=u@sW;_=w#!$&dV zyEoZj!?h|t+f?2`?cpBSz*TJP4ysyQ#wdj=F&T;*b>i|b zfU8UP8Bq*Y8oE%LY$PPEFwdkc(-b`eac0Z*umSZ35UZdmu>@bG<$_jmK-1 zV*oxf>TH>$z4JvQ(Qu{B^(tUwr`ge*Sa`k7N>|>)W=gC_MLbPjp1narqcUz(dq4L5 zv%Tj=j%JO*WAG1@`p23{vX_@$Zl8BJa)vAw4tuVt(2u~$hN2YCj;O^BnsBPOw|YxJ zm1Xv5WeD027XS(!dMeLy=#H08r3S4?k<-iMUC|EQ!9!l2k5ImI+o2AZdzic2$8RT8 zaddew3}v{kfXjc2R!(i?IJV!<+@gQ)oGCvfY=%BaXt`&e`EJv`SDJpqgrZVF?O_}U zPO z^@T2IB~9B{JR_bi%4H^E+geS&%|3X6t>+qXgojZP$-qB@Ms?| zSIBh;+N&~eNt-@qzN_dq(y5T&zrQA;R4R&Rj$&h*Yf{Nv#qy6@Oij(Z*7{W~ygCQ- zNXS6PSWGR|lMDiXI$ygFX4BX8{YGO&NN%3lKf>UU+Ci}DouaO`l z$pBtsWKE4JKE!ADuMn^Et=@0cKXI4p)FN%d@0i{u*td(U+g>vWgEw> zs|1HDaIzX&ynnp)0wR;ek}sy>m50MpS&B@-s)EUj0a#I@wH?mjsSaIR2cEa}N;)@q z_pQvH2JeAzk(Ug6feGbTs^wA;!F+ScdKlDnz zTDzR9W-~omj$hRQr7T#{j237jHJC`{r)xJ;f?!y9vHa-}o6=aySb}O@fw3w|cg*qV zv$0n|@%kd@+?vs8LExEId6Q4UZuN2Y;}vK5OUCX<{OC1O)W1YAVz8P(;&^&8-|?x9 znYZ}z73bk{F`pPc>SitA%JDvQM(ejsj ztj$9ee4r^FbF0Jr8})c*>n3&GVY>6ktn)_v>+!s*=&4Fu-!ek~_{aPza=C2Z{H{eV z_l6UdyaF9Ik;na?hBIZVPa}`^2RM9r7XaCCjny7m(ihd=Tz0fj@TJ7l4Re|(b=#3t z1=XmqCWozUD~pF^9)_)pDYIart`;YtC03(GkbSeSgyi-UQ=HLACHNbM$E0MXMvd1P zI1F5_&SWT-A;I+7tCbm)LZXDHN!mCO&U+S4@pC3=jr%yu=_sfxMkYq9k@cLT0QV)t zr|yy8T`;A29`h{L+t?S2VE<)T|A-h2DIVTGIzNDFa&ESR8jiu9Lvz6;&K}f_(;2mR8DrB^*o}Z|OHGlPxd(gXb1X!-0TVYO} zx;A33xC@J`mzTnoc}=~(LTOiT)z&|}$d(gg%eNGF z&aG+ak}E}xr-LG@nk8S!jSUIa@|qGF$OAYK z?d>YceZ6&`%K(f!Ay8KG$^%;O`Y?sUJ8jnZ2-{o5hG9#3Kc8>ka zQs|%ZErI)aTN7wYuDtSz*|s+W<02sVe)olqRFO(kC53Skqzsr*4;|D@a>g@Bv+*CT zl(-}koNVTZ%_`ZYcb#5WEXwASS()*!z-gZ}EB?1vZLt5h3bimBLjIT73lV znHkuRLAPFISd-~7luU)$;QR&mcb0`h<*=s?t_dKKzl0i&4a$|I zUUHL=g!8FH;(QlirrGPd;zqAHXUmC4v5lZBJJLg9ybLWeC2cAUTELC&VGdQB@!zB) z^1AiXJi}1*B68oiN-P`c6t2csmhKKEbw@t~w2>%kTFNU#LtOb>QB==i#7H7ZJgl{HLyJN}nMSYMo@&!U5$q8M+-dwxFdv&)!TSv6Tg(=@38CM^L z&my7+n6^cIBH#`|MHI~l@WU4hnfHT@f_|I7ijB>P8_$p2Gk_)n;XBm$=Sdms}<|DX9{|3F|m9tuvl;LnWq z-(T72w=sARsZ`f!Z1*dq572^`?|M?#hpj@FU|Aa&fVm)Ji>XL4fNZ}p4?(^ zR-6P%))j;)9m)&-N=KVF*hYwnHkX#Vv|G{shwO7YDq+Ey(WurKO%rUPA=crGNc%bs$lhwp478eFy*%xaN3HUD*xwV z{nLE`OwqO9O(3E7LBLICwv(5{OD%`jk4KAI;HS_@J{6>cTduYe^``oo@B>-d%b-!Es-n71c zvJ9}@+|+$MdajnMaVZ1PsZ;u`!XqkAyRv5qWiedg#8WMoYZ*(Y0ju;dOlg5W0fW(u zpQlfcwW3I!W}PTy3Mx@TcxtuUKwd$pTBC{8y`Zafo>;UxB_|RfFS9lsoaDzu$y#6+ zj={hO?C(nk4y_?0^<(NzG0b3NpLx1XSi5+wA5=g+71-GYW7^}}QhE>TEHC}Hek>qKV3J{+7=Ofi<4LOzO=dlnn z-4xNuwCYo>vAxJ|&#h@K*Uv2IayC5mJsHk#O_!%Z2gy_0EuSR)|Ji3ix18lXBM8T(Z%=HqY$3MP;PC^<9Uk8Kd-u7pRMwy&+#LoT`;B1?2I7z%F!EvwRkRN8fLZ!7T~VB;_|8wAwCvY=aV(&Cbv+s3 zQHc{R_t77b$x2@Aha>yN4W6FQM+Y#!lC*MERF*-|pAuPHl%XCZ2I0jAHm*{W!G8fH z<9SlApqGq4S~iN_J8x9?P(NOhCBJn;*xAe&QK*yvnA(q}nzuXL>j`0eY6OKx`;@ig z`g4UuGkOB@Z$S}?+T7GG6Qgjc?1el?ITNX42;(Wma@X7Q1v^_w%x44kJDh)FB|qJ9 z+5xAu4nG)YCf3Kj#m)esN$*!y0WU$ju!u(KVk67c&CO^Rx=2(y{80dR1Hv zBE~7N*JYr=m^Jywh;pgF(QAT+hVKI@gIxK@p~p(+hU9#dDg~87YA+y826DuQ5oi6g zHHCbgXnYW=82ObR*59`DZy=b7KhD$zD#TE#N7J1V+kc#N9M z9V?1zov!st9N$bo+ENJqR8|nBBnKkN9`WC_X?!>P4W4(`r& z$H{3%w47(O^54-eQUDdhSPFzUT5!rfktp6X02-YmAn&UvW5vR~TiC-}p4wm}<7@AG zv*e!2#ib4*uI6_;tQgqxs%&e%M~Mt9?C^UZ9-9;@-tLE~EV-ee&Za{ozF) zzN^(Kmg)Oqu2M96rYGr6rn^>4+g(Xpn`h}N`;j|)G0GRG4MZ6m6rcohFtr=WX)xvo zN+POyjIqSx?c?BfXX$Q<+vHjFh<7_Poq|(RP z@$NnMTU~~|l^)0!1(XsE75MUX;Dl}ibqPsOpZvkqZh6O4c+ngQ|G#4ce0jugnZKqr z{2+^-UizsFPw?aoM;p?oi@YSw4R}C8&l-c3J-z%`?yWCm#3{TT6;Js;$cxkfk=zP8 z4>|B(xhO>#M1setiJ@yHqra8Op+G;SmN^CC`tAC;Tidng6j9T?F+@APdj`v4pVz=B zjqEbS8nKXl!@6Dpa<0u6hR+l$bs@V{SX8C&X<2^!pe*-cbou?<_bOBBcjt7sR!!ek zb$1hXp6^7H2O75&Yb8@_Yo#85zu{-+?vJbG1qktg1e*9B5>Y8UPRjhF zg}A-W=0qZ|VBr+BkXCwJE!x^r_ zgk!fakaK5U?Y4`Q{Mxf&x8GF5fU^B(FMwyeRJQRP0Mch^R>TVe5TDElAiunQ({_F@ zYrOMLlKNcqP4w~{UE9PwEMlfm{Eo{NYy^%7BEG)MA6*+wMg6z#R3j)jI{5RgL`Z%gmqc?tI_EFjB%Ox2~rX=q>PCKY4i`=Oi!Y$enFw z4d=@8C9ah0ftpI#5ND{eg9#Z0SU21AH?EwBmzc~}RzlwfcRFA~?7!2t(QD16h)smE zueIdfA7o~C+q-^&QjWsq-|PWbOKrtfQK%?uW80?H_)(sEc1+1;C1FC228$ip*kI`s zS6OKm+sw)*C>1h|#>vS!v?dB{oNuqLjCn`kOwR6XfRJ+MQXP#R$dqt8V6?yNbywk< zP05&DNR3%cL0><#5nC@u0!m`h7nq5h&5+F3H*}twlvLD4PYJ`5PjQt|M97o>!{*`| zH+q9iGX3T#W^a1G)&}SY-66ibf+N;ws<=Ip{dE6OFi$X#-ycdw>fF`REj}Bpq(_FR zI(Bkh!OYAO6;URRy3#tLcLtacQ3Uj+YDl}eag6=E#!T$3!twq4F1Y#e^UyQq`$q`} zI{7p<+`!)MLIJ`F4Q2@;A=2@TR#-COXLn2`x~GvBw3;TSYXuOYT^}3&PdIdQ%Z3jj z)W&Gwr2-jpkfNVCm4@=NNLe1W;GD5%Rk&`Ly-lk`h93RI)|XUH(y}R%i;G3tu%PY( zU5D|%%F9*1H@c=6rSllF34djHD?#89&@<3V3R{(Od|%xV_!72aFNnfwvib-^Ut1m6 zuAE_F^J>Qy8A>BJD(4XZX(#KSjzVK93T5W5K%wI@X9}J9Ng99Kp~@|vWUXs%awmz` z3t#GdiQLXmfauN+;|}a4CopDMC{WdOnJII+Hcuy+tSw~S``t6%I8TTB@3{R37$wig+|W*eu9X?o)P~c+jQ7Z{ zk!g?+QHqPwvj{SEz{D98LVR~Q1bc*eyGGc)kL0{-$SRs0D^hc9u!pF9D^{elMoq(e zd9_*RtO)mFx|V~2WoGfA#?BJQh-GJ1dqH{LM1o%H6de`|pLk4IkH9L7Bm-(T3GPPf z59<{!@E|iDO2k5mMOT+8!iW&5Om0EGiF*0MtuP_U*>PgVwmhxObxMdpTF_aO4JlV0 z54FOKMO4Av*w3wDv!`>&2f(_ue0PFWVBd6oVBubHR8&y=&{{UdU_*t#O}~tz+oM6& zq8+o$jDLo;C!w7#Bm#tOF3ZbHa>M%UDpI<3@`w8rIED1|TFyu-O`quZ1~W@8b5_24 z)&kQBW(Wv)oUS;+L19zz@6xbK%InraYU9DkE9WCB*vWYL6E)o`kEi*x_d9|;Qmp05eU33zUr89D zDx_VyC;Mbb4#JVNkPk0Si`EMp+#Uc>?D@h0FY%nD50n-qN`b`@n0iryCB%_-?U%-S zbCv7+k*>6l(_#E)3WV1NzrE`Zyo^Hyb?$0}wa4?>rY!i+X zkq~@gR(FyM;elB$B-IkW3HYqh>H)75k1KmTTp0f#J1JyU?zY_r6^^ztgas)bKMg=Z zjJ4$^MvJ`F&{1Nib0ECjb{vXEEPSG+uOBTP{W&i9aA#k#exJ-i?>vNF$aHNOcIuwL z;I|4sSkdBFpjIe-cuCYb2+p6Fm+1e}!LbHy8UxxN8eMpO%nt}IjE#9Zu>P5f6z_kW zy3`~rv$@m zG?1UUR6u}rgWuCcfUc)slMo!XDk>OgP||1=S@hogkJ*Xp2cN*ebb!Hxp1SH-^6_U^ z%zszVh~GEWFByh-p%{DLdA-AHR)b#Fx&Bk@a7BVI2-^-xMzJxvZ$d1?0RpV8?Asen z6kjODDFgbSv8~&_f6T>EF$)wC6YBvM1YWGWpUZYle%m7ZTcrJk_%Rg2&7rnwHb}VZ zSSe=`q8UUy##o?3WhClH{i2$4UohexE57hQ^f8w#Ffnw4_iu>ardtl*dlU*Ug{um3(pO#;3!w1<5Y z)87%{A0nCu2nxfMszOpO#Wg5{)wnmR5w{?EjlrO+OUDK4xTYlavVzqCf?lMZIyJ;U zz7tS!Y&r*{R4f5&M`p0Iv#Y|_fqT=ef9wEtQ$aR3SQSumI_ph&tGIq@QpvUSR9;k1 zU7u@U^Yg;9?oQ}c4mF>iUpvNG_Bq?q(R%*~xm0ueMX1SrA$`L$$`Q}g!0Kh63HyYW=&(@oc1@<$> zHmRQ!3)}ebF{=}?NO)1H&8W&%Etw1B)&ET9WYvM)i1k78eDTGG5;d95V)2d4q&Tft zQh6pat}MQY`I=~*B}ikuxRTT}GN#hH9$tpyQT;$}5G*LBhL-Zgxm7AF-PIZzKfm9) zM|LrDG$SH85g3<_nPGnF$KZL~z1k30G9DG7`P9g!zqk36^iqHvM*~rkc7dzNIC#WSyhsV8y_VuH@xX zj}8teUXa>){AI7Ybf`3^;q|_=J0fw#t%M7Rkas8g{J!hL;x!bV2UA^$l)b^huHHQF z;N^3H3~_-$wj!>v$E6yK$ON1!aqk2=xcuNsk6^b-O?>&qVp(#Oksjkiqy2{PT^uAjCKjZ!K=NX2EV=6b zPVO|7=M@%nc=*@tqcPBTb7M;Fd5qgu!}MX_$!U?*nHK)-l5Cq!GteP~qutA|rqeh# zb88l#Q8PomowfZ#s^$O-MyE)(rjSX?P;;8))$aArg#)9t<_G z*EpJ9dKOfYGTGf@XQ#Ty#lo4aL$jcDc0Cz34&?V$OREjqVOZGA7~` z930}*%@@beAyla`9O$%qsvH= zo0+aQdxgI_oBx7_wvP}y;hAaPoj^ZZx&LEoVpi6kx#;Z2xFlCJH5aWxNOR05Q+wSl zm=S*d`F7TR`wbH zMA5MjYNz`CK>IT?7BsN>SjWmd?ECfp)$Y#~~KP!%Jq+!oaZh2#AShem|>cQGNBqhR`Y z-~0wPUhJ5x@>nfAIr1qKRzxAB#H2wnd1tyzxuR%S>JGE1nn`*gQc{stFHLpj+Yq!1 zlU2xPuk^5DWB$5Zu74O#fltY?Kem5nSk+9AA?g9OA|@^^m5`L=Z-5k!K4@mW<)p~D z5m~e+Ea_`49CoihdvEF9=xq?-Ooo*2V64sT%h-{1alhk16}ud_cN8=UA|VtE4uP$w zZ;dC)?eiI_{=T2vM9U}LX1!NB2}=W>RCCfnD2TDdO30$>lD6ymZHR$LPkyrcn-#)O zuKOoba)FT5vK8c^Wp~%oY~gZsP-EUsq{0}^)V}o2ADM0hS>R6yb?}Q%i%5a^Z?1`^RXyYYhd| z9-lEy0&!5pitPidFb2ZLKomxU7|Tv;SjEA;N74m?UY-gvL!AT>;$;b9g7Pync@t=g zffKfr%mo3rlwWcNJkeg3rCV{Gk>ox?cdFI*Ibz?I+Xc1wBsB-7<_4BF5Og`6&3-bs z1}ofM2}C$a>z>Yvc)nPdeY->!oQzLO%$vRIo?e zYbT!X>nuw|fxitxZCXs0)bL3jsxP5U@&?|Y3W33c@;21Ev%yjnfN>C2Y0Q6-!&6n`{RfT^w>=6UF- z6WDu?ej3~!#+A*tdpr<3WHcq*zdeqc!Dj6q8iT!4Y-g~zB&;9v>HOJ$WxK=B+liL; z`WoZL{pHr}*4N$dlbQN_ry$`(LM5znYr+sbKiW%3ru$u>d+(=!HrAAOCX7MlvcB+? zdR;0fQqk6!AD2P!K!?Y<8!W6q#^;#0ow~&}p!I~R2F@><2@PHu-8kLiyf7vr-pj>oNRuhgxi9_8 zKt6ha#0^E9_J}}+VA#!MbT;bUd_h$MInNEg;w~T>#1AL8s7c15Z8}5wu=PV~$7fwS zLb5@)m`eV$FLH7*+x&g?DAms)J}gTnq7D6Xg~8n!z63=YL{@9;>36kNQcKh za!sN&#~-GH!8T(gPw)jM0u=J9vWK%}Vc2@8(@2h5H_ z{MbGea*45q(B7dy7xPWQO{ofi=L77^^nJe{gU7?=5pLuUdh&nJ|C=<_>U(C*EedR+ zrW*(_&NtkoFYZKwVFlx0U-kbxLH^;w*xn1~|IYs(;(X)#0my8cBsGZtd9(dzhZ2PK zg82XSJW4Jfv3N>`YU6-TaSimw+Z$E`hs{Vf8i5K}tZ^^_hf4FQ6CBZetfKw9B)Rll&gQLLZ* zREzxY_j*K{#6~2dpuk+?sQ<2L?M(AgpNRjI0pSbmM+%+Y{q?pTgFBW26}IYET+1&4 zxz5){7&V&{jMDLTH1NQYsgG)-Tx^{GENKQV$k1;}N(pZ+dU^TAUBJ|70qH<~%TTD5 z$Nm-EmHwC;_qIIs_KZQ=D`oU7cHGiG zC3B3>Qu3hUy*WX)MhO>RuhXOQ7a7|u3Qwz}|nOb5|^Odn`Z}gqOMDzoroZRMI z9aKg#JM!JS*0L*$_nS9cn+udb5(qysa(6ir5OmR-tzj9)VW0-gA(L&rWV9c(Syg8I zx*R5>udb6hkS&zfUm2^scxl|w`I$$-R%=Q$9gxIobWh9nprFX|Z@fAf@J&rEpV4zqB~@aZ??Y>E zvQK#^ABrGe;GmGxcWvoWW%o35#C*TjuuMD3dsbFHG2R@~H%o1q$^{A4>GO5F-p&nu z43;erNB27Yvyl-Ecf|=~joqaFw$SY71s69h-pdagpo#ji42E7h*|uj6+iHa@LS-ri zT7F)c5ENj$`@1MdNS>r%Fj`+C=ZS>%Ua~=}oSX&%F~8Qa$Q5CHsREnlvjOt96sI<) z^S1JORhBbN4Q?--^OI#Cgh=q-axc#@ybE8aip_j+TZ?|N@TFQ9WOzJZPep5{FOztn z2R{|{MG$unGTOIxkHbR9qV#VPel~eMGR{jS=cE%+(cmV+FM7aK05cJpH8TIjF`;uP0l%zJ>@=CTBE-wZq=GM9Q!q#d4m-PqFPU-2<&0|)z zo~3adMaoqD?XEzzk9_u)=sB?$a=?x?BwT2DE?dV&prD6H1S1GkQo1^WN59s4`fxV*sBn=2+krC%y6je^&P1v_S~2SGt9LHgj~&M>P&fp z9PapE&F<*wi~JK?AF^E~jRiEN`Srv|mCie1k@Z0xUk8LfUD!4BJkv3KUa-}gd9BEt z-szrS<38UzQp@p-I?U{96|~>OoN}8LN!w^eXHQNZ(Q*?XVt|E>(AnC|!kt(hm#QcG zFKfV{KM+<~Tcnx8xMQ4pIN@o_#paE ztgy%TjTP_JF8OHv)8T4IzS9S5Y1X`gJc0)o$dYFlvtzt?P-D)otDg~Wlb4$55fQFy z79qEEYzndZwQ_E(*xYF0-_btP7?1`Pct!RvkB)5blTSVHFqsfXs&j;=5HJybyi)YM z*yj6+1>H>~yt@^hxu+N|Az9DA)Y43#?(#HL^%;i1cePw3d)vs0w!d;eYyZ`JGiHN$#~3cKAh*oU zv?C@RQkJIi)3n*k4Q2v{j9?Szy`Cwio(cAdOEe)EhPe1BMGllEvZ0CN~;h~ZKas3#x>}lk!iJ!&{S)R=4 z=sdfoyr^C^j~A%B>&ue-fth_|Mka$z3+zmwkFJZl8^b0BP;`i@OxLE%=XC;!VEIrb&tp2b*zj+`|?njO0;1lvF7K6_Z!Pq z_xqAM2~aA%YazDuoMR8vlu=y?u-1%}<@)0sOLWd!EfwA^wn(;g^gj{xiY0w5VBU2q ztXVzANofvpsPI8`r|Ws&`_Ke^j(~ZG#CD*Xl)4+hYjQGjMX}Iwk~{8Ve#bM0!WSrU z;R=*z;vksi1`RQbPzaNYgmVKa69-D)Y5V1>pNH>M zYd6V}JPOE&gK;pC6>BD@%T}~@_o~oz$qJ>?`G9|7Gw}_7ZGnFrWGRDD3JMLbIoLLI zT28U{(>*OMEs01<3MyC-zIci!x)Typ<5bX&H%7SAp<-?)nm5mtMAYYtz!s+>heRlP zo%y*ZKYQK6!H4lLAj}h)9qQb6(a!J;5vLf^#ON6#+shLzhFB^w?^)T49Kbby6|ofz zB@ha1tnEmMj%2E?4NYCttLL&;G?|aa?~9qeu^6J!z%z>Z6Tb_b>d86KEFB*9U=t}3 zzdOi3QZt=;cV1EEH3p1D5FiH{g?bA^c)f$7_gfL=Hd;(46;Ch`Xc>e!rE(Gz(#&Qj z#R2C&0-M4j0*6@87Q`$5`L(^lb~j=TAD?IXhd-gAp;01we5Vt6C6ZxK(nxp)K8`E? z=8K_VV|`JhZd)PQKGu|9i1&_VsZyfDeS7#-E35N@-Z*~}^fIfpx7Pscux`sDFnd$i z=l4y_ozyj5l@_51ggd@C{ekJ5U=Onidc{K%YFC`I9w!MX&jT#tvdQBGYNS^5{GpRM z`8!6`a&mJC_{9R@u$ATs7XQ^*{>JwQFiYX~y$%ot2w^nT8-G?kV+qO(qN$+4w&P8_ zSd4f*DN9y)pBfwz6IaeAf>N&RX|%+?$-L%ou2mswFvsQbU|a2PsG|Po8n_@wo-DPA ztyv8Y{URloV6KPvN`TKVYS0uM9~bvVokI0zPeABzS=73)H3+?;Blr99dpv-1Xf~|h zxONvgdW*P`jC08P01+y>iyJ9=rB1G^NjUiAU$czF$~C>F)2R?`s5;>fKcI{%>jf z4?w|94fxw+=t?jD--}wnMgYq>{s;2-H>}9&Mu=(^l<6(HXbgt@t5NqKgyG=$ctKEC z<>$ZE-~cJZ%L8^&R5EO|jN&y*^`}B|tSiFZ#7nT~)DVmwzqTU6)?+tdN{sWH_o(9Z z_n)8NwMrD_)!5#x7Nn=2l>Qbl_z-sl@_%?b%{MnUFV>%f`ADXDdk6W_($We9GE#0H zoV;Ej=M(?fXmdt5Qf6r)eRHhbThS+m&5ZMo3}hs=CUGT~tt&r=z(F~I2UPvO?sFv< z0BH+3o;=aG#rYL;uLqL*%bp{k1l<0E&m&QQLgAP+vqZrGM|; zKX*CV*AL!odin>f-EVpg_akRQEg`#zZ~D*n?K)c2Z6S4|m~QPi%n84l1CvgSi;naI zNqsSLc?p>GQ8SagVLaJ_#J%BY=xMk!iQD6e{o% zg;C87YN-ITay332LY&hVr1@&HNa^%P=+XzEHst05F#@$QEq>ZaBSw*AXlP zN7$SzE3SDoyipATgW$0f0(*0RHcwL7bB>!mS^`=t5SM3MLPJ};+Ixqs`~C@yl=Q-6 z8F*qe4cyg|`jkDD>zxZzqYan`+&eoMJkP{vZ`V)yWS%4yAlQEJ-Us);QwY`(cK@_E4Nm0Jdk}UaNv2^_7?GqawgP^j`##*U?!g_ z=;@68K6aMt=Lg`pa@#$Y?!ztbw?`IKaCL^b+qkkme-+yZ*+B_0ygBN|En|a?p!RF0 z`Vx>P^gnTiJ;i%dZ38FU0TH|`r0cMs-^MSrOBI%ONQ1AKyb)E87Ix&L@LwV*(C~Nj z2YSPcwk$$tuAhQIAF!J+W5WQNV7=|?>92YT^Dw1qvG%X8oG>zAgJVOavy@L_V90Ik znB{^Iy$`&gTBpCmpnn(`ndeE-vTK2t`EO2|FVmkoovu5pn%0`Fwl=xEFt0Dw1L0so z2B^M1C2?(noT_z+CT=f=#G}?4q7Y$n0za3m8?k3`eH~9N?T^AAoZxWn8CpO=ki;H1 zq)fGbz0xmBr{iZ6R8V21!eS0`c7N_E4xrZ9sQP^VdsRb-WD5QI&okv;=MFZ|7Z*I8 zRUsjsh{51$yEy~C0gawpj9{gga~Di5dxdk$XtyfO=KC0k&Wrmh|LE+`%d@s!rW__E zrfhDE$OGd8JE=^n-Tl+R5e)_pTc^a;X7~JR%?UYX9RQu)iEb9znM6(Q9b3|A%l~eU z#&E89<-zUc0M3lnjXxNA9)z96;s=Ec-hqQ-og6mYG!P&5h+_QkzKW=L`U^cH*?Oz4 zkRjJ>r2!1k*6XDW3KxClQ5eaVdrVSH@Z2+XPw(O<1W-oASLn?>Gyi){Bd`2cJIPT} z4s5fvwQG$ELf4#|q&M(3ReHq?xN^bp-p6)VfE-j@!T)~&diXJY`#arh0enM598g^i zx9d?gadVi}M!OqsV^cTa85ohHaf0X!+tE`bgC{8aTl?KYwiiD&>-+-y-`I{8*37ne?-gS9p37?Qq{8S{T+1P?gBC470rrn8E6<=o8TL{IO zc2w*NTMbepHt@nE>a>~e?qD9lQ^bXFJNCyWDLazhrBw}IFJ&c^_(ss8-jqc#i+m<6 z({$BIsz%b2EAEFD8A@bNGFvecd=ob~JT%u=H_N!b?UMF;)aqrSV;CWK7AVdZ^k^)Kc4xN@~hN6wEEgoeMRM0n` zIG`ar43w0|tGbTDt#gDKvGuR2EVuvnEG8D(wDjLwDt+MZAlL}lXwHw&5$RC;@|7=n z(MT~>-$G5K#y)%CgZ3uj+>_(+Iy6V81#d9z`x64b<$lBS1xdG(8UUa{pu3C{I5j%~ zH>Yks3+2oDv<(`Kdu^gt!kV}aRrCJqTgS25HKXeH%Q$d4F4ufCDn6pE1BOBdaaPZ# ze0W6e zseSvD{-AxPgCwJ)tLx9Xwk&@kzv1poci*EEO>>>T^t|=M2yPXV0xmNy!us{NbiANH zK#8uIKwxw^Tyr5E4qu{T*?o5cW;rx)yX{i*SPclSn$+m7-zGj6|4x9lplud4J+%o% z#VcD|1C(VS2d9pAz;R(aSY_NuYArizEnOlYs9E86JJ@?7(58u{HwJzp|7Mz@wniAr zPLKo$w}LA{?{eACQ$$wM3T68{c}H85U8UPu*Mv;RpC#nr}7o?ax>l$0WMv5*Qv zHV$!m{R7k}sb_Wun#A3;K%{la&pUA3y`p~;snY>qXA%tw z`mf)=e^eOQL;w>QOf2WYUjmqatYtD8AjqUkPyLM&`KU@Zwc)dZ0O=B2i@(xC|5!L3 z48ViZRu@X-VG|Hk>q4h=bYSXwu4-mis#ui&s8xmp@J|;08pJ4ncJTi9rN|VWhN{{o9w_E5pV#{n&ivSNl(2 zx-n!p#4w~CVl6<~{l8HSOorE#Z)VNSj|L+Z7;*Hup>q-sf6ZzKj2Bb6vC19kX1Ju= zCxku5`B%)trAmVY=ZDz`r``SixMr^Zp^vaTeN<(r=;%Bh^m~KVGc-(0{5>uV4Dv3o z&3hL}V$VA?_&Ty$`r2U*&}x@kq0n1fdc_sw1mvKa6r3T1YyhJqC8YRk`o&xk@dpd< zx~A)~7>U9rHvl-9M>U+`19^04^J;POaA|da!j|bCV1xUE zXySfNnjWwAl2Gr7EEr@Y(Y6(rJX<`1ztla^%goen=@|wbs61iaol9nO!hrNrU_vqP~(E3GIQZx=v|O)VuIG(de>y#6%%d3D!-R zPD*oV$w@^MD(bCS12>Yhm(hfu7dcN%zw-%n1CUC|z4?kl{ZJ#XCndLl4V_7yWnlOW zSKm@PoA$w$x8wUtVg1(M@i{l=2k5*?gw)eB(4KfBaB|kl^qF&UO-qjr_0BZ!i9E0C z2S^)HDbeACD-&IVQoZ)8WOQ8oe|oR{Y5v=LwY%g$K(sR;Ul_OM3WT2ZlL0hO-=GwZ zmC1S_YocLijI+M4$+^2bGj*bSqDKK7b=v5usvt@ym?HDV9yt24_*m&WAtTurIuJjK zaGnj|k<))(E?ZM-Vh|&D5X-;;L(t^~e!s%phNqi!86|u9ZpM&J3OdoN^Q8In!O{Uo z&aw7qT++_Q8cH@C8@=t?QSCD^4goO%Z?ahuCs44owEt-B%nvJ<9)Vp0{oMCRE?nXt zK%s&WJe%E}@rzpul~f;aRF_;axWykJsPL_9w1^@XVc<=GgI%XP>&C#_JgsRDZtH076}0e z8L5f>G;-p}E{$J@2dGti&jA+0^J}ydvAF=tBQs=Wpgm}Je7o2>i={i5#!2+~(6*83 zS7U0;1cQG6{<*Z>-Tm!}`xR0cSW>SWOGRi^-wLA?I7H;Y!c>=E+`FYw8pz>%8sXQ` z!bN80C1!4FW$}kK42NWS#6fKWq-92asHfbH%vCmaegJosOS00wx~BAXD!!QB1Tgrd2m0#O-4e&MAU)OtzKP@c*JRh8T5AG! zS~pamM5-AHB!F!(Mbc4#5C}+#g{7-qn^%p^5!*&hx#7){$i@ARv}Cpn94Pu{BS2TY zFrI@aUZ|Xjz=O$C9P-NC&+4+BD7MCQbAzbA{!1JVa3ROd^jde;@e5GrtL=Z(hI>rR z=@f+IG>g=nPZLPIU+9@$1#8c^=x=>JE)IN$#gp5Gn9F{|Acs)Ty3q)d9KRNtq=!0F z;|<14x%SBf+|Bwed77f|aM>a>M_-`vj8rE; z00Lkidvp?gQ?vsFsaaXd6o~CYdRN^B(AI%*APWEDaOv7BWO(VRRKKrCJXD-j){(`| zen}f4{ek0i*f;R5_*_A_7t0PKJV)M3lV!e@xkhz1%%pcVfP2vQB(VpsL6;aHHf5Vk zj176;>^~foH(s76RWEbeKpAUR4esVu*yEI++jgDo{H@b}9P#INcv?LYVZ9p$rU@0;*nu6Ki?vHvW zdzJjs^pMzEZZ@l|i+z4xA0Vwzk>{i0^(gG$<9w1OCx=SA$5=g{lf9eH?HTXE!diD% zbhe6P4vK(QZk#tZQ)>$hi|CmQ`ztwmli{V|AN&0~5$UEvf^#;qi=?L7FaM(Nd&yDp z>Et{pS=dji^A$cPjcpWdY2|WGgK~IggOl*eHa3>qht16PWhbd(X^$}%vr)oa`iH}x zwmwU*>(5W?COygM{!W@hDD@xUZ`{xDFIc32PqN^MLGi%n5N4&f;gyHeu_0iojau_% zw!XXO6+2Y^9+H=uVk7G}GC1uvD9YTRLpW}>{zY7U)ju?fEyZX!qO$Yn0%`2!d_%dD z`JBisa`O*}1Z3*YF!NdiJOL+rBaw$_+_CKO%w`>NK$C?&z|`(2YjTvJ@pR+AwFiqt z{oH=lD2k(Asynn;=;BCAH{faR zH?6Z2L40n{{50S1I2+(f&sIhM95uu*5(Jt9Jgo(Xbdt`CLY2Y$yn&k|{o-4Ps_Oo! zP%q|GZYm9k&EzUueVU#DtKfu8Y#0gOzLBx>6G7BhOGQ@xjJ_b_R1|a z%~b|c#S)QWBp3Z4r-asQv>4xg}6?LUt|G8l(Xw&Sh9N$M=rSYQj*fAIG!+@1I zy{Fc+lB93kSUoICrkv0L(=q`t7Z7R5m#>5{-qbZK@t_m8dA6@vDEZ zS5y5k!?I(`m_2ST_~N_uqRj-*&r6VU2=6-7+~IE(u0GvrCxpczejn)Vo}UAuJ2ITY z=U@mM8`HKhEHodMKv`LI@Ia@2x%xrD*M2h}#TH)nW`*CD$|Sf@EL+z=$0g7mUy5&B zn2RpBA{7GkXlZ@5J2XttGb`uWF_GWIm-0^);FtM-Yc(|R!S(t+7Js*4@%@G^R?I*p z)Ev&8!bi|wFHQ=Mf<4-kf*T=>9+cf*i5g;Kzz<7@jnb2mS-@W)1VKF~L)u{#>-$Dr zz}a_hgU_#C39nL)| zk^I`Y4*L<^<7iFLF9wWI$}cvrw=X++Fn`LVH^@eP889^s_gV)qfV53*U{CAcwe}x& zhO9_nREeBO$8w)a7E%ULe}bhTOw>phVM+KQ1OG<9@*#w2v^ zs#!1M?=CUGzXRSAiO%7U`cBIKKrWlK-?`y-Xxon3{?}y1NkKps+UuXryNW$KaxIQj$b8Fb=lx#!W z6`F~y=)KtCz0GrlTXWg0t18aq&q zZp(^~WpiS!Ulx1`$9JY@f#h4C;ukB7!Ja&DYG!IC?c7x5=mwu1U3XX7Y3hIQre}-8 zBB6SRV(@HnWpR=%SjnwbU`6sQ4$EGgD8k&mNlcctW`!HLjTK_fEDi(TY8V$3Z~u49 zC+Zi00JkMySWyyl*;*6A5(|rvxTv6cr-@SwZ>gZj=!JE)002x?H8QqSYt~vOrgOW= zeC0%jiGZoSd3J&nxGVFQ5MLEl>wh(n-tNse0tglTA(sd=E+_jkH)QEY?W1@&FYnKG zY~vKHA=v{1B%kq~E|BC8mb+zxQBmgowNA781|=pGAR!+Qm`ysQaMTZO`Ay_vYAB8S zpamEggnOB<);PcOfB&^SA`!O64ej`l%25S(Akxc>n!RsrvRQ&etK;{HVBt(@f$G!D6?dp0uT+NAuh}zm$PLEJw@fzqP?g*w5{7w0T}rb<*neMJIt}Wo8sFhLjQ+ zEP*ZcZaB#+Q-4HkJU1!?AyAu}na)=pTE4ka(qcKP_PrWppQxPcC8Fa{JMFIy?Pjc; z=|_lsb)M2;8Xq9g8={?ctM;Bp$cf4ROb0(*t^FXAB+n?g!1dIl;r8wjp&9xkG_tEz z7J9FomdL!NC7?-`_Mvp>-sr|al%1j0wYWlb$K86f_H=lLH)EuJh~aOfE4MM&VR%q< zay*EmqM^MxU0N?71!~+)z`G$DWwnQMIak4xSZ!_qv#69}bg~?w9?l=js&)0kZN_GU zboKe2<1*CY$Cg1Q=>{d2cP8H`VzT)VjlTa|8 zc+?5bCySI0YL{*6(i&h(W>2G_Ei2_(KU7y8d;W;;*xjLz`vH*ny{oplMOn+OTQ?*Q z_&Kb)(no$L;R5+VT}@I)1X*Ryx*w&o-s@&HYHxH8}Zi-=V2%~{sQ1Gl8WI?D$7I|5S>0haG{XkpEhO`28^cJ zr?fhIHj6FI#n%L)U#i^a7leYs{Cp+lKV$}guTuW%8!+{sy#UOa@bNDOvbsO#5yKGTjISW(+^zS?F$F295uIR_9 zi7bAsJNI;YxY|JoFxgv^vcpf@pOxJ+RY=SYE3v#9+hZ}s{FwSZhBQdJO$mpO{S@d? zjga}xGK5;N?w6n^cK=Ohgw`D8=k3j8C2MTIcY}NBX8N3M*~{~@P#W6d=X_W0R+B@j zZcxrNSFmr41(QMF1o%C`6Tkc-+1j@>Ht^HzulKHncz{&SvsHofq8Q{M1!zoyZ}C-F4I~E-K}|=Q+v_RxdDNc04dQg zTj`wJ!OhuJ-`i zzsK+b_YTxLIQq;614Dndfdd%`J)pYMu)W)2&)jH84FE~S$CV?P%fjb2QYU=@%#R0f zgt&fFSgh|rHAMKX%V_>Jm-p)VFF{P#Z;alFyMnR?+kR2S%ns9KXua!jnWcIot zMkpj#tc>tgK%i))l-NzBzIW*Mq;96pW5-^JjZOD95Mj>r;`|zSAb~%Tr4DFq@7I0u zGMOA71Q_}`)Dj`_4{DfzV)OO16zyGS1CfILIyFv92<-}gu=o~hDhd`h{>hUMJ11nW}OS%5mK z$43Z@I9J4B;LjPlB5B5dG&55|eRDoBe_=Bya}XlMm9v}?aHVowJYv;{=&+zvUAOPmbKT- zV`9O7G}QXy-J$3LK0GRWC^;M29#z+jP5>(2n^rR`oh99*he7IF|Q%vuKidjLSf z%?tA=h=Ax^dRDg-ij0#$m^bE7wZj^i>_u(HR}`JXZ>RmuzUt3SizeH{Q(tL(FrM?; zJzLRad-@8u9gGNz=|?<42)CXaQe@3Shckon=frS>(D}&uf26A;lF1nK+`C4XG zQGJ1YAvPhQpp@nGUt0SgPsjj81T5|EQ*-Mx9_H!kYn+@3%@C<(S~A#?z=pUnot4pY z!K-eQ-s1WZAIlS_FPrVBbCBSOC?<85tk$;JUZEBNRA zAm)xouNN{0=nnuW6x4P*(jnGO+Ri)8ml5LAr|IYPo7qKPHUETFFG!@bVeTS$5ES25 zeXvI7oIl>H&J~jS)X9-G3Xi##4?Fxsrx00Lk69FEib>e1e(*M-fcg0mkLZR1o_||H zyqT0oSbe8MvZSQZ-%${#@6d}`UgwWy(FJ05Ae_*eEhlQQ7zn7H3VQZB&>gk6ITvouz8%2Y0`_y13qYn_gY# z;v}JP0&H6ybsrzV58r#tPU+6*1LuqUe0?%dr}O%2?cz?99L)|6>8Q^uOmK(B%tK*pc znx?v@H#oc#O|C4K2xMoacllSxU@0r`1r>=0M zqu^Jqc!*~sWkD(^AfiE_Ru2h}FQzhx^b22|;|ow&44wRD3b_Mcd6Y7!j@M3*w~2?~ zlTeTsM5(49jfX~vM2e_}w2mr661|SlhxGV@ZcWJ#4o)YQSI1vLARR=LVlFGXqPZ+8 z8LzkHjW<9-8R&DZpO=TrLWJBfV1;1XXD){f z;*O_<(GMA|tIO(ySKQ1teB*IBeHwmKN{Ha1k9&!llL}^zs0vW{ZPWO`{*$0z^qrj&+(~re&eteM+(|Z&tp3rAVUQS?KWy8RXrgfo;MoND#^`_n zW4Ed-H#pnw*If~5u#;PdA^+JZ_8%rnr!=rQOoR(&>CJioGsBJyTvlFAtJ51au&v@8 z{a>IRpay3V_vbn(I*b3;>wgdm7hoS?9&BAs1OC5@gMScP0M9Ln4tt1W`~u%!Qv`r@ zMdAXq&&W;jJ;J|QLOx3KTp=&~e{VKR64+v$?{_uHuHOFPOi8oCe`ucGf!y5Z4#Y#F zqdvjGm%QA4q@to)JK11jj~uX|o=ydI>f~XsHMBcc8fHU}XWp+xa>X+K%8LBTLT*A7 zJnt+O3A%a~P#BhMPVDl~$Px+5gaRM}o7(|Wr_KAnrsvQ{JTTX`w2) zrIUS81qW9<4JtUw_LPyGXwq`B=?U*Uhxfw_tB^{kJ_yM1@YP|rV#RxPpZrh; zv(lwRX28%R*DAwlBDr&Ag!VTyxtz6Evq}B*ds~l)KSq-OaU`+;QD`_?KrIof{`@Vp zv;`aph?jk>gAkC(IChAyn@;u;-2iENxDTaiy~QoE9ngWY?W-(BQ@%e)oO4w-1O&4b z!ZN+4RGCm}uU^O^1)#OH^d2UGq0|?WJGVhy?KpPP-=6JUvxUdVQgcTvCwdA~J4+&2 zQLR(M&8#dAQ>b;o;CLY5_(f+NSB&_>e&3jxxw<0N$kb|`YKO8?Gfkz4;_-(dhOe9C zBhhv%q<0s0`b=JoB>;E^@_raNhwu$&8Pi-e++%L1YSY;|wpj-c3jVP4^GZP%HL|Z~ zp1i&}vzel;qr5##8Qd$>E%A#B^Td*yRi$TAIb*LDAA7_V8uLG=*>0Wz-|+M{!K3-6 zy8_Yf`fF5GH+1J;lqxkCkOx2=f`GcVwrUbm+Tlkfr-$~|QKXyM)3#_vK<-tK|3h+K zSJyJ;vSR5$^9_i)69CE|+`r z=t$$%asZCOA2_$zhRq`Eq?CkYu5f_D6hQWwH$$i^H!DcmEKo*H)t+x2=8T9FQ82?56KiQaB0C$B+JTcF$;!83I(S7_sEKvUY;9mY%k@gz#V^rYPA zD)!}>N_vTolpstzSfm5eXt>ORcF#wk6OXv~v|zQ% z4WzMG%3{NC!xJsBgP?uPwy z?%WEww$%xq)^b$;;oP+97#yH+2f)|tx7JOlnXsPY0g#HT5MfMeJ|s?n=}cG9>U&#n zk7=R-c1Z`lCEzQb7r^ zAF}=+5QVb8-uA%CVL;-$0Kd-Ws%AC7%SyxeqbCZ)vzRvTzZG^e7qNHX4)Yb00q~_7 zq!X?uFeX3*dUhD1<1~Zk0A@WfJrLAR+0em-^)ARBTe%I`8iguL<%D?3=D}+AEaN`3 zk?KT^YF@p54}rPa0gI>6JTTuEsKt{V`qt%szCv~Z2yGp&hYBhjy4vN}1~V-+>=>6( zq3M0=valqCt|-F8ZF#6Hq)!x8N2I|Wvg7GJF7z(YbA+|2mCl>??FH3Af@wkqX@|Rs z?q03umJe9DGux4FdDW$BdZn~*5GHSAM{a@(02pa)45&^$9vE74J2ijT=*T`+6+bE3 zdn})mn{_U(*0J(%2eYZQ(bh8aYOIjtCA_p$2^c8DYC;`SgqPRkmF2C=oI|h=WRgGF zSaAo|yxa(yP15`5@OG@G>a_i6-xCL0RrLrH)P8%e#^|BT$-gw%m?#-0-5u7DlLSPX zHfsGUw*n97Ah#=uOwNSS=3?=M%91TmpTk4ZKBdv6l96}d{JO(6(BQ0loitUO!Vmn& zeP^j61%gln@jcv>u>(3I?XB+E!R-u>FijXknW9uFyAgJ@gx*^5;F)VFB-RsCS|_|L zYD)lGpn*H}{Ul_xH>|Zn7UKI=Yn$N}ksbsdFEYaA#^T+^4Nv(`=pJp(XTwx_~<=C=6$z`bF zuUUyADi85BY7c1uIiN<5FQ8(;_$^2i?%AUbghSOuTXy3KVC3{~e9%=-0QCQvG#n;+ zp{syyVYug$T4ZSZj_p?h*7#y`5cE{s7`~R5wn81jAP&*T5*BNk@?fuy{Lll*4$Stq3edq+a6`jKcJmEo6E< zWFx%x_3+5!m889tQ&0QTT%S$67kA`4w=USPn^QHq*wfl=eZf?1hVX_&(Q*0(Z;o<8 zCO>PvgYq@Yp|Rrl;ig~Q9~fGhw4K1={eob9wFX?Z^9AS4!yZ_mLL;1i`+BzJ*68t= zTtsQ{X6XPGxe8SVnB~9tCp>Jc+RKBiuEYBsGkT{pmdmIFBECq%?Jmai%si?SF-Z}g z?s#%k`gbPgxgu{-&~I89NxC+J#)KhK1Vs^$B`zAc&ICz;520$#3?{`4c5nbJu%bU(gybV#lbeSf<6%ODSqY{Y!XQ^6YBYx0Ikan@P&PBomYlgSfa+aRGkx9<)uN9qdu$M zR`(QA2zQr;N~$Xxy`AZOnpq?~KAEg&AEDAnHUhT+XES%x_!c6x3V1?bjb;PV9B4L% zZ_@<(n;*W(Y2B?)gepRC!pK8{iS{Dr(8;yDE^v=_w}K@XAuJb54rZ=~3?^Vx60&D? z65-)DgVEb^CUWrKLTQ;I)rh()IAOoYX<(y-V{!ebA|*nUg@P||nlg8(xk*cbg7;km zy8^5e-G6r0PETJy(M{iF8Xn#Qi2PoIXHgSq(~VqOJJp3Ms?ulA=OOpL2L%I=O>G19 z_A%!Q3T*bqD$Q+uAe2w&?^btddeC(RWPerQcCJ-n@JP3{X=n)%09`_=c}B_kp_Es# zDC1%ABG)h}EJlK>UEcMRz_dT&#nXJwDsAsPKzg= z-{+sYR(+3^78+gE57zc+;n(3C&d#ce)RbTFO>-hb@1ix}t_VZ@c`t{++*RuROw(Dd zo;~l*fFwfjPj?=8RT9!{zu}VEoVCD|&Bf=@1#8FsMkq-Pl3jfQ~Rc87ibj1ZEO z#W%!Ks6S-A{c|sm6o4o;|0o)*I&j|sC->HU= zaCmbmb9IXM&Z~ri>f5QyxtfaaMQ~v8YBBQ`@1u{eLF^Ja2k81)?llEe*FT{^By(1z zu*0-c3+f(l1;Vt(ITvoLSb7Q`aRnAsVH)7xv5$fDPSj}>US*}RK)}#jKcy_AU$0U( z^omzYug622o##TIIZ6wwtKux+EzsxbJr$GU9K5>3!#I(EDb9uK&CnC$z)kVw;ut&GL{<{1nsc(ZhtJ0ra=UT<^J^fFJ=CVCYDGM`TZZ5axVIK8?cG;;5fC}590V`!cmAe25i z=k~2lslT$ItZ_PU9GKi&1P?bAqLhxlppmaOW)39`*(#=ZET=syRHzR(TmEQlvLq{P zy0^pr`H4U=|4ZBAln3&rRB5DyPK!f5rVBR6hjF(86N!t?SP?oh{Enn=md54r5Ne7T<2%B zPsxok;|V6WC(lQWm+KRjtpU%az(eT1ZeYPSI>6>760nPtLSb2AXi2d*wv){(g5#ss zo#!VB71bhCpHRYft(-l32$|2uRpbrEe9X9X_;QJTJ_WGKCVdLHn~4kL%NL$VaQ=c? zQuzW$1_8krX|Y&k)9xwBm~2n}jNxexb`@o&mj1E<-jSVtA-G#v@eM_7A_^lMIqf9T zeSKmEA-%Mshn9-_MStV|^x(PUmWyGHj5KAxZpAtM`Zt25Zvi!Qr+XC+ExfWIfzZb> z-EYekt@4R1xRLtv7=8whK_Nl@36(BkV8DN}N_wDb-u|ZDOJX`(m63sbGF|3@#Kpin zLk-c2ALIiHt#09!xONp&J^UR-t7#It82f3mxiD=BuwcYq_lII^%P@<=D zwlzkn77^+~wY9x?AXy7>hB0v{v*13%-Z$2%SP{|vl}=`A;?SedRehXtrqzC?z{&D_ z@~&oYxET&k{CCtzeG%$f4UyI zluc))q>fAXM{))^hT(P<+86>)xUU_uX_?!7?&c%JYzi*POG6;zIAg(Q$09C*2Tt%= zc;p~c6tptGD#bW?-Nbav3s*Y*x>CYeau#DwRTaz0x>3oEV78$9+K&F5nBp^Qxj*Ki z*I(8p`vMkHNriSOCj|fn1Rs+zuOeVuF-waRS$)&u1{zt zUp!B7aIW{>{hFB~PJSiU%)3xsBkDmdyg=+3WNO%O?B zYzb=rZWj!^XxM(zo0zvRONXQ&!7KQJMy70$bU9+N=vcG&La>|+uk-EAJma~W`T&DV zoJ;vEX1;jTY6Di$cEhC6ib-PhXIxnq*_}vjfKU&w?3@+IJpPb7n5(ocP;nMfQt1ZO(DMtpCkORb&@giDrSiDnG;lq70Jx}*j|3m7V@Q9fZ4ZlE>_#OV&E5dLVm@^u zxc%amC6=S_OkyK4{bNJ@trXhe$R!aS9B<#1kO zztSyo{fnIc7*!MVW%$PRD$T(f+kJwHg-MFSZ4!rG$plEYF%}>&WLCUw^AhLiNo|Ba zLg)DE+YqzH)#>t6>STh+^FEjzNlWR7J)Vi6N8EJ!GQ-p(Q}p*^>YV*gn($v>S4zOS zGIn8nud_yg0U^(f*Pp{cELhfuq-As6{J*~?-Q1yat?8FQ;z#1p43jk%yQ&<0uW5VO z4t2O5V_La6njv7i#{9?4;Nw9nmAe`hP@RmiGF|D^L8HI;c5am(cJQCOUr8ryVTZa- z6$La}u+3Ij2Oq1XUl)uBO7|sHs#tomxku(nmba>MR=?kJoYn|>R*hL8@~0msTg*k% z-PMVvDXq9io$qx-&w_=mQMoKc78D%_h+}S)`@1t4JVUpAE1>qpu@Po{Zjt{Smn93% zPi^%%rZathsPV_ec+Y7Gu}2-KIxg=i>Ee}SB8A*UX)6+{M%xzd$upoU+zl~8nadv3 ziL01vCNaShf-pZ#jORm=f++VPd9v5yUkYUDtycmrwf>MYyQeHe8G2~M^ z7>&~b7VGsg{vLAl;kgH%5fBdGTpmu-rCSFs)5Ve~Y&XFOJuC3HgleSYu{{~=LtnA4 zWvF1>M>bBPcV4hXQi|W)Jx>zf3PpNKs5WIM8Z3s`)^Nx1uGZ9MC}~TOI0H0ZtJ@df zvaMcQ&d$LJ!RDCWA<{r*=;ZL+#-BuSa}EnMy+geR+TqtrfRl&CW5lF6gDWijk`z>( z>qii_)Txr)MVU1N8T;8hoC3`y-P+C7XKls7rEyKRQ#}_msf-X1DVIv7a3IzX-Qr>R zxPBU+*?^H28%x38%H}fEp$8{?n~w~t6En?$Uz^A}JC_Wnc`Yg$*Op9=Gi+WE2uEK^ zqSZA6SOe#mK}bpeeJN}P8KzLGqnNGoSl{(WpDuYp0L(0}_ZO`(UuXakWoI-##$;N{ z^*GBt-7JO1U|dFa{GrrrbJb&3+8Pbgmv40ABOpmKWH8&#H(gkzwWLzIYk_HEp}K`< zBS;yo(ziEXwC@2QFK$uvtag8@i{%(wyvb)L%^6-#6|7BgPpM-!H3)tCvn%P)b`mVy z9EjiMw7><4pys-;B(wP&{DHp!Zka|~uL-@$VXSd~vBKflaAYJ@{AM_w|Z2 zt_@~k=L9N}%v;q{Wc4fba$ zCm0S$7c8lb$-zE4jI>h30}^?H^KsWLfx zg16AF1**Y=q1msBcXp6c z8%>3vs(j`R{vIEjeJb3#H>{q`-CZY1)RHey+B~P=z>pqjBMnSmeVA4!K7&V}f~znk zf}d>Rk~q$xAq^ObgA-OOPPJI17l)R)Wh+64dM@C~squ`mx0Bc8@!no3z zAeYh5{BLFQmm>J|1$3rqF=2M!RRVOZY(mv|V%|<-%1AR5%w;aJ$$YIq4^Wk+PXbYD zKNJb?@in+^+1e&wu}$icKxS^(N_w-=AG7sUu1^juBfs6VFx07p9g_(LeEA8%+($OS zai4~Dn4oLXNl9x}#%ji!MGtmZtEbKB$ylbi=B`j?wzn3d3G&EPPM?Ilj|pju1!0SM z_Y+W2$G{C*X}%zr;tJ3aBdHfMgV5$YYfNi6S`qwAC>v!%Y?m!vX8fIc^*;w)9_VBWLoveOEpoLVS=lo&W1?B{W z$qRln42Nrd-FnEyvh&q}{6IiS8kS`2i+{88JSQ-%%(JR&(n-`Z_9Qx>Y^YM_{u!o2 zo37`Y=&XD1QzK1r}*yC6q82iQm3 zxJ!3-rE5gKRADKSs`^ZvX^rm_0rwW%pLdENc-$a3kZw_6k=S2HlI$8O5{b6r(Ow1q zQZXn-p8FXdWMS~@L}YU%^0gkXPlP4iu794s+{GvW0CnsM^64KSM5xd!CRBhrKV^Jp zit&$12Mkv#1|*~pzLfCsih0;`}8wxH?7G3U$6XGB6(H={?hsI#mebl z2+cP)}=n#rtdpyRjo%y(#FC z(5V!#DRkSNCFAP=&goO8XAPbHFk%<>TfMppr*W{jhhy0}-=hdpnM-KO{7u%pLbFD^ z)d2Dv>w=#Kf)1Amw5)<8dKUDbYI9e8KP!_#?#O~1{F z+uoZ(wL$*H-OzbtE#O+P(!qqKw?{Ypcsj%NI)nVqxzVy}l@&ihVJXX%q9r;&H7ZYR zq}4@jYc{Va>yzk=y^_8>WpYrB ze^Iw!wvS<`yx)M)_1!U4*}Sw>0)sLCAaxGw^k8+Wb0v^z)kyIh8fNWzSARkJeND~Y z$gBS6FuiBA8%IN~iln+(fz=-r3)(+S__G92>2i zguJ@L>V}wl#*{YRGpzO4`+P-yV<$Gi@x4F!tI}ru_lrlqlFy3Y3!ppGuZ<_?o_0=aOq~?^(IK&`(8tZn04DtXQR5F%VwLs5D>q|FHL- zQBf^jn6M&9k|;qyf&zjdAV@}%NP{3rl4K<3oTGq}Bu6FZ+~k}Z1c{O}O%o)CCdY2V z9PYh(eea$5*7|16TJvMxU$)e#s&lG#?b`c!cI`4$snHiZIZ2ob?v_44jj68JT`$M{ z1ol|QQYi#ue|UMdy!gaHa5OxjVYE*_^0lzC1g$%hQeP>5!}8JVoK*fYWqXzBdPDP~ zFp4R~V!g;y2Htocwx8~{PX?@DD;&|rcw!eKLp6*(o znR4NzkUQKcv-95vBTQIYY_DHkG;miL3sa5^_hwdlKu!=PGNP#j-aJyl`^3N$>T$h8o8&(8|FH{Psbj>tc_I$agaRT$kC3b!$gSd zMA?{e=xbB=A6Cah-6hj^c&b)5l$}4`qF~#(42-oE4a2^y?QlMdM>dyH?~v;S2)mbG zY=P2tCdM47csg+tu54{wg zNDNo0@0%E+CJk#CM>qOPq4!*2erX+a@?nnbqFpYBI<_FRP-D)NXL>7r#A3dT4Qbg* zos8Hv4-iT@XyDmz-LW{e^aJ~1zcx9PsqoW4=D(b(D7ToSa8p0=rd)8QfO==)CFO@n z#oktiqmn)~FO|D{g~)9Pm^@Vlo#}>ho74}b#BUo5?g;d78(DYNq+&&^IiCf1dl^yy zej9xo8i$*pTcabdF`IM_fJ`P>nl-%tZa3$j!%KP5L-r9j<_vUt>*u!2_z^|?VPIq` za-UdjJk6{B>7oLw%}|cvGjsWpFqtGyL5S9;b7U_pU`_3l%Id}{$_ds(~ac8pS5TQkSKj;ah z*80Jft*kNBdBUyQ3#cRY=(q42fL^MfEA zuUO`^^iXojy^CnMDPkROL$Ph|mf1Dv0Dzg@bsrIwy?0m#pQ{PSd*b1^ zI~Xb?Kcp13o_b-*5^lEYceDO+GGgJwu1sBt66)pYWgMHu_XApR>ujjjY}l_VQej-cfM%$rub=jl5D9r9^vr zcvLwxybb&9cwphg;v&{eHVm}3ZNrtI!dDBPcJ>(1|n6)=v|cf zc1pFj;w~YltKFAnnHS%8c$Z-&LF6(CZvs&l*bM8WHl8*kyv>XFC3yZ$F7d@-N6GOMhpX3L$6(1s4E)oW+R zt5l_;NHU=kgVai4dpv=S?4-?m=G38#YZtI=q4xx5mrExdX9Tz0bv#9QTMG!&aqIT= zqxJFI^B~5w0>^z7=YbJseP+{z$miQpnXG#<@S&1I?@^2oQmn7cYrI#^y!3qTZFqFD{_y z&M^h`)I=@kAW-QQg#Gvfgzd|@HsbCsjpT(z;(4s1xF5)5>N5Uq^>$+teWC#^OMR(! zS?5UII`DlaSIX~bHhqpJ{TeE*pT8xfqzYD=C27Fh8}C_0|J*Rl%A29}BKW~}+ezDY zj@$`Gf`9oi8VBbQ-BgDDT5eyR_40If5|UdH^Cdtwsn@=n`3K!pZ#f-mZSg-LobE4s zng0JJoR)I5z)3v+n}pMul|NXczJsamhUU}hwui&(sGTsi!k!|v2)IOu$>B@<7Wpge zyDfuW3HuRwoa<8@ayP_|VufFbi~6h$0U1MAP`wPJ)oRKid#W%RyzY*%?yKaq3nx&} z`PkT=?rG8Y_iAU~##Xzx=N*D}D zV#msCuh5Lx;aOWPfV4;LF-bdxyc0BjaOY|-HE*;L@mzUTN#9YQ6ag_I$fj~%4)hu- z*|?(Gtqd|0sD3`_slU(0mB?KtRtyoESPNdO<^(TIHtg8(F>Y6)Ep|-N@PHS=(yUdV z<~$iRxfF!Gz0QcKTWSxZ!`o;jNUSL^39ZuJ%MqatMU}(Dc^lumTa^?O5Hf**3qEJG z?U5BU^J(?ADduRqnycs~@Do-NP{C zIx!1SeX{2ry~2CO2!LB7Hagsdc{?dhX;m6ps|!L48VnM#x3a?fPnZW$p+|4MOFAyI zb7+ndT`Q=+u$%7^3H$yil)jB1Aa31n3PSL0ZsrRO721_;ZN_baS3#wye5?<{<9A(c zSo|bZ)i5=b3%GjE1g0SKc)!3C9}l$s+0d1S-u{xo#(WK*cFz=Q9(Lor<~TLVqfS(4 zA?lN|Y5Q=0?r~UzOhWVlylP*q@#-Svc^7$l+N3{7&gA7sJB>

Urg`*_tn@Jgq zQs6cZ(c^h^^?lLVT=`O1WEXUp^Ic;-)fu3n!f{<^U`kBh{u_-5$Nr;z;;2(v;)~Zm zo;FKeIKeIUmLA8!qpWU=^X%p`A+=o6aXe4oX*@T5Q`^m#2?|JMOJpBmz=!=nd5kbp zQ&doQ+B7oPx{U7vsMdt~3{%F|(fIYY0BF)2NPIhG^x%tdXeo~Q_-8~$BxNE@N>tQt zFpJzK_Wu|Q75}~ZqqJ_}a{?w&VTYMCJhwYmk36#}PsL~@Vm$0-ch!zzGO0)*^PaXE z9$Y(D4!ay>WhgiOR=6>!_Bo!$7L?+)+W6tJfX!%QL$wp8yYizZu8x8Rx|W23(kV1j zhUPtYAM4NNb+OMY3p%$RD0;GD$ZQUdh8Rc_*XT*P@|e9Ic^g-^NnIJcb$K?1trC8A z&^PD#P!8>$3cuWPUzg2Df;9C@w@xFe!5RhsPl zj~rLC6==KTln$Rw=|46}TUOkeYxp!~3GEnvqG4nV8JtsxL%hpn=!$YpA0&>0D-sCzm3!KEp+wa>dF=*iigt~{zPimei7V)ilo8iQl2_GWCf z)~fklK=@%J(HpJb*OaUPUubonE!NU~{U<49C4tEin@IO1!-G)En!l^0dfzOb;cJ5? z2Qtp48P_tz`Fs}_nsVv}y__BS|7NAUOej)EIbD+TQpv&TW0I8)rCu+y4At+(u6f;d z^!7IUur49)i0i(Q^}M&~wxjFIUl?*Ai@Z^5hGDw@k@>2tsv z5ioD|NGilVH2&9#Fj6s)q~I7#r2oDvf(>5TGj9LLnnX3wHUD-Qjt?8PF-3(KWu z@eo$>x-x*qG6!-+Jf3u_AQ&A2XerwQ-Dq#6reK1pGsUq1P4u9H7qs{)Y}$HUQz?f6qzm;qiX~#L+Y?2h~~%k2`)sf z+rDbT zq}EQN(;o8Qo2DL}sM*+1Y|Eo}uh4q`x;K1-;`qCI?77V5>ze%!QEW`_hc1f*J)1+) zC_R~}nXleAf1C*PODj?!?!`=t67!_xamWvWx*UdcG0iTbdxOYT0!)gTk|MD zihzO)1tt!x%4 z+dJmuoxVCN>XxLs%E+S`jLI&;%~LydKK(lCi!^$T3S;nYrj&!W`OF5D)DN;Hs-ZOu zfB}6@h7dG$HE8Hsx!8&Gr9@DgETG&Iwd>Q2o%sX|^Um&z6ZgC^6{6Q8J9&fwW(NLo zrhO%;5JCQ#)zLvS_JYFuWLT(==Um(BCq80|@#)Vt#WwJH{(hce*65-)TD)}(( zVVN>=ug-~a_qUMRn=x-bwFS{eh@?H`8JG^B0ile(XjJ~ZDIeHYiVb+75i#$5?}_X2 zzk1We@+~%DqT~mNiH>JKi}9Jv>rzbvg>C0o+lkj?R7$i)HeD*iYMi>ywllRAQWGj@ zl&M@ze?RQZ$P{+(jx;uvbm6VlP=NFq!ToOXGZ(-g;W1ev0J(#OKLTs-%9WKpd0+yG z!AiPpU(7!I&IhL?7_7vX+DCy8%#6r=RQRfa^~*VK3B$y1pJW$42K}+3Y0?2IsyxQ* z#lzWOOFW8%@zS0sN=TXM;on@)pT9(GNdO`%sf5Z?;+I1BlLtv70@`I1Crwlo|7Qs= zHc-;98s1F%kLKiqQKcO5^??h&s^7Kwzj3JJQ~qU#{RN8!mx$!!>V;77^dnAotg(!K z3jzBJolZ0PlRd!j4oS2~_1Fs)JpR5}ZRI&TMDQu@NyP#!2#Q^TTlsG8DvEGS@OZM# zY`n;Hr|CpnYC4nPpWWe0riw&j=zRbPv7H>p(PHH`w5Q{VbrVB|P1qJOCGxXOD&I?G zfSf)Mt+ff@j)iKq3Ztp6NZPyA?8f~`A9fBN{Tk?>OkI|0nj|VaAh*Uy_(=Ehl=(@m zF*HL>UnlpSU%l-n(Mst4axe5jzYYn!ZYqs6o`=5-i-1T&Y z@ipeIGic|lWhQ8Oe>>ZoolS>}1>jaynNLi=3!o&aN%q4Nnk;Tcm}!(7yqe)}^!Yi+ zzhc+ci5bU6UggLpo3#bt)c}O>8NJe?!oX+tHqPv&N&WCp)sOJM!GOPhMHu-!WGAHU zTfJ9vb{z`>9Gs-GR~zd}rt&&{=e||eS>%a4j!bk7`&V}Y3TaB{?3ET~9MZW$m#2#Y zdr>xw{}S&&dijFf=ysHM6#o({BAJ_j);g#kWd3(8LP;I`%-5rlEJCdpc>*r*OK-i~A&#?q6} z0^Tu=7jvnB{}mwdEJV|02=r`^GrL!*8b;slm=9I@uxO-M7ETmD!=`UCmttm>G&Se+ z|Ml__+&4+x2Qlt=`i~lS`x1Goj2WwVI%WSccQKki9)9Ra-l0crbK@a4rQD-Kz$N$Xj z)31Kz%}@{3lvCA?reZ}v`E^@Kj3^i}FRuGr?uo6qrqBSZ%5o}r>y2dlO2G z(3r8Zr_q?PDlkcBWfw}9s>0EA=YBM|eL{$Cj@$u?<=d~D@bxm2)CPh4$G{q$aco*9_A4w*yHfO` z8qa^*03w)ff+aHsau6W}0|kihQhEbQ>%+L$ZE&IyK03bhaMDZaRh5|vMB7rM)TUWD z+DHZ~g{$6#@Hc_-`SB=?;2xIl6T4Iy3a&i!u^D4!&^w}9cPWSP>mJHOs#~E7b zFVG5gAkCJOrL8OdDW)1V31eWzwvADyN%C3I#NS^_{@%^ymO-MZGkaroKZN7Cv682X zAra^u=M*|HQ;gauXSdlOO6VIH8L5xt$aofqd>MJ9e%#|;$jhrjC$O$$26g5~D>){&z@5 z>EJj^wbuo|MzcpgSS{JI%6zO6NXLyB$n5bGz2T=rcrEFN7<9z#_!0&*nR?%XRdQu1 z3*Tf18yXu!e|-C7x&Fho+Nh6Q820i=EIoqiH-r&`NQ&n4JbxesF{4(f!UD~fkuKD3 za&tNSm=lqwEng##uEzj0f5S(QHo^g4%$VqWG0mjrvUM=?QejA#F_FjG$(5rTk*a5Z z>_GHO?$f%k*X(n>dg9rrFEM>dH#~O9s=87!DF3h@Cg1s>ps_ntc6rnJ>iQEt77uF- z^k{Aq%=%URhR+*j{Ie;=0Y7S=m(8kXKD@TqpBRHl#2ZL(ih5>bG}M)-q& zm^<%9)KM|?vOdOw{*E2_YY(Lv12)7rEKu_nLbzB83LfLV!|zY#Gz>`?^az#WpYmKe=RRB?GLU zAVOXKS3&hjN!MHHe=K%-RY0M1H&rK*{i{R@DEYr!C(UC&m!v!th!UPY+U$GLy(2F3 zn|6_E6d|kV`SK-BfxRucz+Ln@$`fDmlSq_kNQ5Eyd-ZKcbG3>`N5jJezw5pA2*6FG2i!!T4CV-c0Hl3N)RL!`X*MKy*X?gZ?0t(4Bff`@_HSMMIhCc+ zXi-vIbrG+7!2SE1~&JDV0yi!%O!U zCxAgw0&G={k1YNe`#<$Q4H$*oC;bK}S$%B8EorTT_z7lMo!+upp-zp81F`n?Sct2? zPXcU`{lROS+Dn*ip70qCoMDAti%1U420a#I;`TLh=oy~}i!eKW=63<_sMWk>O z{I$L!C!+n~V3`^wcibH)u$AXwXIb!fYdOOVKasHPuWFQN3!2Y0H&MFG`;2G3iiWi7 zZqL*?oxq%--d9MSLgm6ZPb9pidO!#{$=a}0-gcqZ-~`5di@KUa)6q%oZ9ysEbl5pP zbc>O3?`T2?nx~LyfjC^h_T)Ban;MdBzG7}uHzZ+30~1qOGv@{E2q6P<#up#1I!?X| zP+RR!ZVT`R4t`j!4`(}#DXV_0iLGX+FdhJ+)M&$aGb)q$SASaQ-<0OhR*@P2Ah9(l zhR2d)EK+lAmmXqfJqb)t+z`X%YsVEj)%8}qfLcSQZs9%G<$*awb6L&sdK%;BE?;|W zRTJ9gT;}5;ikZ8KouL%QB~8Z(7dzfp%pSCu#~xP~C-B@Dg*3{1aRAQ%`9sEntRMA$+O4wi%YNdaem5a3vQB#uqT z>e`8=myVkRyyLMM;tT0Hf>YlJyqbFiLH;3kv@6AYhNOOMivFhAtaZcV7jp`>e zAEuGOjKO=^Acvi}kTQ7C1}-K4C~)QD$}Rk%9rThhuNo_u1t1B|(z?pWnasGt=Qb1q zPDLgAz`UO-kOR(cRUC^3f(BHg-Q;;FTn z+c@M)eoPC&+ufC>BaPCfGPq`Pv@bKHZHj=|psP&aGLM7A316P-r-+1rn%DR}j;D;h z=%fzWFV7F;u2K*bo}rnW`{X}Im$3&0%U}j^0)gV6uEdE-n7?q(0tAU!j!>7yU~` zMiN#{6CmAC$($;!z^wa@V8gsGw#A(136~6|>vF8>d0(S1BPGAXQ<#T26ezbOW?Cxp z0pIYQEl~j{2v_GcBza$+T~3mZMdVqxo|(G&`x4ZXsWyKc2WudY51Yes^EsKwWo-Mn zCQd~@Xfr?E1AvAv{VdGp+3T9tO-Cvtfstz&k00=Rhgty8OS3mJFEfneBJVqZN~B8o z-NrfJoX1mR^Sq+zWPl~r1ehh z`iSw9#1dLvb%lgn9Z*i-{Yhla3#vNG4sFy++AjOu3>PMt zuu0~7nfd@-Gh(Sk1ps+--ZErCtXTN3KR<1~+|Jmx8xiWMAy{e~#2|sSNRXnTEu{@T zN$`IYQ4XY*OY}wGAGD1L7n=|tFq|6>Jslh+Mte?lUtZ+ZF}b7S=ZwW~>+fUiidl4V+v7zCZnm z7}T3N2{9iEyZC6{w}fG2aRn0ak&Cn;801nc(C^#4Per85Zr)a&+c!50v=TXDfmrEs z*@@9IS~c#0yshflC;BXH^b11GBQav?o*Sm zKM0?1R2F6wji4QO7fp5v$C6|u$WyT~ovzFmcG{V3x+pWqn)gS!$HYIt@3?U~L?5|& zzXbjkN_+CDa(E}umz`WRotik=UN`%McqZ`9Ym*Owph%Msp(s-1H;IVGa5Q}_|3(hz zMMW~7`8JaAQ`;E>GbpUlR1Y&F(ZZka2THF@&4u>Yj-k89>^!JPm2SLUnDY{n zx>kk4kj(E`9!V>KSm!8Lu@SwQ4V>y)devXh^1?tn>ZK*aiFR15O07Z!sIVASyc4Uq z>4_u!;hZXjiy!35&FT2^Cdn_*UtS&cv)LQyR(7#%i>HSv#nl-tL2Mlq^%t zN00&I=g2(k?rQ21?Wb-(KI?~-k+7(@7p~NpxBK^Nv{I<$1E5Pnj!xszxW=pkt*kF< zPR||z5m-K>C9FUDsd%T$VknQtHX&MsQcUm5&Izo?31OKT@1t^JOr}(co2cn-98ov{ z>d5p%Sk6>?k74==@%+$e`dY>i`LuHmMOE}%UecPU>o1s#h}h?<*0fewcWZo?L?{6_rwb`Os0WIpiA;}{Ik2(Q_9P8gARAl#C&P|r-uRS ztXbtkUZCe$y4UTX=VPR3Tn2^Bj5YpJ27_JJl0U*}goFEanz1(S+)|99R*jBex3lz##E}F%U#gMmYRVpE%N>r+$lIS&7UzaRgtD*BK)$LYTssR(o^Oo{=ZF7CiE~4V>4Ok3xOJPY5Vq zgo19GR)bT{`h!SXJXygbCGY6Md;%;X#(QbRAP4>8=NJelEmyL`%)})sLATR&B9w{d z`Y&TlWC^l^jjq@Y`#sFq4lFSyO5HCU?-m}j)h$KsUIrmZiYwtkIX;yRiUu(@Z!FhV zgcXMBm>#bH7K}*^%qdZaFUxeqh_%Ju^gGN!o7^#d*_4=b@DL-kXHXKCxGHyk5Lmj~ zcP(zW5*Ff&ngBViQB$}U}@3vj4KQ{JP z(Z*Dv8nPum9IR5H5jo>>2*pw~n<%za)pCrLL%B9?kVE&#E$@b)4B0Pl4DJNx+&3K! z(&S74i3hzS9v$pqtM9-%MHR(vDxu3RD8aj>9(4kkUMI|{j9o+*>PNp0c#0_89n8BE ztHNrNK1ANS`SxPeeW@pqzKt8eFpE(PNuH>aFe!4|J`t1l-JY&i>*-g>yu}%nE)~nf z4jq-Lv*T=Ms(&@kv)bb$Kbc_-A8Q7}9RYJpd|Xx75w~nQsEG7Tla^R1DtSM$>jm5- z#s?Huo<*InI+_I&S%CYDjf(!T61FjMamC)FY<45rqK%!4bTvHAKj@H;0v zHv(BL!kt5DZ`~`1pEDmz|7C9w%HLQ7jQNU&on`?rO~UOrpEDlQlRHK-+9-T>`V(B1 zLh*iupUHSLCaZa^Lr`US)SzF14-|8+LM~MZ(@(OyQk?RqBbJthiF)&nOgyXE$9Zvu zhKGj$Iz9Xtz!sD1zvaQ3J&`1tv%|mGPu*3_m$#q#Cg}?7tnG!ze2ALQ%i9iz}PosT9-*~lMw@318Z+jxJzOjIAW4?as z|BaNOBXI$A-{^3&-F;`WA*B9KZrLXa08TRvbaeW0f11=HY4|AQwgg|= zpCKF{B)oQu2b`csTJgbv=PhD-moae^GyYWpN$gK01XN=rKpE;5$kbtY-c2VYP$@oUhL?)K_`z({b&ZeZ5A;^OC-psxhmQ=6L>bB=xTr(nc}Xo>c(XF{?7E78~?d zlphqvRi8Lo9Qj;ZLqt42S-$tkh@V*u4HKhs1VhKNA%9~40x}{u?|2%G8?T;A0fAGN zv%cBY7UIXUl#%HK_xN+dwAy~P!hub~f*t!f@wHh(0H-VPDe9w%}Ca7?O|jo zwDk22VuU2!0NLH;;24*vy(di++80cTS-}xI7oJNPu7$^_1VsQ>e{3*P2v=O5YQ3m80*8=k& zs1&fWWC1jJeKgzhr(FJt5&&Z@`2|26Vibn)|5YhV5s)N)M^lPl6Zx~!n@4~E8^&;c z_$4|&yITjODpFQ!`Zq-8FFYa!2osPbqsRF-IL?pOQ@B@D6#EP5|Lf&N*oi-LI?A%c z`CuRb&!CfM&-4|hq;8+AvaE=5uu8fPx%k=dpTA;6ZstVCw0!D${LfzG39kjY9WeL) zRf2L|@_)Hb59vhoG&z=j;GsZseHy294YG$=F_yUM0z$|JbvL+LO@JAN@7u(c5|R~Gb) z6r?JB>eg{?SgkiU{lO7ye+BT*;R9-)EZTDV(56`4!2lPa*9mILgWPV|(HlojKrWZ( zsQDdCzMo8)aGMO$SRY=T%&jg&z)Rn??OTM`yqm5xtp*&yUFfabcS-?7=Ha;;z|=Vb zHt94FSpfz}doTBiVl8;IoDk;3R3rm7$&=DL`&IwMKq0SFoRt5ZdvOtwo7fkOp9#(? zGPR`n1Iw)19tj`=S&v&i<0mOS!^*Ihd(~3iwJS^y;vT^QR)y|c;We|HvI6Zd3`g=pqDGW(Ol=8^TE`{*?6ydQ@`vL@_^fT zDA;53kp>XIf^$i6F`?rvIKa9&QBvbP=Q#m^81}|J->G;YA;L{gY`Y1rnFeqOyD}4Z z(JfZMw9&j7v=}DP4{-YnHi=l=A7|Fm05`hB?PMEXBaGataN2D}57^x5ie^Z0`MO=V znqqTzs1py;diOt8Z(1OR$>>KEviv8n(AgaZHoUH|w&n^&R*o5y)( zXaXmcQ-)5P?5W8I7R@-z6CkbAc!4dY`47Z?O$Bb1mIh~O=iEidPPOd_$y_rEw&<6q z`aYflZo#IBVNGUmH>79JeTw}}IvvBUQP<ZK%Uf4d!G-jDnV>U$6KXWUhrIx}3J1WgBNFL& zD?Hq001S9Ez-Pa53IJ6SRKh0uKzKmT9FA6Qs`n+|%Q*&G9C29r?kdW-H6b{t^Ui@sTVwOI!3Ih#`7r*==|(R8S&cNN{`q+ z_0sREWY72I8qT`$;K!>%W!)8|Q%!8%?^a=FcD!l(bre;5|jLfL&(*Ajxx{Gz%MrCDl-? z29`!BfWEEGr2?p*DN_%7=l#35AV!R`IWOc?0JYbeb-DY|1~HXmniBv&Sd3g^<>Xxe z;1kcxc7bx?*6Ct+4LX%e%Olw&6Y?^fHXNQ)-2kTL2{tqyT)riI3PHEZCIG~{2CSD7 zxCw;hAEd^xXp95;PKf&cAdW|4h5|7|vP0D4h&`YwsDcFLvNeKhLwvQ$b`hl5|7m^1 z-d7C^744v*QcIXzFtc9t#u8BZ7>?H2c+fARd&i zY)y?^4HSDS>sa=v!_8B>77N325>5C&6}Q#eE}q*uoToiMTZ(r2Myxssxw^1M9t;Qr z`6;<@r0Pq=Z0=M2Z7~8Ey#vOY*DGQ2(7kaDYq$+-Na?h%c<&79*R%M=VsECyubpl7 z%9;&c`X(g@J2-XoALlM-0)#)zQt&fruIjMiVre0}8Wtv;Ax{|{V3|7~bp}2|I2{h| zQh(62X|uM!`F=2Eb@r~EkH1ZF7ej#dnaNsTD+FY}1%f!@%9-IA+= zp7``aDmMX5?@ymv*6u-Ge_pR)=~IX6$bG5c)ijn!t$mE24uH^-vHN-4nG z8dmT4fD{$8uEob2p2PHE<`DHt)4MhjJzc}9?i<9Zj^+g`4WS*+&}CIv;bI{*6YHv2 z7n;b6Le-Mv60J1aB~Zi%&9rY2*-0TG~*Ynj0-w7CPNRGP|z>yDBckaZvwD&8zgSwBdPWpa)qZ>STl|O5KuDc zY+`Hx+Pt>ghKC370^nnhI=jj@19_cE1K<+j)4B;kPw%3wz&xR(vozL<5u618n?!&&?jPtiw#jh_sU%={W$s}Vp#MC(gGTJr>nL~hG-lVDv9AZF^E z=LCpU+{a|)nid%$It*>fu|^diQK53*V)wpJDaS|I|NP+fRW0L^eG;h2_#@W>pGOF%yw|kiN}N(J zG65530bSTlOi|e&<+XwpUR8-fsi+R1eXPv^ShQ|FXuU3&imM8M8)UeeUeX#mGz)C< zpZXo3|Ht&a_30wGH^dy7rKkR?pHk_;Sco9boV4b)xGA(w87?o5F0O&eHFTRhsF7^rvNv1$#b>Z!0f9Fjn$ z3)klt1Mv1~hX#^qz~7f{Ps;0Jc=WD}?KKgV`qg$LKNm5Bw>Qna<;1tf+vA%4m^RXI zw$U{wUm!9Yh}C_Bw~X~le8}N0&or&7VvlLYd}y#;WS5qr8wUqRk==67_EoaW6~mHQ z$0|%-SU*|JKsIc~eYp`UtgNC~tVpO7=XWP4IQKmYNhH0(4chYAu;+8>k@t4)ob@H} z6j?f&s~mZ{xXn9{PlR^x?&K9;I@Xnd5)$=4OK~lBK>=TC@XLXg?JSIw z>8lLGUL8~Ai&yggp$U4F>fDEHTnQN-b>(%0_P39)_IWo3rkvKh1us~YnG7cr9HDnT zNwSiaMwJI&@R4h~ETDOhZ00;zGF6$|-PCYe77AqTabD&H1o!f*q0Z>j5n5@Y(@;v z&rHz>mXGAM1Firfb1&h^;c*+T!1wUd+Vz}7yQ+m8*y+6JQzlXC0v#*^RM9j|0iqut z?+aa>+f#qW0Eu;JwPJ;u3|(!JhuZFaBSntGMu}4!9)1xU%UA3S|6nUtVF7TY`wb>U z;nTwK%8`9bJ!72!4}q6xzgxMCBq*Xl5CN+b=!O_08hKDzKYhn27In1dey_wFmC?=} zGDAFVN2z_;JaYi^&7wXCvZ}Ozp@`t~oiD=?tQ?JQ?9blM4 zjzhv`7$#N2SL^2`!Dg|2%hRRwtUfs)yHjNu&6b5=MZA4wW}}!IR!a5LA)18gjI6}e z^QYVsHPaiNnl(~V24n)3&Fd1cgn@KLS$)nyqV8K$9jfci5)_b)z-c>Ik*z7b<`bx& zby=Zu|6!&qC(9#B@wrmw`LuN!sWq}0R0%5S%qPufD-0;tGAP&;nY` zRCpk2I+!L}e1KKWfLybCa~i8!X%`5RVLZzr%(|_@Z)|B_CvE{SghIN+d{{3#RrmYn z5#rRU6DRPRIc_u#2hW)Am2O8HUNJHbu(b*AZ;pZ6w|;}C0As@ii_sb?rD1t%7X!m_D`B>2hNGZ&>%AA=^cWsQAKk%hG5+OP z@B^lR2IZHPPfX)KZ66f6ZPmC-3oOq!%>>g~Px@S)l;S<%G?!=I=ERlZaoz8DrgcNV ziqidJWPCGN!t!*|^mxrNH}M!-Ds>TW_h!%qV#Ydt_Qb!+RGrPGS2$(3umZZo_m$KnFMudL$ZCR^f)XT5*Mkw9hL?p zuUrq1$}plU47w7z3srP%h>s?n<3RgtKMOcmWQ0n zY)QhTHjC*}&{M!0AkPEh>ug`W1iy-YltVz(6PjkdTZI)A40^?gpH8vepDch(w37K` zgDHH0Bp*r#o_Lo299uny>+{2OtRO`8iQhV9&qSL3<5bX7a?zdK`aJ8%LZ>{>&=
|68GOtXxhu1?jlm(kU2UEeSBPhTYcK0<^4^s$`8e>juTp|2M&3H zp|}cRSXu%y>qA7;K%!&aNR{ZJji-Q9UkF70KanFHjmybgQ+I$*kA;WXb_>YxNku&t zK=RX#Fl_wpiHq#vW5g-QINuN>H>~7;)rR0Z*jM}pT+lpLXwYHN4-TD|&@g!^F3*W* z1)nZRJVS-4FiUc+v?0<2J^VtGeA(ryKxIx}G3lV&ulQ*c`~Uib};|hpv0SVh66#x!{!d zIV%!z4&m+cmo1adi;+!??FRsk&6TZ55_$8EW$&x5I!^Sa|T#xAzE_yD?HO>6P>r0t&WP0IMh3+qQ00h4`-a$#=@`L9I}^fiNY25wHwvNroHIcT$mPYxc_f;7 z^P#lYMS(gOLy6RqkoUKPmqJqI3Bgf}7z9AGi)IBf8J@}#iegw4ErXZh%lvt4f1gFY zMp?B{BKbIm#||n{*@wrb9I6V_g5%z16KRT!$i;*x)=^bHSp(b?s}jg10ykWR(M4|Z zSJIk4fk<6rEEBGtWUXP2WCP<=)K0OV0O3z87eIs4rf#B1ZK;*>@e2H|*Z*h$2)00F z58fY3xBe%RM}rTXHzLTH{|{^P4><#3;;$p&HwLdG;s3Kg3?Tj%Lva`N_pSPmXM)S$ z>*!UD@LjR?cs^0^EY!*j_C$_4(r+a3lKrz4C;uC?>`wk1zhkX`L70>zj1{^=<%2z2 zTmm!rIKPYiUqI+Oe%@z=*6AusD=+@;V#~zr#e0>%9i8|Imu9_wzfSi!GwZ=WJI9yI z1<+WBjp1L}0e=CUKph%T52Go@zrOA-I^i1p|Hm*sz6+qS98$kUo&PmrJ`Pv_8k@`d zXJqy7A0pCo9jY7><^RvYy*_6L$Vt95^dFr7;4%j=CI9`L|IW^Th3)^zwR7(6ZhVtj z;^^Cg2IDrG6lTa16Tv)_ZojZpfCVY_>06>e8o8o513xrPIx*8hkAUFk%L4E~7S2?M|)^k&} zWfv9pKKvAmyI40bz5C&GcY7=*@vbG~?o%I@>dA*Zh>ZH)!22=aiCF-YFP*XL{YYU| zo8HIbJnL$FkHbJR(Vp_m2T0U=G!Y^LrcH8gDRcaJRqT$GxoSg0t2$aL~CGk1$YJbfl$dqgtR-WNx0 zfa90aL^KPKAx|CF2201)&BgcT7sG|aCgcR*l{WCI34c-@4|aRSLaVlbyA@X5FEdH6JVb`I%<`?0o?UxDJIHal;%&CjUoYR~`=K+Qw~Z zv}nvEGj?Vi;SdUAEh2<8kt{V~j2vW_{Y190H1^$*P)ZqFMr4g+$xfCK#-24>N7nB# z=j*zCGE0O-d0tc{m0Yni?uyL@vCV2 za>W9f3Oe^{SA`k`e-9Mc(Pp=vU2i$}v1~TOC#2?JUvbn6V3i?&S0mqO1tb8%>orJT zsKu=k$MH?1#{+|$Zb13l)Jy_^Q(60N(vlqZ7@*qp(}lUG0J~D&^XE66ZeQ!xuYakq za>@Qq=3}DhNR*?w9}HR)4c4E!$UR_G5lR8*Nz=ypLpk@Vf?bGnj!gY+DMtwG_T~7@ zWk52BkG5`G1k4vd`*mRO zD7!fT@Mfmkc&*2kRU3SFTWsds2hc7m5Wv4EZr`tURPwv!WAOK!Pvqyg>FAD6Ypbgo zUc;}QrI}Va&R_6KXZkHoA#j`dg~^tM`vMOA=al;i;gtLneOZhIXA+qDvy#?r$#c8s zfX?0m@R6*b+PvHIW(*_#5H$u287s!~ur~hL3A3wC3gvvWY2IOUbq|LA$o01=Y!-|N z0-&By#=G6M)_NX~5jGyZbe9h^_vvj49%6>T=y|=4yQoz3{O*P`7@1RXda@>N`-jqD z|MOc@arz;E6O~JMZbVw75E8?(bX+1WHo&YgnzvN!09tp~g}l?ETknn1o zrIFK4U3D6m{5a+%1fJ$t?N!9cKFTS0uCPO4AqWV8#b*?$ zjnaGj03FZH?o=uYnPXhPdB1d~q+$^jr38bXH0A;lIN#cCFpUTBQt1v9Q#9(97OVy8 z0+p~?*j?{D)rN&#OcrbGI7;u(B9s*A$0KE_{yJO%2WZ1Wpw@n#HyN|}w>)L7kSx_d z4<-=@tHNC7TT04~nPZg7kl`vL+a5oh&fo)~lD0&#iH2(vr;wZYKd}wCL=o zE8T*o`ZKaZUgc9vlgQLX#I6L*idCVP#zxN@YKqeC2rM7NpTBU=w^zjAAxKQ^D{_Tx z+OV^vGvvE2SZEf25g?iI6Vowk&8Xq{zr)PT1CC4>_)3hQ{_S3L!_z~QIN815gppM# zh7<4=gwyA(Q~!7_36@wea6C%m$rkFWU#)mTSAjZ?^yod{<@pw(j_mIkJb(CU=Y>b2 zi8Tvc?*bM`JLQX$va)q2M7gcG9gI=lr%m!J!k4LGDlz;m(32#E`4?Sfj$=+UDfg}j zP(iLpx~8Nnm5k!g2L&Uma=ygVCf;A3q3&hDwn(d1d{18*x%5~5IoZ|;D31gpBK;d& zU#Unsw`lF*!N*kn#%P&sE%lSGBq`?Yp^Pd3g<+>u=~67iMJBvWffa_)8X8W?ws|it zZ$jX&r36EGz2}~KHq>uvhAghJIQI5a!$Eli9u=W@%>hX~eo2}G2oNB>y65#SX@S!t+i~?p0tbhINA#rv zRM)qfwJL`#R%4o1wPkxDWSFyr#uR%QEsR#KsjEeI!3FRMH;rDNuKObmX!Nst6R%Cg zJ68`iuhzm>mFkP8!<0zhS85J;QT(1g8I;S0V}V_&2o)^6vNVu*EPcUNthZ*~XW@I* z#~V7qpva>7IT5R`+(&ToFB!gFJW$?f;7*x|M#vz$k3%%<{j@0HcP33Eyy_8FpE&X( z-0pVA$btfo^1?2)<2S?kH@;FhgMzFGGjZF{Hy=3tEO^iszkQC%l>KMKwdsjTjNtvF z7JdSj{MB#nsnS7)&AksDZ@zew=91XTkW6ZtzELdIk$iK$hwz z9g9-Oo2xhSLo7=B<(7KJ=J%cMcJDgnCvG;#+_tO4(E^-+Wj*t(<sMGAg4kW;47obau?p*tN>Lu7QEzxqzI+1wRs9Jg%m`NV zW5Kg>(_ZiO-Y|C~4$E;yRys>xmkwOaD1-~V@AZNilD5v>V{jiIcU76L)Y^>YU__aq zpYCfn_=`BEXg#9ua44RyKuo?Ws7{p_@XK+Cz2H#VXXG5gSbnJ|O<2pEr3?*`)JHQA zxacRRmL$|AzEV1P6TZlqNxk5(Muc5BSNZk*mhw(+)%UhU!X0QpAYJWNa;w!w z8ibi*D>)D;jAUbr*Oxa$a1Co>&LF!HXjj6ndh`_1?(vc=!VC)vIJkpP#S#U{FEr@=oKmS4%Kn9CzHXBRl%W2cQOq$5nnR3_bO3kdSo8vV##P zkm^1$n`%c!Xj~d)peT>K3EV)3a%;kblSZHjZGLA5@NjpszcbkD9?SEJ^6aeW`0Ujq zHOy-Te)~j_)nxLUP~zk6vBG>pH*teFuw0iG{+}zA*(um9hK0+ z%N7V+T81oN*0n*EN2vB;RpJT%0dQ0c%<(hu{3yP3!dCCmth#(gido)IWHdXU8_F0!Fe|%d5K|!qAq!z@)j08?Nv0@{O1Vx4FSM}|p+yjyu z5)(yo)1}#wD_T4dEs=vp&m;TFs>mQ>)wdxrob@m)%YdYEdLDAo5A{LZZaBH>v zv4tUFX9NqhicQxIs;YaHxfM%7%Ad#!(u=C$i^<0IFU6y1fu?N@YnJH}<62T_~b+ti5HdL+R=+QX4O7@%~ zOs6cJdZ?9s0)I~?@2kF=`E=G#+fYLU2iqx3vAqCQL?wpaYwvX~`Lu@gY6JXUnr*X( zpe2#FMWO4Zr6+Z2w$#kA=4Au~;#vGGH?c3ZbAE>yRA(XF6VQ-R3A=!t6qv|u?%{s6 z3)h$iyYZ`Lo*S(!PKdto;gc#6fK}j_L3jVMo7Q@7|(pyX1#* zk-=rtZlN;ijSE#mw<8@&o#_?!y^kzGVsjk0Q5aQ(g!lcq8QvtOI* zuEAJI7^1h_O&!yG43S=Nt2Wa&n$AaDQ5*=bKvPCRt5&zOjL zXHi$70d>lzUJUAz(Ggi^lhnR*R-vNk%&>!&JvMkn)&dQJm|jU_&Qr)qke!?Wht!+| zQZzdw1D?DAnGpf|Q8dk62_3e~^m_ztFqW8z)n~(NZTio|j&_W!(vrG=bGS$p6kd=9 zub=)mA11I^xmxh!5MJ2C%;}$UVO^Ocd6E&UP;?w4?h>i5RMS9bIAThqwzwSL~LU6&t3S@q74f`1rp86u)jbB{%7Lz|3ZWJ4QaFNM;~aYK|nFU5Z&>%!t3YgF0zR7%W`g@gi;2)Jz6vYWMG+{{n+{ys8rRgxYUYpr1NQS!FaQ7m literal 0 HcmV?d00001 diff --git a/docs/en_US/query_tool.rst b/docs/en_US/query_tool.rst index 396c0bdb840..4b1a861bf06 100644 --- a/docs/en_US/query_tool.rst +++ b/docs/en_US/query_tool.rst @@ -32,8 +32,9 @@ The Query Tool features two panels: * The upper panel displays the *SQL Editor*. You can use the panel to enter, edit, or execute a query or a script. It also shows the *History* tab which can be used - to view the queries that have been executed in the session, and a *Scratch Pad* - which can be used to hold text snippets during editing. If the Scratch Pad is + to view the queries that have been executed in the session, a *Scratch Pad* + which can be used to hold text snippets during editing, and an *AI Assistant* + tab for generating SQL from natural language (when AI is configured). If the Scratch Pad is closed, it can be re-opened (or additional ones opened) by right-clicking in the SQL Editor and other panels and adding a new panel. * The lower panel displays the *Data Output* panel. The tabbed panel displays @@ -201,6 +202,49 @@ can be adjusted in ``config_local.py`` or ``config_system.py`` (see the `MAX_QUERY_HIST_STORED` value. See the :ref:`Deployment ` section for more information. +AI Assistant Panel +****************** + +The *AI Assistant* tab provides a chat-style interface for generating SQL queries +from natural language descriptions. This feature requires an AI provider to be +configured in *Preferences > AI*. For configuration details, see the +:ref:`preferences` documentation. + +.. image:: images/query_ai_assistant.png + :alt: Query tool AI Assistant panel + :align: center + +To use the AI Assistant: + +1. Click on the *AI Assistant* tab in the upper panel, or use the *AI Assistant* + toolbar button. +2. Type a description of the SQL query you need in natural language. +3. Press Enter or click the send button to submit your request. +4. The AI will analyze your database schema and generate appropriate SQL. + +The AI Assistant displays conversations with your messages and AI responses. When +the AI generates SQL, it appears in a syntax-highlighted code block with action +buttons: + +* **Insert** - Insert the SQL at the current cursor position in the SQL Editor. +* **Replace** - Replace all content in the SQL Editor with the generated SQL. +* **Copy** - Copy the SQL to the clipboard. + +The AI Assistant maintains conversation context, allowing you to refine queries +iteratively. For example, you can ask for a query and then follow up with +"also add a filter for active users" to modify the previous result. + +**Tips for effective use:** + +* Be specific about table and column names if you know them. +* Describe the desired output format (e.g., "show count by category"). +* For complex queries, break down requirements step by step. +* Use the *Clear* button to start a fresh conversation. + +**Note:** The AI Assistant uses database schema inspection tools to understand +your database structure. It supports SELECT, INSERT, UPDATE, DELETE, and DDL +statements. All generated queries should be reviewed before execution. + The Data Output Panel ********************* diff --git a/web/pgadmin/llm/chat.py b/web/pgadmin/llm/chat.py new file mode 100644 index 00000000000..38734027bc5 --- /dev/null +++ b/web/pgadmin/llm/chat.py @@ -0,0 +1,184 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""LLM chat functionality with database tool integration. + +This module provides high-level functions for running LLM conversations +that can use database tools to query and inspect PostgreSQL databases. +""" + +import json +from typing import Optional + +from pgadmin.llm.client import get_llm_client, is_llm_available, LLMClientError +from pgadmin.llm.models import Message, LLMResponse, StopReason +from pgadmin.llm.tools import DATABASE_TOOLS, execute_tool, DatabaseToolError +from pgadmin.llm.utils import get_max_tool_iterations + + +# Default system prompt for database assistant +DEFAULT_SYSTEM_PROMPT = """You are a PostgreSQL database assistant integrated into pgAdmin 4. +You have access to tools that allow you to query the database and inspect its schema. + +When helping users: +1. First understand the database structure using get_database_schema or get_table_info +2. Write efficient SQL queries to answer questions about the data +3. Explain your findings clearly and concisely +4. If a query might return many rows, consider using LIMIT or aggregations + +Important: +- All queries run in READ ONLY mode - you cannot modify data +- Results are limited to 1000 rows +- Always validate your understanding of the schema before writing complex queries +""" + + +def chat_with_database( + user_message: str, + sid: int, + did: int, + conversation_history: Optional[list[Message]] = None, + system_prompt: Optional[str] = None, + max_tool_iterations: Optional[int] = None, + provider: Optional[str] = None, + model: Optional[str] = None +) -> tuple[str, list[Message]]: + """ + Run an LLM chat conversation with database tool access. + + This function handles the full conversation loop, executing any + tool calls the LLM makes and continuing until a final response + is generated. + + Args: + user_message: The user's message/question + sid: Server ID for database connection + did: Database ID for database connection + conversation_history: Optional list of previous messages + system_prompt: Optional custom system prompt (uses default if None) + max_tool_iterations: Maximum number of tool call rounds (uses preference) + provider: Optional LLM provider override + model: Optional model override + + Returns: + Tuple of (final_response_text, updated_conversation_history) + + Raises: + LLMClientError: If the LLM request fails + RuntimeError: If LLM is not available or max iterations exceeded + """ + if not is_llm_available(): + raise RuntimeError("LLM is not configured. Please configure an LLM " + "provider in Preferences > AI.") + + client = get_llm_client(provider=provider, model=model) + if not client: + raise RuntimeError("Failed to create LLM client") + + # Initialize conversation history + messages = list(conversation_history) if conversation_history else [] + messages.append(Message.user(user_message)) + + # Use default system prompt if none provided + if system_prompt is None: + system_prompt = DEFAULT_SYSTEM_PROMPT + + # Get max iterations from preferences if not specified + if max_tool_iterations is None: + max_tool_iterations = get_max_tool_iterations() + + iteration = 0 + while iteration < max_tool_iterations: + iteration += 1 + + # Call the LLM + response = client.chat( + messages=messages, + tools=DATABASE_TOOLS, + system_prompt=system_prompt + ) + + # Add assistant response to history + messages.append(response.to_message()) + + # Check if we're done + if response.stop_reason != StopReason.TOOL_USE: + return response.content, messages + + # Execute tool calls + tool_results = [] + for tool_call in response.tool_calls: + try: + result = execute_tool( + tool_name=tool_call.name, + arguments=tool_call.arguments, + sid=sid, + did=did + ) + tool_results.append(Message.tool_result( + tool_call_id=tool_call.id, + content=json.dumps(result, default=str), + is_error=False + )) + except (DatabaseToolError, ValueError) as e: + tool_results.append(Message.tool_result( + tool_call_id=tool_call.id, + content=json.dumps({"error": str(e)}), + is_error=True + )) + except Exception as e: + tool_results.append(Message.tool_result( + tool_call_id=tool_call.id, + content=json.dumps({ + "error": f"Unexpected error: {str(e)}" + }), + is_error=True + )) + + # Add tool results to history + messages.extend(tool_results) + + raise RuntimeError(f"Exceeded maximum tool iterations ({max_tool_iterations})") + + +def single_query( + question: str, + sid: int, + did: int, + provider: Optional[str] = None, + model: Optional[str] = None +) -> str: + """ + Ask a single question about the database. + + This is a convenience function for one-shot questions without + maintaining conversation history. + + Args: + question: The question to ask + sid: Server ID + did: Database ID + provider: Optional LLM provider override + model: Optional model override + + Returns: + The LLM's response text + + Raises: + LLMClientError: If the LLM request fails + RuntimeError: If LLM is not available + """ + response, _ = chat_with_database( + user_message=question, + sid=sid, + did=did, + provider=provider, + model=model + ) + return response diff --git a/web/pgadmin/llm/prompts/__init__.py b/web/pgadmin/llm/prompts/__init__.py new file mode 100644 index 00000000000..b8966eb70f9 --- /dev/null +++ b/web/pgadmin/llm/prompts/__init__.py @@ -0,0 +1,14 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""LLM prompt templates for various features.""" + +from pgadmin.llm.prompts.nlq import NLQ_SYSTEM_PROMPT + +__all__ = ['NLQ_SYSTEM_PROMPT'] diff --git a/web/pgadmin/llm/prompts/nlq.py b/web/pgadmin/llm/prompts/nlq.py new file mode 100644 index 00000000000..b522c799bca --- /dev/null +++ b/web/pgadmin/llm/prompts/nlq.py @@ -0,0 +1,35 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""System prompt for Natural Language to SQL translation.""" + +NLQ_SYSTEM_PROMPT = """You are a PostgreSQL SQL expert integrated into pgAdmin 4. +Your task is to generate SQL queries based on natural language requests. + +You have access to database inspection tools: +- get_database_schema: Get list of schemas, tables, and views in the database +- get_table_info: Get detailed column, constraint, and index information for a table +- execute_sql_query: Run read-only queries to understand data structure (SELECT only) + +Guidelines: +- Use get_database_schema to discover available tables before writing queries +- For statistics queries, use pg_stat_user_tables or pg_statio_user_tables +- For I/O statistics specifically, use pg_statio_user_tables +- Support SELECT, INSERT, UPDATE, DELETE, and DDL statements +- Use explicit column names instead of SELECT * +- For UPDATE/DELETE, always include WHERE clauses + +Your response MUST be a JSON object in this exact format: +{"sql": "YOUR SQL QUERY HERE", "explanation": "Brief explanation"} + +Rules: +- Return ONLY the JSON object, nothing else +- No markdown code blocks +- If you need clarification, set "sql" to null and put your question in "explanation" +""" diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py index 3e14be60bb2..b3803746a63 100644 --- a/web/pgadmin/tools/sqleditor/__init__.py +++ b/web/pgadmin/tools/sqleditor/__init__.py @@ -48,6 +48,7 @@ CryptKeyMissing, ObjectGone from pgadmin.browser.utils import underscore_escape from pgadmin.utils.menu import MenuItem +from pgadmin.utils.csrf import pgCSRFProtect from pgadmin.utils.sqlautocomplete.autocomplete import SQLAutoComplete from pgadmin.tools.sqleditor.utils.query_tool_preferences import \ register_query_tool_preferences @@ -144,6 +145,7 @@ def get_exposed_url_endpoints(self): 'sqleditor.get_new_connection_role', 'sqleditor.connect_server', 'sqleditor.server_cursor', + 'sqleditor.nlq_chat_stream', ] def on_logout(self): @@ -2736,3 +2738,212 @@ def user_macros(json_resp=True): This method is used to fetch all user macros. """ return get_user_macros() + +# ============================================================================= +# Natural Language Query (NLQ) to SQL +# ============================================================================= + +@blueprint.route( + '/nlq/chat//stream', + methods=["POST"], + endpoint='nlq_chat_stream' +) +@pgCSRFProtect.exempt +@pga_login_required +def nlq_chat_stream(trans_id): + """ + Stream NLQ chat response via Server-Sent Events (SSE). + + This endpoint accepts a natural language query and streams back + the generated SQL query along with progress updates. + + Args: + trans_id: Transaction ID for the current Query Tool session + + Request Body (JSON): + message: The natural language query from the user + conversation_id: Optional ID to continue a conversation + history: Optional list of previous messages for context + + Returns: + SSE stream with events: + - {type: "thinking", message: "..."} - Progress updates + - {type: "sql", sql: "...", explanation: "..."} - Generated SQL + - {type: "complete", sql: "...", explanation: "...", + conversation_id: "..."} - Final response + - {type: "error", message: "..."} - Error message + """ + from flask import stream_with_context + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.chat import chat_with_database + from pgadmin.llm.prompts.nlq import NLQ_SYSTEM_PROMPT + + # Check if LLM is configured + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'AI features are not configured. Please configure an LLM ' + 'provider in Preferences > AI.' + ) + ) + + # Get session data for this transaction + status, error_msg, conn, trans_obj, session_obj = \ + check_transaction_status(trans_id) + + if not status: + return make_json_response( + success=0, + errormsg=error_msg or ERROR_MSG_TRANS_ID_NOT_FOUND + ) + + if not conn or not trans_obj: + return make_json_response( + success=0, + errormsg=gettext('Database connection not available.') + ) + + # Parse request data + data = request.get_json(silent=True) or {} + user_message = data.get('message', '').strip() + conversation_id = data.get('conversation_id') + + if not user_message: + return make_json_response( + success=0, + errormsg=gettext('Please provide a message.') + ) + + def generate(): + """Generator for SSE events.""" + import secrets as py_secrets + + try: + # Send thinking status + yield _nlq_sse_event({ + 'type': 'thinking', + 'message': gettext('Analyzing your request...') + }) + + # Call the LLM with database tools + response_text, _ = chat_with_database( + user_message=user_message, + sid=trans_obj.sid, + did=trans_obj.did, + system_prompt=NLQ_SYSTEM_PROMPT + ) + + # Try to parse the response as JSON + sql = None + explanation = '' + + # First, try to extract JSON from markdown code blocks + json_text = response_text.strip() + + # Look for ```json ... ``` blocks + json_match = re.search( + r'```json\s*\n?(.*?)\n?```', + json_text, + re.DOTALL + ) + if json_match: + json_text = json_match.group(1).strip() + else: + # Also try to find a plain JSON object in the response + # Look for {"sql": ... } pattern anywhere in the text + plain_json_match = re.search( + r'\{["\']?sql["\']?\s*:\s*(?:null|"[^"]*"|\'[^\']*\').*?\}', + json_text, + re.DOTALL + ) + if plain_json_match: + json_text = plain_json_match.group(0) + + try: + result = json.loads(json_text) + sql = result.get('sql') + explanation = result.get('explanation', '') + except (json.JSONDecodeError, TypeError): + # If not valid JSON, try to extract SQL from the response + # Look for SQL code blocks first + sql_match = re.search( + r'```sql\s*\n?(.*?)\n?```', + response_text, + re.DOTALL + ) + if sql_match: + sql = sql_match.group(1).strip() + else: + # Check for malformed tool call text patterns + # Some models output tool calls as text instead of + # proper tool use blocks + tool_call_match = re.search( + r'\s*' + r'\s*(.*?)\s*', + response_text, + re.DOTALL + ) + if tool_call_match: + sql = tool_call_match.group(1).strip() + explanation = gettext( + 'Generated SQL query from your request.' + ) + else: + # No parseable JSON or SQL block found + # Treat the response as an explanation/error message + explanation = response_text.strip() + # Don't set sql - leave it as None + + # Generate a conversation ID if not provided + if not conversation_id: + new_conversation_id = py_secrets.token_hex(8) + else: + new_conversation_id = conversation_id + + # Send the final result + yield _nlq_sse_event({ + 'type': 'complete', + 'sql': sql, + 'explanation': explanation, + 'conversation_id': new_conversation_id + }) + + except Exception as e: + current_app.logger.error(f'NLQ chat error: {str(e)}') + yield _nlq_sse_event({ + 'type': 'error', + 'message': str(e) + }) + + # Create SSE response + response = Response( + stream_with_context(generate()), + mimetype='text/event-stream', + headers={ + 'Cache-Control': 'no-cache, no-store, must-revalidate', + 'Pragma': 'no-cache', + 'Expires': '0', + 'Connection': 'keep-alive', + 'X-Accel-Buffering': 'no', + } + ) + response.direct_passthrough = True + return response + + +def _nlq_sse_event(data: dict) -> bytes: + """Format data as an SSE event with padding for buffer flushing. + + Args: + data: Event data dictionary. + + Returns: + SSE-formatted bytes. + """ + json_data = json.dumps(data) + # Add padding to help flush buffers in WSGI servers + padding_needed = max(0, 2048 - len(json_data) - 20) + padding = f": {'.' * padding_needed}\n" if padding_needed > 0 else "" + return f"{padding}data: {json_data}\n\n".encode('utf-8') + diff --git a/web/pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx b/web/pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx index 559f2547db9..0468825e4ea 100644 --- a/web/pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx +++ b/web/pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx @@ -29,6 +29,7 @@ import { Notifications } from './sections/Notifications'; import MacrosDialog from './dialogs/MacrosDialog'; import FilterDialog from './dialogs/FilterDialog'; import { QueryHistory } from './sections/QueryHistory'; +import { NLQChatPanel } from './sections/NLQChatPanel'; import * as showQueryTool from '../show_query_tool'; import * as commonUtils from 'sources/utils'; import * as Kerberos from 'pgadmin.authenticate.kerberos'; @@ -232,6 +233,7 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN tabs: [ LayoutDocker.getPanel({id: PANELS.QUERY, title: gettext('Query'), content: setSelectedText(text)} setQtStatePartial={setQtStatePartial}/>}), LayoutDocker.getPanel({id: PANELS.HISTORY, title: gettext('Query History'), content: }), + LayoutDocker.getPanel({id: PANELS.AI_ASSISTANT, title: gettext('AI Assistant'), content: }), ], }, { diff --git a/web/pgadmin/tools/sqleditor/static/js/components/QueryToolConstants.js b/web/pgadmin/tools/sqleditor/static/js/components/QueryToolConstants.js index 83ae3dae9dc..48c98e806bb 100644 --- a/web/pgadmin/tools/sqleditor/static/js/components/QueryToolConstants.js +++ b/web/pgadmin/tools/sqleditor/static/js/components/QueryToolConstants.js @@ -72,6 +72,8 @@ export const QUERY_TOOL_EVENTS = { EDITOR_TOGGLE_CASE: 'EDITOR_TOGGLE_CASE', COPY_TO_EDITOR: 'COPY_TO_EDITOR', + NLQ_INSERT_SQL: 'NLQ_INSERT_SQL', + WARN_SAVE_DATA_CLOSE: 'WARN_SAVE_DATA_CLOSE', WARN_SAVE_TEXT_CLOSE: 'WARN_SAVE_TEXT_CLOSE', WARN_TXN_CLOSE: 'WARN_TXN_CLOSE', @@ -115,6 +117,7 @@ export const PANELS = { NOTIFICATIONS: 'id-notifications', HISTORY: 'id-history', GRAPH_VISUALISER: 'id-graph-visualiser', + AI_ASSISTANT: 'id-ai-assistant', }; export const MAX_QUERY_LENGTH = 1000000; diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/NLQChatPanel.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/NLQChatPanel.jsx new file mode 100644 index 00000000000..d9301b05dba --- /dev/null +++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/NLQChatPanel.jsx @@ -0,0 +1,787 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// +import { useState, useContext, useRef, useEffect, useCallback } from 'react'; +import { styled } from '@mui/material/styles'; +import { + Box, + TextField, + IconButton, + Paper, + Typography, + Tooltip, +} from '@mui/material'; +import SendIcon from '@mui/icons-material/Send'; +import StopIcon from '@mui/icons-material/Stop'; +import ContentCopyIcon from '@mui/icons-material/ContentCopy'; +import AddIcon from '@mui/icons-material/Add'; +import ClearAllIcon from '@mui/icons-material/ClearAll'; +import AutoFixHighIcon from '@mui/icons-material/AutoFixHigh'; +import { format as formatSQL } from 'sql-formatter'; +import gettext from 'sources/gettext'; +import url_for from 'sources/url_for'; +import getApiInstance from '../../../../../../static/js/api_instance'; +import usePreferences from '../../../../../../preferences/static/js/store'; +import { + QueryToolContext, + QueryToolEventsContext, +} from '../QueryToolComponent'; +import { PANELS, QUERY_TOOL_EVENTS } from '../QueryToolConstants'; +import CodeMirror from '../../../../../../static/js/components/ReactCodeMirror'; +import { PgIconButton, DefaultButton } from '../../../../../../static/js/components/Buttons'; +import EmptyPanelMessage from '../../../../../../static/js/components/EmptyPanelMessage'; +import Loader from 'sources/components/Loader'; + +// Styled components +const ChatContainer = styled('div')(({ theme }) => ({ + display: 'flex', + flexDirection: 'column', + height: '100%', + width: '100%', + overflow: 'hidden', + backgroundColor: theme.palette.background.default, +})); + +const HeaderBar = styled('div')(({ theme }) => ({ + flex: '0 0 auto', + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + padding: theme.spacing(0.5, 1), + backgroundColor: theme.otherVars.editorToolbarBg, + borderBottom: `1px solid ${theme.otherVars.borderColor}`, +})); + +const MessagesArea = styled('div')(({ theme }) => ({ + flex: '1 1 0', + minHeight: 0, + overflow: 'auto', + padding: theme.spacing(1), + display: 'flex', + flexDirection: 'column', + gap: theme.spacing(1), +})); + +const MessageBubble = styled(Paper)(({ theme, isuser }) => ({ + padding: theme.spacing(1, 1.5), + maxWidth: '90%', + alignSelf: isuser === 'true' ? 'flex-end' : 'flex-start', + backgroundColor: + isuser === 'true' + ? theme.palette.primary.main + : theme.palette.background.paper, + color: + isuser === 'true' + ? theme.palette.primary.contrastText + : theme.palette.text.primary, + borderRadius: theme.spacing(1.5), + wordWrap: 'break-word', + overflowWrap: 'break-word', + ...(isuser !== 'true' && { + border: `1px solid ${theme.otherVars.borderColor}`, + }), +})); + +const SQLPreviewBox = styled(Box)(({ theme }) => ({ + marginTop: theme.spacing(1), + '& .sql-preview-header': { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + marginBottom: theme.spacing(0.5), + }, + '& .sql-preview-actions': { + display: 'flex', + gap: theme.spacing(0.5), + }, + '& .sql-preview-editor': { + border: `1px solid ${theme.otherVars.borderColor}`, + borderRadius: theme.spacing(0.5), + overflow: 'auto', + '& .cm-editor': { + minHeight: '60px', + maxHeight: '250px', + }, + '& .cm-scroller': { + overflow: 'auto', + }, + }, +})); + +const InputArea = styled('div')(({ theme }) => ({ + flex: '0 0 auto', + padding: theme.spacing(1), + borderTop: `1px solid ${theme.otherVars.borderColor}`, + backgroundColor: theme.otherVars.editorToolbarBg, + display: 'flex', + gap: theme.spacing(1), + alignItems: 'flex-end', +})); + +const ThinkingIndicator = styled(Box)(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + gap: theme.spacing(1), + color: theme.palette.text.secondary, +})); + +// Message types +const MESSAGE_TYPES = { + USER: 'user', + ASSISTANT: 'assistant', + SQL: 'sql', + THINKING: 'thinking', + ERROR: 'error', +}; + +// Elephant/PostgreSQL-themed processing messages +const THINKING_MESSAGES = [ + 'Consulting the elephant...', + 'Traversing the B-tree...', + 'Vacuuming the catalog...', + 'Analyzing table statistics...', + 'Joining the herds...', + 'Indexing the savanna...', + 'Querying the watering hole...', + 'Optimizing the plan...', + 'Warming up the cache...', + 'Gathering the tuples...', + 'Scanning the relations...', + 'Checking constraints...', + 'Rolling back the peanuts...', + 'Committing to memory...', + 'Trumpeting the results...', +]; + +// Helper function to get a random thinking message +function getRandomThinkingMessage() { + return THINKING_MESSAGES[Math.floor(Math.random() * THINKING_MESSAGES.length)]; +} + +// Single chat message component +function ChatMessage({ message, onInsertSQL, onReplaceSQL, textColors, cmKey }) { + if (message.type === MESSAGE_TYPES.USER) { + return ( + + {message.content} + + ); + } + + if (message.type === MESSAGE_TYPES.SQL) { + return ( + + {message.explanation && ( + + {message.explanation} + + )} + + + + {gettext('Generated SQL')} + + + + onInsertSQL(message.sql)} + > + + + + + onReplaceSQL(message.sql)} + > + + + + + navigator.clipboard.writeText(message.sql)} + > + + + + + + + + + + + ); + } + + if (message.type === MESSAGE_TYPES.THINKING) { + return ( + + + + + {message.content} + + + + ); + } + + if (message.type === MESSAGE_TYPES.ERROR) { + return ( + + + {message.content} + + + ); + } + + return ( + + {message.content} + + ); +} + +// Main NLQ Chat Panel +export function NLQChatPanel() { + const [messages, setMessages] = useState([]); + const [inputValue, setInputValue] = useState(''); + const [isLoading, setIsLoading] = useState(false); + const [conversationId, setConversationId] = useState(null); + const [thinkingMessageId, setThinkingMessageId] = useState(null); + const [llmInfo, setLlmInfo] = useState({ provider: null, model: null }); + + // History navigation state + const [queryHistory, setQueryHistory] = useState([]); + const [historyIndex, setHistoryIndex] = useState(-1); + const [savedInput, setSavedInput] = useState(''); + + // Get text colors from the body element to match pgAdmin's theme + // The MUI theme may not be synced with pgAdmin's theme in docker tabs + const [textColors, setTextColors] = useState({ + primary: 'inherit', + secondary: 'inherit', + }); + + const messagesEndRef = useRef(null); + const abortControllerRef = useRef(null); + const readerRef = useRef(null); + const stoppedRef = useRef(false); + const eventBus = useContext(QueryToolEventsContext); + const queryToolCtx = useContext(QueryToolContext); + const editorPrefs = usePreferences().getPreferencesForModule('editor'); + + // Format SQL using pgAdmin's editor preferences + const formatSqlWithPrefs = useCallback((sql) => { + if (!sql) return sql; + try { + const formatPrefs = { + language: 'postgresql', + keywordCase: editorPrefs.keyword_case === 'capitalize' ? 'preserve' : editorPrefs.keyword_case, + identifierCase: editorPrefs.identifier_case === 'capitalize' ? 'preserve' : editorPrefs.identifier_case, + dataTypeCase: editorPrefs.data_type_case, + functionCase: editorPrefs.function_case, + logicalOperatorNewline: editorPrefs.logical_operator_new_line, + expressionWidth: editorPrefs.expression_width, + linesBetweenQueries: editorPrefs.lines_between_queries, + tabWidth: editorPrefs.tab_size, + useTabs: !editorPrefs.use_spaces, + denseOperators: !editorPrefs.spaces_around_operators, + newlineBeforeSemicolon: editorPrefs.new_line_before_semicolon + }; + return formatSQL(sql, formatPrefs); + } catch { + // If formatting fails, return original SQL + return sql; + } + }, [editorPrefs]); + + // Update text colors from body styles for theme compatibility + useEffect(() => { + const updateColors = () => { + const bodyStyles = window.getComputedStyle(document.body); + const primaryColor = bodyStyles.color; + + // For secondary color, create a semi-transparent version of the primary + // Use higher opacity (0.85) to ensure readability in light mode + const rgbMatch = primaryColor.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/); + let secondaryColor = primaryColor; + if (rgbMatch) { + const [, r, g, b] = rgbMatch; + secondaryColor = `rgba(${r}, ${g}, ${b}, 0.85)`; + } + + setTextColors({ + primary: primaryColor, + secondary: secondaryColor, + }); + }; + + updateColors(); + }, []); + + // Fetch LLM info on mount + useEffect(() => { + const api = getApiInstance(); + api.get(url_for('llm.status')) + .then((res) => { + if (res.data?.success && res.data?.data) { + setLlmInfo({ + provider: res.data.data.provider, + model: res.data.data.model + }); + } + }) + .catch(() => { + // Ignore errors fetching LLM status + }); + }, []); + + // Auto-scroll to bottom on new messages + useEffect(() => { + messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); + }, [messages]); + + // Force CodeMirror re-render when panel becomes visible (fixes tab switching issue) + const [cmKey, setCmKey] = useState(0); + useEffect(() => { + const unregister = eventBus.registerListener(QUERY_TOOL_EVENTS.FOCUS_PANEL, (panelId) => { + if (panelId === PANELS.AI_ASSISTANT) { + // Increment key to force CodeMirror re-render + setCmKey((prev) => prev + 1); + } + }); + return () => unregister?.(); + }, [eventBus]); + + // Cycle through thinking messages while loading + useEffect(() => { + if (!isLoading || !thinkingMessageId) return; + + const interval = setInterval(() => { + const newMessage = getRandomThinkingMessage(); + setMessages((prev) => + prev.map((m) => + m.id === thinkingMessageId ? { ...m, content: newMessage } : m + ) + ); + }, 2000); // Change message every 2 seconds + + return () => clearInterval(interval); + }, [isLoading, thinkingMessageId]); + + const handleInsertSQL = (sql) => { + eventBus.fireEvent(QUERY_TOOL_EVENTS.NLQ_INSERT_SQL, sql); + eventBus.fireEvent(QUERY_TOOL_EVENTS.FOCUS_PANEL, PANELS.QUERY); + }; + + const handleReplaceSQL = (sql) => { + eventBus.fireEvent(QUERY_TOOL_EVENTS.EDITOR_SET_SQL, sql); + eventBus.fireEvent(QUERY_TOOL_EVENTS.FOCUS_PANEL, PANELS.QUERY); + }; + + const handleClearConversation = () => { + setMessages([]); + setConversationId(null); + }; + + // Stop the current request + const handleStop = useCallback(() => { + // Mark as stopped so the read loop knows to show stopped message + stoppedRef.current = true; + // Cancel the active reader first (this actually stops the streaming) + if (readerRef.current) { + readerRef.current.cancel(); + readerRef.current = null; + } + // Then abort the fetch controller + if (abortControllerRef.current) { + abortControllerRef.current.abort(); + abortControllerRef.current = null; + } + }, []); + + // Fetch current LLM provider/model info + const fetchLlmInfo = useCallback(async () => { + try { + const api = getApiInstance(); + const res = await api.get(url_for('llm.status')); + if (res.data?.success && res.data?.data) { + setLlmInfo({ + provider: res.data.data.provider, + model: res.data.data.model + }); + } + } catch { + // Ignore errors fetching LLM status + } + }, []); + + const handleSubmit = async () => { + if (!inputValue.trim() || isLoading) return; + + // Reset stopped flag + stoppedRef.current = false; + + // Fetch latest LLM provider/model info before submitting + fetchLlmInfo(); + + const userMessage = inputValue.trim(); + setInputValue(''); + + // Add to query history (avoid duplicates of the last entry) + setQueryHistory((prev) => { + if (prev.length === 0 || prev[prev.length - 1] !== userMessage) { + return [...prev, userMessage]; + } + return prev; + }); + setHistoryIndex(-1); + setSavedInput(''); + + // Add user message + setMessages((prev) => [ + ...prev, + { + type: MESSAGE_TYPES.USER, + content: userMessage, + }, + ]); + + // Add thinking indicator with random elephant-themed message + const thinkingId = Date.now(); + setThinkingMessageId(thinkingId); + setMessages((prev) => [ + ...prev, + { + type: MESSAGE_TYPES.THINKING, + content: getRandomThinkingMessage(), + id: thinkingId, + }, + ]); + + setIsLoading(true); + + // Create abort controller with 5 minute timeout + const controller = new AbortController(); + abortControllerRef.current = controller; + const timeoutId = setTimeout(() => controller.abort(), 5 * 60 * 1000); + + try { + const response = await fetch( + url_for('sqleditor.nlq_chat_stream', { + trans_id: queryToolCtx.params.trans_id, + }), + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + message: userMessage, + conversation_id: conversationId, + }), + signal: controller.signal, + } + ); + + clearTimeout(timeoutId); + abortControllerRef.current = null; + + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + throw new Error(errorData.errormsg || `HTTP error! status: ${response.status}`); + } + + const reader = response.body.getReader(); + readerRef.current = reader; + const decoder = new TextDecoder(); + let buffer = ''; + + while (true) { + const { done, value } = await reader.read(); + if (done) break; + + buffer += decoder.decode(value, { stream: true }); + const lines = buffer.split('\n'); + buffer = lines.pop() || ''; + + for (const line of lines) { + if (line.startsWith('data: ')) { + try { + const data = JSON.parse(line.slice(6)); + handleSSEEvent(data, thinkingId); + } catch { + // Skip malformed JSON + } + } + } + } + + readerRef.current = null; + + // Check if user manually stopped + if (stoppedRef.current) { + setMessages((prev) => [ + ...prev.filter((m) => m.id !== thinkingId), + { + type: MESSAGE_TYPES.ASSISTANT, + content: gettext('Generation stopped.'), + }, + ]); + } + } catch (error) { + clearTimeout(timeoutId); + abortControllerRef.current = null; + readerRef.current = null; + // Show appropriate message based on error type + if (error.name === 'AbortError') { + // Check if this was a user-initiated stop or a timeout + if (stoppedRef.current) { + // User manually stopped + setMessages((prev) => [ + ...prev.filter((m) => m.id !== thinkingId), + { + type: MESSAGE_TYPES.ASSISTANT, + content: gettext('Generation stopped.'), + }, + ]); + } else { + // Timeout occurred + setMessages((prev) => [ + ...prev.filter((m) => m.id !== thinkingId), + { + type: MESSAGE_TYPES.ERROR, + content: gettext('Request timed out. The query may be too complex. Please try a simpler request.'), + }, + ]); + } + } else { + setMessages((prev) => [ + ...prev.filter((m) => m.id !== thinkingId), + { + type: MESSAGE_TYPES.ERROR, + content: gettext('Failed to generate SQL: ') + error.message, + }, + ]); + } + } finally { + setIsLoading(false); + setThinkingMessageId(null); + } + }; + + const handleSSEEvent = (event, thinkingId) => { + switch (event.type) { + case 'thinking': + setMessages((prev) => + prev.map((m) => + m.id === thinkingId ? { ...m, content: event.message } : m + ) + ); + break; + + case 'sql': + case 'complete': + // If sql is null/empty, show as regular assistant message (e.g., clarification questions) + if (!event.sql) { + setMessages((prev) => [ + ...prev.filter((m) => m.id !== thinkingId), + { + type: MESSAGE_TYPES.ASSISTANT, + content: event.explanation || gettext('I need more information to generate the SQL.'), + }, + ]); + } else { + setMessages((prev) => [ + ...prev.filter((m) => m.id !== thinkingId), + { + type: MESSAGE_TYPES.SQL, + sql: formatSqlWithPrefs(event.sql), + explanation: event.explanation, + }, + ]); + } + if (event.conversation_id) { + setConversationId(event.conversation_id); + } + break; + + case 'error': + setMessages((prev) => [ + ...prev.filter((m) => m.id !== thinkingId), + { + type: MESSAGE_TYPES.ERROR, + content: event.message, + }, + ]); + break; + } + }; + + const handleKeyDown = (e) => { + if (e.key === 'Enter' && !e.shiftKey) { + e.preventDefault(); + handleSubmit(); + } else if (e.key === 'ArrowUp' && queryHistory.length > 0) { + e.preventDefault(); + if (historyIndex === -1) { + // Starting to navigate history, save current input + setSavedInput(inputValue); + const newIndex = queryHistory.length - 1; + setHistoryIndex(newIndex); + setInputValue(queryHistory[newIndex]); + } else if (historyIndex > 0) { + // Move further back in history + const newIndex = historyIndex - 1; + setHistoryIndex(newIndex); + setInputValue(queryHistory[newIndex]); + } + } else if (e.key === 'ArrowDown' && historyIndex !== -1) { + e.preventDefault(); + if (historyIndex < queryHistory.length - 1) { + // Move forward in history + const newIndex = historyIndex + 1; + setHistoryIndex(newIndex); + setInputValue(queryHistory[newIndex]); + } else { + // At the end of history, restore saved input + setHistoryIndex(-1); + setInputValue(savedInput); + } + } + }; + + // Don't render if not a query tool (e.g., View Data mode) + if (!queryToolCtx?.params?.is_query_tool) { + return ( + + ); + } + + return ( + + + + + {gettext('AI Assistant')} + + {llmInfo.provider && ( + + ({llmInfo.provider}{llmInfo.model ? ` / ${llmInfo.model}` : ''}) + + )} + + } + > + {gettext('Clear')} + + + + + {messages.length === 0 ? ( + + + {gettext( + 'Describe what SQL you need and I\'ll generate it for you. ' + + 'I can help with SELECT, INSERT, UPDATE, DELETE, and DDL statements.' + )} + + + ) : ( + messages.map((msg, idx) => ( + + )) + )} +

+ + + + setInputValue(e.target.value)} + onKeyDown={handleKeyDown} + disabled={isLoading} + sx={{ + flex: 1, + minWidth: 0, + '& .MuiOutlinedInput-root': { + backgroundColor: 'background.paper', + alignItems: 'flex-start', + padding: '4px 8px', + }, + '& .MuiOutlinedInput-root.Mui-disabled': { + backgroundColor: 'transparent', + }, + '& .MuiOutlinedInput-notchedOutline': { + borderColor: 'divider', + }, + '& .MuiInputBase-input': { + padding: '4px 0', + fontSize: '0.875rem', + }, + '& .MuiOutlinedInput-input::placeholder': { + color: textColors.secondary, + opacity: 1, + }, + }} + /> + : } + onClick={isLoading ? handleStop : handleSubmit} + disabled={!isLoading && !inputValue.trim()} + /> + + + ); +} + +export default NLQChatPanel; diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx index 4ae627bb621..a8ecd78e854 100644 --- a/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx +++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/Query.jsx @@ -224,6 +224,13 @@ export default function Query({onTextSelect, setQtStatePartial}) { }, 250); }); + eventBus.registerListener(QUERY_TOOL_EVENTS.NLQ_INSERT_SQL, (sql)=>{ + // Insert SQL at current cursor position + const cursorPos = editor.current?.getCursor() || {line: 0, ch: 0}; + editor.current?.replaceRange(sql, cursorPos); + editor.current?.focus(); + }); + eventBus.registerListener(QUERY_TOOL_EVENTS.EDITOR_SET_SQL, (value, focus=true)=>{ focus && editor.current?.focus(); editor.current?.setValue(value, !queryToolCtx.params.is_query_tool); diff --git a/web/pgadmin/tools/sqleditor/tests/test_nlq_chat.py b/web/pgadmin/tools/sqleditor/tests/test_nlq_chat.py new file mode 100644 index 00000000000..a9bb9b5053d --- /dev/null +++ b/web/pgadmin/tools/sqleditor/tests/test_nlq_chat.py @@ -0,0 +1,166 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Tests for the NLQ (Natural Language Query) chat endpoint.""" + +import json +from unittest.mock import patch, MagicMock + +from pgadmin.utils.route import BaseTestGenerator + + +class NLQChatTestCase(BaseTestGenerator): + """Test cases for NLQ chat streaming endpoint""" + + scenarios = [ + ('NLQ Chat - LLM Disabled', dict( + llm_enabled=False, + expected_error=True, + error_contains='AI features are not configured' + )), + ('NLQ Chat - Invalid Transaction', dict( + llm_enabled=True, + valid_transaction=False, + expected_error=True, + error_contains='Transaction ID' + )), + ('NLQ Chat - Empty Message', dict( + llm_enabled=True, + valid_transaction=True, + message='', + expected_error=True, + error_contains='provide a message' + )), + ('NLQ Chat - Success', dict( + llm_enabled=True, + valid_transaction=True, + message='Find all users', + expected_error=False, + mock_response='{"sql": "SELECT * FROM users;", "explanation": "Gets all users"}' + )), + ] + + def setUp(self): + pass + + def runTest(self): + """Test NLQ chat endpoint""" + trans_id = 12345 + + # Build the mock chain + patches = [] + + # Mock LLM availability (patch where it's imported from) + mock_llm_enabled = patch( + 'pgadmin.llm.utils.is_llm_enabled', + return_value=self.llm_enabled + ) + patches.append(mock_llm_enabled) + + # Mock check_transaction_status + if hasattr(self, 'valid_transaction') and self.valid_transaction: + mock_trans_obj = MagicMock() + mock_trans_obj.sid = 1 + mock_trans_obj.did = 1 + + mock_conn = MagicMock() + mock_conn.connected.return_value = True + + mock_session = {'sid': 1, 'did': 1} + + mock_check_trans = patch( + 'pgadmin.tools.sqleditor.check_transaction_status', + return_value=(True, None, mock_conn, mock_trans_obj, mock_session) + ) + else: + mock_check_trans = patch( + 'pgadmin.tools.sqleditor.check_transaction_status', + return_value=(False, 'Transaction ID not found', None, None, None) + ) + patches.append(mock_check_trans) + + # Mock chat_with_database + if hasattr(self, 'mock_response'): + mock_chat = patch( + 'pgadmin.llm.chat.chat_with_database', + return_value=(self.mock_response, []) + ) + patches.append(mock_chat) + + # Mock CSRF protection + mock_csrf = patch( + 'pgadmin.authenticate.mfa.utils.mfa_required', + lambda f: f + ) + patches.append(mock_csrf) + + # Start all patches + for p in patches: + p.start() + + try: + # Make request + message = getattr(self, 'message', 'test query') + response = self.tester.post( + f'/sqleditor/nlq/chat/{trans_id}/stream', + data=json.dumps({'message': message}), + content_type='application/json', + follow_redirects=True + ) + + if self.expected_error: + # For error cases, we expect JSON response + if response.status_code == 200 and \ + response.content_type == 'application/json': + data = json.loads(response.data) + self.assertFalse(data.get('success', True)) + if hasattr(self, 'error_contains'): + self.assertIn( + self.error_contains, + data.get('errormsg', '') + ) + else: + # For success, we expect SSE stream + self.assertEqual(response.status_code, 200) + self.assertIn('text/event-stream', response.content_type) + + finally: + # Stop all patches + for p in patches: + p.stop() + + def tearDown(self): + pass + + +class NLQSystemPromptTestCase(BaseTestGenerator): + """Test cases for NLQ system prompt""" + + scenarios = [ + ('NLQ Prompt - Import', dict()), + ] + + def setUp(self): + pass + + def runTest(self): + """Test NLQ system prompt can be imported""" + from pgadmin.llm.prompts.nlq import NLQ_SYSTEM_PROMPT + + # Verify prompt is a non-empty string + self.assertIsInstance(NLQ_SYSTEM_PROMPT, str) + self.assertGreater(len(NLQ_SYSTEM_PROMPT), 100) + + # Verify key content is present + self.assertIn('PostgreSQL', NLQ_SYSTEM_PROMPT) + self.assertIn('SQL', NLQ_SYSTEM_PROMPT) + self.assertIn('get_database_schema', NLQ_SYSTEM_PROMPT) + + def tearDown(self): + pass diff --git a/web/regression/javascript/sqleditor/NLQChatPanel.spec.js b/web/regression/javascript/sqleditor/NLQChatPanel.spec.js new file mode 100644 index 00000000000..d85dce4bdff --- /dev/null +++ b/web/regression/javascript/sqleditor/NLQChatPanel.spec.js @@ -0,0 +1,181 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + +// Mock url_for +jest.mock('sources/url_for', () => ({ + __esModule: true, + default: jest.fn((endpoint) => `/mock/${endpoint}`), +})); + +// Mock preferences store +jest.mock('../../../pgadmin/preferences/static/js/store', () => ({ + __esModule: true, + default: jest.fn(() => ({ + getPreferencesForModule: jest.fn(() => ({})), + })), +})); + +// Mock the QueryToolComponent to avoid importing all its dependencies +jest.mock('../../../pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx', () => { + const React = require('react'); + return { + QueryToolContext: React.createContext(null), + QueryToolEventsContext: React.createContext(null), + }; +}); + +// Mock CodeMirror +jest.mock('../../../pgadmin/static/js/components/ReactCodeMirror', () => ({ + __esModule: true, + default: ({ value }) =>
{value}
, +})); + +// Mock EmptyPanelMessage +jest.mock('../../../pgadmin/static/js/components/EmptyPanelMessage', () => ({ + __esModule: true, + default: ({ text }) =>
{text}
, +})); + +// Mock Loader +jest.mock('sources/components/Loader', () => ({ + __esModule: true, + default: () =>
Loading...
, +})); + +import { render, screen, fireEvent } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { withTheme } from '../fake_theme'; +import { NLQChatPanel } from '../../../pgadmin/tools/sqleditor/static/js/components/sections/NLQChatPanel.jsx'; +import { + QueryToolContext, + QueryToolEventsContext, +} from '../../../pgadmin/tools/sqleditor/static/js/components/QueryToolComponent.jsx'; + +// Mock the EventBus +const createMockEventBus = () => ({ + fireEvent: jest.fn(), + registerListener: jest.fn(), +}); + +// Mock the QueryToolContext +const createMockQueryToolCtx = (isQueryTool = true) => ({ + params: { + trans_id: 12345, + is_query_tool: isQueryTool, + }, + api: { + post: jest.fn(), + get: jest.fn(), + }, +}); + +// Helper to render with contexts +const renderWithContexts = (component, { queryToolCtx, eventBus } = {}) => { + const mockEventBus = eventBus || createMockEventBus(); + const mockQueryToolCtx = queryToolCtx || createMockQueryToolCtx(); + + return render( + + + {component} + + + ); +}; + +describe('NLQChatPanel Component', () => { + let ThemedNLQChatPanel; + + beforeAll(() => { + ThemedNLQChatPanel = withTheme(NLQChatPanel); + + // Mock fetch for SSE + global.fetch = jest.fn(); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should render without crashing', () => { + const { container } = renderWithContexts(); + expect(container).toBeInTheDocument(); + }); + + it('should show AI Assistant header', () => { + renderWithContexts(); + expect(screen.getByText('AI Assistant')).toBeInTheDocument(); + }); + + it('should show empty state message when no messages', () => { + renderWithContexts(); + expect( + screen.getByText(/Describe what SQL you need/i) + ).toBeInTheDocument(); + }); + + it('should have input field for typing queries', () => { + renderWithContexts(); + const input = screen.getByPlaceholderText(/Describe the SQL you need/i); + expect(input).toBeInTheDocument(); + }); + + it('should have send button', () => { + renderWithContexts(); + const sendButton = screen.getByLabelText('Send'); + expect(sendButton).toBeInTheDocument(); + }); + + it('should have clear conversation button', () => { + renderWithContexts(); + const clearButton = screen.getByText('Clear'); + expect(clearButton).toBeInTheDocument(); + }); + + it('should disable send button when input is empty', () => { + const { container } = renderWithContexts(); + const sendButton = container.querySelector('button[data-label="Send"]'); + expect(sendButton).toBeDisabled(); + }); + + it('should enable send button when input has text', () => { + const { container } = renderWithContexts(); + const input = screen.getByPlaceholderText(/Describe the SQL you need/i); + + fireEvent.change(input, { target: { value: 'Find all users' } }); + + const sendButton = container.querySelector('button[data-label="Send"]'); + expect(sendButton).not.toBeDisabled(); + }); + + it('should show message when not in query tool mode', () => { + const mockQueryToolCtx = createMockQueryToolCtx(false); + renderWithContexts(, { + queryToolCtx: mockQueryToolCtx, + }); + + expect( + screen.getByText(/AI Assistant is only available in Query Tool mode/i) + ).toBeInTheDocument(); + }); + + it('should clear input after typing and clicking clear', () => { + renderWithContexts(); + const input = screen.getByPlaceholderText(/Describe the SQL you need/i); + + fireEvent.change(input, { target: { value: 'Find all users' } }); + expect(input.value).toBe('Find all users'); + + const clearButton = screen.getByText('Clear'); + fireEvent.click(clearButton); + + // Input should still have text (clear only clears messages) + expect(input.value).toBe('Find all users'); + }); +}); From 9b4e283a9f9db42eea64bdd83712ea52397e3319 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Wed, 17 Dec 2025 16:34:24 +0000 Subject: [PATCH 04/17] Add an AI Insights panel to the EXPLAIN tool in the Query Tool, to analyse and report on issues in query plans. --- .../images/query_explain_ai_insights.png | Bin 0 -> 134089 bytes docs/en_US/query_tool.rst | 38 + web/pgadmin/llm/prompts/__init__.py | 3 +- web/pgadmin/llm/prompts/explain.py | 83 ++ web/pgadmin/static/js/Explain/AIInsights.jsx | 1073 +++++++++++++++++ web/pgadmin/static/js/Explain/index.jsx | 53 +- web/pgadmin/tools/sqleditor/__init__.py | 160 +++ .../js/components/sections/ResultSet.jsx | 24 +- .../tests/test_explain_analyze_ai.py | 199 +++ .../javascript/Explain/AIInsights.spec.js | 220 ++++ 10 files changed, 1844 insertions(+), 9 deletions(-) create mode 100644 docs/en_US/images/query_explain_ai_insights.png create mode 100644 web/pgadmin/llm/prompts/explain.py create mode 100644 web/pgadmin/static/js/Explain/AIInsights.jsx create mode 100644 web/pgadmin/tools/sqleditor/tests/test_explain_analyze_ai.py create mode 100644 web/regression/javascript/Explain/AIInsights.spec.js diff --git a/docs/en_US/images/query_explain_ai_insights.png b/docs/en_US/images/query_explain_ai_insights.png new file mode 100644 index 0000000000000000000000000000000000000000..a53273bc914f8b3810f6420a7d1b4be16064b6ee GIT binary patch literal 134089 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

IQ$DV*G1~H*?QvjEho! z083|Zpo(69XR6ZO;GTzSXdY{waWL18;5S|N8mshVd0IP^2v6jM3_q;P`^?3EQ+j0G zRC?zysyJSU)!e<^>x#!)l^?O)KDG8~eySuwXI+PluQ$$(>q@-Jrl9EOghDN%( zQChkYq`P_docB8Cdw%ERb

z|8aPy`R1B`(Eo_D{V>cmfn+z?lAF`t@!q5=Ffrv z-VhZ`Xw_Gg7 z9Zu=lnSm8ohsv9HP_dpxt3>Kjzy=6ixpc`C_!JS!KJ%z&^_Mt>6lAq6T_RPO2SaZn z;dA{Lb#OXhOYR3hopHzQPi39)jyR;1koZ}XA8liMnIyVrd3ruEDN7RbjsrQB#NU$r z%eT5$U6;H+xq~AYRTBmYQo@Px9>CTBgC;dI0pBRmw0%HsD!~xe25S%MMDE6fz^-y0 zlwWnc;v(lN;;;P{&xpr0YMvjUgqwi?(M;x&n&YhKrMVL<;$Sj?aQs$;3M=!N#xi>I z^tHwZN;0rP@TeI0nF`)4FfqWQf>?zBV>og%u?!%K>3*TJuZ*Fn*yZmYXz6-zy=Gno zB%;kGawa0>$K8yh0?Ltg`(q_L&X#VmCz|P6H2M?Rj7Cb%TIpJ1DKDj$J{0&rP9O~J z+iC3`3v7X_n^5SvsdfB%63pr9Dd#C=&DGyZif1dv$He*&tE89uAtsX&2mAa*VmRc~ zKgz%t(4bO!=qUvDDTrmwvZAHBv0IMU7-M2`jx>xlQ`y%0&{@xW{l7~`Y1uxE@^iUj zb)VNioFK3RWu-GN6 zwXSI(xe$9C9@_%rS^L+?kX&%9&f3saWA{^Hy1l2=THD;X?Pl}#{NA=^BI)y68)GL( zV&t=r^=fvM^2bzU_9Aw^840=uej3xS{!lYZf-GbR0m0Lp&y0OqE*%R4?rGSF!4&_X z5vNRI>=K_E|53t7PUl;!xx~W?F7qe7nQBxieB9DOLUn6A0XwHd3vk z0mVqF>Ci))U^co@c_`J8letA8ni=%6wIhHp`A0tPba_OFT)3SvbY%-?(Wyo}7G_M$ z?T?&Gr`l0VD6!ig!9c<3L1%g^xK7XReL=SVc^66bqBT;4&-qqZ%H;n7#{m(LB zWvLz2WCY);@(-d<5chB1y9~`Xq;}K9n41^0P?YuQ4fAn?qMFvf@1d97v1Z-FT(2)k^HYNn+bw?d(um1$Rppj(3zYHG z*s0R6cUJ&8pr2lJTuF(tRe~27;msqM91!N|(EwaBdV&!g-9+vcvrbc7#P(SKN5~l{ z9xU0g)$*_!!{R>6h&Lbgjy6Gz2kJvSrz$8aj>bi)e@w$$Ql`Uf)_OjvI^A38 zJg5+VbH}hrsVuobDv#!fqf3_Z;8zg&xekM(K%ez!kQSmWI%}2wJA11LE~W$=JQfBI z{eCUO6d`UjD^Y31pdJE(8eRMoI`cSz
{KH7M}7l{#}R_1ceuuei|6)|6rks$O{ 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 n5*I+~=)*?WfMZoFj AI*. + +.. image:: images/query_explain_ai_insights.png + :alt: Query tool explain plan AI insights + :align: center + +When you switch to the AI Insights tab, the AI analyzes the execution plan and +provides: + +**Performance Bottlenecks** - Issues identified in the query plan, such as: + +* Sequential scans on large tables that could benefit from indexes +* Significant differences between estimated and actual row counts +* Expensive sort or hash operations +* Nested loops with high iteration counts + +**Recommendations** - Concrete suggestions to improve query performance: + +* Index creation statements with appropriate columns +* ANALYZE commands to update table statistics +* Configuration parameter adjustments +* Query restructuring suggestions + +Each recommendation that includes SQL (such as CREATE INDEX statements) has +action buttons to *Copy* the SQL to the clipboard or *Insert* it into the +Query Editor. + +Click the *Regenerate* button to request a fresh analysis of the current plan. + +**Note:** AI analysis is generated on-demand when you first click the AI Insights +tab or when a new explain plan is generated while the tab is active. The analysis +provides guidance but all suggested changes should be carefully evaluated before +applying to production databases. + Messages Panel ************** diff --git a/web/pgadmin/llm/prompts/__init__.py b/web/pgadmin/llm/prompts/__init__.py index b8966eb70f9..905fa69f811 100644 --- a/web/pgadmin/llm/prompts/__init__.py +++ b/web/pgadmin/llm/prompts/__init__.py @@ -10,5 +10,6 @@ """LLM prompt templates for various features.""" from pgadmin.llm.prompts.nlq import NLQ_SYSTEM_PROMPT +from pgadmin.llm.prompts.explain import EXPLAIN_ANALYSIS_PROMPT -__all__ = ['NLQ_SYSTEM_PROMPT'] +__all__ = ['NLQ_SYSTEM_PROMPT', 'EXPLAIN_ANALYSIS_PROMPT'] diff --git a/web/pgadmin/llm/prompts/explain.py b/web/pgadmin/llm/prompts/explain.py new file mode 100644 index 00000000000..6d29fa47eab --- /dev/null +++ b/web/pgadmin/llm/prompts/explain.py @@ -0,0 +1,83 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""System prompt for EXPLAIN plan analysis.""" + +EXPLAIN_ANALYSIS_PROMPT = """You are a PostgreSQL performance expert integrated into pgAdmin 4. +Your task is to analyze EXPLAIN plan output and provide actionable optimization recommendations. + +## Input Format + +You will receive: +1. The EXPLAIN plan output in JSON format (from EXPLAIN (FORMAT JSON, ANALYZE, ...)) +2. The original SQL query that was analyzed + +## Analysis Guidelines + +1. **Identify Performance Bottlenecks**: + - Sequential scans on large tables (consider if an index would help) + - Nested loops with high row counts (may indicate missing indexes or poor join order) + - Large row estimate variances (actual vs planned) suggesting stale statistics + - Sort operations on large datasets without indexes + - Hash joins spilling to disk (indicated by batch counts > 1) + - High startup costs relative to total costs + - Bitmap heap scans with many recheck conditions + +2. **Severity Classification**: + - "high": Major performance impact, should be addressed + - "medium": Notable impact, worth investigating + - "low": Minor optimization opportunity + +3. **Provide Actionable Recommendations**: + - Suggest specific CREATE INDEX statements when appropriate + - Recommend ANALYZE for tables with row estimate issues + - Suggest query rewrites when the structure is suboptimal + - Recommend configuration changes (work_mem, etc.) when relevant + - Include the exact SQL for any suggested changes + +4. **Consider Context**: + - Small tables may not benefit from indexes + - Some sequential scans are optimal (e.g., selecting most rows) + - ANALYZE timing may be relevant for row estimate issues + - Partial indexes may be better than full indexes + +## Response Format + +IMPORTANT: Your response MUST be ONLY a valid JSON object with no additional text, +no markdown formatting, and no code blocks. Return exactly this format: + +{ + "bottlenecks": [ + { + "severity": "high|medium|low", + "node": "Node description from plan", + "issue": "Brief description of the problem", + "details": "Detailed explanation of why this is a problem and its impact" + } + ], + "recommendations": [ + { + "priority": 1, + "title": "Short title for the recommendation", + "explanation": "Why this change will help", + "sql": "Exact SQL to execute (if applicable, otherwise null)" + } + ], + "summary": "One paragraph summary of the overall plan performance and key takeaways" +} + +Rules: +- Return ONLY the JSON object, nothing before or after it +- Do NOT wrap the JSON in markdown code blocks (no ```) +- Order bottlenecks by severity (high first) +- Order recommendations by priority (1 = highest) +- If the plan looks optimal, return empty bottlenecks array with a positive summary +- Always include at least a summary, even for simple plans +- The "sql" field should be null if no SQL action is applicable +""" diff --git a/web/pgadmin/static/js/Explain/AIInsights.jsx b/web/pgadmin/static/js/Explain/AIInsights.jsx new file mode 100644 index 00000000000..bad14215746 --- /dev/null +++ b/web/pgadmin/static/js/Explain/AIInsights.jsx @@ -0,0 +1,1073 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// +import { useState, useEffect, useCallback, useRef } from 'react'; +import { styled } from '@mui/material/styles'; +import { + Box, + Typography, + IconButton, + Tooltip, + Chip, + Divider, +} from '@mui/material'; +import RefreshIcon from '@mui/icons-material/Refresh'; +import StopIcon from '@mui/icons-material/Stop'; +import DownloadIcon from '@mui/icons-material/Download'; +import ContentCopyIcon from '@mui/icons-material/ContentCopy'; +import AddIcon from '@mui/icons-material/Add'; +import WarningAmberIcon from '@mui/icons-material/WarningAmber'; +import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline'; +import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined'; +import LightbulbOutlinedIcon from '@mui/icons-material/LightbulbOutlined'; +import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; +import PropTypes from 'prop-types'; +import gettext from 'sources/gettext'; +import url_for from 'sources/url_for'; +import getApiInstance from '../api_instance'; +import Loader from '../components/Loader'; +import EmptyPanelMessage from '../components/EmptyPanelMessage'; +import { DefaultButton, PrimaryButton } from '../components/Buttons'; + +const StyledContainer = styled(Box)(({ theme }) => ({ + height: '100%', + display: 'flex', + flexDirection: 'column', + overflow: 'hidden', + backgroundColor: theme.palette.background.default, +})); + +const Header = styled(Box)(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + padding: theme.spacing(1, 2), + borderBottom: `1px solid ${theme.palette.divider}`, + backgroundColor: theme.palette.background.paper, +})); + +const ContentArea = styled(Box)({ + flex: 1, + overflow: 'auto', + padding: '16px', + userSelect: 'text', + cursor: 'auto', +}); + +const Section = styled(Box)(({ theme }) => ({ + marginBottom: theme.spacing(2), + padding: theme.spacing(2), + backgroundColor: theme.palette.background.default, + borderRadius: theme.shape.borderRadius, +})); + +const SectionHeader = styled(Box)(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + gap: theme.spacing(1), + marginBottom: theme.spacing(1.5), +})); + +const BottleneckItem = styled(Box)(({ theme, severity }) => ({ + display: 'flex', + gap: theme.spacing(1.5), + padding: theme.spacing(1.5), + marginBottom: theme.spacing(1), + borderRadius: theme.shape.borderRadius, + backgroundColor: theme.palette.background.default, + borderLeft: `4px solid ${ + severity === 'high' + ? theme.palette.error.main + : severity === 'medium' + ? theme.palette.warning.main + : theme.palette.info.main + }`, + '&:last-child': { + marginBottom: 0, + }, +})); + +const RecommendationItem = styled(Box)(({ theme }) => ({ + padding: theme.spacing(1.5), + marginBottom: theme.spacing(1), + borderRadius: theme.shape.borderRadius, + backgroundColor: theme.palette.background.default, + borderLeft: `4px solid ${theme.palette.primary.main}`, + '&:last-child': { + marginBottom: 0, + }, +})); + +const SQLBox = styled(Box)(({ theme }) => ({ + marginTop: theme.spacing(1), + padding: theme.spacing(1), + backgroundColor: theme.palette.action.hover, + borderRadius: theme.shape.borderRadius, + fontFamily: 'monospace', + fontSize: '0.85rem', + whiteSpace: 'pre-wrap', + wordBreak: 'break-word', + border: `1px solid ${theme.palette.text.disabled}`, +})); + +const ActionButtons = styled(Box)(({ theme }) => ({ + display: 'flex', + gap: theme.spacing(0.5), + marginTop: theme.spacing(1), + justifyContent: 'flex-end', +})); + +const LoadingContainer = styled(Box)({ + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + height: '100%', + gap: '16px', +}); + +// PostgreSQL/Elephant themed thinking messages +const THINKING_MESSAGES = [ + gettext('Analyzing query plan...'), + gettext('Examining node costs...'), + gettext('Looking for sequential scans...'), + gettext('Checking index usage...'), + gettext('Evaluating join strategies...'), + gettext('Identifying bottlenecks...'), + gettext('Calculating row estimates...'), + gettext('Reviewing execution times...'), +]; + +function getRandomThinkingMessage() { + return THINKING_MESSAGES[Math.floor(Math.random() * THINKING_MESSAGES.length)]; +} + +function getSeverityIcon(severity) { + switch (severity) { + case 'high': + return ; + case 'medium': + return ; + default: + return ; + } +} + +function BottleneckCard({ bottleneck, textColors }) { + return ( + + + {getSeverityIcon(bottleneck.severity)} + + + + {bottleneck.node} + + + {bottleneck.issue} + + {bottleneck.details && ( + + {bottleneck.details} + + )} + + + + + + ); +} + +BottleneckCard.propTypes = { + bottleneck: PropTypes.shape({ + severity: PropTypes.string, + node: PropTypes.string, + issue: PropTypes.string, + details: PropTypes.string, + }).isRequired, + textColors: PropTypes.object, +}; + +function RecommendationCard({ recommendation, onInsertSQL, onCopySQL, textColors }) { + return ( + + + + {recommendation.priority} + + + + {recommendation.title} + + + {recommendation.explanation} + + {recommendation.sql && ( + <> + {recommendation.sql} + + + onCopySQL(recommendation.sql)} + > + + + + + onInsertSQL(recommendation.sql)} + > + + + + + + )} + + + + ); +} + +RecommendationCard.propTypes = { + recommendation: PropTypes.shape({ + priority: PropTypes.number, + title: PropTypes.string, + explanation: PropTypes.string, + sql: PropTypes.string, + }).isRequired, + onInsertSQL: PropTypes.func.isRequired, + onCopySQL: PropTypes.func.isRequired, + textColors: PropTypes.object, +}; + +export default function AIInsights({ + plans, + sql, + transId, + onInsertSQL, + isActive, +}) { + const [analysisState, setAnalysisState] = useState('idle'); // idle | loading | complete | error + const [bottlenecks, setBottlenecks] = useState([]); + const [recommendations, setRecommendations] = useState([]); + const [summary, setSummary] = useState(''); + const [errorMessage, setErrorMessage] = useState(''); + const [thinkingMessage, setThinkingMessage] = useState( + getRandomThinkingMessage() + ); + const [textColors, setTextColors] = useState({ + primary: 'inherit', + secondary: 'inherit', + }); + const [llmInfo, setLlmInfo] = useState({ provider: null, model: null }); + + // Track if we've analyzed the current plan + const analyzedPlanRef = useRef(null); + const prevPlansRef = useRef(null); + const abortControllerRef = useRef(null); + const readerRef = useRef(null); + const stoppedRef = useRef(false); + + // Detect new EXPLAIN runs by tracking plan object reference + // This ensures re-analysis even when plan content is identical + useEffect(() => { + if (plans !== prevPlansRef.current) { + prevPlansRef.current = plans; + if (plans) { + // New plans received (new EXPLAIN run), allow re-analysis + analyzedPlanRef.current = null; + } + } + }, [plans]); + + // Stop the current analysis + const stopAnalysis = useCallback(() => { + // Mark as stopped so the read loop knows not to set complete state + stoppedRef.current = true; + // Mark current plan as handled to prevent auto-restart + // (user can still click Regenerate, or run a new EXPLAIN) + analyzedPlanRef.current = plans; + // Cancel the active reader first (this actually stops the streaming) + if (readerRef.current) { + readerRef.current.cancel(); + readerRef.current = null; + } + // Then abort the fetch controller + if (abortControllerRef.current) { + abortControllerRef.current.abort(); + abortControllerRef.current = null; + } + setAnalysisState('stopped'); + setErrorMessage(''); + }, [plans]); + + // Fetch LLM provider/model info + const fetchLlmInfo = useCallback(async () => { + try { + const api = getApiInstance(); + const res = await api.get(url_for('llm.status')); + if (res.data?.success && res.data?.data) { + setLlmInfo({ + provider: res.data.data.provider, + model: res.data.data.model + }); + } + } catch { + // LLM status not available - ignore + } + }, []); + + // Fetch LLM info on mount + useEffect(() => { + fetchLlmInfo(); + }, [fetchLlmInfo]); + + // Update text colors from body styles for theme compatibility + useEffect(() => { + const bodyStyles = window.getComputedStyle(document.body); + const primaryColor = bodyStyles.color; + + const rgbMatch = primaryColor.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/); + let secondaryColor = primaryColor; + if (rgbMatch) { + const [, r, g, b] = rgbMatch; + secondaryColor = `rgba(${r}, ${g}, ${b}, 0.7)`; + } + + setTextColors({ + primary: primaryColor, + secondary: secondaryColor, + }); + }, []); + + // Cycle through thinking messages while loading + useEffect(() => { + if (analysisState !== 'loading') return; + + const interval = setInterval(() => { + setThinkingMessage(getRandomThinkingMessage()); + }, 2000); + + return () => clearInterval(interval); + }, [analysisState]); + + const runAnalysis = useCallback(async () => { + if (!plans || !transId) return; + + // Reset stopped flag + stoppedRef.current = false; + + // Fetch latest LLM provider/model info before running analysis + fetchLlmInfo(); + + setAnalysisState('loading'); + setBottlenecks([]); + setRecommendations([]); + setSummary(''); + setErrorMessage(''); + setThinkingMessage(getRandomThinkingMessage()); + + // Create abort controller with 5 minute timeout for complex plans + const controller = new AbortController(); + abortControllerRef.current = controller; + const timeoutId = setTimeout(() => controller.abort(), 5 * 60 * 1000); + + try { + const response = await fetch( + url_for('sqleditor.explain_analyze_stream', { trans_id: transId }), + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + plan: plans, + sql: sql || '', + }), + signal: controller.signal, + } + ); + + clearTimeout(timeoutId); + abortControllerRef.current = null; + + if (!response.ok) { + const errorData = await response.json(); + throw new Error(errorData.errormsg || 'Analysis request failed'); + } + + const reader = response.body.getReader(); + readerRef.current = reader; + const decoder = new TextDecoder(); + let buffer = ''; + + let receivedComplete = false; + + while (true) { + const { done, value } = await reader.read(); + if (done) break; + + buffer += decoder.decode(value, { stream: true }); + const lines = buffer.split('\n'); + buffer = lines.pop() || ''; + + for (const line of lines) { + if (line.startsWith('data: ')) { + try { + const event = JSON.parse(line.slice(6)); + handleSSEEvent(event); + if (event.type === 'complete' || event.type === 'error') { + receivedComplete = true; + } + } catch (parseErr) { + // Log parse errors for debugging + console.warn('Failed to parse SSE event:', line, parseErr); + } + } + } + } + + // Process any remaining data in buffer + if (buffer.trim()) { + const remainingLines = buffer.split('\n'); + for (const line of remainingLines) { + if (line.startsWith('data: ')) { + try { + const event = JSON.parse(line.slice(6)); + handleSSEEvent(event); + if (event.type === 'complete' || event.type === 'error') { + receivedComplete = true; + } + } catch { + // Ignore remaining parse errors + } + } + } + } + + readerRef.current = null; + + // Don't change state if user manually stopped + if (stoppedRef.current) { + return; + } + + // Fallback: if stream ended without complete/error event, set to complete + if (!receivedComplete) { + console.warn('SSE stream ended without complete event'); + setAnalysisState('complete'); + } + + analyzedPlanRef.current = plans; + } catch (err) { + clearTimeout(timeoutId); + abortControllerRef.current = null; + readerRef.current = null; + // Don't show error if user manually stopped + if (err.name === 'AbortError') { + // Check if this was a user-initiated stop (state already set to idle) + // or a timeout (state still loading) + setAnalysisState((current) => { + if (current === 'loading') { + setErrorMessage('Analysis timed out. The plan may be too complex for the AI model.'); + return 'error'; + } + return current; // Keep idle state if user stopped + }); + } else { + setAnalysisState('error'); + setErrorMessage(err.message || 'Failed to analyze plan'); + } + } + }, [plans, sql, transId, fetchLlmInfo]); + + const handleSSEEvent = (event) => { + switch (event.type) { + case 'thinking': + setThinkingMessage(event.message || getRandomThinkingMessage()); + break; + + case 'complete': + setBottlenecks(event.bottlenecks || []); + setRecommendations(event.recommendations || []); + setSummary(event.summary || ''); + setAnalysisState('complete'); + break; + + case 'error': + setErrorMessage(event.message || 'Analysis failed'); + setAnalysisState('error'); + break; + } + }; + + // Auto-analyze when tab becomes active or plan changes + // Triggers for any non-loading state when plan hasn't been analyzed yet + useEffect(() => { + if ( + isActive && + plans && + analysisState !== 'loading' && + analyzedPlanRef.current !== plans + ) { + runAnalysis(); + } + }, [isActive, plans, analysisState, runAnalysis]); + + const handleCopySQL = (sqlText) => { + navigator.clipboard.writeText(sqlText); + }; + + const handleInsertSQL = (sqlText) => { + if (onInsertSQL) { + onInsertSQL(sqlText); + } + }; + + // Generate the raw plan text from the plans array + const getRawPlanText = useCallback(() => { + if (!plans || plans.length === 0) return ''; + + // The plans array contains the EXPLAIN output + // Convert it to a readable text format + const formatPlanNode = (node, indent = 0) => { + if (!node) return ''; + const prefix = ' '.repeat(indent); + let result = ''; + + // Format the node type and basic info + const nodeType = node['Node Type'] || ''; + const relationship = node['Parent Relationship'] ? ` (${node['Parent Relationship']})` : ''; + + let nodeInfo = `${prefix}-> ${nodeType}${relationship}`; + + // Add key metrics + const metrics = []; + if (node['Relation Name']) metrics.push(`on ${node['Relation Name']}`); + if (node['Index Name']) metrics.push(`using ${node['Index Name']}`); + if (node['Join Type']) metrics.push(`${node['Join Type']} Join`); + if (node['Hash Cond']) metrics.push(`Hash Cond: ${node['Hash Cond']}`); + if (node['Index Cond']) metrics.push(`Index Cond: ${node['Index Cond']}`); + if (node['Filter']) metrics.push(`Filter: ${node['Filter']}`); + + if (metrics.length > 0) { + nodeInfo += ` ${metrics.join(', ')}`; + } + + result += nodeInfo + '\n'; + + // Add cost and row info + const costInfo = []; + if (node['Startup Cost'] !== undefined) costInfo.push(`cost=${node['Startup Cost']}..${node['Total Cost']}`); + if (node['Plan Rows'] !== undefined) costInfo.push(`rows=${node['Plan Rows']}`); + if (node['Plan Width'] !== undefined) costInfo.push(`width=${node['Plan Width']}`); + + if (costInfo.length > 0) { + result += `${prefix} (${costInfo.join(' ')})\n`; + } + + // Add actual metrics if available (from EXPLAIN ANALYZE) + const actualInfo = []; + if (node['Actual Startup Time'] !== undefined) actualInfo.push(`actual time=${node['Actual Startup Time']}..${node['Actual Total Time']}`); + if (node['Actual Rows'] !== undefined) actualInfo.push(`rows=${node['Actual Rows']}`); + if (node['Actual Loops'] !== undefined) actualInfo.push(`loops=${node['Actual Loops']}`); + + if (actualInfo.length > 0) { + result += `${prefix} (${actualInfo.join(' ')})\n`; + } + + // Recursively format child plans + if (node['Plans'] && Array.isArray(node['Plans'])) { + for (const child of node['Plans']) { + result += formatPlanNode(child, indent + 1); + } + } + + return result; + }; + + // Format each plan in the array + return plans.map((plan, idx) => { + let planText = ''; + if (plans.length > 1) { + planText += `--- Plan ${idx + 1} ---\n`; + } + if (plan['Plan']) { + planText += formatPlanNode(plan['Plan']); + } + // Add execution time if available + if (plan['Execution Time'] !== undefined) { + planText += `\nExecution Time: ${plan['Execution Time']} ms\n`; + } + if (plan['Planning Time'] !== undefined) { + planText += `Planning Time: ${plan['Planning Time']} ms\n`; + } + return planText; + }).join('\n'); + }, [plans]); + + // Generate markdown content for download + const generateMarkdownReport = useCallback(() => { + const date = new Date().toLocaleDateString(undefined, { + year: 'numeric', + month: 'long', + day: 'numeric', + hour: '2-digit', + minute: '2-digit' + }); + + let markdown = '# Query Plan AI Insights\n\n'; + markdown += `*Generated on ${date}*\n\n`; + markdown += '---\n\n'; + + // Add the original SQL query + markdown += '## Original Query\n\n'; + markdown += '```sql\n'; + markdown += (sql || 'Query not available') + '\n'; + markdown += '```\n\n'; + + // Add the raw execution plan + markdown += '## Execution Plan\n\n'; + markdown += '```\n'; + markdown += getRawPlanText() || 'Plan not available'; + markdown += '\n```\n\n'; + + markdown += '---\n\n'; + markdown += '## AI Analysis\n\n'; + + // Add summary + if (summary) { + markdown += '### Summary\n\n'; + markdown += `${summary}\n\n`; + } + + // Add bottlenecks + if (bottlenecks.length > 0) { + markdown += '### Performance Bottlenecks\n\n'; + for (const b of bottlenecks) { + const severityEmoji = b.severity === 'high' ? '🔴' : b.severity === 'medium' ? '🟡' : '🔵'; + markdown += `#### ${severityEmoji} ${b.node} [${b.severity}]\n\n`; + markdown += `**Issue:** ${b.issue}\n\n`; + if (b.details) { + markdown += `${b.details}\n\n`; + } + } + } + + // Add recommendations + if (recommendations.length > 0) { + markdown += '### Recommendations\n\n'; + for (const r of recommendations) { + markdown += `#### ${r.priority}. ${r.title}\n\n`; + markdown += `${r.explanation}\n\n`; + if (r.sql) { + markdown += '```sql\n'; + markdown += r.sql + '\n'; + markdown += '```\n\n'; + } + } + } + + // Add "no issues" message if applicable + if (bottlenecks.length === 0 && recommendations.length === 0) { + markdown += '### Analysis Result\n\n'; + markdown += '✅ No significant performance issues detected. The query plan appears to be well-optimized.\n\n'; + } + + markdown += '---\n\n'; + markdown += '*AI analysis is advisory. Always verify recommendations before applying them to production.*\n'; + + return markdown; + }, [sql, summary, bottlenecks, recommendations, getRawPlanText]); + + // Handle download + const handleDownload = useCallback(() => { + const markdown = generateMarkdownReport(); + const blob = new Blob([markdown], { type: 'text/markdown' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + const date = new Date().toISOString().slice(0, 10); + a.download = `query-plan-insights-${date}.md`; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + }, [generateMarkdownReport]); + + if (!plans) { + return ( + + ); + } + + if (analysisState === 'loading') { + return ( + +
+ + + {gettext('AI Insights')} + + {llmInfo.provider && ( + + ({llmInfo.provider}{llmInfo.model ? ` / ${llmInfo.model}` : ''}) + + )} + + + } + > + {gettext('Stop')} + + } + disabled={true} + > + {gettext('Regenerate')} + + } + disabled={true} + > + {gettext('Download')} + + +
+ + + + {thinkingMessage} + + +
+ ); + } + + if (analysisState === 'error') { + return ( + +
+ + + {gettext('AI Insights')} + + {llmInfo.provider && ( + + ({llmInfo.provider}{llmInfo.model ? ` / ${llmInfo.model}` : ''}) + + )} + + + } + > + {gettext('Regenerate')} + + } + disabled={true} + > + {gettext('Download')} + + +
+ +
+ + + {errorMessage} + +
+
+
+ ); + } + + if (analysisState === 'idle') { + return ( + +
+ + + {gettext('AI Insights')} + + {llmInfo.provider && ( + + ({llmInfo.provider}{llmInfo.model ? ` / ${llmInfo.model}` : ''}) + + )} + + + } + > + {gettext('Analyze')} + + } + disabled={true} + > + {gettext('Download')} + + +
+ + + + + {gettext('Click Analyze to get AI-powered insights on your query plan')} + + + +
+ ); + } + + if (analysisState === 'stopped') { + return ( + +
+ + + {gettext('AI Insights')} + + {llmInfo.provider && ( + + ({llmInfo.provider}{llmInfo.model ? ` / ${llmInfo.model}` : ''}) + + )} + + + } + disabled={true} + > + {gettext('Stop')} + + } + > + {gettext('Regenerate')} + + } + disabled={true} + > + {gettext('Download')} + + +
+ + + + + {gettext('Analysis stopped. Click Regenerate or re-run EXPLAIN to try again.')} + + + +
+ ); + } + + // Complete state + return ( + +
+ + + {gettext('AI Insights')} + + {llmInfo.provider && ( + + ({llmInfo.provider}{llmInfo.model ? ` / ${llmInfo.model}` : ''}) + + )} + + + } + > + {gettext('Regenerate')} + + } + > + {gettext('Download')} + + +
+ + {/* Summary */} + {summary && ( +
+ + + + {gettext('Summary')} + + + {summary} +
+ )} + + {/* Bottlenecks */} + {bottlenecks.length > 0 && ( +
+ + + + {gettext('Performance Bottlenecks')} + + + + {bottlenecks.map((bottleneck, idx) => ( + + ))} +
+ )} + + {/* Recommendations */} + {recommendations.length > 0 && ( +
+ + + + {gettext('Recommendations')} + + + + {recommendations.map((rec, idx) => ( + + ))} +
+ )} + + {/* No issues found */} + {bottlenecks.length === 0 && recommendations.length === 0 && ( +
+ + + + {gettext('No significant performance issues detected.')} + + + {gettext('The query plan appears to be well-optimized.')} + + +
+ )} + + + + {gettext( + 'AI analysis is advisory. Always verify recommendations before applying them to production.' + )} + +
+
+ ); +} + +AIInsights.propTypes = { + plans: PropTypes.array, + sql: PropTypes.string, + transId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + onInsertSQL: PropTypes.func, + isActive: PropTypes.bool, +}; diff --git a/web/pgadmin/static/js/Explain/index.jsx b/web/pgadmin/static/js/Explain/index.jsx index d72bf9b4fa2..5770ab66b1c 100644 --- a/web/pgadmin/static/js/Explain/index.jsx +++ b/web/pgadmin/static/js/Explain/index.jsx @@ -8,14 +8,17 @@ ////////////////////////////////////////////////////////////// import { Box, Tab, Tabs } from '@mui/material'; import { styled } from '@mui/material/styles'; -import React from 'react'; +import React, { useState, useEffect } from 'react'; import _ from 'lodash'; import Graphical from './Graphical'; import TabPanel from '../components/TabPanel'; import gettext from 'sources/gettext'; +import url_for from 'sources/url_for'; +import getApiInstance from '../api_instance'; import ImageMapper from './ImageMapper'; import Analysis from './Analysis'; import ExplainStatistics from './ExplainStatistics'; +import AIInsights from './AIInsights'; import PropTypes from 'prop-types'; import EmptyPanelMessage from '../components/EmptyPanelMessage'; @@ -505,11 +508,31 @@ function parsePlanData(data, ctx) { return retPlan; } -export default function Explain({plans=[], - emptyMessage=gettext('Use the Explain/Explain Analyze button to generate the plan for a query. Alternatively, you can also execute "EXPLAIN (FORMAT JSON) [QUERY]".') +export default function Explain({ + plans=[], + emptyMessage=gettext('Use the Explain/Explain Analyze button to generate the plan for a query. Alternatively, you can also execute "EXPLAIN (FORMAT JSON) [QUERY]".'), + llmEnabled: llmEnabledProp=false, + sql='', + transId=null, + onInsertSQL=null, }) { - const [tabValue, setTabValue] = React.useState(0); + const [tabValue, setTabValue] = useState(0); + const [llmEnabled, setLlmEnabled] = useState(llmEnabledProp); + + // Fetch LLM status independently to handle timing issues + useEffect(() => { + const api = getApiInstance(); + api.get(url_for('llm.status')) + .then((res) => { + if (res.data?.success && res.data?.data?.enabled) { + setLlmEnabled(true); + } + }) + .catch(() => { + // LLM not available - this is fine + }); + }, []); let ctx = React.useRef({}); let planData = React.useMemo(()=>{ @@ -549,9 +572,10 @@ export default function Explain({plans=[], scrollButtons="auto" action={(ref)=>ref?.updateIndicator()} > - - - + + + + {llmEnabled && } @@ -563,6 +587,17 @@ export default function Explain({plans=[], + {llmEnabled && ( + + + + )} ); } @@ -570,4 +605,8 @@ export default function Explain({plans=[], Explain.propTypes = { plans: PropTypes.array.isRequired, emptyMessage: PropTypes.string, + llmEnabled: PropTypes.bool, + sql: PropTypes.string, + transId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + onInsertSQL: PropTypes.func, }; diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py index b3803746a63..0e60d478fc7 100644 --- a/web/pgadmin/tools/sqleditor/__init__.py +++ b/web/pgadmin/tools/sqleditor/__init__.py @@ -146,6 +146,7 @@ def get_exposed_url_endpoints(self): 'sqleditor.connect_server', 'sqleditor.server_cursor', 'sqleditor.nlq_chat_stream', + 'sqleditor.explain_analyze_stream', ] def on_logout(self): @@ -2947,3 +2948,162 @@ def _nlq_sse_event(data: dict) -> bytes: padding = f": {'.' * padding_needed}\n" if padding_needed > 0 else "" return f"{padding}data: {json_data}\n\n".encode('utf-8') + +@blueprint.route( + '/explain/analyze//stream', + methods=["POST"], + endpoint='explain_analyze_stream' +) +@pgCSRFProtect.exempt +@pga_login_required +def explain_analyze_stream(trans_id): + """ + Stream AI analysis of an EXPLAIN plan via Server-Sent Events (SSE). + + This endpoint accepts an EXPLAIN plan JSON and the original SQL query, + then streams back AI-generated performance analysis and recommendations. + + Args: + trans_id: Transaction ID for the current Query Tool session + + Request Body (JSON): + plan: The EXPLAIN plan output (JSON format from PostgreSQL) + sql: The original SQL query that was explained + + Returns: + SSE stream with events: + - {type: "thinking", message: "..."} - Progress updates + - {type: "analysis", bottlenecks: [...], recommendations: [...], + summary: "..."} - Analysis results + - {type: "complete", ...} - Final response with full analysis + - {type: "error", message: "..."} - Error message + """ + from flask import stream_with_context + from pgadmin.llm.utils import is_llm_enabled + from pgadmin.llm.client import get_llm_client + from pgadmin.llm.models import Message + from pgadmin.llm.prompts.explain import EXPLAIN_ANALYSIS_PROMPT + + # Check if LLM is configured + if not is_llm_enabled(): + return make_json_response( + success=0, + errormsg=gettext( + 'AI features are not configured. Please configure an LLM ' + 'provider in Preferences > AI.' + ) + ) + + # Verify transaction exists (for authentication context) + status, error_msg, conn, trans_obj, session_obj = \ + check_transaction_status(trans_id) + + if not status: + return make_json_response( + success=0, + errormsg=error_msg or ERROR_MSG_TRANS_ID_NOT_FOUND + ) + + # Parse request data + data = request.get_json(silent=True) or {} + plan_data = data.get('plan') + sql_query = data.get('sql', '') + + if not plan_data: + return make_json_response( + success=0, + errormsg=gettext('Please provide an EXPLAIN plan to analyze.') + ) + + def generate(): + """Generator for SSE events.""" + try: + # Send thinking status + yield _nlq_sse_event({ + 'type': 'thinking', + 'message': gettext('Analyzing query plan...') + }) + + # Format the plan for the LLM + plan_json = json.dumps(plan_data, indent=2) if isinstance( + plan_data, (dict, list) + ) else str(plan_data) + + # Build the user message with plan and SQL + user_message = f"""Please analyze this PostgreSQL EXPLAIN plan: + +```json +{plan_json} +``` + +Original SQL query: +```sql +{sql_query} +``` + +Provide your analysis identifying performance bottlenecks and optimization recommendations.""" + + # Call the LLM + client = get_llm_client() + response = client.chat( + messages=[Message.user(user_message)], + system_prompt=EXPLAIN_ANALYSIS_PROMPT + ) + response_text = response.content + + # Parse the response + bottlenecks = [] + recommendations = [] + summary = '' + + # Try to extract JSON from the response + json_text = response_text.strip() + + # Look for ```json ... ``` blocks + json_match = re.search( + r'```json\s*\n?(.*?)\n?```', + json_text, + re.DOTALL + ) + if json_match: + json_text = json_match.group(1).strip() + + try: + result = json.loads(json_text) + bottlenecks = result.get('bottlenecks', []) + recommendations = result.get('recommendations', []) + summary = result.get('summary', '') + except (json.JSONDecodeError, TypeError): + # If parsing fails, use the raw response as summary + summary = response_text.strip() + + # Send the final result + yield _nlq_sse_event({ + 'type': 'complete', + 'bottlenecks': bottlenecks, + 'recommendations': recommendations, + 'summary': summary + }) + + except Exception as e: + current_app.logger.error(f'Explain analysis error: {str(e)}') + yield _nlq_sse_event({ + 'type': 'error', + 'message': str(e) + }) + + # Create SSE response + response = Response( + stream_with_context(generate()), + mimetype='text/event-stream', + headers={ + 'Cache-Control': 'no-cache, no-store, must-revalidate', + 'Pragma': 'no-cache', + 'Expires': '0', + 'Connection': 'keep-alive', + 'X-Accel-Buffering': 'no', + } + ) + response.direct_passthrough = True + return response + diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx index 19275df2207..1a408da77ee 100644 --- a/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx +++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx @@ -834,6 +834,7 @@ export function ResultSet() { const layoutDocker = useContext(LayoutDockerContext); const [loaderText, setLoaderText] = useState(''); const [dataOutputQuery,setDataOutputQuery] = useState(''); + const [llmEnabled, setLlmEnabled] = useState(false); const [queryData, setQueryData] = useState(null); const [rows, setRows] = useState([]); const [columns, setColumns] = useState([]); @@ -925,7 +926,15 @@ export function ResultSet() { layoutDocker.openTab({ id: PANELS.EXPLAIN, title: gettext('Explain'), - content: , + content: { + eventBus.fireEvent(QUERY_TOOL_EVENTS.EDITOR_SET_SQL, sql, true); + }} + />, closable: true, }, PANELS.MESSAGES, 'after-tab', true); }, @@ -988,6 +997,19 @@ export function ResultSet() { } }; + // Fetch LLM status on mount + useEffect(()=>{ + api.get(url_for('llm.status')) + .then((res)=>{ + if(res.data?.success && res.data?.data?.enabled) { + setLlmEnabled(true); + } + }) + .catch(()=>{ + // LLM not available - this is fine + }); + }, []); + useEffect(()=>{ eventBus.registerListener(QUERY_TOOL_EVENTS.TRIGGER_STOP_EXECUTION, async ()=>{ try { diff --git a/web/pgadmin/tools/sqleditor/tests/test_explain_analyze_ai.py b/web/pgadmin/tools/sqleditor/tests/test_explain_analyze_ai.py new file mode 100644 index 00000000000..3ac41c61a56 --- /dev/null +++ b/web/pgadmin/tools/sqleditor/tests/test_explain_analyze_ai.py @@ -0,0 +1,199 @@ +########################################################################## +# +# pgAdmin 4 - PostgreSQL Tools +# +# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# This software is released under the PostgreSQL Licence +# +########################################################################## + +"""Tests for the AI-powered EXPLAIN plan analysis endpoint.""" + +import json +from unittest.mock import patch, MagicMock + +from pgadmin.utils.route import BaseTestGenerator + + +class ExplainAnalyzeAITestCase(BaseTestGenerator): + """Test cases for EXPLAIN plan AI analysis streaming endpoint""" + + scenarios = [ + ('Explain AI - LLM Disabled', dict( + llm_enabled=False, + expected_error=True, + error_contains='AI features are not configured' + )), + ('Explain AI - Invalid Transaction', dict( + llm_enabled=True, + valid_transaction=False, + expected_error=True, + error_contains='Transaction ID' + )), + ('Explain AI - Empty Plan', dict( + llm_enabled=True, + valid_transaction=True, + plan=None, + expected_error=True, + error_contains='provide an EXPLAIN plan' + )), + ('Explain AI - Success', dict( + llm_enabled=True, + valid_transaction=True, + plan=[{ + 'Plan': { + 'Node Type': 'Seq Scan', + 'Relation Name': 'users', + 'Total Cost': 100.0, + 'Plan Rows': 1000 + } + }], + sql='SELECT * FROM users', + expected_error=False, + mock_response=json.dumps({ + 'bottlenecks': [{ + 'severity': 'high', + 'node': 'Seq Scan on users', + 'issue': 'Sequential scan on large table', + 'details': 'Consider adding an index' + }], + 'recommendations': [{ + 'priority': 1, + 'title': 'Add index', + 'explanation': 'Will improve query performance', + 'sql': 'CREATE INDEX idx_users ON users (id);' + }], + 'summary': 'Query could benefit from indexing.' + }) + )), + ] + + def setUp(self): + pass + + def runTest(self): + """Test EXPLAIN analysis endpoint""" + trans_id = 12345 + + # Build the mock chain + patches = [] + + # Mock LLM availability (patch where it's imported from) + mock_llm_enabled = patch( + 'pgadmin.llm.utils.is_llm_enabled', + return_value=self.llm_enabled + ) + patches.append(mock_llm_enabled) + + # Mock check_transaction_status + if hasattr(self, 'valid_transaction') and self.valid_transaction: + mock_trans_obj = MagicMock() + mock_trans_obj.sid = 1 + mock_trans_obj.did = 1 + + mock_conn = MagicMock() + mock_conn.connected.return_value = True + + mock_session = {'sid': 1, 'did': 1} + + mock_check_trans = patch( + 'pgadmin.tools.sqleditor.check_transaction_status', + return_value=(True, None, mock_conn, mock_trans_obj, mock_session) + ) + else: + mock_check_trans = patch( + 'pgadmin.tools.sqleditor.check_transaction_status', + return_value=(False, 'Transaction ID not found', None, None, None) + ) + patches.append(mock_check_trans) + + # Mock get_llm_client (the endpoint uses client.chat()) + if hasattr(self, 'mock_response'): + mock_response_obj = MagicMock() + mock_response_obj.content = self.mock_response + mock_client = MagicMock() + mock_client.chat.return_value = mock_response_obj + mock_get_client = patch( + 'pgadmin.llm.client.get_llm_client', + return_value=mock_client + ) + patches.append(mock_get_client) + + # Mock CSRF protection + mock_csrf = patch( + 'pgadmin.authenticate.mfa.utils.mfa_required', + lambda f: f + ) + patches.append(mock_csrf) + + # Start all patches + for p in patches: + p.start() + + try: + # Build request data + request_data = {} + if hasattr(self, 'plan'): + request_data['plan'] = self.plan + if hasattr(self, 'sql'): + request_data['sql'] = self.sql + + # Make request + response = self.tester.post( + f'/sqleditor/explain/analyze/{trans_id}/stream', + data=json.dumps(request_data), + content_type='application/json', + follow_redirects=True + ) + + if self.expected_error: + # For error cases, we expect JSON response + if response.status_code == 200 and \ + response.content_type == 'application/json': + data = json.loads(response.data) + self.assertFalse(data.get('success', True)) + if hasattr(self, 'error_contains'): + self.assertIn( + self.error_contains, + data.get('errormsg', '') + ) + else: + # For success, we expect SSE stream + self.assertEqual(response.status_code, 200) + self.assertIn('text/event-stream', response.content_type) + + finally: + # Stop all patches + for p in patches: + p.stop() + + def tearDown(self): + pass + + +class ExplainPromptTestCase(BaseTestGenerator): + """Test cases for EXPLAIN analysis system prompt""" + + scenarios = [ + ('Explain Prompt - Import', dict()), + ] + + def setUp(self): + pass + + def runTest(self): + """Test EXPLAIN analysis system prompt can be imported""" + from pgadmin.llm.prompts.explain import EXPLAIN_ANALYSIS_PROMPT + + # Verify prompt is a non-empty string + self.assertIsInstance(EXPLAIN_ANALYSIS_PROMPT, str) + self.assertGreater(len(EXPLAIN_ANALYSIS_PROMPT), 100) + + # Verify key content is present + self.assertIn('PostgreSQL', EXPLAIN_ANALYSIS_PROMPT) + self.assertIn('EXPLAIN', EXPLAIN_ANALYSIS_PROMPT) + self.assertIn('bottlenecks', EXPLAIN_ANALYSIS_PROMPT) + self.assertIn('recommendations', EXPLAIN_ANALYSIS_PROMPT) + + def tearDown(self): + pass diff --git a/web/regression/javascript/Explain/AIInsights.spec.js b/web/regression/javascript/Explain/AIInsights.spec.js new file mode 100644 index 00000000000..b0bf1351f1b --- /dev/null +++ b/web/regression/javascript/Explain/AIInsights.spec.js @@ -0,0 +1,220 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + +import { render, screen, waitFor } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { withTheme } from '../fake_theme'; +import AIInsights from '../../../pgadmin/static/js/Explain/AIInsights'; + +// Mock url_for +jest.mock('sources/url_for', () => ({ + __esModule: true, + default: jest.fn((endpoint) => `/mock/${endpoint}`), +})); + +// Mock gettext +jest.mock('sources/gettext', () => ({ + __esModule: true, + default: jest.fn((str) => str), +})); + +// Mock the Loader component +jest.mock('../../../pgadmin/static/js/components/Loader', () => ({ + __esModule: true, + default: () =>
Loading...
, +})); + +// Mock EmptyPanelMessage +jest.mock('../../../pgadmin/static/js/components/EmptyPanelMessage', () => ({ + __esModule: true, + default: ({ text }) =>
{text}
, +})); + +describe('AIInsights Component', () => { + let ThemedAIInsights; + + const mockPlans = [{ + Plan: { + 'Node Type': 'Seq Scan', + 'Relation Name': 'users', + 'Total Cost': 100.0, + 'Plan Rows': 1000, + }, + }]; + + beforeAll(() => { + ThemedAIInsights = withTheme(AIInsights); + + // Mock fetch for SSE + global.fetch = jest.fn(); + + // Mock window.getComputedStyle + window.getComputedStyle = jest.fn().mockReturnValue({ + color: 'rgb(0, 0, 0)', + }); + + // Mock clipboard API + Object.assign(navigator, { + clipboard: { + writeText: jest.fn(), + }, + }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should show empty message when no plans provided', () => { + render(); + expect(screen.getByTestId('empty-message')).toBeInTheDocument(); + }); + + it('should show idle state with analyze button when plans provided but not active', () => { + render( + + ); + // Component should be in idle state when not active + expect(screen.getByText('Analyze')).toBeInTheDocument(); + expect(screen.getByText(/Click Analyze to get AI-powered insights/i)).toBeInTheDocument(); + }); + + it('should start analysis when tab becomes active', async () => { + const mockReader = { + read: jest.fn() + .mockResolvedValueOnce({ + done: false, + value: new TextEncoder().encode('data: {"type":"thinking","message":"Analyzing..."}\n\n'), + }) + .mockResolvedValueOnce({ + done: false, + value: new TextEncoder().encode('data: {"type":"complete","bottlenecks":[],"recommendations":[],"summary":"Plan looks good"}\n\n'), + }) + .mockResolvedValueOnce({ done: true }), + }; + + global.fetch.mockResolvedValueOnce({ + ok: true, + body: { + getReader: () => mockReader, + }, + }); + + const { rerender } = render( + + ); + + // Rerender with isActive=true to trigger analysis + rerender( + + ); + + // Wait for the analysis to complete + await waitFor(() => { + expect(screen.getByText('Plan looks good')).toBeInTheDocument(); + }, { timeout: 3000 }); + }); + + it('should display bottlenecks when present', async () => { + const mockReader = { + read: jest.fn() + .mockResolvedValueOnce({ + done: false, + value: new TextEncoder().encode('data: {"type":"complete","bottlenecks":[{"severity":"high","node":"Seq Scan on users","issue":"Sequential scan","details":"Consider index"}],"recommendations":[],"summary":"Found issues"}\n\n'), + }) + .mockResolvedValueOnce({ done: true }), + }; + + global.fetch.mockResolvedValueOnce({ + ok: true, + body: { + getReader: () => mockReader, + }, + }); + + render( + + ); + + await waitFor(() => { + expect(screen.getByText('Performance Bottlenecks')).toBeInTheDocument(); + expect(screen.getByText('Seq Scan on users')).toBeInTheDocument(); + }, { timeout: 3000 }); + }); + + it('should display recommendations with SQL when present', async () => { + const mockReader = { + read: jest.fn() + .mockResolvedValueOnce({ + done: false, + value: new TextEncoder().encode('data: {"type":"complete","bottlenecks":[],"recommendations":[{"priority":1,"title":"Create index on users","explanation":"Will help performance","sql":"CREATE INDEX idx ON users(id);"}],"summary":"Consider adding an index"}\n\n'), + }) + .mockResolvedValueOnce({ done: true }), + }; + + global.fetch.mockResolvedValueOnce({ + ok: true, + body: { + getReader: () => mockReader, + }, + }); + + render( + + ); + + await waitFor(() => { + expect(screen.getByText('Recommendations')).toBeInTheDocument(); + expect(screen.getByText('Create index on users')).toBeInTheDocument(); + expect(screen.getByText('CREATE INDEX idx ON users(id);')).toBeInTheDocument(); + }, { timeout: 3000 }); + }); + + it('should show error state on failure', async () => { + global.fetch.mockRejectedValueOnce(new Error('Network error')); + + render( + + ); + + await waitFor(() => { + expect(screen.getByText('Network error')).toBeInTheDocument(); + }, { timeout: 3000 }); + }); +}); From ec914aea18e3eb6b8c30463a3426b981436e637a Mon Sep 17 00:00:00 2001 From: Dave Page Date: Mon, 12 Jan 2026 14:20:24 +0000 Subject: [PATCH 05/17] Address PR review comments for AI features - Fix Python style issues (line lengths, blank lines) - Add DOMPurify for XSS protection in markdown rendering - Add CSRF token to NLQ chat fetch request - Fix SQL injection by using parameterized queries - Fix potential UnboundLocalError in pipeline.py - Remove unused imports and PipelineProgress class - Add default model hints to preferences - Add DEFAULT_API_URL constant for Ollama provider - Update copyright years to 2026 --- web/config.py | 4 +- .../versions/add_tools_ai_permission_.py | 2 +- web/package.json | 1 + web/pgadmin/llm/__init__.py | 97 +++++++++++-------- web/pgadmin/llm/chat.py | 37 ++++--- web/pgadmin/llm/client.py | 2 +- web/pgadmin/llm/models.py | 2 +- web/pgadmin/llm/prompts/__init__.py | 2 +- web/pgadmin/llm/prompts/explain.py | 2 +- web/pgadmin/llm/prompts/nlq.py | 2 +- web/pgadmin/llm/providers/__init__.py | 2 +- web/pgadmin/llm/providers/anthropic.py | 2 +- web/pgadmin/llm/providers/docker.py | 2 +- web/pgadmin/llm/providers/ollama.py | 5 +- web/pgadmin/llm/providers/openai.py | 2 +- web/pgadmin/llm/reports/__init__.py | 2 +- web/pgadmin/llm/reports/generator.py | 10 +- web/pgadmin/llm/reports/models.py | 45 ++------- web/pgadmin/llm/reports/pipeline.py | 7 +- web/pgadmin/llm/reports/prompts.py | 2 +- web/pgadmin/llm/reports/queries.py | 8 +- web/pgadmin/llm/reports/sections.py | 2 +- web/pgadmin/llm/static/js/AIReport.jsx | 7 +- web/pgadmin/llm/static/js/SecurityReport.jsx | 7 +- web/pgadmin/llm/tests/__init__.py | 2 +- web/pgadmin/llm/tests/test_llm_status.py | 2 +- .../llm/tests/test_report_endpoints.py | 2 +- web/pgadmin/llm/tools/__init__.py | 2 +- web/pgadmin/llm/tools/database.py | 2 +- web/pgadmin/llm/utils.py | 5 +- web/pgadmin/tools/sqleditor/__init__.py | 13 +-- .../js/components/sections/NLQChatPanel.jsx | 3 +- .../tests/test_explain_analyze_ai.py | 10 +- .../tools/sqleditor/tests/test_nlq_chat.py | 15 ++- 34 files changed, 163 insertions(+), 147 deletions(-) diff --git a/web/config.py b/web/config.py index 0bec13fc428..8c9a55262d8 100644 --- a/web/config.py +++ b/web/config.py @@ -1016,8 +1016,8 @@ OLLAMA_API_MODEL = '' # Docker Model Runner Configuration -# Docker Desktop 4.40+ includes a built-in model runner with an OpenAI-compatible -# API. No API key is required. +# Docker Desktop 4.40+ includes a built-in model runner with an +# OpenAI-compatible API. No API key is required. # URL for the Docker Model Runner API endpoint. Leave empty to disable. # Default value: http://localhost:12434 DOCKER_API_URL = '' diff --git a/web/migrations/versions/add_tools_ai_permission_.py b/web/migrations/versions/add_tools_ai_permission_.py index 2ae7fe4617a..41d4134dc83 100644 --- a/web/migrations/versions/add_tools_ai_permission_.py +++ b/web/migrations/versions/add_tools_ai_permission_.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/package.json b/web/package.json index 580422411ca..3d1d685efdc 100644 --- a/web/package.json +++ b/web/package.json @@ -109,6 +109,7 @@ "convert-units": "^2.3.4", "date-fns": "^4.1.0", "diff-arrays-of-objects": "^1.1.8", + "dompurify": "^3.2.4", "hotkeys-js": "^4.0.0", "html-to-image": "1.11.11", "immutability-helper": "^3.0.0", diff --git a/web/pgadmin/llm/__init__.py b/web/pgadmin/llm/__init__.py index 412debf018b..21b6029b9f3 100644 --- a/web/pgadmin/llm/__init__.py +++ b/web/pgadmin/llm/__init__.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## @@ -204,7 +204,8 @@ def register_preferences(self): options=ollama_model_options, help_str=gettext( 'The Ollama model to use. Models are loaded dynamically ' - 'from your Ollama server. You can also type a custom model name.' + 'from your Ollama server. You can also type a custom model ' + 'name. Leave empty to use the default (llama3.2).' ), control_props={ 'allowClear': True, @@ -248,7 +249,7 @@ def register_preferences(self): help_str=gettext( 'The Docker model to use. Models are loaded dynamically ' 'from your Docker Model Runner. You can also type a custom ' - 'model name.' + 'model name. Leave empty to use the default (ai/qwen3-coder).' ), control_props={ 'allowClear': True, @@ -340,7 +341,9 @@ def get_llm_status(): ) -@blueprint.route("/models/anthropic", methods=["GET"], endpoint='models_anthropic') +@blueprint.route( + "/models/anthropic", methods=["GET"], endpoint='models_anthropic' +) @pga_login_required def get_anthropic_models(): """ @@ -1035,71 +1038,89 @@ def _generate_security_report_llm(client, security_info, manager): from pgadmin.llm.models import Message # Build the system prompt - system_prompt = """You are a PostgreSQL security expert. Your task is to analyze -the security configuration of a PostgreSQL database server and generate a comprehensive -security report in Markdown format. - -Focus ONLY on server-level security configuration, not database objects or data. - -IMPORTANT: Do NOT include a report title, header block, or generation date at the top -of your response. The title and metadata are added separately by the application. -Start directly with the Executive Summary section. - -The report should include: -1. **Executive Summary** - Brief overview of the security posture -2. **Critical Issues** - Security vulnerabilities that need immediate attention -3. **Warnings** - Important security concerns that should be addressed -4. **Recommendations** - Best practices that could improve security -5. **Configuration Review** - Analysis of key security settings - -Use severity indicators: -- 🔴 Critical - Immediate action required -- 🟠 Warning - Should be addressed soon -- 🟡 Advisory - Recommended improvement -- 🟢 Good - Configuration is secure - -Be specific and actionable in your recommendations. Include the current setting values -when discussing issues. Format the output as well-structured Markdown.""" + system_prompt = ( + "You are a PostgreSQL security expert. Your task is to analyze " + "the security configuration of a PostgreSQL database server and " + "generate a comprehensive security report in Markdown format.\n\n" + "Focus ONLY on server-level security configuration, not database " + "objects or data.\n\n" + "IMPORTANT: Do NOT include a report title, header block, or " + "generation date at the top of your response. The title and " + "metadata are added separately by the application. " + "Start directly with the Executive Summary section.\n\n" + "The report should include:\n" + "1. **Executive Summary** - Brief overview of the security posture\n" + "2. **Critical Issues** - Vulnerabilities needing immediate attention\n" + "3. **Warnings** - Important security concerns to be addressed\n" + "4. **Recommendations** - Best practices to improve security\n" + "5. **Configuration Review** - Analysis of key security settings\n\n" + "Use severity indicators:\n" + "- 🔴 Critical - Immediate action required\n" + "- 🟠 Warning - Should be addressed soon\n" + "- 🟡 Advisory - Recommended improvement\n" + "- 🟢 Good - Configuration is secure\n\n" + "Be specific and actionable in your recommendations. Include the " + "current setting values when discussing issues. Format the output " + "as well-structured Markdown." + ) # Build the user message with the security configuration - user_message = f"""Please analyze the following PostgreSQL server security configuration -and generate a security report. + settings_json = json.dumps( + security_info.get('settings', []), indent=2, default=str + ) + hba_json = json.dumps( + security_info.get('hba_rules', []), indent=2, default=str + ) + superusers_json = json.dumps( + security_info.get('superusers', []), indent=2, default=str + ) + privileged_json = json.dumps( + security_info.get('privileged_roles', []), indent=2, default=str + ) + no_expiry_json = json.dumps( + security_info.get('roles_no_expiry', []), indent=2, default=str + ) + extensions_json = json.dumps( + security_info.get('extensions', []), indent=2, default=str + ) + + user_message = f"""Please analyze this PostgreSQL server security config. ## Server Information - Server Version: {security_info.get('server_version', 'Unknown')} ## Security Settings ```json -{json.dumps(security_info.get('settings', []), indent=2, default=str)} +{settings_json} ``` ## pg_hba.conf Rules {security_info.get('hba_note', '')} ```json -{json.dumps(security_info.get('hba_rules', []), indent=2, default=str)} +{hba_json} ``` ## Superuser Roles ```json -{json.dumps(security_info.get('superusers', []), indent=2, default=str)} +{superusers_json} ``` ## Roles with Special Privileges ```json -{json.dumps(security_info.get('privileged_roles', []), indent=2, default=str)} +{privileged_json} ``` ## Login Roles Without Password Expiry ```json -{json.dumps(security_info.get('roles_no_expiry', []), indent=2, default=str)} +{no_expiry_json} ``` ## Installed Extensions ```json -{json.dumps(security_info.get('extensions', []), indent=2, default=str)} +{extensions_json} ``` -Please generate a comprehensive security report analyzing this configuration.""" +Generate a comprehensive security report analyzing this configuration.""" # Call the LLM messages = [Message.user(user_message)] diff --git a/web/pgadmin/llm/chat.py b/web/pgadmin/llm/chat.py index 38734027bc5..08e3fdab79f 100644 --- a/web/pgadmin/llm/chat.py +++ b/web/pgadmin/llm/chat.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## @@ -23,20 +23,23 @@ # Default system prompt for database assistant -DEFAULT_SYSTEM_PROMPT = """You are a PostgreSQL database assistant integrated into pgAdmin 4. -You have access to tools that allow you to query the database and inspect its schema. - -When helping users: -1. First understand the database structure using get_database_schema or get_table_info -2. Write efficient SQL queries to answer questions about the data -3. Explain your findings clearly and concisely -4. If a query might return many rows, consider using LIMIT or aggregations - -Important: -- All queries run in READ ONLY mode - you cannot modify data -- Results are limited to 1000 rows -- Always validate your understanding of the schema before writing complex queries -""" +DEFAULT_SYSTEM_PROMPT = ( + "You are a PostgreSQL database assistant integrated into pgAdmin 4. " + "You have access to tools that allow you to query the database and " + "inspect its schema.\n\n" + "When helping users:\n" + "1. First understand the database structure using get_database_schema " + "or get_table_info\n" + "2. Write efficient SQL queries to answer questions about the data\n" + "3. Explain your findings clearly and concisely\n" + "4. If a query might return many rows, consider using LIMIT or " + "aggregations\n\n" + "Important:\n" + "- All queries run in READ ONLY mode - you cannot modify data\n" + "- Results are limited to 1000 rows\n" + "- Always validate your understanding of the schema before writing " + "complex queries" +) def chat_with_database( @@ -144,7 +147,9 @@ def chat_with_database( # Add tool results to history messages.extend(tool_results) - raise RuntimeError(f"Exceeded maximum tool iterations ({max_tool_iterations})") + raise RuntimeError( + f"Exceeded maximum tool iterations ({max_tool_iterations})" + ) def single_query( diff --git a/web/pgadmin/llm/client.py b/web/pgadmin/llm/client.py index a901cc4f5a2..158f86af416 100644 --- a/web/pgadmin/llm/client.py +++ b/web/pgadmin/llm/client.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/models.py b/web/pgadmin/llm/models.py index 95a365cae84..ba20245cb76 100644 --- a/web/pgadmin/llm/models.py +++ b/web/pgadmin/llm/models.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/prompts/__init__.py b/web/pgadmin/llm/prompts/__init__.py index 905fa69f811..78a255fffa4 100644 --- a/web/pgadmin/llm/prompts/__init__.py +++ b/web/pgadmin/llm/prompts/__init__.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/prompts/explain.py b/web/pgadmin/llm/prompts/explain.py index 6d29fa47eab..49bfd8eb1d3 100644 --- a/web/pgadmin/llm/prompts/explain.py +++ b/web/pgadmin/llm/prompts/explain.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/prompts/nlq.py b/web/pgadmin/llm/prompts/nlq.py index b522c799bca..9161ae4ff4c 100644 --- a/web/pgadmin/llm/prompts/nlq.py +++ b/web/pgadmin/llm/prompts/nlq.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/providers/__init__.py b/web/pgadmin/llm/providers/__init__.py index 31631eb7965..5d469266865 100644 --- a/web/pgadmin/llm/providers/__init__.py +++ b/web/pgadmin/llm/providers/__init__.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/providers/anthropic.py b/web/pgadmin/llm/providers/anthropic.py index e80c67786e5..efcc28b96f3 100644 --- a/web/pgadmin/llm/providers/anthropic.py +++ b/web/pgadmin/llm/providers/anthropic.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/providers/docker.py b/web/pgadmin/llm/providers/docker.py index 3f99406deb6..b923f85c04a 100644 --- a/web/pgadmin/llm/providers/docker.py +++ b/web/pgadmin/llm/providers/docker.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/providers/ollama.py b/web/pgadmin/llm/providers/ollama.py index 8b92a714c37..ad683109f72 100644 --- a/web/pgadmin/llm/providers/ollama.py +++ b/web/pgadmin/llm/providers/ollama.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## @@ -23,7 +23,8 @@ ) -# Default model if none specified +# Default configuration +DEFAULT_API_URL = 'http://localhost:11434' DEFAULT_MODEL = 'llama3.2' diff --git a/web/pgadmin/llm/providers/openai.py b/web/pgadmin/llm/providers/openai.py index 4ef77e78bce..9cb11e1cc62 100644 --- a/web/pgadmin/llm/providers/openai.py +++ b/web/pgadmin/llm/providers/openai.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/reports/__init__.py b/web/pgadmin/llm/reports/__init__.py index 96d01367c62..1eef359d02b 100644 --- a/web/pgadmin/llm/reports/__init__.py +++ b/web/pgadmin/llm/reports/__init__.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/reports/generator.py b/web/pgadmin/llm/reports/generator.py index 9ff8afb824d..4f04914c3fa 100644 --- a/web/pgadmin/llm/reports/generator.py +++ b/web/pgadmin/llm/reports/generator.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## @@ -18,7 +18,7 @@ from pgadmin.llm.client import get_llm_client, LLMClient from pgadmin.llm.reports.pipeline import ReportPipeline from pgadmin.llm.reports.sections import get_sections_for_scope -from pgadmin.llm.reports.queries import execute_query, QUERIES +from pgadmin.llm.reports.queries import QUERIES def create_query_executor(conn) -> callable: @@ -49,12 +49,12 @@ def executor(query_id: str, context: dict) -> dict[str, Any]: # Check if query requires an extension required_ext = query_def.get('requires_extension') if required_ext: - check_sql = f""" + check_sql = """ SELECT EXISTS ( - SELECT 1 FROM pg_extension WHERE extname = '{required_ext}' + SELECT 1 FROM pg_extension WHERE extname = %s ) as available """ - status, result = conn.execute_dict(check_sql) + status, result = conn.execute_dict(check_sql, [required_ext]) if not (status and result and result.get('rows', [{}])[0].get('available', False)): return { diff --git a/web/pgadmin/llm/reports/models.py b/web/pgadmin/llm/reports/models.py index d8853eb823e..9ce8f9dc8b3 100644 --- a/web/pgadmin/llm/reports/models.py +++ b/web/pgadmin/llm/reports/models.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## @@ -32,13 +32,16 @@ class Section: name: Human-readable name for display. description: What this section analyzes. queries: List of query identifiers to run for this section. - scope: What scope this section applies to ('server', 'database', 'schema'). + scope: What scope this section applies to + ('server', 'database', 'schema'). """ id: str name: str description: str queries: list[str] - scope: list[str] = field(default_factory=lambda: ['server', 'database', 'schema']) + scope: list[str] = field( + default_factory=lambda: ['server', 'database', 'schema'] + ) @dataclass @@ -74,39 +77,3 @@ def to_dict(self) -> dict: 'severity': self.severity.value, 'error': self.error } - - -@dataclass -class PipelineProgress: - """Progress update from the pipeline. - - Attributes: - stage: Current stage ('planning', 'gathering', 'analyzing', 'synthesizing'). - section: Current section being processed (if applicable). - message: Human-readable progress message. - completed: Number of sections completed. - total: Total number of sections. - retry_wait: Seconds waiting before retry (if rate limited). - """ - stage: str - message: str - section: Optional[str] = None - completed: int = 0 - total: int = 0 - retry_wait: Optional[int] = None - - def to_dict(self) -> dict: - """Convert to dictionary for SSE event.""" - result = { - 'type': 'progress' if self.retry_wait is None else 'retry', - 'stage': self.stage, - 'message': self.message - } - if self.section: - result['section'] = self.section - if self.completed or self.total: - result['completed'] = self.completed - result['total'] = self.total - if self.retry_wait is not None: - result['wait_seconds'] = self.retry_wait - return result diff --git a/web/pgadmin/llm/reports/pipeline.py b/web/pgadmin/llm/reports/pipeline.py index ab5ebc32bbe..a43298b104c 100644 --- a/web/pgadmin/llm/reports/pipeline.py +++ b/web/pgadmin/llm/reports/pipeline.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## @@ -11,12 +11,12 @@ import json import time -from typing import Generator, Optional, Callable, Any +from typing import Generator, Callable, Any from pgadmin.llm.client import LLMClient, LLMClientError from pgadmin.llm.models import Message from pgadmin.llm.reports.models import ( - Section, SectionResult, Severity, PipelineProgress + Section, SectionResult, Severity ) from pgadmin.llm.reports.prompts import ( PLANNING_SYSTEM_PROMPT, get_planning_user_prompt, @@ -165,6 +165,7 @@ def execute_with_progress( yield {'type': 'stage', 'stage': 'synthesizing', 'message': 'Creating final report...'} + final_report = '' for retry_event in self._synthesize_with_retry( section_results, context ): diff --git a/web/pgadmin/llm/reports/prompts.py b/web/pgadmin/llm/reports/prompts.py index 79b0d4f5472..ce08f06d0d9 100644 --- a/web/pgadmin/llm/reports/prompts.py +++ b/web/pgadmin/llm/reports/prompts.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/reports/queries.py b/web/pgadmin/llm/reports/queries.py index d78f8115067..caf86b279cc 100644 --- a/web/pgadmin/llm/reports/queries.py +++ b/web/pgadmin/llm/reports/queries.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## @@ -878,12 +878,12 @@ def execute_query( required_ext = query_def.get('requires_extension') if required_ext: # Check if extension is installed - check_sql = f""" + check_sql = """ SELECT EXISTS ( - SELECT 1 FROM pg_extension WHERE extname = '{required_ext}' + SELECT 1 FROM pg_extension WHERE extname = %s ) as available """ - status, result = conn.execute_dict(check_sql) + status, result = conn.execute_dict(check_sql, [required_ext]) if not (status and result and result.get('rows', [{}])[0].get('available', False)): return { diff --git a/web/pgadmin/llm/reports/sections.py b/web/pgadmin/llm/reports/sections.py index de798ab6d6a..0ae49a35c23 100644 --- a/web/pgadmin/llm/reports/sections.py +++ b/web/pgadmin/llm/reports/sections.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/static/js/AIReport.jsx b/web/pgadmin/llm/static/js/AIReport.jsx index f12dc522e1a..6b3ad23feee 100644 --- a/web/pgadmin/llm/static/js/AIReport.jsx +++ b/web/pgadmin/llm/static/js/AIReport.jsx @@ -2,7 +2,7 @@ // // pgAdmin 4 - PostgreSQL Tools // -// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// Copyright (C) 2013 - 2026, The pgAdmin Development Team // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// @@ -16,6 +16,7 @@ import StopIcon from '@mui/icons-material/Stop'; import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined'; import PropTypes from 'prop-types'; import { marked } from 'marked'; +import DOMPurify from 'dompurify'; import gettext from 'sources/gettext'; import url_for from 'sources/url_for'; @@ -617,7 +618,9 @@ export default function AIReport({ URL.revokeObjectURL(url); }; - const reportHtml = report ? marked.parse(getReportHeader() + report) : ''; + const reportHtml = report + ? DOMPurify.sanitize(marked.parse(getReportHeader() + report)) + : ''; return ( diff --git a/web/pgadmin/llm/static/js/SecurityReport.jsx b/web/pgadmin/llm/static/js/SecurityReport.jsx index 55d9fb58cbd..ff8033bb9d1 100644 --- a/web/pgadmin/llm/static/js/SecurityReport.jsx +++ b/web/pgadmin/llm/static/js/SecurityReport.jsx @@ -2,7 +2,7 @@ // // pgAdmin 4 - PostgreSQL Tools // -// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// Copyright (C) 2013 - 2026, The pgAdmin Development Team // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// @@ -14,6 +14,7 @@ import DownloadIcon from '@mui/icons-material/Download'; import RefreshIcon from '@mui/icons-material/Refresh'; import PropTypes from 'prop-types'; import { marked } from 'marked'; +import DOMPurify from 'dompurify'; import gettext from 'sources/gettext'; import url_for from 'sources/url_for'; @@ -316,7 +317,9 @@ export default function SecurityReport({ URL.revokeObjectURL(url); }; - const reportHtml = report ? marked.parse(getReportHeader() + report) : ''; + const reportHtml = report + ? DOMPurify.sanitize(marked.parse(getReportHeader() + report)) + : ''; return ( diff --git a/web/pgadmin/llm/tests/__init__.py b/web/pgadmin/llm/tests/__init__.py index 3a080d6bcf9..c69ae19d4a5 100644 --- a/web/pgadmin/llm/tests/__init__.py +++ b/web/pgadmin/llm/tests/__init__.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/tests/test_llm_status.py b/web/pgadmin/llm/tests/test_llm_status.py index 5279c4c1475..553f117e1c3 100644 --- a/web/pgadmin/llm/tests/test_llm_status.py +++ b/web/pgadmin/llm/tests/test_llm_status.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/tests/test_report_endpoints.py b/web/pgadmin/llm/tests/test_report_endpoints.py index ab41af4270f..2a9989bd383 100644 --- a/web/pgadmin/llm/tests/test_report_endpoints.py +++ b/web/pgadmin/llm/tests/test_report_endpoints.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/tools/__init__.py b/web/pgadmin/llm/tools/__init__.py index 2a1834c873b..b8da042653e 100644 --- a/web/pgadmin/llm/tools/__init__.py +++ b/web/pgadmin/llm/tools/__init__.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/tools/database.py b/web/pgadmin/llm/tools/database.py index 4595efb3a16..b958dcdc1af 100644 --- a/web/pgadmin/llm/tools/database.py +++ b/web/pgadmin/llm/tools/database.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## diff --git a/web/pgadmin/llm/utils.py b/web/pgadmin/llm/utils.py index 48bfecdb663..a22a65ea8d4 100644 --- a/web/pgadmin/llm/utils.py +++ b/web/pgadmin/llm/utils.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## @@ -231,7 +231,8 @@ def get_default_provider(): Returns None if disabled at system level or user preference is empty. Returns: - The provider name ('anthropic', 'openai', 'ollama') or None if disabled. + The provider name ('anthropic', 'openai', 'ollama', 'docker') + or None if disabled. """ # Check master switch first - cannot be overridden by user if not getattr(config, 'LLM_ENABLED', False): diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py index 0e60d478fc7..eadf72eb5a3 100644 --- a/web/pgadmin/tools/sqleditor/__init__.py +++ b/web/pgadmin/tools/sqleditor/__init__.py @@ -2744,6 +2744,7 @@ def user_macros(json_resp=True): # Natural Language Query (NLQ) to SQL # ============================================================================= + @blueprint.route( '/nlq/chat//stream', methods=["POST"], @@ -2853,11 +2854,11 @@ def generate(): else: # Also try to find a plain JSON object in the response # Look for {"sql": ... } pattern anywhere in the text - plain_json_match = re.search( - r'\{["\']?sql["\']?\s*:\s*(?:null|"[^"]*"|\'[^\']*\').*?\}', - json_text, - re.DOTALL + sql_pattern = ( + r'\{["\']?sql["\']?\s*:\s*' + r'(?:null|"[^"]*"|\'[^\']*\').*?\}' ) + plain_json_match = re.search(sql_pattern, json_text, re.DOTALL) if plain_json_match: json_text = plain_json_match.group(0) @@ -3041,7 +3042,8 @@ def generate(): {sql_query} ``` -Provide your analysis identifying performance bottlenecks and optimization recommendations.""" +Provide your analysis identifying performance bottlenecks and \ +optimization recommendations.""" # Call the LLM client = get_llm_client() @@ -3106,4 +3108,3 @@ def generate(): ) response.direct_passthrough = True return response - diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/NLQChatPanel.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/NLQChatPanel.jsx index d9301b05dba..5bbd2c413bd 100644 --- a/web/pgadmin/tools/sqleditor/static/js/components/sections/NLQChatPanel.jsx +++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/NLQChatPanel.jsx @@ -2,7 +2,7 @@ // // pgAdmin 4 - PostgreSQL Tools // -// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// Copyright (C) 2013 - 2026, The pgAdmin Development Team // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// @@ -500,6 +500,7 @@ export function NLQChatPanel() { method: 'POST', headers: { 'Content-Type': 'application/json', + [window.pgAdmin.csrf_token_header]: window.pgAdmin.csrf_token, }, body: JSON.stringify({ message: userMessage, diff --git a/web/pgadmin/tools/sqleditor/tests/test_explain_analyze_ai.py b/web/pgadmin/tools/sqleditor/tests/test_explain_analyze_ai.py index 3ac41c61a56..7902c527002 100644 --- a/web/pgadmin/tools/sqleditor/tests/test_explain_analyze_ai.py +++ b/web/pgadmin/tools/sqleditor/tests/test_explain_analyze_ai.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## @@ -98,12 +98,16 @@ def runTest(self): mock_check_trans = patch( 'pgadmin.tools.sqleditor.check_transaction_status', - return_value=(True, None, mock_conn, mock_trans_obj, mock_session) + return_value=( + True, None, mock_conn, mock_trans_obj, mock_session + ) ) else: mock_check_trans = patch( 'pgadmin.tools.sqleditor.check_transaction_status', - return_value=(False, 'Transaction ID not found', None, None, None) + return_value=( + False, 'Transaction ID not found', None, None, None + ) ) patches.append(mock_check_trans) diff --git a/web/pgadmin/tools/sqleditor/tests/test_nlq_chat.py b/web/pgadmin/tools/sqleditor/tests/test_nlq_chat.py index a9bb9b5053d..6f1f3447990 100644 --- a/web/pgadmin/tools/sqleditor/tests/test_nlq_chat.py +++ b/web/pgadmin/tools/sqleditor/tests/test_nlq_chat.py @@ -2,7 +2,7 @@ # # pgAdmin 4 - PostgreSQL Tools # -# Copyright (C) 2013 - 2025, The pgAdmin Development Team +# Copyright (C) 2013 - 2026, The pgAdmin Development Team # This software is released under the PostgreSQL Licence # ########################################################################## @@ -42,7 +42,10 @@ class NLQChatTestCase(BaseTestGenerator): valid_transaction=True, message='Find all users', expected_error=False, - mock_response='{"sql": "SELECT * FROM users;", "explanation": "Gets all users"}' + mock_response=( + '{"sql": "SELECT * FROM users;", ' + '"explanation": "Gets all users"}' + ) )), ] @@ -76,12 +79,16 @@ def runTest(self): mock_check_trans = patch( 'pgadmin.tools.sqleditor.check_transaction_status', - return_value=(True, None, mock_conn, mock_trans_obj, mock_session) + return_value=( + True, None, mock_conn, mock_trans_obj, mock_session + ) ) else: mock_check_trans = patch( 'pgadmin.tools.sqleditor.check_transaction_status', - return_value=(False, 'Transaction ID not found', None, None, None) + return_value=( + False, 'Transaction ID not found', None, None, None + ) ) patches.append(mock_check_trans) From ad92886b4ad2852a6844b7bb41cf20972682a126 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Mon, 12 Jan 2026 15:44:24 +0000 Subject: [PATCH 06/17] Address additional PR review comments - Add comment to empty setUp() method in test_llm_status.py - Rename unused parameter to _manager in database.py - Fix type hint to tuple[bool, str | None] in database.py - Remove unused Response import from llm/__init__.py - Remove unused response variable in client.py - Remove unused LLMClientError and LLMResponse imports from chat.py - Update copyright year to 2026 in ai_tools.js --- web/pgadmin/llm/__init__.py | 2 +- web/pgadmin/llm/chat.py | 4 ++-- web/pgadmin/llm/client.py | 2 +- web/pgadmin/llm/static/js/ai_tools.js | 2 +- web/pgadmin/llm/tests/test_llm_status.py | 1 + web/pgadmin/llm/tools/database.py | 4 ++-- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/web/pgadmin/llm/__init__.py b/web/pgadmin/llm/__init__.py index 21b6029b9f3..88e38155157 100644 --- a/web/pgadmin/llm/__init__.py +++ b/web/pgadmin/llm/__init__.py @@ -11,7 +11,7 @@ import json import ssl -from flask import Response, request +from flask import request from flask_babel import gettext from pgadmin.utils import PgAdminModule from pgadmin.utils.preferences import Preferences diff --git a/web/pgadmin/llm/chat.py b/web/pgadmin/llm/chat.py index 08e3fdab79f..1bb7c9d6e1d 100644 --- a/web/pgadmin/llm/chat.py +++ b/web/pgadmin/llm/chat.py @@ -16,8 +16,8 @@ import json from typing import Optional -from pgadmin.llm.client import get_llm_client, is_llm_available, LLMClientError -from pgadmin.llm.models import Message, LLMResponse, StopReason +from pgadmin.llm.client import get_llm_client, is_llm_available +from pgadmin.llm.models import Message, StopReason from pgadmin.llm.tools import DATABASE_TOOLS, execute_tool, DatabaseToolError from pgadmin.llm.utils import get_max_tool_iterations diff --git a/web/pgadmin/llm/client.py b/web/pgadmin/llm/client.py index 158f86af416..5a4f114e6d7 100644 --- a/web/pgadmin/llm/client.py +++ b/web/pgadmin/llm/client.py @@ -86,7 +86,7 @@ def validate_connection(self) -> tuple[bool, Optional[str]]: """ try: # Try a minimal request to validate the connection - response = self.chat( + self.chat( messages=[Message.user("Hello")], max_tokens=10 ) diff --git a/web/pgadmin/llm/static/js/ai_tools.js b/web/pgadmin/llm/static/js/ai_tools.js index d6e3e4ff7f7..5e74e8f2876 100644 --- a/web/pgadmin/llm/static/js/ai_tools.js +++ b/web/pgadmin/llm/static/js/ai_tools.js @@ -2,7 +2,7 @@ // // pgAdmin 4 - PostgreSQL Tools // -// Copyright (C) 2013 - 2025, The pgAdmin Development Team +// Copyright (C) 2013 - 2026, The pgAdmin Development Team // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// diff --git a/web/pgadmin/llm/tests/test_llm_status.py b/web/pgadmin/llm/tests/test_llm_status.py index 553f117e1c3..2b586d6e267 100644 --- a/web/pgadmin/llm/tests/test_llm_status.py +++ b/web/pgadmin/llm/tests/test_llm_status.py @@ -43,6 +43,7 @@ class LLMStatusTestCase(BaseTestGenerator): ] def setUp(self): + # Required by BaseTestGenerator but no setup needed for these tests pass def runTest(self): diff --git a/web/pgadmin/llm/tools/database.py b/web/pgadmin/llm/tools/database.py index b958dcdc1af..1917d0d6f1e 100644 --- a/web/pgadmin/llm/tools/database.py +++ b/web/pgadmin/llm/tools/database.py @@ -84,7 +84,7 @@ def _get_connection(sid: int, did: int, conn_id: str): ) -def _connect_readonly(manager, conn, conn_id: str) -> tuple[bool, str]: +def _connect_readonly(_manager, conn, conn_id: str) -> tuple[bool, str | None]: """ Establish a read-only connection. @@ -92,7 +92,7 @@ def _connect_readonly(manager, conn, conn_id: str) -> tuple[bool, str]: and ensures the connection is in read-only mode. Args: - manager: The server manager + _manager: The server manager (unused, kept for API consistency) conn: The connection object conn_id: Connection identifier From b3feb1505bfd6ac0eed5c7d5bb8871110b232f75 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Tue, 20 Jan 2026 10:08:40 +0000 Subject: [PATCH 07/17] Ensure new tabs are loaded correctly. --- .../static/js/helpers/Layout/index.jsx | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/web/pgadmin/static/js/helpers/Layout/index.jsx b/web/pgadmin/static/js/helpers/Layout/index.jsx index 3be5a952eb2..9b93cfe8719 100644 --- a/web/pgadmin/static/js/helpers/Layout/index.jsx +++ b/web/pgadmin/static/js/helpers/Layout/index.jsx @@ -222,12 +222,79 @@ export class LayoutDocker { loadLayout(savedLayout) { try { this.layoutObj.loadLayout(JSON.parse(savedLayout)); + this.addMissingDefaultPanels(); } catch { /* Fallback to default */ this.layoutObj.loadLayout(this.defaultLayout); } } + addMissingDefaultPanels() { + // Flatten both layouts to get all tabs + const flattenLayout = (box, arr) => { + box.children.forEach((child) => { + if (child.children) { + flattenLayout(child, arr); + } else { + arr.push(...(child.tabs ?? [])); + } + }); + }; + + const flatDefault = []; + const flatCurrent = []; + flattenLayout(this.defaultLayout.dockbox, flatDefault); + flattenLayout(this.layoutObj.getLayout().dockbox, flatCurrent); + + // Find tabs in default but not in saved layout + const missingTabs = _.differenceBy(flatDefault, flatCurrent, 'id'); + + // Only add non-closable tabs (closable tabs may have been intentionally removed) + const missingNonClosableTabs = missingTabs.filter(tab => !tab.internal?.closable); + + // Add each missing tab next to a sibling from its original panel group + missingNonClosableTabs.forEach((tab) => { + const siblingId = this.findSiblingTab(tab.id, flatDefault, flatCurrent); + if (siblingId) { + this.openTab({ + id: tab.id, + content: tab.content, + ...tab.internal + }, siblingId, 'middle'); + } else if (this.resetToTabPanel) { + // Fallback: add to the reset panel location + this.openTab({ + id: tab.id, + content: tab.content, + ...tab.internal + }, this.resetToTabPanel, 'middle'); + } + }); + } + + findSiblingTab(tabId, flatDefault, flatCurrent) { + // Find which panel group this tab belongs to in the default layout + const findPanelTabs = (box, targetId) => { + for (const child of box.children) { + if (child.children) { + const result = findPanelTabs(child, targetId); + if (result) return result; + } else if (child.tabs) { + const hasTarget = child.tabs.some(t => t.id === targetId); + if (hasTarget) return child.tabs.map(t => t.id); + } + } + return null; + }; + + const siblingIds = findPanelTabs(this.defaultLayout.dockbox, tabId); + if (!siblingIds) return null; + + // Find a sibling that exists in current layout + const currentIds = flatCurrent.map(t => t.id); + return siblingIds.find(id => id !== tabId && currentIds.includes(id)); + } + saveLayout(l) { let api = getApiInstance(); if(!this.layoutId || !this.layoutObj) { From a960b070f59a082f6ab79923da608110d81924b3 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Tue, 20 Jan 2026 10:09:28 +0000 Subject: [PATCH 08/17] Ensure screenshots are 950px wide. --- docs/en_US/images/ai_security_report.png | Bin 181401 -> 242731 bytes docs/en_US/images/preferences_ai.png | Bin 96441 -> 138864 bytes docs/en_US/images/query_ai_assistant.png | Bin 135193 -> 162182 bytes .../images/query_explain_ai_insights.png | Bin 134089 -> 252959 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en_US/images/ai_security_report.png b/docs/en_US/images/ai_security_report.png index be186814869e8afe1a1ca3b1f69317252fa3c3c8..879a5b9c2614af8369bf1063e3f77ff0a6abf6f1 100644 GIT binary patch literal 242731 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
%QeBu7-WdPvATIH^xlc7C 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

uFod`dR)yg!RriOCl(fKDtI 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 diff --git a/docs/en_US/images/preferences_ai.png b/docs/en_US/images/preferences_ai.png index edb065ec3ada85fdf0aab02ab283421d285f5b22..235685b4a5deba59d9a56fb877e55fb8d4e69725 100644 GIT binary patch literal 138864 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

YJyyRXfiZ1rK-?mZ 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 JnyT@Y{|o3i{SN>D diff --git a/docs/en_US/images/query_ai_assistant.png b/docs/en_US/images/query_ai_assistant.png index 0cd09b5bcbd7cf43e68571c6124c9cf22d842aa5..057327fbf5b7fa63f390bdbafc497a46ad23a73e 100644 GIT binary patch literal 162182 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

    C6IbA)BnZX3&J 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ðn3D7eM5?mI%j6_F+|{z)T-;qwO_*3{61?jwn=b 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

    @a~ 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

    Urg`*_tn@Jgq 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 diff --git a/docs/en_US/images/query_explain_ai_insights.png b/docs/en_US/images/query_explain_ai_insights.png index a53273bc914f8b3810f6420a7d1b4be16064b6ee..2d13157e9acbc96cc7bc896106d6bbf4916ceda2 100644 GIT binary patch literal 252959 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%0AbG1UU?>&3;v%!^XKEOt0gba#pS4q)oCPjLH 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%0A4_ax*rz1=Ppyjp5W2O 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 j@^*~e|KaY|9oX_3yk^TV<)u@)3DYoo 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


    B>OV+X$jyqnm=1lCj=S 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
    &{FXVd!B3UJe-% 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

    IQ$DV*G1~H*?QvjEho! z083|Zpo(69XR6ZO;GTzSXdY{waWL18;5S|N8mshVd0IP^2v6jM3_q;P`^?3EQ+j0G zRC?zysyJSU)!e<^>x#!)l^?O)KDG8~eySuwXI+PluQ$$(>q@-Jrl9EOghDN%( zQChkYq`P_docB8Cdw%ERb

    z|8aPy`R1B`(Eo_D{V>cmfn+z?lAF`t@!q5=Ffrv z-VhZ`Xw_Gg7 z9Zu=lnSm8ohsv9HP_dpxt3>Kjzy=6ixpc`C_!JS!KJ%z&^_Mt>6lAq6T_RPO2SaZn z;dA{Lb#OXhOYR3hopHzQPi39)jyR;1koZ}XA8liMnIyVrd3ruEDN7RbjsrQB#NU$r z%eT5$U6;H+xq~AYRTBmYQo@Px9>CTBgC;dI0pBRmw0%HsD!~xe25S%MMDE6fz^-y0 zlwWnc;v(lN;;;P{&xpr0YMvjUgqwi?(M;x&n&YhKrMVL<;$Sj?aQs$;3M=!N#xi>I z^tHwZN;0rP@TeI0nF`)4FfqWQf>?zBV>og%u?!%K>3*TJuZ*Fn*yZmYXz6-zy=Gno zB%;kGawa0>$K8yh0?Ltg`(q_L&X#VmCz|P6H2M?Rj7Cb%TIpJ1DKDj$J{0&rP9O~J z+iC3`3v7X_n^5SvsdfB%63pr9Dd#C=&DGyZif1dv$He*&tE89uAtsX&2mAa*VmRc~ zKgz%t(4bO!=qUvDDTrmwvZAHBv0IMU7-M2`jx>xlQ`y%0&{@xW{l7~`Y1uxE@^iUj zb)VNioFK3RWu-GN6 zwXSI(xe$9C9@_%rS^L+?kX&%9&f3saWA{^Hy1l2=THD;X?Pl}#{NA=^BI)y68)GL( zV&t=r^=fvM^2bzU_9Aw^840=uej3xS{!lYZf-GbR0m0Lp&y0OqE*%R4?rGSF!4&_X z5vNRI>=K_E|53t7PUl;!xx~W?F7qe7nQBxieB9DOLUn6A0XwHd3vk z0mVqF>Ci))U^co@c_`J8letA8ni=%6wIhHp`A0tPba_OFT)3SvbY%-?(Wyo}7G_M$ z?T?&Gr`l0VD6!ig!9c<3L1%g^xK7XReL=SVc^66bqBT;4&-qqZ%H;n7#{m(LB zWvLz2WCY);@(-d<5chB1y9~`Xq;}K9n41^0P?YuQ4fAn?qMFvf@1d97v1Z-FT(2)k^HYNn+bw?d(um1$Rppj(3zYHG z*s0R6cUJ&8pr2lJTuF(tRe~27;msqM91!N|(EwaBdV&!g-9+vcvrbc7#P(SKN5~l{ z9xU0g)$*_!!{R>6h&Lbgjy6Gz2kJvSrz$8aj>bi)e@w$$Ql`Uf)_OjvI^A38 zJg5+VbH}hrsVuobDv#!fqf3_Z;8zg&xekM(K%ez!kQSmWI%}2wJA11LE~W$=JQfBI z{eCUO6d`UjD^Y31pdJE(8eRMoI`cSz
    {KH7M}7l{#}R_1ceuuei|6)|6rks$O{ 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 n5*I+~=)*?WfMZoFj Date: Tue, 20 Jan 2026 10:33:18 +0000 Subject: [PATCH 09/17] Rename migration file to follow existing naming convention. Co-Authored-By: Claude Opus 4.5 --- .../{add_tools_ai_permission_.py => add_tools_ai_perm_.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename web/migrations/versions/{add_tools_ai_permission_.py => add_tools_ai_perm_.py} (100%) diff --git a/web/migrations/versions/add_tools_ai_permission_.py b/web/migrations/versions/add_tools_ai_perm_.py similarity index 100% rename from web/migrations/versions/add_tools_ai_permission_.py rename to web/migrations/versions/add_tools_ai_perm_.py From 2f80039ca3e560d9cbf7085212ed6a9d21860a6d Mon Sep 17 00:00:00 2001 From: Dave Page Date: Tue, 20 Jan 2026 13:03:09 +0000 Subject: [PATCH 10/17] Address additional PR review comments. - Add caching for LLM model options to avoid repeated API calls when switching between preference categories (fixes slow OpenAI model loading issue). - Add icon to AI Reports panel tab (fa-file-alt). - Clear options cache on successful refresh to ensure fresh data. Co-Authored-By: Claude Opus 4.5 --- web/pgadmin/llm/static/js/ai_tools.js | 1 + .../js/components/PreferencesHelper.jsx | 21 +++++++++++++++++++ .../static/js/components/SelectRefresh.jsx | 8 ++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/web/pgadmin/llm/static/js/ai_tools.js b/web/pgadmin/llm/static/js/ai_tools.js index 5e74e8f2876..f90ea501f5e 100644 --- a/web/pgadmin/llm/static/js/ai_tools.js +++ b/web/pgadmin/llm/static/js/ai_tools.js @@ -404,6 +404,7 @@ define([ handler.docker.openTab({ id: panelId, title: panelTitle, + icon: 'fa fa-file-alt', content: ( { + // Check cache first to avoid repeated API calls + if (optionsCache[optionsEndpoint]) { + return Promise.resolve([...optionsCache[optionsEndpoint], ...staticOptions]); + } return new Promise((resolve) => { const api = getApiInstance(); const optionsUrl = url_for(optionsEndpoint); @@ -130,6 +143,8 @@ export function prepareSubnodeData(node, subNode, nodeData, preferencesStore) { .then((res) => { if (res.data?.data?.models) { const dynamicOptions = res.data.data.models; + // Cache the results + optionsCache[optionsEndpoint] = dynamicOptions; resolve([...dynamicOptions, ...staticOptions]); } else { resolve(staticOptions); @@ -147,6 +162,10 @@ export function prepareSubnodeData(node, subNode, nodeData, preferencesStore) { const staticOptions = element.options || []; // Replace options with a function that fetches from the URL element.options = () => { + // Check cache first to avoid repeated API calls + if (optionsCache[optionsEndpoint]) { + return Promise.resolve([...optionsCache[optionsEndpoint], ...staticOptions]); + } return new Promise((resolve) => { const api = getApiInstance(); // Use url_for to resolve the endpoint to a proper URL @@ -156,6 +175,8 @@ export function prepareSubnodeData(node, subNode, nodeData, preferencesStore) { if (res.data?.data?.models) { // Dynamic models loaded successfully const dynamicOptions = res.data.data.models; + // Cache the results + optionsCache[optionsEndpoint] = dynamicOptions; resolve([...dynamicOptions, ...staticOptions]); } else { // No models in response, use static options diff --git a/web/pgadmin/static/js/components/SelectRefresh.jsx b/web/pgadmin/static/js/components/SelectRefresh.jsx index 5a30bbcbb61..97bf72af886 100644 --- a/web/pgadmin/static/js/components/SelectRefresh.jsx +++ b/web/pgadmin/static/js/components/SelectRefresh.jsx @@ -20,6 +20,7 @@ import url_for from 'sources/url_for'; import gettext from 'sources/gettext'; import { SchemaStateContext } from '../SchemaView/SchemaState'; import { usePgAdmin } from '../PgAdminProvider'; +import { clearOptionsCache } from '../../../preferences/static/js/components/PreferencesHelper'; const StyledBox = styled(Box)(() => ({ display: 'flex', @@ -69,6 +70,7 @@ export function SelectRefresh({ required, className, label, helpMessage, testcid const { getOptionsOnRefresh, optionsRefreshUrl, + optionsUrl, refreshDeps, ...selectControlProps } = controlProps; @@ -101,6 +103,10 @@ export function SelectRefresh({ required, className, label, helpMessage, testcid pgAdmin.Browser.notifier.error(res.data.data.error); } else if (res.data?.data?.models) { const models = res.data.data.models; + // Clear the cache so next time preferences opens, it uses the refreshed data + if (optionsUrl) { + clearOptionsCache(optionsUrl); + } setOptionsState((prev) => ({ options: models, reloadBasis: prev.reloadBasis + 1 })); } else { // No models returned - clear the list @@ -132,7 +138,7 @@ export function SelectRefresh({ required, className, label, helpMessage, testcid setIsRefreshing(false); }); } - }, [optionsRefreshUrl, refreshDeps, schemaState, getOptionsOnRefresh, pgAdmin]); + }, [optionsRefreshUrl, optionsUrl, refreshDeps, schemaState, getOptionsOnRefresh, pgAdmin]); return ( From 6dbca9b2477a0173d5a2a9120877f89856f6fa9b Mon Sep 17 00:00:00 2001 From: Dave Page Date: Thu, 5 Feb 2026 10:07:03 +0000 Subject: [PATCH 11/17] Address PR review feedback from akshay-joshi and coderabbitai - Enforce TLS 1.2 minimum on all SSL contexts to resolve SonarQube weak SSL/TLS vulnerability across all provider files - Remove unused manager parameter from _generate_security_report_llm - Remove unused readonly_wrapper variable in database.py - Replace raise Exception with specific exception types (ValueError, ConnectionError) in model-fetching functions - Use optional chaining in ai_tools.js (res?.data?.success) - Fix all line length violations (>79 chars) in chat.py, __init__.py, test_llm_status.py, and database.py - Fix DOCKER_API_URL comment to say "Typical value" instead of "Default value" since the actual default is empty string Co-Authored-By: Claude Opus 4.5 --- web/config.py | 2 +- web/pgadmin/llm/__init__.py | 43 +++++++++++++-------- web/pgadmin/llm/chat.py | 3 +- web/pgadmin/llm/providers/anthropic.py | 3 ++ web/pgadmin/llm/providers/docker.py | 3 ++ web/pgadmin/llm/providers/openai.py | 3 ++ web/pgadmin/llm/static/js/ai_tools.js | 2 +- web/pgadmin/llm/tests/test_llm_status.py | 14 +++++-- web/pgadmin/llm/tools/database.py | 49 ++++++++++++++---------- 9 files changed, 78 insertions(+), 44 deletions(-) diff --git a/web/config.py b/web/config.py index 8c9a55262d8..0786a5ed0ed 100644 --- a/web/config.py +++ b/web/config.py @@ -1019,7 +1019,7 @@ # Docker Desktop 4.40+ includes a built-in model runner with an # OpenAI-compatible API. No API key is required. # URL for the Docker Model Runner API endpoint. Leave empty to disable. -# Default value: http://localhost:12434 +# Typical value: http://localhost:12434 DOCKER_API_URL = '' # The Docker Model Runner model to use for AI features. diff --git a/web/pgadmin/llm/__init__.py b/web/pgadmin/llm/__init__.py index 88e38155157..0e05e0767b3 100644 --- a/web/pgadmin/llm/__init__.py +++ b/web/pgadmin/llm/__init__.py @@ -28,6 +28,9 @@ except ImportError: SSL_CONTEXT = ssl.create_default_context() +# Enforce minimum TLS 1.2 to satisfy security requirements +SSL_CONTEXT.minimum_version = ssl.TLSVersion.TLSv1_2 + MODULE_NAME = 'llm' @@ -606,8 +609,8 @@ def _fetch_anthropic_models(api_key): data = json.loads(response.read().decode('utf-8')) except urllib.error.HTTPError as e: if e.code == 401: - raise Exception('Invalid API key') - raise Exception(f'API error: {e.code}') + raise ValueError('Invalid API key') + raise ConnectionError(f'API error: {e.code}') models = [] seen = set() @@ -661,8 +664,8 @@ def _fetch_openai_models(api_key): data = json.loads(response.read().decode('utf-8')) except urllib.error.HTTPError as e: if e.code == 401: - raise Exception('Invalid API key') - raise Exception(f'API error: {e.code}') + raise ValueError('Invalid API key') + raise ConnectionError(f'API error: {e.code}') models = [] seen = set() @@ -706,9 +709,13 @@ def _fetch_ollama_models(api_url): ) as response: data = json.loads(response.read().decode('utf-8')) except urllib.error.URLError as e: - raise Exception(f'Cannot connect to Ollama: {e.reason}') - except Exception as e: - raise Exception(f'Error fetching models: {str(e)}') + raise ConnectionError( + f'Cannot connect to Ollama: {e.reason}' + ) + except OSError as e: + raise ConnectionError( + f'Error fetching models: {str(e)}' + ) models = [] for model in data.get('models', []): @@ -755,12 +762,15 @@ def _fetch_docker_models(api_url): ) as response: data = json.loads(response.read().decode('utf-8')) except urllib.error.URLError as e: - raise Exception( - f'Cannot connect to Docker Model Runner: {e.reason}. ' - f'Is Docker Desktop running with model runner enabled?' + raise ConnectionError( + f'Cannot connect to Docker Model Runner: ' + f'{e.reason}. Is Docker Desktop running ' + f'with model runner enabled?' + ) + except OSError as e: + raise ConnectionError( + f'Error fetching models: {str(e)}' ) - except Exception as e: - raise Exception(f'Error fetching models: {str(e)}') models = [] seen = set() @@ -1031,7 +1041,7 @@ def _gather_security_config(conn, manager): return security_info -def _generate_security_report_llm(client, security_info, manager): +def _generate_security_report_llm(client, security_info): """ Use the LLM to analyze the security configuration and generate a report. """ @@ -1046,11 +1056,12 @@ def _generate_security_report_llm(client, security_info, manager): "objects or data.\n\n" "IMPORTANT: Do NOT include a report title, header block, or " "generation date at the top of your response. The title and " - "metadata are added separately by the application. " - "Start directly with the Executive Summary section.\n\n" + "metadata are added separately by the application. Start " + "directly with the Executive Summary section.\n\n" "The report should include:\n" "1. **Executive Summary** - Brief overview of the security posture\n" - "2. **Critical Issues** - Vulnerabilities needing immediate attention\n" + "2. **Critical Issues** - Vulnerabilities needing " + "immediate attention\n" "3. **Warnings** - Important security concerns to be addressed\n" "4. **Recommendations** - Best practices to improve security\n" "5. **Configuration Review** - Analysis of key security settings\n\n" diff --git a/web/pgadmin/llm/chat.py b/web/pgadmin/llm/chat.py index 1bb7c9d6e1d..40e99219111 100644 --- a/web/pgadmin/llm/chat.py +++ b/web/pgadmin/llm/chat.py @@ -65,7 +65,8 @@ def chat_with_database( did: Database ID for database connection conversation_history: Optional list of previous messages system_prompt: Optional custom system prompt (uses default if None) - max_tool_iterations: Maximum number of tool call rounds (uses preference) + max_tool_iterations: Maximum number of tool call + rounds. Uses preference setting if None. provider: Optional LLM provider override model: Optional model override diff --git a/web/pgadmin/llm/providers/anthropic.py b/web/pgadmin/llm/providers/anthropic.py index efcc28b96f3..d2e6d4af4bd 100644 --- a/web/pgadmin/llm/providers/anthropic.py +++ b/web/pgadmin/llm/providers/anthropic.py @@ -23,6 +23,9 @@ except ImportError: SSL_CONTEXT = ssl.create_default_context() +# Enforce minimum TLS 1.2 to satisfy security requirements +SSL_CONTEXT.minimum_version = ssl.TLSVersion.TLSv1_2 + from pgadmin.llm.client import LLMClient, LLMClientError from pgadmin.llm.models import ( Message, Tool, ToolCall, LLMResponse, LLMError, diff --git a/web/pgadmin/llm/providers/docker.py b/web/pgadmin/llm/providers/docker.py index b923f85c04a..c7ade7b3fce 100644 --- a/web/pgadmin/llm/providers/docker.py +++ b/web/pgadmin/llm/providers/docker.py @@ -28,6 +28,9 @@ except ImportError: SSL_CONTEXT = ssl.create_default_context() +# Enforce minimum TLS 1.2 to satisfy security requirements +SSL_CONTEXT.minimum_version = ssl.TLSVersion.TLSv1_2 + from pgadmin.llm.client import LLMClient, LLMClientError from pgadmin.llm.models import ( Message, Tool, ToolCall, LLMResponse, LLMError, diff --git a/web/pgadmin/llm/providers/openai.py b/web/pgadmin/llm/providers/openai.py index 9cb11e1cc62..ed28f4e083c 100644 --- a/web/pgadmin/llm/providers/openai.py +++ b/web/pgadmin/llm/providers/openai.py @@ -24,6 +24,9 @@ except ImportError: SSL_CONTEXT = ssl.create_default_context() +# Enforce minimum TLS 1.2 to satisfy security requirements +SSL_CONTEXT.minimum_version = ssl.TLSVersion.TLSv1_2 + from pgadmin.llm.client import LLMClient, LLMClientError from pgadmin.llm.models import ( Message, Tool, ToolCall, LLMResponse, LLMError, diff --git a/web/pgadmin/llm/static/js/ai_tools.js b/web/pgadmin/llm/static/js/ai_tools.js index f90ea501f5e..7bb8b6d553b 100644 --- a/web/pgadmin/llm/static/js/ai_tools.js +++ b/web/pgadmin/llm/static/js/ai_tools.js @@ -167,7 +167,7 @@ define([ const api = getApiInstance(); api.get(url_for('llm.status')) .then((res) => { - if (res.data && res.data.success) { + if (res?.data?.success) { this.llmEnabled = res.data.data?.enabled || false; this.llmSystemEnabled = res.data.data?.system_enabled || false; } diff --git a/web/pgadmin/llm/tests/test_llm_status.py b/web/pgadmin/llm/tests/test_llm_status.py index 2b586d6e267..9aa145c6caa 100644 --- a/web/pgadmin/llm/tests/test_llm_status.py +++ b/web/pgadmin/llm/tests/test_llm_status.py @@ -52,10 +52,16 @@ def runTest(self): self.provider_enabled and hasattr(self, 'provider_name') ) else None - with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ - patch('pgadmin.llm.utils.is_llm_enabled_system') as mock_system, \ - patch('pgadmin.llm.utils.get_default_provider') as mock_provider, \ - patch('pgadmin.authenticate.mfa.utils.mfa_required', lambda f: f): + with patch( + 'pgadmin.llm.utils.is_llm_enabled' + ) as mock_enabled, patch( + 'pgadmin.llm.utils.is_llm_enabled_system' + ) as mock_system, patch( + 'pgadmin.llm.utils.get_default_provider' + ) as mock_provider, patch( + 'pgadmin.authenticate.mfa.utils.mfa_required', + lambda f: f + ): mock_enabled.return_value = self.expected_enabled mock_system.return_value = self.provider_enabled diff --git a/web/pgadmin/llm/tools/database.py b/web/pgadmin/llm/tools/database.py index 1917d0d6f1e..bdccabc3ab6 100644 --- a/web/pgadmin/llm/tools/database.py +++ b/web/pgadmin/llm/tools/database.py @@ -142,16 +142,8 @@ def _execute_readonly_query(conn, query: str) -> dict: Raises: DatabaseToolError: If query execution fails """ - # Wrap the query in a read-only transaction - # This ensures even if the query tries to modify data, it will fail - readonly_wrapper = """ - BEGIN TRANSACTION READ ONLY; - {query} - ROLLBACK; - """ - - # For SELECT queries, we need to handle them differently - # We'll set the transaction to read-only, execute, then rollback + # Set the transaction to read-only, execute, then rollback. + # This ensures even if the query tries to modify data, it will fail. try: # First, set the transaction to read-only mode status, result = conn.execute_void( @@ -237,7 +229,8 @@ def execute_readonly_query( - truncated: True if results were limited Raises: - DatabaseToolError: If the query fails or connection cannot be established + DatabaseToolError: If the query fails or connection + cannot be established """ # Generate unique connection ID for this LLM query conn_id = f"llm_{secrets.choice(range(1, 9999999))}" @@ -364,10 +357,13 @@ def get_database_schema(sid: int, did: int) -> dict: 'description': row.get('description') }) - # Get views for this schema (relkind v=view, m=materialized view) + # Get views (relkind v=view, m=materialized view) views_sql = f""" - SELECT c.oid, c.relname AS name, - pg_catalog.obj_description(c.oid, 'pg_class') AS description + SELECT c.oid, + c.relname AS name, + pg_catalog.obj_description( + c.oid, 'pg_class' + ) AS description FROM pg_catalog.pg_class c WHERE c.relkind IN ('v', 'm') AND c.relnamespace = {schema_oid}::oid @@ -486,7 +482,10 @@ def get_table_columns( for row in cols_res.get('rows', []): columns.append({ 'name': row.get('name'), - 'data_type': row.get('displaytypname') or row.get('datatype'), + 'data_type': ( + row.get('displaytypname') + or row.get('datatype') + ), 'not_null': row.get('not_null', False), 'has_default': row.get('has_default_val', False), 'description': row.get('description') @@ -591,7 +590,10 @@ def get_table_info( for row in cols_res.get('rows', []): columns.append({ 'name': row.get('name'), - 'data_type': row.get('displaytypname') or row.get('datatype'), + 'data_type': ( + row.get('displaytypname') + or row.get('datatype') + ), 'not_null': row.get('not_null', False), 'has_default': row.get('has_default_val', False), 'description': row.get('description') @@ -608,7 +610,9 @@ def get_table_info( WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUSION' END AS type, - pg_catalog.pg_get_constraintdef(con.oid, true) AS definition + pg_catalog.pg_get_constraintdef( + con.oid, true + ) AS definition FROM pg_catalog.pg_constraint con WHERE con.conrelid = {table_oid}::oid ORDER BY con.contype, con.conname @@ -740,8 +744,10 @@ def execute_tool( "query": { "type": "string", "description": ( - "The SQL query to execute. Should be a SELECT query " - "or other read-only statement. DML statements will fail." + "The SQL query to execute. Should " + "be a SELECT query or other " + "read-only statement. DML " + "statements will fail." ) } }, @@ -751,8 +757,9 @@ def execute_tool( Tool( name="get_database_schema", description=( - "Get a list of all schemas, tables, and views in the database. " - "Use this to understand the database structure before writing queries." + "Get a list of all schemas, tables, and views " + "in the database. Use this to understand the " + "database structure before writing queries." ), parameters={ "type": "object", From 7cbc10d730ac88e2796eb1fe7823e787cf0d3809 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 11:49:29 +0530 Subject: [PATCH 12/17] Javascript dependency: Bump lodash-es from 4.17.22 to 4.17.23 in /web (#9556) --- web/yarn.lock | 1386 ++++++++++++++++--------------------------------- 1 file changed, 456 insertions(+), 930 deletions(-) diff --git a/web/yarn.lock b/web/yarn.lock index 3945ebf5a71..c80e9d48c7e 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -25,18 +25,18 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/code-frame@npm:7.27.1" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/code-frame@npm:7.28.6" dependencies: - "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" js-tokens: "npm:^4.0.0" picocolors: "npm:^1.1.1" - checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 + checksum: 10c0/ed5d57f99455e3b1c23e75ebb8430c6b9800b4ecd0121b4348b97cecb65406a47778d6db61f0d538a4958bb01b4b277e90348a68d39bd3beff1d7c940ed6dd66 languageName: node linkType: hard -"@babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": +"@babel/code-frame@npm:^7.29.0": version: 7.29.0 resolution: "@babel/code-frame@npm:7.29.0" dependencies: @@ -47,14 +47,14 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/compat-data@npm:7.28.5" - checksum: 10c0/702a25de73087b0eba325c1d10979eed7c9b6662677386ba7b5aa6eace0fc0676f78343bae080a0176ae26f58bd5535d73b9d0fbb547fef377692e8b249353a7 +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/compat-data@npm:7.28.6" + checksum: 10c0/2d047431041281eaf33e9943d1a269d3374dbc9b498cafe6a18f5ee9aee7bb96f7f6cac0304eab4d13c41fc4db00fe4ca16c7aa44469ca6a211b8b6343b78fc4 languageName: node linkType: hard -"@babel/compat-data@npm:^7.28.6, @babel/compat-data@npm:^7.29.0": +"@babel/compat-data@npm:^7.29.0": version: 7.29.0 resolution: "@babel/compat-data@npm:7.29.0" checksum: 10c0/08f348554989d23aa801bf1405aa34b15e841c0d52d79da7e524285c77a5f9d298e70e11d91cc578d8e2c9542efc586d50c5f5cf8e1915b254a9dcf786913a94 @@ -62,31 +62,31 @@ __metadata: linkType: hard "@babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4, @babel/core@npm:^7.28.3": - version: 7.28.5 - resolution: "@babel/core@npm:7.28.5" + version: 7.28.6 + resolution: "@babel/core@npm:7.28.6" dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.5" - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-module-transforms": "npm:^7.28.3" - "@babel/helpers": "npm:^7.28.4" - "@babel/parser": "npm:^7.28.5" - "@babel/template": "npm:^7.27.2" - "@babel/traverse": "npm:^7.28.5" - "@babel/types": "npm:^7.28.5" + "@babel/code-frame": "npm:^7.28.6" + "@babel/generator": "npm:^7.28.6" + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-module-transforms": "npm:^7.28.6" + "@babel/helpers": "npm:^7.28.6" + "@babel/parser": "npm:^7.28.6" + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" "@jridgewell/remapping": "npm:^2.3.5" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/535f82238027621da6bdffbdbe896ebad3558b311d6f8abc680637a9859b96edbf929ab010757055381570b29cf66c4a295b5618318d27a4273c0e2033925e72 + checksum: 10c0/716b88b1ab057aa53ffa40f2b2fb7e4ab7a35cd6a065fa60e55ca13d2a666672592329f7ea9269aec17e90cc7ce29f42eda566d07859bfd998329a9f283faadb languageName: node linkType: hard "@babel/eslint-parser@npm:^7.26.5": - version: 7.28.5 - resolution: "@babel/eslint-parser@npm:7.28.5" + version: 7.28.6 + resolution: "@babel/eslint-parser@npm:7.28.6" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" @@ -94,7 +94,7 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/4d13f765434b6be83ab3917f06ad712dedf0d5bfa80fe54cd6cea44adac6a0d2519020ad307d66b4490e46a435874829eac6a9fd3a9cad54d7616c47d288aaed + checksum: 10c0/58a85f67a056ba8389978c4654b690b890a6dcd19aa9655c5d7d9349a0c25f124cabad8a190b6bf7045a063aeee1b8e2ab23cfe4d8fa0e0517716a8b70e758bc languageName: node linkType: hard @@ -110,16 +110,16 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/generator@npm:7.28.5" +"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/generator@npm:7.28.6" dependencies: - "@babel/parser": "npm:^7.28.5" - "@babel/types": "npm:^7.28.5" + "@babel/parser": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" "@jridgewell/gen-mapping": "npm:^0.3.12" "@jridgewell/trace-mapping": "npm:^0.3.28" jsesc: "npm:^3.0.2" - checksum: 10c0/9f219fe1d5431b6919f1a5c60db8d5d34fe546c0d8f5a8511b32f847569234ffc8032beb9e7404649a143f54e15224ecb53a3d11b6bb85c3203e573d91fca752 + checksum: 10c0/162fa358484a9a18e8da1235d998f10ea77c63bab408c8d3e327d5833f120631a77ff022c5ed1d838ee00523f8bb75df1f08196d3657d0bca9f2cfeb8503cc12 languageName: node linkType: hard @@ -145,20 +145,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/helper-compilation-targets@npm:7.27.2" - dependencies: - "@babel/compat-data": "npm:^7.27.2" - "@babel/helper-validator-option": "npm:^7.27.1" - browserslist: "npm:^4.24.0" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10c0/f338fa00dcfea931804a7c55d1a1c81b6f0a09787e528ec580d5c21b3ecb3913f6cb0f361368973ce953b824d910d3ac3e8a8ee15192710d3563826447193ad1 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.28.6": +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2, @babel/helper-compilation-targets@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-compilation-targets@npm:7.28.6" dependencies: @@ -171,24 +158,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3, @babel/helper-create-class-features-plugin@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/helper-create-class-features-plugin@npm:7.28.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-member-expression-to-functions": "npm:^7.28.5" - "@babel/helper-optimise-call-expression": "npm:^7.27.1" - "@babel/helper-replace-supers": "npm:^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.5" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/786a6514efcf4514aaad85beed419b9184d059f4c9a9a95108f320142764999827252a851f7071de19f29424d369616573ecbaa347f1ce23fb12fc6827d9ff56 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.28.6": +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-create-class-features-plugin@npm:7.28.6" dependencies: @@ -255,7 +225,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.27.1, @babel/helper-member-expression-to-functions@npm:^7.28.5": +"@babel/helper-member-expression-to-functions@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-member-expression-to-functions@npm:7.28.5" dependencies: @@ -265,17 +235,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-module-imports@npm:7.27.1" - dependencies: - "@babel/traverse": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - checksum: 10c0/e00aace096e4e29290ff8648455c2bc4ed982f0d61dbf2db1b5e750b9b98f318bf5788d75a4f974c151bd318fd549e81dbcab595f46b14b81c12eda3023f51e8 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.28.6": +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.27.1, @babel/helper-module-imports@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-imports@npm:7.28.6" dependencies: @@ -285,20 +245,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helper-module-transforms@npm:7.28.3" - dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/549be62515a6d50cd4cfefcab1b005c47f89bd9135a22d602ee6a5e3a01f27571868ada10b75b033569f24dc4a2bb8d04bfa05ee75c16da7ade2d0db1437fcdb - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.28.6": +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3, @babel/helper-module-transforms@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-transforms@npm:7.28.6" dependencies: @@ -320,14 +267,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.27.1 - resolution: "@babel/helper-plugin-utils@npm:7.27.1" - checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.28.6": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.28.6, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.28.6 resolution: "@babel/helper-plugin-utils@npm:7.28.6" checksum: 10c0/3f5f8acc152fdbb69a84b8624145ff4f9b9f6e776cb989f9f968f8606eb7185c5c3cfcf3ba08534e37e1e0e1c118ac67080610333f56baa4f7376c99b5f1143d @@ -347,20 +287,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-replace-supers@npm:7.27.1" - dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.27.1" - "@babel/helper-optimise-call-expression": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/4f2eaaf5fcc196580221a7ccd0f8873447b5d52745ad4096418f6101a1d2e712e9f93722c9a32bc9769a1dc197e001f60d6f5438d4dfde4b9c6a9e4df719354c - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.28.6": +"@babel/helper-replace-supers@npm:^7.27.1, @babel/helper-replace-supers@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-replace-supers@npm:7.28.6" dependencies: @@ -390,7 +317,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": +"@babel/helper-validator-identifier@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-validator-identifier@npm:7.28.5" checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 @@ -405,38 +332,38 @@ __metadata: linkType: hard "@babel/helper-wrap-function@npm:^7.27.1": - version: 7.28.3 - resolution: "@babel/helper-wrap-function@npm:7.28.3" + version: 7.28.6 + resolution: "@babel/helper-wrap-function@npm:7.28.6" dependencies: - "@babel/template": "npm:^7.27.2" - "@babel/traverse": "npm:^7.28.3" - "@babel/types": "npm:^7.28.2" - checksum: 10c0/aecb8a457efd893dc3c6378ab9221d06197573fb2fe64afabe7923e7732607d59b07f4c5603909877d69bea3ee87025f4b1d8e4f0403ae0a07b14e9ce0bf355a + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + checksum: 10c0/110674c7aa705dd8cc34f278628f540b37a4cb35e81fcaf557772e026a6fd95f571feb51a8efb146e4e91bbf567dc9dd7f534f78da80f55f4be2ec842f36b678 languageName: node linkType: hard -"@babel/helpers@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/helpers@npm:7.28.4" +"@babel/helpers@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/helpers@npm:7.28.6" dependencies: - "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.4" - checksum: 10c0/aaa5fb8098926dfed5f223adf2c5e4c7fbba4b911b73dfec2d7d3083f8ba694d201a206db673da2d9b3ae8c01793e795767654558c450c8c14b4c2175b4fcb44 + "@babel/template": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" + checksum: 10c0/c4a779c66396bb0cf619402d92f1610601ff3832db2d3b86b9c9dd10983bf79502270e97ac6d5280cea1b1a37de2f06ecbac561bd2271545270407fbe64027cb languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/parser@npm:7.28.5" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/parser@npm:7.28.6" dependencies: - "@babel/types": "npm:^7.28.5" + "@babel/types": "npm:^7.28.6" bin: parser: ./bin/babel-parser.js - checksum: 10c0/5bbe48bf2c79594ac02b490a41ffde7ef5aa22a9a88ad6bcc78432a6ba8a9d638d531d868bd1f104633f1f6bba9905746e15185b8276a3756c42b765d131b1ef + checksum: 10c0/d6bfe8aa8e067ef58909e9905496157312372ca65d8d2a4f2b40afbea48d59250163755bba8ae626a615da53d192b084bcfc8c9dad8b01e315b96967600de581 languageName: node linkType: hard -"@babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": +"@babel/parser@npm:^7.29.0": version: 7.29.0 resolution: "@babel/parser@npm:7.29.0" dependencies: @@ -494,18 +421,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/3cdc27c4e08a632a58e62c6017369401976edf1cd9ae73fd9f0d6770ddd9accf40b494db15b66bab8db2a8d5dc5bab5ca8c65b19b81fdca955cd8cbbe24daadb - languageName: node - linkType: hard - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.6" @@ -598,17 +513,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/06a954ee672f7a7c44d52b6e55598da43a7064e80df219765c51c37a0692641277e90411028f7cae4f4d1dedeed084f0c453576fa421c35a81f1603c5e3e0146 - languageName: node - linkType: hard - "@babel/plugin-syntax-import-assertions@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-syntax-import-assertions@npm:7.28.6" @@ -620,18 +524,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e66f7a761b8360419bbb93ab67d87c8a97465ef4637a985ff682ce7ba6918b34b29d81190204cf908d0933058ee7b42737423cd8a999546c21b3aabad4affa9a - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-attributes@npm:^7.28.6": +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-syntax-import-attributes@npm:7.28.6" dependencies: @@ -664,14 +557,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.16.0, @babel/plugin-syntax-jsx@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" +"@babel/plugin-syntax-jsx@npm:^7.16.0, @babel/plugin-syntax-jsx@npm:^7.27.1, @babel/plugin-syntax-jsx@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-jsx@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/bc5afe6a458d5f0492c02a54ad98c5756a0c13bd6d20609aae65acd560a9e141b0876da5f358dce34ea136f271c1016df58b461184d7ae9c4321e0f98588bc84 + checksum: 10c0/b98fc3cd75e4ca3d5ca1162f610c286e14ede1486e0d297c13a5eb0ac85680ac9656d17d348bddd9160a54d797a08cea5eaac02b9330ddebb7b26732b7b99fb5 languageName: node linkType: hard @@ -763,14 +656,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" +"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/11589b4c89c66ef02d57bf56c6246267851ec0c361f58929327dc3e070b0dab644be625bbe7fb4c4df30c3634bfdfe31244e1f517be397d2def1487dbbe3c37d + checksum: 10c0/b0c392a35624883ac480277401ac7d92d8646b66e33639f5d350de7a6723924265985ae11ab9ebd551740ded261c443eaa9a87ea19def9763ca1e0d78c97dea8 languageName: node linkType: hard @@ -797,16 +690,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" +"@babel/plugin-transform-async-generator-functions@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-remap-async-to-generator": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.0" + "@babel/traverse": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/739d577e649d7d7b9845dc309e132964327ab3eaea43ad04d04a7dcb977c63f9aa9a423d1ca39baf10939128d02f52e6fda39c834fb9f1753785b1497e72c4dc + checksum: 10c0/eddb94b0b990d8057c9c3587db3453eb586d1835626a9d683e6e8bef0ac5f708a76002951fb9cca80c902b3074b21b3a81b8af9090492561d9179862ce5716d8 languageName: node linkType: hard @@ -823,19 +716,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" - dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/helper-remap-async-to-generator": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e76b1f6f9c3bbf72e17d7639406d47f09481806de4db99a8de375a0bb40957ea309b20aa705f0c25ab1d7c845e3f365af67eafa368034521151a0e352a03ef2f - languageName: node - linkType: hard - "@babel/plugin-transform-async-to-generator@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-async-to-generator@npm:7.28.6" @@ -860,17 +740,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-block-scoping@npm:7.28.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/6b098887b375c23813ccee7a00179501fc5f709b4ee5a4b2a5c5c9ef3b44cee49e240214b1a9b4ad2bd1911fab3335eac2f0a3c5f014938a1b61bec84cec4845 - languageName: node - linkType: hard - "@babel/plugin-transform-block-scoping@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-block-scoping@npm:7.28.6" @@ -882,18 +751,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/cc0662633c0fe6df95819fef223506ddf26c369c8d64ab21a728d9007ec866bf9436a253909819216c24a82186b6ccbc1ec94d7aaf3f82df227c7c02fa6a704b - languageName: node - linkType: hard - "@babel/plugin-transform-class-properties@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-class-properties@npm:7.28.6" @@ -906,18 +763,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.28.3" - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 10c0/8c922a64f6f5b359f7515c89ef0037bad583b4484dfebc1f6bc1cf13462547aaceb19788827c57ec9a2d62495f34c4b471ca636bf61af00fdaea5e9642c82b60 - languageName: node - linkType: hard - "@babel/plugin-transform-class-static-block@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-class-static-block@npm:7.28.6" @@ -930,22 +775,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/plugin-transform-classes@npm:7.28.4" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-globals": "npm:^7.28.0" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/helper-replace-supers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/76687ed37216ff012c599870dc00183fb716f22e1a02fe9481943664c0e4d0d88c3da347dc3fe290d4728f4d47cd594ffa621d23845e2bb8ab446e586308e066 - languageName: node - linkType: hard - "@babel/plugin-transform-classes@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-classes@npm:7.28.6" @@ -962,18 +791,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/template": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e09a12f8c8ae0e6a6144c102956947b4ec05f6c844169121d0ec4529c2d30ad1dc59fee67736193b87a402f44552c888a519a680a31853bdb4d34788c28af3b0 - languageName: node - linkType: hard - "@babel/plugin-transform-computed-properties@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-computed-properties@npm:7.28.6" @@ -986,7 +803,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.28.0, @babel/plugin-transform-destructuring@npm:^7.28.5": +"@babel/plugin-transform-destructuring@npm:^7.28.5": version: 7.28.5 resolution: "@babel/plugin-transform-destructuring@npm:7.28.5" dependencies: @@ -998,18 +815,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/f9caddfad9a551b4dabe0dcb7c040f458fbaaa7bbb44200c20198b32c8259be8e050e58d2c853fdac901a4cfe490b86aa857036d8d461b192dd010d0e242dedb - languageName: node - linkType: hard - "@babel/plugin-transform-dotall-regex@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-dotall-regex@npm:7.28.6" @@ -1033,15 +838,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.28.6" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/121502a252b3206913e1e990a47fea34397b4cbf7804d4cd872d45961bc45b603423f60ca87f3a3023a62528f5feb475ac1c9ec76096899ec182fcb135eba375 + checksum: 10c0/a1b4161ed6a4a5e78f802035b38efd71db6691fc1b2b2a1aea49fcb449077105b4925f0c4670f117231462f5cb0a35df4ad297f7b1fac38ec76e89635f8dc51d languageName: node linkType: hard @@ -1068,18 +873,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-transform-destructuring": "npm:^7.28.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/3baa706af3112adf2ae0c7ec0dc61b63dd02695eb5582f3c3a2b2d05399c6aa7756f55e7bbbd5412e613a6ba1dd6b6736904074b4d7ebd6b45a1e3f9145e4094 - languageName: node - linkType: hard - "@babel/plugin-transform-explicit-resource-management@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.6" @@ -1092,17 +885,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/006566e003c2a8175346cc4b3260fcd9f719b912ceae8a4e930ce02ee3cf0b2841d5c21795ba71790871783d3c0c1c3d22ce441b8819c37975844bfba027d3f7 - languageName: node - linkType: hard - "@babel/plugin-transform-exponentiation-operator@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.28.6" @@ -1150,17 +932,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/2379714aca025516452a7c1afa1ca42a22b9b51a5050a653cc6198a51665ab82bdecf36106d32d731512706a1e373c5637f5ff635737319aa42f3827da2326d6 - languageName: node - linkType: hard - "@babel/plugin-transform-json-strings@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-json-strings@npm:7.28.6" @@ -1183,17 +954,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/fba4faa96d86fa745b0539bb631deee3f2296f0643c087a50ad0fac2e5f0a787fa885e9bdd90ae3e7832803f3c08e7cd3f1e830e7079dbdc023704923589bb23 - languageName: node - linkType: hard - "@babel/plugin-transform-logical-assignment-operators@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.28.6" @@ -1228,19 +988,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" - dependencies: - "@babel/helper-module-transforms": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/4def972dcd23375a266ea1189115a4ff61744b2c9366fc1de648b3fab2c650faf1a94092de93a33ff18858d2e6c4dddeeee5384cb42ba0129baeab01a5cdf1e2 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.28.6": +"@babel/plugin-transform-modules-commonjs@npm:^7.27.1, @babel/plugin-transform-modules-commonjs@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.28.6" dependencies: @@ -1327,17 +1075,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/a435fc03aaa65c6ef8e99b2d61af0994eb5cdd4a28562d78c3b0b0228ca7e501aa255e1dff091a6996d7d3ea808eb5a65fd50ecd28dfb10687a8a1095dcadc7a - languageName: node - linkType: hard - "@babel/plugin-transform-nullish-coalescing-operator@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.28.6" @@ -1349,17 +1086,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/b72cbebbfe46fcf319504edc1cf59f3f41c992dd6840db766367f6a1d232cd2c52143c5eaf57e0316710bee251cae94be97c6d646b5022fcd9274ccb131b470c - languageName: node - linkType: hard - "@babel/plugin-transform-numeric-separator@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-numeric-separator@npm:7.28.6" @@ -1371,21 +1097,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-transform-destructuring": "npm:^7.28.0" - "@babel/plugin-transform-parameters": "npm:^7.27.7" - "@babel/traverse": "npm:^7.28.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/81725c8d6349957899975f3f789b1d4fb050ee8b04468ebfaccd5b59e0bda15cbfdef09aee8b4359f322b6715149d680361f11c1a420c4bdbac095537ecf7a90 - languageName: node - linkType: hard - "@babel/plugin-transform-object-rest-spread@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.6" @@ -1413,17 +1124,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/807a4330f1fac08e2682d57bc82e714868fc651c8876f9a8b3a3fd8f53c129e87371f8243e712ac7dae11e090b737a2219a02fe1b6459a29e664fa073c3277bb - languageName: node - linkType: hard - "@babel/plugin-transform-optional-catch-binding@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.28.6" @@ -1435,19 +1135,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/adf5f70b1f9eb0dd6ff3d159a714683af3c910775653e667bd9f864c3dc2dc9872aba95f6c1e5f2a9675067241942f4fd0d641147ef4bf2bd8bc15f1fa0f2ed5 - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-chaining@npm:^7.28.6": +"@babel/plugin-transform-optional-chaining@npm:^7.27.1, @babel/plugin-transform-optional-chaining@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.6" dependencies: @@ -1461,24 +1149,12 @@ __metadata: "@babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.27.7": version: 7.27.7 - resolution: "@babel/plugin-transform-parameters@npm:7.27.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/f2da3804e047d9f1cfb27be6c014e2c7f6cf5e1e38290d1cb3cb2607859e3d6facb4ee8c8c1e336e9fbb440091a174ce95ce156582d7e8bf9c0e735d11681f0f - languageName: node - linkType: hard - -"@babel/plugin-transform-private-methods@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" + resolution: "@babel/plugin-transform-parameters@npm:7.27.7" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/232bedfe9d28df215fb03cc7623bdde468b1246bdd6dc24465ff4bf9cc5f5a256ae33daea1fafa6cc59705e4d29da9024bb79baccaa5cd92811ac5db9b9244f2 + checksum: 10c0/f2da3804e047d9f1cfb27be6c014e2c7f6cf5e1e38290d1cb3cb2607859e3d6facb4ee8c8c1e336e9fbb440091a174ce95ce156582d7e8bf9c0e735d11681f0f languageName: node linkType: hard @@ -1494,19 +1170,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/a8c4536273ca716dcc98e74ea25ca76431528554922f184392be3ddaf1761d4aa0e06f1311577755bd1613f7054fb51d29de2ada1130f743d329170a1aa1fe56 - languageName: node - linkType: hard - "@babel/plugin-transform-private-property-in-object@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-private-property-in-object@npm:7.28.6" @@ -1565,17 +1228,17 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1" + version: 7.28.6 + resolution: "@babel/plugin-transform-react-jsx@npm:7.28.6" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/plugin-syntax-jsx": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-module-imports": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/plugin-syntax-jsx": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1a08637c39fc78c9760dd4a3ed363fdbc762994bf83ed7872ad5bda0232fcd0fc557332f2ce36b522c0226dfd9cc8faac6b88eddda535f24825198a689e571af + checksum: 10c0/cc75b9bb3997751df6cf7e86afe1b3fa33130b5031a412f6f12cc5faec083650fe852de0af5ec8f88d3588cc3428a3f514d3bc1f423d26f8b014cc5dff9f15a7 languageName: node linkType: hard @@ -1591,14 +1254,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" +"@babel/plugin-transform-regenerator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-regenerator@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5ad14647ffaac63c920e28df1b580ee2e932586bbdc71f61ec264398f68a5406c71a7f921de397a41b954a69316c5ab90e5d789ffa2bb34c5e6feb3727cfefb8 + checksum: 10c0/dbb65b7444548807aee558cdaf23996e7a0f6c3bced09c6b5d177734b3addcaf417532186e330341758979651e2af8cb98ae572f794f05c0e2e201e5593a5ffe languageName: node linkType: hard @@ -1613,18 +1276,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/31ae596ab56751cf43468a6c0a9d6bc3521d306d2bee9c6957cdb64bea53812ce24bd13a32f766150d62b737bca5b0650b2c62db379382fff0dccbf076055c33 - languageName: node - linkType: hard - "@babel/plugin-transform-regexp-modifiers@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.28.6" @@ -1675,18 +1326,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-spread@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/b34fc58b33bd35b47d67416655c2cbc8578fbb3948b4592bc15eb6d8b4046986e25c06e3b9929460fa4ab08e9653582415e7ef8b87d265e1239251bdf5a4c162 - languageName: node - linkType: hard - "@babel/plugin-transform-spread@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-spread@npm:7.28.6" @@ -1733,17 +1372,17 @@ __metadata: linkType: hard "@babel/plugin-transform-typescript@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-typescript@npm:7.28.5" + version: 7.28.6 + resolution: "@babel/plugin-transform-typescript@npm:7.28.6" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-create-class-features-plugin": "npm:^7.28.5" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/plugin-syntax-typescript": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/09e574ba5462e56452b4ceecae65e53c8e697a2d3559ce5d210bed10ac28a18aa69377e7550c30520eb29b40c417ee61997d5d58112657f22983244b78915a7c + checksum: 10c0/72dbfd3e5f71c4e30445e610758ec0eef65347fafd72bd46f4903733df0d537663a72a81c1626f213a0feab7afc68ba83f1648ffece888dd0868115c9cb748f6 languageName: node linkType: hard @@ -1758,18 +1397,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/a332bc3cb3eeea67c47502bc52d13a0f8abae5a7bfcb08b93a8300ddaff8d9e1238f912969494c1b494c1898c6f19687054440706700b6d12cb0b90d88beb4d0 - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-property-regex@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.28.6" @@ -1794,18 +1421,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/236645f4d0a1fba7c18dc8ffe3975933af93e478f2665650c2d91cf528cfa1587cde5cfe277e0e501fc03b5bf57638369575d6539cef478632fb93bd7d7d7178 - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-sets-regex@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.28.6" @@ -1819,73 +1434,73 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.20.2": - version: 7.28.5 - resolution: "@babel/preset-env@npm:7.28.5" + version: 7.28.6 + resolution: "@babel/preset-env@npm:7.28.6" dependencies: - "@babel/compat-data": "npm:^7.28.5" - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/compat-data": "npm:^7.28.6" + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-validator-option": "npm:^7.27.1" "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.6" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" - "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" + "@babel/plugin-syntax-import-assertions": "npm:^7.28.6" + "@babel/plugin-syntax-import-attributes": "npm:^7.28.6" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" - "@babel/plugin-transform-async-generator-functions": "npm:^7.28.0" - "@babel/plugin-transform-async-to-generator": "npm:^7.27.1" + "@babel/plugin-transform-async-generator-functions": "npm:^7.28.6" + "@babel/plugin-transform-async-to-generator": "npm:^7.28.6" "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" - "@babel/plugin-transform-block-scoping": "npm:^7.28.5" - "@babel/plugin-transform-class-properties": "npm:^7.27.1" - "@babel/plugin-transform-class-static-block": "npm:^7.28.3" - "@babel/plugin-transform-classes": "npm:^7.28.4" - "@babel/plugin-transform-computed-properties": "npm:^7.27.1" + "@babel/plugin-transform-block-scoping": "npm:^7.28.6" + "@babel/plugin-transform-class-properties": "npm:^7.28.6" + "@babel/plugin-transform-class-static-block": "npm:^7.28.6" + "@babel/plugin-transform-classes": "npm:^7.28.6" + "@babel/plugin-transform-computed-properties": "npm:^7.28.6" "@babel/plugin-transform-destructuring": "npm:^7.28.5" - "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" + "@babel/plugin-transform-dotall-regex": "npm:^7.28.6" "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.28.6" "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" - "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.0" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.5" + "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.6" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.6" "@babel/plugin-transform-export-namespace-from": "npm:^7.27.1" "@babel/plugin-transform-for-of": "npm:^7.27.1" "@babel/plugin-transform-function-name": "npm:^7.27.1" - "@babel/plugin-transform-json-strings": "npm:^7.27.1" + "@babel/plugin-transform-json-strings": "npm:^7.28.6" "@babel/plugin-transform-literals": "npm:^7.27.1" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.28.5" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.28.6" "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" "@babel/plugin-transform-modules-amd": "npm:^7.27.1" - "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.28.6" "@babel/plugin-transform-modules-systemjs": "npm:^7.28.5" "@babel/plugin-transform-modules-umd": "npm:^7.27.1" "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" "@babel/plugin-transform-new-target": "npm:^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" - "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" - "@babel/plugin-transform-object-rest-spread": "npm:^7.28.4" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.28.6" + "@babel/plugin-transform-numeric-separator": "npm:^7.28.6" + "@babel/plugin-transform-object-rest-spread": "npm:^7.28.6" "@babel/plugin-transform-object-super": "npm:^7.27.1" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" - "@babel/plugin-transform-optional-chaining": "npm:^7.28.5" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.28.6" + "@babel/plugin-transform-optional-chaining": "npm:^7.28.6" "@babel/plugin-transform-parameters": "npm:^7.27.7" - "@babel/plugin-transform-private-methods": "npm:^7.27.1" - "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" + "@babel/plugin-transform-private-methods": "npm:^7.28.6" + "@babel/plugin-transform-private-property-in-object": "npm:^7.28.6" "@babel/plugin-transform-property-literals": "npm:^7.27.1" - "@babel/plugin-transform-regenerator": "npm:^7.28.4" - "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" + "@babel/plugin-transform-regenerator": "npm:^7.28.6" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.28.6" "@babel/plugin-transform-reserved-words": "npm:^7.27.1" "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" - "@babel/plugin-transform-spread": "npm:^7.27.1" + "@babel/plugin-transform-spread": "npm:^7.28.6" "@babel/plugin-transform-sticky-regex": "npm:^7.27.1" "@babel/plugin-transform-template-literals": "npm:^7.27.1" "@babel/plugin-transform-typeof-symbol": "npm:^7.27.1" "@babel/plugin-transform-unicode-escapes": "npm:^7.27.1" - "@babel/plugin-transform-unicode-property-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.28.6" "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" - "@babel/plugin-transform-unicode-sets-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.28.6" "@babel/preset-modules": "npm:0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2: "npm:^0.4.14" babel-plugin-polyfill-corejs3: "npm:^0.13.0" @@ -1894,7 +1509,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d1b730158de290f1c54ed7db0f4fed3f82db5f868ab0a4cb3fc2ea76ed683b986ae136f6e7eb0b44b91bc9a99039a2559851656b4fd50193af1a815a3e32e524 + checksum: 10c0/a08f007c5e8c95beb10a4ab8ad8fdbd823c8ace5f24f491f69a10b6cad079825d39cd1bc9dd312680bbd5aa5f95095cce7d01f51e31bae6720039b11e8105ace languageName: node linkType: hard @@ -2023,30 +1638,12 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.28.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.28.4 - resolution: "@babel/runtime@npm:7.28.4" - checksum: 10c0/792ce7af9750fb9b93879cc9d1db175701c4689da890e6ced242ea0207c9da411ccf16dc04e689cc01158b28d7898c40d75598f4559109f761c12ce01e959bf7 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.28.6": version: 7.28.6 resolution: "@babel/runtime@npm:7.28.6" checksum: 10c0/358cf2429992ac1c466df1a21c1601d595c46930a13c1d4662fde908d44ee78ec3c183aaff513ecb01ef8c55c3624afe0309eeeb34715672dbfadb7feedb2c0d languageName: node linkType: hard -"@babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/template@npm:7.27.2" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/parser": "npm:^7.27.2" - "@babel/types": "npm:^7.27.1" - checksum: 10c0/ed9e9022651e463cc5f2cc21942f0e74544f1754d231add6348ff1b472985a3b3502041c0be62dc99ed2d12cfae0c51394bf827452b98a2f8769c03b87aadc81 - languageName: node - linkType: hard - "@babel/template@npm:^7.28.6": version: 7.28.6 resolution: "@babel/template@npm:7.28.6" @@ -2058,22 +1655,22 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/traverse@npm:7.28.5" +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.5, @babel/traverse@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/traverse@npm:7.28.6" dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.5" + "@babel/code-frame": "npm:^7.28.6" + "@babel/generator": "npm:^7.28.6" "@babel/helper-globals": "npm:^7.28.0" - "@babel/parser": "npm:^7.28.5" - "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.5" + "@babel/parser": "npm:^7.28.6" + "@babel/template": "npm:^7.28.6" + "@babel/types": "npm:^7.28.6" debug: "npm:^4.3.1" - checksum: 10c0/f6c4a595993ae2b73f2d4cd9c062f2e232174d293edd4abe1d715bd6281da8d99e47c65857e8d0917d9384c65972f4acdebc6749a7c40a8fcc38b3c7fb3e706f + checksum: 10c0/ed5deb9c3f03e2d1ad2d44b9c92c84cce24593245c3f7871ce27ee1b36d98034e6cd895fa98a94eb44ebabe1d22f51b10b09432939d1c51a0fcaab98f17a97bc languageName: node linkType: hard -"@babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": +"@babel/traverse@npm:^7.29.0": version: 7.29.0 resolution: "@babel/traverse@npm:7.29.0" dependencies: @@ -2088,17 +1685,17 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.4.4": - version: 7.28.5 - resolution: "@babel/types@npm:7.28.5" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.5, @babel/types@npm:^7.28.6, @babel/types@npm:^7.4.4": + version: 7.28.6 + resolution: "@babel/types@npm:7.28.6" dependencies: "@babel/helper-string-parser": "npm:^7.27.1" "@babel/helper-validator-identifier": "npm:^7.28.5" - checksum: 10c0/a5a483d2100befbf125793640dec26b90b95fd233a94c19573325898a5ce1e52cdfa96e495c7dcc31b5eca5b66ce3e6d4a0f5a4a62daec271455959f208ab08a + checksum: 10c0/54a6a9813e48ef6f35aa73c03b3c1572cad7fa32b61b35dd07e4230bc77b559194519c8a4d8106a041a27cc7a94052579e238a30a32d5509aa4da4d6fd83d990 languageName: node linkType: hard -"@babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": +"@babel/types@npm:^7.29.0": version: 7.29.0 resolution: "@babel/types@npm:7.29.0" dependencies: @@ -2128,14 +1725,14 @@ __metadata: linkType: hard "@codemirror/commands@npm:^6.0.0, @codemirror/commands@npm:^6.7.1": - version: 6.10.0 - resolution: "@codemirror/commands@npm:6.10.0" + version: 6.10.1 + resolution: "@codemirror/commands@npm:6.10.1" dependencies: "@codemirror/language": "npm:^6.0.0" "@codemirror/state": "npm:^6.4.0" "@codemirror/view": "npm:^6.27.0" "@lezer/common": "npm:^1.1.0" - checksum: 10c0/5122c026ef3578049a9d166a0afe9cd66abcc20fd5a2a084c97a60b519db6f38e3b8f05af813e5bdbbf249d3a95dce07a52cd30f77083da4a2da660c1b424a88 + checksum: 10c0/1841d8ad6751f0d10d10200e81333c5c9b0d6afb55692e41df85992a3737abc8c2ee97e14816ce624276381fbb0261e7aaf8474e170b74f796c3ba62500be3da languageName: node linkType: hard @@ -2164,16 +1761,16 @@ __metadata: linkType: hard "@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.10.3": - version: 6.11.3 - resolution: "@codemirror/language@npm:6.11.3" + version: 6.12.1 + resolution: "@codemirror/language@npm:6.12.1" dependencies: "@codemirror/state": "npm:^6.0.0" "@codemirror/view": "npm:^6.23.0" - "@lezer/common": "npm:^1.1.0" + "@lezer/common": "npm:^1.5.0" "@lezer/highlight": "npm:^1.0.0" "@lezer/lr": "npm:^1.0.0" style-mod: "npm:^4.0.0" - checksum: 10c0/0cbc2a98bd9e94e8e186af30613741a553fc45479e3875c79bddc32340d4d75ecc36229c66e2ee5fcffbc8fdd49b442e43847799d1d68651e3b4f8ec20d3d092 + checksum: 10c0/d37e526a839f571f767372c49e28649c4e79a539c73845a74117ee408ad31c29d60a32b5e1bad439637b1456d18154d672eb225e9b4482d3e00eca150461bc6a languageName: node linkType: hard @@ -2189,34 +1786,34 @@ __metadata: linkType: hard "@codemirror/search@npm:^6.0.0, @codemirror/search@npm:^6.5.6": - version: 6.5.11 - resolution: "@codemirror/search@npm:6.5.11" + version: 6.6.0 + resolution: "@codemirror/search@npm:6.6.0" dependencies: "@codemirror/state": "npm:^6.0.0" - "@codemirror/view": "npm:^6.0.0" + "@codemirror/view": "npm:^6.37.0" crelt: "npm:^1.0.5" - checksum: 10c0/8f25647ceb9a255a6e5797c20ec787587537e8496f651d8815d3f8f6c9fc5bf586b6552dadfcc7ad24364c659fcd12315c5fa235a098ba15840bb76bed35cc09 + checksum: 10c0/dacb6dbf94dbc4513b681ea2ea215b5771b478bc940c88e52976b7981dc135b3f17cfcb1e3e929579078f334b42e91bdfee89b9ec874638ddaf82f87cefa0de2 languageName: node linkType: hard "@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.4.0, @codemirror/state@npm:^6.4.1, @codemirror/state@npm:^6.5.0": - version: 6.5.2 - resolution: "@codemirror/state@npm:6.5.2" + version: 6.5.4 + resolution: "@codemirror/state@npm:6.5.4" dependencies: "@marijn/find-cluster-break": "npm:^1.0.0" - checksum: 10c0/1ef773394e32c077a8cfc1ec6d881aefb1918876f82161748e505c38d143aa1c6893c314cfec91097d28f704ec07b2a6c6b75abd435086208974256dee997282 + checksum: 10c0/8f40e1a22b84752fc44637e586cb3d804f775c0cf9c8083a79eed5cb18fbdfb30b83c112d8b6d819046526d1f9e49bf1198bdca4c4c3427bdf2c657a96df7adf languageName: node linkType: hard -"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0, @codemirror/view@npm:^6.34.1, @codemirror/view@npm:^6.35.0": - version: 6.39.4 - resolution: "@codemirror/view@npm:6.39.4" +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0, @codemirror/view@npm:^6.34.1, @codemirror/view@npm:^6.35.0, @codemirror/view@npm:^6.37.0": + version: 6.39.11 + resolution: "@codemirror/view@npm:6.39.11" dependencies: "@codemirror/state": "npm:^6.5.0" crelt: "npm:^1.0.6" style-mod: "npm:^4.1.0" w3c-keyname: "npm:^2.2.4" - checksum: 10c0/aa17cfbfb0714243cccc9e970f4f382c3e747435f2fc63d40125370379227436fb529473dde856a276b8b7df98f83c55f4cc5cd0c24a56335f24233103b7dfd0 + checksum: 10c0/832c240d9efcdc1df7e60686e471517059bc3e1f8d6083216d98f2ea15550d29d861ca5b82e4b9d61cbd3d71b0abb9e39f58608a373e3c5bc10e7a2e325aeff2 languageName: node linkType: hard @@ -2302,21 +1899,21 @@ __metadata: linkType: hard "@emnapi/core@npm:^1.4.3": - version: 1.7.1 - resolution: "@emnapi/core@npm:1.7.1" + version: 1.8.1 + resolution: "@emnapi/core@npm:1.8.1" dependencies: "@emnapi/wasi-threads": "npm:1.1.0" tslib: "npm:^2.4.0" - checksum: 10c0/f3740be23440b439333e3ae3832163f60c96c4e35337f3220ceba88f36ee89a57a871d27c94eb7a9ff98a09911ed9a2089e477ab549f4d30029f8b907f84a351 + checksum: 10c0/2c242f4b49779bac403e1cbcc98edacdb1c8ad36562408ba9a20663824669e930bc8493be46a2522d9dc946b8d96cd7073970bae914928c7671b5221c85b432e languageName: node linkType: hard "@emnapi/runtime@npm:^1.4.3, @emnapi/runtime@npm:^1.7.0": - version: 1.7.1 - resolution: "@emnapi/runtime@npm:1.7.1" + version: 1.8.1 + resolution: "@emnapi/runtime@npm:1.8.1" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/26b851cd3e93877d8732a985a2ebf5152325bbacc6204ef5336a47359dedcc23faeb08cdfcb8bb389b5401b3e894b882bc1a1e55b4b7c1ed1e67c991a760ddd5 + checksum: 10c0/f4929d75e37aafb24da77d2f58816761fe3f826aad2e37fa6d4421dac9060cbd5098eea1ac3c9ecc4526b89deb58153852fa432f87021dc57863f2ff726d713f languageName: node linkType: hard @@ -2482,18 +2079,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.7.0, @eslint-community/eslint-utils@npm:^4.8.0": - version: 4.9.0 - resolution: "@eslint-community/eslint-utils@npm:4.9.0" - dependencies: - eslint-visitor-keys: "npm:^3.4.3" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817 - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.9.1": +"@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": version: 4.9.1 resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: @@ -3354,10 +2940,10 @@ __metadata: languageName: node linkType: hard -"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.1.0, @lezer/common@npm:^1.2.0, @lezer/common@npm:^1.3.0": - version: 1.4.0 - resolution: "@lezer/common@npm:1.4.0" - checksum: 10c0/6b7a0b5f9b969d5eb87b1a6407abf90809ed4cb290afa4ce0fd412102176144b1d01748f243b27fef1300e0444eb690a519395388cda936fbbb536fd0abb8ebc +"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.1.0, @lezer/common@npm:^1.2.0, @lezer/common@npm:^1.3.0, @lezer/common@npm:^1.5.0": + version: 1.5.0 + resolution: "@lezer/common@npm:1.5.0" + checksum: 10c0/12c4b0ea9d621eedb6aa13e41a0628e25f80efe6a1d44cf68a9ea1808db4c8fc124d0691458de69c833860f3235526fbec574005d812c710e693c2dc6e65e3a8 languageName: node linkType: hard @@ -3382,11 +2968,11 @@ __metadata: linkType: hard "@lezer/lr@npm:^1.0.0": - version: 1.4.5 - resolution: "@lezer/lr@npm:1.4.5" + version: 1.4.7 + resolution: "@lezer/lr@npm:1.4.7" dependencies: "@lezer/common": "npm:^1.0.0" - checksum: 10c0/06a6fcba5093eb654303f0bcca5009c404fe865d19c5e302e095c3d317ca50ceafd5753bb05aa26403996fc039dffa12288154fb9e201f49a94dea798d0cb6bc + checksum: 10c0/543c2e1aae12231d8ccab61315fb3a6d0427c30c12c04dbe148abfc2834863db51a6a279a7957ba94dbf48112d49e53054c53368e27229365a6bdd11c17e3000 languageName: node linkType: hard @@ -3397,38 +2983,38 @@ __metadata: languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^7.3.8": - version: 7.3.8 - resolution: "@mui/core-downloads-tracker@npm:7.3.8" - checksum: 10c0/bbce4375e47b8ef46af762d8837e006ccca26cc56c0efb34ac497a090e7e9fff868ea2dd423d3c28c4cf51ff9e4fbbb024d3afe1d19849533b06e6924fcfc4e9 +"@mui/core-downloads-tracker@npm:^7.3.7": + version: 7.3.7 + resolution: "@mui/core-downloads-tracker@npm:7.3.7" + checksum: 10c0/a1352bb47e1d9dc8dad3c33f7f2f8e544806d7a2de40049a3f24cbde8c7a101b6d54fcd251bd0051ab55303ffef1355eb567c8cf5447918797ea0ca920b1a097 languageName: node linkType: hard "@mui/icons-material@npm:^7.3.6": - version: 7.3.6 - resolution: "@mui/icons-material@npm:7.3.6" + version: 7.3.7 + resolution: "@mui/icons-material@npm:7.3.7" dependencies: "@babel/runtime": "npm:^7.28.4" peerDependencies: - "@mui/material": ^7.3.6 + "@mui/material": ^7.3.7 "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/ec0286beb22a7070566d6242410b75f4106e15b2ead7b5d5115f00e1c7fc70d44d47289a1d27059781d56907cf291e53261868dafd7dba2843245abe18799d65 + checksum: 10c0/902a2a942539ac577c0cc9dfce09bed383362eb9e68c8dc6dff179c377ec685b2ae7032baf9ef04ba4ab595302a13455ae2c24ea22fd0ed28768c3b20c62b210 languageName: node linkType: hard "@mui/material@npm:^7.3.7": - version: 7.3.8 - resolution: "@mui/material@npm:7.3.8" - dependencies: - "@babel/runtime": "npm:^7.28.6" - "@mui/core-downloads-tracker": "npm:^7.3.8" - "@mui/system": "npm:^7.3.8" - "@mui/types": "npm:^7.4.11" - "@mui/utils": "npm:^7.3.8" + version: 7.3.7 + resolution: "@mui/material@npm:7.3.7" + dependencies: + "@babel/runtime": "npm:^7.28.4" + "@mui/core-downloads-tracker": "npm:^7.3.7" + "@mui/system": "npm:^7.3.7" + "@mui/types": "npm:^7.4.10" + "@mui/utils": "npm:^7.3.7" "@popperjs/core": "npm:^2.11.8" "@types/react-transition-group": "npm:^4.4.12" clsx: "npm:^2.1.1" @@ -3439,7 +3025,7 @@ __metadata: peerDependencies: "@emotion/react": ^11.5.0 "@emotion/styled": ^11.3.0 - "@mui/material-pigment-css": ^7.3.8 + "@mui/material-pigment-css": ^7.3.7 "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3452,16 +3038,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/065b97627cfdb7dd6237ff4437639c5d8df610e844bfa6f8c84e647d1f7bb0157cfd7b1938cf371d2b281d8bf85580c8b405638d741aae797ff64ee3b98943fc + checksum: 10c0/e9355505d34cea112f9aef2498af415666b12a78985ec5a936918d14202ef10e7da7cce9d5480dca86af25e307424d93e6d72b04c78446b3fd70536cc5559c62 languageName: node linkType: hard -"@mui/private-theming@npm:^7.3.8": - version: 7.3.8 - resolution: "@mui/private-theming@npm:7.3.8" +"@mui/private-theming@npm:^7.3.7": + version: 7.3.7 + resolution: "@mui/private-theming@npm:7.3.7" dependencies: - "@babel/runtime": "npm:^7.28.6" - "@mui/utils": "npm:^7.3.8" + "@babel/runtime": "npm:^7.28.4" + "@mui/utils": "npm:^7.3.7" prop-types: "npm:^15.8.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3469,15 +3055,15 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/4e7f1528dcaf00a036ee03a430569d66fe66313c2e11d6d70df705a54cb15e88af00e69ef55de2182ea86966c66d9f9f7e4d389059a8213901159fb03ecd679d + checksum: 10c0/aa848bea257f0c4a6a8784ab71aa7189aa31a2a98f02628c783c956a25e759be71a65d7809688c6ac1835504d21e798123aeb3eeaedea1473a16337e60a5d50c languageName: node linkType: hard -"@mui/styled-engine@npm:^7.3.8": - version: 7.3.8 - resolution: "@mui/styled-engine@npm:7.3.8" +"@mui/styled-engine@npm:^7.3.7": + version: 7.3.7 + resolution: "@mui/styled-engine@npm:7.3.7" dependencies: - "@babel/runtime": "npm:^7.28.6" + "@babel/runtime": "npm:^7.28.4" "@emotion/cache": "npm:^11.14.0" "@emotion/serialize": "npm:^1.3.3" "@emotion/sheet": "npm:^1.4.0" @@ -3492,19 +3078,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 10c0/44defb63e5c489943c36c6b0a8551093389a65429c9c2cf21fe5f3fb338962a45f5fd57300a64c965de43be755424b65aef762944a55e2de862018d99b82f6a8 + checksum: 10c0/7350f45ea8314643ffc95430b9cc980d0a88d3144629af1deb2842c9aea62d34d8736dfa8197bb51e28785e56144b252fdbb7904c7800d69c547f479bca87805 languageName: node linkType: hard -"@mui/system@npm:^7.3.8": - version: 7.3.8 - resolution: "@mui/system@npm:7.3.8" +"@mui/system@npm:^7.3.7": + version: 7.3.7 + resolution: "@mui/system@npm:7.3.7" dependencies: - "@babel/runtime": "npm:^7.28.6" - "@mui/private-theming": "npm:^7.3.8" - "@mui/styled-engine": "npm:^7.3.8" - "@mui/types": "npm:^7.4.11" - "@mui/utils": "npm:^7.3.8" + "@babel/runtime": "npm:^7.28.4" + "@mui/private-theming": "npm:^7.3.7" + "@mui/styled-engine": "npm:^7.3.7" + "@mui/types": "npm:^7.4.10" + "@mui/utils": "npm:^7.3.7" clsx: "npm:^2.1.1" csstype: "npm:^3.2.3" prop-types: "npm:^15.8.1" @@ -3520,27 +3106,13 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10c0/e584af421b553c1ab11783a769c26ca38f2415d71ffd0fc7296e299e47ab0650d35c6be408f8486239b1eab78481af8a663615c758f96bc1e8290482afcc0c22 - languageName: node - linkType: hard - -"@mui/types@npm:^7.4.11": - version: 7.4.11 - resolution: "@mui/types@npm:7.4.11" - dependencies: - "@babel/runtime": "npm:^7.28.6" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/c7e73d3fbcd3d8fa55ef172faa58d5b8aa64d1faf26b2f4a13871444dd0e57577567c9eefc4a14de0bc0644f7c325302942496a41b165007defed24548e7da04 + checksum: 10c0/0b020d39812431e29ac20ebc0ce1317750d108633237a27f6fb595824eb1f979ffd283e8a89f2487ea1d658aee18c23d68226f6efa2bdfd621493a4aabcf1e74 languageName: node linkType: hard -"@mui/types@npm:^7.4.9": - version: 7.4.9 - resolution: "@mui/types@npm:7.4.9" +"@mui/types@npm:^7.4.10": + version: 7.4.10 + resolution: "@mui/types@npm:7.4.10" dependencies: "@babel/runtime": "npm:^7.28.4" peerDependencies: @@ -3548,36 +3120,16 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/ed371a08af12a712fb5985547162b99fc58b5d451ea1101927a6d2f2c005087eb25603553d2c4242ee3a34359333b917432052148c93ed7dded5d80042fec504 + checksum: 10c0/2e1e807795dcb6f5bdb62eb49068a7f4414299c62f55ceaaa05925a1d043799216150873c00c02f086fd631f7171c97ea416dc66c099c98649503ee3046dab3d languageName: node linkType: hard -"@mui/utils@npm:^7.3.5": - version: 7.3.6 - resolution: "@mui/utils@npm:7.3.6" +"@mui/utils@npm:^7.3.5, @mui/utils@npm:^7.3.7": + version: 7.3.7 + resolution: "@mui/utils@npm:7.3.7" dependencies: "@babel/runtime": "npm:^7.28.4" - "@mui/types": "npm:^7.4.9" - "@types/prop-types": "npm:^15.7.15" - clsx: "npm:^2.1.1" - prop-types: "npm:^15.8.1" - react-is: "npm:^19.2.0" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/0af5f65a022028fa25b6a331443c44fdfd9060355495fd10849807f7aee9c9a4f776592cfe427b3c478f4ee4bf96349d9e84d1a035d5e31ba84d821748b4f185 - languageName: node - linkType: hard - -"@mui/utils@npm:^7.3.8": - version: 7.3.8 - resolution: "@mui/utils@npm:7.3.8" - dependencies: - "@babel/runtime": "npm:^7.28.6" - "@mui/types": "npm:^7.4.11" + "@mui/types": "npm:^7.4.10" "@types/prop-types": "npm:^15.7.15" clsx: "npm:^2.1.1" prop-types: "npm:^15.8.1" @@ -3588,7 +3140,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/369e53295f8cd75d7ea3ef8d1c532cae6a34b7e7d834b2333933f52db04bf2aa3b8a808bdb864ed69b6cc56b1395337e93952e0cd06da872dfd867f1bb53dd34 + checksum: 10c0/2732a01a24968c8fe73b1cf3c7afabffd8a5f13556f3f8078529eaf09d855a05cb7905421b733cb671f771406eb857f5dddb3b82166ecc2a3d0ab1a987954d08 languageName: node linkType: hard @@ -3889,40 +3441,40 @@ __metadata: linkType: hard "@rc-component/motion@npm:^1.1.3, @rc-component/motion@npm:^1.1.4": - version: 1.1.6 - resolution: "@rc-component/motion@npm:1.1.6" + version: 1.2.0 + resolution: "@rc-component/motion@npm:1.2.0" dependencies: "@rc-component/util": "npm:^1.2.0" clsx: "npm:^2.1.1" peerDependencies: react: ">=16.9.0" react-dom: ">=16.9.0" - checksum: 10c0/f4bf999d1f622784b609e3c900049b1d0664d22bf4b6af819c604152484a8a9266290d4db513704ea2c9ef18b006fb36abc91c06683a167e27f92ee410b32616 + checksum: 10c0/f94734cc4d9386ea3211c83c0fff95efcec396b568082dd1c90c40d6663dab2c83f31929644aa197fb84db3418c15703be9b57402a5f384e860c64dc9322a301 languageName: node linkType: hard -"@rc-component/portal@npm:^2.0.0": - version: 2.0.1 - resolution: "@rc-component/portal@npm:2.0.1" +"@rc-component/portal@npm:^2.2.0": + version: 2.2.0 + resolution: "@rc-component/portal@npm:2.2.0" dependencies: "@rc-component/util": "npm:^1.2.1" clsx: "npm:^2.1.1" peerDependencies: react: ">=18.0.0" react-dom: ">=18.0.0" - checksum: 10c0/8fb15c84f5fe35a31a2cdec91fd0971d9a3f56f6bafd364564d7351cf1fc49b21c7400ba565ec6730046bd02c9537b33b6fd23abc30391e7ff46282ade5bbff8 + checksum: 10c0/5b6441536b4b6a2f7390b8f4ea101fa78ef483564a7ac533c146dac896cbdd27665be6314c92366d0750720fe163bf9fc37db789ef4c879772cfb965fd4f6901 languageName: node linkType: hard -"@rc-component/resize-observer@npm:^1.0.0": - version: 1.0.1 - resolution: "@rc-component/resize-observer@npm:1.0.1" +"@rc-component/resize-observer@npm:^1.0.0, @rc-component/resize-observer@npm:^1.1.1": + version: 1.1.1 + resolution: "@rc-component/resize-observer@npm:1.1.1" dependencies: "@rc-component/util": "npm:^1.2.0" peerDependencies: react: ">=16.9.0" react-dom: ">=16.9.0" - checksum: 10c0/5053d413ffa65badd3f2d06c54dc47db67d8b573d589bfce90d5474d32b1d80bb05b73809a26f771ed94a6a29e02754fa177c67e000d3126d10e41e98965c61b + checksum: 10c0/8b5931475f887497020e4c25f4eff9c4d591274b43e267ea67d361160783b29d3e35654ac79fa4e47be9532cd25186f45a40655ddb5f1412ecbe9c3afb714cd0 languageName: node linkType: hard @@ -3944,31 +3496,31 @@ __metadata: linkType: hard "@rc-component/trigger@npm:^3.0.0": - version: 3.7.1 - resolution: "@rc-component/trigger@npm:3.7.1" + version: 3.9.0 + resolution: "@rc-component/trigger@npm:3.9.0" dependencies: "@rc-component/motion": "npm:^1.1.4" - "@rc-component/portal": "npm:^2.0.0" - "@rc-component/resize-observer": "npm:^1.0.0" + "@rc-component/portal": "npm:^2.2.0" + "@rc-component/resize-observer": "npm:^1.1.1" "@rc-component/util": "npm:^1.2.1" clsx: "npm:^2.1.1" peerDependencies: react: ">=18.0.0" react-dom: ">=18.0.0" - checksum: 10c0/b4caab7be8a66bdea81b10b318f0d7f2dc9143d27313916b08ef716aa261a0a8e23eb1b2e861da5907c4aa3f2f4c8383be265231be12e2b7f9eb2bd6d10b8d28 + checksum: 10c0/3e7edd6328c2b04b2a81328fbbf3dd11d39b8000b62b9574f0f907db3eff450f96a3a87f46808cbab7aa77b35e1fbf0493bc9cdf920e9c01326cfc068f03c0da languageName: node linkType: hard "@rc-component/util@npm:^1.2.0, @rc-component/util@npm:^1.2.1, @rc-component/util@npm:^1.3.0": - version: 1.6.0 - resolution: "@rc-component/util@npm:1.6.0" + version: 1.7.0 + resolution: "@rc-component/util@npm:1.7.0" dependencies: is-mobile: "npm:^5.0.0" react-is: "npm:^18.2.0" peerDependencies: react: ">=18.0.0" react-dom: ">=18.0.0" - checksum: 10c0/d1ad7158abc4c38456192f6c236bcfc09c1563fe2a65497cee6816035bb917b373124d16e720d8c91d959366fd06897a7361b313a1610345d0f7286aac38e356 + checksum: 10c0/71ab8c9f321be160cd55aa2f02bacf4a62b2d41b63d297b87dc73af3d7cc7c7716bcaa304cb03f443794411990e3a17aa455aef21d557f52aa5609d985474de5 languageName: node linkType: hard @@ -4047,9 +3599,9 @@ __metadata: linkType: hard "@sinclair/typebox@npm:^0.34.0": - version: 0.34.41 - resolution: "@sinclair/typebox@npm:0.34.41" - checksum: 10c0/0fb61fc2f90c25e30b19b0096eb8ab3ccef401d3e2acfce42168ff0ee877ba5981c8243fa6b1035ac756cde95316724e978b2837dd642d7e4e095de03a999c90 + version: 0.34.47 + resolution: "@sinclair/typebox@npm:0.34.47" + checksum: 10c0/ebe923fe2c26900982634e5639a00471da0b182eee61a5a0436cd1df174f90c5b0fcd7507cc21ad2fca3c326aee387487040badc723bc2599a09bc3e9be09b38 languageName: node linkType: hard @@ -4269,21 +3821,21 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:5.90.20": - version: 5.90.20 - resolution: "@tanstack/query-core@npm:5.90.20" - checksum: 10c0/70637dfcecd5ed9d810629aa27f1632af8a4bcd083e75cf29408d058c32f8234704a3231ec280e2c4016ea0485b16124fdf70ab97793b5a7b670f43f7659e9fe +"@tanstack/query-core@npm:5.90.19": + version: 5.90.19 + resolution: "@tanstack/query-core@npm:5.90.19" + checksum: 10c0/f6974064238d94025cd1fb8e9ba6a1ffb90d137e0d3fb6949252e81032ae446e948073ea999a4d11e1b6000df7eeec15cda92b76a264249f091f7543a192e958 languageName: node linkType: hard "@tanstack/react-query@npm:^5.90.19": - version: 5.90.21 - resolution: "@tanstack/react-query@npm:5.90.21" + version: 5.90.19 + resolution: "@tanstack/react-query@npm:5.90.19" dependencies: - "@tanstack/query-core": "npm:5.90.20" + "@tanstack/query-core": "npm:5.90.19" peerDependencies: react: ^18 || ^19 - checksum: 10c0/e8994c57f6ceb2c886a4d6486a8c6a3f89bc6b1220de3e732448d7fcbeb386e9358f03c73804de72004c6ac2668d0bf1b44cedbb273d3e4b33afcbaee7b7d24d + checksum: 10c0/5176a363855c9ce87e6b7fe034ee9538766b209fea561c1f8e9aadbca1891d0d03fe3b28ccf79fc2077ba9d77a89aab59ca8b66b00f12519e207b24f47868554 languageName: node linkType: hard @@ -4300,14 +3852,14 @@ __metadata: linkType: hard "@tanstack/react-virtual@npm:^3.13.13": - version: 3.13.13 - resolution: "@tanstack/react-virtual@npm:3.13.13" + version: 3.13.18 + resolution: "@tanstack/react-virtual@npm:3.13.18" dependencies: - "@tanstack/virtual-core": "npm:3.13.13" + "@tanstack/virtual-core": "npm:3.13.18" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/7c711592c7a3b61059d58292dba9ef2a1ff5ad6827d2add4802d50bf218bb17014292b7dd4da72cf148e2fbf1856e928269283e8831cbf1675aa5a2d86fd7c88 + checksum: 10c0/600fabdf9fe077d609dad5114025c502aa1125d21bfd64ae4eeeab4743de1c76ca0d5c29ca4cba0c1220834a9dfedbe0c7304276b0e0e7f9048e2c8a5562fa26 languageName: node linkType: hard @@ -4318,10 +3870,10 @@ __metadata: languageName: node linkType: hard -"@tanstack/virtual-core@npm:3.13.13": - version: 3.13.13 - resolution: "@tanstack/virtual-core@npm:3.13.13" - checksum: 10c0/0411295054a6fff21a22944c224f2e414c77c6455015b319f378ea3e9937aefb3b43f4113df2ab9096e5f3db673b085cd778d69ec9918f42bbb94c2dbd43a639 +"@tanstack/virtual-core@npm:3.13.18": + version: 3.13.18 + resolution: "@tanstack/virtual-core@npm:3.13.18" + checksum: 10c0/f43a92bbe4e891242a6bb5274ee60b166534abfcd5115cbe7f92f833e745941ac3b8cb808dd0537cbf1e0c5004aacd2d2cab4a1ce738f7930ec723566e37ec11 languageName: node linkType: hard @@ -4566,11 +4118,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 25.0.2 - resolution: "@types/node@npm:25.0.2" + version: 25.0.9 + resolution: "@types/node@npm:25.0.9" dependencies: undici-types: "npm:~7.16.0" - checksum: 10c0/12c4044bf2e46ba3d313ddf6256ee3c88e336a62d129fe788eeab8ff2631b3df51eb31ade4cdc04552fbe51e285f0663c49b60c78acd31da2b9f2c86a84347e3 + checksum: 10c0/a757efafe303d9c8833eb53c2e9a0981cd5ac725cdc04c5612a71db86468c938778d4fa328be4231b68fffc68258638764df7b9c69e86cf55f0bb67105eb056f languageName: node linkType: hard @@ -4636,6 +4188,13 @@ __metadata: languageName: node linkType: hard +"@types/trusted-types@npm:^2.0.7": + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 10c0/4c4855f10de7c6c135e0d32ce462419d8abbbc33713b31d294596c0cc34ae1fa6112a2f9da729c8f7a20707782b0d69da3b1f8df6645b0366d08825ca1522e0c + languageName: node + linkType: hard + "@types/yargs-parser@npm:*": version: 21.0.3 resolution: "@types/yargs-parser@npm:21.0.3" @@ -4688,16 +4247,16 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.49.0": - version: 8.49.0 - resolution: "@typescript-eslint/project-service@npm:8.49.0" +"@typescript-eslint/project-service@npm:8.53.0": + version: 8.53.0 + resolution: "@typescript-eslint/project-service@npm:8.53.0" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.49.0" - "@typescript-eslint/types": "npm:^8.49.0" - debug: "npm:^4.3.4" + "@typescript-eslint/tsconfig-utils": "npm:^8.53.0" + "@typescript-eslint/types": "npm:^8.53.0" + debug: "npm:^4.4.3" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/da6342fe99786c9d9c1d2fc3291ffd62afa043b42f4c7b5c1f8b3a6af266bd9af662281a0905ee70b069a811b63faf7efb63932f6bf55cb138e42309e4ced425 + checksum: 10c0/b01302890cf853e9bb1d2b19e402ec0ede1388fec833528847d32d65d0e3e03867a14632f816f4f3058e40707b001fab208bf2950ff1e8d7cbbc6c1d57b969d4 languageName: node linkType: hard @@ -4714,13 +4273,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.49.0": - version: 8.49.0 - resolution: "@typescript-eslint/scope-manager@npm:8.49.0" +"@typescript-eslint/scope-manager@npm:8.53.0": + version: 8.53.0 + resolution: "@typescript-eslint/scope-manager@npm:8.53.0" dependencies: - "@typescript-eslint/types": "npm:8.49.0" - "@typescript-eslint/visitor-keys": "npm:8.49.0" - checksum: 10c0/fe7a036e186e8cb933375ecc3b6ea8ce7604f1dd53d72c24d26158cbc2563527f8c1ba7a894b58bcbd079315fe950ff3c5eb5f7061658f39ff473c04d54ef701 + "@typescript-eslint/types": "npm:8.53.0" + "@typescript-eslint/visitor-keys": "npm:8.53.0" + checksum: 10c0/338a7471aaa793858a23498b6ad37da8f419a8ee05cc4105d569b2c676e0f2d7a45806b88a8c8d3454f438f329b61df8e73ae582863a20eb0996529f9275e3c2 languageName: node linkType: hard @@ -4734,12 +4293,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.49.0, @typescript-eslint/tsconfig-utils@npm:^8.49.0": - version: 8.49.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.49.0" +"@typescript-eslint/tsconfig-utils@npm:8.53.0, @typescript-eslint/tsconfig-utils@npm:^8.53.0": + version: 8.53.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.53.0" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/1b255149d3f0d99b6cf5df4b62925a79f44f243748c6e877a7cf1dd0cdbff7411f2971d5e9fa85472ed76055bd1826e55c1adc99f3d82f504bd9fcd6e76f4b3a + checksum: 10c0/1a136519d4e0c4ae9471f55468ad0a52175b8b41da28188bd7e4efcf72c2c8528aeb3a1b1c9d27f2d94ab0c8d9a91e08ebc1fed5fc8628c9808112427f306428 languageName: node linkType: hard @@ -4768,10 +4327,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.49.0, @typescript-eslint/types@npm:^8.49.0": - version: 8.49.0 - resolution: "@typescript-eslint/types@npm:8.49.0" - checksum: 10c0/75b26207b142576cf9af86406815b440c7f4bc6645fa58c58a3d781a5d80a39ba7e44d4b4df297980019a7aa1db10da5ac515191aaaf0f1ef6007996c126d8f9 +"@typescript-eslint/types@npm:8.53.0, @typescript-eslint/types@npm:^8.53.0": + version: 8.53.0 + resolution: "@typescript-eslint/types@npm:8.53.0" + checksum: 10c0/a88681795becbe857f9868427c0d75c2ab2fb1acde14907b8791709b6d7835400bf9a0b41f22e97a13f1274e0082f5675692b815e30268e6eada492913100306 languageName: node linkType: hard @@ -4782,22 +4341,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.49.0": - version: 8.49.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.49.0" +"@typescript-eslint/typescript-estree@npm:8.53.0": + version: 8.53.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.53.0" dependencies: - "@typescript-eslint/project-service": "npm:8.49.0" - "@typescript-eslint/tsconfig-utils": "npm:8.49.0" - "@typescript-eslint/types": "npm:8.49.0" - "@typescript-eslint/visitor-keys": "npm:8.49.0" - debug: "npm:^4.3.4" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" + "@typescript-eslint/project-service": "npm:8.53.0" + "@typescript-eslint/tsconfig-utils": "npm:8.53.0" + "@typescript-eslint/types": "npm:8.53.0" + "@typescript-eslint/visitor-keys": "npm:8.53.0" + debug: "npm:^4.4.3" + minimatch: "npm:^9.0.5" + semver: "npm:^7.7.3" tinyglobby: "npm:^0.2.15" - ts-api-utils: "npm:^2.1.0" + ts-api-utils: "npm:^2.4.0" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/91d0e4ed00021085142c2845571cc91c89b700ee184eb508e8d1f97a02533c029630f00c3f0f796942b28397ec9f61502b153c81971d228893363fc546bbb341 + checksum: 10c0/31819fba9fbef3e3ab494409b18ff40042cc3e7a4ba72fe06475062b7e196aaf9752e526a1c51abf3002627833b387279f00fdfa66886b05c028e129a57b550a languageName: node linkType: hard @@ -4836,27 +4395,27 @@ __metadata: linkType: hard "@typescript-eslint/utils@npm:^8.0.0": - version: 8.49.0 - resolution: "@typescript-eslint/utils@npm:8.49.0" + version: 8.53.0 + resolution: "@typescript-eslint/utils@npm:8.53.0" dependencies: - "@eslint-community/eslint-utils": "npm:^4.7.0" - "@typescript-eslint/scope-manager": "npm:8.49.0" - "@typescript-eslint/types": "npm:8.49.0" - "@typescript-eslint/typescript-estree": "npm:8.49.0" + "@eslint-community/eslint-utils": "npm:^4.9.1" + "@typescript-eslint/scope-manager": "npm:8.53.0" + "@typescript-eslint/types": "npm:8.53.0" + "@typescript-eslint/typescript-estree": "npm:8.53.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/d10fe4d844dacb2f76f0a6e018455d94ba29204845d57248ae220030bda7e13e0e7b488b3ccf8ce1b5d577e1e1775cbdbbff911261a586d9bc7fdfc3cc001697 + checksum: 10c0/6af761fc5ed89606bd8dd1abf7c526afe0060c115035a4fcddfa173ba8a01b7422edf84bc4d74aab2a086911db57a893a2753b3c025ace3e86adc1c2259a6253 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.49.0": - version: 8.49.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.49.0" +"@typescript-eslint/visitor-keys@npm:8.53.0": + version: 8.53.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.53.0" dependencies: - "@typescript-eslint/types": "npm:8.49.0" + "@typescript-eslint/types": "npm:8.53.0" eslint-visitor-keys: "npm:^4.2.1" - checksum: 10c0/442c47bf8e46dda50a765cddbd524f6fef9e76acc3d11de2505ca7097054f24e53f12fe57be34b72fb56115f8f74499573a2704f3465bffdb96834083b616cf1 + checksum: 10c0/be2062073c9fd28762f73d442e8536f16e1eab0935df463ed45bd95575b4b79b4a4ca1f45c04b1964dc424b8d25c6489253e3ea2236bb74cff9b7e02e1e7f5be languageName: node linkType: hard @@ -6007,11 +5566,11 @@ __metadata: linkType: hard "baseline-browser-mapping@npm:^2.9.0": - version: 2.9.7 - resolution: "baseline-browser-mapping@npm:2.9.7" + version: 2.9.15 + resolution: "baseline-browser-mapping@npm:2.9.15" bin: baseline-browser-mapping: dist/cli.js - checksum: 10c0/500af82926d71d23fab20bcf821eb27deeaad45d1a01bd33d2dea7aab6114149068fa0d42bb9c5c18657e996b6e8063b84612c8fb8ac8ba6c6c6028fa4930ed1 + checksum: 10c0/e5c8cb8600fcbed8132f122b737b00b5b3fcf25a119ea5e42476e6d6b2263274ddc5df16d4cffebbcd46974b691008558973b06100508903ea8a382a5edd34ab languageName: node linkType: hard @@ -6265,7 +5824,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.24.0, browserslist@npm:^4.26.3, browserslist@npm:^4.27.0, browserslist@npm:^4.28.0, browserslist@npm:^4.28.1": +"browserslist@npm:^4.0.0, browserslist@npm:^4.24.0, browserslist@npm:^4.27.0, browserslist@npm:^4.28.0, browserslist@npm:^4.28.1": version: 4.28.1 resolution: "browserslist@npm:4.28.1" dependencies: @@ -6469,9 +6028,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001759, caniuse-lite@npm:^1.0.30001760": - version: 1.0.30001760 - resolution: "caniuse-lite@npm:1.0.30001760" - checksum: 10c0/cee26dff5c5b15ba073ab230200e43c0d4e88dc3bac0afe0c9ab963df70aaa876c3e513dde42a027f317136bf6e274818d77b073708b74c5807dfad33c029d3c + version: 1.0.30001765 + resolution: "caniuse-lite@npm:1.0.30001765" + checksum: 10c0/2bab28b322ec040dde2b6f56019ffd1e0bbd719111e45f58cb0fb06a783812d8ba8df65755320fd253aa1926dffc7bf0864adc11f6b231ac2b3a5b8221199c29 languageName: node linkType: hard @@ -6553,9 +6112,9 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^2.1.0": - version: 2.1.1 - resolution: "cjs-module-lexer@npm:2.1.1" - checksum: 10c0/813697c0ed1533f4a88bd8051d8ae1cb1b21d3ff1c6a5720353817d50c3f3f83bb2af6bd83922aae94b3ef90d64d01a6eb123fa8249f4dc7215e3afd89364f86 + version: 2.2.0 + resolution: "cjs-module-lexer@npm:2.2.0" + checksum: 10c0/aec4ca58f87145fac221386790ecaae8b012f2e2359a45acb61d8c75ea4fa84f6ea869f17abc1a7e91a808eff0fed581209632f03540de16f72f0a28f5fd35ac languageName: node linkType: hard @@ -6991,11 +6550,11 @@ __metadata: linkType: hard "css-declaration-sorter@npm:^7.2.0": - version: 7.3.0 - resolution: "css-declaration-sorter@npm:7.3.0" + version: 7.3.1 + resolution: "css-declaration-sorter@npm:7.3.1" peerDependencies: postcss: ^8.0.9 - checksum: 10c0/a715c90ac1b849e52cb697eb3c28ae86ee80fa9ccb26a9da60eb5621a0a6657c41a8126e27d96a622f96ca70692e210ac33362888f0274ba23056ac401089fa5 + checksum: 10c0/8348ec76157e4b370ce4383a80e23fde28dde53901572ae5bcb5cd02cfc2ba0a76a7b5433c361524ed4cea713023802abc7b56e2304aad0721e449011fa83b37 languageName: node linkType: hard @@ -7286,7 +6845,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.4.1, debug@npm:^4.4.3": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.4.1, debug@npm:^4.4.3, debug@npm:~4.4.1": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -7298,18 +6857,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:~4.3.1, debug@npm:~4.3.2": - version: 4.3.7 - resolution: "debug@npm:4.3.7" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b - languageName: node - linkType: hard - "decamelize-keys@npm:^1.1.0": version: 1.1.1 resolution: "decamelize-keys@npm:1.1.1" @@ -7342,14 +6889,14 @@ __metadata: linkType: hard "dedent@npm:^1.6.0": - version: 1.7.0 - resolution: "dedent@npm:1.7.0" + version: 1.7.1 + resolution: "dedent@npm:1.7.1" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: 10c0/c5e8a8beb5072bd5e520cb64b27a82d7ec3c2a63ee5ce47dbc2a05d5b7700cefd77a992a752cd0a8b1d979c1db06b14fb9486e805f3ad6088eda6e07cd9bf2d5 + checksum: 10c0/ae29ec1c5bd5216c698c9f23acaa5b720260fd4cef3c8b5af887eb5f8c9e6fdd5fed8668767437b4efea35e2991bd798987717633411a1734807c28255769b78 languageName: node linkType: hard @@ -7475,10 +7022,10 @@ __metadata: languageName: node linkType: hard -"devalue@npm:^5.5.0": - version: 5.6.1 - resolution: "devalue@npm:5.6.1" - checksum: 10c0/4dca0e800336003fd1e268c142adfe78f3539cda7384b4f69762a93e0dfc33e223b580251da0a6da4be44962958fcba5eadf122f9720e09f437b28904af9c43e +"devalue@npm:^5.6.2": + version: 5.6.2 + resolution: "devalue@npm:5.6.2" + checksum: 10c0/654f257ec525a2d3f35c941bfbb361148bc65ced060710969fbaa1c45abf1c9d7c4fcb77310bf8d2fb73c34cf60bad10710e7bf5b15643bbc082518ea04cb00b languageName: node linkType: hard @@ -7615,6 +7162,18 @@ __metadata: languageName: node linkType: hard +"dompurify@npm:^3.2.4": + version: 3.3.1 + resolution: "dompurify@npm:3.3.1" + dependencies: + "@types/trusted-types": "npm:^2.0.7" + dependenciesMeta: + "@types/trusted-types": + optional: true + checksum: 10c0/fa0a8c55a436ba0d54389195e3d2337e311f56de709a2fc9efc98dbbc7746fa53bb4b74b6ac043b77a279a8f2ebd8685f0ebaa6e58c9e32e92051d529bc0baf8 + languageName: node + linkType: hard + "domutils@npm:^3.0.1, domutils@npm:^3.2.2": version: 3.2.2 resolution: "domutils@npm:3.2.2" @@ -7734,15 +7293,15 @@ __metadata: linkType: hard "engine.io-client@npm:~6.6.1": - version: 6.6.3 - resolution: "engine.io-client@npm:6.6.3" + version: 6.6.4 + resolution: "engine.io-client@npm:6.6.4" dependencies: "@socket.io/component-emitter": "npm:~3.1.0" - debug: "npm:~4.3.1" + debug: "npm:~4.4.1" engine.io-parser: "npm:~5.2.1" - ws: "npm:~8.17.1" + ws: "npm:~8.18.3" xmlhttprequest-ssl: "npm:~2.1.1" - checksum: 10c0/ebe0b1da6831d5a68564f9ffb80efe682da4f0538488eaffadf0bcf5177a8b4472cdb01d18a9f20dece2f8de30e2df951eb4635bef2f1b492e9f08a523db91a0 + checksum: 10c0/d90bc32d614f67db9c198d1c26a787529f3038a7429c75e677f5495938cc45f9e89d435e8860bcfcc01db410e21d2f245b914f2fcbdb03ffd50d30f2aeec5143 languageName: node linkType: hard @@ -7753,7 +7312,7 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.17.3": +"enhanced-resolve@npm:^5.17.4": version: 5.18.4 resolution: "enhanced-resolve@npm:5.18.4" dependencies: @@ -7916,10 +7475,10 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^1.2.1": - version: 1.7.0 - resolution: "es-module-lexer@npm:1.7.0" - checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b +"es-module-lexer@npm:^2.0.0": + version: 2.0.0 + resolution: "es-module-lexer@npm:2.0.0" + checksum: 10c0/ae78dbbd43035a4b972c46cfb6877e374ea290adfc62bc2f5a083fea242c0b2baaab25c5886af86be55f092f4a326741cb94334cd3c478c383fdc8a9ec5ff817 languageName: node linkType: hard @@ -7965,14 +7524,14 @@ __metadata: linkType: hard "es-toolkit@npm:^1.39.6": - version: 1.43.0 - resolution: "es-toolkit@npm:1.43.0" + version: 1.44.0 + resolution: "es-toolkit@npm:1.44.0" dependenciesMeta: "@trivago/prettier-plugin-sort-imports@4.3.0": unplugged: true prettier-plugin-sort-re-exports@0.0.1: unplugged: true - checksum: 10c0/bbff0b591fd01be9f37a34dad7964b590e4952fc594c1230140771687f05136caa6ab21962a6e9cde7c4b529a149171ed5179d6379d4a8e656dbf7e8d126999c + checksum: 10c0/b80ff52ddc85ba26914cda57c9d4e46379ccc38c60dc097ef0d065cc0b20f95a16cf8d537969eea600b51c6687b5900a6cce67489db16d5ccc14d47597a29c34 languageName: node linkType: hard @@ -7998,23 +7557,20 @@ __metadata: linkType: hard "eslint-plugin-jest@npm:^29.9.0": - version: 29.15.0 - resolution: "eslint-plugin-jest@npm:29.15.0" + version: 29.12.1 + resolution: "eslint-plugin-jest@npm:29.12.1" dependencies: "@typescript-eslint/utils": "npm:^8.0.0" peerDependencies: "@typescript-eslint/eslint-plugin": ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + eslint: ^8.57.0 || ^9.0.0 jest: "*" - typescript: ">=4.8.4 <6.0.0" peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true jest: optional: true - typescript: - optional: true - checksum: 10c0/e3d8f67708ba4a77a628f8d97a9ebbb20f62ad690d7cc155c0a1066d36b74a6ad8e943fda5c54264c4ad4186dd8d212075bce9f5c2debdd35708ed74ecdc81ef + checksum: 10c0/54c149328c97964a34958b7e32c56f24e9c9fb8eeb6892c357ae527d543cc766d960ef024baaa57be603befda8cb1e25f5cb9701993f554655143e199264ba7a languageName: node linkType: hard @@ -8192,11 +7748,11 @@ __metadata: linkType: hard "esquery@npm:^1.5.0": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 languageName: node linkType: hard @@ -8376,11 +7932,11 @@ __metadata: linkType: hard "fastq@npm:^1.6.0": - version: 1.19.1 - resolution: "fastq@npm:1.19.1" + version: 1.20.1 + resolution: "fastq@npm:1.20.1" dependencies: reusify: "npm:^1.0.4" - checksum: 10c0/ebc6e50ac7048daaeb8e64522a1ea7a26e92b3cee5cd1c7f2316cdca81ba543aa40a136b53891446ea5c3a67ec215fbaca87ad405f102dd97012f62916905630 + checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e languageName: node linkType: hard @@ -10563,11 +10119,11 @@ __metadata: linkType: hard "jsonrepair@npm:^3.0.0": - version: 3.13.1 - resolution: "jsonrepair@npm:3.13.1" + version: 3.13.2 + resolution: "jsonrepair@npm:3.13.2" bin: jsonrepair: bin/cli.js - checksum: 10c0/2162c9e562f631d39f804980b2b0aa679eba16de7004af11c0949bb73b5107dc09d24b5bd7f9d74f90a85360ff47f3d4c379840f2ce3a214d9d27a2d96903ed6 + checksum: 10c0/36cbb1c047d705b73d2027fe4189ca21323c420113c5ad45e6df753168d1b105472727dcb7aeb6b4b7cc76c141d27aa74e5e9614238a9e481a3929ceea6d2237 languageName: node linkType: hard @@ -10709,9 +10265,9 @@ __metadata: linkType: hard "lodash-es@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash-es@npm:4.17.21" - checksum: 10c0/fb407355f7e6cd523a9383e76e6b455321f0f153a6c9625e21a8827d10c54c2a2341bd2ae8d034358b60e07325e1330c14c224ff582d04612a46a4f0479ff2f2 + version: 4.17.23 + resolution: "lodash-es@npm:4.17.23" + checksum: 10c0/3150fb6660c14c7a6b5f23bd11597d884b140c0e862a17fdb415aaa5ef7741523182904a6b7929f04e5f60a11edb5a79499eb448734381c99ffb3c4734beeddd languageName: node linkType: hard @@ -11089,11 +10645,11 @@ __metadata: linkType: hard "marked@npm:^17.0.1": - version: 17.0.1 - resolution: "marked@npm:17.0.1" + version: 17.0.2 + resolution: "marked@npm:17.0.2" bin: marked: bin/marked.js - checksum: 10c0/0197337aad33882308cea52d2c86d7b830a89be729a4010a26a488ae1c224cdc7520b8cce056832a81a127fc39a3827f45e3865c1ff257324cb553cb06ce0e57 + checksum: 10c0/3efce3898f79042a30540e9a8635072a0f4b41b2ebce757eaad029a7437c2eeb2b45e27c3a3ef81ac91ebcbde7f2c8043f5e3dccac41cb22170c2d7e9a5e21bd languageName: node linkType: hard @@ -12750,11 +12306,11 @@ __metadata: linkType: hard "qs@npm:^6.12.3": - version: 6.14.0 - resolution: "qs@npm:6.14.0" + version: 6.14.1 + resolution: "qs@npm:6.14.1" dependencies: side-channel: "npm:^1.1.0" - checksum: 10c0/8ea5d91bf34f440598ee389d4a7d95820e3b837d3fd9f433871f7924801becaa0cd3b3b4628d49a7784d06a8aea9bc4554d2b6d8d584e2d221dc06238a42909c + checksum: 10c0/0e3b22dc451f48ce5940cbbc7c7d9068d895074f8c969c0801ac15c1313d1859c4d738e46dc4da2f498f41a9ffd8c201bd9fb12df67799b827db94cc373d2613 languageName: node linkType: hard @@ -13106,20 +12662,13 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^19.2.0": +"react-is@npm:^19.2.3": version: 19.2.3 resolution: "react-is@npm:19.2.3" checksum: 10c0/2b54c422c21b8dbd68a435a1cce21ecd5b6f06f48659531f7d53dd7368365da5a67e946f352fb2010d11ca40658aa67bec90995f0f1ec5556c0f71dbffe54994 languageName: node linkType: hard -"react-is@npm:^19.2.3": - version: 19.2.4 - resolution: "react-is@npm:19.2.4" - checksum: 10c0/477a7cfc900f24194606e315fa353856a3a13487ea8eca841678817cad4daef64339ea0d1e84e58459fc75dbe0d9ba00bb0cc626db3d07e0cf31edc64cb4fa37 - languageName: node - linkType: hard - "react-leaflet@npm:^4.2.1": version: 4.2.1 resolution: "react-leaflet@npm:4.2.1" @@ -13222,22 +12771,22 @@ __metadata: linkType: hard "react-transition-state@npm:^2.3.1": - version: 2.3.1 - resolution: "react-transition-state@npm:2.3.1" + version: 2.3.2 + resolution: "react-transition-state@npm:2.3.2" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 10c0/145f20e45c53d570f9db5fe749e0fd794b62bdf464c67c594c454df44f31fa58c16ccec705f9fdccf4c5250a309e4f7da5bd2e85cd686ba52d6b79e1c22b811f + checksum: 10c0/4129f325125e718da687319c1d8e6d148374c0070dc8db7eb6360691d751e1329e682d097a5591cc389edae0bc7f7fba468b68f47e331f0fd48f0627284844c2 languageName: node linkType: hard "react-virtualized-auto-sizer@npm:^2.0.2": - version: 2.0.3 - resolution: "react-virtualized-auto-sizer@npm:2.0.3" + version: 2.0.2 + resolution: "react-virtualized-auto-sizer@npm:2.0.2" peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - checksum: 10c0/3788e77a696a696a0f5a72de8a43cab7bdf8b60476d18244802e0cd8ba6d3d83bebb3aa0c56a2f28a911b701056d0c323a6c965ed26ae413503528f028261c94 + checksum: 10c0/61c24a1cb17277b4fb571acb3be47f34d011968191680e75c4b7ff8c9b6c9ee5c60a939b8cc8559d3c7ae1ca1fd6c2aa6d7a0d9c134bfdff7e9efadaa2bdaefa languageName: node linkType: hard @@ -13678,6 +13227,7 @@ __metadata: css-minimizer-webpack-plugin: "npm:^7.0.3" date-fns: "npm:^4.1.0" diff-arrays-of-objects: "npm:^1.1.8" + dompurify: "npm:^3.2.4" eslint: "npm:^9.39.2" eslint-plugin-jest: "npm:^29.9.0" eslint-plugin-react: "npm:^7.37.5" @@ -13834,9 +13384,9 @@ __metadata: linkType: hard "sax@npm:^1.2.4, sax@npm:^1.4.1": - version: 1.4.3 - resolution: "sax@npm:1.4.3" - checksum: 10c0/45bba07561d93f184a8686e1a543418ced8c844b994fbe45cc49d5cd2fc8ac7ec949dae38565e35e388ad0cca2b75997a29b6857c927bf6553da3f80ed0e4e62 + version: 1.4.4 + resolution: "sax@npm:1.4.4" + checksum: 10c0/acb642f2de02ad6ae157cbf91fb026acea80cdf92e88c0aec2aa350c7db3479f62a7365c34a58e3b70a72ce11fa856a02c38cfd27f49e83c18c9c7e1d52aee55 languageName: node linkType: hard @@ -13888,7 +13438,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.7.2, semver@npm:^7.7.3": +"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.2, semver@npm:^7.7.2, semver@npm:^7.7.3": version: 7.7.3 resolution: "semver@npm:7.7.3" bin: @@ -14243,24 +13793,24 @@ __metadata: linkType: hard "socket.io-client@npm:^4.5.0": - version: 4.8.1 - resolution: "socket.io-client@npm:4.8.1" + version: 4.8.3 + resolution: "socket.io-client@npm:4.8.3" dependencies: "@socket.io/component-emitter": "npm:~3.1.0" - debug: "npm:~4.3.2" + debug: "npm:~4.4.1" engine.io-client: "npm:~6.6.1" socket.io-parser: "npm:~4.2.4" - checksum: 10c0/544c49cc8cc77118ef68b758a8a580c8e680a5909cae05c566d2cc07ec6cd6720a4f5b7e985489bf2a8391749177a5437ac30b8afbdf30b9da6402687ad51c86 + checksum: 10c0/76c0d86de0b636d0bf5011cf3425212c900f43dac632db6eb493816920cd035af7ddd92fea9a106b45eb347405953c0414eb3a5d465b180215e46fc8b61420b3 languageName: node linkType: hard "socket.io-parser@npm:~4.2.4": - version: 4.2.4 - resolution: "socket.io-parser@npm:4.2.4" + version: 4.2.5 + resolution: "socket.io-parser@npm:4.2.5" dependencies: "@socket.io/component-emitter": "npm:~3.1.0" - debug: "npm:~4.3.1" - checksum: 10c0/9383b30358fde4a801ea4ec5e6860915c0389a091321f1c1f41506618b5cf7cd685d0a31c587467a0c4ee99ef98c2b99fb87911f9dfb329716c43b587f29ca48 + debug: "npm:~4.4.1" + checksum: 10c0/fce2b7a76eed9babc7b4156e82e5cd478b0bc5eb877d52ae48aa0d90fe2d11be5a9e576fbc8bdbf3dd656863965ad133ba6c7d45172a1e020270e7c7891c1b35 languageName: node linkType: hard @@ -14393,14 +13943,14 @@ __metadata: linkType: hard "sql-formatter@npm:^15.6.10": - version: 15.6.12 - resolution: "sql-formatter@npm:15.6.12" + version: 15.7.0 + resolution: "sql-formatter@npm:15.7.0" dependencies: argparse: "npm:^2.0.1" nearley: "npm:^2.20.1" bin: sql-formatter: bin/sql-formatter-cli.cjs - checksum: 10c0/af386685dc2b061aac89eff5723b818431c40bf4f104f15338ccf90e5a9f416e19228f822eb10461d2f8428268aaedeb4533e2d5cea9d5a73ecbb577c18449d2 + checksum: 10c0/2af1e9deb75c733119f800bdd4c4c4f9e7438165fc082d0c264e4a6295ae641082281b90b5d70f2faac8f0f79ab9b0971124a8aa7d46d5c4837a9e5cd6347bfc languageName: node linkType: hard @@ -14766,8 +14316,8 @@ __metadata: linkType: hard "svelte@npm:^5.0.0": - version: 5.46.0 - resolution: "svelte@npm:5.46.0" + version: 5.47.0 + resolution: "svelte@npm:5.47.0" dependencies: "@jridgewell/remapping": "npm:^2.3.4" "@jridgewell/sourcemap-codec": "npm:^1.5.0" @@ -14777,14 +14327,14 @@ __metadata: aria-query: "npm:^5.3.1" axobject-query: "npm:^4.1.0" clsx: "npm:^2.1.1" - devalue: "npm:^5.5.0" + devalue: "npm:^5.6.2" esm-env: "npm:^1.2.1" esrap: "npm:^2.2.1" is-reference: "npm:^3.0.3" locate-character: "npm:^3.0.0" magic-string: "npm:^0.30.11" zimmerframe: "npm:^1.1.2" - checksum: 10c0/c54e551562a4522a507f346d9048158c7ad529b93f1f22e5752612960f94962fffde66bf17c80cdc35177352632bd8a35a553b460df00f37387aae7d5fa5b2b8 + checksum: 10c0/085438abbda7d9fa133007f2849fa7e478df366ac90d1d271ecd65a839321ccfbc5ba3449d1dc0efad461e9e127b5179ba0f533bf351ac03645b8433b79889ea languageName: node linkType: hard @@ -14893,11 +14443,11 @@ __metadata: linkType: hard "synckit@npm:^0.11.8": - version: 0.11.11 - resolution: "synckit@npm:0.11.11" + version: 0.11.12 + resolution: "synckit@npm:0.11.12" dependencies: "@pkgr/core": "npm:^0.2.9" - checksum: 10c0/f0761495953d12d94a86edf6326b3a565496c72f9b94c02549b6961fb4d999f4ca316ce6b3eb8ed2e4bfc5056a8de65cda0bd03a233333a35221cd2fdc0e196b + checksum: 10c0/cc4d446806688ae0d728ae7bb3f53176d065cf9536647fb85bdd721dcefbd7bf94874df6799ff61580f2b03a392659219b778a9254ad499f9a1f56c34787c235 languageName: node linkType: hard @@ -14932,19 +14482,19 @@ __metadata: linkType: hard "tar@npm:^7.5.2": - version: 7.5.2 - resolution: "tar@npm:7.5.2" + version: 7.5.3 + resolution: "tar@npm:7.5.3" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10c0/a7d8b801139b52f93a7e34830db0de54c5aa45487c7cb551f6f3d44a112c67f1cb8ffdae856b05fd4f17b1749911f1c26f1e3a23bbe0279e17fd96077f13f467 + checksum: 10c0/e5e3237bca325fbb33282d92d9807f4c8d81abaf71bf2627efdf93bd5610c146460c78fc7e9767d4ab5ae3c0b18af8197314c964f8cbd23b30b25bf4d42d7cb4 languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.3.11, terser-webpack-plugin@npm:^5.3.12": +"terser-webpack-plugin@npm:^5.3.12, terser-webpack-plugin@npm:^5.3.16": version: 5.3.16 resolution: "terser-webpack-plugin@npm:5.3.16" dependencies: @@ -14967,8 +14517,8 @@ __metadata: linkType: hard "terser@npm:^5.31.1": - version: 5.44.1 - resolution: "terser@npm:5.44.1" + version: 5.46.0 + resolution: "terser@npm:5.46.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.15.0" @@ -14976,7 +14526,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10c0/ee7a76692cb39b1ed22c30ff366c33ff3c977d9bb769575338ff5664676168fcba59192fb5168ef80c7cd901ef5411a1b0351261f5eaa50decf0fc71f63bde75 + checksum: 10c0/93ad468f13187c4f66b609bbfc00a6aee752007779ca3157f2c1ee063697815748d6010fd449a16c30be33213748431d5f54cc0224ba6a3fbbf5acd3582a4356 languageName: node linkType: hard @@ -15104,15 +14654,6 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^2.1.0": - version: 2.1.0 - resolution: "ts-api-utils@npm:2.1.0" - peerDependencies: - typescript: ">=4.8.4" - checksum: 10c0/9806a38adea2db0f6aa217ccc6bc9c391ddba338a9fe3080676d0d50ed806d305bb90e8cef0276e793d28c8a929f400abb184ddd7ff83a416959c0f4d2ce754f - languageName: node - linkType: hard - "ts-api-utils@npm:^2.4.0": version: 2.4.0 resolution: "ts-api-utils@npm:2.4.0" @@ -15506,8 +15047,8 @@ __metadata: linkType: hard "update-browserslist-db@npm:^1.2.0": - version: 1.2.2 - resolution: "update-browserslist-db@npm:1.2.2" + version: 1.2.3 + resolution: "update-browserslist-db@npm:1.2.3" dependencies: escalade: "npm:^3.2.0" picocolors: "npm:^1.1.1" @@ -15515,7 +15056,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10c0/39c3ea08b397ffc8dc3a1c517f5c6ed5cc4179b5e185383dab9bf745879623c12062a2e6bf4f9427cc59389c7bfa0010e86858b923c1e349e32fdddd9b043bb2 + checksum: 10c0/13a00355ea822388f68af57410ce3255941d5fb9b7c49342c4709a07c9f230bbef7f7499ae0ca7e0de532e79a82cc0c4edbd125f1a323a1845bf914efddf8bec languageName: node linkType: hard @@ -15759,12 +15300,12 @@ __metadata: linkType: hard "watchpack@npm:^2.4.4": - version: 2.4.4 - resolution: "watchpack@npm:2.4.4" + version: 2.5.1 + resolution: "watchpack@npm:2.5.1" dependencies: glob-to-regexp: "npm:^0.4.1" graceful-fs: "npm:^4.1.2" - checksum: 10c0/6c0901f75ce245d33991225af915eea1c5ae4ba087f3aee2b70dd377d4cacb34bef02a48daf109da9d59b2d31ec6463d924a0d72f8618ae1643dd07b95de5275 + checksum: 10c0/dffbb483d1f61be90dc570630a1eb308581e2227d507d783b1d94a57ac7b705ecd9a1a4b73d73c15eab596d39874e5276a3d9cb88bbb698bafc3f8d08c34cf17 languageName: node linkType: hard @@ -15866,8 +15407,8 @@ __metadata: linkType: hard "webpack@npm:^5.103.0": - version: 5.103.0 - resolution: "webpack@npm:5.103.0" + version: 5.104.1 + resolution: "webpack@npm:5.104.1" dependencies: "@types/eslint-scope": "npm:^3.7.7" "@types/estree": "npm:^1.0.8" @@ -15877,10 +15418,10 @@ __metadata: "@webassemblyjs/wasm-parser": "npm:^1.14.1" acorn: "npm:^8.15.0" acorn-import-phases: "npm:^1.0.3" - browserslist: "npm:^4.26.3" + browserslist: "npm:^4.28.1" chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.17.3" - es-module-lexer: "npm:^1.2.1" + enhanced-resolve: "npm:^5.17.4" + es-module-lexer: "npm:^2.0.0" eslint-scope: "npm:5.1.1" events: "npm:^3.2.0" glob-to-regexp: "npm:^0.4.1" @@ -15891,7 +15432,7 @@ __metadata: neo-async: "npm:^2.6.2" schema-utils: "npm:^4.3.3" tapable: "npm:^2.3.0" - terser-webpack-plugin: "npm:^5.3.11" + terser-webpack-plugin: "npm:^5.3.16" watchpack: "npm:^2.4.4" webpack-sources: "npm:^3.3.3" peerDependenciesMeta: @@ -15899,7 +15440,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10c0/d0cf86f8cac249874d6f36292e25011413ebb5bae82c48fa78a165a217e63db00b1a1f563f5195070eb17a055c6da4b6ab89fbdd37f781abdda862aa8c0bd623 + checksum: 10c0/ea78c57f80bbd7684f4f1bb38a18408ab0ef4c5b962e25ad382c595d10b9e9701e077f5248a8cef5f127a55902698664c18837e64243bb972fbecf4e5d9aaab0 languageName: node linkType: hard @@ -15976,8 +15517,8 @@ __metadata: linkType: hard "which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19, which-typed-array@npm:^1.1.2": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" + version: 1.1.20 + resolution: "which-typed-array@npm:1.1.20" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.8" @@ -15986,7 +15527,7 @@ __metadata: get-proto: "npm:^1.0.1" gopd: "npm:^1.2.0" has-tostringtag: "npm:^1.0.2" - checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f + checksum: 10c0/16fcdada95c8afb821cd1117f0ab50b4d8551677ac08187f21d4e444530913c9ffd2dac634f0c1183345f96344b69280f40f9a8bc52164ef409e555567c2604b languageName: node linkType: hard @@ -16090,22 +15631,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.18.0": - version: 8.18.3 - resolution: "ws@npm:8.18.3" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 - languageName: node - linkType: hard - -"ws@npm:^8.19.0": +"ws@npm:^8.18.0, ws@npm:^8.19.0": version: 8.19.0 resolution: "ws@npm:8.19.0" peerDependencies: @@ -16120,9 +15646,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:~8.17.1": - version: 8.17.1 - resolution: "ws@npm:8.17.1" +"ws@npm:~8.18.3": + version: 8.18.3 + resolution: "ws@npm:8.18.3" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -16131,7 +15657,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10c0/f4a49064afae4500be772abdc2211c8518f39e1c959640457dcee15d4488628620625c783902a52af2dd02f68558da2868fd06e6fd0e67ebcd09e6881b1b5bfe + checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 languageName: node linkType: hard @@ -16259,8 +15785,8 @@ __metadata: linkType: hard "zustand@npm:^5.0.9": - version: 5.0.9 - resolution: "zustand@npm:5.0.9" + version: 5.0.10 + resolution: "zustand@npm:5.0.10" peerDependencies: "@types/react": ">=18.0.0" immer: ">=9.0.6" @@ -16275,6 +15801,6 @@ __metadata: optional: true use-sync-external-store: optional: true - checksum: 10c0/552849e4546c7760704d6509a5c412d57c62a1fa9e53169c939ba5e3d75f8cb3df50a64c3a22e6c3f1c8cc00de7543e4edd61ab5ae0c9169ba9a98e28303aba6 + checksum: 10c0/e6ddabf2b44f2c0b7362b0f549cb457d25516caa4c0465132037b62b6173552a43d48bb494c1707286f8d60b389fa249eb4242aa810f1c1d4b4d0b96df789cb8 languageName: node linkType: hard From 288952c678417ccbfa222f3ca564ebc2aa310aa6 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Thu, 5 Feb 2026 10:16:13 +0000 Subject: [PATCH 13/17] Address additional CodeRabbit review comments - Remove dead code: _generate_security_report_llm function that is never called (reporting uses pipeline-based generate_report_sync instead) - Guard checkLLMEnabled against showing misleading "disabled" message before async status check completes - Add null check for docker handler in _showReport to prevent TypeError if getDockerHandler returns undefined Co-Authored-By: Claude Opus 4.5 --- web/pgadmin/llm/__init__.py | 104 -------------------------- web/pgadmin/llm/static/js/ai_tools.js | 26 ++++++- 2 files changed, 24 insertions(+), 106 deletions(-) diff --git a/web/pgadmin/llm/__init__.py b/web/pgadmin/llm/__init__.py index 0e05e0767b3..6bc2549750a 100644 --- a/web/pgadmin/llm/__init__.py +++ b/web/pgadmin/llm/__init__.py @@ -1041,110 +1041,6 @@ def _gather_security_config(conn, manager): return security_info -def _generate_security_report_llm(client, security_info): - """ - Use the LLM to analyze the security configuration and generate a report. - """ - from pgadmin.llm.models import Message - - # Build the system prompt - system_prompt = ( - "You are a PostgreSQL security expert. Your task is to analyze " - "the security configuration of a PostgreSQL database server and " - "generate a comprehensive security report in Markdown format.\n\n" - "Focus ONLY on server-level security configuration, not database " - "objects or data.\n\n" - "IMPORTANT: Do NOT include a report title, header block, or " - "generation date at the top of your response. The title and " - "metadata are added separately by the application. Start " - "directly with the Executive Summary section.\n\n" - "The report should include:\n" - "1. **Executive Summary** - Brief overview of the security posture\n" - "2. **Critical Issues** - Vulnerabilities needing " - "immediate attention\n" - "3. **Warnings** - Important security concerns to be addressed\n" - "4. **Recommendations** - Best practices to improve security\n" - "5. **Configuration Review** - Analysis of key security settings\n\n" - "Use severity indicators:\n" - "- 🔴 Critical - Immediate action required\n" - "- 🟠 Warning - Should be addressed soon\n" - "- 🟡 Advisory - Recommended improvement\n" - "- 🟢 Good - Configuration is secure\n\n" - "Be specific and actionable in your recommendations. Include the " - "current setting values when discussing issues. Format the output " - "as well-structured Markdown." - ) - - # Build the user message with the security configuration - settings_json = json.dumps( - security_info.get('settings', []), indent=2, default=str - ) - hba_json = json.dumps( - security_info.get('hba_rules', []), indent=2, default=str - ) - superusers_json = json.dumps( - security_info.get('superusers', []), indent=2, default=str - ) - privileged_json = json.dumps( - security_info.get('privileged_roles', []), indent=2, default=str - ) - no_expiry_json = json.dumps( - security_info.get('roles_no_expiry', []), indent=2, default=str - ) - extensions_json = json.dumps( - security_info.get('extensions', []), indent=2, default=str - ) - - user_message = f"""Please analyze this PostgreSQL server security config. - -## Server Information -- Server Version: {security_info.get('server_version', 'Unknown')} - -## Security Settings -```json -{settings_json} -``` - -## pg_hba.conf Rules -{security_info.get('hba_note', '')} -```json -{hba_json} -``` - -## Superuser Roles -```json -{superusers_json} -``` - -## Roles with Special Privileges -```json -{privileged_json} -``` - -## Login Roles Without Password Expiry -```json -{no_expiry_json} -``` - -## Installed Extensions -```json -{extensions_json} -``` - -Generate a comprehensive security report analyzing this configuration.""" - - # Call the LLM - messages = [Message.user(user_message)] - response = client.chat( - messages=messages, - system_prompt=system_prompt, - max_tokens=4096, - temperature=0.3 # Lower temperature for more consistent analysis - ) - - return response.content - - # ============================================================================= # Database Security Report # ============================================================================= diff --git a/web/pgadmin/llm/static/js/ai_tools.js b/web/pgadmin/llm/static/js/ai_tools.js index 7bb8b6d553b..2fdb79b2fed 100644 --- a/web/pgadmin/llm/static/js/ai_tools.js +++ b/web/pgadmin/llm/static/js/ai_tools.js @@ -191,16 +191,31 @@ define([ // Common LLM enablement check checkLLMEnabled: function(data) { + if (!this.llmStatusChecked) { + if (data) { + data.data_disabled = gettext( + 'Checking AI configuration...' + ); + } + return false; + } + if (!this.llmSystemEnabled) { if (data) { - data.data_disabled = gettext('AI features are disabled in the server configuration.'); + data.data_disabled = gettext( + 'AI features are disabled in the ' + + 'server configuration.' + ); } return false; } if (!this.llmEnabled) { if (data) { - data.data_disabled = gettext('Please configure an LLM provider in Preferences > AI to enable this feature.'); + data.data_disabled = gettext( + 'Please configure an LLM provider in ' + + 'Preferences > AI to enable this feature.' + ); } return false; } @@ -400,6 +415,13 @@ define([ BROWSER_PANELS.AI_REPORT_PREFIX, pgBrowser.docker.default_workspace ); + if (!handler) { + pgBrowser.report_error( + gettext('Report'), + gettext('Unable to open the report panel.') + ); + return; + } handler.focus(); handler.docker.openTab({ id: panelId, From 3411ebc67ea0c53f4e0fd19e9769efa4f45f3aad Mon Sep 17 00:00:00 2001 From: Dave Page Date: Thu, 5 Feb 2026 10:56:41 +0000 Subject: [PATCH 14/17] Fix Python style violations (E501 line length, E122 indentation) - Fix E501 line-too-long violations across 8 files by wrapping long lines in SQL strings, error messages, docstrings, LLM prompt strings, and test code - Fix E122 continuation line indentation in database.py Co-Authored-By: Claude Opus 4.5 --- web/pgadmin/llm/prompts/explain.py | 24 +- web/pgadmin/llm/prompts/nlq.py | 12 +- web/pgadmin/llm/providers/docker.py | 29 ++- web/pgadmin/llm/providers/openai.py | 13 +- web/pgadmin/llm/reports/pipeline.py | 24 +- web/pgadmin/llm/reports/prompts.py | 39 ++-- web/pgadmin/llm/reports/queries.py | 208 +++++++++++++----- .../llm/tests/test_report_endpoints.py | 40 +++- web/pgadmin/llm/tools/database.py | 6 +- 9 files changed, 277 insertions(+), 118 deletions(-) diff --git a/web/pgadmin/llm/prompts/explain.py b/web/pgadmin/llm/prompts/explain.py index 49bfd8eb1d3..961fc054d90 100644 --- a/web/pgadmin/llm/prompts/explain.py +++ b/web/pgadmin/llm/prompts/explain.py @@ -9,21 +9,26 @@ """System prompt for EXPLAIN plan analysis.""" -EXPLAIN_ANALYSIS_PROMPT = """You are a PostgreSQL performance expert integrated into pgAdmin 4. -Your task is to analyze EXPLAIN plan output and provide actionable optimization recommendations. +EXPLAIN_ANALYSIS_PROMPT = """You are a PostgreSQL performance +expert integrated into pgAdmin 4. +Your task is to analyze EXPLAIN plan output and provide +actionable optimization recommendations. ## Input Format You will receive: -1. The EXPLAIN plan output in JSON format (from EXPLAIN (FORMAT JSON, ANALYZE, ...)) +1. The EXPLAIN plan output in JSON format +(from EXPLAIN (FORMAT JSON, ANALYZE, ...)) 2. The original SQL query that was analyzed ## Analysis Guidelines 1. **Identify Performance Bottlenecks**: - Sequential scans on large tables (consider if an index would help) - - Nested loops with high row counts (may indicate missing indexes or poor join order) - - Large row estimate variances (actual vs planned) suggesting stale statistics + - Nested loops with high row counts + (may indicate missing indexes or poor join order) + - Large row estimate variances (actual vs planned) + suggesting stale statistics - Sort operations on large datasets without indexes - Hash joins spilling to disk (indicated by batch counts > 1) - High startup costs relative to total costs @@ -49,7 +54,8 @@ ## Response Format -IMPORTANT: Your response MUST be ONLY a valid JSON object with no additional text, +IMPORTANT: Your response MUST be ONLY a valid JSON object +with no additional text, no markdown formatting, and no code blocks. Return exactly this format: { @@ -69,7 +75,8 @@ "sql": "Exact SQL to execute (if applicable, otherwise null)" } ], - "summary": "One paragraph summary of the overall plan performance and key takeaways" + "summary": "One paragraph summary of the overall + plan performance and key takeaways" } Rules: @@ -77,7 +84,8 @@ - Do NOT wrap the JSON in markdown code blocks (no ```) - Order bottlenecks by severity (high first) - Order recommendations by priority (1 = highest) -- If the plan looks optimal, return empty bottlenecks array with a positive summary +- If the plan looks optimal, return empty bottlenecks +array with a positive summary - Always include at least a summary, even for simple plans - The "sql" field should be null if no SQL action is applicable """ diff --git a/web/pgadmin/llm/prompts/nlq.py b/web/pgadmin/llm/prompts/nlq.py index 9161ae4ff4c..78dd337466a 100644 --- a/web/pgadmin/llm/prompts/nlq.py +++ b/web/pgadmin/llm/prompts/nlq.py @@ -9,13 +9,16 @@ """System prompt for Natural Language to SQL translation.""" -NLQ_SYSTEM_PROMPT = """You are a PostgreSQL SQL expert integrated into pgAdmin 4. +NLQ_SYSTEM_PROMPT = """You are a PostgreSQL SQL expert \ +integrated into pgAdmin 4. Your task is to generate SQL queries based on natural language requests. You have access to database inspection tools: - get_database_schema: Get list of schemas, tables, and views in the database -- get_table_info: Get detailed column, constraint, and index information for a table -- execute_sql_query: Run read-only queries to understand data structure (SELECT only) +- get_table_info: Get detailed column, constraint, and \ +index information for a table +- execute_sql_query: Run read-only queries to understand \ +data structure (SELECT only) Guidelines: - Use get_database_schema to discover available tables before writing queries @@ -31,5 +34,6 @@ Rules: - Return ONLY the JSON object, nothing else - No markdown code blocks -- If you need clarification, set "sql" to null and put your question in "explanation" +- If you need clarification, set "sql" to null and put \ +your question in "explanation" """ diff --git a/web/pgadmin/llm/providers/docker.py b/web/pgadmin/llm/providers/docker.py index c7ade7b3fce..2d65a21a46c 100644 --- a/web/pgadmin/llm/providers/docker.py +++ b/web/pgadmin/llm/providers/docker.py @@ -51,12 +51,15 @@ class DockerClient(LLMClient): which provides an OpenAI-compatible API. """ - def __init__(self, api_url: Optional[str] = None, model: Optional[str] = None): + def __init__( + self, api_url: Optional[str] = None, model: Optional[str] = None + ): """ Initialize the Docker Model Runner client. Args: - api_url: The Docker Model Runner API URL (default: http://localhost:12434). + api_url: The Docker Model Runner API URL + (default: http://localhost:12434). model: Optional model name. Defaults to ai/qwen3-coder. """ self._api_url = (api_url or DEFAULT_API_URL).rstrip('/') @@ -321,18 +324,26 @@ def _parse_response(self, data: dict) -> LLMResponse: if stop_reason == StopReason.MAX_TOKENS: input_tokens = usage.input_tokens raise LLMClientError(LLMError( - message=f'Response truncated due to token limit ' - f'(input: {input_tokens} tokens). ' - f'The request is too large for model {self._model}. ' - f'Try using a model with a larger context window, ' - f'or analyze a smaller scope.', + message=( + f'Response truncated due to token limit ' + f'(input: {input_tokens} tokens). ' + f'The request is too large for model ' + f'{self._model}. ' + f'Try using a model with a larger context ' + f'window, or analyze a smaller scope.' + ), code='max_tokens', provider=self.provider_name, retryable=False )) - elif finish_reason and finish_reason not in ('stop', 'tool_calls'): + elif finish_reason and finish_reason not in ( + 'stop', 'tool_calls' + ): raise LLMClientError(LLMError( - message=f'Empty response with finish reason: {finish_reason}', + message=( + f'Empty response with finish reason: ' + f'{finish_reason}' + ), code=finish_reason, provider=self.provider_name, retryable=False diff --git a/web/pgadmin/llm/providers/openai.py b/web/pgadmin/llm/providers/openai.py index ed28f4e083c..3e7c169af1e 100644 --- a/web/pgadmin/llm/providers/openai.py +++ b/web/pgadmin/llm/providers/openai.py @@ -316,17 +316,20 @@ def _parse_response(self, data: dict) -> LLMResponse: raise LLMClientError(LLMError( message=f'Response truncated due to token limit ' f'(input: {input_tokens} tokens). ' - f'The request is too large for model {self._model}. ' - f'Try using a model with a larger context window, ' - f'or analyze a smaller scope (e.g., a specific schema ' - f'instead of the entire database).', + f'The request is too large for model ' + f'{self._model}. ' + f'Try using a model with a larger context ' + f'window, or analyze a smaller scope (e.g., a ' + f'specific schema instead of the entire ' + f'database).', code='max_tokens', provider=self.provider_name, retryable=False )) elif finish_reason and finish_reason not in ('stop', 'tool_calls'): raise LLMClientError(LLMError( - message=f'Empty response with finish reason: {finish_reason}', + message=(f'Empty response with finish reason: ' + f'{finish_reason}'), code=finish_reason, provider=self.provider_name, retryable=False diff --git a/web/pgadmin/llm/reports/pipeline.py b/web/pgadmin/llm/reports/pipeline.py index a43298b104c..0a963438d6a 100644 --- a/web/pgadmin/llm/reports/pipeline.py +++ b/web/pgadmin/llm/reports/pipeline.py @@ -58,7 +58,8 @@ def __init__( report_type: Type of report ('security', 'performance', 'design'). sections: List of available Section definitions. client: LLM client for making API calls. - query_executor: Function to execute queries given query_id and context. + query_executor: Function to execute queries given query_id and + context. max_retries: Maximum retry attempts for rate-limited calls. retry_base_delay: Base delay in seconds for exponential backoff. """ @@ -88,7 +89,9 @@ def execute(self, context: dict) -> str: if event.get('type') == 'complete': result = event.get('report', '') elif event.get('type') == 'error': - raise ReportPipelineError(event.get('message', 'Unknown error')) + raise ReportPipelineError( + event.get('message', 'Unknown error') + ) return result or '' def execute_with_progress( @@ -234,7 +237,8 @@ def _planning_stage(self, context: dict) -> list[str]: if sid in self.sections ] - return valid_ids if valid_ids else [s['id'] for s in available_sections] + return (valid_ids if valid_ids else + [s['id'] for s in available_sections]) except (json.JSONDecodeError, LLMClientError): # Fallback to all available sections @@ -312,7 +316,8 @@ def _analyze_section_with_retry( yield { 'type': 'retry', 'reason': 'rate_limit', - 'message': f'Rate limited, retrying in {wait_time}s...', + 'message': (f'Rate limited, retrying in ' + f'{wait_time}s...'), 'wait_seconds': wait_time } time.sleep(wait_time) @@ -382,15 +387,20 @@ def _synthesize_with_retry( yield { 'type': 'retry', 'reason': 'rate_limit', - 'message': f'Rate limited, retrying in {wait_time}s...', + 'message': (f'Rate limited, retrying in ' + f'{wait_time}s...'), 'wait_seconds': wait_time } time.sleep(wait_time) else: # Return partial report with section summaries - partial = "**Note**: Synthesis failed. Section summaries:\n\n" + partial = ( + "**Note**: Synthesis failed. Section summaries:\n\n" + ) for r in successful_results: - partial += f"## {r['section_name']}\n\n{r['summary']}\n\n" + partial += ( + f"## {r['section_name']}\n\n{r['summary']}\n\n" + ) yield {'type': 'result', 'result': partial} return diff --git a/web/pgadmin/llm/reports/prompts.py b/web/pgadmin/llm/reports/prompts.py index ce08f06d0d9..e7b24230752 100644 --- a/web/pgadmin/llm/reports/prompts.py +++ b/web/pgadmin/llm/reports/prompts.py @@ -14,9 +14,11 @@ # Planning Stage Prompts # ============================================================================= -PLANNING_SYSTEM_PROMPT = """You are a PostgreSQL expert helping to plan a database analysis report. +PLANNING_SYSTEM_PROMPT = """You are a PostgreSQL expert helping to plan a +database analysis report. -Your task is to select which analysis sections are most relevant for the given report type and database context. +Your task is to select which analysis sections are most relevant for the +given report type and database context. Return ONLY a JSON array of section IDs to analyze, ordered by priority. Only include sections that are relevant given the database characteristics. @@ -55,14 +57,16 @@ def get_planning_user_prompt( - Table count: {context.get('table_count', 'Unknown')} - Has pg_stat_statements: {context.get('has_stat_statements', False)} -Return a JSON array of section IDs to analyze, e.g.: ["section1", "section2", "section3"]""" +Return a JSON array of section IDs to analyze, e.g.: +["section1", "section2", "section3"]""" # ============================================================================= # Section Analysis Prompts # ============================================================================= -SECTION_ANALYSIS_SYSTEM_PROMPT = """You are a PostgreSQL expert analyzing database configuration. +SECTION_ANALYSIS_SYSTEM_PROMPT = """You are a PostgreSQL expert analyzing +database configuration. Analyze the provided data and generate a concise summary (max 300 words). @@ -111,7 +115,8 @@ def get_section_analysis_prompt( data_json = json.dumps(data, indent=2, default=str) - return f"""Analyze the following {section_name} data for a PostgreSQL {context.get('server_version', '')} server. + return f"""Analyze the following {section_name} data for a PostgreSQL +{context.get('server_version', '')} server. Section focus: {section_description} @@ -130,19 +135,25 @@ def get_section_analysis_prompt( # Synthesis Prompts # ============================================================================= -SYNTHESIS_SYSTEM_PROMPT = """You are a PostgreSQL expert creating a comprehensive report. +SYNTHESIS_SYSTEM_PROMPT = """You are a PostgreSQL expert creating a +comprehensive report. Combine the section summaries into a cohesive, well-organized report. Your report MUST: 1. Start with an **Executive Summary** (3-5 sentences overview) -2. Include a **Critical Issues** section (aggregate all critical/warning findings) -3. Include each section's detailed analysis (use the section content as-is, don't add duplicate headers) -4. End with **Prioritized Recommendations** (numbered list, most important first) +2. Include a **Critical Issues** section (aggregate all critical/warning +findings) +3. Include each section's detailed analysis (use the section content as-is, +don't add duplicate headers) +4. End with **Prioritized Recommendations** (numbered list, most important +first) IMPORTANT: -- Do NOT include a report title at the very beginning - start directly with Executive Summary -- Each section already has its own ### header - do NOT add extra headers around them +- Do NOT include a report title at the very beginning - start directly with +Executive Summary +- Each section already has its own ### header - do NOT add extra headers +around them - Simply organize and flow the sections together naturally Use severity indicators consistently: @@ -151,7 +162,8 @@ def get_section_analysis_prompt( - 🟡 Advisory - Consider improving - 🟢 Good - No issues found -Be professional and actionable. Include SQL commands for recommendations where helpful.""" +Be professional and actionable. Include SQL commands for recommendations +where helpful.""" def get_synthesis_prompt( @@ -186,7 +198,8 @@ def get_synthesis_prompt( if context.get('schema_name'): scope_info = f"{context['schema_name']} schema in {scope_info}" - return f"""Create a comprehensive {report_type_display} Report for {scope_info}. + return f"""Create a comprehensive {report_type_display} Report for +{scope_info}. Server: PostgreSQL {context.get('server_version', 'Unknown')} diff --git a/web/pgadmin/llm/reports/queries.py b/web/pgadmin/llm/reports/queries.py index caf86b279cc..d7b6b5d5ce0 100644 --- a/web/pgadmin/llm/reports/queries.py +++ b/web/pgadmin/llm/reports/queries.py @@ -70,7 +70,8 @@ SELECT rolname, rolsuper, rolcreaterole, rolcreatedb, rolreplication, rolbypassrls, rolcanlogin, rolconnlimit FROM pg_roles - WHERE (rolcreaterole OR rolcreatedb OR rolreplication OR rolbypassrls) + WHERE (rolcreaterole OR rolcreatedb + OR rolreplication OR rolbypassrls) AND NOT rolsuper ORDER BY rolname LIMIT 30 @@ -123,7 +124,9 @@ pg_catalog.pg_get_userbyid(n.nspowner) as owner, n.nspacl as acl FROM pg_namespace n - WHERE n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + WHERE n.nspname NOT IN ( + 'pg_catalog', 'information_schema', + 'pg_toast') AND n.nspname NOT LIKE 'pg_temp%' AND n.nspname NOT LIKE 'pg_toast_temp%' ORDER BY n.nspname @@ -143,7 +146,9 @@ FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r', 'p') - AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT IN ( + 'pg_catalog', 'information_schema', + 'pg_toast') AND n.nspname NOT LIKE 'pg_temp%' ORDER BY n.nspname, c.relname LIMIT 50 @@ -161,8 +166,12 @@ pol.polcmd as command, ARRAY(SELECT pg_catalog.pg_get_userbyid(r) FROM unnest(pol.polroles) r) as roles, - pg_catalog.pg_get_expr(pol.polqual, pol.polrelid) as using_expr, - pg_catalog.pg_get_expr(pol.polwithcheck, pol.polrelid) as check_expr + pg_catalog.pg_get_expr( + pol.polqual, pol.polrelid + ) as using_expr, + pg_catalog.pg_get_expr( + pol.polwithcheck, pol.polrelid + ) as check_expr FROM pg_policy pol JOIN pg_class c ON c.oid = pol.polrelid JOIN pg_namespace n ON n.oid = c.relnamespace @@ -317,9 +326,12 @@ FROM pg_settings WHERE name IN ( 'autovacuum', 'autovacuum_max_workers', - 'autovacuum_naptime', 'autovacuum_vacuum_threshold', - 'autovacuum_vacuum_scale_factor', 'autovacuum_analyze_threshold', - 'autovacuum_analyze_scale_factor', 'autovacuum_vacuum_cost_delay', + 'autovacuum_naptime', + 'autovacuum_vacuum_threshold', + 'autovacuum_vacuum_scale_factor', + 'autovacuum_analyze_threshold', + 'autovacuum_analyze_scale_factor', + 'autovacuum_vacuum_cost_delay', 'autovacuum_vacuum_cost_limit' ) ORDER BY name @@ -410,7 +422,8 @@ SELECT datname, numbackends, xact_commit, xact_rollback, blks_read, blks_hit, CASE WHEN blks_read + blks_hit > 0 - THEN round(100.0 * blks_hit / (blks_read + blks_hit), 2) + THEN round(100.0 * blks_hit + / (blks_read + blks_hit), 2) ELSE 0 END as cache_hit_ratio, tup_returned, tup_fetched, tup_inserted, tup_updated, tup_deleted, @@ -501,8 +514,11 @@ 'top_queries_by_time': { 'sql': """ SELECT left(query, 200) as query_preview, - calls, round(total_exec_time::numeric, 2) as total_exec_time_ms, - round(mean_exec_time::numeric, 2) as mean_exec_time_ms, + calls, + round(total_exec_time::numeric, 2) + as total_exec_time_ms, + round(mean_exec_time::numeric, 2) + as mean_exec_time_ms, rows FROM pg_stat_statements ORDER BY total_exec_time DESC @@ -515,8 +531,11 @@ 'top_queries_by_calls': { 'sql': """ SELECT left(query, 200) as query_preview, - calls, round(total_exec_time::numeric, 2) as total_exec_time_ms, - round(mean_exec_time::numeric, 2) as mean_exec_time_ms, + calls, + round(total_exec_time::numeric, 2) + as total_exec_time_ms, + round(mean_exec_time::numeric, 2) + as mean_exec_time_ms, rows FROM pg_stat_statements ORDER BY calls DESC @@ -545,10 +564,18 @@ 'replication_status': { 'sql': """ SELECT client_addr, state, sync_state, - pg_wal_lsn_diff(pg_current_wal_lsn(), sent_lsn) as sent_lag, - pg_wal_lsn_diff(pg_current_wal_lsn(), write_lsn) as write_lag, - pg_wal_lsn_diff(pg_current_wal_lsn(), flush_lsn) as flush_lag, - pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) as replay_lag + pg_wal_lsn_diff( + pg_current_wal_lsn(), sent_lsn + ) as sent_lag, + pg_wal_lsn_diff( + pg_current_wal_lsn(), write_lsn + ) as write_lag, + pg_wal_lsn_diff( + pg_current_wal_lsn(), flush_lsn + ) as flush_lag, + pg_wal_lsn_diff( + pg_current_wal_lsn(), replay_lsn + ) as replay_lag FROM pg_stat_replication LIMIT 10 """, @@ -565,15 +592,21 @@ SELECT n.nspname as schema_name, c.relname as table_name, pg_catalog.pg_get_userbyid(c.relowner) as owner, - pg_size_pretty(pg_total_relation_size(c.oid)) as total_size, + pg_size_pretty( + pg_total_relation_size(c.oid) + ) as total_size, (SELECT count(*) FROM pg_attribute a - WHERE a.attrelid = c.oid AND a.attnum > 0 - AND NOT a.attisdropped) as column_count, + WHERE a.attrelid = c.oid + AND a.attnum > 0 + AND NOT a.attisdropped + ) as column_count, obj_description(c.oid) as description FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r', 'p') - AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT IN ( + 'pg_catalog', 'information_schema', + 'pg_toast') AND n.nspname NOT LIKE 'pg_temp%' ORDER BY n.nspname, c.relname LIMIT 50 @@ -586,18 +619,26 @@ SELECT n.nspname as schema_name, c.relname as table_name, a.attname as column_name, - pg_catalog.format_type(a.atttypid, a.atttypmod) as data_type, + pg_catalog.format_type( + a.atttypid, a.atttypmod + ) as data_type, a.attnotnull as not_null, - pg_get_expr(d.adbin, d.adrelid) as default_value, - col_description(c.oid, a.attnum) as description + pg_get_expr(d.adbin, d.adrelid) + as default_value, + col_description(c.oid, a.attnum) + as description FROM pg_attribute a JOIN pg_class c ON c.oid = a.attrelid JOIN pg_namespace n ON n.oid = c.relnamespace - LEFT JOIN pg_attrdef d ON d.adrelid = a.attrelid AND d.adnum = a.attnum + LEFT JOIN pg_attrdef d + ON d.adrelid = a.attrelid + AND d.adnum = a.attnum WHERE a.attnum > 0 AND NOT a.attisdropped AND c.relkind IN ('r', 'p') - AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT IN ( + 'pg_catalog', 'information_schema', + 'pg_toast') AND n.nspname NOT LIKE 'pg_temp%' ORDER BY n.nspname, c.relname, a.attnum LIMIT 200 @@ -611,12 +652,17 @@ SELECT n.nspname as schema_name, c.relname as table_name, con.conname as constraint_name, - array_agg(a.attname ORDER BY array_position(con.conkey, a.attnum)) + array_agg(a.attname ORDER BY + array_position(con.conkey, + a.attnum)) as columns FROM pg_constraint con JOIN pg_class c ON c.oid = con.conrelid - JOIN pg_namespace n ON n.oid = c.relnamespace - JOIN pg_attribute a ON a.attrelid = c.oid AND a.attnum = ANY(con.conkey) + JOIN pg_namespace n + ON n.oid = c.relnamespace + JOIN pg_attribute a + ON a.attrelid = c.oid + AND a.attnum = ANY(con.conkey) WHERE con.contype = 'p' AND n.nspname NOT IN ('pg_catalog', 'information_schema') GROUP BY n.nspname, c.relname, con.conname @@ -630,11 +676,15 @@ 'sql': """ SELECT n.nspname as schema_name, c.relname as table_name, - pg_size_pretty(pg_total_relation_size(c.oid)) as size + pg_size_pretty( + pg_total_relation_size(c.oid) + ) as size FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind = 'r' - AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT IN ( + 'pg_catalog', 'information_schema', + 'pg_toast') AND n.nspname NOT LIKE 'pg_temp%' AND NOT EXISTS ( SELECT 1 FROM pg_constraint con @@ -652,19 +702,30 @@ SELECT n.nspname as schema_name, c.relname as table_name, con.conname as constraint_name, - array_agg(a.attname ORDER BY array_position(con.conkey, a.attnum)) + array_agg(a.attname ORDER BY + array_position(con.conkey, + a.attnum)) as columns, fn.nspname as ref_schema, fc.relname as ref_table, - array_agg(fa.attname ORDER BY array_position(con.confkey, fa.attnum)) + array_agg(fa.attname ORDER BY + array_position(con.confkey, + fa.attnum)) as ref_columns FROM pg_constraint con JOIN pg_class c ON c.oid = con.conrelid - JOIN pg_namespace n ON n.oid = c.relnamespace - JOIN pg_class fc ON fc.oid = con.confrelid - JOIN pg_namespace fn ON fn.oid = fc.relnamespace - JOIN pg_attribute a ON a.attrelid = c.oid AND a.attnum = ANY(con.conkey) - JOIN pg_attribute fa ON fa.attrelid = fc.oid AND fa.attnum = ANY(con.confkey) + JOIN pg_namespace n + ON n.oid = c.relnamespace + JOIN pg_class fc + ON fc.oid = con.confrelid + JOIN pg_namespace fn + ON fn.oid = fc.relnamespace + JOIN pg_attribute a + ON a.attrelid = c.oid + AND a.attnum = ANY(con.conkey) + JOIN pg_attribute fa + ON fa.attrelid = fc.oid + AND fa.attnum = ANY(con.confkey) WHERE con.contype = 'f' AND n.nspname NOT IN ('pg_catalog', 'information_schema') GROUP BY n.nspname, c.relname, con.conname, fn.nspname, fc.relname @@ -690,7 +751,9 @@ JOIN pg_class i ON i.oid = idx.indexrelid JOIN pg_namespace n ON n.oid = c.relnamespace JOIN pg_am am ON am.oid = i.relam - WHERE n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + WHERE n.nspname NOT IN ( + 'pg_catalog', 'information_schema', + 'pg_toast') ORDER BY n.nspname, c.relname, i.relname LIMIT 100 """, @@ -704,7 +767,9 @@ c.relname as table_name, i.relname as index_name, pg_get_indexdef(idx.indexrelid) as definition, - array_agg(a.attname ORDER BY array_position(idx.indkey, a.attnum)) + array_agg(a.attname ORDER BY + array_position( + idx.indkey, a.attnum)) as columns, pg_relation_size(i.oid) as size FROM pg_index idx @@ -754,12 +819,17 @@ SELECT n.nspname as schema_name, c.relname as table_name, con.conname as constraint_name, - array_agg(a.attname ORDER BY array_position(con.conkey, a.attnum)) + array_agg(a.attname ORDER BY + array_position(con.conkey, + a.attnum)) as columns FROM pg_constraint con JOIN pg_class c ON c.oid = con.conrelid - JOIN pg_namespace n ON n.oid = c.relnamespace - JOIN pg_attribute a ON a.attrelid = c.oid AND a.attnum = ANY(con.conkey) + JOIN pg_namespace n + ON n.oid = c.relnamespace + JOIN pg_attribute a + ON a.attrelid = c.oid + AND a.attnum = ANY(con.conkey) WHERE con.contype = 'u' AND n.nspname NOT IN ('pg_catalog', 'information_schema') GROUP BY n.nspname, c.relname, con.conname @@ -774,14 +844,19 @@ 'sql': """ SELECT a.attname as column_name, count(*) as occurrence_count, - array_agg(DISTINCT n.nspname || '.' || c.relname) as tables + array_agg(DISTINCT + n.nspname || '.' || c.relname + ) as tables FROM pg_attribute a JOIN pg_class c ON c.oid = a.attrelid - JOIN pg_namespace n ON n.oid = c.relnamespace + JOIN pg_namespace n + ON n.oid = c.relnamespace WHERE a.attnum > 0 AND NOT a.attisdropped AND c.relkind = 'r' - AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT IN ( + 'pg_catalog', 'information_schema', + 'pg_toast') GROUP BY a.attname HAVING count(*) > 3 ORDER BY count(*) DESC @@ -793,19 +868,29 @@ # Naming Conventions 'object_names': { 'sql': """ - SELECT 'table' as object_type, n.nspname as schema_name, c.relname as name + SELECT 'table' as object_type, + n.nspname as schema_name, + c.relname as name FROM pg_class c - JOIN pg_namespace n ON n.oid = c.relnamespace + JOIN pg_namespace n + ON n.oid = c.relnamespace WHERE c.relkind IN ('r', 'p') - AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT IN ( + 'pg_catalog', 'information_schema', + 'pg_toast') UNION ALL - SELECT 'column', n.nspname, c.relname || '.' || a.attname + SELECT 'column', n.nspname, + c.relname || '.' || a.attname FROM pg_attribute a JOIN pg_class c ON c.oid = a.attrelid - JOIN pg_namespace n ON n.oid = c.relnamespace - WHERE a.attnum > 0 AND NOT a.attisdropped + JOIN pg_namespace n + ON n.oid = c.relnamespace + WHERE a.attnum > 0 + AND NOT a.attisdropped AND c.relkind = 'r' - AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT IN ( + 'pg_catalog', 'information_schema', + 'pg_toast') LIMIT 200 """, 'scope': ['database', 'schema'], @@ -814,19 +899,28 @@ # Data Types 'column_types': { 'sql': """ - SELECT pg_catalog.format_type(a.atttypid, a.atttypmod) as data_type, + SELECT pg_catalog.format_type( + a.atttypid, a.atttypmod + ) as data_type, count(*) as usage_count, CASE - WHEN count(*) <= 5 THEN array_agg(DISTINCT n.nspname || '.' || c.relname || '.' || a.attname) + WHEN count(*) <= 5 + THEN array_agg(DISTINCT + n.nspname || '.' + || c.relname || '.' + || a.attname) ELSE NULL END as example_columns FROM pg_attribute a JOIN pg_class c ON c.oid = a.attrelid - JOIN pg_namespace n ON n.oid = c.relnamespace + JOIN pg_namespace n + ON n.oid = c.relnamespace WHERE a.attnum > 0 AND NOT a.attisdropped AND c.relkind = 'r' - AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') + AND n.nspname NOT IN ( + 'pg_catalog', 'information_schema', + 'pg_toast') GROUP BY pg_catalog.format_type(a.atttypid, a.atttypmod) ORDER BY count(*) DESC LIMIT 20 diff --git a/web/pgadmin/llm/tests/test_report_endpoints.py b/web/pgadmin/llm/tests/test_report_endpoints.py index 2a9989bd383..523e9993be3 100644 --- a/web/pgadmin/llm/tests/test_report_endpoints.py +++ b/web/pgadmin/llm/tests/test_report_endpoints.py @@ -31,7 +31,8 @@ def setUp(self): def runTest(self): """Test security report endpoint at server level""" with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ - patch('pgadmin.llm.reports.generator.generate_report_sync') as mock_generate, \ + patch('pgadmin.llm.reports.generator.generate_report_sync' + ) as mock_generate, \ patch('pgadmin.utils.driver.get_driver') as mock_get_driver: # Mock database connection @@ -48,7 +49,9 @@ def runTest(self): mock_enabled.return_value = self.llm_enabled if self.llm_enabled: - mock_generate.return_value = (True, "# Security Report\n\nNo issues found.") + mock_generate.return_value = ( + True, "# Security Report\n\nNo issues found." + ) url = '/llm/security-report/' + str(self.server_id) response = self.tester.get(url, content_type='application/json') @@ -81,7 +84,8 @@ def setUp(self): def runTest(self): """Test performance report endpoint at database level""" with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ - patch('pgadmin.llm.reports.generator.generate_report_sync') as mock_generate, \ + patch('pgadmin.llm.reports.generator.generate_report_sync' + ) as mock_generate, \ patch('pgadmin.utils.driver.get_driver') as mock_get_driver: # Mock database connection @@ -97,9 +101,12 @@ def runTest(self): mock_get_driver.return_value = mock_driver mock_enabled.return_value = self.llm_enabled - mock_generate.return_value = (True, "# Performance Report\n\nOptimization suggestions...") + mock_generate.return_value = ( + True, "# Performance Report\n\nOptimization suggestions..." + ) - url = '/llm/database-performance-report/' + str(self.server_id) + '/' + str(self.db_id) + url = ('/llm/database-performance-report/' + + str(self.server_id) + '/' + str(self.db_id)) response = self.tester.get(url, content_type='application/json') self.assertEqual(response.status_code, 200) @@ -124,14 +131,17 @@ def setUp(self): def runTest(self): """Test design review report endpoint at schema level""" with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ - patch('pgadmin.llm.reports.generator.generate_report_sync') as mock_generate, \ + patch('pgadmin.llm.reports.generator.generate_report_sync' + ) as mock_generate, \ patch('pgadmin.utils.driver.get_driver') as mock_get_driver: # Mock connection to return schema name mock_conn = MagicMock() mock_conn.connected.return_value = True mock_conn.db = 'testdb' - mock_conn.execute_dict.return_value = (True, {'rows': [{'nspname': 'public'}]}) + mock_conn.execute_dict.return_value = ( + True, {'rows': [{'nspname': 'public'}]} + ) mock_manager = MagicMock() mock_manager.connection.return_value = mock_conn @@ -141,9 +151,12 @@ def runTest(self): mock_get_driver.return_value = mock_driver mock_enabled.return_value = self.llm_enabled - mock_generate.return_value = (True, "# Design Review\n\nSchema structure looks good...") + mock_generate.return_value = ( + True, "# Design Review\n\nSchema structure looks good..." + ) - url = '/llm/schema-design-report/' + str(self.server_id) + '/' + str(self.db_id) + '/' + str(self.schema_id) + url = ('/llm/schema-design-report/' + str(self.server_id) + + '/' + str(self.db_id) + '/' + str(self.schema_id)) response = self.tester.get(url, content_type='application/json') self.assertEqual(response.status_code, 200) @@ -164,7 +177,8 @@ def setUp(self): def runTest(self): """Test streaming report endpoint uses SSE format""" with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ - patch('pgadmin.llm.reports.generator.generate_report_streaming') as mock_streaming, \ + patch('pgadmin.llm.reports.generator.generate_report_streaming' + ) as mock_streaming, \ patch('pgadmin.utils.driver.get_driver') as mock_get_driver: # Mock connection @@ -184,7 +198,8 @@ def runTest(self): url = '/llm/security-report/' + str(self.server_id) + '/stream' response = self.tester.get(url) - # SSE endpoints should return 200 and have text/event-stream content type + # SSE endpoints should return 200 and have text/event-stream + # content type self.assertEqual(response.status_code, 200) self.assertIn('text/event-stream', response.content_type) @@ -204,7 +219,8 @@ def setUp(self): def runTest(self): """Test report endpoint handles LLM API errors gracefully""" with patch('pgadmin.llm.utils.is_llm_enabled') as mock_enabled, \ - patch('pgadmin.llm.reports.generator.generate_report_sync') as mock_generate, \ + patch('pgadmin.llm.reports.generator.generate_report_sync' + ) as mock_generate, \ patch('pgadmin.utils.driver.get_driver') as mock_get_driver: # Mock database connection diff --git a/web/pgadmin/llm/tools/database.py b/web/pgadmin/llm/tools/database.py index bdccabc3ab6..fd9cdfe1729 100644 --- a/web/pgadmin/llm/tools/database.py +++ b/web/pgadmin/llm/tools/database.py @@ -591,9 +591,9 @@ def get_table_info( columns.append({ 'name': row.get('name'), 'data_type': ( - row.get('displaytypname') - or row.get('datatype') - ), + row.get('displaytypname') + or row.get('datatype') + ), 'not_null': row.get('not_null', False), 'has_default': row.get('has_default_val', False), 'description': row.get('description') From d7dad4f12fef10b9e15ba6a86249fe5faaf0e317 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Thu, 5 Feb 2026 10:59:26 +0000 Subject: [PATCH 15/17] Fix W503 style violations and update yarn.lock for dompurify - Move 'or' operator to end of line in database.py (W503) - Add dompurify to yarn.lock to fix Yarn hardened mode CI Co-Authored-By: Claude Opus 4.5 --- web/pgadmin/llm/tools/database.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/pgadmin/llm/tools/database.py b/web/pgadmin/llm/tools/database.py index fd9cdfe1729..bdcffb21899 100644 --- a/web/pgadmin/llm/tools/database.py +++ b/web/pgadmin/llm/tools/database.py @@ -483,8 +483,8 @@ def get_table_columns( columns.append({ 'name': row.get('name'), 'data_type': ( - row.get('displaytypname') - or row.get('datatype') + row.get('displaytypname') or + row.get('datatype') ), 'not_null': row.get('not_null', False), 'has_default': row.get('has_default_val', False), @@ -591,8 +591,8 @@ def get_table_info( columns.append({ 'name': row.get('name'), 'data_type': ( - row.get('displaytypname') - or row.get('datatype') + row.get('displaytypname') or + row.get('datatype') ), 'not_null': row.get('not_null', False), 'has_default': row.get('has_default_val', False), From 45f8aaaf9445adf6207da0424c1691092ad3ae11 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Thu, 5 Feb 2026 11:08:38 +0000 Subject: [PATCH 16/17] Fix Alembic migration head conflict Update down_revision to chain after 018e16dad6aa (BIGINT id column) instead of the shared parent efbbe5d5862f, resolving the multiple heads error. Co-Authored-By: Claude Opus 4.5 --- web/migrations/versions/add_tools_ai_perm_.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/migrations/versions/add_tools_ai_perm_.py b/web/migrations/versions/add_tools_ai_perm_.py index 41d4134dc83..380ee0d3fbb 100644 --- a/web/migrations/versions/add_tools_ai_perm_.py +++ b/web/migrations/versions/add_tools_ai_perm_.py @@ -10,7 +10,7 @@ """Add tools_ai permission to existing roles Revision ID: add_tools_ai_perm -Revises: efbbe5d5862f +Revises: 018e16dad6aa Create Date: 2025-12-01 """ @@ -19,7 +19,7 @@ # revision identifiers, used by Alembic. revision = 'add_tools_ai_perm' -down_revision = 'efbbe5d5862f' +down_revision = '018e16dad6aa' branch_labels = None depends_on = None From 3901425764d600791cd826e1a4f89bf64a0e1414 Mon Sep 17 00:00:00 2001 From: Dave Page Date: Tue, 10 Feb 2026 12:26:22 +0000 Subject: [PATCH 17/17] Fix feature test failures caused by AI preferences category The new "AI" preference category sorts alphabetically before "Browser", changing the default selection in the Preferences dialog. Tests that waited for the "Show system objects?" label (only visible under "Browser > Display") now wait for the preference tree container instead. Co-Authored-By: Claude Opus 4.6 --- web/regression/feature_tests/keyboard_shortcut_test.py | 4 ++-- .../feature_tests/pg_utilities_backup_restore_test.py | 6 +++--- web/regression/feature_tests/test_copy_sql_to_query_tool.py | 4 ++-- web/regression/feature_utils/locators.py | 2 ++ 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/web/regression/feature_tests/keyboard_shortcut_test.py b/web/regression/feature_tests/keyboard_shortcut_test.py index 5a418f4cbbc..32058cf8751 100644 --- a/web/regression/feature_tests/keyboard_shortcut_test.py +++ b/web/regression/feature_tests/keyboard_shortcut_test.py @@ -94,10 +94,10 @@ def _update_preferences(self): self.page.click_tab("Preferences") # Wait till the preference dialogue box is displayed by checking the - # visibility of Show System Object label + # visibility of the preference tree wait.until(EC.presence_of_element_located( (By.XPATH, - PreferencesLocaltors.show_system_objects_pref_label_xpath)) + PreferencesLocaltors.tree_container_xpath)) ) keyboard_node = self.page.find_by_xpath( diff --git a/web/regression/feature_tests/pg_utilities_backup_restore_test.py b/web/regression/feature_tests/pg_utilities_backup_restore_test.py index e3fe9e7a4b4..3fe88b214d0 100644 --- a/web/regression/feature_tests/pg_utilities_backup_restore_test.py +++ b/web/regression/feature_tests/pg_utilities_backup_restore_test.py @@ -258,10 +258,10 @@ def _update_preferences(self): self.page.click_tab("Preferences") # Wait till the preference dialogue box is displayed by checking the - # visibility of Show System Object label + # visibility of the preference tree wait.until(EC.presence_of_element_located( - (By.XPATH, PreferencesLocaltors. - show_system_objects_pref_label_xpath)) + (By.XPATH, + PreferencesLocaltors.tree_container_xpath)) ) binary_path = self.page.find_by_xpath( diff --git a/web/regression/feature_tests/test_copy_sql_to_query_tool.py b/web/regression/feature_tests/test_copy_sql_to_query_tool.py index 96a760fde15..e2759531948 100644 --- a/web/regression/feature_tests/test_copy_sql_to_query_tool.py +++ b/web/regression/feature_tests/test_copy_sql_to_query_tool.py @@ -105,10 +105,10 @@ def _update_preferences_setting(self): self.page.click_tab("Preferences") # Wait till the preference dialogue box is displayed by checking the - # visibility of Show System Object label + # visibility of the preference tree wait.until(EC.presence_of_element_located( (By.XPATH, - PreferencesLocaltors.show_system_objects_pref_label_xpath)) + PreferencesLocaltors.tree_container_xpath)) ) option_node = self.page.find_by_xpath( diff --git a/web/regression/feature_utils/locators.py b/web/regression/feature_utils/locators.py index f1863d60453..a7195122eff 100644 --- a/web/regression/feature_utils/locators.py +++ b/web/regression/feature_utils/locators.py @@ -116,6 +116,8 @@ class PreferencesLocaltors: show_system_objects_pref_label_xpath = \ "//label[contains(text(), 'Show system objects?')]" + tree_container_xpath = "//*[@id='treeContainer']" + specified_preference_tree_node_xpath = \ ("//*[@id='treeContainer']//div[contains(@class,'PgTree-nodeLabel')]" "[text()='{0}']")