@yejiming/dsh-data-agent 0.1.1 → 0.1.3

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/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
- "catalogDetailHeader": "Sv3uVW_catalogDetailHeader",
1015
- "catalogMeaningActions": "Sv3uVW_catalogMeaningActions",
1016
- "fieldGrid": "Sv3uVW_fieldGrid",
1017
- "modalColTitle": "Sv3uVW_modalColTitle",
1018
- "sqlPageActions": "Sv3uVW_sqlPageActions",
1014
+ "catalogBadge_missing": "Sv3uVW_catalogBadge_missing",
1015
+ "catalogScanFacts": "Sv3uVW_catalogScanFacts",
1016
+ "catalogMeaningMissing": "Sv3uVW_catalogMeaningMissing",
1017
+ "input": "Sv3uVW_input",
1018
+ "errorHead": "Sv3uVW_errorHead",
1019
+ "visuallyHidden": "Sv3uVW_visuallyHidden",
1020
+ "connectionSummary": "Sv3uVW_connectionSummary",
1021
+ "shortcutHint": "Sv3uVW_shortcutHint",
1022
+ "catalogScanTimes": "Sv3uVW_catalogScanTimes",
1019
1023
  "treeNode": "Sv3uVW_treeNode",
1020
- "catalogBadge_retired": "Sv3uVW_catalogBadge_retired",
1021
- "rememberHint": "Sv3uVW_rememberHint",
1022
- "catalogScanBar": "Sv3uVW_catalogScanBar",
1023
- "catalogDefinition": "Sv3uVW_catalogDefinition",
1024
- "sqlTableScroll": "Sv3uVW_sqlTableScroll",
1025
- "treeScroll": "Sv3uVW_treeScroll",
1026
- "catalogMeaningSection": "Sv3uVW_catalogMeaningSection",
1027
- "tabPanel": "Sv3uVW_tabPanel",
1028
- "ghost": "Sv3uVW_ghost",
1029
- "catalogSearch": "Sv3uVW_catalogSearch",
1030
- "modalCol": "Sv3uVW_modalCol",
1031
- "active": "Sv3uVW_active",
1032
- "catalogDetailTab": "Sv3uVW_catalogDetailTab",
1024
+ "emptyStateIcon": "Sv3uVW_emptyStateIcon",
1025
+ "catalogSearchActions": "Sv3uVW_catalogSearchActions",
1033
1026
  "errorText": "Sv3uVW_errorText",
1034
- "visuallyHidden": "Sv3uVW_visuallyHidden",
1035
- "connectionState": "Sv3uVW_connectionState",
1036
- "summaryDb": "Sv3uVW_summaryDb",
1037
- "triggerSlot": "Sv3uVW_triggerSlot",
1038
- "typeCell": "Sv3uVW_typeCell",
1039
- "workbenchModalContent": "Sv3uVW_workbenchModalContent",
1040
- "catalogMeaningMissing": "Sv3uVW_catalogMeaningMissing",
1041
- "workbench": "Sv3uVW_workbench",
1027
+ "sqlFeedback": "Sv3uVW_sqlFeedback",
1028
+ "sqlResultToolbar": "Sv3uVW_sqlResultToolbar",
1029
+ "catalogMeaningFieldMeta": "Sv3uVW_catalogMeaningFieldMeta",
1030
+ "catalogDefinition": "Sv3uVW_catalogDefinition",
1031
+ "catalogDiffBar": "Sv3uVW_catalogDiffBar",
1032
+ "catalogMeaningCardCompact": "Sv3uVW_catalogMeaningCardCompact",
1033
+ "fieldGrid": "Sv3uVW_fieldGrid",
1034
+ "catalogEditor": "Sv3uVW_catalogEditor",
1035
+ "catalogMeaningFields": "Sv3uVW_catalogMeaningFields",
1036
+ "treeName": "Sv3uVW_treeName",
1042
1037
  "sqlNull": "Sv3uVW_sqlNull",
1038
+ "sqlEmptyString": "Sv3uVW_sqlEmptyString",
1039
+ "colScroll": "Sv3uVW_colScroll",
1040
+ "treeCount": "Sv3uVW_treeCount",
1041
+ "catalogBadge_observed": "Sv3uVW_catalogBadge_observed",
1043
1042
  "catalogDetailTabs": "Sv3uVW_catalogDetailTabs",
1044
- "catalogToolbar": "Sv3uVW_catalogToolbar",
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",
1053
- "catalogHistoryItem": "Sv3uVW_catalogHistoryItem",
1043
+ "catalogMeaningOrigin": "Sv3uVW_catalogMeaningOrigin",
1044
+ "sqlResultPanel": "Sv3uVW_sqlResultPanel",
1045
+ "catalogCheck": "Sv3uVW_catalogCheck",
1054
1046
  "catalogMeaningReview": "Sv3uVW_catalogMeaningReview",
