@sparkelf/dsh-dataops-managed 0.3.25 → 0.3.27

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
@@ -747,22 +747,22 @@ window.__ModuleLoader__.load({
747
747
  document.head.appendChild(tag);
748
748
  }
749
749
  var ManagedDataOpsSection_module_css_default = {
750
- "reviewRow": "_2dqzjG_reviewRow",
751
- "section": "_2dqzjG_section",
752
- "status": "_2dqzjG_status",
753
- "copy": "_2dqzjG_copy",
754
- "actions": "_2dqzjG_actions",
755
- "reviewActions": "_2dqzjG_reviewActions",
756
750
  "heading": "_2dqzjG_heading",
757
- "label": "_2dqzjG_label",
758
751
  "row": "_2dqzjG_row",
759
- "reviewHint": "_2dqzjG_reviewHint",
760
- "refusal": "_2dqzjG_refusal",
761
752
  "title": "_2dqzjG_title",
753
+ "label": "_2dqzjG_label",
762
754
  "card": "_2dqzjG_card",
763
- "reviewRows": "_2dqzjG_reviewRows",
755
+ "refusal": "_2dqzjG_refusal",
756
+ "reviewRow": "_2dqzjG_reviewRow",
764
757
  "fields": "_2dqzjG_fields",
765
- "meta": "_2dqzjG_meta"
758
+ "reviewRows": "_2dqzjG_reviewRows",
759
+ "reviewActions": "_2dqzjG_reviewActions",
760
+ "meta": "_2dqzjG_meta",
761
+ "section": "_2dqzjG_section",
762
+ "copy": "_2dqzjG_copy",
763
+ "reviewHint": "_2dqzjG_reviewHint",
764
+ "actions": "_2dqzjG_actions",
765
+ "status": "_2dqzjG_status"
766
766
  };
767
767
  //#endregion
768
768
  //#region src/client/ReviewSettingsCard.tsx
@@ -1617,24 +1617,24 @@ window.__ModuleLoader__.load({
1617
1617
  document.head.appendChild(tag);
1618
1618
  }
1619
1619
  var NotificationBell_module_css_default = {
1620
- "bell": "tE0trG_bell",
1621
- "linkButton": "tE0trG_linkButton",
1622
1620
  "button": "tE0trG_button",
1623
- "dialog": "tE0trG_dialog",
1624
- "rowTime": "tE0trG_rowTime",
1625
- "empty": "tE0trG_empty",
1621
+ "list": "tE0trG_list",
1622
+ "row": "tE0trG_row",
1626
1623
  "badge": "tE0trG_badge",
1627
- "demo": "tE0trG_demo",
1624
+ "bell": "tE0trG_bell",
1625
+ "rowTime": "tE0trG_rowTime",
1626
+ "linkButton": "tE0trG_linkButton",
1628
1627
  "rowBody": "tE0trG_rowBody",
1629
- "list": "tE0trG_list",
1630
- "rowIcon": "tE0trG_rowIcon",
1631
- "rowMeta": "tE0trG_rowMeta",
1632
- "actions": "tE0trG_actions",
1633
1628
  "rowText": "tE0trG_rowText",
1634
1629
  "rowTitle": "tE0trG_rowTitle",
1630
+ "rowMeta": "tE0trG_rowMeta",
1631
+ "actions": "tE0trG_actions",
1632
+ "empty": "tE0trG_empty",
1633
+ "rowIcon": "tE0trG_rowIcon",
1634
+ "pager": "tE0trG_pager",
1635
1635
  "dot": "tE0trG_dot",
1636
- "row": "tE0trG_row",
1637
- "pager": "tE0trG_pager"
1636
+ "dialog": "tE0trG_dialog",
1637
+ "demo": "tE0trG_demo"
1638
1638
  };
1639
1639
  //#endregion
1640
1640
  //#region src/client/NotificationBell.tsx
@@ -1925,62 +1925,62 @@ window.__ModuleLoader__.load({
1925
1925
  document.head.appendChild(tag);
1926
1926
  }
1927
1927
  var SkillPlazaSection_module_css_default = {
1928
- "detailLabel": "_9FdZvq_detailLabel",
1929
- "tabActive": "_9FdZvq_tabActive",
1930
- "noteField": "_9FdZvq_noteField",
1931
- "cardEnd": "_9FdZvq_cardEnd",
1932
- "titleCount": "_9FdZvq_titleCount",
1933
- "empty": "_9FdZvq_empty",
1934
- "tagTop": "_9FdZvq_tagTop",
1935
- "notice": "_9FdZvq_notice",
1936
- "emptyText": "_9FdZvq_emptyText",
1937
1928
  "demoTag": "_9FdZvq_demoTag",
1938
- "severity": "_9FdZvq_severity",
1939
1929
  "mine": "_9FdZvq_mine",
1940
- "rejectedTag": "_9FdZvq_rejectedTag",
1941
- "detailButton": "_9FdZvq_detailButton",
1942
- "cardTop": "_9FdZvq_cardTop",
1943
- "cardIcon": "_9FdZvq_cardIcon",
1944
- "cardDesc": "_9FdZvq_cardDesc",
1945
- "detailRow": "_9FdZvq_detailRow",
1946
- "emptyIcon": "_9FdZvq_emptyIcon",
1930
+ "notice": "_9FdZvq_notice",
1931
+ "title": "_9FdZvq_title",
1947
1932
  "status": "_9FdZvq_status",
1948
- "cards": "_9FdZvq_cards",
1933
+ "headRow": "_9FdZvq_headRow",
1934
+ "findingHint": "_9FdZvq_findingHint",
1935
+ "head": "_9FdZvq_head",
1936
+ "dialog": "_9FdZvq_dialog",
1937
+ "emptyText": "_9FdZvq_emptyText",
1938
+ "detailButton": "_9FdZvq_detailButton",
1949
1939
  "sharedTag": "_9FdZvq_sharedTag",
1950
- "risk": "_9FdZvq_risk",
1940
+ "section": "_9FdZvq_section",
1951
1941
  "riskHead": "_9FdZvq_riskHead",
1952
- "headRow": "_9FdZvq_headRow",
1953
1942
  "detail": "_9FdZvq_detail",
1954
- "tabs": "_9FdZvq_tabs",
1943
+ "audit": "_9FdZvq_audit",
1955
1944
  "reviewButton": "_9FdZvq_reviewButton",
1945
+ "cardMarks": "_9FdZvq_cardMarks",
1946
+ "detailValue": "_9FdZvq_detailValue",
1956
1947
  "tabCount": "_9FdZvq_tabCount",
1957
- "card": "_9FdZvq_card",
1958
- "reviewNote": "_9FdZvq_reviewNote",
1959
- "riskScore": "_9FdZvq_riskScore",
1960
- "riskSummary": "_9FdZvq_riskSummary",
1961
- "finding": "_9FdZvq_finding",
1962
- "cardTitle": "_9FdZvq_cardTitle",
1963
- "findingText": "_9FdZvq_findingText",
1948
+ "noteField": "_9FdZvq_noteField",
1949
+ "riskFailed": "_9FdZvq_riskFailed",
1964
1950
  "riskEmpty": "_9FdZvq_riskEmpty",
1965
- "section": "_9FdZvq_section",
1966
- "departmentLabel": "_9FdZvq_departmentLabel",
1967
- "auditFooter": "_9FdZvq_auditFooter",
1968
- "pendingTag": "_9FdZvq_pendingTag",
1951
+ "cardIcon": "_9FdZvq_cardIcon",
1969
1952
  "departmentSelect": "_9FdZvq_departmentSelect",
1970
- "riskFailed": "_9FdZvq_riskFailed",
1971
- "findingHint": "_9FdZvq_findingHint",
1972
- "detailValue": "_9FdZvq_detailValue",
1953
+ "risk": "_9FdZvq_risk",
1954
+ "cards": "_9FdZvq_cards",
1955
+ "riskSummary": "_9FdZvq_riskSummary",
1956
+ "empty": "_9FdZvq_empty",
1957
+ "tabActive": "_9FdZvq_tabActive",
1958
+ "cardTop": "_9FdZvq_cardTop",
1959
+ "departmentBar": "_9FdZvq_departmentBar",
1960
+ "tagTop": "_9FdZvq_tagTop",
1961
+ "pendingTag": "_9FdZvq_pendingTag",
1962
+ "auditDialog": "_9FdZvq_auditDialog",
1963
+ "auditFooter": "_9FdZvq_auditFooter",
1964
+ "tabs": "_9FdZvq_tabs",
1965
+ "reviewNote": "_9FdZvq_reviewNote",
1966
+ "severity": "_9FdZvq_severity",
1967
+ "cardDesc": "_9FdZvq_cardDesc",
1968
+ "tab": "_9FdZvq_tab",
1969
+ "rejectedTag": "_9FdZvq_rejectedTag",
1973
1970
  "mark": "_9FdZvq_mark",
1974
- "reviewError": "_9FdZvq_reviewError",
1975
- "dialog": "_9FdZvq_dialog",
1971
+ "cardEnd": "_9FdZvq_cardEnd",
1972
+ "findingText": "_9FdZvq_findingText",
1973
+ "titleCount": "_9FdZvq_titleCount",
1974
+ "departmentLabel": "_9FdZvq_departmentLabel",
1975
+ "emptyIcon": "_9FdZvq_emptyIcon",
1976
+ "detailLabel": "_9FdZvq_detailLabel",
1977
+ "cardTitle": "_9FdZvq_cardTitle",
1976
1978
  "findings": "_9FdZvq_findings",
1977
- "head": "_9FdZvq_head",
1978
- "audit": "_9FdZvq_audit",
1979
- "auditDialog": "_9FdZvq_auditDialog",
1980
- "cardMarks": "_9FdZvq_cardMarks",
1981
- "departmentBar": "_9FdZvq_departmentBar",
1982
- "title": "_9FdZvq_title",
1983
- "tab": "_9FdZvq_tab"
1979
+ "reviewError": "_9FdZvq_reviewError",
1980
+ "riskScore": "_9FdZvq_riskScore",
1981
+ "card": "_9FdZvq_card",
1982
+ "finding": "_9FdZvq_finding",
1983
+ "detailRow": "_9FdZvq_detailRow"
1984
1984
  };
1985
1985
  //#endregion
1986
1986
  //#region src/client/SkillPlazaSection.tsx
@@ -2645,19 +2645,19 @@ window.__ModuleLoader__.load({
2645
2645
  document.head.appendChild(tag);
2646
2646
  }
2647
2647
  var WanxiangBrand_module_css_default = {
2648
- "unit-core": "s0HPxG_unit-core",
2649
- "unit-left": "s0HPxG_unit-left",
2650
- "unitRight": "s0HPxG_unitRight",
2651
- "sidebarName": "s0HPxG_sidebarName",
2652
2648
  "unitTop": "s0HPxG_unitTop",
2653
- "animatedMark": "s0HPxG_animatedMark",
2654
- "unitCore": "s0HPxG_unitCore",
2655
- "mark": "s0HPxG_mark",
2656
- "wordmark": "s0HPxG_wordmark",
2657
- "harness": "s0HPxG_harness",
2658
2649
  "unit-top": "s0HPxG_unit-top",
2659
2650
  "unit-right": "s0HPxG_unit-right",
2660
- "unitLeft": "s0HPxG_unitLeft"
2651
+ "unit-core": "s0HPxG_unit-core",
2652
+ "unitLeft": "s0HPxG_unitLeft",
2653
+ "wordmark": "s0HPxG_wordmark",
2654
+ "harness": "s0HPxG_harness",
2655
+ "mark": "s0HPxG_mark",
2656
+ "unitCore": "s0HPxG_unitCore",
2657
+ "sidebarName": "s0HPxG_sidebarName",
2658
+ "unitRight": "s0HPxG_unitRight",
2659
+ "unit-left": "s0HPxG_unit-left",
2660
+ "animatedMark": "s0HPxG_animatedMark"
2661
2661
  };
2662
2662
  //#endregion
2663
2663
  //#region src/client/WanxiangBrand.tsx
@@ -3074,72 +3074,72 @@ window.__ModuleLoader__.load({
3074
3074
  document.head.appendChild(tag);
3075
3075
  }
3076
3076
  var PermissionCenterSection_module_css_default = {
3077
- "search": "PNbOqW_search",
3078
- "adminTag": "PNbOqW_adminTag",
3079
- "treeActions": "PNbOqW_treeActions",
3080
- "panel": "PNbOqW_panel",
3081
- "matrix": "PNbOqW_matrix",
3082
- "comboboxSearch": "PNbOqW_comboboxSearch",
3083
- "comboboxHint": "PNbOqW_comboboxHint",
3084
- "page": "PNbOqW_page",
3085
- "waiting": "PNbOqW_waiting",
3086
- "field": "PNbOqW_field",
3077
+ "treeToggle": "PNbOqW_treeToggle",
3078
+ "copied": "PNbOqW_copied",
3079
+ "detailGrid": "PNbOqW_detailGrid",
3080
+ "dialogHint": "PNbOqW_dialogHint",
3081
+ "error": "PNbOqW_error",
3082
+ "matrixGroup": "PNbOqW_matrixGroup",
3083
+ "comboboxOption": "PNbOqW_comboboxOption",
3087
3084
  "title": "PNbOqW_title",
3088
- "demo": "PNbOqW_demo",
3089
- "protected": "PNbOqW_protected",
3090
- "candidate": "PNbOqW_candidate",
3091
3085
  "notice": "PNbOqW_notice",
3092
- "matrixModule": "PNbOqW_matrixModule",
3093
- "comboboxList": "PNbOqW_comboboxList",
3094
- "tableScroll": "PNbOqW_tableScroll",
3095
- "table": "PNbOqW_table",
3096
- "muted": "PNbOqW_muted",
3097
- "departments": "PNbOqW_departments",
3086
+ "scopeBadge": "PNbOqW_scopeBadge",
3098
3087
  "comboboxTrigger": "PNbOqW_comboboxTrigger",
3099
- "treeRow": "PNbOqW_treeRow",
3100
- "subtitle": "PNbOqW_subtitle",
3101
3088
  "treeRoot": "PNbOqW_treeRoot",
3102
- "sectionTitle": "PNbOqW_sectionTitle",
3089
+ "permission": "PNbOqW_permission",
3090
+ "matrixModule": "PNbOqW_matrixModule",
3091
+ "comboboxCheck": "PNbOqW_comboboxCheck",
3092
+ "comboboxSearch": "PNbOqW_comboboxSearch",
3093
+ "comboboxOptionActive": "PNbOqW_comboboxOptionActive",
3094
+ "demo": "PNbOqW_demo",
3095
+ "dialogBody": "PNbOqW_dialogBody",
3096
+ "candidates": "PNbOqW_candidates",
3097
+ "tabActive": "PNbOqW_tabActive",
3103
3098
  "permDescription": "PNbOqW_permDescription",
3104
- "dialogHint": "PNbOqW_dialogHint",
3105
- "rowActions": "PNbOqW_rowActions",
3099
+ "sectionTitle": "PNbOqW_sectionTitle",
3100
+ "departments": "PNbOqW_departments",
3101
+ "tabs": "PNbOqW_tabs",
3102
+ "subtitle": "PNbOqW_subtitle",
3106
3103
  "panelHead": "PNbOqW_panelHead",
3104
+ "dialogFooter": "PNbOqW_dialogFooter",
3105
+ "comboboxMenu": "PNbOqW_comboboxMenu",
3106
+ "adminTag": "PNbOqW_adminTag",
3107
+ "comboboxPlaceholder": "PNbOqW_comboboxPlaceholder",
3108
+ "matrix": "PNbOqW_matrix",
3109
+ "treeActions": "PNbOqW_treeActions",
3110
+ "pager": "PNbOqW_pager",
3111
+ "muted": "PNbOqW_muted",
3112
+ "department": "PNbOqW_department",
3113
+ "field": "PNbOqW_field",
3114
+ "matrixScroll": "PNbOqW_matrixScroll",
3107
3115
  "treeSpacer": "PNbOqW_treeSpacer",
3108
- "permCopy": "PNbOqW_permCopy",
3109
- "tabActive": "PNbOqW_tabActive",
3116
+ "table": "PNbOqW_table",
3110
3117
  "onlyAdmin": "PNbOqW_onlyAdmin",
3111
- "matrixNote": "PNbOqW_matrixNote",
3112
- "dialogBody": "PNbOqW_dialogBody",
3113
- "treeToggle": "PNbOqW_treeToggle",
3114
- "matrixScroll": "PNbOqW_matrixScroll",
3115
- "comboboxOptionActive": "PNbOqW_comboboxOptionActive",
3118
+ "rowActions": "PNbOqW_rowActions",
3119
+ "treeChildren": "PNbOqW_treeChildren",
3120
+ "page": "PNbOqW_page",
3121
+ "waiting": "PNbOqW_waiting",
3122
+ "comboboxList": "PNbOqW_comboboxList",
3123
+ "panelFoot": "PNbOqW_panelFoot",
3116
3124
  "head": "PNbOqW_head",
3117
- "dialogFooter": "PNbOqW_dialogFooter",
3118
- "matrixGroup": "PNbOqW_matrixGroup",
3125
+ "tab": "PNbOqW_tab",
3119
3126
  "comboboxEmpty": "PNbOqW_comboboxEmpty",
3120
- "panelFoot": "PNbOqW_panelFoot",
3121
- "treeChildren": "PNbOqW_treeChildren",
3122
- "comboboxMenu": "PNbOqW_comboboxMenu",
3123
- "comboboxCheck": "PNbOqW_comboboxCheck",
3124
- "tabs": "PNbOqW_tabs",
3127
+ "comboboxHint": "PNbOqW_comboboxHint",
3128
+ "tableScroll": "PNbOqW_tableScroll",
3129
+ "matrixNote": "PNbOqW_matrixNote",
3125
3130
  "combobox": "PNbOqW_combobox",
3126
- "tab": "PNbOqW_tab",
3127
- "empty": "PNbOqW_empty",
3128
- "deptAdmins": "PNbOqW_deptAdmins",
3129
- "matrixPermission": "PNbOqW_matrixPermission",
3130
- "pager": "PNbOqW_pager",
3131
- "detailGrid": "PNbOqW_detailGrid",
3132
- "permission": "PNbOqW_permission",
3133
- "copied": "PNbOqW_copied",
3134
- "readOnly": "PNbOqW_readOnly",
3135
- "comboboxOption": "PNbOqW_comboboxOption",
3136
- "candidates": "PNbOqW_candidates",
3137
- "department": "PNbOqW_department",
3138
- "comboboxPlaceholder": "PNbOqW_comboboxPlaceholder",
3139
- "scopeBadge": "PNbOqW_scopeBadge",
3140
3131
  "dialog": "PNbOqW_dialog",
3132
+ "treeRow": "PNbOqW_treeRow",
3133
+ "panel": "PNbOqW_panel",
3134
+ "protected": "PNbOqW_protected",
3135
+ "matrixPermission": "PNbOqW_matrixPermission",
3136
+ "deptAdmins": "PNbOqW_deptAdmins",
3137
+ "permCopy": "PNbOqW_permCopy",
3138
+ "search": "PNbOqW_search",
3139
+ "empty": "PNbOqW_empty",
3140
+ "candidate": "PNbOqW_candidate",
3141
3141
  "treeName": "PNbOqW_treeName",
3142
- "error": "PNbOqW_error"
3142
+ "readOnly": "PNbOqW_readOnly"
3143
3143
  };
3144
3144
  //#endregion
3145
3145
  //#region src/client/combobox.ts
@@ -4569,17 +4569,17 @@ window.__ModuleLoader__.load({
4569
4569
  }
4570
4570
  var WorkspaceUpgradePrompt_module_css_default = {
4571
4571
  "sessionRow": "razUfG_sessionRow",
4572
+ "sessionTitle": "razUfG_sessionTitle",
4573
+ "sessionPath": "razUfG_sessionPath",
4572
4574
  "error": "razUfG_error",
4573
- "title": "razUfG_title",
4574
- "body": "razUfG_body",
4575
- "dialogText": "razUfG_dialogText",
4576
4575
  "dialogBody": "razUfG_dialogBody",
4577
4576
  "banner": "razUfG_banner",
4577
+ "body": "razUfG_body",
4578
4578
  "actions": "razUfG_actions",
4579
- "sessionPath": "razUfG_sessionPath",
4580
- "copy": "razUfG_copy",
4579
+ "dialogText": "razUfG_dialogText",
4580
+ "title": "razUfG_title",
4581
4581
  "sessionList": "razUfG_sessionList",
4582
- "sessionTitle": "razUfG_sessionTitle"
4582
+ "copy": "razUfG_copy"
4583
4583
  };
4584
4584
  //#endregion
4585
4585
  //#region src/client/WorkspaceUpgradePrompt.tsx
@@ -4812,7 +4812,7 @@ window.__ModuleLoader__.load({
4812
4812
  fontSize: "11px"
4813
4813
  };
4814
4814
  /** Render the embedded DataOps resource page and translate its parent messages. */
4815
- function DataOpsResourcesTab({ ctx, tab }) {
4815
+ function DataOpsResourcesTab({ tab, scope, sendReference }) {
4816
4816
  const [config, setConfig] = (0, react.useState)(null);
4817
4817
  const [error, setError] = (0, react.useState)("");
4818
4818
  const [loading, setLoading] = (0, react.useState)(true);
@@ -4871,17 +4871,19 @@ window.__ModuleLoader__.load({
4871
4871
  name: payload.resource?.name,
4872
4872
  table: payload.resource?.table
4873
4873
  };
4874
- const conversation = ctx?.conversation;
4875
- if (conversation?.send === void 0) {
4874
+ if (sendReference === void 0) {
4876
4875
  setNotice("当前会话不可用,无法把资源加入对话");
4877
4876
  return;
4878
4877
  }
4879
- const text = "引用数据资源:\n\n```resource-ref\n" + JSON.stringify(reference, null, 2) + "\n```\n";
4880
- conversation.send(text).then(() => setNotice("已把资源加入当前对话")).catch((sendError) => setNotice("加入对话失败:" + (sendError instanceof Error ? sendError.message : String(sendError))));
4878
+ sendReference("引用数据资源:\n\n```resource-ref\n" + JSON.stringify(reference, null, 2) + "\n```\n", scope?.sessionId).then(() => setNotice("已把资源加入当前对话")).catch((sendError) => setNotice("加入对话失败:" + (sendError instanceof Error ? sendError.message : String(sendError))));
4881
4879
  };
4882
4880
  window.addEventListener("message", onMessage);
4883
4881
  return () => window.removeEventListener("message", onMessage);
4884
- }, [config, ctx]);
4882
+ }, [
4883
+ config,
4884
+ sendReference,
4885
+ scope?.sessionId
4886
+ ]);
4885
4887
  (0, react.useEffect)(() => {
4886
4888
  if (!notice) return void 0;
4887
4889
  const timer = window.setTimeout(() => setNotice(""), 2400);
@@ -5325,7 +5327,8 @@ window.__ModuleLoader__.load({
5325
5327
  const inject = [
5326
5328
  "slots",
5327
5329
  "locale",
5328
- "conversation"
5330
+ "conversation",
5331
+ "sessions"
5329
5332
  ];
5330
5333
  /**
5331
5334
  * Bind the four strings the sign-in prompt needs.
@@ -5493,16 +5496,31 @@ window.__ModuleLoader__.load({
5493
5496
  let disposeTab;
5494
5497
  let disposeBridge;
5495
5498
  const inject = ctx.inject;
5496
- inject?.(["betterSidebar"], (injected) => {
5499
+ inject?.([
5500
+ "betterSidebar",
5501
+ "conversation",
5502
+ "sessions"
5503
+ ], (injected) => {
5497
5504
  const service = injected.betterSidebar;
5498
5505
  if (service?.registerTab === void 0) return;
5506
+ const conversation = injected.conversation;
5507
+ const sessions = injected.sessions;
5508
+ const sendReference = async (text, sessionId) => {
5509
+ if (!sessionId) throw new Error("no active session");
5510
+ const target = (sessions?.scope?.(sessionId))?.get?.("conversation") ?? conversation;
5511
+ if (target?.send === void 0) throw new Error("conversation service is unavailable");
5512
+ await target.send(text);
5513
+ };
5499
5514
  disposeTab = service.registerTab({
5500
5515
  id: RESOURCE_TAB_TYPE,
5501
5516
  title: "数据资源",
5502
5517
  description: "DataOps 全量资源、授权与操作记录",
5503
5518
  order: 60,
5504
5519
  single: true,
5505
- component: DataOpsResourcesTab
5520
+ component: ((props) => DataOpsResourcesTab({
5521
+ ...props,
5522
+ sendReference
5523
+ }))
5506
5524
  });
5507
5525
  disposeBridge = ctx.slots.inject("sidebar.footer.action", () => ctx.slots.register({
5508
5526
  name: "sidebar.footer.action",