@yejiming/dsh-data-agent 0.1.0 → 0.1.1

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.
package/README.en.md CHANGED
@@ -44,7 +44,7 @@ This package includes an experimental declaration for the [DSH Ecosystem Specifi
44
44
  | --- | --- |
45
45
  | Specification and stage | Community v0.15, Draft / Experimental |
46
46
  | Pinned baseline | `dsh-ecosystem-spec@ec80a4be5d92bbb971655afd0f097bb5586a1a28`; `dsh-std@614dfa1ac168db79fcf4577cf0ebb34e2e3b944b` |
47
- | Manifest | `dsh-plugin.json`, `manifestVersion: 0.15`, package identity `@yejiming/dsh-data-agent@0.1.0` |
47
+ | Manifest | `dsh-plugin.json`, `manifestVersion: 0.15`, package identity `@yejiming/dsh-data-agent@0.1.1` |
48
48
  | Admission decision | The repository's eligible fixture is `compatible`; this is not an admission result from a real dsh-TUI Host |
49
49
  | Evidence level | `Parsed`; fixture negotiation is recorded only as `fixture-only` and does not become `Negotiated` evidence |
50
50
  | Exercised environment | Offline parser/projector/definition validation; disposable local mount/unmount with `@dsh-std/adapter-dsh@0.1.0-rc3` |
@@ -59,6 +59,7 @@ The plugin remains **trusted in-process** and is not sandboxed. Manifest permiss
59
59
 
60
60
  - **Analyze data through conversation**: Describe your goal in natural language. DSH understands the question, breaks it into analysis steps, queries real data, and organizes the conclusions. You can keep asking follow-up questions to explore the same context in greater depth.
61
61
  - **Discover business insights automatically**: Data Agent goes beyond returning query results. It helps compare trends, locate anomalies, identify valuable customers or products, and turn the data into explanations that support decisions.
62
+ - **AI-assisted data governance**: Scan a database with the AI model configured in the current DSH session. Using tables, fields, comments, and relations, it generates candidate business meanings for every table and field. Every AI-generated candidate requires human review, and users can also add business terms and metric definitions manually. During later queries and analysis, Data Agent automatically reads the relevant definitions through the built-in `catalog-search`, `catalog-get`, and `metric-get` tools, grounding SQL and conclusions in governed business context.
62
63
  - **Cross-surface HTML reports (render-analysis)**: In an ordinary tool call, the agent can choose to produce a single chart or a Dashboard-style report (metric/line/bar/pie/scatter/table views). Every successful call saves an offline HTML file under `analysis-reports/` in the current workspace. Web also shows an inline preview and a “View analysis” Modal; dsh-tui returns the file path. Whether to chart remains the agent's decision — schema exploration, single scalars, and queries without visual value are never forced into charts.
63
64
  - **Shares the core path across Web UI and dsh-tui**: For a visual workflow, we recommend [zhu1090093659/dsh-web-ui](https://github.com/zhu1090093659/dsh-web-ui), where you can connect databases, browse schemas, and inspect results in the browser. For a keyboard-first workflow, we recommend [ccch1mneyyy/dsh-TUI](https://github.com/ccch1mneyyy/dsh-TUI), where you can use the same Data Mode, connect through `/database`, and move directly into conversational analysis. Both interfaces share the database service and tool protocol; validate the exact version and deployment separately.
64
65
  - **Connect common business databases**: Supports MySQL, PostgreSQL, SQLite, Oracle, Hive, Impala, ClickHouse, Apache Doris, and SQL Server across application databases, analytics systems, local data files, and data warehouses.
@@ -66,13 +67,15 @@ The plugin remains **trusted in-process** and is not sandboxed. Manifest permiss
66
67
  - **Stay focused with Data Mode**: The session uses DSH's native `str_replace_editor` for files and keeps `sql-query`, `sql-write`, `sql-cmd`, `render-analysis`, `catalog-search`, `catalog-get`, and `metric-get`; Web, Desktop, dsh-tui, and headless profiles use the same eight-tool protocol. Host or community tools such as `describe_image` and `ssh_*` do not leak into Data Mode.
67
68
  - **Work safely with real data**: Use read-only mode and a read-only database account when appropriate. TUI passwords are masked and are never restored as part of a form draft. You decide whether the session may modify data.
68
69
 
69
- The Web UI also includes an on-demand database workbench. Click the database button in the top-right of the composer to use four tabs—Connection, Tables, Data Catalog, and SQL—in one Modal. The Data Catalog reads the independent persistent `data_agent_catalog@1` domain. Historical snapshots remain searchable after the live database disconnects; a new scan still requires a connection to the same stable profile.
70
+ ![Data governance: AI-generated business meanings for tables and fields with human review](assets/data-governance.png)
71
+
72
+ The Web UI also includes an on-demand database workbench. Click the database button in the top-right of the composer to use four tabs—Connection, Tables, Data Governance, and SQL—in one Modal. The Data Governance tab reads the independent persistent `data_agent_catalog@1` domain. Historical snapshots remain searchable after the live database disconnects; a new scan still requires a connection to the same stable profile.
70
73
 
71
74
  The SQL tab renders read-query results as a structured table with a sticky header, 100-row pages, and local horizontal scrolling for wide datasets. The complete loaded result can be exported as Excel (`.xlsx`), UTF-8 CSV, or copied to the clipboard, with a hard limit of 50,000 rows per query. Write/administrative commands and errors remain text messages instead of being misparsed as tables.
72
75
 
73
76
  ### Data Catalog and metric governance
74
77
 
75
- A Catalog scan is an explicit human action. Its first stage reads database system catalogs only: it does not read business rows, persist sample rows, or run full-table `COUNT(*)` queries for exact counts. Its second stage uses the model currently configured in the initiating DSH session to generate table-level and field-level business-meaning candidates, one table at a time. The model receives only bounded technical metadata—names, types, nullable flags, database comments, keys, and relations—not sample values, query results, or credentials. Web offers full-source, schema, and single-table scopes in the Data Catalog tab, with an extra confirmation for full scans. `/database` and `/catalog` are registered only when the current Cordis composition actually loads `@deepseek-harness-tui/dsh-tui`; the profile label is not consulted, so installing Data Agent or merely naming a profile `dsh-tui` never exposes them. A normal Web composition uses the database workbench instead. dsh-tui uses:
78
+ A Catalog scan is an explicit human action. Its first stage reads database system catalogs only: it does not read business rows, persist sample rows, or run full-table `COUNT(*)` queries for exact counts. Its second stage uses the model currently configured in the initiating DSH session to generate table-level and field-level business-meaning candidates, one table at a time. The model receives only bounded technical metadata—names, types, nullable flags, database comments, keys, and relations—not sample values, query results, or credentials. Web offers full-source, schema, and single-table scopes in the Data Governance tab, with an extra confirmation for full scans. `/database` and `/catalog` are registered only when the current Cordis composition actually loads `@deepseek-harness-tui/dsh-tui`; the profile label is not consulted, so installing Data Agent or merely naming a profile `dsh-tui` never exposes them. A normal Web composition uses the database workbench instead. dsh-tui uses:
76
79
 
77
80
  Catalog metadata queries use an independent `catalogMaxResultChars` capture bound (32 MiB by default), so they no longer inherit the smaller `maxResultChars` budget used by ordinary SQL tools. Exceeding the Catalog-specific bound still fails safely with guidance to narrow the scope or adjust the configuration; a truncated snapshot is never published.
78
81
 
@@ -184,7 +187,7 @@ After connecting, return to the chat input and ask a business question. Other us
184
187
  /catalog view Open read-only Catalog results grouped by table
185
188
  ```
186
189
 
187
- You do not need to repeat `/catalog status` after a scan starts: the line above the prompt follows technical collection and AI-enrichment progress, then retains the final success/failure state. After completion, run `/catalog view`; use arrows or `j/k` to select and scroll, Tab or ←/→ to switch panes, `/` to search, `a` to switch between the business schema and all schemas, `r` to refresh, and Escape to return. The TUI remains read-only; confirm or delete AI candidates one at a time from Web's Data Catalog.
190
+ You do not need to repeat `/catalog status` after a scan starts: the line above the prompt follows technical collection and AI-enrichment progress, then retains the final success/failure state. After completion, run `/catalog view`; use arrows or `j/k` to select and scroll, Tab or ←/→ to switch panes, `/` to search, `a` to switch between the business schema and all schemas, `r` to refresh, and Escape to return. The TUI remains read-only; confirm or delete AI candidates one at a time from Web's Data Governance tab.
188
191
 
189
192
  After the agent generates a report, the tool card shows dataset, view, empty-data facts, and the absolute HTML path. TUI does not print a character Dashboard and does not register `/analysis`; open the HTML in a local browser to inspect all six view types and raw data. The file belongs to that tool call, and `/resume` does not re-query the database.
190
193
 
package/README.md CHANGED
@@ -44,7 +44,7 @@ dsh-data-agent是DeepSeek Harness(DSH)的数据分析插件。连接数据
44
44
  | --- | --- |
45
45
  | 规范与阶段 | Community v0.15,Draft / Experimental |
46
46
  | 固定基线 | `dsh-ecosystem-spec@ec80a4be5d92bbb971655afd0f097bb5586a1a28`;`dsh-std@614dfa1ac168db79fcf4577cf0ebb34e2e3b944b` |
47
- | Manifest | `dsh-plugin.json`,`manifestVersion: 0.15`,包身份 `@yejiming/dsh-data-agent@0.1.0` |
47
+ | Manifest | `dsh-plugin.json`,`manifestVersion: 0.15`,包身份 `@yejiming/dsh-data-agent@0.1.1` |
48
48
  | 准入结果 | 仓库内 eligible fixture 为 `compatible`;这不是实际 dsh-TUI Host 的准入结论 |
49
49
  | 证据等级 | `Parsed`;fixture negotiation 只记录为 `fixture-only`,不提升为 `Negotiated` |
50
50
  | 已执行环境 | 离线 parser/projector/definition 校验;`@dsh-std/adapter-dsh@0.1.0-rc3` 一次性本地 fixture 挂载/卸载 |
@@ -59,6 +59,7 @@ dsh-data-agent是DeepSeek Harness(DSH)的数据分析插件。连接数据
59
59
 
60
60
  - **通过对话完成数据分析**:直接用自然语言描述目标,DSH会理解问题、拆解分析步骤、查询真实数据并整理结论。你可以继续追问,分析会沿着当前上下文逐步深入。
61
61
  - **自动寻找商业洞察**:不仅返回查询结果,还能帮助比较趋势、定位异常、识别高价值客户或商品,并把数据转化为便于业务决策的说明。
62
+ - **AI驱动的数据治理**:使用当前DSH会话配置的AI模型扫描数据库,根据库表、字段、注释和关系,为每张表及每个字段生成业务含义候选。所有AI候选都需要人工确认,用户也可以人工补充业务术语和指标定义。后续查询分析时,数据Agent会通过内置的`catalog-search`、`catalog-get`和`metric-get`工具自动读取相关业务定义,让SQL和分析结论基于经过治理的业务口径。
62
63
  - **跨界面HTML分析报告(render-analysis)**:Agent可在普通工具调用里自主生成单图或Dashboard式综合分析报告(metric/line/bar/pie/scatter/table视图)。每次成功调用都会在当前工作目录的`analysis-reports/`中保存一份离线可打开的HTML;Web同时提供内联预览与“查看分析”Modal,dsh-tui直接返回文件路径。是否画图由Agent按问题判断,schema探查、单标量等查询不会被强制生成图表。
63
64
  - **共享Web UI与dsh-tui核心路径**:喜欢可视化操作时,可以在Web界面连接数据库、浏览库表和查看结果,推荐使用[zhu1090093659/dsh-web-ui](https://github.com/zhu1090093659/dsh-web-ui);习惯键盘工作流时,可以在终端中使用同一“数据模式”,通过`/database`完成连接,然后直接开始对话分析,推荐使用[ccch1mneyyy/dsh-TUI](https://github.com/ccch1mneyyy/dsh-TUI)。两种界面共享数据Agent的数据库服务和工具协议;具体版本与部署仍应分别验证。
64
65
  - **连接常见业务数据库**:支持MySQL、PostgreSQL、SQLite、Oracle、Hive、Impala、ClickHouse、Apache Doris和SQL Server,可用于业务系统、分析库、本地数据文件及数仓场景。
@@ -66,13 +67,15 @@ dsh-data-agent是DeepSeek Harness(DSH)的数据分析插件。连接数据
66
67
  - **专注数据任务的数据模式**:会话使用DSH原生`str_replace_editor`处理文件,并保留`sql-query`、`sql-write`、`sql-cmd`、`render-analysis`、`catalog-search`、`catalog-get`与`metric-get`;Web、Desktop、dsh-tui和headless profile使用同一套八工具协议。`describe_image`、`ssh_*`等宿主或社区插件工具不会进入数据模式。
67
68
  - **安全地使用真实数据**:支持只读模式和数据库只读账号;TUI密码会被隐藏,且不会作为表单草稿恢复。是否允许修改数据由你决定。
68
69
 
69
- Web UI还提供按需数据库工作台:点击输入框右上角的数据库按钮,即可在同一个Modal的“连接配置、库表、数据目录、SQL”四个页签中配置连接、浏览结构、治理口径或临时运行SQL。“数据目录”读取独立的`data_agent_catalog@1`持久化域;只要存在历史snapshot,断开实时数据库后仍可搜索和查看,重新扫描则必须连接到同一个稳定Profile。
70
+ ![数据治理:AI生成表和字段业务含义,并由用户审核](assets/data-governance.png)
71
+
72
+ Web UI还提供按需数据库工作台:点击输入框右上角的数据库按钮,即可在同一个Modal的“连接配置、库表、数据治理、SQL”四个页签中配置连接、浏览结构、治理口径或临时运行SQL。“数据治理”页读取独立的`data_agent_catalog@1`持久化域;只要存在历史snapshot,断开实时数据库后仍可搜索和查看,重新扫描则必须连接到同一个稳定Profile。
70
73
 
71
74
  SQL命令页会把读查询结果显示为带固定表头的结构化表格,并按100行分页,宽表可在结果区内横向滚动。当前结果可导出为Excel(`.xlsx`)、UTF-8 CSV或复制到剪贴板;三种导出都包含已加载的完整结果,单次最多50,000行。写入/管理命令及错误仍显示为文本消息,不会被误解析成表格。
72
75
 
73
76
  ### 数据目录与口径治理
74
77
 
75
- Catalog扫描是显式人工动作。第一阶段只读取数据库系统目录,不读取业务明细、不保存样例行,也不会为精确行数执行全表`COUNT(*)`;第二阶段调用发起扫描的DSH会话当前配置模型,按表生成表级和字段级业务含义候选。发送给模型的只有表/字段名称、类型、nullable、数据库注释、键和关系等有界技术元数据,不包含样例值、查询结果或凭据。Web可在“数据目录”页选择全库、Schema或单表范围;全库扫描需要二次确认。`/database`和`/catalog`只在当前Cordis组合实际加载`@deepseek-harness-tui/dsh-tui`插件时注册;Profile名称不参与判断,仅安装Data Agent或把Profile命名为`dsh-tui`都不会暴露命令。普通Web组合不展示这两个命令,而是在数据库工作台中完成连接和扫描。dsh-tui使用:
78
+ Catalog扫描是显式人工动作。第一阶段只读取数据库系统目录,不读取业务明细、不保存样例行,也不会为精确行数执行全表`COUNT(*)`;第二阶段调用发起扫描的DSH会话当前配置模型,按表生成表级和字段级业务含义候选。发送给模型的只有表/字段名称、类型、nullable、数据库注释、键和关系等有界技术元数据,不包含样例值、查询结果或凭据。Web可在“数据治理”页选择全库、Schema或单表范围;全库扫描需要二次确认。`/database`和`/catalog`只在当前Cordis组合实际加载`@deepseek-harness-tui/dsh-tui`插件时注册;Profile名称不参与判断,仅安装Data Agent或把Profile命名为`dsh-tui`都不会暴露命令。普通Web组合不展示这两个命令,而是在数据库工作台中完成连接和扫描。dsh-tui使用:
76
79
 
77
80
  Catalog元数据查询使用独立的`catalogMaxResultChars`捕获上限(默认32 MiB),不会再受普通SQL工具较小的`maxResultChars`限制;超过Catalog专属上限时仍会安全失败,并提示缩小扫描范围或调整配置,不会发布被截断的snapshot。
78
81
 
@@ -87,7 +90,7 @@ Catalog元数据查询使用独立的`catalogMaxResultChars`捕获上限(默
87
90
  /catalog view 打开只读全屏目录浏览器
88
91
  ```
89
92
 
90
- 扫描在后台运行,同一个source同时只允许一个活动run。在提供公开扩展接口的dsh-tui中,输入框上方会持续显示“技术元数据采集 → 目录发布 → AI业务含义”的实际进度;成功、部分成功或失败终态会一直保留到下一次扫描或打开`/catalog view`,不再依赖短暂通知。`/catalog view`使用全屏只读场景:左侧按表/视图分页,右侧展示表级说明、字段类型与字段级AI业务含义,支持搜索、左右独立滚动、业务Schema/全部Schema切换和刷新;按Esc返回。旧版dsh-tui没有公开状态/scene服务时,扫描命令仍可用,并明确回退到`/catalog status`和Web数据目录。
93
+ 扫描在后台运行,同一个source同时只允许一个活动run。在提供公开扩展接口的dsh-tui中,输入框上方会持续显示“技术元数据采集 → 目录发布 → AI业务含义”的实际进度;成功、部分成功或失败终态会一直保留到下一次扫描或打开`/catalog view`,不再依赖短暂通知。`/catalog view`使用全屏只读场景:左侧按表/视图分页,右侧展示表级说明、字段类型与字段级AI业务含义,支持搜索、左右独立滚动、业务Schema/全部Schema切换和刷新;按Esc返回。旧版dsh-tui没有公开状态/scene服务时,扫描命令仍可用,并明确回退到`/catalog status`和Web“数据治理”页。
91
94
 
92
95
  结果按稳定Profile、资产身份和不可变revision保存:未变化对象不复制revision;完整成功的技术扫描只在其精确范围内把消失对象标记为`missing`;单表/Schema扫描不会改动范围外对象,也不会更新最近全库扫描时间;对象重新出现时记录为`restored`。元数据失败、取消、中断或权限不完整的run不会覆盖上一份成功snapshot,权限不确定时也不会把对象误判为删除。AI阶段具有独立的排队、运行、成功、部分成功、失败和取消状态;模型输出保持有界,整表输出触及token上限时会沿用当前模型配置并自动按字段分批重试,只有整张表的字段结果齐全后才写入。AI失败不会抹掉已经成功提交的技术snapshot,也不会把不完整表结果写成候选。
93
96
 
@@ -184,7 +187,7 @@ dsh --profile dsh-tui
184
187
  /catalog view 打开按表组织的只读Catalog结果
185
188
  ```
186
189
 
187
- 扫描开始后无需反复执行`/catalog status`:输入框上方会持续显示技术采集和AI业务含义进度,并保留最终成功/失败状态。完成后执行`/catalog view`,使用↑↓或`j/k`选择表、Tab或←→切换左右区域、`/`搜索、`a`切换业务Schema/全部Schema、`r`刷新、Esc返回。TUI只提供读取;AI候选的确认与删除仍在Web“数据目录”中逐项完成。
190
+ 扫描开始后无需反复执行`/catalog status`:输入框上方会持续显示技术采集和AI业务含义进度,并保留最终成功/失败状态。完成后执行`/catalog view`,使用↑↓或`j/k`选择表、Tab或←→切换左右区域、`/`搜索、`a`切换业务Schema/全部Schema、`r`刷新、Esc返回。TUI只提供读取;AI候选的确认与删除仍在Web“数据治理”页逐项完成。
188
191
 
189
192
  Agent生成分析报告后,工具卡会显示数据集、视图、空数据摘要与HTML绝对路径。TUI不会输出字符Dashboard,也没有`/analysis`命令;直接在本机浏览器中打开该HTML即可查看六类视图和原始数据。文件来自本次工具调用,`/resume`不会重新查询数据库。
190
193
 
package/dsh-plugin.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "manifestVersion": "0.15",
4
4
  "id": "io.github.omdsh-dev.dsh-data-agent",
5
5
  "name": "DSH Data Agent",
6
- "version": "0.1.0",
6
+ "version": "0.1.1",
7
7
  "facets": {
8
8
  "host": {
9
9
  "entry": "lib/ecosystem.js",
package/lib/client.js CHANGED
@@ -1011,150 +1011,150 @@ window.__ModuleLoader__.load({
1011
1011
  document.head.appendChild(tag);
1012
1012
  }
1013
1013
  var DataAgentWorkbench_module_css_default = {
1014
- "catalogDetailTabActive": "Sv3uVW_catalogDetailTabActive",
1015
- "trigger": "Sv3uVW_trigger",
1016
- "catalogDetail": "Sv3uVW_catalogDetail",
1017
- "catalogPanel": "Sv3uVW_catalogPanel",
1018
- "catalogFacts": "Sv3uVW_catalogFacts",
1019
- "visuallyHidden": "Sv3uVW_visuallyHidden",
1020
- "catalogError": "Sv3uVW_catalogError",
1014
+ "catalogDetailHeader": "Sv3uVW_catalogDetailHeader",
1015
+ "catalogMeaningActions": "Sv3uVW_catalogMeaningActions",
1016
+ "fieldGrid": "Sv3uVW_fieldGrid",
1017
+ "modalColTitle": "Sv3uVW_modalColTitle",
1018
+ "sqlPageActions": "Sv3uVW_sqlPageActions",
1019
+ "treeNode": "Sv3uVW_treeNode",
1020
+ "catalogBadge_retired": "Sv3uVW_catalogBadge_retired",
1021
1021
  "rememberHint": "Sv3uVW_rememberHint",
1022
- "catalogItemHead": "Sv3uVW_catalogItemHead",
1023
- "catalogActionGroup": "Sv3uVW_catalogActionGroup",
1024
- "field": "Sv3uVW_field",
1025
- "modalHint": "Sv3uVW_modalHint",
1026
- "catalogLatestRun": "Sv3uVW_catalogLatestRun",
1027
- "catalogDiffBar": "Sv3uVW_catalogDiffBar",
1028
- "errorIcon": "Sv3uVW_errorIcon",
1029
- "catalogMeaningFields": "Sv3uVW_catalogMeaningFields",
1030
- "catalogProgress": "Sv3uVW_catalogProgress",
1031
- "errorBar": "Sv3uVW_errorBar",
1032
- "connectionSummary": "Sv3uVW_connectionSummary",
1022
+ "catalogScanBar": "Sv3uVW_catalogScanBar",
1023
+ "catalogDefinition": "Sv3uVW_catalogDefinition",
1024
+ "sqlTableScroll": "Sv3uVW_sqlTableScroll",
1025
+ "treeScroll": "Sv3uVW_treeScroll",
1026
+ "catalogMeaningSection": "Sv3uVW_catalogMeaningSection",
1027
+ "tabPanel": "Sv3uVW_tabPanel",
1033
1028
  "ghost": "Sv3uVW_ghost",
1034
- "treeCount": "Sv3uVW_treeCount",
1035
- "primary": "Sv3uVW_primary",
1036
- "sqlResultLimit": "Sv3uVW_sqlResultLimit",
1037
- "catalogBadge_inferred": "Sv3uVW_catalogBadge_inferred",
1038
- "catalogDetailTabs": "Sv3uVW_catalogDetailTabs",
1039
- "catalogMeaningFieldMeta": "Sv3uVW_catalogMeaningFieldMeta",
1040
- "errorHead": "Sv3uVW_errorHead",
1041
- "catalogCounts": "Sv3uVW_catalogCounts",
1042
- "sqlNull": "Sv3uVW_sqlNull",
1043
- "sqlPageButton": "Sv3uVW_sqlPageButton",
1044
- "shortcutHint": "Sv3uVW_shortcutHint",
1045
- "catalogLatestError": "Sv3uVW_catalogLatestError",
1046
- "sqlResultEmpty": "Sv3uVW_sqlResultEmpty",
1029
+ "catalogSearch": "Sv3uVW_catalogSearch",
1030
+ "modalCol": "Sv3uVW_modalCol",
1031
+ "active": "Sv3uVW_active",
1032
+ "catalogDetailTab": "Sv3uVW_catalogDetailTab",
1033
+ "errorText": "Sv3uVW_errorText",
1034
+ "visuallyHidden": "Sv3uVW_visuallyHidden",
1035
+ "connectionState": "Sv3uVW_connectionState",
1036
+ "summaryDb": "Sv3uVW_summaryDb",
1037
+ "triggerSlot": "Sv3uVW_triggerSlot",
1038
+ "typeCell": "Sv3uVW_typeCell",
1047
1039
  "workbenchModalContent": "Sv3uVW_workbenchModalContent",
1048
- "tabActive": "Sv3uVW_tabActive",
1049
- "catalogMeaningSection": "Sv3uVW_catalogMeaningSection",
1050
- "rememberRow": "Sv3uVW_rememberRow",
1051
- "catalogSectionLabel": "Sv3uVW_catalogSectionLabel",
1052
- "schemaPanel": "Sv3uVW_schemaPanel",
1053
- "sqlPanel": "Sv3uVW_sqlPanel",
1054
- "colScroll": "Sv3uVW_colScroll",
1040
+ "catalogMeaningMissing": "Sv3uVW_catalogMeaningMissing",
1041
+ "workbench": "Sv3uVW_workbench",
1042
+ "sqlNull": "Sv3uVW_sqlNull",
1043
+ "catalogDetailTabs": "Sv3uVW_catalogDetailTabs",
1044
+ "catalogToolbar": "Sv3uVW_catalogToolbar",
1055
1045
  "sqlActions": "Sv3uVW_sqlActions",
1046
+ "catalogBadge_unavailable": "Sv3uVW_catalogBadge_unavailable",
1047
+ "catalogBadge_missing": "Sv3uVW_catalogBadge_missing",
1048
+ "triggerDot": "Sv3uVW_triggerDot",
1049
+ "catalogBusinessEmpty": "Sv3uVW_catalogBusinessEmpty",
1050
+ "sqlExportActions": "Sv3uVW_sqlExportActions",
1051
+ "tabs": "Sv3uVW_tabs",
1052
+ "errorIcon": "Sv3uVW_errorIcon",
1056
1053
  "catalogHistoryItem": "Sv3uVW_catalogHistoryItem",
1054
+ "catalogMeaningReview": "Sv3uVW_catalogMeaningReview",
1055
+ "catalogControl": "Sv3uVW_catalogControl",
1056
+ "emptyStateText": "Sv3uVW_emptyStateText",
1057
+ "catalogLatestLabel": "Sv3uVW_catalogLatestLabel",
1058
+ "treeName": "Sv3uVW_treeName",
1059
+ "treeIcon": "Sv3uVW_treeIcon",
1060
+ "catalogLatestRun": "Sv3uVW_catalogLatestRun",
1061
+ "trigger": "Sv3uVW_trigger",
1057
1062
  "catalogCheck": "Sv3uVW_catalogCheck",
1058
- "catalogDetailTab": "Sv3uVW_catalogDetailTab",
1059
- "catalogBadge_retired": "Sv3uVW_catalogBadge_retired",
1060
- "emptyStateIcon": "Sv3uVW_emptyStateIcon",
1061
- "fieldGrid": "Sv3uVW_fieldGrid",
1062
- "catalogOverview": "Sv3uVW_catalogOverview",
1063
- "tabs": "Sv3uVW_tabs",
1064
- "triggerSlot": "Sv3uVW_triggerSlot",
1063
+ "sqlFeedback": "Sv3uVW_sqlFeedback",
1064
+ "catalogResults": "Sv3uVW_catalogResults",
1065
+ "sqlEmptyString": "Sv3uVW_sqlEmptyString",
1066
+ "workbenchModal": "Sv3uVW_workbenchModal",
1067
+ "connectionSummary": "Sv3uVW_connectionSummary",
1068
+ "schemaPanel": "Sv3uVW_schemaPanel",
1069
+ "catalogError": "Sv3uVW_catalogError",
1070
+ "catalogSearchQuery": "Sv3uVW_catalogSearchQuery",
1071
+ "tree": "Sv3uVW_tree",
1072
+ "nullCell": "Sv3uVW_nullCell",
1073
+ "tabActive": "Sv3uVW_tabActive",
1074
+ "catalogNotice": "Sv3uVW_catalogNotice",
1065
1075
  "catalogSourceName": "Sv3uVW_catalogSourceName",
1066
- "catalogScanTimes": "Sv3uVW_catalogScanTimes",
1067
- "treeItem": "Sv3uVW_treeItem",
1068
- "catalogScanFacts": "Sv3uVW_catalogScanFacts",
1069
- "catalogMeaningCard": "Sv3uVW_catalogMeaningCard",
1070
- "label": "Sv3uVW_label",
1071
- "treeChevron": "Sv3uVW_treeChevron",
1072
- "columnsTable": "Sv3uVW_columnsTable",
1073
- "catalogScanBar": "Sv3uVW_catalogScanBar",
1074
- "catalogBadge_missing": "Sv3uVW_catalogBadge_missing",
1075
- "catalogMeaningMissing": "Sv3uVW_catalogMeaningMissing",
1076
+ "catalogDetailScroll": "Sv3uVW_catalogDetailScroll",
1076
1077
  "catalogMeaningOrigin": "Sv3uVW_catalogMeaningOrigin",
1077
1078
  "catalogActions": "Sv3uVW_catalogActions",
1078
- "catalogStats": "Sv3uVW_catalogStats",
1079
- "catalogToolbar": "Sv3uVW_catalogToolbar",
1080
- "summaryDb": "Sv3uVW_summaryDb",
1081
- "catalogListEmpty": "Sv3uVW_catalogListEmpty",
1079
+ "catalogSearchActions": "Sv3uVW_catalogSearchActions",
1080
+ "catalogDetailCounts": "Sv3uVW_catalogDetailCounts",
1081
+ "sqlResultLimit": "Sv3uVW_sqlResultLimit",
1082
+ "catalogActionGroup": "Sv3uVW_catalogActionGroup",
1083
+ "catalogOverview": "Sv3uVW_catalogOverview",
1084
+ "catalogMeaningField": "Sv3uVW_catalogMeaningField",
1085
+ "catalogSectionLabel": "Sv3uVW_catalogSectionLabel",
1086
+ "catalogBadge": "Sv3uVW_catalogBadge",
1087
+ "catalogTextArea": "Sv3uVW_catalogTextArea",
1088
+ "catalogInlineNotice": "Sv3uVW_catalogInlineNotice",
1089
+ "sqlPageButton": "Sv3uVW_sqlPageButton",
1082
1090
  "catalogBadge_needs_review": "Sv3uVW_catalogBadge_needs_review",
1083
- "sqlMessageError": "Sv3uVW_sqlMessageError",
1084
- "nullCell": "Sv3uVW_nullCell",
1085
- "connectionState": "Sv3uVW_connectionState",
1086
- "catalogList": "Sv3uVW_catalogList",
1087
- "sqlResultTable": "Sv3uVW_sqlResultTable",
1088
- "treeChildren": "Sv3uVW_treeChildren",
1089
1091
  "catalogBadge_changed": "Sv3uVW_catalogBadge_changed",
1090
- "catalogBadge_verified": "Sv3uVW_catalogBadge_verified",
1091
- "catalogBusinessEmpty": "Sv3uVW_catalogBusinessEmpty",
1092
+ "hint": "Sv3uVW_hint",
1093
+ "errorBar": "Sv3uVW_errorBar",
1094
+ "open": "Sv3uVW_open",
1092
1095
  "catalogDetailTitle": "Sv3uVW_catalogDetailTitle",
1093
- "tab": "Sv3uVW_tab",
1094
- "triggerActive": "Sv3uVW_triggerActive",
1095
- "sqlFeedback": "Sv3uVW_sqlFeedback",
1096
- "catalogRelations": "Sv3uVW_catalogRelations",
1097
- "sqlTableEmpty": "Sv3uVW_sqlTableEmpty",
1096
+ "catalogBadge_inferred": "Sv3uVW_catalogBadge_inferred",
1097
+ "sqlResultTable": "Sv3uVW_sqlResultTable",
1098
+ "catalogDetail": "Sv3uVW_catalogDetail",
1099
+ "errorHead": "Sv3uVW_errorHead",
1100
+ "catalogCounts": "Sv3uVW_catalogCounts",
1101
+ "label": "Sv3uVW_label",
1098
1102
  "colCount": "Sv3uVW_colCount",
1099
- "sqlResultPanel": "Sv3uVW_sqlResultPanel",
1100
- "catalogResults": "Sv3uVW_catalogResults",
1101
- "catalogDetailHeader": "Sv3uVW_catalogDetailHeader",
1102
- "catalogItemActive": "Sv3uVW_catalogItemActive",
1103
- "input": "Sv3uVW_input",
1104
- "catalogMeaningCardCompact": "Sv3uVW_catalogMeaningCardCompact",
1103
+ "catalogBadge_restored": "Sv3uVW_catalogBadge_restored",
1104
+ "catalogMeaningFieldMeta": "Sv3uVW_catalogMeaningFieldMeta",
1105
1105
  "catalogBadge_observed": "Sv3uVW_catalogBadge_observed",
1106
- "treeName": "Sv3uVW_treeName",
1107
- "hint": "Sv3uVW_hint",
1108
- "catalogNotice": "Sv3uVW_catalogNotice",
1109
- "catalogSearchActions": "Sv3uVW_catalogSearchActions",
1110
- "catalogDefinition": "Sv3uVW_catalogDefinition",
1106
+ "sqlTableEmpty": "Sv3uVW_sqlTableEmpty",
1107
+ "columnsTable": "Sv3uVW_columnsTable",
1108
+ "catalogProgress": "Sv3uVW_catalogProgress",
1109
+ "catalogListEmpty": "Sv3uVW_catalogListEmpty",
1110
+ "catalogMeaningCardCompact": "Sv3uVW_catalogMeaningCardCompact",
1111
+ "input": "Sv3uVW_input",
1111
1112
  "sqlMessage": "Sv3uVW_sqlMessage",
1112
- "sqlTableScroll": "Sv3uVW_sqlTableScroll",
1113
- "catalogItem": "Sv3uVW_catalogItem",
1114
1113
  "fieldRow2": "Sv3uVW_fieldRow2",
1115
- "catalogLatestLabel": "Sv3uVW_catalogLatestLabel",
1116
- "catalogMeaningActions": "Sv3uVW_catalogMeaningActions",
1117
- "sqlExportActions": "Sv3uVW_sqlExportActions",
1118
- "summaryType": "Sv3uVW_summaryType",
1119
- "catalogBadge_restored": "Sv3uVW_catalogBadge_restored",
1120
- "catalogTextArea": "Sv3uVW_catalogTextArea",
1121
- "catalogMeaningField": "Sv3uVW_catalogMeaningField",
1122
- "sqlPagination": "Sv3uVW_sqlPagination",
1123
- "sqlEmptyString": "Sv3uVW_sqlEmptyString",
1124
- "catalogBadge_unavailable": "Sv3uVW_catalogBadge_unavailable",
1125
- "modalColTitle": "Sv3uVW_modalColTitle",
1126
- "open": "Sv3uVW_open",
1127
- "catalogWorkspace": "Sv3uVW_catalogWorkspace",
1128
- "workbench": "Sv3uVW_workbench",
1114
+ "field": "Sv3uVW_field",
1129
1115
  "sqlInput": "Sv3uVW_sqlInput",
1116
+ "colScroll": "Sv3uVW_colScroll",
1117
+ "sqlResultMeta": "Sv3uVW_sqlResultMeta",
1118
+ "catalogLatestError": "Sv3uVW_catalogLatestError",
1119
+ "catalogScanFacts": "Sv3uVW_catalogScanFacts",
1120
+ "catalogEditor": "Sv3uVW_catalogEditor",
1121
+ "treeItem": "Sv3uVW_treeItem",
1122
+ "catalogMeaningFields": "Sv3uVW_catalogMeaningFields",
1123
+ "catalogFacts": "Sv3uVW_catalogFacts",
1130
1124
  "sqlExportButton": "Sv3uVW_sqlExportButton",
1131
- "errorText": "Sv3uVW_errorText",
1132
- "tree": "Sv3uVW_tree",
1125
+ "catalogDiffBar": "Sv3uVW_catalogDiffBar",
1126
+ "catalogRelations": "Sv3uVW_catalogRelations",
1127
+ "sqlResultEmpty": "Sv3uVW_sqlResultEmpty",
1128
+ "sqlResultPanel": "Sv3uVW_sqlResultPanel",
1129
+ "catalogStats": "Sv3uVW_catalogStats",
1130
+ "emptyStateIcon": "Sv3uVW_emptyStateIcon",
1131
+ "catalogWorkspace": "Sv3uVW_catalogWorkspace",
1132
+ "triggerActive": "Sv3uVW_triggerActive",
1133
+ "catalogList": "Sv3uVW_catalogList",
1134
+ "catalogScanTimes": "Sv3uVW_catalogScanTimes",
1135
+ "sqlPagination": "Sv3uVW_sqlPagination",
1136
+ "sqlMessageError": "Sv3uVW_sqlMessageError",
1137
+ "emptyState": "Sv3uVW_emptyState",
1138
+ "sqlPanel": "Sv3uVW_sqlPanel",
1139
+ "treeChevron": "Sv3uVW_treeChevron",
1140
+ "treeCount": "Sv3uVW_treeCount",
1141
+ "summaryType": "Sv3uVW_summaryType",
1142
+ "catalogPanel": "Sv3uVW_catalogPanel",
1133
1143
  "catalogConfirm": "Sv3uVW_catalogConfirm",
1134
- "typeCell": "Sv3uVW_typeCell",
1135
- "catalogDetailCounts": "Sv3uVW_catalogDetailCounts",
1136
- "catalogDetailScroll": "Sv3uVW_catalogDetailScroll",
1137
- "triggerDot": "Sv3uVW_triggerDot",
1138
- "treeScroll": "Sv3uVW_treeScroll",
1139
- "emptyStateText": "Sv3uVW_emptyStateText",
1140
- "catalogInlineNotice": "Sv3uVW_catalogInlineNotice",
1141
- "catalogMeaningReview": "Sv3uVW_catalogMeaningReview",
1144
+ "catalogItem": "Sv3uVW_catalogItem",
1145
+ "modalHint": "Sv3uVW_modalHint",
1146
+ "shortcutHint": "Sv3uVW_shortcutHint",
1147
+ "rememberRow": "Sv3uVW_rememberRow",
1148
+ "catalogBadge_verified": "Sv3uVW_catalogBadge_verified",
1149
+ "tab": "Sv3uVW_tab",
1150
+ "catalogMeaningCard": "Sv3uVW_catalogMeaningCard",
1142
1151
  "actions": "Sv3uVW_actions",
1143
- "sqlPageActions": "Sv3uVW_sqlPageActions",
1144
- "treeNode": "Sv3uVW_treeNode",
1145
- "treeIcon": "Sv3uVW_treeIcon",
1146
- "tabPanel": "Sv3uVW_tabPanel",
1147
- "workbenchModal": "Sv3uVW_workbenchModal",
1148
- "modalCol": "Sv3uVW_modalCol",
1149
- "catalogBadge": "Sv3uVW_catalogBadge",
1152
+ "catalogItemHead": "Sv3uVW_catalogItemHead",
1153
+ "treeChildren": "Sv3uVW_treeChildren",
1154
+ "catalogItemActive": "Sv3uVW_catalogItemActive",
1155
+ "primary": "Sv3uVW_primary",
1150
1156
  "sqlResultToolbar": "Sv3uVW_sqlResultToolbar",
1151
- "catalogSearchQuery": "Sv3uVW_catalogSearchQuery",
1152
- "catalogEditor": "Sv3uVW_catalogEditor",
1153
- "emptyState": "Sv3uVW_emptyState",
1154
- "catalogControl": "Sv3uVW_catalogControl",
1155
- "sqlResultMeta": "Sv3uVW_sqlResultMeta",
1156
- "catalogSearch": "Sv3uVW_catalogSearch",
1157
- "active": "Sv3uVW_active"
1157
+ "catalogDetailTabActive": "Sv3uVW_catalogDetailTabActive"
1158
1158
  };
1159
1159
  //#endregion
1160
1160
  //#region src/client/QueryResultTable.tsx
@@ -45575,39 +45575,39 @@ window.__ModuleLoader__.load({
45575
45575
  }
45576
45576
  var AnalysisDashboard_module_css_default = {
45577
45577
  "visuallyHidden": "_1tppBG_visuallyHidden",
45578
- "metricLabel": "_1tppBG_metricLabel",
45579
45578
  "empty": "_1tppBG_empty",
45580
- "rowInterrupted": "_1tppBG_rowInterrupted",
45581
- "modal": "_1tppBG_modal",
45582
- "modalHeader": "_1tppBG_modalHeader",
45583
- "metricBand": "_1tppBG_metricBand",
45584
- "chart": "_1tppBG_chart",
45585
- "modalShell": "_1tppBG_modalShell",
45579
+ "metric": "_1tppBG_metric",
45580
+ "row": "_1tppBG_row",
45586
45581
  "modalTitleWrap": "_1tppBG_modalTitleWrap",
45587
- "rowSummary": "_1tppBG_rowSummary",
45588
- "grid": "_1tppBG_grid",
45589
- "preview": "_1tppBG_preview",
45590
45582
  "viewFull": "_1tppBG_viewFull",
45591
- "viewTitle": "_1tppBG_viewTitle",
45592
- "metricValue": "_1tppBG_metricValue",
45593
- "view": "_1tppBG_view",
45594
45583
  "viewHalf": "_1tppBG_viewHalf",
45595
- "rowError": "_1tppBG_rowError",
45596
- "rowHead": "_1tppBG_rowHead",
45584
+ "modal": "_1tppBG_modal",
45585
+ "viewTitle": "_1tppBG_viewTitle",
45597
45586
  "modalBody": "_1tppBG_modalBody",
45598
- "tableWrap": "_1tppBG_tableWrap",
45599
- "rowActions": "_1tppBG_rowActions",
45587
+ "modalSummary": "_1tppBG_modalSummary",
45588
+ "preview": "_1tppBG_preview",
45589
+ "metricValue": "_1tppBG_metricValue",
45600
45590
  "rowTitle": "_1tppBG_rowTitle",
45591
+ "tableWrap": "_1tppBG_tableWrap",
45592
+ "chartCanvas": "_1tppBG_chartCanvas",
45593
+ "rowSummary": "_1tppBG_rowSummary",
45594
+ "grid": "_1tppBG_grid",
45595
+ "view": "_1tppBG_view",
45596
+ "rowButton": "_1tppBG_rowButton",
45597
+ "modalShell": "_1tppBG_modalShell",
45601
45598
  "table": "_1tppBG_table",
45602
- "modalCount": "_1tppBG_modalCount",
45603
- "row": "_1tppBG_row",
45604
- "metric": "_1tppBG_metric",
45605
- "modalClose": "_1tppBG_modalClose",
45606
45599
  "emptyText": "_1tppBG_emptyText",
45607
- "modalSummary": "_1tppBG_modalSummary",
45608
- "chartCanvas": "_1tppBG_chartCanvas",
45609
45600
  "modalTitle": "_1tppBG_modalTitle",
45610
- "rowButton": "_1tppBG_rowButton"
45601
+ "metricLabel": "_1tppBG_metricLabel",
45602
+ "rowHead": "_1tppBG_rowHead",
45603
+ "rowError": "_1tppBG_rowError",
45604
+ "modalHeader": "_1tppBG_modalHeader",
45605
+ "rowActions": "_1tppBG_rowActions",
45606
+ "metricBand": "_1tppBG_metricBand",
45607
+ "modalClose": "_1tppBG_modalClose",
45608
+ "modalCount": "_1tppBG_modalCount",
45609
+ "chart": "_1tppBG_chart",
45610
+ "rowInterrupted": "_1tppBG_rowInterrupted"
45611
45611
  };
45612
45612
  //#endregion
45613
45613
  //#region src/client/AnalysisChart.tsx
@@ -46110,7 +46110,7 @@ window.__ModuleLoader__.load({
46110
46110
  "wb.hint.click": "单击库展开表 · 点击表查看结构",
46111
46111
  "action.config": "连接配置",
46112
46112
  "action.browse": "库表",
46113
- "action.catalog": "数据目录",
46113
+ "action.catalog": "数据治理",
46114
46114
  "catalog.source": "数据源",
46115
46115
  "catalog.source.current": "当前连接(尚未扫描)",
46116
46116
  "catalog.empty": "尚无数据目录。连接数据库后执行首次扫描。",
@@ -46341,7 +46341,7 @@ window.__ModuleLoader__.load({
46341
46341
  "wb.hint.click": "Click a database to expand tables · click a table for columns",
46342
46342
  "action.config": "Connection settings",
46343
46343
  "action.browse": "Tables",
46344
- "action.catalog": "Data Catalog",
46344
+ "action.catalog": "Data Governance",
46345
46345
  "catalog.source": "Source",
46346
46346
  "catalog.source.current": "Current connection (not scanned yet)",
46347
46347
  "catalog.empty": "No Catalog snapshot yet. Connect a database and run the first scan.",