1055
- "catalogControl": "Sv3uVW_catalogControl",
1047
+ "catalogSourceName": "Sv3uVW_catalogSourceName",
1048
+ "rememberHint": "Sv3uVW_rememberHint",
1049
+ "columnsTable": "Sv3uVW_columnsTable",
1050
+ "catalogBadge_retired": "Sv3uVW_catalogBadge_retired",
1051
+ "catalogLatestError": "Sv3uVW_catalogLatestError",
1052
+ "catalogSearch": "Sv3uVW_catalogSearch",
1053
+ "catalogMeaningSection": "Sv3uVW_catalogMeaningSection",
1054
+ "catalogStats": "Sv3uVW_catalogStats",
1055
+ "label": "Sv3uVW_label",
1056
+ "catalogDetail": "Sv3uVW_catalogDetail",
1057
+ "sqlInput": "Sv3uVW_sqlInput",
1058
+ "catalogOverview": "Sv3uVW_catalogOverview",
1059
+ "modalHint": "Sv3uVW_modalHint",
1060
+ "open": "Sv3uVW_open",
1061
+ "actions": "Sv3uVW_actions",
1062
+ "treeScroll": "Sv3uVW_treeScroll",
1063
+ "colCount": "Sv3uVW_colCount",
1064
+ "sqlTableScroll": "Sv3uVW_sqlTableScroll",
1065
+ "catalogWorkspace": "Sv3uVW_catalogWorkspace",
1066
+ "summaryDb": "Sv3uVW_summaryDb",
1067
+ "catalogItemActive": "Sv3uVW_catalogItemActive",
1056
1068
  "emptyStateText": "Sv3uVW_emptyStateText",
1057
- "catalogLatestLabel": "Sv3uVW_catalogLatestLabel",
1058
- "treeName": "Sv3uVW_treeName",
1059
- "treeIcon": "Sv3uVW_treeIcon",
1069
+ "catalogConfirm": "Sv3uVW_catalogConfirm",
1070
+ "triggerActive": "Sv3uVW_triggerActive",
1071
+ "catalogActions": "Sv3uVW_catalogActions",
1072
+ "catalogDetailTabActive": "Sv3uVW_catalogDetailTabActive",
1073
+ "catalogDetailScroll": "Sv3uVW_catalogDetailScroll",
1074
+ "errorBar": "Sv3uVW_errorBar",
1075
+ "catalogDetailCounts": "Sv3uVW_catalogDetailCounts",
1076
+ "emptyState": "Sv3uVW_emptyState",
1077
+ "tab": "Sv3uVW_tab",
1078
+ "catalogItem": "Sv3uVW_catalogItem",
1079
+ "catalogBadge": "Sv3uVW_catalogBadge",
1080
+ "sqlExportActions": "Sv3uVW_sqlExportActions",
1081
+ "tree": "Sv3uVW_tree",
1082
+ "catalogFacts": "Sv3uVW_catalogFacts",
1083
+ "connectionState": "Sv3uVW_connectionState",
1084
+ "catalogScanBar": "Sv3uVW_catalogScanBar",
1085
+ "summaryType": "Sv3uVW_summaryType",
1086
+ "fieldRow2": "Sv3uVW_fieldRow2",
1087
+ "catalogBusinessEmpty": "Sv3uVW_catalogBusinessEmpty",
1088
+ "catalogMeaningField": "Sv3uVW_catalogMeaningField",
1089
+ "sqlPanel": "Sv3uVW_sqlPanel",
1090
+ "sqlMessageError": "Sv3uVW_sqlMessageError",
1091
+ "triggerSlot": "Sv3uVW_triggerSlot",
1060
1092
  "catalogLatestRun": "Sv3uVW_catalogLatestRun",
1061
1093
  "trigger": "Sv3uVW_trigger",
1062
- "catalogCheck": "Sv3uVW_catalogCheck",
1063
- "sqlFeedback": "Sv3uVW_sqlFeedback",
1094
+ "nullCell": "Sv3uVW_nullCell",
1095
+ "catalogControl": "Sv3uVW_catalogControl",
1064
1096
  "catalogResults": "Sv3uVW_catalogResults",
1065
- "sqlEmptyString": "Sv3uVW_sqlEmptyString",
1066
- "workbenchModal": "Sv3uVW_workbenchModal",
1067
- "connectionSummary": "Sv3uVW_connectionSummary",
1068
- "schemaPanel": "Sv3uVW_schemaPanel",
1069
- "catalogError": "Sv3uVW_catalogError",
1070
1097
  "catalogSearchQuery": "Sv3uVW_catalogSearchQuery",
1071
- "tree": "Sv3uVW_tree",
1072
- "nullCell": "Sv3uVW_nullCell",
1073
- "tabActive": "Sv3uVW_tabActive",
1098
+ "catalogBadge_unavailable": "Sv3uVW_catalogBadge_unavailable",
1099
+ "treeChevron": "Sv3uVW_treeChevron",
1100
+ "tabPanel": "Sv3uVW_tabPanel",
1101
+ "treeIcon": "Sv3uVW_treeIcon",
1102
+ "catalogToolbar": "Sv3uVW_catalogToolbar",
1103
+ "catalogDetailTitle": "Sv3uVW_catalogDetailTitle",
1104
+ "catalogListEmpty": "Sv3uVW_catalogListEmpty",
1105
+ "sqlExportButton": "Sv3uVW_sqlExportButton",
1106
+ "catalogMeaningCard": "Sv3uVW_catalogMeaningCard",
1107
+ "hint": "Sv3uVW_hint",
1108
+ "active": "Sv3uVW_active",
1109
+ "catalogLatestLabel": "Sv3uVW_catalogLatestLabel",
1074
1110
  "catalogNotice": "Sv3uVW_catalogNotice",
