@sparkelf/dsh-client-ui-skill-center 0.2.2-alpha.2.4 → 0.2.4-alpha.47

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DeepSeek
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/lib/client.js CHANGED
@@ -4,11 +4,11 @@ window.__ModuleLoader__.load({
4
4
  var module = { exports: {} };
5
5
  var exports = module.exports;
6
6
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
7
+ let react_jsx_runtime = require("react/jsx-runtime");
7
8
  let react = require("react");
8
9
  let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
9
- let react_jsx_runtime = require("react/jsx-runtime");
10
10
  //#region \0dsh-css:/root/projects/deepseek-harness-plus/packages/plus/ui-skill-center/src/client/SkillCenterPage.module.css.mjs
11
- const css = ".DGiSta_page{box-sizing:border-box;width:100%;height:100%;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);padding:0 0 48px;overflow:auto}.DGiSta_pageContent{width:100%;max-width:960px;margin:0 auto;padding:0 clamp(24px,4vw,48px)}.DGiSta_pageHead{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding-top:28px;display:flex}.DGiSta_pageTitle{margin:0;font-size:20px;font-weight:500;line-height:28px}.DGiSta_toolbar{justify-content:flex-end;align-items:center;gap:16px;display:flex}.DGiSta_iconButton{width:28px;height:28px;color:var(--dsw-alias-label-caption);cursor:pointer;background:0 0;border:0;border-radius:28px;justify-content:center;align-items:center;display:inline-flex}.DGiSta_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.DGiSta_iconButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.DGiSta_iconWrap{display:inline-flex}.DGiSta_tabs{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:14px;display:flex}.DGiSta_tab{height:28px;color:var(--dsw-alias-label-tertiary);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:14px;flex:none;align-items:center;gap:6px;padding:0 10px;font-size:14px;line-height:22px;display:inline-flex}@media (hover:hover){.DGiSta_tab:hover{background:var(--dsw-alias-interactive-bg-hover)}}.DGiSta_tab:focus-visible{outline:2px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.DGiSta_tabActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.DGiSta_tabCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:18px}.DGiSta_tabActive .DGiSta_tabCount{color:var(--dsw-alias-label-secondary)}.DGiSta_searchField{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);width:100%;height:36px;color:var(--dsw-alias-label-tertiary);border-radius:12px;align-items:center;gap:4px;margin:0 0 16px;padding:0 10px;transition:border-color .15s;display:flex}@media (hover:hover){.DGiSta_searchField:hover{border-color:var(--dsw-alias-border-l2)}}.DGiSta_searchField:focus-within{border-color:var(--dsw-alias-state-business-primary)}.DGiSta_searchField>:first-child{background:0 0;border:0;border-radius:0;flex:1;min-width:0;height:100%;padding:0}.DGiSta_searchField>:first-child:focus-within{border-color:#0000}.DGiSta_searchField>:first-child svg{width:14px;height:14px}.DGiSta_searchField input::placeholder{color:var(--dsw-alias-label-caption)}.DGiSta_searchField input:focus-visible{outline:none}.DGiSta_searchField input::-webkit-search-cancel-button{display:none}.DGiSta_searchClear{width:28px;height:28px;color:var(--dsw-alias-label-tertiary);flex:none;margin-right:-6px;padding:0}.DGiSta_tabPanel,.DGiSta_plazaPanel,.DGiSta_group{min-width:0}.DGiSta_groupTitle{align-items:baseline;gap:8px;margin:0 0 8px;font-size:14px;font-weight:500;line-height:20px;display:flex}.DGiSta_groupCount{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400}.DGiSta_cards{grid-template-columns:repeat(auto-fill,minmax(272px,1fr));align-content:start;align-items:stretch;gap:12px;margin:0;padding:0;list-style:none;display:grid}.DGiSta_card{border:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:10px;flex-direction:column;gap:10px;min-width:0;min-height:0;padding:12px;display:flex}.DGiSta_cardHead{align-items:center;gap:10px;min-width:0;display:flex}.DGiSta_cardIcon{corner-shape:round;background:var(--dsw-alias-bg-layer-2);width:28px;height:28px;color:var(--dsw-alias-label-secondary);border-radius:50%;flex:none;place-items:center;display:grid}.DGiSta_cardForeign{opacity:.72}.DGiSta_workspaceBadge{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);vertical-align:middle;border-radius:4px;margin-left:8px;padding:1px 6px;font-size:11px;font-weight:400;line-height:16px}.DGiSta_cardTitle{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;line-height:20px;overflow:hidden}.DGiSta_cardTitleRow{flex:1;align-items:center;gap:8px;min-width:0;min-height:26px;display:flex}.DGiSta_cardMarks{flex-wrap:wrap;gap:6px;min-height:18px;margin-top:2px;display:flex}.DGiSta_mark{color:var(--dsw-alias-state-business-primary);white-space:nowrap;background:#ecf1fc;border:0;border-radius:4px;padding:2px 7px;font-size:11px;font-weight:500;line-height:16px}.DGiSta_markOff,.DGiSta_markDanger{background:#ecf1fc}.DGiSta_detail{flex-direction:column;gap:12px;margin:0;display:flex}.DGiSta_cardActions{flex:none;align-items:center;gap:4px;display:inline-flex}.DGiSta_cardActions button{border-radius:6px;justify-content:center;align-items:center;height:28px;min-height:28px;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.DGiSta_detailRow{flex-direction:column;gap:2px;display:flex}.DGiSta_detailLabel{color:var(--dsw-alias-label-caption);font-size:11px;line-height:16px}.DGiSta_detailValue{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.DGiSta_cardEnd{flex:none;justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding-top:2px;display:flex}.DGiSta_cardBody{flex-direction:column;gap:6px;min-width:0;display:flex}.DGiSta_switch{background:var(--dsw-alias-border-l3);cursor:pointer;border:none;border-radius:10px;width:36px;height:20px;transition:background .12s;position:relative}.DGiSta_switch:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.DGiSta_switchOn{background:var(--dsw-alias-state-success-primary)}.DGiSta_switch:after{content:\"\";corner-shape:round;background:var(--dsw-alias-bg-layer-1);border-radius:50%;width:16px;height:16px;transition:transform .12s;position:absolute;top:2px;left:2px}.DGiSta_switchOn:after{transform:translate(16px)}.DGiSta_dialog{color-scheme:light;width:min(560px,100%)}body[data-ds-dark-theme] .DGiSta_dialog{color-scheme:dark}.DGiSta_publishDialog.DGiSta_publishDialog{color-scheme:light;gap:0;width:min(720px,100vw - 32px);max-width:100%;max-height:min(82vh,760px);padding:0 0 20px}body[data-ds-dark-theme] .DGiSta_publishDialog.DGiSta_publishDialog{color-scheme:dark}.DGiSta_dialogHeader{flex:none;justify-content:space-between;align-items:center;gap:8px;padding:22px 24px 12px;display:flex}.DGiSta_dialogTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.DGiSta_dialogClose{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.DGiSta_dialogClose:hover{background:var(--dsw-alias-interactive-bg-hover)}.DGiSta_dialogClose:focus-visible{outline:2px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.DGiSta_dialogBody{overscroll-behavior:contain;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex:1;min-height:0;padding:0 24px;overflow-y:auto}.DGiSta_dialogFooter{flex:none;justify-content:flex-end;align-items:center;gap:8px;padding:16px 24px 0;display:flex}.DGiSta_dialogBody .DGiSta_textarea{min-height:200px}.DGiSta_form{flex-direction:column;gap:12px;display:flex}.DGiSta_field{flex-direction:column;gap:4px;display:flex}.DGiSta_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px}.DGiSta_input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);height:32px;color:var(--dsw-alias-label-primary);accent-color:var(--dsw-alias-state-business-primary);background:0 0;border-radius:8px;padding:0 10px;font-size:13px}.DGiSta_input:hover:not(:disabled){border-color:var(--dsw-alias-border-l2)}.DGiSta_input:focus-visible{outline:2px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:1px;border-color:var(--dsw-alias-state-business-primary)}.DGiSta_input:disabled{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-secondary);cursor:default}.DGiSta_input option{background-color:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}.DGiSta_input option:disabled{color:var(--dsw-alias-label-caption)}.DGiSta_textarea{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);min-height:80px;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-markdown-code-block-small);resize:vertical;background:0 0;border-radius:8px;padding:8px 10px;font-size:12px}.DGiSta_status{text-align:center;color:var(--dsw-alias-label-tertiary);padding:32px 0;font-size:13px}.DGiSta_statusError{color:var(--dsw-alias-state-error-primary)}.DGiSta_cardSummary{color:var(--dsw-alias-label-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:36px;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.DGiSta_body{flex-direction:column;gap:4px;min-width:0;margin-top:16px;display:flex}.DGiSta_bodyLabel{color:var(--dsw-alias-label-caption);margin:0;font-size:11px;font-weight:500;line-height:16px}.DGiSta_bodyPre{background:var(--dsw-alias-markdown-code-block);max-height:46vh;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-markdown-code-block-small-font-family);font-size:var(--dsw-font-markdown-code-block-small-font-size);line-height:var(--dsw-font-markdown-code-block-small-line-height);white-space:pre-wrap;overflow-wrap:anywhere;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:8px;margin:0;padding:12px;overflow:auto}.DGiSta_bodyStatus{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.DGiSta_bodyError{color:var(--dsw-alias-state-error-primary);}.DGiSta_progressRow{align-items:center;gap:8px;margin-bottom:12px;display:flex}.DGiSta_progressLabel{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-size:12px;line-height:18px}.DGiSta_progressTrack{background:var(--dsw-alias-border-l2);border-radius:2px;flex:1;height:4px;overflow:hidden}.DGiSta_progressFill{background:var(--dsw-alias-label-primary);border-radius:2px;height:100%;transition:width .2s;display:block}.DGiSta_progressCount{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:18px}.DGiSta_plazaBadge{white-space:nowrap;border:.5px solid var(--dsw-alias-border-l2);border-radius:4px;flex:none;padding:0 6px;font-size:11px;line-height:18px}.DGiSta_plazaBadgeLocal{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-secondary)}.DGiSta_plazaBadgePending,.DGiSta_plazaBadgeApproved{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-secondary)}.DGiSta_plazaBadgeRejected{color:var(--dsw-alias-label-error);background:var(--dsw-alias-bg-secondary)}.DGiSta_plazaSharedTag{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-secondary);border-radius:4px;flex:none;padding:0 6px;font-size:11px;line-height:18px}.DGiSta_plazaReason{color:var(--dsw-alias-label-error);margin-top:4px;font-size:12px;line-height:18px}.DGiSta_plazaScopeHint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.DGiSta_connectorTab{flex-direction:column;gap:12px;min-width:0;display:flex}.DGiSta_connectorDemoNote{background:var(--dsw-specific-sidebar-fill);color:var(--dsw-alias-label-secondary);border-radius:10px;align-items:center;gap:8px;padding:9px 12px;font-size:12px;line-height:18px;display:flex}.DGiSta_connectorDemoTag{background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-tertiary);border-radius:4px;flex:none;padding:0 6px;font-size:11px;line-height:18px}.DGiSta_connectorGrid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));align-items:start;gap:12px;display:grid}.DGiSta_connectorCard{border:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;gap:10px;min-width:0;padding:14px;display:flex}.DGiSta_connectorHead{align-items:center;gap:10px;min-width:0;display:flex}.DGiSta_connectorIcon{background:var(--dsw-alias-bg-module-platform);width:32px;height:32px;color:var(--dsw-alias-state-business-primary);border-radius:9px;flex:none;place-items:center;display:grid}.DGiSta_connectorIdentity{flex:1;min-width:0}.DGiSta_connectorName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;line-height:20px;overflow:hidden}.DGiSta_connectorVendor{color:var(--dsw-alias-label-tertiary);margin-top:2px;font-size:11px;line-height:16px}.DGiSta_connectorDescription{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}.DGiSta_connectorError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}.DGiSta_connectorToggleRow{justify-content:space-between;align-items:center;gap:12px;min-height:28px;display:flex}.DGiSta_connectorToggleLabel{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px}.DGiSta_capabilityList{border-top:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:2px;padding-top:10px;display:flex}.DGiSta_capabilityTitle{color:var(--dsw-alias-label-tertiary);margin-bottom:4px;font-size:11px;line-height:16px}.DGiSta_capabilityRow{justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:6px 0;display:flex}.DGiSta_capabilityRow+.DGiSta_capabilityRow{border-top:.5px solid var(--dsw-alias-border-l1)}.DGiSta_capabilityCopy{flex:1;min-width:0}.DGiSta_capabilityName{color:var(--dsw-alias-label-primary);font-size:12px;line-height:18px}.DGiSta_capabilityDescription{color:var(--dsw-alias-label-tertiary);margin-top:1px;font-size:11px;line-height:16px}.DGiSta_capabilityReason{color:var(--dsw-alias-state-warn-primary);margin-top:3px;font-size:11px;line-height:16px}.DGiSta_capabilityEmpty{color:var(--dsw-alias-label-tertiary);padding:8px 0;font-size:12px;line-height:18px}.DGiSta_connectorFailed{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-state-error-primary);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:12px;line-height:18px;display:flex}";
11
+ const css = ".DGiSta_page{box-sizing:border-box;width:100%;height:100%;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);padding:0 0 48px;overflow:auto}.DGiSta_pageContent{width:100%;max-width:960px;margin:0 auto;padding:0 clamp(24px,4vw,48px)}.DGiSta_pageHead{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding-top:28px;display:flex}.DGiSta_pageTitle{margin:0;font-size:20px;font-weight:500;line-height:28px}.DGiSta_toolbar{justify-content:flex-end;align-items:center;gap:16px;display:flex}.DGiSta_iconButton{width:28px;height:28px;color:var(--dsw-alias-label-caption);cursor:pointer;background:0 0;border:0;border-radius:28px;justify-content:center;align-items:center;display:inline-flex}.DGiSta_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.DGiSta_iconButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.DGiSta_iconWrap{display:inline-flex}.DGiSta_tabs{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:14px;display:flex}.DGiSta_tab{height:28px;color:var(--dsw-alias-label-tertiary);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:14px;flex:none;align-items:center;gap:6px;padding:0 10px;font-size:14px;line-height:22px;display:inline-flex}@media (hover:hover){.DGiSta_tab:hover{background:var(--dsw-alias-interactive-bg-hover)}}.DGiSta_tab:focus-visible{outline:2px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.DGiSta_tabActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.DGiSta_tabCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:18px}.DGiSta_tabActive .DGiSta_tabCount{color:var(--dsw-alias-label-secondary)}.DGiSta_searchField{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);width:100%;height:36px;color:var(--dsw-alias-label-tertiary);border-radius:12px;align-items:center;gap:4px;margin:0 0 16px;padding:0 10px;transition:border-color .15s;display:flex}@media (hover:hover){.DGiSta_searchField:hover{border-color:var(--dsw-alias-border-l2)}}.DGiSta_searchField:focus-within{border-color:var(--dsw-alias-state-business-primary)}.DGiSta_searchField>:first-child{background:0 0;border:0;border-radius:0;flex:1;min-width:0;height:100%;padding:0}.DGiSta_searchField>:first-child:focus-within{border-color:#0000}.DGiSta_searchField>:first-child svg{width:14px;height:14px}.DGiSta_searchField input::placeholder{color:var(--dsw-alias-label-caption)}.DGiSta_searchField input:focus-visible{outline:none}.DGiSta_searchField input::-webkit-search-cancel-button{display:none}.DGiSta_searchClear{width:28px;height:28px;color:var(--dsw-alias-label-tertiary);flex:none;margin-right:-6px;padding:0}.DGiSta_tabPanel,.DGiSta_plazaPanel,.DGiSta_group{min-width:0}.DGiSta_groupTitle{align-items:baseline;gap:8px;margin:0 0 8px;font-size:14px;font-weight:500;line-height:20px;display:flex}.DGiSta_groupCount{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400}.DGiSta_cards{grid-template-columns:repeat(auto-fill,minmax(272px,1fr));align-content:start;align-items:stretch;gap:12px;margin:0;padding:0;list-style:none;display:grid}.DGiSta_card{border:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:10px;flex-direction:column;gap:10px;min-width:0;min-height:0;padding:12px;display:flex}.DGiSta_cardHead{align-items:center;gap:10px;min-width:0;display:flex}.DGiSta_cardIcon{corner-shape:round;background:var(--dsw-alias-bg-layer-2);width:28px;height:28px;color:var(--dsw-alias-label-secondary);border-radius:50%;flex:none;place-items:center;display:grid}.DGiSta_cardForeign{opacity:.72}.DGiSta_workspaceBadge{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);vertical-align:middle;border-radius:4px;margin-left:8px;padding:1px 6px;font-size:11px;font-weight:400;line-height:16px}.DGiSta_cardTitle{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;line-height:20px;overflow:hidden}.DGiSta_cardTitleRow{flex:1;align-items:center;gap:8px;min-width:0;min-height:26px;display:flex}.DGiSta_cardMarks{flex-wrap:wrap;gap:6px;min-height:18px;margin-top:2px;display:flex}.DGiSta_mark{color:var(--dsw-alias-state-business-primary);white-space:nowrap;background:#ecf1fc;border:0;border-radius:4px;padding:2px 7px;font-size:11px;font-weight:500;line-height:16px}.DGiSta_markOff,.DGiSta_markDanger{background:#ecf1fc}.DGiSta_detail{flex-direction:column;gap:12px;margin:0;display:flex}.DGiSta_cardActions{flex:none;align-items:center;gap:4px;display:inline-flex}.DGiSta_cardActions button{border-radius:6px;justify-content:center;align-items:center;height:28px;min-height:28px;padding:0 10px;font-size:12px;line-height:18px;display:inline-flex}.DGiSta_detailRow{flex-direction:column;gap:2px;display:flex}.DGiSta_detailLabel{color:var(--dsw-alias-label-caption);font-size:11px;line-height:16px}.DGiSta_detailValue{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.DGiSta_cardEnd{flex:none;justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding-top:2px;display:flex}.DGiSta_cardBody{flex-direction:column;gap:6px;min-width:0;display:flex}.DGiSta_switch{background:var(--dsw-alias-border-l3);cursor:pointer;border:none;border-radius:10px;width:36px;height:20px;transition:background .12s;position:relative}.DGiSta_switch:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.DGiSta_switchOn{background:var(--dsw-alias-state-success-primary)}.DGiSta_switch:after{content:\"\";corner-shape:round;background:var(--dsw-alias-bg-layer-1);border-radius:50%;width:16px;height:16px;transition:transform .12s;position:absolute;top:2px;left:2px}.DGiSta_switchOn:after{transform:translate(16px)}.DGiSta_dialog{color-scheme:light;width:min(560px,100%)}body[data-ds-dark-theme] .DGiSta_dialog{color-scheme:dark}.DGiSta_publishDialog.DGiSta_publishDialog{color-scheme:light;gap:0;width:min(720px,100vw - 32px);max-width:100%;max-height:min(82vh,760px);padding:0 0 20px}body[data-ds-dark-theme] .DGiSta_publishDialog.DGiSta_publishDialog{color-scheme:dark}.DGiSta_dialogHeader{flex:none;justify-content:space-between;align-items:center;gap:8px;padding:22px 24px 12px;display:flex}.DGiSta_dialogTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:16px;font-weight:500;line-height:24px}.DGiSta_dialogClose{width:28px;height:28px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.DGiSta_dialogClose:hover{background:var(--dsw-alias-interactive-bg-hover)}.DGiSta_dialogClose:focus-visible{outline:2px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.DGiSta_dialogBody{overscroll-behavior:contain;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex:1;min-height:0;padding:0 24px;overflow-y:auto}.DGiSta_dialogFooter{flex:none;justify-content:flex-end;align-items:center;gap:8px;padding:16px 24px 0;display:flex}.DGiSta_dialogBody .DGiSta_textarea{min-height:200px}.DGiSta_form{flex-direction:column;gap:12px;display:flex}.DGiSta_field{flex-direction:column;gap:4px;display:flex}.DGiSta_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px}.DGiSta_input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);height:32px;color:var(--dsw-alias-label-primary);accent-color:var(--dsw-alias-state-business-primary);background:0 0;border-radius:8px;padding:0 10px;font-size:13px}.DGiSta_input:hover:not(:disabled){border-color:var(--dsw-alias-border-l2)}.DGiSta_input:focus-visible{outline:2px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:1px;border-color:var(--dsw-alias-state-business-primary)}.DGiSta_input:disabled{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-secondary);cursor:default}.DGiSta_input option{background-color:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}.DGiSta_input option:disabled{color:var(--dsw-alias-label-caption)}.DGiSta_textarea{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);min-height:80px;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-markdown-code-block-small);resize:vertical;background:0 0;border-radius:8px;padding:8px 10px;font-size:12px}.DGiSta_status{text-align:center;color:var(--dsw-alias-label-tertiary);padding:32px 0;font-size:13px}.DGiSta_statusError{color:var(--dsw-alias-state-error-primary)}.DGiSta_cardSummary{color:var(--dsw-alias-label-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:36px;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.DGiSta_body{flex-direction:column;gap:4px;min-width:0;margin-top:16px;display:flex}.DGiSta_bodyLabel{color:var(--dsw-alias-label-caption);margin:0;font-size:11px;font-weight:500;line-height:16px}.DGiSta_bodyPre{background:var(--dsw-alias-markdown-code-block);max-height:46vh;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-markdown-code-block-small-font-family);font-size:var(--dsw-font-markdown-code-block-small-font-size);line-height:var(--dsw-font-markdown-code-block-small-line-height);white-space:pre-wrap;overflow-wrap:anywhere;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:8px;margin:0;padding:12px;overflow:auto}.DGiSta_bodyStatus{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}.DGiSta_bodyError{color:var(--dsw-alias-state-error-primary);}.DGiSta_progressRow{align-items:center;gap:8px;margin-bottom:12px;display:flex}.DGiSta_progressLabel{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-size:12px;line-height:18px}.DGiSta_progressTrack{background:var(--dsw-alias-border-l2);border-radius:2px;flex:1;height:4px;overflow:hidden}.DGiSta_progressFill{background:var(--dsw-alias-label-primary);border-radius:2px;height:100%;transition:width .2s;display:block}.DGiSta_progressCount{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;line-height:18px}.DGiSta_plazaBadge{white-space:nowrap;border:.5px solid var(--dsw-alias-border-l2);border-radius:4px;flex:none;padding:0 6px;font-size:11px;line-height:18px}.DGiSta_plazaBadgeLocal{color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-secondary)}.DGiSta_plazaBadgePending,.DGiSta_plazaBadgeApproved{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-secondary)}.DGiSta_plazaBadgeRejected{color:var(--dsw-alias-label-error);background:var(--dsw-alias-bg-secondary)}.DGiSta_plazaSharedTag{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-secondary);border-radius:4px;flex:none;padding:0 6px;font-size:11px;line-height:18px}.DGiSta_plazaReason{color:var(--dsw-alias-label-error);margin-top:4px;font-size:12px;line-height:18px}.DGiSta_plazaScopeHint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.DGiSta_connectorTab{flex-direction:column;gap:12px;min-width:0;display:flex}.DGiSta_connectorDemoNote{background:var(--dsw-specific-sidebar-fill);color:var(--dsw-alias-label-secondary);border-radius:10px;align-items:center;gap:8px;padding:9px 12px;font-size:12px;line-height:18px;display:flex}.DGiSta_connectorDemoTag{background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-tertiary);border-radius:4px;flex:none;padding:0 6px;font-size:11px;line-height:18px}.DGiSta_connectorGrid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));align-items:start;gap:12px;display:grid}.DGiSta_connectorCard{border:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;gap:10px;min-width:0;padding:14px;display:flex}.DGiSta_connectorHead{align-items:center;gap:10px;min-width:0;display:flex}.DGiSta_connectorIcon{background:var(--dsw-alias-bg-module-platform);width:32px;height:32px;color:var(--dsw-alias-state-business-primary);border-radius:9px;flex:none;place-items:center;display:grid}.DGiSta_connectorIdentity{flex:1;min-width:0}.DGiSta_connectorName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;line-height:20px;overflow:hidden}.DGiSta_connectorVendor{color:var(--dsw-alias-label-tertiary);margin-top:2px;font-size:11px;line-height:16px}.DGiSta_connectorDescription{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}.DGiSta_connectorError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}.DGiSta_connectorToggleRow{justify-content:space-between;align-items:center;gap:12px;min-height:28px;display:flex}.DGiSta_connectorToggleLabel{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px}.DGiSta_capabilityList{border-top:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:2px;padding-top:10px;display:flex}.DGiSta_capabilityTitle{color:var(--dsw-alias-label-tertiary);margin-bottom:4px;font-size:11px;line-height:16px}.DGiSta_capabilityRow{justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:6px 0;display:flex}.DGiSta_capabilityRow+.DGiSta_capabilityRow{border-top:.5px solid var(--dsw-alias-border-l1)}.DGiSta_capabilityCopy{flex:1;min-width:0}.DGiSta_capabilityName{color:var(--dsw-alias-label-primary);font-size:12px;line-height:18px}.DGiSta_capabilityDescription{color:var(--dsw-alias-label-tertiary);margin-top:1px;font-size:11px;line-height:16px}.DGiSta_capabilityReason{color:var(--dsw-alias-state-warn-primary);margin-top:3px;font-size:11px;line-height:16px}.DGiSta_connectorFailed{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-state-error-primary);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:12px;line-height:18px;display:flex}";
12
12
  const tagId = "@sparkelf/dsh-client-ui-skill-center/SkillCenterPage.module.css";
13
13
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
14
14
  const tag = document.createElement("style");
@@ -25,7 +25,6 @@ window.__ModuleLoader__.load({
25
25
  "bodyStatus": "DGiSta_bodyStatus",
26
26
  "capabilityCopy": "DGiSta_capabilityCopy",
27
27
  "capabilityDescription": "DGiSta_capabilityDescription",
28
- "capabilityEmpty": "DGiSta_capabilityEmpty",
29
28
  "capabilityList": "DGiSta_capabilityList",
30
29
  "capabilityName": "DGiSta_capabilityName",
31
30
  "capabilityReason": "DGiSta_capabilityReason",
@@ -115,13 +114,13 @@ window.__ModuleLoader__.load({
115
114
  "workspaceBadge": "DGiSta_workspaceBadge"
116
115
  };
117
116
  //#endregion
118
- //#region src/client/glyphs.tsx
117
+ //#region lib/types/client/glyphs.js
119
118
  /**
120
119
  * The chain-link glyph on a connector card.
121
120
  * @returns a 16px current-color SVG.
122
121
  */
123
122
  function ConnectorGlyph() {
124
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
123
+ return (0, react_jsx_runtime.jsxs)("svg", {
125
124
  width: "16",
126
125
  height: "16",
127
126
  viewBox: "0 0 16 16",
@@ -129,19 +128,19 @@ window.__ModuleLoader__.load({
129
128
  "aria-hidden": "true",
130
129
  "data-connector-glyph": true,
131
130
  children: [
132
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
131
+ (0, react_jsx_runtime.jsx)("path", {
133
132
  d: "M6.6 9.4 9.4 6.6",
134
133
  stroke: "currentColor",
135
134
  strokeWidth: "1.4",
136
135
  strokeLinecap: "round"
137
136
  }),
138
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
137
+ (0, react_jsx_runtime.jsx)("path", {
139
138
  d: "m7.4 4.9 1-1a2.7 2.7 0 0 1 3.8 3.8l-1 1",
140
139
  stroke: "currentColor",
141
140
  strokeWidth: "1.4",
142
141
  strokeLinecap: "round"
143
142
  }),
144
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
143
+ (0, react_jsx_runtime.jsx)("path", {
145
144
  d: "m8.6 11.1-1 1a2.7 2.7 0 0 1-3.8-3.8l1-1",
146
145
  stroke: "currentColor",
147
146
  strokeWidth: "1.4",
@@ -156,13 +155,13 @@ window.__ModuleLoader__.load({
156
155
  * @returns a current-color SVG.
157
156
  */
158
157
  function CloseGlyph({ size = 14 }) {
159
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
158
+ return (0, react_jsx_runtime.jsx)("svg", {
160
159
  width: size,
161
160
  height: size,
162
161
  viewBox: "0 0 16 16",
163
162
  fill: "none",
164
163
  "aria-hidden": "true",
165
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
164
+ children: (0, react_jsx_runtime.jsx)("path", {
166
165
  d: "m4 4 8 8M12 4l-8 8",
167
166
  stroke: "currentColor",
168
167
  strokeWidth: "1.4",
@@ -171,7 +170,7 @@ window.__ModuleLoader__.load({
171
170
  });
172
171
  }
173
172
  //#endregion
174
- //#region src/client/api.ts
173
+ //#region lib/types/client/api.js
175
174
  /**
176
175
  * Skill center API client. Talks to the host route family over same-origin
177
176
  * fetch; the host owns the trust fence.
@@ -397,7 +396,17 @@ window.__ModuleLoader__.load({
397
396
  }
398
397
  };
399
398
  //#endregion
400
- //#region src/client/plaza.ts
399
+ //#region lib/types/client/plaza.js
400
+ /**
401
+ * Skill-plaza sharing state shown on a local skill card.
402
+ *
403
+ * Sharing is owned by DataOps: the same-origin `dataops-managed` bridge talks
404
+ * to the backend with the workspace credential, and the backend enforces
405
+ * ownership/review. This module only maps a local skill name to the record the
406
+ * bridge reports, so the card can show 未共享 / 待审核 / 已上架 / 已驳回.
407
+ *
408
+ * @module @sparkelf/dsh-client-ui-skill-center/client/plaza
409
+ */
401
410
  /** Map one local skill name to its share state. */
402
411
  function shareOf(name, records) {
403
412
  const record = records.get(name);
@@ -416,7 +425,7 @@ window.__ModuleLoader__.load({
416
425
  return status === "local" || status === "rejected";
417
426
  }
418
427
  //#endregion
419
- //#region src/client/connectors.ts
428
+ //#region lib/types/client/connectors.js
420
429
  /**
421
430
  * Connector catalogue for the skill center's fourth tab.
422
431
  *
@@ -657,7 +666,7 @@ window.__ModuleLoader__.load({
657
666
  }
658
667
  }
659
668
  //#endregion
660
- //#region src/client/ConnectorsTab.tsx
669
+ //#region lib/types/client/ConnectorsTab.js
661
670
  /** Status label and tone for one connector. */
662
671
  function statusOf(connector, t) {
663
672
  const state = connectorState(connector);
@@ -696,49 +705,49 @@ window.__ModuleLoader__.load({
696
705
  function ConnectorCard({ connector, busy, t, onToggleConnector, onToggleCapability }) {
697
706
  const status = statusOf(connector, t);
698
707
  const capabilities = visibleCapabilities(connector);
699
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
708
+ return (0, react_jsx_runtime.jsxs)("article", {
700
709
  className: SkillCenterPage_module_css_default.connectorCard,
701
710
  "data-connector-id": connector.id,
702
711
  "data-connector-enabled": connector.enabled,
703
712
  children: [
704
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
713
+ (0, react_jsx_runtime.jsxs)("div", {
705
714
  className: SkillCenterPage_module_css_default.connectorHead,
706
715
  children: [
707
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
716
+ (0, react_jsx_runtime.jsx)("span", {
708
717
  className: SkillCenterPage_module_css_default.connectorIcon,
709
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ConnectorGlyph, {})
718
+ children: (0, react_jsx_runtime.jsx)(ConnectorGlyph, {})
710
719
  }),
711
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
720
+ (0, react_jsx_runtime.jsxs)("div", {
712
721
  className: SkillCenterPage_module_css_default.connectorIdentity,
713
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
722
+ children: [(0, react_jsx_runtime.jsx)("div", {
714
723
  className: SkillCenterPage_module_css_default.connectorName,
715
724
  children: connector.name
716
- }), connector.vendor === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
725
+ }), connector.vendor === void 0 ? null : (0, react_jsx_runtime.jsx)("div", {
717
726
  className: SkillCenterPage_module_css_default.connectorVendor,
718
727
  children: connector.vendor
719
728
  })]
720
729
  }),
721
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tag, {
730
+ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tag, {
722
731
  tone: status.tone,
723
732
  children: status.label
724
733
  })
725
734
  ]
726
735
  }),
727
- connector.description === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
736
+ connector.description === void 0 ? null : (0, react_jsx_runtime.jsx)("p", {
728
737
  className: SkillCenterPage_module_css_default.connectorDescription,
729
738
  children: connector.description
730
739
  }),
731
- connector.enabled && connector.error !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
740
+ connector.enabled && connector.error !== void 0 ? (0, react_jsx_runtime.jsx)("p", {
732
741
  className: SkillCenterPage_module_css_default.connectorError,
733
742
  role: "status",
734
743
  children: connector.error
735
744
  }) : null,
736
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
745
+ (0, react_jsx_runtime.jsxs)("div", {
737
746
  className: SkillCenterPage_module_css_default.connectorToggleRow,
738
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
747
+ children: [(0, react_jsx_runtime.jsx)("span", {
739
748
  className: SkillCenterPage_module_css_default.connectorToggleLabel,
740
749
  children: connector.enabled ? t("connector.enabled") : t("connector.disabled")
741
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Switch, {
750
+ }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Switch, {
742
751
  checked: connector.enabled,
743
752
  disabled: busy,
744
753
  label: (connector.enabled ? t("connector.disable") : t("connector.enable")) + " " + connector.name,
@@ -747,33 +756,30 @@ window.__ModuleLoader__.load({
747
756
  }
748
757
  })]
749
758
  }),
750
- connector.enabled ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
759
+ connector.enabled && capabilities.length > 0 ? (0, react_jsx_runtime.jsxs)("div", {
751
760
  className: SkillCenterPage_module_css_default.capabilityList,
752
761
  "data-connector-capabilities": true,
753
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
762
+ children: [(0, react_jsx_runtime.jsx)("div", {
754
763
  className: SkillCenterPage_module_css_default.capabilityTitle,
755
764
  children: t("connector.capabilities")
756
- }), capabilities.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
757
- className: SkillCenterPage_module_css_default.capabilityEmpty,
758
- children: t("connector.noCapabilities")
759
- }) : capabilities.map((capability) => {
765
+ }), capabilities.map((capability) => {
760
766
  const unavailable = capability.unavailableReason !== void 0;
761
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
767
+ return (0, react_jsx_runtime.jsxs)("div", {
762
768
  className: SkillCenterPage_module_css_default.capabilityRow,
763
769
  "data-capability-id": capability.id,
764
770
  "data-capability-enabled": capability.enabled,
765
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
771
+ children: [(0, react_jsx_runtime.jsxs)("div", {
766
772
  className: SkillCenterPage_module_css_default.capabilityCopy,
767
773
  children: [
768
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
774
+ (0, react_jsx_runtime.jsx)("div", {
769
775
  className: SkillCenterPage_module_css_default.capabilityName,
770
776
  children: capability.name
771
777
  }),
772
- capability.description === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
778
+ capability.description === void 0 ? null : (0, react_jsx_runtime.jsx)("div", {
773
779
  className: SkillCenterPage_module_css_default.capabilityDescription,
774
780
  children: capability.description
775
781
  }),
776
- capability.unavailableReason === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
782
+ capability.unavailableReason === void 0 ? null : (0, react_jsx_runtime.jsxs)("div", {
777
783
  className: SkillCenterPage_module_css_default.capabilityReason,
778
784
  children: [
779
785
  t("connector.unavailable"),
@@ -782,7 +788,7 @@ window.__ModuleLoader__.load({
782
788
  ]
783
789
  })
784
790
  ]
785
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Switch, {
791
+ }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Switch, {
786
792
  checked: capability.enabled,
787
793
  disabled: busy || unavailable,
788
794
  label: (capability.enabled ? t("connector.disable") : t("connector.enable")) + " " + capability.name,
@@ -803,19 +809,19 @@ window.__ModuleLoader__.load({
803
809
  */
804
810
  function ConnectorsTab(props) {
805
811
  const { state, query, busyId, t, onRetry, onToggleConnector, onToggleCapability } = props;
806
- if (state.kind === "loading") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
812
+ if (state.kind === "loading") return (0, react_jsx_runtime.jsx)("div", {
807
813
  className: SkillCenterPage_module_css_default.status,
808
814
  children: t("connector.loading")
809
815
  });
810
- if (state.kind === "failed") return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
816
+ if (state.kind === "failed") return (0, react_jsx_runtime.jsxs)("div", {
811
817
  className: SkillCenterPage_module_css_default.connectorFailed,
812
818
  role: "alert",
813
819
  "data-connector-failed": true,
814
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [
820
+ children: [(0, react_jsx_runtime.jsxs)("span", { children: [
815
821
  t("connector.failed"),
816
822
  ":",
817
823
  state.message
818
- ] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
824
+ ] }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
819
825
  variant: "outline",
820
826
  size: "sm",
821
827
  onClick: onRetry,
@@ -824,24 +830,24 @@ window.__ModuleLoader__.load({
824
830
  });
825
831
  const needle = query.trim().toLowerCase();
826
832
  const connectors = state.catalogue.connectors.filter((connector) => matchesQuery(connector, needle));
827
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
833
+ return (0, react_jsx_runtime.jsxs)("div", {
828
834
  className: SkillCenterPage_module_css_default.connectorTab,
829
835
  "data-connector-catalogue": true,
830
836
  "data-demo": state.catalogue.demo,
831
- children: [state.catalogue.demo ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
837
+ children: [state.catalogue.demo ? (0, react_jsx_runtime.jsxs)("div", {
832
838
  className: SkillCenterPage_module_css_default.connectorDemoNote,
833
839
  role: "status",
834
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
840
+ children: [(0, react_jsx_runtime.jsx)("span", {
835
841
  className: SkillCenterPage_module_css_default.connectorDemoTag,
836
842
  children: t("connector.demoTag")
837
843
  }), t("connector.demo")]
838
- }) : null, connectors.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
844
+ }) : null, connectors.length === 0 ? (0, react_jsx_runtime.jsx)("div", {
839
845
  className: SkillCenterPage_module_css_default.status,
840
846
  children: state.catalogue.connectors.length === 0 ? t("connector.empty") : t("connector.noMatches")
841
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
847
+ }) : (0, react_jsx_runtime.jsx)("div", {
842
848
  className: SkillCenterPage_module_css_default.connectorGrid,
843
849
  children: connectors.map((connector) => {
844
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ConnectorCard, {
850
+ return (0, react_jsx_runtime.jsx)(ConnectorCard, {
845
851
  connector,
846
852
  busy: busyId === connector.id || busyId?.startsWith(connector.id + ":") === true,
847
853
  t,
@@ -853,7 +859,16 @@ window.__ModuleLoader__.load({
853
859
  });
854
860
  }
855
861
  //#endregion
856
- //#region src/client/scope.ts
862
+ //#region lib/types/client/scope.js
863
+ /**
864
+ * Visibility choices for publishing a skill to the plaza.
865
+ *
866
+ * DataOps owns roles and department membership; this module only maps the
867
+ * review-context answer to the options a given account may pick, and remembers
868
+ * the last choice per user. The backend still enforces every rule.
869
+ *
870
+ * @module @sparkelf/dsh-client-ui-skill-center/client/scope
871
+ */
857
872
  /** Read the identity the dataops-account plugin publishes. */
858
873
  function readAccountIdentity() {
859
874
  if (typeof window === "undefined") return void 0;
@@ -954,7 +969,7 @@ window.__ModuleLoader__.load({
954
969
  } catch {}
955
970
  }
956
971
  //#endregion
957
- //#region src/client/SkillCenterPage.tsx
972
+ //#region lib/types/client/SkillCenterPage.js
958
973
  /**
959
974
  * Skill center page. Browses the loaded skills grouped by source, toggles model
960
975
  * invocation, creates a skill, and deletes one into a recoverable trash.
@@ -972,9 +987,9 @@ window.__ModuleLoader__.load({
972
987
  * @returns the labelled field.
973
988
  */
974
989
  function DraftField({ label, children }) {
975
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
990
+ return (0, react_jsx_runtime.jsxs)("div", {
976
991
  className: SkillCenterPage_module_css_default.field,
977
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
992
+ children: [(0, react_jsx_runtime.jsx)("span", {
978
993
  className: SkillCenterPage_module_css_default.fieldLabel,
979
994
  children: label
980
995
  }), children]
@@ -1033,33 +1048,33 @@ window.__ModuleLoader__.load({
1033
1048
  key: "detail.path",
1034
1049
  value: skill.path
1035
1050
  });
1036
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
1051
+ return (0, react_jsx_runtime.jsxs)("li", {
1037
1052
  className: foreign ? SkillCenterPage_module_css_default.card + " " + SkillCenterPage_module_css_default.cardForeign : SkillCenterPage_module_css_default.card,
1038
1053
  "data-skill-name": skill.name,
1039
1054
  "data-plaza-status": share.status,
1040
1055
  children: [
1041
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1056
+ (0, react_jsx_runtime.jsxs)("div", {
1042
1057
  className: SkillCenterPage_module_css_default.cardHead,
1043
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1058
+ children: [(0, react_jsx_runtime.jsx)("span", {
1044
1059
  className: SkillCenterPage_module_css_default.cardIcon,
1045
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSkillOutlineRegular, { size: 16 })
1046
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1060
+ children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSkillOutlineRegular, { size: 16 })
1061
+ }), (0, react_jsx_runtime.jsxs)("div", {
1047
1062
  className: SkillCenterPage_module_css_default.cardTitleRow,
1048
1063
  children: [
1049
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1064
+ (0, react_jsx_runtime.jsx)("div", {
1050
1065
  className: SkillCenterPage_module_css_default.cardTitle,
1051
1066
  children: skill.i18n?.title ?? skill.name
1052
1067
  }),
1053
- skill.workspaceName === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1068
+ skill.workspaceName === void 0 ? null : (0, react_jsx_runtime.jsx)("span", {
1054
1069
  className: SkillCenterPage_module_css_default.workspaceBadge,
1055
1070
  children: skill.workspaceName
1056
1071
  }),
1057
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1072
+ (0, react_jsx_runtime.jsx)("span", {
1058
1073
  className: SkillCenterPage_module_css_default.plazaBadge + " " + (share.status === "approved" ? SkillCenterPage_module_css_default.plazaBadgeApproved : share.status === "rejected" ? SkillCenterPage_module_css_default.plazaBadgeRejected : share.status === "pending" ? SkillCenterPage_module_css_default.plazaBadgePending : SkillCenterPage_module_css_default.plazaBadgeLocal),
1059
1074
  "data-plaza-status": share.status,
1060
1075
  children: shareLabel
1061
1076
  }),
1062
- share.status === "approved" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1077
+ share.status === "approved" ? (0, react_jsx_runtime.jsx)("span", {
1063
1078
  className: SkillCenterPage_module_css_default.plazaSharedTag,
1064
1079
  "data-plaza-shared": true,
1065
1080
  children: t("plaza.sharedTag")
@@ -1067,14 +1082,14 @@ window.__ModuleLoader__.load({
1067
1082
  ]
1068
1083
  })]
1069
1084
  }),
1070
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1085
+ (0, react_jsx_runtime.jsxs)("div", {
1071
1086
  className: SkillCenterPage_module_css_default.cardBody,
1072
1087
  children: [
1073
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1088
+ (0, react_jsx_runtime.jsx)("div", {
1074
1089
  className: SkillCenterPage_module_css_default.cardSummary,
1075
1090
  children: skill.i18n?.summary ?? skill.description
1076
1091
  }),
1077
- share.status === "rejected" && share.record?.reviewNote !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1092
+ share.status === "rejected" && share.record?.reviewNote !== void 0 ? (0, react_jsx_runtime.jsxs)("div", {
1078
1093
  className: SkillCenterPage_module_css_default.plazaReason,
1079
1094
  children: [
1080
1095
  t("plaza.reason"),
@@ -1082,18 +1097,18 @@ window.__ModuleLoader__.load({
1082
1097
  share.record.reviewNote
1083
1098
  ]
1084
1099
  }) : null,
1085
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1100
+ (0, react_jsx_runtime.jsxs)("div", {
1086
1101
  className: SkillCenterPage_module_css_default.cardMarks,
1087
1102
  children: [
1088
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1103
+ (0, react_jsx_runtime.jsx)("span", {
1089
1104
  className: skill.modelInvocable ? SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOn : SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOff,
1090
1105
  children: t("skill.modelInvocable")
1091
1106
  }),
1092
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1107
+ (0, react_jsx_runtime.jsx)("span", {
1093
1108
  className: skill.userInvocable ? SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOn : SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOff,
1094
1109
  children: t("skill.userInvocable")
1095
1110
  }),
1096
- skill.linked === true ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1111
+ skill.linked === true ? (0, react_jsx_runtime.jsx)("span", {
1097
1112
  className: SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markDanger,
1098
1113
  children: t("skill.linked")
1099
1114
  }) : null
@@ -1101,9 +1116,9 @@ window.__ModuleLoader__.load({
1101
1116
  })
1102
1117
  ]
1103
1118
  }),
1104
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1119
+ (0, react_jsx_runtime.jsxs)("div", {
1105
1120
  className: SkillCenterPage_module_css_default.cardEnd,
1106
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1121
+ children: [(0, react_jsx_runtime.jsx)("button", {
1107
1122
  type: "button",
1108
1123
  className: skill.modelInvocable ? SkillCenterPage_module_css_default.switch + " " + SkillCenterPage_module_css_default.switchOn : SkillCenterPage_module_css_default.switch,
1109
1124
  "aria-label": skill.modelInvocable ? t("skill.disabled") : t("skill.enabled"),
@@ -1111,10 +1126,10 @@ window.__ModuleLoader__.load({
1111
1126
  onClick: () => {
1112
1127
  onToggle(skill, !skill.modelInvocable);
1113
1128
  }
1114
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1129
+ }), (0, react_jsx_runtime.jsxs)("div", {
1115
1130
  className: SkillCenterPage_module_css_default.cardActions,
1116
1131
  children: [
1117
- canSubmit(share.status) ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1132
+ canSubmit(share.status) ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1118
1133
  variant: "primary",
1119
1134
  size: "sm",
1120
1135
  disabled: shareBusy || shareDisabled,
@@ -1123,7 +1138,7 @@ window.__ModuleLoader__.load({
1123
1138
  },
1124
1139
  children: share.status === "rejected" ? t("plaza.resubmit") : t("plaza.share")
1125
1140
  }) : null,
1126
- share.sharedByMe && share.record !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1141
+ share.sharedByMe && share.record !== void 0 ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1127
1142
  variant: "outline",
1128
1143
  size: "sm",
1129
1144
  disabled: shareBusy,
@@ -1132,7 +1147,7 @@ window.__ModuleLoader__.load({
1132
1147
  },
1133
1148
  children: t("plaza.unshare")
1134
1149
  }) : null,
1135
- skill.path === void 0 || skill.linked === true ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1150
+ skill.path === void 0 || skill.linked === true ? null : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1136
1151
  variant: "outline",
1137
1152
  size: "sm",
1138
1153
  onClick: () => {
@@ -1140,7 +1155,7 @@ window.__ModuleLoader__.load({
1140
1155
  },
1141
1156
  children: t("action.delete")
1142
1157
  }),
1143
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1158
+ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1144
1159
  variant: "outline",
1145
1160
  size: "sm",
1146
1161
  onClick: () => {
@@ -1151,7 +1166,7 @@ window.__ModuleLoader__.load({
1151
1166
  ]
1152
1167
  })]
1153
1168
  }),
1154
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
1169
+ (0, react_jsx_runtime.jsxs)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
1155
1170
  open,
1156
1171
  onClose: () => {
1157
1172
  setOpen(false);
@@ -1159,37 +1174,37 @@ window.__ModuleLoader__.load({
1159
1174
  title: skill.name,
1160
1175
  closeLabel: t("action.close"),
1161
1176
  className: SkillCenterPage_module_css_default.dialog,
1162
- footer: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1177
+ footer: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1163
1178
  variant: "outline",
1164
1179
  onClick: () => {
1165
1180
  setOpen(false);
1166
1181
  },
1167
1182
  children: t("action.close")
1168
1183
  }),
1169
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dl", {
1184
+ children: [(0, react_jsx_runtime.jsx)("dl", {
1170
1185
  className: SkillCenterPage_module_css_default.detail,
1171
- children: details.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1186
+ children: details.map((item) => (0, react_jsx_runtime.jsxs)("div", {
1172
1187
  className: SkillCenterPage_module_css_default.detailRow,
1173
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", {
1188
+ children: [(0, react_jsx_runtime.jsx)("dt", {
1174
1189
  className: SkillCenterPage_module_css_default.detailLabel,
1175
1190
  children: t(item.key)
1176
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dd", {
1191
+ }), (0, react_jsx_runtime.jsx)("dd", {
1177
1192
  className: SkillCenterPage_module_css_default.detailValue,
1178
1193
  children: item.value
1179
1194
  })]
1180
1195
  }, item.key))
1181
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
1196
+ }), (0, react_jsx_runtime.jsxs)("section", {
1182
1197
  className: SkillCenterPage_module_css_default.body,
1183
1198
  children: [
1184
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
1199
+ (0, react_jsx_runtime.jsx)("h3", {
1185
1200
  className: SkillCenterPage_module_css_default.bodyLabel,
1186
1201
  children: t("detail.content")
1187
1202
  }),
1188
- body.kind === "loading" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1203
+ body.kind === "loading" ? (0, react_jsx_runtime.jsx)("p", {
1189
1204
  className: SkillCenterPage_module_css_default.bodyStatus,
1190
1205
  children: t("content.loading")
1191
1206
  }) : null,
1192
- body.kind === "failed" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
1207
+ body.kind === "failed" ? (0, react_jsx_runtime.jsxs)("p", {
1193
1208
  className: SkillCenterPage_module_css_default.bodyError,
1194
1209
  children: [
1195
1210
  t("content.failed"),
@@ -1197,7 +1212,7 @@ window.__ModuleLoader__.load({
1197
1212
  body.message
1198
1213
  ]
1199
1214
  }) : null,
1200
- body.kind === "ready" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("pre", {
1215
+ body.kind === "ready" ? (0, react_jsx_runtime.jsx)("pre", {
1201
1216
  className: SkillCenterPage_module_css_default.bodyPre,
1202
1217
  "data-skill-body": skill.name,
1203
1218
  children: body.content
@@ -1596,19 +1611,19 @@ window.__ModuleLoader__.load({
1596
1611
  ]);
1597
1612
  const visibleGroups = tab === "builtin" ? builtinGroups : personalGroups;
1598
1613
  const visibleTotal = countOf(visibleGroups);
1599
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1614
+ return (0, react_jsx_runtime.jsx)("div", {
1600
1615
  className: SkillCenterPage_module_css_default.page,
1601
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1616
+ children: (0, react_jsx_runtime.jsxs)("div", {
1602
1617
  className: SkillCenterPage_module_css_default.pageContent,
1603
1618
  children: [
1604
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
1619
+ (0, react_jsx_runtime.jsxs)("header", {
1605
1620
  className: SkillCenterPage_module_css_default.pageHead,
1606
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
1621
+ children: [(0, react_jsx_runtime.jsx)("h1", {
1607
1622
  className: SkillCenterPage_module_css_default.pageTitle,
1608
1623
  children: t("panel")
1609
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1624
+ }), (0, react_jsx_runtime.jsxs)("div", {
1610
1625
  className: SkillCenterPage_module_css_default.toolbar,
1611
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1626
+ children: [(0, react_jsx_runtime.jsx)("button", {
1612
1627
  type: "button",
1613
1628
  className: SkillCenterPage_module_css_default.iconButton,
1614
1629
  "aria-label": t("action.refresh"),
@@ -1616,15 +1631,15 @@ window.__ModuleLoader__.load({
1616
1631
  onClick: () => {
1617
1632
  load();
1618
1633
  },
1619
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1634
+ children: (0, react_jsx_runtime.jsx)("span", {
1620
1635
  className: SkillCenterPage_module_css_default.iconWrap,
1621
1636
  "aria-hidden": "true",
1622
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, {})
1637
+ children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, {})
1623
1638
  })
1624
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1639
+ }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1625
1640
  variant: "primary",
1626
1641
  size: "sm",
1627
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutlineRegular, { size: 13 }),
1642
+ icon: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutlineRegular, { size: 13 }),
1628
1643
  onClick: () => {
1629
1644
  setCreating((v) => !v);
1630
1645
  },
@@ -1632,11 +1647,11 @@ window.__ModuleLoader__.load({
1632
1647
  })]
1633
1648
  })]
1634
1649
  }),
1635
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1650
+ (0, react_jsx_runtime.jsx)("div", {
1636
1651
  className: SkillCenterPage_module_css_default.tabs,
1637
1652
  role: "tablist",
1638
1653
  "aria-label": t("tab.label"),
1639
- children: tabRows.map((row) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
1654
+ children: tabRows.map((row) => (0, react_jsx_runtime.jsxs)("button", {
1640
1655
  type: "button",
1641
1656
  role: "tab",
1642
1657
  id: "skill-center-tab-" + row.value,
@@ -1648,13 +1663,13 @@ window.__ModuleLoader__.load({
1648
1663
  setTab(row.value);
1649
1664
  if (row.value === "connectors" && connectors.kind === "failed") loadConnectors();
1650
1665
  },
1651
- children: [row.label, row.count === 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1666
+ children: [row.label, row.count === 0 ? null : (0, react_jsx_runtime.jsx)("span", {
1652
1667
  className: SkillCenterPage_module_css_default.tabCount,
1653
1668
  children: row.count
1654
1669
  })]
1655
1670
  }, row.value))
1656
1671
  }),
1657
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
1672
+ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
1658
1673
  open: creating,
1659
1674
  onClose: () => {
1660
1675
  setCreating(false);
@@ -1662,58 +1677,58 @@ window.__ModuleLoader__.load({
1662
1677
  title: t("create.title"),
1663
1678
  closeLabel: t("action.cancel"),
1664
1679
  className: SkillCenterPage_module_css_default.dialog,
1665
- footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1680
+ footer: (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1666
1681
  variant: "outline",
1667
1682
  autoFocus: true,
1668
1683
  onClick: () => {
1669
1684
  setCreating(false);
1670
1685
  },
1671
1686
  children: t("action.cancel")
1672
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1687
+ }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1673
1688
  variant: "primary",
1674
1689
  onClick: () => {
1675
1690
  submit();
1676
1691
  },
1677
1692
  children: t("action.confirm")
1678
1693
  })] }),
1679
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1694
+ children: (0, react_jsx_runtime.jsxs)("div", {
1680
1695
  className: SkillCenterPage_module_css_default.form,
1681
1696
  children: [
1682
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1697
+ (0, react_jsx_runtime.jsx)(DraftField, {
1683
1698
  label: t("create.name"),
1684
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1699
+ children: (0, react_jsx_runtime.jsx)("input", {
1685
1700
  className: SkillCenterPage_module_css_default.input,
1686
1701
  value: draft.name,
1687
1702
  onChange: set("name")
1688
1703
  })
1689
1704
  }),
1690
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1705
+ (0, react_jsx_runtime.jsx)(DraftField, {
1691
1706
  label: t("create.description"),
1692
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1707
+ children: (0, react_jsx_runtime.jsx)("input", {
1693
1708
  className: SkillCenterPage_module_css_default.input,
1694
1709
  value: draft.description,
1695
1710
  onChange: set("description")
1696
1711
  })
1697
1712
  }),
1698
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1713
+ (0, react_jsx_runtime.jsx)(DraftField, {
1699
1714
  label: t("create.whenToUse"),
1700
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1715
+ children: (0, react_jsx_runtime.jsx)("input", {
1701
1716
  className: SkillCenterPage_module_css_default.input,
1702
1717
  value: draft.whenToUse,
1703
1718
  onChange: set("whenToUse")
1704
1719
  })
1705
1720
  }),
1706
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1721
+ (0, react_jsx_runtime.jsx)(DraftField, {
1707
1722
  label: t("create.content"),
1708
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
1723
+ children: (0, react_jsx_runtime.jsx)("textarea", {
1709
1724
  className: SkillCenterPage_module_css_default.textarea,
1710
1725
  value: draft.content,
1711
1726
  onChange: set("content")
1712
1727
  })
1713
1728
  }),
1714
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1729
+ (0, react_jsx_runtime.jsx)(DraftField, {
1715
1730
  label: t("create.root"),
1716
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
1731
+ children: (0, react_jsx_runtime.jsxs)("select", {
1717
1732
  className: SkillCenterPage_module_css_default.input,
1718
1733
  value: draft.root,
1719
1734
  onChange: (e) => {
@@ -1722,10 +1737,10 @@ window.__ModuleLoader__.load({
1722
1737
  root: e.target.value === "project" ? "project" : "user"
1723
1738
  }));
1724
1739
  },
1725
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1740
+ children: [(0, react_jsx_runtime.jsx)("option", {
1726
1741
  value: "user",
1727
1742
  children: t("create.rootUser")
1728
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1743
+ }), (0, react_jsx_runtime.jsx)("option", {
1729
1744
  value: "project",
1730
1745
  children: t("create.rootProject")
1731
1746
  })]
@@ -1734,52 +1749,52 @@ window.__ModuleLoader__.load({
1734
1749
  ]
1735
1750
  })
1736
1751
  }),
1737
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
1752
+ (0, react_jsx_runtime.jsxs)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
1738
1753
  open: shareTarget !== null,
1739
1754
  onClose: closeShare,
1740
1755
  title: t("plaza.dialogTitle"),
1741
1756
  headless: true,
1742
1757
  className: SkillCenterPage_module_css_default.publishDialog,
1743
1758
  children: [
1744
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
1759
+ (0, react_jsx_runtime.jsxs)("header", {
1745
1760
  className: SkillCenterPage_module_css_default.dialogHeader,
1746
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
1761
+ children: [(0, react_jsx_runtime.jsx)("h2", {
1747
1762
  className: SkillCenterPage_module_css_default.dialogTitle,
1748
1763
  children: t("plaza.dialogTitle")
1749
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1764
+ }), (0, react_jsx_runtime.jsx)("button", {
1750
1765
  type: "button",
1751
1766
  className: SkillCenterPage_module_css_default.dialogClose,
1752
1767
  "aria-label": t("action.close"),
1753
1768
  onClick: closeShare,
1754
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CloseGlyph, { size: 14 })
1769
+ children: (0, react_jsx_runtime.jsx)(CloseGlyph, { size: 14 })
1755
1770
  })]
1756
1771
  }),
1757
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1772
+ (0, react_jsx_runtime.jsx)("div", {
1758
1773
  className: SkillCenterPage_module_css_default.dialogBody,
1759
1774
  "data-publish-body": true,
1760
- children: shareTarget === null ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1775
+ children: shareTarget === null ? null : (0, react_jsx_runtime.jsxs)("div", {
1761
1776
  className: SkillCenterPage_module_css_default.form,
1762
1777
  "data-share-dialog": shareTarget.name,
1763
1778
  children: [
1764
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1779
+ (0, react_jsx_runtime.jsx)(DraftField, {
1765
1780
  label: t("create.name"),
1766
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1781
+ children: (0, react_jsx_runtime.jsx)("input", {
1767
1782
  className: SkillCenterPage_module_css_default.input,
1768
1783
  value: shareTarget.name,
1769
1784
  readOnly: true
1770
1785
  })
1771
1786
  }),
1772
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1787
+ (0, react_jsx_runtime.jsx)(DraftField, {
1773
1788
  label: t("create.description"),
1774
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1789
+ children: (0, react_jsx_runtime.jsx)("input", {
1775
1790
  className: SkillCenterPage_module_css_default.input,
1776
1791
  value: shareTarget.description,
1777
1792
  readOnly: true
1778
1793
  })
1779
1794
  }),
1780
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1795
+ (0, react_jsx_runtime.jsx)(DraftField, {
1781
1796
  label: t("plaza.tags"),
1782
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
1797
+ children: (0, react_jsx_runtime.jsx)("input", {
1783
1798
  className: SkillCenterPage_module_css_default.input,
1784
1799
  value: shareTags,
1785
1800
  placeholder: t("plaza.tagsPlaceholder"),
@@ -1788,9 +1803,9 @@ window.__ModuleLoader__.load({
1788
1803
  }
1789
1804
  })
1790
1805
  }),
1791
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1806
+ (0, react_jsx_runtime.jsx)(DraftField, {
1792
1807
  label: t("plaza.visibility"),
1793
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
1808
+ children: (0, react_jsx_runtime.jsxs)("select", {
1794
1809
  className: SkillCenterPage_module_css_default.input,
1795
1810
  value: shareVisibility,
1796
1811
  "data-share-visibility": true,
@@ -1800,24 +1815,24 @@ window.__ModuleLoader__.load({
1800
1815
  if (visibility === "department") setShareDepartment(shareDepartment ?? ownCode ?? selectableDepartments[0]?.code);
1801
1816
  },
1802
1817
  children: [
1803
- visibilityOptions.includes("global") ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1818
+ visibilityOptions.includes("global") ? (0, react_jsx_runtime.jsx)("option", {
1804
1819
  value: "global",
1805
1820
  children: t("plaza.visibilityGlobal")
1806
1821
  }) : null,
1807
- visibilityOptions.includes("department") ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1822
+ visibilityOptions.includes("department") ? (0, react_jsx_runtime.jsx)("option", {
1808
1823
  value: "department",
1809
1824
  children: t("plaza.visibilityDepartment")
1810
1825
  }) : null,
1811
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1826
+ (0, react_jsx_runtime.jsx)("option", {
1812
1827
  value: "private",
1813
1828
  children: t("plaza.visibilityPrivate")
1814
1829
  })
1815
1830
  ]
1816
1831
  })
1817
1832
  }),
1818
- shareVisibility === "department" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1833
+ shareVisibility === "department" ? (0, react_jsx_runtime.jsx)(DraftField, {
1819
1834
  label: t("plaza.department"),
1820
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("select", {
1835
+ children: (0, react_jsx_runtime.jsx)("select", {
1821
1836
  className: SkillCenterPage_module_css_default.input,
1822
1837
  value: shareDepartment ?? selectableDepartments[0]?.code ?? "",
1823
1838
  "data-share-department": true,
@@ -1825,19 +1840,19 @@ window.__ModuleLoader__.load({
1825
1840
  onChange: (event) => {
1826
1841
  setShareDepartment(event.target.value);
1827
1842
  },
1828
- children: selectableDepartments.map((department) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
1843
+ children: selectableDepartments.map((department) => (0, react_jsx_runtime.jsx)("option", {
1829
1844
  value: department.code,
1830
1845
  children: department.name
1831
1846
  }, department.code))
1832
1847
  })
1833
1848
  }) : null,
1834
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1849
+ (0, react_jsx_runtime.jsx)("div", {
1835
1850
  className: SkillCenterPage_module_css_default.plazaScopeHint,
1836
1851
  children: role === "admin" ? t("plaza.scopeHintAdmin") : t("plaza.scopeHintUser")
1837
1852
  }),
1838
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
1853
+ (0, react_jsx_runtime.jsx)(DraftField, {
1839
1854
  label: t("plaza.instruction"),
1840
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
1855
+ children: (0, react_jsx_runtime.jsx)("textarea", {
1841
1856
  className: SkillCenterPage_module_css_default.textarea,
1842
1857
  value: shareInstruction,
1843
1858
  readOnly: shareLoading,
@@ -1847,7 +1862,7 @@ window.__ModuleLoader__.load({
1847
1862
  }
1848
1863
  })
1849
1864
  }),
1850
- shareError === null ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1865
+ shareError === null ? null : (0, react_jsx_runtime.jsx)("div", {
1851
1866
  className: SkillCenterPage_module_css_default.status + " " + SkillCenterPage_module_css_default.statusError,
1852
1867
  role: "alert",
1853
1868
  children: shareError
@@ -1855,14 +1870,14 @@ window.__ModuleLoader__.load({
1855
1870
  ]
1856
1871
  })
1857
1872
  }),
1858
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("footer", {
1873
+ (0, react_jsx_runtime.jsxs)("footer", {
1859
1874
  className: SkillCenterPage_module_css_default.dialogFooter,
1860
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1875
+ children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1861
1876
  variant: "outline",
1862
1877
  disabled: shareBusy,
1863
1878
  onClick: closeShare,
1864
1879
  children: t("action.cancel")
1865
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1880
+ }), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1866
1881
  variant: "primary",
1867
1882
  disabled: shareBusy || shareLoading,
1868
1883
  onClick: () => {
@@ -1873,59 +1888,59 @@ window.__ModuleLoader__.load({
1873
1888
  })
1874
1889
  ]
1875
1890
  }),
1876
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1891
+ (0, react_jsx_runtime.jsxs)("div", {
1877
1892
  className: SkillCenterPage_module_css_default.searchField,
1878
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Input, {
1893
+ children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Input, {
1879
1894
  type: "search",
1880
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, {}),
1895
+ icon: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, {}),
1881
1896
  placeholder: tab === "connectors" ? t("search.connectorPlaceholder") : t("search.placeholder"),
1882
1897
  "aria-label": tab === "connectors" ? t("search.connectorPlaceholder") : t("search.placeholder"),
1883
1898
  value: query,
1884
1899
  onChange: (e) => {
1885
1900
  setQuery(e.target.value);
1886
1901
  }
1887
- }), query === "" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1902
+ }), query === "" ? null : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
1888
1903
  size: "sm",
1889
1904
  variant: "ghost",
1890
1905
  className: SkillCenterPage_module_css_default.searchClear,
1891
1906
  "aria-label": t("search.clear"),
1892
- icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CloseGlyph, {}),
1907
+ icon: (0, react_jsx_runtime.jsx)(CloseGlyph, {}),
1893
1908
  onClick: () => {
1894
1909
  setQuery("");
1895
1910
  }
1896
1911
  })]
1897
1912
  }),
1898
- tab !== "connectors" && plaza.kind === "unavailable" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1913
+ tab !== "connectors" && plaza.kind === "unavailable" ? (0, react_jsx_runtime.jsx)("div", {
1899
1914
  className: SkillCenterPage_module_css_default.status,
1900
1915
  role: "status",
1901
1916
  "data-plaza-unavailable": true,
1902
1917
  children: t("plaza.unavailable")
1903
1918
  }) : null,
1904
- shareError !== null && shareTarget === null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1919
+ shareError !== null && shareTarget === null ? (0, react_jsx_runtime.jsx)("div", {
1905
1920
  className: SkillCenterPage_module_css_default.status + " " + SkillCenterPage_module_css_default.statusError,
1906
1921
  role: "alert",
1907
1922
  children: shareError
1908
1923
  }) : null,
1909
- connectorNotice === null ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1924
+ connectorNotice === null ? null : (0, react_jsx_runtime.jsx)("div", {
1910
1925
  className: SkillCenterPage_module_css_default.status + " " + SkillCenterPage_module_css_default.statusError,
1911
1926
  role: "alert",
1912
1927
  children: connectorNotice
1913
1928
  }),
1914
- (tab === "builtin" || tab === "personal") && progress !== void 0 && progress.done < progress.total ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1929
+ (tab === "builtin" || tab === "personal") && progress !== void 0 && progress.done < progress.total ? (0, react_jsx_runtime.jsxs)("div", {
1915
1930
  className: SkillCenterPage_module_css_default.progressRow,
1916
1931
  children: [
1917
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1932
+ (0, react_jsx_runtime.jsx)("span", {
1918
1933
  className: SkillCenterPage_module_css_default.progressLabel,
1919
1934
  children: t("translate.label")
1920
1935
  }),
1921
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1936
+ (0, react_jsx_runtime.jsx)("span", {
1922
1937
  className: SkillCenterPage_module_css_default.progressTrack,
1923
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1938
+ children: (0, react_jsx_runtime.jsx)("span", {
1924
1939
  className: SkillCenterPage_module_css_default.progressFill,
1925
1940
  style: { width: String(progress.total === 0 ? 0 : Math.round(progress.done / progress.total * 100)) + "%" }
1926
1941
  })
1927
1942
  }),
1928
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1943
+ (0, react_jsx_runtime.jsxs)("span", {
1929
1944
  className: SkillCenterPage_module_css_default.progressCount,
1930
1945
  children: [
1931
1946
  progress.done,
@@ -1935,19 +1950,19 @@ window.__ModuleLoader__.load({
1935
1950
  })
1936
1951
  ]
1937
1952
  }) : null,
1938
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1953
+ (0, react_jsx_runtime.jsxs)("div", {
1939
1954
  className: SkillCenterPage_module_css_default.tabPanel,
1940
1955
  id: "skill-center-panel-" + tab,
1941
1956
  role: "tabpanel",
1942
1957
  "aria-labelledby": "skill-center-tab-" + tab,
1943
1958
  "data-tab-panel": tab,
1944
1959
  children: [
1945
- tab === "builtin" || tab === "personal" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1946
- state.kind === "loading" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1960
+ tab === "builtin" || tab === "personal" ? (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1961
+ state.kind === "loading" ? (0, react_jsx_runtime.jsx)("div", {
1947
1962
  className: SkillCenterPage_module_css_default.status,
1948
1963
  children: t("state.loading")
1949
1964
  }) : null,
1950
- state.kind === "failed" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1965
+ state.kind === "failed" ? (0, react_jsx_runtime.jsxs)("div", {
1951
1966
  className: SkillCenterPage_module_css_default.status + " " + SkillCenterPage_module_css_default.statusError,
1952
1967
  children: [
1953
1968
  t("state.failed"),
@@ -1955,21 +1970,21 @@ window.__ModuleLoader__.load({
1955
1970
  state.message
1956
1971
  ]
1957
1972
  }) : null,
1958
- state.kind === "ready" && visibleTotal === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1973
+ state.kind === "ready" && visibleTotal === 0 ? (0, react_jsx_runtime.jsx)("div", {
1959
1974
  className: SkillCenterPage_module_css_default.status,
1960
1975
  children: query.trim() === "" ? t("state.empty") : t("search.noMatches")
1961
1976
  }) : null,
1962
- visibleGroups.map((group) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1977
+ visibleGroups.map((group) => (0, react_jsx_runtime.jsxs)("div", {
1963
1978
  className: SkillCenterPage_module_css_default.group,
1964
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("h2", {
1979
+ children: [(0, react_jsx_runtime.jsxs)("h2", {
1965
1980
  className: SkillCenterPage_module_css_default.groupTitle,
1966
- children: [group.title, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1981
+ children: [group.title, (0, react_jsx_runtime.jsx)("span", {
1967
1982
  className: SkillCenterPage_module_css_default.groupCount,
1968
1983
  children: group.skills.length
1969
1984
  })]
1970
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
1985
+ }), (0, react_jsx_runtime.jsx)("ul", {
1971
1986
  className: SkillCenterPage_module_css_default.cards,
1972
- children: group.skills.map((skill) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkillCard, {
1987
+ children: group.skills.map((skill) => (0, react_jsx_runtime.jsx)(SkillCard, {
1973
1988
  skill,
1974
1989
  api,
1975
1990
  cwd: state.kind === "ready" ? state.payload.cwd : scope,
@@ -1991,15 +2006,15 @@ window.__ModuleLoader__.load({
1991
2006
  })]
1992
2007
  }, group.key))
1993
2008
  ] }) : null,
1994
- tab === "plaza" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2009
+ tab === "plaza" ? (0, react_jsx_runtime.jsx)("div", {
1995
2010
  className: SkillCenterPage_module_css_default.plazaPanel,
1996
2011
  "data-plaza-panel": true,
1997
- children: renderSlot("skill-center.section", { query }, { fallback: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2012
+ children: renderSlot("skill-center.section", { query }, { fallback: (0, react_jsx_runtime.jsx)("div", {
1998
2013
  className: SkillCenterPage_module_css_default.status,
1999
2014
  children: t("plaza.sectionFallback")
2000
2015
  }) })
2001
2016
  }) : null,
2002
- tab === "connectors" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ConnectorsTab, {
2017
+ tab === "connectors" ? (0, react_jsx_runtime.jsx)(ConnectorsTab, {
2003
2018
  state: connectors,
2004
2019
  query,
2005
2020
  busyId: connectorBusyId,
@@ -2021,17 +2036,23 @@ window.__ModuleLoader__.load({
2021
2036
  });
2022
2037
  }
2023
2038
  //#endregion
2024
- //#region src/client/SkillCenterPanelIcon.tsx
2039
+ //#region lib/types/client/SkillCenterPanelIcon.js
2025
2040
  /**
2026
2041
  * Render the glyph at the size the sidebar asks for.
2027
2042
  * @param props - the sidebar's icon share: requested edge and selected state.
2028
2043
  * @returns the icon element.
2029
2044
  */
2030
2045
  function SkillCenterPanelIcon({ size }) {
2031
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSkillOutlineRegular, { size });
2046
+ return (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSkillOutlineRegular, { size });
2032
2047
  }
2033
2048
  //#endregion
2034
- //#region src/client/locales.ts
2049
+ //#region lib/types/client/locales.js
2050
+ /**
2051
+ * Skill center dictionaries. Keys are typed so the panel and the sidebar entry
2052
+ * cannot reference a string that does not exist in both languages.
2053
+ *
2054
+ * @module @sparkelf/dsh-client-ui-skill-center/client/locales
2055
+ */
2035
2056
  /** Simplified Chinese dictionary. */
2036
2057
  const zh = {
2037
2058
  "panel": "技能中心",
@@ -2115,7 +2136,6 @@ window.__ModuleLoader__.load({
2115
2136
  "connector.enable": "启用",
2116
2137
  "connector.disable": "停用",
2117
2138
  "connector.capabilities": "能力",
2118
- "connector.noCapabilities": "当前账号没有可用的连接器能力",
2119
2139
  "connector.empty": "暂无连接器",
2120
2140
  "connector.noMatches": "无匹配连接器",
2121
2141
  "connector.unavailable": "暂不可用",
@@ -2204,14 +2224,13 @@ window.__ModuleLoader__.load({
2204
2224
  "connector.enable": "Enable",
2205
2225
  "connector.disable": "Disable",
2206
2226
  "connector.capabilities": "Capabilities",
2207
- "connector.noCapabilities": "This account has no available connector capabilities",
2208
2227
  "connector.empty": "No connectors",
2209
2228
  "connector.noMatches": "No matching connectors",
2210
2229
  "connector.unavailable": "Unavailable",
2211
2230
  "connector.busy": "Working…"
2212
2231
  };
2213
2232
  //#endregion
2214
- //#region src/client/index.ts
2233
+ //#region lib/types/client/index.js
2215
2234
  /** Dictionary namespace owned by this plugin. */
2216
2235
  const NS = "skillCenter";
2217
2236
  /** The id shared by the sidebar entry and the main panel it opens. */
@@ -87,7 +87,6 @@ export interface SkillCenterLocale {
87
87
  'connector.enable': string;
88
88
  'connector.disable': string;
89
89
  'connector.capabilities': string;
90
- 'connector.noCapabilities': string;
91
90
  'connector.empty': string;
92
91
  'connector.noMatches': string;
93
92
  'connector.unavailable': string;
package/package.json CHANGED
@@ -1,28 +1,20 @@
1
1
  {
2
- "name": "@sparkelf/dsh-client-ui-skill-center",
3
- "version": "0.2.2-alpha.2.4",
4
2
  "description": "Skill center for the dsh web client: browses loaded skills grouped by source, enables or disables model invocation, creates skills, and deletes them into a recoverable trash",
5
- "publishConfig": {
6
- "access": "public"
7
- },
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
11
- "directory": "packages/plus/ui-skill-center"
12
- },
13
- "type": "module",
14
- "main": "lib/index.js",
15
- "types": "lib/types/index.d.ts",
16
- "exports": {
17
- ".": {
18
- "types": "./lib/types/index.d.ts",
19
- "default": "./lib/index.js"
20
- },
21
- "./client": {
22
- "types": "./lib/types/client/index.d.ts",
23
- "default": "./lib/client.js"
24
- },
25
- "./package.json": "./package.json"
3
+ "devDependencies": {
4
+ "@deepseek-ai/cordis": "^4.0.2",
5
+ "@deepseek-ai/dsh-client-locale": "^0.1.6-alpha.1",
6
+ "@deepseek-ai/dsh-client-ui-layout": "^0.1.6-alpha.1",
7
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.6-alpha.1",
8
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.6-alpha.1",
9
+ "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.6-alpha.1",
10
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.6-alpha.1",
11
+ "@deepseek-ai/dsh-host-webserver": "^0.1.6-alpha.1",
12
+ "@deepseek-ai/dsh-session": "^0.1.6-alpha.1",
13
+ "@deepseek-ai/dsh-skill": "^0.1.6-alpha.1",
14
+ "@types/react": "~18.3.1",
15
+ "@types/react-dom": "~18.3.0",
16
+ "react": "^18.2.0",
17
+ "react-dom": "^18.2.0"
26
18
  },
27
19
  "dsh": {
28
20
  "client": {
@@ -33,9 +25,16 @@
33
25
  "platform": "web"
34
26
  }
35
27
  },
36
- "scripts": {
37
- "bundle": "tsdown",
38
- "watch": "tsdown --watch"
28
+ "exports": {
29
+ ".": {
30
+ "default": "./lib/index.js",
31
+ "types": "./lib/types/index.d.ts"
32
+ },
33
+ "./client": {
34
+ "default": "./lib/client.js",
35
+ "types": "./lib/types/client/index.d.ts"
36
+ },
37
+ "./package.json": "./package.json"
39
38
  },
40
39
  "files": [
41
40
  "lib/index.js",
@@ -43,23 +42,24 @@
43
42
  "lib/types/**/*.d.ts"
44
43
  ],
45
44
  "license": "MIT",
45
+ "main": "lib/index.js",
46
+ "name": "@sparkelf/dsh-client-ui-skill-center",
46
47
  "peerDependencies": {
47
48
  "@deepseek-ai/cordis": ">=4.0.1"
48
49
  },
49
- "devDependencies": {
50
- "@deepseek-ai/cordis": "workspace:^",
51
- "@deepseek-ai/dsh-client-locale": "workspace:^",
52
- "@deepseek-ai/dsh-client-ui-layout": "workspace:^",
53
- "@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
54
- "@deepseek-ai/dsh-client-ui-renderer": "workspace:^",
55
- "@deepseek-ai/dsh-client-ui-sidebar": "workspace:^",
56
- "@deepseek-ai/dsh-client-ui-slots": "workspace:^",
57
- "@deepseek-ai/dsh-host-webserver": "workspace:^",
58
- "@deepseek-ai/dsh-session": "workspace:^",
59
- "@deepseek-ai/dsh-skill": "workspace:^",
60
- "@types/react": "~18.3.1",
61
- "@types/react-dom": "~18.3.0",
62
- "react": "^18.2.0",
63
- "react-dom": "^18.2.0"
64
- }
50
+ "publishConfig": {
51
+ "access": "public"
52
+ },
53
+ "repository": {
54
+ "directory": "packages/plus/ui-skill-center",
55
+ "type": "git",
56
+ "url": "git+https://github.com/deepseek-ai/deepseek-harness.git"
57
+ },
58
+ "scripts": {
59
+ "bundle": "tsdown",
60
+ "watch": "tsdown --watch"
61
+ },
62
+ "type": "module",
63
+ "types": "lib/types/index.d.ts",
64
+ "version": "0.2.4-alpha.47"
65
65
  }