Commit Graph
277 Commits
Author SHA1 Message Date
t8y2 ef426a8218 feat(redis): add Pub/Sub publish and subscribe with WebSocket real-time push 2026-06-15 01:40:06 +08:00
John Jin 1afc271c18 feat: add QuestDB support
Thanks @ptma!
2026-06-14 22:58:05 +08:00
Vergil Lai f385386284 feat(manticore): add Manticore Search support
Add Manticore Search table data editing, structure editing, metadata handling, and SQL completion support.
2026-06-14 16:01:02 +08:00
t8y2 cbc7f9b0db fix(gbase): support 8a and 8s profiles 2026-06-14 10:16:24 +08:00
Vergil Lai 799d20a2cf 添加 Manticore Search 支持 (#1145)
* 添加 Manticore Search 支持

* 更新 Manticore Search 文档
2026-06-13 20:23:36 +08:00
t8y2 30afcb8e69 fix(sidebar): page large table groups 2026-06-13 13:40:36 +08:00
t8y2 2d1d40f6ab feat(highgo): geometry/geography map preview via agent column_types 2026-06-13 10:25:12 +08:00
t8y2 6e57197072 fix(sqlite): recognize INTEGER PRIMARY KEY as autoincrement in data grid save 2026-06-13 02:30:30 +08:00
runstone 40f0f98540 Merge branch 'main' of https://github.com/Abeautifulsnow/dbx into feat/ai-agent-loop-phase1 2026-06-12 18:52:05 +08:00
t8y2 0fdff98200 fix(elasticsearch): route rest queries before sql parsing 2026-06-12 17:15:25 +08:00
polempandSam ef5ed05ae7 feat(schema-diff): professional DDL diff view with deployment-aware colors and custom themes (#1112)
Co-authored-by: Sam <14344444@@qq.com>
2026-06-12 17:14:05 +08:00
t8y2 2554ed95be fix(postgres): clear statement cache after ddl 2026-06-12 17:11:37 +08:00
t8y2 e6db09c638 feat(agent): support language-neutral driver launch 2026-06-12 15:08:31 +08:00
Abeautifulsnow 082e3bb4eb feat(ai): add agent tool calling loop 2026-06-12 13:18:36 +08:00
runstone 84a9fd6a0f Merge branch 'main' of https://github.com/Abeautifulsnow/dbx into feat/ai-agent-loop-phase1 2026-06-12 12:52:03 +08:00
t8y2 a858a6bd18 feat(mysql): edit foreign keys and triggers 2026-06-12 12:29:46 +08:00
t8y2 1d2d348dd8 fix(db): refresh stale native connection pools 2026-06-12 12:29:35 +08:00
runstone 453169ae45 Merge branch 'main' of https://github.com/Abeautifulsnow/dbx into feat/ai-agent-loop-phase1 2026-06-12 12:00:47 +08:00
runstone 61b5e907ce fix(schema): default to public schema for PG and database for MySQL when schema is empty
When the LLM calls `list_tables` tool without a `schema` parameter, the
  backend receives an empty string. This caused PostgreSQL and MySQL
  metadata queries to return no results because:

  - PostgreSQL: `WHERE n.nspname = ''` matches nothing
  - MySQL: `WHERE TABLE_SCHEMA = ''` matches nothing

  Fix by falling back to sensible defaults:
  - PostgreSQL `list_tables`/`get_columns`: empty schema → "public"
  - MySQL `list_tables`: empty schema → database name (MySQL schema == database)
2026-06-12 12:00:27 +08:00
t8y2 a4bd62005b feat(redis): add all search mode 2026-06-12 11:32:56 +08:00
t8y2 4fee45cf8d fix(db): update redis auth and mongo document refresh 2026-06-12 11:11:16 +08:00
runstone ef1697d8a8 restore ssh_tunnel.rs file 2026-06-12 08:53:54 +08:00
runstone 91f1206783 Merge branch 'main' of https://github.com/Abeautifulsnow/dbx into feat/ai-agent-loop-phase1 2026-06-12 08:48:50 +08:00
t8y2 51e2ef0d1f fix(postgres): support legacy routine metadata 2026-06-12 00:59:52 +08:00
haipengno1 7de0de2313 实现 Redis 的查询功能 2026-06-12 00:20:17 +08:00
t8y2 3f7987aa59 fix(table-data): load metadata before initial query 2026-06-11 23:19:45 +08:00
t8y2 9fbafa9a6d fix(elasticsearch): strip metadata fields from writes 2026-06-11 19:44:58 +08:00
t8y2 bd3585f057 fix: draw selected cell left border for first visible column in canvas mode 2026-06-11 19:35:08 +08:00
t8y2 7923f4915e fix(elasticsearch): apply document filters in browser 2026-06-11 18:56:38 +08:00
runstone 9ab41795d6 @
feat(ai): add agent loop with tool calling, fix connection routing and Gemini compatibility

## 背景说明
将 dbx AI 助手从单次 SQL 文本生成器升级为具备 tool calling 的数据库 Agent。
Phase 1 实现 Agent Loop 框架 + 只读工具(list_tables、get_columns)。
参考:Pi agent-core,.trellis/tasks/06-11-feat-ai-agent-loop-tool-calling-upgrade

## 修改内容
- 新增 agent_loop.rs:Agent Loop 核心,支持 OpenAI/Claude/Gemini Provider 的 tool calling,最大 10 轮,Ollama 自动降级为 text-only
- 新增 agent_tools.rs:read_only_tools (list_tables, get_columns) 的工具定义与执行器
- 新增 agent_events.rs:AgentEvent/ToolCall/ToolResult/ToolDefinition 类型定义
- 修改 ai.rs:AiMessage 新增 tool_call_id 字段
- 修改 lib.rs:注册 agent_events、agent_loop、agent_tools 模块
- 修改 routes/ai.rs & commands/ai.rs:新增 ai_agent_stream SSE 端点
- 修改 tauri.ts & http.ts:新增 AgentEvent 类型与 aiAgentStream 函数
- 修改 api.ts:注册 aiAgentStream 转发
- 修改 ai.ts:新增 runAgentStream,AiContext 增加 connectionId 字段
- 修改 AiAssistant.vue:接入 runAgentStream,解析 AgentEvent 渲染工具调用步骤
- 修改 en.ts / zh-CN.ts:新增 agentSteps 国际化文案

## 修复的问题
- [#I01] connectionName 误传为 connectionId → add connectionId to AiContext
- [#I02] agent loop 取消操作无效 → add cancel checks before each turn
- [#C01] TODO 缺少 issue 引用 → add PRD reference to TODO
- [#C02] stream_with_tools 命名不准确 → add clarifying doc comment
- [#C03] Gemini functionResponse.name 解析错误 → fix tool_call_id format and extraction

## 测试建议
- execute_get_columns:合法表名/空表名/SQL 注入字符拒绝
- call_openai_with_tools:空 choices/空 tool_calls/非 JSON arguments
- call_gemini_with_tools:空 candidates/parts 无 functionCall
- runAgentStream:有效 connectionId 正常调用
@
2026-06-11 18:27:24 +08:00
t8y2 edeee4f7d9 fix(mongo): preserve bson date fields 2026-06-11 18:09:41 +08:00
Doracoin c7c71850d4 fix(windows-build): ssh-agent err when building on windows 2026-06-11 17:29:40 +08:00
t8y2 c10d2d9586 refactor(mysql): extract temporal value serialization, fix DATE display 2026-06-11 14:12:05 +08:00
t8y2 521a3021c4 fix(clickhouse): load table index metadata 2026-06-11 12:23:28 +08:00
haipengno1 6265571182 feat(ssh): add ssh-agent authentication support (#1023)
Thanks for adding ssh-agent support, this is a great addition!
2026-06-11 00:39:30 +08:00
miracle 871fc57c52 [Enhance] add comments in SQL Server DDL output (#1017)
Thanks!
2026-06-10 22:49:42 +08:00
t8y2 20622bc762 fix: resolve clippy warnings and missing redis_key_separator field 2026-06-10 20:05:20 +08:00
t8y2 33ab7aeae6 refactor(schema): split metadata providers 2026-06-10 19:10:53 +08:00
t8y2 b6d92f8c38 feat: make duckdb optional behind duckdb-bundled feature 2026-06-10 18:30:14 +08:00
John Jin 0bd07ccf46 feat: add InfluxDB support (#980) 2026-06-10 14:37:53 +08:00
t8y2 dadcc348cb fix(ssh): handle invalid key comment encoding 2026-06-10 10:45:14 +08:00
t8y2 1be4c6afcc fix: resolve clippy, typecheck, and test failures in CI (#933) 2026-06-10 04:40:23 +08:00
t8y2 d08385e75f feat: add Turso/libSQL database support
Turso is a distributed SQLite database built on libSQL, offering HTTP-based
connectivity with auth token authentication. This change adds full support:

- New DatabaseType::Turso and PoolKind::Turso variants
- TursoClient driver using libSQL HTTP pipeline API (/v2/pipeline)
- Bearer token auth via password or url_params (auth_token=)
- Multi-statement batch pipeline for transactional integrity
- Standalone BEGIN/COMMIT/ROLLBACK treated as no-ops (pipeline is auto-commit)
- Full metadata support: tables, columns, indexes, foreign keys, triggers, DDL
- Frontend: connection form, SQL completion (SQLite syntax), capability sets
- Built-in databases (SQLite/Turso/DuckDB/RQLite/Access) placed first in selector
- Unit tests (15) + integration tests against live libsql-server (12)
- Single connection pool, skips TCP probe

Closes #948
2026-06-10 04:18:05 +08:00
DengQingNian 35692bc53b feat(redis): add TTL, structured entries, Stream and JSON support to create key dialog (#947)
Thanks @DengQingNian! Great feature — TTL, structured entries, Stream, and JSON support for Redis key creation.
2026-06-09 22:08:08 +08:00
t8y2 bc3c7c52ea fix(mysql): retry re-prepared statements with text protocol 2026-06-09 17:13:44 +08:00
John Jin 354d21d086 feat(grid): 列是否可排序 (#935) 2026-06-09 16:43:53 +08:00
t8y2 96e11935c2 fix(mongodb): support ObjectId filters by _id 2026-06-09 16:42:36 +08:00
t8y2 ee65fa660d fix(db): always bypass system proxy for all HTTP-based database drivers
Replace per-driver proxy bypass logic with a shared http_client_builder()
that always calls .no_proxy(). Previously ES and rqlite only bypassed for
localhost, causing remote connections to be routed through system proxy
(like Clash Verge) and failing — the same issue #922 fixed for ClickHouse.
2026-06-09 16:42:04 +08:00
srako 46eaaed8f1 fix(clickhouse): bypass system proxy to prevent connection failure 2026-06-09 16:23:13 +08:00
t8y2 ada58dd88f fix(redis): enhance hash value text extraction for search
Extract field names and values from hash-type arrays in
redis_search_value_text() instead of serializing the whole JSON,
so that value search can match individual hash fields and values.
2026-06-09 13:15:20 +08:00