1075
- "catalogSourceName": "Sv3uVW_catalogSourceName",
1076
- "catalogDetailScroll": "Sv3uVW_catalogDetailScroll",
1077
- "catalogMeaningOrigin": "Sv3uVW_catalogMeaningOrigin",
1078
- "catalogActions": "Sv3uVW_catalogActions",
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",
1111
+ "catalogList": "Sv3uVW_catalogList",
1112
+ "catalogBadge_verified": "Sv3uVW_catalogBadge_verified",
1090
1113
  "catalogBadge_needs_review": "Sv3uVW_catalogBadge_needs_review",
1091
- "catalogBadge_changed": "Sv3uVW_catalogBadge_changed",
1092
- "hint": "Sv3uVW_hint",
1093
- "errorBar": "Sv3uVW_errorBar",
1094
- "open": "Sv3uVW_open",
1095
- "catalogDetailTitle": "Sv3uVW_catalogDetailTitle",
1096
- "catalogBadge_inferred": "Sv3uVW_catalogBadge_inferred",
1097
- "sqlResultTable": "Sv3uVW_sqlResultTable",
1098
- "catalogDetail": "Sv3uVW_catalogDetail",
1099
- "errorHead": "Sv3uVW_errorHead",
1114
+ "primary": "Sv3uVW_primary",
1100
1115
  "catalogCounts": "Sv3uVW_catalogCounts",
1101
- "label": "Sv3uVW_label",
1102
- "colCount": "Sv3uVW_colCount",
1116
+ "sqlPagination": "Sv3uVW_sqlPagination",
1117
+ "catalogActionGroup": "Sv3uVW_catalogActionGroup",
1103
1118
  "catalogBadge_restored": "Sv3uVW_catalogBadge_restored",
1104
- "catalogMeaningFieldMeta": "Sv3uVW_catalogMeaningFieldMeta",
1105
- "catalogBadge_observed": "Sv3uVW_catalogBadge_observed",
1106
1119
  "sqlTableEmpty": "Sv3uVW_sqlTableEmpty",
1107
- "columnsTable": "Sv3uVW_columnsTable",
1108
- "catalogProgress": "Sv3uVW_catalogProgress",
1109
- "catalogListEmpty": "Sv3uVW_catalogListEmpty",
1110
- "catalogMeaningCardCompact": "Sv3uVW_catalogMeaningCardCompact",
1111
- "input": "Sv3uVW_input",
1112
- "sqlMessage": "Sv3uVW_sqlMessage",
1113
- "fieldRow2": "Sv3uVW_fieldRow2",
1114
1120
  "field": "Sv3uVW_field",
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",
1124
- "sqlExportButton": "Sv3uVW_sqlExportButton",
1125
- "catalogDiffBar": "Sv3uVW_catalogDiffBar",
1121
+ "typeCell": "Sv3uVW_typeCell",
1122
+ "triggerDot": "Sv3uVW_triggerDot",
1123
+ "modalColTitle": "Sv3uVW_modalColTitle",
1124
+ "errorIcon": "Sv3uVW_errorIcon",
1125
+ "catalogItemHead": "Sv3uVW_catalogItemHead",
1126
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",
1143
- "catalogConfirm": "Sv3uVW_catalogConfirm",
1144
- "catalogItem": "Sv3uVW_catalogItem",
1145
- "modalHint": "Sv3uVW_modalHint",
1146
- "shortcutHint": "Sv3uVW_shortcutHint",
1127
+ "workbench": "Sv3uVW_workbench",
1128
+ "sqlMessage": "Sv3uVW_sqlMessage",
1129
+ "catalogDetailTab": "Sv3uVW_catalogDetailTab",
1130
+ "ghost": "Sv3uVW_ghost",
1131
+ "catalogMeaningActions": "Sv3uVW_catalogMeaningActions",
1132
+ "sqlResultTable": "Sv3uVW_sqlResultTable",
1133
+ "sqlResultLimit": "Sv3uVW_sqlResultLimit",
1134
+ "schemaPanel": "Sv3uVW_schemaPanel",
1135
+ "sqlPageActions": "Sv3uVW_sqlPageActions",
1136
+ "catalogTextArea": "Sv3uVW_catalogTextArea",
1137
+ "sqlActions": "Sv3uVW_sqlActions",
1138
+ "catalogSectionLabel": "Sv3uVW_catalogSectionLabel",
1139
+ "tabs": "Sv3uVW_tabs",
1140
+ "modalCol": "Sv3uVW_modalCol",
1141
+ "sqlPageButton": "Sv3uVW_sqlPageButton",
1142
+ "catalogError": "Sv3uVW_catalogError",
1147
1143
  "rememberRow": "Sv3uVW_rememberRow",
