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
b18f837b50
fix(editor): improve completion popup overflow
2026-06-12 01:20:11 +08:00
t8y2
4f71bcbff8
fix(connection): extend agent connect timeout
2026-06-12 01:12:06 +08:00
haipengno1
7de0de2313
实现 Redis 的查询功能
2026-06-12 00:20:17 +08:00
t8y2
3640541222
fix(ci): update nested layout and grid tests
2026-06-11 22:55:24 +08:00
t8y2
c9d655324d
fix(editor): preserve IME composition in comments
2026-06-11 22:55:16 +08:00
t8y2
a017e04d4c
feat(structure): auto name new indexes
2026-06-11 22:40:10 +08:00
t8y2
57d03c2f08
feat(sidebar): support nested groups
2026-06-11 22:35:00 +08:00
t8y2
c7fb855000
fix(jdbc): simplify driver selection and table edits
2026-06-11 22:13:27 +08:00
t8y2
70f7b464b7
feat(jdbc): install drivers from Maven bundles
2026-06-11 21:41:37 +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
t8y2
3f25a69d23
feat(mysql): add unsigned integer types to column type options
2026-06-11 18:34:51 +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
26d714909e
feat(elasticsearch): model indices as first-class nodes
2026-06-11 12:52:47 +08:00
t8y2
521a3021c4
fix(clickhouse): load table index metadata
2026-06-11 12:23:28 +08:00
t8y2
6f15fa303c
feat: support empty redis key separator for flat key display
2026-06-11 11:28:43 +08:00
SuLea-IT
89aa315a2d
Merge pull request #1037
...
Thanks!
2026-06-11 11:12:05 +08:00
t8y2
2b7264a531
feat: data grid search also matches column names
2026-06-11 11:08:51 +08:00
SuLea-IT
806d7c758b
feat: add SQL library history query entry points
2026-06-11 10:53:54 +08:00
SuLea-IT
634e26e8e7
Merge PR #1024
2026-06-11 10:47:42 +08:00
t8y2
9793dc94b7
feat(driver): centralize database capabilities
2026-06-10 22:12:44 +08:00
t8y2
7a0f89d3ad
fix(jdbc): use schema tree for inferred db2
2026-06-10 18:19:53 +08:00
t8y2
d353d4673f
feat(redis): add configurable key namespace separator
2026-06-10 17:46:48 +08:00
t8y2
ca1d420d91
feat(grid): add enum column select editor for MySQL
2026-06-10 16:39:24 +08:00
t8y2
f10d152c53
feat: add table structure editing support for 6 missing SQL databases
2026-06-10 16:17:59 +08:00
Abeautifulsnow
1ca3081c2f
feat(ui): add readonly mode visual badge to sidebar and tab bar
...
Add visual indicators so users can distinguish readonly connections from
read-write connections at a glance:
- Sidebar: show a lock icon badge on readonly connection nodes
- Tab bar: show a lock icon with tooltip on tabs with readonly connections
- Add isConnectionReadonly() helper in tabPresentation.ts
- Add readOnlyBadge i18n key for all 6 locales (en, zh-CN, zh-TW, es, it, pt-BR)
2026-06-10 15:56:37 +08:00
John Jin
0bd07ccf46
feat: add InfluxDB support ( #980 )
2026-06-10 14:37:53 +08:00
t8y2
c13efc65f8
fix(connect): support informix-sqli JDBC URL parsing
2026-06-10 14:26:50 +08:00
t8y2
973e9f487a
fix(sidebar): match table comments in search
2026-06-10 12:27:26 +08:00
t8y2
1032772241
fix(redis): escape asterisk in fuzzy key search pattern
2026-06-10 11:16:29 +08:00
t8y2
083327a551
fix(redis): preserve asterisk wildcard in fuzzy key search
2026-06-10 10:36:52 +08:00
t8y2
51fe5de98b
fix(shortcuts): allow clearing keyboard shortcuts in settings
2026-06-10 10:25:06 +08:00
t8y2
edba8214b5
feat: show username/password fields for Access database connections
2026-06-10 08:37:18 +08:00
t8y2
1be4c6afcc
fix: resolve clippy, typecheck, and test failures in CI ( #933 )
2026-06-10 04:40:23 +08:00
t8y2
d0bf6c3b53
feat(redis): persist command history across sessions ( #933 )
2026-06-10 04:34:45 +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
t8y2
9ffa4c41d9
feat: add SQL library panel with folder/file management, rename, and sync support
2026-06-10 02:46:10 +08:00
t8y2
2796e5c824
fix: enable etcd driver visibility in driver store UI
2026-06-10 02:05:49 +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
二丫讲梵
41758e6bb1
✨ feat(connection): 增加可见数据库选择功能 (#944 )
...
感谢 @eryajf 的贡献!此功能允许用户在创建或编辑连接时选择可见的数据库,支持多种数据库类型。
2026-06-09 20:56:39 +08:00
t8y2
ae483efb98
fix(editor): improve wrapped selection highlights
2026-06-09 20:53:47 +08:00
t8y2
9278630fd2
fix(desktop): stabilize tab overflow scrolling
2026-06-09 18:58:06 +08:00
t8y2
426b7911bc
fix(editor): preserve sql tab cursor state
2026-06-09 18:18:18 +08:00
t8y2
e153d88091
fix(editor): preserve sql tab scroll position
2026-06-09 18:04:03 +08:00
t8y2
2050bee75c
feat(query): show elapsed time while executing
2026-06-09 17:57:25 +08:00
cl1107
3995524e5d
feat(import): 添加 DataGrip 连接导入支持 ( #936 )
...
- 新增 datagripImport 模块解析 XML 配置
- 支持从 macOS Keychain 自动填充密码
- 添加 Keychain 读取的 Tauri 命令
- 更新多语言翻译文件
- 集成到侧边栏导入流程中
2026-06-09 16:45:59 +08:00
t8y2
6a14b11efc
fix(mongodb): skip SQL semantic diagnostics for MongoDB connections
...
MongoDB shell syntax like db.collection.find({}) was incorrectly
parsed as SQL, causing a "sql parser error" diagnostic in the editor.
Added MongoDB guards in shouldRunSqlSemanticDiagnostics and
refreshSemanticDiagnostics, matching existing Elasticsearch logic.
Also fix a pre-existing TiDB cloud URL param ordering test failure.
2026-06-09 16:20:50 +08:00
t8y2
df4d590440
fix(navicat): improve NCX connection type detection with numeric codes and port fallback
...
- Add Navicat numeric ConnType codes (1-9) to typeMap for correct DB type mapping
- Add port-based inference fallback (6379→Redis, 27017→MongoDB, etc.)
- Expand typeMap with ClickHouse, Snowflake, KingbaseES, GaussDB, OceanBase
- Skip unrecognized connections instead of silently falling back to MySQL
2026-06-09 13:20:29 +08:00
t8y2
b2b1a7365b
feat(connection): add custom color picker for connection editing ( #913 )
...
- Extend hexToRgba() to handle rgba/rgb input passthrough
- Add pipette button with native color picker + text input in popover
- Custom color and preset colors are mutually exclusive
2026-06-09 13:03:11 +08:00