t8y2
c4c427fb67
fix: sort tables by FK dependency in transfer and export
2026-06-18 00:00:37 +08:00
t8y2
71db24813e
fix(informix): add informix_server field to test helpers
2026-06-17 22:59:22 +08:00
t8y2
22b8ba17bb
fix(schema): handle view DDL object types
2026-06-17 19:29:24 +08:00
t8y2
4dbd1c7cc8
fix: convert source to editable form when opening view/procedure editor
2026-06-17 15:20:21 +08:00
t8y2
66e6ca1211
fix(db): refresh stale native pools
2026-06-17 11:14:35 +08:00
miracle and t8y2
2a59d3143e
feat(mq): implement Apache Pulsar message queue admin
...
* feat(mq): implement Apache Pulsar message queue admin
- Add complete MQ admin adapter layer with version detection
* Pulsar adapter with multi-version API support
* OAuth2 token caching and authentication
* JWT token signing for Pulsar clients
* Transport layer (SSH/Proxy) integration
- Implement comprehensive admin operations
* Tenant, namespace, topic management
* Subscription and consumer/producer monitoring
* Rate limits, backlog quotas, retention policies
* Permissions and role-based access control
* Raw admin API for advanced operations
- Add desktop UI components
* MQ admin console with tabbed interface
* Tenant, namespace, topic panels
* Subscription management and cursor operations
* Monitoring panel with stats visualization
* Policy configuration UI
- Add web routes for MQ admin operations
- Add secret store support for MQ auth credentials
- Add comprehensive test coverage
* fix: del local test files
* fix(mq): mark message queue as unsupported mcpMode in driver manifest
MQ admin connections do not use the MCP query bridge - they use a
separate REST admin API. Mark mcpMode as 'unsupported' to align with
the test expectations and reflect the actual architecture.
Fixes CI test: driver-manifest.test.ts
* fix(mq): fix TypeScript errors in MQ components
- Fix typo in SubscriptionsPanel.vue: messagformatError(e)Id -> message.messageId
- Use formatError() helper in RawApiPanel.vue instead of accessing e?.message
- Fix undefined 'tab' reference in ConnectionTree.vue: use config.db_type instead
Fixes frontend CI TypeScript check errors.
* fix(mcp): add 'mq' to MCP server connection type description
The MCP server's connection type description must include all database
types from the driver manifest. Add 'mq' to the list to fix the test:
'add connection database type description includes every manifest database type'
Fixes: packages/mcp-server/tests/driver-manifest.test.ts
* fix(mq): add missing ConnectionConfig fields for Rust compilation
- Add gbase_server and keepalive_interval_secs fields to all ConnectionConfig
test constructors in mq/config.rs, mq/service.rs, and storage.rs
- Import uses_bare_mysql_pool in connection.rs tests module
Fixes compilation errors from upstream ConnectionConfig changes.
* chore(ui): simplify Pulsar icon to logo-only version
Remove text from Pulsar icon (127x30 -> 35x30), keeping only
the wave logo symbol for a cleaner, more consistent appearance
with other database icons.
* fix(mq): return removed pools from drain_connection_pools
---------
Co-authored-by: t8y2 <1156263951@qq.com >
2026-06-16 21:57:17 +08:00
t8y2
65114c64c4
fix(sqlite): support .db3 file extension
2026-06-16 20:30:21 +08:00
t8y2
d957734211
fix: suppress terminal popup when checking MCP server status on Windows
2026-06-16 18:51:02 +08:00
t8y2
558b9301a2
feat(sqlite): create empty database file on connect if missing
2026-06-16 13:55:44 +08:00
t8y2
47915c243d
fix(connection): avoid blocking disconnect cleanup
2026-06-16 10:45:14 +08:00
t8y2
000c236619
feat(connection): add keepalive interval
2026-06-16 10:23:49 +08:00
t8y2
c57e18bf3e
fix: resolve clippy warnings and missing struct fields in tests
2026-06-16 00:55:32 +08:00
t8y2
9c478d1437
fix(connection): respect agent connect timeout
2026-06-15 22:43:05 +08:00
t8y2
ab5bd1dd25
fix(redis): batch SCAN server-side to reduce fetch-all latency
2026-06-15 15:01:13 +08:00
t8y2
7bb869d398
fix(mongodb): support legacy driver fallback
2026-06-15 14:07:31 +08:00
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
t8y2
8932b0a308
fix(mongo): align collection loading state
2026-06-14 17:04:56 +08:00
t8y2
41e4498c7b
fix: add missing gbase_server field in ConnectionConfig tests
2026-06-14 12:09:35 +08:00
Vergil Lai
799d20a2cf
添加 Manticore Search 支持 ( #1145 )
...
* 添加 Manticore Search 支持
* 更新 Manticore Search 文档
2026-06-13 20:23:36 +08:00
t8y2
6c57169162
feat(mcp): add one-click install/upgrade button
2026-06-13 20:05:46 +08:00
LC
2d98b9fdd2
feat(sqlite): add database backup action
...
* feat(sqlite): add database backup action
* fix(sqlite): sanitize default backup file name
2026-06-13 18:39:12 +08:00
t8y2
0b9aef1ca8
feat(settings): split driver store paths
2026-06-13 17:27:58 +08:00
t8y2
d974ad5533
feat(settings): add custom driver store path with migration
2026-06-13 16:54:04 +08:00
t8y2
d091b0db85
feat(sidebar): reveal local db file in OS file manager
2026-06-13 16:00:47 +08:00
t8y2
30afcb8e69
fix(sidebar): page large table groups
2026-06-13 13:40:36 +08:00
t8y2
a7ba5b42ef
chore: remove duplicate imports and BOM from PR #1122
2026-06-12 19:58:32 +08:00
skyler
abacac3c07
feat(ai): agent loop Phase 2 — SQL execution tools, risk classification, and streaming tool calls
...
feat(ai): agent loop Phase 2 — SQL execution tools, risk classification, and streaming tool calls
2026-06-12 19:56:36 +08:00
t8y2
484658c6b7
feat(ai): streaming probe for connection test with latency measurement
2026-06-12 19:29:55 +08:00
runstone
094412d956
fix error
2026-06-12 19:00:27 +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
runstone
100124da3e
feat(ai): Phase 2 SQL 风险分类 + Agent 模式工具调用结果渲染
...
后端:
- 新增 sql_risk.rs:基于 sqlparser AST 的 SQL 风险分类(ReadOnly/Write/Ddl/Transaction)
- agent_tools.rs:新增 execute_query 和 get_sample_data 工具,写操作/DDL 被风险分类阻止
- agent_loop.rs:支持 is_agent_mode 参数,Agent 模式下暴露全部工具,Ask 模式仅暴露只读工具
- agent_loop/web/tauri:mode 参数全链路传递(前端→HTTP→Tauri→Rust)
前端:
- AiAgentStepItem 接口扩展:toolName/toolArgs/toolResult/isError 字段
- AiAssistant.vue:工具调用结果实时+最终渲染,SQL 查询结果/错误信息展示
- ai.ts/http.ts/tauri.ts:mode 参数透传到后端
2026-06-12 17:42:23 +08:00
polemp and Sam
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
Abeautifulsnow
082e3bb4eb
feat(ai): add agent tool calling loop
2026-06-12 13:18:36 +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
t8y2
a4bd62005b
feat(redis): add all search mode
2026-06-12 11:32:56 +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
haipengno1
7de0de2313
实现 Redis 的查询功能
2026-06-12 00:20:17 +08:00
t8y2
57d03c2f08
feat(sidebar): support nested groups
2026-06-11 22:35:00 +08:00
t8y2
70f7b464b7
feat(jdbc): install drivers from Maven bundles
2026-06-11 21:41:37 +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
a81286fed7
feat(build): gate DuckDB behind optional feature, support --no-default-features
2026-06-11 13:58:44 +08:00
t8y2
3f58526df8
fix(mcp): add back use std::env, use compile-time #[cfg] for locate_mcp_bin
2026-06-10 21:31:52 +08:00
Doracoin
7234d9ebd3
fix(desktop): Improve shell Node detection for MCP startup
...
Thanks for the detailed investigation and fix!
2026-06-10 21:30:44 +08:00
t8y2
20622bc762
fix: resolve clippy warnings and missing redis_key_separator field
2026-06-10 20:05:20 +08:00
John Jin
0bd07ccf46
feat: add InfluxDB support ( #980 )
2026-06-10 14:37:53 +08:00
t8y2
1545224d34
fix: add missing read_only field and resolve clippy warnings
2026-06-10 12:55:39 +08:00
t8y2
bfec556e9b
feat(readonly): add read-only mode for all database connections
...
- Add read_only field to ConnectionConfig with backward-compatible serde defaults
- SQL classifier with first-keyword + embedded keyword defense layers
- PRAGMA white-listing for safe read-only operations
- Guard all write entry points: SQL, Mongo, Redis, etcd, MCP Bridge
- 16 unit tests covering edge cases (CTE, case insensitivity, string masking)
- 7-language i18n support
- Fast-fail at command/route level before pool creation
Closes #889
2026-06-10 11:58:18 +08:00
t8y2
2f5469ce6d
fix(oracle): add listener driver hint
2026-06-10 11:37:45 +08:00