1148
- "catalogBadge_verified": "Sv3uVW_catalogBadge_verified",
1149
- "tab": "Sv3uVW_tab",
1150
- "catalogMeaningCard": "Sv3uVW_catalogMeaningCard",
1151
- "actions": "Sv3uVW_actions",
1152
- "catalogItemHead": "Sv3uVW_catalogItemHead",
1144
+ "catalogInlineNotice": "Sv3uVW_catalogInlineNotice",
1145
+ "workbenchModal": "Sv3uVW_workbenchModal",
1146
+ "sqlResultMeta": "Sv3uVW_sqlResultMeta",
1147
+ "catalogDetailHeader": "Sv3uVW_catalogDetailHeader",
1148
+ "workbenchModalContent": "Sv3uVW_workbenchModalContent",
1149
+ "catalogPanel": "Sv3uVW_catalogPanel",
1150
+ "catalogBadge_inferred": "Sv3uVW_catalogBadge_inferred",
1151
+ "tabActive": "Sv3uVW_tabActive",
1152
+ "catalogProgress": "Sv3uVW_catalogProgress",
1153
+ "catalogBadge_changed": "Sv3uVW_catalogBadge_changed",
1154
+ "sqlResultEmpty": "Sv3uVW_sqlResultEmpty",
1153
1155
  "treeChildren": "Sv3uVW_treeChildren",
1154
- "catalogItemActive": "Sv3uVW_catalogItemActive",
1155
- "primary": "Sv3uVW_primary",
1156
- "sqlResultToolbar": "Sv3uVW_sqlResultToolbar",
1157
- "catalogDetailTabActive": "Sv3uVW_catalogDetailTabActive"
1156
+ "catalogHistoryItem": "Sv3uVW_catalogHistoryItem",
1157
+ "treeItem": "Sv3uVW_treeItem"
1158
1158
  };
1159
1159
  //#endregion
1160
1160
  //#region src/client/QueryResultTable.tsx
