MindsDB 25.5.3.0__py3-none-any.whl → 25.5.4.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of MindsDB might be problematic. Click here for more details.
- mindsdb/__about__.py +8 -8
- mindsdb/__main__.py +127 -79
- mindsdb/api/a2a/__init__.py +0 -0
- mindsdb/api/a2a/__main__.py +144 -0
- mindsdb/api/a2a/agent.py +308 -0
- mindsdb/api/a2a/common/__init__.py +0 -0
- mindsdb/api/a2a/common/server/__init__.py +4 -0
- mindsdb/api/a2a/common/server/server.py +164 -0
- mindsdb/api/a2a/common/server/task_manager.py +287 -0
- mindsdb/api/a2a/common/server/utils.py +28 -0
- mindsdb/api/a2a/common/types.py +365 -0
- mindsdb/api/a2a/constants.py +9 -0
- mindsdb/api/a2a/run_a2a.py +86 -0
- mindsdb/api/a2a/task_manager.py +560 -0
- mindsdb/api/executor/command_executor.py +185 -309
- mindsdb/api/executor/datahub/classes/response.py +5 -2
- mindsdb/api/executor/datahub/datanodes/integration_datanode.py +39 -72
- mindsdb/api/executor/planner/query_planner.py +10 -1
- mindsdb/api/executor/sql_query/result_set.py +185 -52
- mindsdb/api/executor/sql_query/sql_query.py +1 -1
- mindsdb/api/executor/sql_query/steps/apply_predictor_step.py +9 -12
- mindsdb/api/executor/sql_query/steps/fetch_dataframe.py +8 -10
- mindsdb/api/executor/sql_query/steps/fetch_dataframe_partition.py +5 -44
- mindsdb/api/executor/sql_query/steps/insert_step.py +24 -15
- mindsdb/api/executor/sql_query/steps/join_step.py +1 -1
- mindsdb/api/executor/sql_query/steps/project_step.py +1 -1
- mindsdb/api/executor/sql_query/steps/sql_steps.py +1 -1
- mindsdb/api/executor/sql_query/steps/subselect_step.py +4 -8
- mindsdb/api/executor/sql_query/steps/union_step.py +1 -3
- mindsdb/api/http/initialize.py +99 -83
- mindsdb/api/http/namespaces/analysis.py +3 -3
- mindsdb/api/http/namespaces/config.py +61 -86
- mindsdb/api/http/namespaces/file.py +8 -2
- mindsdb/api/http/namespaces/sql.py +13 -27
- mindsdb/api/mcp/start.py +42 -5
- mindsdb/api/mysql/mysql_proxy/data_types/mysql_packet.py +0 -1
- mindsdb/api/mysql/mysql_proxy/data_types/mysql_packets/binary_resultset_row_package.py +52 -19
- mindsdb/api/mysql/mysql_proxy/executor/mysql_executor.py +8 -10
- mindsdb/api/mysql/mysql_proxy/libs/constants/mysql.py +54 -38
- mindsdb/api/mysql/mysql_proxy/mysql_proxy.py +82 -115
- mindsdb/api/mysql/mysql_proxy/utilities/dump.py +351 -0
- mindsdb/api/postgres/postgres_proxy/executor/executor.py +1 -1
- mindsdb/api/postgres/postgres_proxy/postgres_proxy.py +5 -6
- mindsdb/integrations/handlers/altibase_handler/altibase_handler.py +26 -27
- mindsdb/integrations/handlers/altibase_handler/connection_args.py +13 -13
- mindsdb/integrations/handlers/altibase_handler/tests/test_altibase_handler.py +8 -8
- mindsdb/integrations/handlers/altibase_handler/tests/test_altibase_handler_dsn.py +13 -13
- mindsdb/integrations/handlers/anthropic_handler/__init__.py +2 -2
- mindsdb/integrations/handlers/anthropic_handler/anthropic_handler.py +1 -3
- mindsdb/integrations/handlers/aurora_handler/aurora_handler.py +1 -0
- mindsdb/integrations/handlers/autosklearn_handler/autosklearn_handler.py +1 -1
- mindsdb/integrations/handlers/autosklearn_handler/config.py +0 -1
- mindsdb/integrations/handlers/bigquery_handler/bigquery_handler.py +1 -1
- mindsdb/integrations/handlers/bigquery_handler/tests/test_bigquery_handler.py +1 -1
- mindsdb/integrations/handlers/binance_handler/binance_handler.py +1 -0
- mindsdb/integrations/handlers/binance_handler/binance_tables.py +3 -4
- mindsdb/integrations/handlers/byom_handler/__init__.py +0 -1
- mindsdb/integrations/handlers/byom_handler/requirements.txt +1 -2
- mindsdb/integrations/handlers/ckan_handler/ckan_handler.py +3 -0
- mindsdb/integrations/handlers/clickhouse_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/cloud_spanner_handler/tests/test_cloud_spanner_handler.py +0 -2
- mindsdb/integrations/handlers/cloud_sql_handler/cloud_sql_handler.py +0 -1
- mindsdb/integrations/handlers/cohere_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/cohere_handler/cohere_handler.py +11 -13
- mindsdb/integrations/handlers/confluence_handler/confluence_tables.py +6 -0
- mindsdb/integrations/handlers/databend_handler/connection_args.py +1 -1
- mindsdb/integrations/handlers/databend_handler/databend_handler.py +4 -4
- mindsdb/integrations/handlers/databend_handler/tests/__init__.py +0 -1
- mindsdb/integrations/handlers/databend_handler/tests/test_databend_handler.py +1 -1
- mindsdb/integrations/handlers/derby_handler/connection_args.py +1 -1
- mindsdb/integrations/handlers/derby_handler/derby_handler.py +14 -22
- mindsdb/integrations/handlers/derby_handler/tests/test_derby_handler.py +6 -6
- mindsdb/integrations/handlers/discord_handler/discord_handler.py +5 -5
- mindsdb/integrations/handlers/discord_handler/discord_tables.py +3 -3
- mindsdb/integrations/handlers/discord_handler/tests/test_discord.py +5 -3
- mindsdb/integrations/handlers/dockerhub_handler/dockerhub.py +3 -3
- mindsdb/integrations/handlers/dockerhub_handler/dockerhub_handler.py +2 -2
- mindsdb/integrations/handlers/dockerhub_handler/dockerhub_tables.py +57 -54
- mindsdb/integrations/handlers/dremio_handler/__init__.py +2 -2
- mindsdb/integrations/handlers/druid_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/druid_handler/druid_handler.py +2 -2
- mindsdb/integrations/handlers/edgelessdb_handler/tests/test_edgelessdb_handler.py +9 -9
- mindsdb/integrations/handlers/email_handler/email_client.py +1 -1
- mindsdb/integrations/handlers/email_handler/email_ingestor.py +1 -1
- mindsdb/integrations/handlers/email_handler/email_tables.py +0 -1
- mindsdb/integrations/handlers/email_handler/settings.py +0 -1
- mindsdb/integrations/handlers/eventstoredb_handler/eventstoredb_handler.py +2 -1
- mindsdb/integrations/handlers/firebird_handler/firebird_handler.py +1 -1
- mindsdb/integrations/handlers/flaml_handler/flaml_handler.py +9 -9
- mindsdb/integrations/handlers/frappe_handler/frappe_client.py +5 -5
- mindsdb/integrations/handlers/frappe_handler/frappe_handler.py +6 -5
- mindsdb/integrations/handlers/frappe_handler/frappe_tables.py +2 -2
- mindsdb/integrations/handlers/github_handler/connection_args.py +2 -2
- mindsdb/integrations/handlers/github_handler/github_handler.py +1 -8
- mindsdb/integrations/handlers/github_handler/github_tables.py +13 -24
- mindsdb/integrations/handlers/gitlab_handler/gitlab_handler.py +2 -1
- mindsdb/integrations/handlers/gitlab_handler/gitlab_tables.py +1 -4
- mindsdb/integrations/handlers/gmail_handler/gmail_handler.py +6 -13
- mindsdb/integrations/handlers/google_books_handler/google_books_handler.py +2 -1
- mindsdb/integrations/handlers/google_books_handler/google_books_tables.py +0 -3
- mindsdb/integrations/handlers/google_calendar_handler/google_calendar_handler.py +4 -4
- mindsdb/integrations/handlers/google_calendar_handler/google_calendar_tables.py +2 -6
- mindsdb/integrations/handlers/google_content_shopping_handler/google_content_shopping_handler.py +3 -2
- mindsdb/integrations/handlers/google_content_shopping_handler/google_content_shopping_tables.py +0 -3
- mindsdb/integrations/handlers/google_fit_handler/google_fit_handler.py +10 -12
- mindsdb/integrations/handlers/google_fit_handler/google_fit_tables.py +11 -13
- mindsdb/integrations/handlers/google_search_handler/google_search_handler.py +2 -1
- mindsdb/integrations/handlers/google_search_handler/google_search_tables.py +0 -3
- mindsdb/integrations/handlers/groq_handler/__init__.py +3 -3
- mindsdb/integrations/handlers/hackernews_handler/hn_handler.py +5 -7
- mindsdb/integrations/handlers/hackernews_handler/hn_table.py +6 -7
- mindsdb/integrations/handlers/hive_handler/tests/test_hive_handler.py +1 -1
- mindsdb/integrations/handlers/hsqldb_handler/connection_args.py +6 -6
- mindsdb/integrations/handlers/hsqldb_handler/hsqldb_handler.py +4 -3
- mindsdb/integrations/handlers/huggingface_api_handler/exceptions.py +1 -1
- mindsdb/integrations/handlers/huggingface_api_handler/huggingface_api_handler.py +1 -8
- mindsdb/integrations/handlers/huggingface_handler/huggingface_handler.py +6 -6
- mindsdb/integrations/handlers/huggingface_handler/requirements.txt +1 -1
- mindsdb/integrations/handlers/huggingface_handler/requirements_cpu.txt +1 -1
- mindsdb/integrations/handlers/ignite_handler/ignite_handler.py +2 -1
- mindsdb/integrations/handlers/impala_handler/impala_handler.py +9 -12
- mindsdb/integrations/handlers/impala_handler/tests/test_impala_handler.py +11 -11
- mindsdb/integrations/handlers/influxdb_handler/influxdb_handler.py +10 -13
- mindsdb/integrations/handlers/influxdb_handler/influxdb_tables.py +20 -20
- mindsdb/integrations/handlers/informix_handler/__about__.py +8 -8
- mindsdb/integrations/handlers/informix_handler/__init__.py +12 -5
- mindsdb/integrations/handlers/informix_handler/informix_handler.py +99 -133
- mindsdb/integrations/handlers/informix_handler/tests/test_informix_handler.py +13 -11
- mindsdb/integrations/handlers/ingres_handler/__about__.py +0 -1
- mindsdb/integrations/handlers/ingres_handler/ingres_handler.py +1 -0
- mindsdb/integrations/handlers/jira_handler/jira_handler.py +4 -4
- mindsdb/integrations/handlers/jira_handler/jira_tables.py +9 -9
- mindsdb/integrations/handlers/kinetica_handler/__init__.py +0 -1
- mindsdb/integrations/handlers/lancedb_handler/requirements.txt +0 -1
- mindsdb/integrations/handlers/langchain_handler/langchain_handler.py +4 -4
- mindsdb/integrations/handlers/langchain_handler/tools.py +9 -10
- mindsdb/integrations/handlers/leonardoai_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/lightwood_handler/functions.py +2 -2
- mindsdb/integrations/handlers/lightwood_handler/lightwood_handler.py +0 -1
- mindsdb/integrations/handlers/lightwood_handler/tests/test_lightwood_handler.py +11 -11
- mindsdb/integrations/handlers/litellm_handler/litellm_handler.py +37 -20
- mindsdb/integrations/handlers/llama_index_handler/llama_index_handler.py +4 -4
- mindsdb/integrations/handlers/llama_index_handler/settings.py +10 -9
- mindsdb/integrations/handlers/materialize_handler/tests/test_materialize_handler.py +8 -10
- mindsdb/integrations/handlers/matrixone_handler/matrixone_handler.py +4 -4
- mindsdb/integrations/handlers/matrixone_handler/tests/test_matrixone_handler.py +8 -9
- mindsdb/integrations/handlers/maxdb_handler/connection_args.py +25 -25
- mindsdb/integrations/handlers/maxdb_handler/maxdb_handler.py +1 -0
- mindsdb/integrations/handlers/mediawiki_handler/mediawiki_handler.py +3 -2
- mindsdb/integrations/handlers/mediawiki_handler/mediawiki_tables.py +1 -1
- mindsdb/integrations/handlers/mendeley_handler/__about__.py +1 -1
- mindsdb/integrations/handlers/mendeley_handler/__init__.py +2 -2
- mindsdb/integrations/handlers/mendeley_handler/mendeley_handler.py +48 -56
- mindsdb/integrations/handlers/mendeley_handler/mendeley_tables.py +24 -29
- mindsdb/integrations/handlers/mendeley_handler/tests/test_mendeley_handler.py +19 -17
- mindsdb/integrations/handlers/merlion_handler/merlion_handler.py +5 -4
- mindsdb/integrations/handlers/minds_endpoint_handler/__init__.py +3 -3
- mindsdb/integrations/handlers/mlflow_handler/mlflow_handler.py +58 -36
- mindsdb/integrations/handlers/monetdb_handler/__about__.py +8 -8
- mindsdb/integrations/handlers/monetdb_handler/__init__.py +15 -5
- mindsdb/integrations/handlers/monetdb_handler/connection_args.py +17 -18
- mindsdb/integrations/handlers/monetdb_handler/monetdb_handler.py +40 -57
- mindsdb/integrations/handlers/monetdb_handler/tests/test_monetdb_handler.py +7 -8
- mindsdb/integrations/handlers/monetdb_handler/utils/monet_get_id.py +13 -14
- mindsdb/integrations/handlers/monkeylearn_handler/__about__.py +1 -1
- mindsdb/integrations/handlers/monkeylearn_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/monkeylearn_handler/monkeylearn_handler.py +2 -5
- mindsdb/integrations/handlers/ms_one_drive_handler/ms_graph_api_one_drive_client.py +1 -0
- mindsdb/integrations/handlers/ms_one_drive_handler/ms_one_drive_handler.py +1 -1
- mindsdb/integrations/handlers/ms_teams_handler/ms_graph_api_teams_client.py +23 -23
- mindsdb/integrations/handlers/ms_teams_handler/ms_teams_handler.py +3 -3
- mindsdb/integrations/handlers/ms_teams_handler/ms_teams_tables.py +10 -5
- mindsdb/integrations/handlers/mssql_handler/mssql_handler.py +73 -8
- mindsdb/integrations/handlers/mysql_handler/__about__.py +8 -8
- mindsdb/integrations/handlers/mysql_handler/__init__.py +15 -5
- mindsdb/integrations/handlers/mysql_handler/connection_args.py +43 -47
- mindsdb/integrations/handlers/mysql_handler/mysql_handler.py +101 -34
- mindsdb/integrations/handlers/mysql_handler/settings.py +15 -13
- mindsdb/integrations/handlers/neuralforecast_handler/neuralforecast_handler.py +1 -1
- mindsdb/integrations/handlers/newsapi_handler/newsapi_handler.py +1 -1
- mindsdb/integrations/handlers/newsapi_handler/tests/test_newsapi_handler.py +4 -4
- mindsdb/integrations/handlers/nuo_jdbc_handler/connection_args.py +2 -2
- mindsdb/integrations/handlers/nuo_jdbc_handler/nuo_jdbc_handler.py +28 -36
- mindsdb/integrations/handlers/nuo_jdbc_handler/tests/test_nuo_handler.py +5 -5
- mindsdb/integrations/handlers/oceanbase_handler/oceanbase_handler.py +0 -1
- mindsdb/integrations/handlers/oceanbase_handler/tests/test_oceanbase_handler.py +8 -10
- mindsdb/integrations/handlers/ollama_handler/ollama_handler.py +3 -3
- mindsdb/integrations/handlers/opengauss_handler/tests/test_opengauss_handler.py +1 -2
- mindsdb/integrations/handlers/openstreetmap_handler/__init__.py +7 -7
- mindsdb/integrations/handlers/oracle_handler/connection_args.py +6 -0
- mindsdb/integrations/handlers/oracle_handler/oracle_handler.py +77 -11
- mindsdb/integrations/handlers/orioledb_handler/tests/test_orioledb_handler.py +8 -10
- mindsdb/integrations/handlers/palm_handler/__about__.py +1 -1
- mindsdb/integrations/handlers/palm_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/palm_handler/palm_handler.py +1 -3
- mindsdb/integrations/handlers/paypal_handler/paypal_handler.py +2 -2
- mindsdb/integrations/handlers/paypal_handler/paypal_tables.py +15 -14
- mindsdb/integrations/handlers/pgvector_handler/pgvector_handler.py +53 -10
- mindsdb/integrations/handlers/phoenix_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/phoenix_handler/phoenix_handler.py +1 -0
- mindsdb/integrations/handlers/pinot_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/pinot_handler/pinot_handler.py +3 -2
- mindsdb/integrations/handlers/plaid_handler/plaid_handler.py +13 -13
- mindsdb/integrations/handlers/plaid_handler/plaid_tables.py +10 -12
- mindsdb/integrations/handlers/plaid_handler/utils.py +4 -6
- mindsdb/integrations/handlers/planetscale_handler/planetscale_handler.py +1 -4
- mindsdb/integrations/handlers/portkey_handler/__init__.py +2 -2
- mindsdb/integrations/handlers/postgres_handler/postgres_handler.py +105 -24
- mindsdb/integrations/handlers/postgres_handler/tests/test_postgres_handler.py +11 -6
- mindsdb/integrations/handlers/questdb_handler/questdb_handler.py +1 -2
- mindsdb/integrations/handlers/questdb_handler/tests/test_questdb_handler.py +2 -3
- mindsdb/integrations/handlers/quickbooks_handler/quickbooks_handler.py +6 -8
- mindsdb/integrations/handlers/quickbooks_handler/quickbooks_table.py +10 -10
- mindsdb/integrations/handlers/rag_handler/ingest.py +2 -2
- mindsdb/integrations/handlers/rag_handler/rag_handler.py +1 -1
- mindsdb/integrations/handlers/rag_handler/settings.py +1 -1
- mindsdb/integrations/handlers/reddit_handler/reddit_handler.py +2 -7
- mindsdb/integrations/handlers/reddit_handler/reddit_tables.py +2 -3
- mindsdb/integrations/handlers/replicate_handler/replicate_handler.py +6 -6
- mindsdb/integrations/handlers/rocket_chat_handler/rocket_chat_handler.py +1 -2
- mindsdb/integrations/handlers/rocket_chat_handler/rocket_chat_tables.py +0 -3
- mindsdb/integrations/handlers/rockset_handler/connection_args.py +14 -14
- mindsdb/integrations/handlers/rockset_handler/tests/test_rockset_handler.py +1 -0
- mindsdb/integrations/handlers/scylla_handler/scylla_handler.py +6 -5
- mindsdb/integrations/handlers/sendinblue_handler/sendinblue_handler.py +2 -1
- mindsdb/integrations/handlers/sendinblue_handler/sendinblue_tables.py +16 -16
- mindsdb/integrations/handlers/sentence_transformers_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/sheets_handler/connection_args.py +1 -1
- mindsdb/integrations/handlers/shopify_handler/shopify_handler.py +7 -6
- mindsdb/integrations/handlers/shopify_handler/shopify_tables.py +38 -41
- mindsdb/integrations/handlers/singlestore_handler/__about__.py +1 -1
- mindsdb/integrations/handlers/singlestore_handler/__init__.py +0 -1
- mindsdb/integrations/handlers/singlestore_handler/singlestore_handler.py +1 -0
- mindsdb/integrations/handlers/singlestore_handler/tests/test_singlestore_handler.py +3 -3
- mindsdb/integrations/handlers/slack_handler/__init__.py +3 -3
- mindsdb/integrations/handlers/snowflake_handler/snowflake_handler.py +100 -6
- mindsdb/integrations/handlers/solr_handler/connection_args.py +7 -7
- mindsdb/integrations/handlers/solr_handler/solr_handler.py +2 -1
- mindsdb/integrations/handlers/solr_handler/tests/test_solr_handler.py +2 -1
- mindsdb/integrations/handlers/sqlany_handler/sqlany_handler.py +3 -2
- mindsdb/integrations/handlers/sqlite_handler/sqlite_handler.py +1 -0
- mindsdb/integrations/handlers/sqreamdb_handler/connection_args.py +1 -1
- mindsdb/integrations/handlers/sqreamdb_handler/sqreamdb_handler.py +15 -20
- mindsdb/integrations/handlers/sqreamdb_handler/tests/test_sqreamdb_handler.py +4 -4
- mindsdb/integrations/handlers/stabilityai_handler/__init__.py +1 -1
- mindsdb/integrations/handlers/starrocks_handler/starrocks_handler.py +0 -1
- mindsdb/integrations/handlers/starrocks_handler/tests/test_starrocks_handler.py +8 -10
- mindsdb/integrations/handlers/statsforecast_handler/statsforecast_handler.py +2 -2
- mindsdb/integrations/handlers/strava_handler/strava_handler.py +4 -8
- mindsdb/integrations/handlers/strava_handler/strava_tables.py +22 -30
- mindsdb/integrations/handlers/stripe_handler/stripe_handler.py +3 -2
- mindsdb/integrations/handlers/stripe_handler/stripe_tables.py +11 -27
- mindsdb/integrations/handlers/supabase_handler/tests/test_supabase_handler.py +1 -1
- mindsdb/integrations/handlers/surrealdb_handler/surrealdb_handler.py +4 -4
- mindsdb/integrations/handlers/tdengine_handler/tdengine_handler.py +25 -27
- mindsdb/integrations/handlers/tdengine_handler/tests/test_tdengine_handler.py +8 -8
- mindsdb/integrations/handlers/tidb_handler/tests/test_tidb_handler.py +1 -2
- mindsdb/integrations/handlers/timegpt_handler/timegpt_handler.py +5 -5
- mindsdb/integrations/handlers/tpot_handler/tpot_handler.py +21 -26
- mindsdb/integrations/handlers/trino_handler/trino_handler.py +14 -14
- mindsdb/integrations/handlers/twitter_handler/twitter_handler.py +2 -4
- mindsdb/integrations/handlers/unify_handler/tests/test_unify_handler.py +7 -8
- mindsdb/integrations/handlers/unify_handler/unify_handler.py +9 -9
- mindsdb/integrations/handlers/vertex_handler/vertex_client.py +1 -1
- mindsdb/integrations/handlers/vertica_handler/tests/test_vertica_handler.py +11 -11
- mindsdb/integrations/handlers/vertica_handler/vertica_handler.py +11 -14
- mindsdb/integrations/handlers/vitess_handler/tests/test_vitess_handler.py +9 -11
- mindsdb/integrations/handlers/vitess_handler/vitess_handler.py +0 -1
- mindsdb/integrations/handlers/web_handler/web_handler.py +1 -0
- mindsdb/integrations/handlers/whatsapp_handler/__init__.py +3 -3
- mindsdb/integrations/handlers/writer_handler/evaluate.py +1 -1
- mindsdb/integrations/handlers/writer_handler/settings.py +0 -1
- mindsdb/integrations/handlers/writer_handler/writer_handler.py +1 -0
- mindsdb/integrations/handlers/youtube_handler/youtube_handler.py +5 -5
- mindsdb/integrations/handlers/youtube_handler/youtube_tables.py +26 -27
- mindsdb/integrations/handlers/yugabyte_handler/tests/test_yugabyte_handler.py +3 -3
- mindsdb/integrations/handlers/yugabyte_handler/yugabyte_handler.py +0 -6
- mindsdb/integrations/libs/llm/config.py +13 -0
- mindsdb/integrations/libs/llm/utils.py +37 -65
- mindsdb/integrations/libs/response.py +67 -52
- mindsdb/integrations/libs/vectordatabase_handler.py +6 -0
- mindsdb/integrations/utilities/handler_utils.py +15 -3
- mindsdb/integrations/utilities/handlers/api_utilities/__init__.py +0 -1
- mindsdb/integrations/utilities/handlers/auth_utilities/__init__.py +0 -2
- mindsdb/integrations/utilities/rag/rerankers/base_reranker.py +230 -227
- mindsdb/integrations/utilities/utils.py +3 -3
- mindsdb/interfaces/agents/agents_controller.py +164 -1
- mindsdb/interfaces/agents/constants.py +32 -13
- mindsdb/interfaces/agents/langchain_agent.py +106 -95
- mindsdb/interfaces/agents/mindsdb_database_agent.py +101 -2
- mindsdb/interfaces/knowledge_base/controller.py +250 -216
- mindsdb/interfaces/knowledge_base/preprocessing/document_preprocessor.py +13 -10
- mindsdb/interfaces/knowledge_base/preprocessing/json_chunker.py +434 -0
- mindsdb/interfaces/knowledge_base/preprocessing/models.py +54 -0
- mindsdb/interfaces/query_context/context_controller.py +66 -10
- mindsdb/interfaces/skills/custom/text2sql/mindsdb_kb_tools.py +190 -0
- mindsdb/interfaces/skills/custom/text2sql/mindsdb_sql_toolkit.py +92 -0
- mindsdb/interfaces/skills/skill_tool.py +202 -57
- mindsdb/interfaces/skills/sql_agent.py +205 -17
- mindsdb/interfaces/storage/fs.py +1 -0
- mindsdb/interfaces/variables/__init__.py +0 -0
- mindsdb/interfaces/variables/variables_controller.py +97 -0
- mindsdb/migrations/env.py +5 -7
- mindsdb/migrations/migrate.py +47 -7
- mindsdb/migrations/versions/2025-05-21_9f150e4f9a05_checkpoint_1.py +360 -0
- mindsdb/utilities/config.py +287 -216
- mindsdb/utilities/starters.py +13 -0
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.1.dist-info}/METADATA +646 -698
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.1.dist-info}/RECORD +312 -295
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.1.dist-info}/WHEEL +1 -1
- mindsdb/integrations/handlers/monkeylearn_handler/requirements.txt +0 -1
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.1.dist-info}/licenses/LICENSE +0 -0
- {mindsdb-25.5.3.0.dist-info → mindsdb-25.5.4.1.dist-info}/top_level.txt +0 -0
|
@@ -19,9 +19,10 @@ from mindsdb.utilities.exception import EntityExistsError, EntityNotExistsError
|
|
|
19
19
|
from .constants import ASSISTANT_COLUMN, SUPPORTED_PROVIDERS, PROVIDER_TO_MODELS
|
|
20
20
|
from .langchain_agent import get_llm_provider
|
|
21
21
|
|
|
22
|
-
|
|
23
22
|
default_project = config.get('default_project')
|
|
24
23
|
|
|
24
|
+
DEFAULT_TEXT2SQL_DATABASE = 'mindsdb'
|
|
25
|
+
|
|
25
26
|
|
|
26
27
|
class AgentsController:
|
|
27
28
|
'''Handles CRUD operations at the database level for Agents'''
|
|
@@ -158,6 +159,13 @@ class AgentsController:
|
|
|
158
159
|
with one of keys is "name", and other is additional parameters for relationship agent<>skill
|
|
159
160
|
provider (str): The provider of the model
|
|
160
161
|
params (Dict[str, str]): Parameters to use when running the agent
|
|
162
|
+
database: The database to use for text2sql skills (default is 'mindsdb')
|
|
163
|
+
knowledge_base_database: The database to use for knowledge base queries (default is 'mindsdb')
|
|
164
|
+
include_tables: List of tables to include for text2sql skills
|
|
165
|
+
ignore_tables: List of tables to ignore for text2sql skills
|
|
166
|
+
include_knowledge_bases: List of knowledge bases to include for text2sql skills
|
|
167
|
+
ignore_knowledge_bases: List of knowledge bases to ignore for text2sql skills
|
|
168
|
+
<provider>_api_key: API key for the provider (e.g., openai_api_key)
|
|
161
169
|
|
|
162
170
|
Returns:
|
|
163
171
|
agent (db.Agents): The created agent
|
|
@@ -176,6 +184,128 @@ class AgentsController:
|
|
|
176
184
|
|
|
177
185
|
_, provider = self.check_model_provider(model_name, provider)
|
|
178
186
|
|
|
187
|
+
# Extract API key if provided in the format <provider>_api_key
|
|
188
|
+
provider_api_key_param = f"{provider.lower()}_api_key"
|
|
189
|
+
if provider_api_key_param in params:
|
|
190
|
+
# Keep the API key in params for the agent to use
|
|
191
|
+
# It will be picked up by get_api_key() in handler_utils.py
|
|
192
|
+
pass
|
|
193
|
+
|
|
194
|
+
# Extract table and knowledge base parameters from params
|
|
195
|
+
database = params.pop('database', None)
|
|
196
|
+
knowledge_base_database = params.pop('knowledge_base_database', DEFAULT_TEXT2SQL_DATABASE)
|
|
197
|
+
include_tables = params.pop('include_tables', None)
|
|
198
|
+
ignore_tables = params.pop('ignore_tables', None)
|
|
199
|
+
include_knowledge_bases = params.pop('include_knowledge_bases', None)
|
|
200
|
+
ignore_knowledge_bases = params.pop('ignore_knowledge_bases', None)
|
|
201
|
+
|
|
202
|
+
# Save the extracted parameters back to params for API responses only if they were explicitly provided
|
|
203
|
+
# or if they're needed for skills
|
|
204
|
+
need_params = include_tables or ignore_tables or include_knowledge_bases or ignore_knowledge_bases
|
|
205
|
+
|
|
206
|
+
if 'database' in params or need_params:
|
|
207
|
+
params['database'] = database
|
|
208
|
+
|
|
209
|
+
if 'knowledge_base_database' in params or include_knowledge_bases or ignore_knowledge_bases:
|
|
210
|
+
params['knowledge_base_database'] = knowledge_base_database
|
|
211
|
+
|
|
212
|
+
if include_tables is not None:
|
|
213
|
+
params['include_tables'] = include_tables
|
|
214
|
+
if ignore_tables is not None:
|
|
215
|
+
params['ignore_tables'] = ignore_tables
|
|
216
|
+
if include_knowledge_bases is not None:
|
|
217
|
+
params['include_knowledge_bases'] = include_knowledge_bases
|
|
218
|
+
if ignore_knowledge_bases is not None:
|
|
219
|
+
params['ignore_knowledge_bases'] = ignore_knowledge_bases
|
|
220
|
+
|
|
221
|
+
# Convert string parameters to lists if needed
|
|
222
|
+
if isinstance(include_tables, str):
|
|
223
|
+
include_tables = [t.strip() for t in include_tables.split(',')]
|
|
224
|
+
if isinstance(ignore_tables, str):
|
|
225
|
+
ignore_tables = [t.strip() for t in ignore_tables.split(',')]
|
|
226
|
+
if isinstance(include_knowledge_bases, str):
|
|
227
|
+
include_knowledge_bases = [kb.strip() for kb in include_knowledge_bases.split(',')]
|
|
228
|
+
if isinstance(ignore_knowledge_bases, str):
|
|
229
|
+
ignore_knowledge_bases = [kb.strip() for kb in ignore_knowledge_bases.split(',')]
|
|
230
|
+
|
|
231
|
+
# Auto-create SQL skill if no skills are provided but include_tables or include_knowledge_bases params are provided
|
|
232
|
+
if not skills and (include_tables or include_knowledge_bases):
|
|
233
|
+
# Determine database to use (default to 'mindsdb')
|
|
234
|
+
db_name = database
|
|
235
|
+
kb_db_name = knowledge_base_database
|
|
236
|
+
|
|
237
|
+
# If database is not explicitly provided but tables are, try to extract the database name from the first table
|
|
238
|
+
if not database and include_tables and len(include_tables) > 0:
|
|
239
|
+
parts = include_tables[0].split('.')
|
|
240
|
+
if len(parts) >= 2:
|
|
241
|
+
db_name = parts[0]
|
|
242
|
+
elif not database and ignore_tables and len(ignore_tables) > 0:
|
|
243
|
+
parts = ignore_tables[0].split('.')
|
|
244
|
+
if len(parts) >= 2:
|
|
245
|
+
db_name = parts[0]
|
|
246
|
+
|
|
247
|
+
# Create a default SQL skill
|
|
248
|
+
skill_name = f"{name}_sql_skill"
|
|
249
|
+
skill_params = {
|
|
250
|
+
'type': 'sql',
|
|
251
|
+
'database': db_name,
|
|
252
|
+
'description': f'Auto-generated SQL skill for agent {name}'
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
# Add knowledge base database if provided
|
|
256
|
+
if knowledge_base_database:
|
|
257
|
+
skill_params['knowledge_base_database'] = knowledge_base_database
|
|
258
|
+
|
|
259
|
+
# Add knowledge base parameters if provided
|
|
260
|
+
if include_knowledge_bases:
|
|
261
|
+
skill_params['include_knowledge_bases'] = include_knowledge_bases
|
|
262
|
+
if ignore_knowledge_bases:
|
|
263
|
+
skill_params['ignore_knowledge_bases'] = ignore_knowledge_bases
|
|
264
|
+
|
|
265
|
+
try:
|
|
266
|
+
# Check if skill already exists
|
|
267
|
+
existing_skill = self.skills_controller.get_skill(skill_name, project_name)
|
|
268
|
+
if existing_skill is None:
|
|
269
|
+
# Create the skill
|
|
270
|
+
skill_type = skill_params.pop('type')
|
|
271
|
+
self.skills_controller.add_skill(
|
|
272
|
+
name=skill_name,
|
|
273
|
+
project_name=project_name,
|
|
274
|
+
type=skill_type,
|
|
275
|
+
params=skill_params
|
|
276
|
+
)
|
|
277
|
+
else:
|
|
278
|
+
# Update the skill if parameters have changed
|
|
279
|
+
params_changed = False
|
|
280
|
+
|
|
281
|
+
# Check if database has changed
|
|
282
|
+
if existing_skill.params.get('database') != db_name:
|
|
283
|
+
existing_skill.params['database'] = db_name
|
|
284
|
+
params_changed = True
|
|
285
|
+
|
|
286
|
+
# Check if knowledge base database has changed
|
|
287
|
+
if knowledge_base_database and existing_skill.params.get('knowledge_base_database') != kb_db_name:
|
|
288
|
+
existing_skill.params['knowledge_base_database'] = kb_db_name
|
|
289
|
+
params_changed = True
|
|
290
|
+
|
|
291
|
+
# Check if knowledge base parameters have changed
|
|
292
|
+
if include_knowledge_bases and existing_skill.params.get('include_knowledge_bases') != include_knowledge_bases:
|
|
293
|
+
existing_skill.params['include_knowledge_bases'] = include_knowledge_bases
|
|
294
|
+
params_changed = True
|
|
295
|
+
|
|
296
|
+
if ignore_knowledge_bases and existing_skill.params.get('ignore_knowledge_bases') != ignore_knowledge_bases:
|
|
297
|
+
existing_skill.params['ignore_knowledge_bases'] = ignore_knowledge_bases
|
|
298
|
+
params_changed = True
|
|
299
|
+
|
|
300
|
+
# Update the skill if needed
|
|
301
|
+
if params_changed:
|
|
302
|
+
flag_modified(existing_skill, 'params')
|
|
303
|
+
db.session.commit()
|
|
304
|
+
|
|
305
|
+
skills = [skill_name]
|
|
306
|
+
except Exception as e:
|
|
307
|
+
raise ValueError(f"Failed to auto-create or update SQL skill: {str(e)}")
|
|
308
|
+
|
|
179
309
|
agent = db.Agents(
|
|
180
310
|
name=name,
|
|
181
311
|
project_id=project.id,
|
|
@@ -193,10 +323,43 @@ class AgentsController:
|
|
|
193
323
|
else:
|
|
194
324
|
parameters = skill.copy()
|
|
195
325
|
skill_name = parameters.pop('name')
|
|
326
|
+
|
|
196
327
|
existing_skill = self.skills_controller.get_skill(skill_name, project_name)
|
|
197
328
|
if existing_skill is None:
|
|
198
329
|
db.session.rollback()
|
|
199
330
|
raise ValueError(f'Skill with name does not exist: {skill_name}')
|
|
331
|
+
|
|
332
|
+
# Add table restrictions if this is a text2sql skill
|
|
333
|
+
if existing_skill.type == 'sql' and (include_tables or ignore_tables):
|
|
334
|
+
parameters['tables'] = include_tables or ignore_tables
|
|
335
|
+
|
|
336
|
+
# Add knowledge base restrictions if this is a text2sql skill
|
|
337
|
+
if existing_skill.type == 'sql':
|
|
338
|
+
# Pass database parameter if provided
|
|
339
|
+
if database and 'database' not in parameters:
|
|
340
|
+
parameters['database'] = database
|
|
341
|
+
|
|
342
|
+
# Pass knowledge base database parameter if provided
|
|
343
|
+
if knowledge_base_database and 'knowledge_base_database' not in parameters:
|
|
344
|
+
parameters['knowledge_base_database'] = knowledge_base_database
|
|
345
|
+
|
|
346
|
+
# Add knowledge base parameters to both the skill and the association parameters
|
|
347
|
+
if include_knowledge_bases:
|
|
348
|
+
parameters['include_knowledge_bases'] = include_knowledge_bases
|
|
349
|
+
if 'include_knowledge_bases' not in existing_skill.params:
|
|
350
|
+
existing_skill.params['include_knowledge_bases'] = include_knowledge_bases
|
|
351
|
+
flag_modified(existing_skill, 'params')
|
|
352
|
+
elif ignore_knowledge_bases:
|
|
353
|
+
parameters['ignore_knowledge_bases'] = ignore_knowledge_bases
|
|
354
|
+
if 'ignore_knowledge_bases' not in existing_skill.params:
|
|
355
|
+
existing_skill.params['ignore_knowledge_bases'] = ignore_knowledge_bases
|
|
356
|
+
flag_modified(existing_skill, 'params')
|
|
357
|
+
|
|
358
|
+
# Ensure knowledge_base_database is set in the skill's params
|
|
359
|
+
if knowledge_base_database and 'knowledge_base_database' not in existing_skill.params:
|
|
360
|
+
existing_skill.params['knowledge_base_database'] = knowledge_base_database
|
|
361
|
+
flag_modified(existing_skill, 'params')
|
|
362
|
+
|
|
200
363
|
association = db.AgentSkillsAssociation(
|
|
201
364
|
parameters=parameters,
|
|
202
365
|
agent=agent,
|
|
@@ -8,16 +8,16 @@ from types import MappingProxyType
|
|
|
8
8
|
# the same as
|
|
9
9
|
# from mindsdb.integrations.handlers.openai_handler.constants import CHAT_MODELS
|
|
10
10
|
OPEN_AI_CHAT_MODELS = (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
"gpt-3.5-turbo",
|
|
12
|
+
"gpt-3.5-turbo-16k",
|
|
13
|
+
"gpt-3.5-turbo-instruct",
|
|
14
|
+
"gpt-4",
|
|
15
|
+
"gpt-4-32k",
|
|
16
|
+
"gpt-4-1106-preview",
|
|
17
|
+
"gpt-4-0125-preview",
|
|
18
|
+
"gpt-4o",
|
|
19
|
+
"o3-mini",
|
|
20
|
+
"o1-mini",
|
|
21
21
|
)
|
|
22
22
|
|
|
23
23
|
SUPPORTED_PROVIDERS = {
|
|
@@ -28,7 +28,8 @@ SUPPORTED_PROVIDERS = {
|
|
|
28
28
|
"ollama",
|
|
29
29
|
"nvidia_nim",
|
|
30
30
|
"vllm",
|
|
31
|
-
"google"
|
|
31
|
+
"google",
|
|
32
|
+
"writer",
|
|
32
33
|
}
|
|
33
34
|
# Chat models
|
|
34
35
|
ANTHROPIC_CHAT_MODELS = (
|
|
@@ -175,6 +176,8 @@ GOOGLE_GEMINI_CHAT_MODELS = (
|
|
|
175
176
|
"gemini-1.5-pro",
|
|
176
177
|
)
|
|
177
178
|
|
|
179
|
+
WRITER_CHAT_MODELS = ("palmyra-x5", "palmyra-x4")
|
|
180
|
+
|
|
178
181
|
# Define a read-only dictionary mapping providers to their models
|
|
179
182
|
PROVIDER_TO_MODELS = MappingProxyType(
|
|
180
183
|
{
|
|
@@ -183,6 +186,7 @@ PROVIDER_TO_MODELS = MappingProxyType(
|
|
|
183
186
|
"openai": OPEN_AI_CHAT_MODELS,
|
|
184
187
|
"nvidia_nim": NVIDIA_NIM_CHAT_MODELS,
|
|
185
188
|
"google": GOOGLE_GEMINI_CHAT_MODELS,
|
|
189
|
+
"writer": WRITER_CHAT_MODELS,
|
|
186
190
|
}
|
|
187
191
|
)
|
|
188
192
|
|
|
@@ -200,5 +204,20 @@ DEFAULT_TEMPERATURE = 0.0
|
|
|
200
204
|
USER_COLUMN = "question"
|
|
201
205
|
DEFAULT_EMBEDDINGS_MODEL_PROVIDER = "openai"
|
|
202
206
|
DEFAULT_EMBEDDINGS_MODEL_CLASS = OpenAIEmbeddings
|
|
203
|
-
DEFAULT_TIKTOKEN_MODEL_NAME = os.getenv(
|
|
204
|
-
AGENT_CHUNK_POLLING_INTERVAL_SECONDS = os.getenv(
|
|
207
|
+
DEFAULT_TIKTOKEN_MODEL_NAME = os.getenv("DEFAULT_TIKTOKEN_MODEL_NAME", "gpt-4")
|
|
208
|
+
AGENT_CHUNK_POLLING_INTERVAL_SECONDS = os.getenv("AGENT_CHUNK_POLLING_INTERVAL_SECONDS", 1.0)
|
|
209
|
+
DEFAULT_TEXT2SQL_DATABASE = "mindsdb"
|
|
210
|
+
DEFAULT_AGENT_SYSTEM_PROMPT = """
|
|
211
|
+
You are an AI assistant powered by MindsDB. When answering questions, follow these guidelines:
|
|
212
|
+
|
|
213
|
+
1. For factual questions about specific topics, use the knowledge base tools in this sequence:
|
|
214
|
+
- First use kb_list_tool to see available knowledge bases
|
|
215
|
+
- Then use kb_info_tool to understand the structure of relevant knowledge bases
|
|
216
|
+
- Finally use kb_query_tool to query the knowledge base for specific information
|
|
217
|
+
|
|
218
|
+
2. For questions about database tables and their contents:
|
|
219
|
+
- Use the sql_tool to query the tables directly
|
|
220
|
+
- You can join tables if needed to get comprehensive information
|
|
221
|
+
|
|
222
|
+
For factual questions, ALWAYS use the available tools to look up information rather than relying on your internal knowledge.
|
|
223
|
+
"""
|