@@ -45574,40 +45574,40 @@ window.__ModuleLoader__.load({
45574
45574
  document.head.appendChild(tag);
45575
45575
  }
45576
45576
  var AnalysisDashboard_module_css_default = {
45577
- "visuallyHidden": "_1tppBG_visuallyHidden",
45578
- "empty": "_1tppBG_empty",
45579
- "metric": "_1tppBG_metric",
45580
- "row": "_1tppBG_row",
45581
- "modalTitleWrap": "_1tppBG_modalTitleWrap",
45582
- "viewFull": "_1tppBG_viewFull",
45583
- "viewHalf": "_1tppBG_viewHalf",
45584
- "modal": "_1tppBG_modal",
45585
- "viewTitle": "_1tppBG_viewTitle",
45577
+ "modalClose": "_1tppBG_modalClose",
45586
45578
  "modalBody": "_1tppBG_modalBody",
45587
- "modalSummary": "_1tppBG_modalSummary",
45588
- "preview": "_1tppBG_preview",
45589
- "metricValue": "_1tppBG_metricValue",
45590
- "rowTitle": "_1tppBG_rowTitle",
45591
45579
  "tableWrap": "_1tppBG_tableWrap",
45592
- "chartCanvas": "_1tppBG_chartCanvas",
45593
45580
  "rowSummary": "_1tppBG_rowSummary",
45594
- "grid": "_1tppBG_grid",
45595
45581
  "view": "_1tppBG_view",
45596
- "rowButton": "_1tppBG_rowButton",
45597
- "modalShell": "_1tppBG_modalShell",
45598
- "table": "_1tppBG_table",
45582
+ "metric": "_1tppBG_metric",
45583
+ "rowError": "_1tppBG_rowError",
45599
45584
  "emptyText": "_1tppBG_emptyText",
45600
- "modalTitle": "_1tppBG_modalTitle",
45585
+ "rowInterrupted": "_1tppBG_rowInterrupted",
45586
+ "metricValue": "_1tppBG_metricValue",
45587
+ "rowButton": "_1tppBG_rowButton",
45601
45588
  "metricLabel": "_1tppBG_metricLabel",
45589
+ "table": "_1tppBG_table",
45602
45590
  "rowHead": "_1tppBG_rowHead",
45603
- "rowError": "_1tppBG_rowError",
45591
+ "metricBand": "_1tppBG_metricBand",
45592
+ "rowTitle": "_1tppBG_rowTitle",
45593
+ "viewFull": "_1tppBG_viewFull",
45604
45594
  "modalHeader": "_1tppBG_modalHeader",
45595
+ "grid": "_1tppBG_grid",
45596
+ "modal": "_1tppBG_modal",
45597
+ "chartCanvas": "_1tppBG_chartCanvas",
45598
+ "viewHalf": "_1tppBG_viewHalf",
45605
45599
  "rowActions": "_1tppBG_rowActions",
45606
- "metricBand": "_1tppBG_metricBand",
45607
- "modalClose": "_1tppBG_modalClose",
45608
- "modalCount": "_1tppBG_modalCount",
45600
+ "modalTitleWrap": "_1tppBG_modalTitleWrap",
45601
+ "row": "_1tppBG_row",
45602
+ "empty": "_1tppBG_empty",
45609
45603
  "chart": "_1tppBG_chart",
45610
- "rowInterrupted": "_1tppBG_rowInterrupted"
45604
+ "modalTitle": "_1tppBG_modalTitle",
45605
+ "modalSummary": "_1tppBG_modalSummary",
45606
+ "modalShell": "_1tppBG_modalShell",
45607
+ "preview": "_1tppBG_preview",
45608
+ "modalCount": "_1tppBG_modalCount",
45609
+ "viewTitle": "_1tppBG_viewTitle",
45610
+ "visuallyHidden": "_1tppBG_visuallyHidden"
45611
45611
  };
45612
45612
  //#endregion
45613
45613
  //#region src/client/AnalysisChart.tsx
@@ -1,4 +1,4 @@
1
- import { C as isDatabaseType, S as defaultDatabasePort$1, b as DATABASE_TYPES, i as validatePasswordRef, r as redactSecretText, x as databaseTypeLabel$1 } from "./connections-CFXOZTHZ.js";
1
+ import { C as isDatabaseType, S as defaultDatabasePort$1, b as DATABASE_TYPES, i as validatePasswordRef, r as redactSecretText, x as databaseTypeLabel$1 } from "./connections-eb9xwiLF.js";
2
2
  import { RUN_CODE_NAME } from "@deepseek-ai/dsh-tools";
3
3
  //#region src/tui-connection-form.ts
4
4
  /**
package/lib/command.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as executeDatabaseCommand, c as isDshTuiPluginLoaded, d as parseDatabaseAction, i as apply, l as name, n as DATA_AGENT_TOOL_NAMES, o as formatConnectionStatus, r as DSH_TUI_PLUGIN_RUNTIME_NAME, s as inject, t as DATABASE_COMMAND_USAGE, u as parseConnectArguments } from "./command-CzzSPmag.js";
1
+ import { a as executeDatabaseCommand, c as isDshTuiPluginLoaded, d as parseDatabaseAction, i as apply, l as name, n as DATA_AGENT_TOOL_NAMES, o as formatConnectionStatus, r as DSH_TUI_PLUGIN_RUNTIME_NAME, s as inject, t as DATABASE_COMMAND_USAGE, u as parseConnectArguments } from "./command-CzqwgIFj.js";
2
2
  export { DATABASE_COMMAND_USAGE, DATA_AGENT_TOOL_NAMES, DSH_TUI_PLUGIN_RUNTIME_NAME, apply, executeDatabaseCommand, formatConnectionStatus, inject, isDshTuiPluginLoaded, name, parseConnectArguments, parseDatabaseAction };
@@ -807,16 +807,16 @@ function rewriteTopLevelLimit(sql, maxRows) {
807
807
  }
808
808
  return sql;
809
809
  }
810
+ const METADATA_IDENTIFIER = /^[\p{L}\p{M}\p{N}_$]+$/u;
810
811
  /**
811
812
  * Validate and quote one schema/table identifier for a safe metadata query.
812
- * Identifiers are restricted to `[A-Za-z0-9_$]+` and then wrapped per type:
813
- * backticks (mysql/hive/impala) or double quotes (postgres/oracle/sqlite),
814
- * with the wrapping quote doubled for any interior occurrence. Rejects any
815
- * input that could cross the identifier boundary (`#`, `--`, `;`, `'`, `` ` ``,
816
- * `"`, `.`, `-` are all refused).
813
+ * Identifiers accept Unicode letters, combining marks and numbers plus `_`/`$`
814
+ * without normalizing or case-folding the database-provided text. Each value is
815
+ * then wrapped for its dialect. Whitespace, controls, punctuation and quoting
816
+ * delimiters remain outside the deliberately narrow metadata-input boundary.
817
817
  */
818
818
  function sanitizeIdentifier(type, identifier) {
819
- if (!/^[A-Za-z0-9_$]+$/.test(identifier)) throw new Error(`标识符含非法字符(仅允许字母、数字与 _ $):${identifier}`);
819
+ if (!METADATA_IDENTIFIER.test(identifier)) throw new Error(`标识符含非法字符(仅允许 Unicode 字母、组合标记、数字与 _ $):${identifier}`);
820
820
  switch (type) {
821
821
  case "mysql":
822
822
  case "doris":
@@ -834,8 +834,8 @@ function sanitizeIdentifier(type, identifier) {
834
834
  * interior `'` doubled). postgres/oracle metadata queries filter system
835
835
  * catalogs by NAME (a string value), not by identifier, so those positions
836
836
  * need a quoted literal — not {@link sanitizeIdentifier}'s identifier quoting.
837
- * The whitelist already excludes `'`, so doubling is a defense-in-depth no-op
838
- * here but keeps the helper correct for any future widened charset.
837
+ * The whitelist excludes `'`, so doubling is a defense-in-depth no-op here but
838
+ * keeps the helper correct for any future widened metadata-input boundary.
839
839
  */
840
840
  function quoteStringLiteral(value) {
841
841
  return "'" + value.replace(/'/g, "''") + "'";
@@ -1052,15 +1052,32 @@ function stdinPrefix(type, connection) {
1052
1052
  function structuredStdinPrefix(type, connection) {
1053
1053
  if (type !== "oracle") return stdinPrefix(type, connection);
1054
1054
  return `${[
1055
- "SET PAGESIZE 0",
1055
+ "SET PAGESIZE 50000",
1056
1056
  "SET FEEDBACK OFF",
1057
1057
  "SET HEADING ON",
1058
1058
  "SET UNDERLINE OFF",
1059
+ "SET LINESIZE 32767",
1060
+ "SET WRAP OFF",
1061
+ "SET RECSEP OFF",
1062
+ "SET ECHO OFF",
1063
+ "SET VERIFY OFF",
1059
1064
  "SET COLSEP '|'",
1060
1065
  "SET TRIMSPOOL ON",
1066
+ "WHENEVER OSERROR EXIT FAILURE",
1067
+ "WHENEVER SQLERROR EXIT FAILURE",
1061
1068
  connection.user !== void 0 ? `connect ${connection.user}${connection.password !== void 0 ? `/${connection.password}` : ""}@${connection.host ?? "127.0.0.1"}:${connection.port ?? defaultDatabasePort("oracle")}/${connection.database}` : ""
1062
1069
  ].filter((line) => line !== "").join("\n")}\n`;
1063
1070
  }
1071
+ /**
1072
+ * Compose one complete client stdin payload. Oracle's structured SQL*Plus
1073
+ * mode is a script protocol rather than an EOF-delimited command: normalize
1074
+ * the already-validated statement to one terminator and exit explicitly.
1075
+ * Raw/introspection modes and every other client preserve the legacy payload.
1076
+ */
1077
+ function buildClientStdin(type, mode, prefix, sql) {
1078
+ if (type === "oracle" && mode === "structured") return `${prefix}${stripTrailingTerminator(sql)};\nEXIT SUCCESS\n`;
1079
+ return `${prefix}${sql}\n`;
1080
+ }
1064
1081
  /** Apply one deployment override's extra args in front of the built-in flags. */
1065
1082
  function withOverrides(flags, override) {
1066
1083
  if (override === void 0 || override.args === void 0) return flags;
@@ -1124,8 +1141,9 @@ function tableListingSql(type, connection) {
1124
1141
  }
1125
1142
  }
1126
1143
  /**
1127
- * Metadata query per kind × type. `schema`/`table` are identifier whitelist
1128
- * validated by the caller (`[A-Za-z0-9_$]`) before they reach here.
1144
+ * Metadata query per kind × type. `schema`/`table` are validated by the shared
1145
+ * connection service before they reach here; builders still quote identifier
1146
+ * positions or escape value positions rather than concatenating raw text.
1129
1147
  */
1130
1148
  function metadataQuery(kind, type, schema, table) {
1131
1149
  switch (kind) {
@@ -1710,12 +1728,13 @@ async function runClientQuery(ctx, connection, sql, options, externalSignal, int
1710
1728
  if (externalSignal.aborted) controller.abort(externalSignal.reason);
1711
1729
  else externalSignal.addEventListener("abort", onExternalAbort, { once: true });
1712
1730
  try {
1731
+ const mode = options.mode ?? (introspect ? "introspect" : "query");
1713
1732
  if (connection.type === "clickhouse") return await runClickHouseQuery(connection, sql, {
1714
1733
  ...options,
1715
- mode: options.mode ?? (introspect ? "introspect" : "query")
1734
+ mode
1716
1735
  }, controller.signal);
1717
1736
  if (connection.type === "sqlserver") assertSqlServerSafeInput(sql);
1718
- const template = options.mode === "structured" ? buildStructuredQueryTemplate(connection.type, connection, options.clients[connection.type]) : options.mode === "introspect" || introspect ? buildIntrospectTemplate(connection.type, connection, options.clients[connection.type]) : buildClientTemplate(connection.type, connection, options.clients[connection.type]);
1737
+ const template = mode === "structured" ? buildStructuredQueryTemplate(connection.type, connection, options.clients[connection.type]) : mode === "introspect" ? buildIntrospectTemplate(connection.type, connection, options.clients[connection.type]) : buildClientTemplate(connection.type, connection, options.clients[connection.type]);
1719
1738
  const resolution = await resolveClientExecutable({
1720
1739
  type: connection.type,
1721
1740
  command: template.command,
@@ -1728,7 +1747,7 @@ async function runClientQuery(ctx, connection, sql, options, externalSignal, int
1728
1747
  argv: [resolution.executable, ...template.args],
1729
1748
  cwd: process.cwd(),
1730
1749
  stdio: {
1731
- stdin: { data: `${template.stdinPrefix}${sql}\n` },
1750
+ stdin: { data: buildClientStdin(connection.type, mode, template.stdinPrefix, sql) },
1732
1751
  stdout: { maxBytes: options.maxResultChars },
1733
1752
  stderr: { maxBytes: options.maxResultChars }
1734
1753
  },
@@ -1746,12 +1765,14 @@ async function runClientQuery(ctx, connection, sql, options, externalSignal, int
1746
1765
  if (controller.signal.aborted) controller.signal.throwIfAborted();
1747
1766
  const stdout = readCaptured(handle.collected.stdout);
1748
1767
  const stderr = readCaptured(handle.collected.stderr);
1749
- return {
1768
+ const result = {
1750
1769
  exitCode: outcome.exitCode,
1751
1770
  stdout: connection.type === "sqlserver" ? stripSqlServerRowCountFooter(stdout.text) : stdout.text,
1752
1771
  stderr: stderr.text,
1753
1772
  truncated: stdout.truncated || stderr.truncated
1754
1773
  };
1774
+ if (connection.type === "oracle" && mode === "structured" && result.exitCode === 0 && result.stdout.trim() === "") throw new Error("Oracle SQL*Plus结构化查询成功退出但stdout为空,未返回可解析的列标题或数据");
1775
+ return result;
1755
1776
  } finally {
1756
1777
  clearTimeout(timer);
1757
1778
  externalSignal.removeEventListener("abort", onExternalAbort);
package/lib/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { _ as clientsSchema, b as DATABASE_TYPES, c as DEFAULT_CATALOG_MAX_RESULT_CHARS, d as DEFAULT_CONNECT_TIMEOUT_MS, f as DEFAULT_MAX_QUERY_CHARS, h as DEFAULT_QUERY_TIMEOUT_MS, l as DEFAULT_CATALOG_MAX_TEXT_CHARS, m as DEFAULT_PRESET_ID, p as DEFAULT_MAX_RESULT_CHARS, s as DEFAULT_CATALOG_MAX_ASSETS, t as createConnectionService, u as DEFAULT_CATALOG_QUERY_TIMEOUT_MS } from "./connections-CFXOZTHZ.js";
2
- import { a as catalogDateTimeSchema, c as catalogRunSchema, f as catalogSemanticEntrySchema, i as catalogAssetRevisionSchema, m as catalogSourceSchema, n as createCatalogService, o as catalogObservationSchema, p as catalogSemanticRevisionSchema, r as catalogAssetHeadSchema, s as catalogRelationSchema, u as catalogSearchItemSchema } from "./catalog-DEJqOXRo.js";
3
- import { i as apply$1 } from "./command-CzzSPmag.js";
4
- import { n as apply$2 } from "./tool-DNkywSph.js";
1
+ import { _ as clientsSchema, b as DATABASE_TYPES, c as DEFAULT_CATALOG_MAX_RESULT_CHARS, d as DEFAULT_CONNECT_TIMEOUT_MS, f as DEFAULT_MAX_QUERY_CHARS, h as DEFAULT_QUERY_TIMEOUT_MS, l as DEFAULT_CATALOG_MAX_TEXT_CHARS, m as DEFAULT_PRESET_ID, p as DEFAULT_MAX_RESULT_CHARS, s as DEFAULT_CATALOG_MAX_ASSETS, t as createConnectionService, u as DEFAULT_CATALOG_QUERY_TIMEOUT_MS } from "./connections-eb9xwiLF.js";
2
+ import { a as catalogDateTimeSchema, c as catalogRunSchema, f as catalogSemanticEntrySchema, i as catalogAssetRevisionSchema, m as catalogSourceSchema, n as createCatalogService, o as catalogObservationSchema, p as catalogSemanticRevisionSchema, r as catalogAssetHeadSchema, s as catalogRelationSchema, u as catalogSearchItemSchema } from "./catalog-D0SV_6Jv.js";
3
+ import { i as apply$1 } from "./command-CzqwgIFj.js";
4
+ import { n as apply$2 } from "./tool-B7CC1EPd.js";
5
5
  import { createHash } from "node:crypto";
6
6
  import { access, cp, mkdir, readFile, writeFile } from "node:fs/promises";
7
7
  import { homedir } from "node:os";
package/lib/routes.js CHANGED
@@ -1,5 +1,5 @@
1
- import { C as isDatabaseType, b as DATABASE_TYPES, d as DEFAULT_CONNECT_TIMEOUT_MS, f as DEFAULT_MAX_QUERY_CHARS, h as DEFAULT_QUERY_TIMEOUT_MS, p as DEFAULT_MAX_RESULT_CHARS } from "./connections-CFXOZTHZ.js";
2
- import { d as catalogSearchRequestSchema, h as semanticDefinitionSchema, l as catalogScopeSchema, t as CatalogVersionConflictError } from "./catalog-DEJqOXRo.js";
1
+ import { C as isDatabaseType, b as DATABASE_TYPES, d as DEFAULT_CONNECT_TIMEOUT_MS, f as DEFAULT_MAX_QUERY_CHARS, h as DEFAULT_QUERY_TIMEOUT_MS, p as DEFAULT_MAX_RESULT_CHARS } from "./connections-eb9xwiLF.js";
2
+ import { d as catalogSearchRequestSchema, h as semanticDefinitionSchema, l as catalogScopeSchema, t as CatalogVersionConflictError } from "./catalog-D0SV_6Jv.js";
3
3
  import { resolve } from "node:path";
4
4
  import z from "schemastery";
5
5
  import { z as z$1 } from "zod";
@@ -1,4 +1,4 @@
1
- import { _ as clientsSchema, a as parseStructuredQueryOutput, f as DEFAULT_MAX_QUERY_CHARS, g as classifyStatement, h as DEFAULT_QUERY_TIMEOUT_MS, n as redactQueryResult, o as runClientQuery, p as DEFAULT_MAX_RESULT_CHARS, r as redactSecretText, v as enforceReadRowLimit, y as assertSingleStatement } from "./connections-CFXOZTHZ.js";
1
+ import { _ as clientsSchema, a as parseStructuredQueryOutput, f as DEFAULT_MAX_QUERY_CHARS, g as classifyStatement, h as DEFAULT_QUERY_TIMEOUT_MS, n as redactQueryResult, o as runClientQuery, p as DEFAULT_MAX_RESULT_CHARS, r as redactSecretText, v as enforceReadRowLimit, y as assertSingleStatement } from "./connections-eb9xwiLF.js";
2
2
  import { l as normalizeCatalogText } from "./catalog-identity-CVftmvQL.js";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { link, mkdir, unlink, writeFile } from "node:fs/promises";
package/lib/tool.js CHANGED
@@ -1,2 +1,2 @@
1
- import { i as name, n as apply, r as inject, t as Config } from "./tool-DNkywSph.js";
1
+ import { i as name, n as apply, r as inject, t as Config } from "./tool-B7CC1EPd.js";
2
2
  export { Config, apply, inject, name };
@@ -38,11 +38,10 @@ export declare function enforceReadRowLimit(sql: string, type: DatabaseType, max
38
38
  export declare const SQLSERVER_COLUMN_SEPARATOR = "\u001F";
39
39
  /**
40
40
  * Validate and quote one schema/table identifier for a safe metadata query.
41
- * Identifiers are restricted to `[A-Za-z0-9_$]+` and then wrapped per type:
42
- * backticks (mysql/hive/impala) or double quotes (postgres/oracle/sqlite),
43
- * with the wrapping quote doubled for any interior occurrence. Rejects any
44
- * input that could cross the identifier boundary (`#`, `--`, `;`, `'`, `` ` ``,
45
- * `"`, `.`, `-` are all refused).
41
+ * Identifiers accept Unicode letters, combining marks and numbers plus `_`/`$`
42
+ * without normalizing or case-folding the database-provided text. Each value is
43
+ * then wrapped for its dialect. Whitespace, controls, punctuation and quoting
44
+ * delimiters remain outside the deliberately narrow metadata-input boundary.
46
45
  */
47
46
  export declare function sanitizeIdentifier(type: DatabaseType, identifier: string): string;
48
47
  /** One deployment override for a database type's CLI client. */
@@ -90,6 +89,13 @@ export interface ClientTemplate {
90
89
  /** stdin text written BEFORE the SQL (Oracle SET/connect, Hive !connect); '' otherwise. */
91
90
  stdinPrefix: string;
92
91
  }
92
+ /**
93
+ * Compose one complete client stdin payload. Oracle's structured SQL*Plus
94
+ * mode is a script protocol rather than an EOF-delimited command: normalize
95
+ * the already-validated statement to one terminator and exit explicitly.
96
+ * Raw/introspection modes and every other client preserve the legacy payload.
97
+ */
98
+ export declare function buildClientStdin(type: DatabaseType, mode: 'query' | 'introspect' | 'structured', prefix: string, sql: string): string;
93
99
  /**
94
100
  * Build one client invocation for a query execution (plain output). Flags
95
101
  * come BEFORE the connection arguments everywhere: sqlite3 takes
@@ -112,8 +118,9 @@ export declare function buildStructuredQueryTemplate(type: DatabaseType, connect
112
118
  */
113
119
  export declare function tableListingSql(type: DatabaseType, connection?: DatabaseConnection): string;
114
120
  /**
115
- * Metadata query per kind × type. `schema`/`table` are identifier whitelist
116
- * validated by the caller (`[A-Za-z0-9_$]`) before they reach here.
121
+ * Metadata query per kind × type. `schema`/`table` are validated by the shared
122
+ * connection service before they reach here; builders still quote identifier
123
+ * positions or escape value positions rather than concatenating raw text.
117
124
  */
118
125
  export declare function metadataQuery(kind: 'schemas' | 'tables' | 'describe', type: DatabaseType, schema?: string, table?: string): string;
119
126
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@yejiming/dsh-data-agent",
3
3
  "description": "Data Agent for DSH Web and TUI: shared database connections, versioned metadata Catalog governance, secure credentials, SQL and Catalog tools, and the data-agent preset",
4
- "version": "0.1.1",
4
+ "version": "0.1.3",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },