dsh-plugin 1.3.8 → 1.3.9

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/client/client.js CHANGED
@@ -290,6 +290,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
290
290
  failNetworkHint: "安装前检测到网络不通:无法连接到安装源(可能是断网、DNS 解析失败、被防火墙拦截,或代理配置有问题)。这不是插件本身的问题 —— 请检查网络连接,或到「设置」里确认 HTTP 代理配置,再到「系统诊断」运行一次连通性检测,然后重试。",
291
291
  failNetworkTarget: "无法访问 {url} —— 你的网络连接不通",
292
292
  failNetworkRunDiag: "去系统诊断检测网络",
293
+ failDshMissingHint: "系统找不到 dsh 命令(dsh 未加入系统 PATH),无法调用安装器执行安装。请确认 DeepSeek Harness 已正确安装、dsh 已加入 PATH(或重新安装),然后重试。这不是插件本身的问题。",
294
+ failPnpmMissingHint: "安装器找到了 dsh,但系统里没有 pnpm 命令(dsh 用它来管理 profile 插件)。请先安装 pnpm(如 npm install -g pnpm),确认 pnpm 已加入 PATH 后重试。这不是插件本身的问题。",
295
+ installChannelNpm: "NPM 包",
296
+ installChannelGit: "GitHub 源码",
297
+ installChannelDsh: "DSH 命令",
298
+ installEntryLine: "安装入口:{c}。",
293
299
  reportIssue: "去插件仓库提交 Issue",
294
300
  detail: "打开详情",
295
301
  noResult: "没有找到匹配的插件",
@@ -606,6 +612,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
606
612
  failNetworkHint: "The network could not be reached before install: the install source is unreachable (offline, DNS failure, firewall block, or a misconfigured proxy). This is not a problem with the plugin itself — please check your connection, confirm the HTTP proxy in Settings, run a connectivity check under System Diagnostics, then retry.",
607
613
  failNetworkTarget: "Cannot reach {url} — your network connection is down",
608
614
  failNetworkRunDiag: "Run a network diagnostic",
615
+ failDshMissingHint: "The dsh command could not be found (it is not on the system PATH), so the installer could not run. Please make sure DeepSeek Harness is installed correctly and dsh is on your PATH (or reinstall it), then retry. This is not a problem with the plugin itself.",
616
+ failPnpmMissingHint: "The installer found dsh, but pnpm is missing on this machine (dsh uses it to manage profile plugins). Please install pnpm first (e.g. npm install -g pnpm), make sure it is on your PATH, then retry. This is not a problem with the plugin itself.",
617
+ installChannelNpm: "NPM package",
618
+ installChannelGit: "GitHub source",
619
+ installChannelDsh: "DSH command",
620
+ installEntryLine: "Install entry: {c}.",
609
621
  reportIssue: "Report an Issue to the plugin repo",
610
622
  detail: "Open details",
611
623
  noResult: "No plugins match your search",
@@ -658,42 +670,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
658
670
  css: css$11
659
671
  });
660
672
  var Header_module_css_default = {
661
- "headerRight": "qikqja_headerRight",
662
- "resultCount": "qikqja_resultCount",
673
+ "tagline": "qikqja_tagline",
674
+ "tab": "qikqja_tab",
663
675
  "adBanner": "qikqja_adBanner",
664
- "segLabel": "qikqja_segLabel",
665
676
  "adBadge": "qikqja_adBadge",
677
+ "sortGroup": "qikqja_sortGroup",
666
678
  "search": "qikqja_search",
667
- "root": "qikqja_root",
668
- "headerTitleRow": "qikqja_headerTitleRow",
669
- "resultSeg": "qikqja_resultSeg",
670
- "tabCount": "qikqja_tabCount",
671
- "githubIcon": "qikqja_githubIcon",
672
- "title": "qikqja_title",
673
- "segBtn": "qikqja_segBtn",
674
- "tabs": "qikqja_tabs",
675
- "versionBtn": "qikqja_versionBtn",
676
- "aboutBtn": "qikqja_aboutBtn",
677
- "logoIcon": "qikqja_logoIcon",
678
- "controls": "qikqja_controls",
679
- "taglineLink": "qikqja_taglineLink",
680
- "hubUpdateBadge": "qikqja_hubUpdateBadge",
681
- "copyIcon": "qikqja_copyIcon",
682
- "segBtnActive": "qikqja_segBtnActive",
683
- "searchRow": "qikqja_searchRow",
679
+ "tabsRow": "qikqja_tabsRow",
684
680
  "adText": "qikqja_adText",
681
+ "logoIcon": "qikqja_logoIcon",
685
682
  "tabActive": "qikqja_tabActive",
686
- "githubLink": "qikqja_githubLink",
687
- "tabsRow": "qikqja_tabsRow",
688
- "sortGroup": "qikqja_sortGroup",
689
683
  "header": "qikqja_header",
690
- "langBtn": "qikqja_langBtn",
691
- "brandTitle": "qikqja_brandTitle",
692
- "tagline": "qikqja_tagline",
693
- "tab": "qikqja_tab",
684
+ "versionBtn": "qikqja_versionBtn",
685
+ "segBtnActive": "qikqja_segBtnActive",
686
+ "aboutBtn": "qikqja_aboutBtn",
687
+ "githubIcon": "qikqja_githubIcon",
694
688
  "segGroup": "qikqja_segGroup",
689
+ "segBtn": "qikqja_segBtn",
690
+ "headerRight": "qikqja_headerRight",
691
+ "langBtn": "qikqja_langBtn",
692
+ "resultSeg": "qikqja_resultSeg",
693
+ "githubLink": "qikqja_githubLink",
695
694
  "version": "qikqja_version",
696
- "adArrow": "qikqja_adArrow"
695
+ "copyIcon": "qikqja_copyIcon",
696
+ "headerTitleRow": "qikqja_headerTitleRow",
697
+ "resultCount": "qikqja_resultCount",
698
+ "adArrow": "qikqja_adArrow",
699
+ "brandTitle": "qikqja_brandTitle",
700
+ "controls": "qikqja_controls",
701
+ "segLabel": "qikqja_segLabel",
702
+ "searchRow": "qikqja_searchRow",
703
+ "taglineLink": "qikqja_taglineLink",
704
+ "tabs": "qikqja_tabs",
705
+ "title": "qikqja_title",
706
+ "hubUpdateBadge": "qikqja_hubUpdateBadge",
707
+ "tabCount": "qikqja_tabCount",
708
+ "root": "qikqja_root"
697
709
  };
698
710
  //#endregion
699
711
  //#region \0dsh-css:src/client/styles/Modal.module.css.mjs
@@ -712,136 +724,136 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
712
724
  css: css$10
713
725
  });
714
726
  var Modal_module_css_default = {
715
- "modalClose": "BiQ1zG_modalClose",
716
- "queuedHint": "BiQ1zG_queuedHint",
717
- "resultCheckIcon": "BiQ1zG_resultCheckIcon",
718
- "modalActions": "BiQ1zG_modalActions",
719
- "logModal": "BiQ1zG_logModal",
727
+ "modalCmdText": "BiQ1zG_modalCmdText",
728
+ "result": "BiQ1zG_result",
729
+ "failKind": "BiQ1zG_failKind",
730
+ "progressText": "BiQ1zG_progressText",
731
+ "progressFill": "BiQ1zG_progressFill",
732
+ "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
733
+ "aboutModal": "BiQ1zG_aboutModal",
734
+ "failedCopyHint": "BiQ1zG_failedCopyHint",
735
+ "modalCloseIcon": "BiQ1zG_modalCloseIcon",
736
+ "confirmIcon": "BiQ1zG_confirmIcon",
737
+ "modalIn": "BiQ1zG_modalIn",
738
+ "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
739
+ "failClear": "BiQ1zG_failClear",
720
740
  "modalCopy": "BiQ1zG_modalCopy",
721
- "restartLater": "BiQ1zG_restartLater",
722
- "queueSectionTitle": "BiQ1zG_queueSectionTitle",
741
+ "failKindInstall": "BiQ1zG_failKindInstall",
742
+ "modalCmdCopy": "BiQ1zG_modalCmdCopy",
743
+ "progressFillFail": "BiQ1zG_progressFillFail",
744
+ "detailUpdateHint": "BiQ1zG_detailUpdateHint",
745
+ "queueRowTarget": "BiQ1zG_queueRowTarget",
746
+ "toastFail": "BiQ1zG_toastFail",
747
+ "modalValue": "BiQ1zG_modalValue",
748
+ "noticeRowOk": "BiQ1zG_noticeRowOk",
749
+ "noticeFoot": "BiQ1zG_noticeFoot",
750
+ "detailStatusRunning": "BiQ1zG_detailStatusRunning",
751
+ "modalCancel": "BiQ1zG_modalCancel",
752
+ "queueRowTrack": "BiQ1zG_queueRowTrack",
753
+ "errorCopySoft": "BiQ1zG_errorCopySoft",
754
+ "cliOnlyHint": "BiQ1zG_cliOnlyHint",
755
+ "queueRowBody": "BiQ1zG_queueRowBody",
756
+ "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
757
+ "failHead": "BiQ1zG_failHead",
758
+ "uninstallConfirm": "BiQ1zG_uninstallConfirm",
759
+ "detailRow": "BiQ1zG_detailRow",
760
+ "errorModal": "BiQ1zG_errorModal",
761
+ "progress": "BiQ1zG_progress",
762
+ "failPrepareHint": "BiQ1zG_failPrepareHint",
763
+ "detailPathText": "BiQ1zG_detailPathText",
764
+ "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
765
+ "toast": "BiQ1zG_toast",
723
766
  "noticeMain": "BiQ1zG_noticeMain",
724
- "failRepo": "BiQ1zG_failRepo",
725
- "noticeList": "BiQ1zG_noticeList",
726
- "noticeIgnore": "BiQ1zG_noticeIgnore",
727
- "modalTitleBusy": "BiQ1zG_modalTitleBusy",
728
- "detailLabel": "BiQ1zG_detailLabel",
729
- "detailPathActions": "BiQ1zG_detailPathActions",
730
767
  "modalDesc": "BiQ1zG_modalDesc",
731
- "modalCloseIcon": "BiQ1zG_modalCloseIcon",
732
- "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
733
- "modalLabel": "BiQ1zG_modalLabel",
734
- "modalLink": "BiQ1zG_modalLink",
735
- "failDiagBtn": "BiQ1zG_failDiagBtn",
736
- "restartNowWarning": "BiQ1zG_restartNowWarning",
737
- "trustHint": "BiQ1zG_trustHint",
738
- "linkIcon": "BiQ1zG_linkIcon",
739
- "detailStatusPending": "BiQ1zG_detailStatusPending",
740
- "detailStatusRunning": "BiQ1zG_detailStatusRunning",
741
- "failCopy": "BiQ1zG_failCopy",
768
+ "queueRow": "BiQ1zG_queueRow",
769
+ "resultCheck": "BiQ1zG_resultCheck",
770
+ "modalClose": "BiQ1zG_modalClose",
742
771
  "progressHead": "BiQ1zG_progressHead",
743
- "detailPathBtn": "BiQ1zG_detailPathBtn",
744
- "progress": "BiQ1zG_progress",
745
- "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
772
+ "detailLabel": "BiQ1zG_detailLabel",
773
+ "failRow": "BiQ1zG_failRow",
774
+ "noticeList": "BiQ1zG_noticeList",
775
+ "linkIcon": "BiQ1zG_linkIcon",
776
+ "queueRowHead": "BiQ1zG_queueRowHead",
777
+ "restartLater": "BiQ1zG_restartLater",
778
+ "modalRow": "BiQ1zG_modalRow",
779
+ "noticeTextOk": "BiQ1zG_noticeTextOk",
746
780
  "resultDesc": "BiQ1zG_resultDesc",
747
- "confirmPrimary": "BiQ1zG_confirmPrimary",
748
- "noticeTime": "BiQ1zG_noticeTime",
749
- "queueRowBody": "BiQ1zG_queueRowBody",
750
- "failNetworkTarget": "BiQ1zG_failNetworkTarget",
751
- "noticeVersion": "BiQ1zG_noticeVersion",
781
+ "detailPath": "BiQ1zG_detailPath",
752
782
  "modal": "BiQ1zG_modal",
753
- "failKindInstall": "BiQ1zG_failKindInstall",
754
- "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
755
- "detailStatusText": "BiQ1zG_detailStatusText",
756
- "modalCancel": "BiQ1zG_modalCancel",
757
- "result": "BiQ1zG_result",
783
+ "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
784
+ "progressTrack": "BiQ1zG_progressTrack",
785
+ "detailPathActions": "BiQ1zG_detailPathActions",
786
+ "aboutMeta": "BiQ1zG_aboutMeta",
787
+ "stripCancel": "BiQ1zG_stripCancel",
788
+ "overlayIn": "BiQ1zG_overlayIn",
789
+ "detailLink": "BiQ1zG_detailLink",
790
+ "modalWide": "BiQ1zG_modalWide",
791
+ "modalActions": "BiQ1zG_modalActions",
792
+ "noticeTextFail": "BiQ1zG_noticeTextFail",
793
+ "detailPathBtn": "BiQ1zG_detailPathBtn",
794
+ "failBigIssue": "BiQ1zG_failBigIssue",
758
795
  "errorTitle": "BiQ1zG_errorTitle",
759
- "modalCmdText": "BiQ1zG_modalCmdText",
760
- "progressFill": "BiQ1zG_progressFill",
761
- "toastIn": "BiQ1zG_toastIn",
762
- "confirmIconDanger": "BiQ1zG_confirmIconDanger",
796
+ "noticeTime": "BiQ1zG_noticeTime",
797
+ "queueSection": "BiQ1zG_queueSection",
798
+ "failRepo": "BiQ1zG_failRepo",
799
+ "helpModal": "BiQ1zG_helpModal",
763
800
  "noticeRow": "BiQ1zG_noticeRow",
764
- "noticeRowOk": "BiQ1zG_noticeRowOk",
765
- "modalIn": "BiQ1zG_modalIn",
766
- "cliOnlyHint": "BiQ1zG_cliOnlyHint",
767
- "queueRowStatus": "BiQ1zG_queueRowStatus",
768
- "failEmpty": "BiQ1zG_failEmpty",
801
+ "modalHead": "BiQ1zG_modalHead",
802
+ "errorBox": "BiQ1zG_errorBox",
803
+ "confirmIconWrap": "BiQ1zG_confirmIconWrap",
804
+ "confirmIconDanger": "BiQ1zG_confirmIconDanger",
805
+ "noticeRemove": "BiQ1zG_noticeRemove",
806
+ "restartNow": "BiQ1zG_restartNow",
807
+ "modalTitle": "BiQ1zG_modalTitle",
808
+ "modalBody": "BiQ1zG_modalBody",
809
+ "toastIn": "BiQ1zG_toastIn",
810
+ "failList": "BiQ1zG_failList",
811
+ "failKindUninstall": "BiQ1zG_failKindUninstall",
769
812
  "detailMono": "BiQ1zG_detailMono",
770
- "stripCancel": "BiQ1zG_stripCancel",
771
- "errorCopySoft": "BiQ1zG_errorCopySoft",
772
- "toastFail": "BiQ1zG_toastFail",
773
- "resultCheck": "BiQ1zG_resultCheck",
774
- "helpModal": "BiQ1zG_helpModal",
775
- "modalCmdCopy": "BiQ1zG_modalCmdCopy",
776
- "hubUpdateNotes": "BiQ1zG_hubUpdateNotes",
777
- "dangerConfirm": "BiQ1zG_dangerConfirm",
778
- "queueRow": "BiQ1zG_queueRow",
779
- "confirmIcon": "BiQ1zG_confirmIcon",
780
- "noticeTextFail": "BiQ1zG_noticeTextFail",
781
- "hubUpdateMeta": "BiQ1zG_hubUpdateMeta",
782
- "failHead": "BiQ1zG_failHead",
783
813
  "aboutContent": "BiQ1zG_aboutContent",
784
- "aboutMeta": "BiQ1zG_aboutMeta",
785
- "detailRow": "BiQ1zG_detailRow",
786
- "resultRestarting": "BiQ1zG_resultRestarting",
787
- "noticeUpdateGo": "BiQ1zG_noticeUpdateGo",
788
- "failClear": "BiQ1zG_failClear",
789
- "errorHint": "BiQ1zG_errorHint",
790
- "modalValue": "BiQ1zG_modalValue",
791
- "toast": "BiQ1zG_toast",
814
+ "overlay": "BiQ1zG_overlay",
815
+ "noticeIgnore": "BiQ1zG_noticeIgnore",
816
+ "hubUpdateModal": "BiQ1zG_hubUpdateModal",
817
+ "modalCmd": "BiQ1zG_modalCmd",
818
+ "noticeRowUpdate": "BiQ1zG_noticeRowUpdate",
819
+ "noticeHead": "BiQ1zG_noticeHead",
820
+ "queuedHint": "BiQ1zG_queuedHint",
821
+ "queueSectionTitle": "BiQ1zG_queueSectionTitle",
792
822
  "queueRowDesc": "BiQ1zG_queueRowDesc",
793
- "progressText": "BiQ1zG_progressText",
794
- "modalRow": "BiQ1zG_modalRow",
795
- "errorModal": "BiQ1zG_errorModal",
796
- "modalBody": "BiQ1zG_modalBody",
797
- "queueRowTarget": "BiQ1zG_queueRowTarget",
798
- "errorBox": "BiQ1zG_errorBox",
799
- "queueSection": "BiQ1zG_queueSection",
800
- "detailStars": "BiQ1zG_detailStars",
801
- "detailPathText": "BiQ1zG_detailPathText",
802
823
  "pendingRowStatus": "BiQ1zG_pendingRowStatus",
803
- "failPrepareHint": "BiQ1zG_failPrepareHint",
804
- "noticeHead": "BiQ1zG_noticeHead",
805
- "failList": "BiQ1zG_failList",
806
- "resultTitle": "BiQ1zG_resultTitle",
807
- "noticeBadgeOk": "BiQ1zG_noticeBadgeOk",
808
- "progressTrack": "BiQ1zG_progressTrack",
809
- "failKind": "BiQ1zG_failKind",
810
- "detailPath": "BiQ1zG_detailPath",
811
- "failedCopyHint": "BiQ1zG_failedCopyHint",
812
- "detailDim": "BiQ1zG_detailDim",
813
- "queueRowTrack": "BiQ1zG_queueRowTrack",
814
- "modalInstall": "BiQ1zG_modalInstall",
815
- "noticeRemove": "BiQ1zG_noticeRemove",
816
- "queueRowPct": "BiQ1zG_queueRowPct",
817
- "overlay": "BiQ1zG_overlay",
818
- "uninstallConfirm": "BiQ1zG_uninstallConfirm",
819
- "confirmIconWrap": "BiQ1zG_confirmIconWrap",
820
- "failBigIssue": "BiQ1zG_failBigIssue",
821
- "noticeBadgeIcon": "BiQ1zG_noticeBadgeIcon",
822
- "detailArrow": "BiQ1zG_detailArrow",
823
- "detailLink": "BiQ1zG_detailLink",
824
+ "resultRestarting": "BiQ1zG_resultRestarting",
824
825
  "detailValue": "BiQ1zG_detailValue",
825
- "detailModal": "BiQ1zG_detailModal",
826
- "modalCmd": "BiQ1zG_modalCmd",
827
- "noticeFoot": "BiQ1zG_noticeFoot",
828
- "modalTitleQueued": "BiQ1zG_modalTitleQueued",
829
- "noticeTextOk": "BiQ1zG_noticeTextOk",
830
- "progressFillFail": "BiQ1zG_progressFillFail",
826
+ "errorHint": "BiQ1zG_errorHint",
827
+ "dangerConfirm": "BiQ1zG_dangerConfirm",
831
828
  "noticeRowMain": "BiQ1zG_noticeRowMain",
832
- "overlayIn": "BiQ1zG_overlayIn",
833
- "restartNow": "BiQ1zG_restartNow",
834
- "failRow": "BiQ1zG_failRow",
835
- "modalTitle": "BiQ1zG_modalTitle",
836
- "modalHead": "BiQ1zG_modalHead",
837
- "pendingRowActions": "BiQ1zG_pendingRowActions",
838
- "modalWide": "BiQ1zG_modalWide",
829
+ "confirmPrimary": "BiQ1zG_confirmPrimary",
830
+ "resultCheckIcon": "BiQ1zG_resultCheckIcon",
831
+ "detailModal": "BiQ1zG_detailModal",
832
+ "failEmpty": "BiQ1zG_failEmpty",
833
+ "failDiagBtn": "BiQ1zG_failDiagBtn",
834
+ "detailArrow": "BiQ1zG_detailArrow",
835
+ "detailStatusText": "BiQ1zG_detailStatusText",
836
+ "logModal": "BiQ1zG_logModal",
837
+ "modalLabel": "BiQ1zG_modalLabel",
838
+ "queueRowPct": "BiQ1zG_queueRowPct",
839
+ "queueRowStatus": "BiQ1zG_queueRowStatus",
840
+ "detailDim": "BiQ1zG_detailDim",
841
+ "modalInstall": "BiQ1zG_modalInstall",
842
+ "modalTitleBusy": "BiQ1zG_modalTitleBusy",
843
+ "detailStatusPending": "BiQ1zG_detailStatusPending",
844
+ "resultTitle": "BiQ1zG_resultTitle",
845
+ "noticeVersion": "BiQ1zG_noticeVersion",
846
+ "failNetworkTarget": "BiQ1zG_failNetworkTarget",
847
+ "detailStars": "BiQ1zG_detailStars",
839
848
  "detailGrid": "BiQ1zG_detailGrid",
840
- "aboutModal": "BiQ1zG_aboutModal",
841
- "detailUpdateHint": "BiQ1zG_detailUpdateHint",
842
- "hubUpdateModal": "BiQ1zG_hubUpdateModal",
843
- "failKindUninstall": "BiQ1zG_failKindUninstall",
844
- "queueRowHead": "BiQ1zG_queueRowHead"
849
+ "modalLink": "BiQ1zG_modalLink",
850
+ "failCopy": "BiQ1zG_failCopy",
851
+ "pendingRowActions": "BiQ1zG_pendingRowActions",
852
+ "modalTitleQueued": "BiQ1zG_modalTitleQueued",
853
+ "hubUpdateMetaItem": "BiQ1zG_hubUpdateMetaItem",
854
+ "noticeBadgeFail": "BiQ1zG_noticeBadgeFail",
855
+ "restartNowWarning": "BiQ1zG_restartNowWarning",
856
+ "trustHint": "BiQ1zG_trustHint"
845
857
  };
846
858
  //#endregion
847
859
  //#region src/client/logic/install-command.ts
@@ -911,7 +923,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
911
923
  * tsdown 构建时用 define 把 __PLUGIN_VERSION__ 替换成 package.json 的版本号;
912
924
  * node --test 直接 import 本模块时该标识符不存在,typeof 守卫兜底为空串。
913
925
  */
914
- const PLUGIN_VERSION = "1.3.8";
926
+ const PLUGIN_VERSION = "1.3.9";
915
927
  const CATEGORY_ORDER = [
916
928
  "interface",
917
929
  "session",
@@ -1544,7 +1556,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1544
1556
  */
1545
1557
  const hubHasUpdate = (() => {
1546
1558
  if (!hubUpdateInfo) return false;
1547
- return hubUpdateInfo.version !== "1.3.8";
1559
+ return hubUpdateInfo.version !== "1.3.9";
1548
1560
  })();
1549
1561
  (0, react.useMemo)(() => {
1550
1562
  if (!plugins) return [];
@@ -1723,12 +1735,19 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1723
1735
  return next;
1724
1736
  }
1725
1737
  /**
1726
- * 失败归类,五态。无论底层机制如何(pnpm 白名单拦截 / 构建脚本被忽略 / prepare 失败),
1738
+ * 失败归类,七态。无论底层机制如何(pnpm 白名单拦截 / 构建脚本被忽略 / prepare 失败),
1727
1739
  * 对用户而言结果都一样 —— 当前安装通道(npm 或 git)装不上,就是插件分发/依赖的问题,
1728
- * 一律引导提 Issue;唯一的两个例外是本机环境问题(npm 版本过低 / 网络不通):
1740
+ * 一律引导提 Issue;唯一的例外是本机环境问题(npm 版本过低 / 找不到 dsh / 找不到 pnpm / 网络不通):
1729
1741
  * - npmTooOld:失败输出含 npm arborist 的 `edgesOut` 崩溃特征(build-ideal-tree.js 解 peer 依赖时
1730
1742
  * 内部抛错,npm 11.6.0 前必现的已知缺陷,npm/cli#8261、#9787),或服务端已核实本机版本低于
1731
1743
  * 阈值并打了 `[npm-too-low]` 标记 —— 是本机 npm 版本过低/自身缺陷,不是插件问题 → 引导升级 npm
1744
+ * - dshMissing:安装器 spawn 的 `dsh` 命令找不到(Windows cmd「不是内部或外部命令」/ POSIX
1745
+ * 「command not found」/ spawn ENOENT)—— 是本机 DSH 未正确安装或不在 PATH,不是插件问题
1746
+ * → 提示检查 PATH/重装 DSH,不引导提 Issue
1747
+ * - pnpmMissing:dsh 存在但调用的 `pnpm` 找不到(dsh 报 `pnpm not found on PATH`/POSIX
1748
+ * 「pnpm: command not found」/ spawn ENOENT)—— 本机缺 pnpm(dsh 用 pnpm 管理 profile 插件),
1749
+ * 不是插件问题(dsh-plugin-hub#13:Linux 下 `dsh: pnpm not found on PATH` 被误归插件侧失败)
1750
+ * → 提示安装/开启 pnpm,不引导提 Issue
1732
1751
  * - network:安装前连通性预检拦截(服务端 `[network]` 标记)或底层连接失败
1733
1752
  * (ERR_PNPM_GIT_FETCH_FAILED / ETIMEDOUT / DNS 解析 / TLS 握手 / 代理拒绝)——
1734
1753
  * 是本机网络不通/被墙/代理有问题,不是插件问题 → 提示检查网络,不引导提 Issue
@@ -1742,6 +1761,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1742
1761
  */
1743
1762
  function classifyFailure(message) {
1744
1763
  if (/\[npm-too-low\]|edgesOut/i.test(message)) return "npmTooOld";
1764
+ if (/\[pnpm-missing\]|pnpm not found|pnpm: command not found|spawn pnpm ENOENT|'pnpm' 不是内部或外部命令|"pnpm" 不是内部或外部命令|pnpm['"]?\s*is not recognized/i.test(message)) return "pnpmMissing";
1765
+ if (/\[dsh-missing\]|不是内部或外部命令|is not recognized as an internal or external command|command not found|spawn dsh ENOENT/i.test(message)) return "dshMissing";
1745
1766
  if (/ERR_PNPM_IGNORED_BUILDS|Ignored build scripts:|ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED/i.test(message)) return "pnpmIgnoredBuild";
1746
1767
  if (/\[network\]|ERR_PNPM_GIT_FETCH_FAILED|ETIMEDOUT|ECONNREFUSED|ECONNRESET|ENOTFOUND|EAI_AGAIN|EPIPE|EHOSTUNREACH|ENETUNREACH|getaddrinfo|Could not connect|Could not resolve host|Network unreachable|Failed to connect|socket hang up|CERT_HAS_EXPIRED|SSL certificate problem|\bTLS\b|\bSSL\b/i.test(message)) return "network";
1747
1768
  if (/\[packaging\]|entry file missing/i.test(message)) return "pluginPrepare";
@@ -1834,6 +1855,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
1834
1855
  function reasonTitleOf(kind) {
1835
1856
  switch (kind) {
1836
1857
  case "npmTooOld": return "npm too old to install";
1858
+ case "dshMissing": return "dsh command not found on the user machine";
1859
+ case "pnpmMissing": return "pnpm command not found on the user machine";
1837
1860
  case "pnpmIgnoredBuild": return "build scripts blocked by pnpm allowlist";
1838
1861
  case "pluginPrepare": return "plugin distribution incomplete";
1839
1862
  case "network": return "network failure on the user side";
@@ -2035,6 +2058,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2035
2058
  /** 安装/卸载请求超时(ms):服务端 preflight + npm 反查可能耗时(各自都有超时,合计约 20~30s),
2036
2059
  * 给足余量;超时主动中止,避免服务端 preflight 网络挂起时前端永久卡「安装中 0%」。 */
2037
2060
  const REQUEST_TIMEOUT_MS = 6e4;
2061
+ /** 入口渠道的 i18n key:NPM 包 / GitHub 源码 / DSH 命令。 */
2062
+ const channelKeyOf = (channel) => channel === "git" ? "installChannelGit" : channel === "dsh" ? "installChannelDsh" : "installChannelNpm";
2063
+ /** 失败消息的入口溯源前缀:自定义安装(带渠道)在错误正文顶部精准指出从哪张卡片发起;
2064
+ * 目录插件安装(无渠道)返回 null,错误正文保持原样。 */
2065
+ const entryLineOf = (t, channel) => channel ? t("installEntryLine", { c: t(channelKeyOf(channel)) }) : null;
2038
2066
  function useTaskQueue(opts) {
2039
2067
  const { t, langKey, refreshInstalled, onInstallDone, onUninstallDone, onError, installPlugin, installCustomTarget, installGlobalTarget, uninstallPlugin, uninstallName, installedName, resolvePending } = opts;
2040
2068
  const [queue, setQueue] = (0, react.useState)([]);
@@ -2148,8 +2176,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2148
2176
  onInstallDone(modalTaskRef.current === q.id, q.repo, q.needsRestart, q.action === "update");
2149
2177
  }
2150
2178
  } else {
2151
- const detail = lines.length > 0 ? [...lines].reverse().join("\n") : q.kind === "uninstall" ? t("uninstallFail") : t("installFail");
2152
- onError(detail, q.repo, q.kind, q.command, q.attempts, q.action === "update");
2179
+ const rawDetail = lines.length > 0 ? [...lines].reverse().join("\n") : q.kind === "uninstall" ? t("uninstallFail") : t("installFail");
2180
+ const entry = entryLineOf(t, q.channel);
2181
+ onError(entry ? `${entry}\n${rawDetail}` : rawDetail, q.repo, q.kind, q.command, q.attempts, q.action === "update");
2153
2182
  }
2154
2183
  maybeStopPoll();
2155
2184
  };
@@ -2247,7 +2276,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2247
2276
  progress: typeof a.progress === "number" ? a.progress : prevTask?.progress ?? 0,
2248
2277
  lines: Array.isArray(a.lines) ? a.lines : prevTask?.lines ?? [],
2249
2278
  attempts: Array.isArray(a.attempts) ? a.attempts : prevTask?.attempts ?? [],
2250
- needsRestart: typeof a.needsRestart === "boolean" ? a.needsRestart : prevTask?.needsRestart ?? true
2279
+ needsRestart: typeof a.needsRestart === "boolean" ? a.needsRestart : prevTask?.needsRestart ?? true,
2280
+ channel: a.installChannel === "npm" || a.installChannel === "git" || a.installChannel === "dsh" ? a.installChannel : prevTask?.channel
2251
2281
  });
2252
2282
  }
2253
2283
  const keepOpt = prev.filter((q) => q.optimistic && !next.some((x) => x.id === q.id));
@@ -2292,7 +2322,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2292
2322
  progress: typeof a.progress === "number" ? a.progress : 0,
2293
2323
  lines: Array.isArray(a.lines) ? a.lines : [],
2294
2324
  attempts: Array.isArray(a.attempts) ? a.attempts : [],
2295
- needsRestart: typeof a.needsRestart === "boolean" ? a.needsRestart : true
2325
+ needsRestart: typeof a.needsRestart === "boolean" ? a.needsRestart : true,
2326
+ channel: a.installChannel === "npm" || a.installChannel === "git" || a.installChannel === "dsh" ? a.installChannel : void 0
2296
2327
  };
2297
2328
  });
2298
2329
  if (items.length > 0 || pendingRef.current.length > 0) {
@@ -2330,6 +2361,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2330
2361
  lines: [],
2331
2362
  optimistic: true,
2332
2363
  command: input.command,
2364
+ channel: input.channel,
2333
2365
  action: input.update ? "update" : "add",
2334
2366
  attempts: [],
2335
2367
  needsRestart: true
@@ -2347,6 +2379,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2347
2379
  source: input.source,
2348
2380
  mode: input.update ? "update" : void 0,
2349
2381
  ...langKey ? { lang: langKey } : {},
2382
+ ...input.channel ? { installChannel: input.channel } : {},
2350
2383
  ...input.globalNpm && input.globalNpm.length > 0 ? { globalNpm: input.globalNpm } : {}
2351
2384
  }),
2352
2385
  signal: controller.signal
@@ -2354,7 +2387,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2354
2387
  const data = await res.json();
2355
2388
  if (!data.ok || typeof data.task !== "number") {
2356
2389
  applyQueue((prev) => prev.filter((x) => x.id !== tempId));
2357
- onError(data.error || `HTTP ${res.status}`, input.repo, "install", input.command, data.attempts);
2390
+ const entry = entryLineOf(t, input.channel);
2391
+ const msg = data.error || `HTTP ${res.status}`;
2392
+ onError(entry ? `${entry}\n${msg}` : msg, input.repo, "install", input.command, data.attempts);
2358
2393
  return;
2359
2394
  }
2360
2395
  const taskId = data.task;
@@ -2372,7 +2407,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2372
2407
  } catch (err) {
2373
2408
  applyQueue((prev) => prev.filter((x) => x.id !== tempId));
2374
2409
  const reason = err?.name === "AbortError" ? t("requestTimeout") : err instanceof Error && err.message ? err.message : String(err ?? "");
2375
- onError(reason ? `${t("installFail")} — ${reason}` : t("installFail"), input.repo, "install", input.command);
2410
+ const entry = entryLineOf(t, input.channel);
2411
+ const msg = reason ? `${t("installFail")} — ${reason}` : t("installFail");
2412
+ onError(entry ? `${entry}\n${msg}` : msg, input.repo, "install", input.command);
2376
2413
  } finally {
2377
2414
  window.clearTimeout(timeout);
2378
2415
  submittingRef.current.delete(input.repo);
@@ -2398,6 +2435,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2398
2435
  };
2399
2436
  /** 命令行安装:用户手输 npm 包名或 GitHub 地址,走 custom 源(受安全开关控制)。
2400
2437
  * update=true 时对已安装目标放行覆盖重装(与目录插件「更新」同一语义)。
2438
+ * channel=入口渠道(NPM 包 / GitHub 源码 / DSH 命令卡片):上报服务端落日志,
2439
+ * 失败弹窗/通知据此精准溯源。
2401
2440
  * 队列展示/防重一律用归一化身份(owner/repo 或 npm 包名):与服务端 /active 合并、
2402
2441
  * 弹窗目标匹配同口径,npm 包名透传不受影响。 */
2403
2442
  const installCustom = async (raw, opts) => {
@@ -2409,11 +2448,12 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2409
2448
  repo,
2410
2449
  command: `pnpm add ${target}`,
2411
2450
  source: "custom",
2412
- update: opts?.update
2451
+ update: opts?.update,
2452
+ channel: opts?.channel
2413
2453
  });
2414
2454
  };
2415
2455
  /** 全局 npm 安装(官方 README 的 `npm install -g <pkgs>`):不进任何 profile、无需宿主重启。
2416
- * 队列展示/防重用包列表空格拼接的身份(与服务端 target 同口径)。 */
2456
+ * 队列展示/防重用包列表空格拼接的身份(与服务端 target 同口径);入口渠道固定为 npm(NPM 包卡片)。 */
2417
2457
  const installGlobalNpm = async (pkgs, opts) => {
2418
2458
  const list = (pkgs ?? []).map((p) => p.trim()).filter((p) => p !== "");
2419
2459
  if (list.length === 0) return;
@@ -2424,7 +2464,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
2424
2464
  command: `npm install -g ${identity}`,
2425
2465
  source: "custom",
2426
2466
  globalNpm: list,
2427
- update: opts?.update
2467
+ update: opts?.update,
2468
+ channel: opts?.channel ?? "npm"
2428
2469
  });
2429
2470
  };
2430
2471
  /** 卸载入队核心:按 npm 包名直卸(目录插件与自定义安装共用,弹窗进度匹配同源)。 */
@@ -3212,7 +3253,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3212
3253
  }, repo) : null, (0, react.createElement)("button", {
3213
3254
  className: Modal_module_css_default.errorCopySoft,
3214
3255
  onClick: () => onCopy(copyText)
3215
- }, t("errorCopy"))), (0, react.createElement)("pre", { className: Modal_module_css_default.errorBox }, message), failureKind === "npmTooOld" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(npmVersion ? "failNpmTooLowV" : "failNpmTooLow", npmVersion ? { v: npmVersion } : void 0)) : failureKind === "network" ? (0, react.createElement)("div", null, [
3256
+ }, t("errorCopy"))), (0, react.createElement)("pre", { className: Modal_module_css_default.errorBox }, message), failureKind === "npmTooOld" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(npmVersion ? "failNpmTooLowV" : "failNpmTooLow", npmVersion ? { v: npmVersion } : void 0)) : failureKind === "dshMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failDshMissingHint")) : failureKind === "pnpmMissing" ? (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmMissingHint")) : failureKind === "network" ? (0, react.createElement)("div", null, [
3216
3257
  (() => {
3217
3258
  const target = unreachableTargetOf(message);
3218
3259
  return target ? (0, react.createElement)("div", { className: Modal_module_css_default.failNetworkTarget }, t("failNetworkTarget", { url: target })) : null;
@@ -3763,6 +3804,8 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3763
3804
  const v = npmTooLowVersion(r.message);
3764
3805
  return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t(v ? "failNpmTooLowV" : "failNpmTooLow", v ? { v } : void 0));
3765
3806
  }
3807
+ if (kind === "dshMissing") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failDshMissingHint"));
3808
+ if (kind === "pnpmMissing") return (0, react.createElement)("div", { className: Modal_module_css_default.failPrepareHint }, t("failPnpmMissingHint"));
3766
3809
  if (kind === "network") return (0, react.createElement)("div", null, [
3767
3810
  (() => {
3768
3811
  const target = unreachableTargetOf(r.message);
@@ -3968,40 +4011,40 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
3968
4011
  css: css$9
3969
4012
  });
3970
4013
  var List_module_css_default = {
3971
- "desc": "_3XaZHa_desc",
3972
- "fork": "_3XaZHa_fork",
3973
- "installBtn": "_3XaZHa_installBtn",
3974
- "retryBtn": "_3XaZHa_retryBtn",
3975
- "uninstallBtn": "_3XaZHa_uninstallBtn",
3976
- "installBtnInstalled": "_3XaZHa_installBtnInstalled",
4014
+ "list": "_3XaZHa_list",
4015
+ "cardSide": "_3XaZHa_cardSide",
3977
4016
  "state": "_3XaZHa_state",
4017
+ "star": "_3XaZHa_star",
4018
+ "installBtnInstalled": "_3XaZHa_installBtnInstalled",
4019
+ "verified": "_3XaZHa_verified",
4020
+ "stats": "_3XaZHa_stats",
3978
4021
  "diagBtn": "_3XaZHa_diagBtn",
3979
- "cardMain": "_3XaZHa_cardMain",
3980
- "cardSide": "_3XaZHa_cardSide",
3981
- "topics": "_3XaZHa_topics",
3982
- "detailBtn": "_3XaZHa_detailBtn",
3983
- "cardHead": "_3XaZHa_cardHead",
3984
- "stateActions": "_3XaZHa_stateActions",
3985
- "footer": "_3XaZHa_footer",
3986
- "installBtnUpdate": "_3XaZHa_installBtnUpdate",
4022
+ "updateBadge": "_3XaZHa_updateBadge",
4023
+ "date": "_3XaZHa_date",
3987
4024
  "actions": "_3XaZHa_actions",
3988
- "list": "_3XaZHa_list",
4025
+ "footer": "_3XaZHa_footer",
4026
+ "installBtnCopied": "_3XaZHa_installBtnCopied",
4027
+ "stateActions": "_3XaZHa_stateActions",
3989
4028
  "stateTitle": "_3XaZHa_stateTitle",
3990
- "updateBadge": "_3XaZHa_updateBadge",
4029
+ "uninstallBtn": "_3XaZHa_uninstallBtn",
3991
4030
  "topic": "_3XaZHa_topic",
3992
- "star": "_3XaZHa_star",
3993
- "stateDesc": "_3XaZHa_stateDesc",
3994
- "verified": "_3XaZHa_verified",
3995
- "stats": "_3XaZHa_stats",
3996
- "date": "_3XaZHa_date",
4031
+ "versionBadge": "_3XaZHa_versionBadge",
4032
+ "installBtnUpdate": "_3XaZHa_installBtnUpdate",
3997
4033
  "card": "_3XaZHa_card",
3998
- "cardTitle": "_3XaZHa_cardTitle",
3999
- "categoryBadge": "_3XaZHa_categoryBadge",
4000
- "footLink": "_3XaZHa_footLink",
4034
+ "stateDesc": "_3XaZHa_stateDesc",
4035
+ "desc": "_3XaZHa_desc",
4036
+ "cardMain": "_3XaZHa_cardMain",
4037
+ "fork": "_3XaZHa_fork",
4038
+ "cardHead": "_3XaZHa_cardHead",
4001
4039
  "body": "_3XaZHa_body",
4040
+ "footLink": "_3XaZHa_footLink",
4041
+ "cardTitle": "_3XaZHa_cardTitle",
4042
+ "topics": "_3XaZHa_topics",
4043
+ "retryBtn": "_3XaZHa_retryBtn",
4002
4044
  "moreSentinel": "_3XaZHa_moreSentinel",
4003
- "versionBadge": "_3XaZHa_versionBadge",
4004
- "installBtnCopied": "_3XaZHa_installBtnCopied"
4045
+ "detailBtn": "_3XaZHa_detailBtn",
4046
+ "categoryBadge": "_3XaZHa_categoryBadge",
4047
+ "installBtn": "_3XaZHa_installBtn"
4005
4048
  };
4006
4049
  //#endregion
4007
4050
  //#region src/client/hooks/useIncrementalList.ts
@@ -4208,15 +4251,15 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4208
4251
  css: css$8
4209
4252
  });
4210
4253
  var SectionTabs_module_css_default = {
4211
- "tabCountActive": "_7tvizq_tabCountActive",
4212
- "tabActive": "_7tvizq_tabActive",
4213
- "noticeIcon": "_7tvizq_noticeIcon",
4214
- "tabIcon": "_7tvizq_tabIcon",
4215
- "noticeBtn": "_7tvizq_noticeBtn",
4254
+ "tabCount": "_7tvizq_tabCount",
4216
4255
  "noticeCount": "_7tvizq_noticeCount",
4256
+ "noticeIcon": "_7tvizq_noticeIcon",
4217
4257
  "root": "_7tvizq_root",
4218
- "tabCount": "_7tvizq_tabCount",
4219
- "tab": "_7tvizq_tab"
4258
+ "tab": "_7tvizq_tab",
4259
+ "noticeBtn": "_7tvizq_noticeBtn",
4260
+ "tabCountActive": "_7tvizq_tabCountActive",
4261
+ "tabActive": "_7tvizq_tabActive",
4262
+ "tabIcon": "_7tvizq_tabIcon"
4220
4263
  };
4221
4264
  //#endregion
4222
4265
  //#region src/client/components/layout/SectionTabs.tsx
@@ -4293,42 +4336,42 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4293
4336
  css: css$7
4294
4337
  });
4295
4338
  var InstalledView_module_css_default = {
4296
- "list": "_1nXeGW_list",
4339
+ "toolbar": "_1nXeGW_toolbar",
4340
+ "statusPending": "_1nXeGW_statusPending",
4341
+ "rowUninstall": "_1nXeGW_rowUninstall",
4297
4342
  "rowDetail": "_1nXeGW_rowDetail",
4298
- "rowMain": "_1nXeGW_rowMain",
4299
- "exampleBadge": "_1nXeGW_exampleBadge",
4343
+ "segLabel": "_1nXeGW_segLabel",
4344
+ "searchWrap": "_1nXeGW_searchWrap",
4345
+ "rowSourceTag": "_1nXeGW_rowSourceTag",
4300
4346
  "emptyTitle": "_1nXeGW_emptyTitle",
4301
- "segGroup": "_1nXeGW_segGroup",
4302
- "rowTitle": "_1nXeGW_rowTitle",
4303
- "root": "_1nXeGW_root",
4304
- "rowRepo": "_1nXeGW_rowRepo",
4305
- "rowRestart": "_1nXeGW_rowRestart",
4347
+ "segBtn": "_1nXeGW_segBtn",
4348
+ "exampleBadge": "_1nXeGW_exampleBadge",
4306
4349
  "emptyDesc": "_1nXeGW_emptyDesc",
4350
+ "statusDot": "_1nXeGW_statusDot",
4351
+ "empty": "_1nXeGW_empty",
4307
4352
  "row": "_1nXeGW_row",
4308
- "segBtn": "_1nXeGW_segBtn",
4309
- "rowUninstall": "_1nXeGW_rowUninstall",
4310
- "searchInput": "_1nXeGW_searchInput",
4311
- "versionBadge": "_1nXeGW_versionBadge",
4312
- "rowUpdate": "_1nXeGW_rowUpdate",
4353
+ "statusInactive": "_1nXeGW_statusInactive",
4354
+ "rowRepo": "_1nXeGW_rowRepo",
4355
+ "rowMain": "_1nXeGW_rowMain",
4313
4356
  "exampleRow": "_1nXeGW_exampleRow",
4314
- "searchWrap": "_1nXeGW_searchWrap",
4315
- "segLabel": "_1nXeGW_segLabel",
4357
+ "searchInput": "_1nXeGW_searchInput",
4316
4358
  "rowMeta": "_1nXeGW_rowMeta",
4317
- "toolbar": "_1nXeGW_toolbar",
4359
+ "versionBadge": "_1nXeGW_versionBadge",
4318
4360
  "updateBadge": "_1nXeGW_updateBadge",
4319
- "rowActions": "_1nXeGW_rowActions",
4320
- "segBtnActive": "_1nXeGW_segBtnActive",
4321
- "statusPending": "_1nXeGW_statusPending",
4322
- "segRow": "_1nXeGW_segRow",
4323
- "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
4361
+ "root": "_1nXeGW_root",
4362
+ "segGroup": "_1nXeGW_segGroup",
4363
+ "list": "_1nXeGW_list",
4364
+ "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
4324
4365
  "rowTitleLine": "_1nXeGW_rowTitleLine",
4325
- "empty": "_1nXeGW_empty",
4326
4366
  "rowDesc": "_1nXeGW_rowDesc",
4327
- "statusInactive": "_1nXeGW_statusInactive",
4328
- "rowSourceTagManual": "_1nXeGW_rowSourceTagManual",
4367
+ "rowSourceTagHub": "_1nXeGW_rowSourceTagHub",
4368
+ "rowUpdate": "_1nXeGW_rowUpdate",
4329
4369
  "rowCategory": "_1nXeGW_rowCategory",
4330
- "statusDot": "_1nXeGW_statusDot",
4331
- "rowSourceTag": "_1nXeGW_rowSourceTag"
4370
+ "segRow": "_1nXeGW_segRow",
4371
+ "rowActions": "_1nXeGW_rowActions",
4372
+ "segBtnActive": "_1nXeGW_segBtnActive",
4373
+ "rowTitle": "_1nXeGW_rowTitle",
4374
+ "rowRestart": "_1nXeGW_rowRestart"
4332
4375
  };
4333
4376
  //#endregion
4334
4377
  //#region src/client/components/views/InstalledView.tsx
@@ -4575,27 +4618,27 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4575
4618
  });
4576
4619
  var CustomInstallView_module_css_default = {
4577
4620
  "desc": "zISxCG_desc",
4578
- "installLabel": "zISxCG_installLabel",
4579
- "installInsertBtn": "zISxCG_installInsertBtn",
4580
- "installExample": "zISxCG_installExample",
4581
- "installBtn": "zISxCG_installBtn",
4582
- "channelOff": "zISxCG_channelOff",
4621
+ "root": "zISxCG_root",
4622
+ "installInputError": "zISxCG_installInputError",
4583
4623
  "helpBody": "zISxCG_helpBody",
4584
- "installCards": "zISxCG_installCards",
4585
- "installInput": "zISxCG_installInput",
4586
- "channelOffBtn": "zISxCG_channelOffBtn",
4587
- "helpNote": "zISxCG_helpNote",
4588
4624
  "helpCmd": "zISxCG_helpCmd",
4589
- "installCard": "zISxCG_installCard",
4625
+ "helpNote": "zISxCG_helpNote",
4626
+ "installCardDisabled": "zISxCG_installCardDisabled",
4627
+ "channelOff": "zISxCG_channelOff",
4628
+ "channelOffBtn": "zISxCG_channelOffBtn",
4629
+ "installExample": "zISxCG_installExample",
4630
+ "installError": "zISxCG_installError",
4590
4631
  "helpLine": "zISxCG_helpLine",
4632
+ "channelOffText": "zISxCG_channelOffText",
4633
+ "installCard": "zISxCG_installCard",
4634
+ "installBtn": "zISxCG_installBtn",
4635
+ "installInput": "zISxCG_installInput",
4636
+ "installCards": "zISxCG_installCards",
4591
4637
  "installRow": "zISxCG_installRow",
4592
- "installHelpBtn": "zISxCG_installHelpBtn",
4593
- "installCardDisabled": "zISxCG_installCardDisabled",
4594
- "root": "zISxCG_root",
4595
4638
  "installCardHead": "zISxCG_installCardHead",
4596
- "installInputError": "zISxCG_installInputError",
4597
- "installError": "zISxCG_installError",
4598
- "channelOffText": "zISxCG_channelOffText"
4639
+ "installHelpBtn": "zISxCG_installHelpBtn",
4640
+ "installLabel": "zISxCG_installLabel",
4641
+ "installInsertBtn": "zISxCG_installInsertBtn"
4599
4642
  };
4600
4643
  //#endregion
4601
4644
  //#region src/client/components/views/CustomInstallView.tsx
@@ -4723,8 +4766,11 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4723
4766
  setNpmError(t("npmInstallInvalid"));
4724
4767
  return;
4725
4768
  }
4726
- if (parsed.kind === "global") onInstallCustom(raw, { globalNpm: parsed.pkgs });
4727
- else onInstallCustom(parsed.target);
4769
+ if (parsed.kind === "global") onInstallCustom(raw, {
4770
+ installChannel: "npm",
4771
+ globalNpm: parsed.pkgs
4772
+ });
4773
+ else onInstallCustom(parsed.target, { installChannel: "npm" });
4728
4774
  setNpmQuery("");
4729
4775
  setNpmError("");
4730
4776
  };
@@ -4735,7 +4781,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4735
4781
  setGitError(t("gitInstallInvalid"));
4736
4782
  return;
4737
4783
  }
4738
- onInstallCustom(target);
4784
+ onInstallCustom(target, { installChannel: "git" });
4739
4785
  setGitQuery("");
4740
4786
  setGitError("");
4741
4787
  };
@@ -4747,7 +4793,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4747
4793
  setCmdError(t("dshCmdInvalid"));
4748
4794
  return;
4749
4795
  }
4750
- onInstallCustom(parsed.target);
4796
+ onInstallCustom(parsed.target, { installChannel: "dsh" });
4751
4797
  setCmdQuery("");
4752
4798
  setCmdError("");
4753
4799
  };
@@ -4882,30 +4928,30 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4882
4928
  css: css$5
4883
4929
  });
4884
4930
  var SettingsView_module_css_default = {
4885
- "proxyControl": "_506LLG_proxyControl",
4886
- "settingRowStack": "_506LLG_settingRowStack",
4887
- "settingDesc": "_506LLG_settingDesc",
4888
4931
  "pageDesc": "_506LLG_pageDesc",
4889
- "proxyHintFail": "_506LLG_proxyHintFail",
4890
- "controlDropdown": "_506LLG_controlDropdown",
4891
- "pageHeader": "_506LLG_pageHeader",
4892
- "root": "_506LLG_root",
4893
- "navItem": "_506LLG_navItem",
4894
- "content": "_506LLG_content",
4895
- "settingControl": "_506LLG_settingControl",
4932
+ "settingDesc": "_506LLG_settingDesc",
4896
4933
  "textInput": "_506LLG_textInput",
4897
- "navIcon": "_506LLG_navIcon",
4934
+ "proxyControl": "_506LLG_proxyControl",
4898
4935
  "proxyHint": "_506LLG_proxyHint",
4899
- "proxyHintOk": "_506LLG_proxyHintOk",
4900
- "navItemActive": "_506LLG_navItemActive",
4901
- "card": "_506LLG_card",
4936
+ "settingControlStack": "_506LLG_settingControlStack",
4902
4937
  "resetBtn": "_506LLG_resetBtn",
4903
- "settingTitle": "_506LLG_settingTitle",
4904
4938
  "settingLabel": "_506LLG_settingLabel",
4905
- "pageTitle": "_506LLG_pageTitle",
4939
+ "navIcon": "_506LLG_navIcon",
4940
+ "pageHeader": "_506LLG_pageHeader",
4941
+ "settingTitle": "_506LLG_settingTitle",
4942
+ "proxyHintFail": "_506LLG_proxyHintFail",
4943
+ "root": "_506LLG_root",
4944
+ "card": "_506LLG_card",
4906
4945
  "sidebar": "_506LLG_sidebar",
4946
+ "navItemActive": "_506LLG_navItemActive",
4947
+ "content": "_506LLG_content",
4948
+ "settingControl": "_506LLG_settingControl",
4949
+ "proxyHintOk": "_506LLG_proxyHintOk",
4950
+ "navItem": "_506LLG_navItem",
4907
4951
  "settingRow": "_506LLG_settingRow",
4908
- "settingControlStack": "_506LLG_settingControlStack"
4952
+ "controlDropdown": "_506LLG_controlDropdown",
4953
+ "settingRowStack": "_506LLG_settingRowStack",
4954
+ "pageTitle": "_506LLG_pageTitle"
4909
4955
  };
4910
4956
  //#endregion
4911
4957
  //#region \0dsh-css:src/client/styles/Dropdown.module.css.mjs
@@ -4924,18 +4970,18 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4924
4970
  css: css$4
4925
4971
  });
4926
4972
  var Dropdown_module_css_default = {
4927
- "dropdownCount": "B_Gxsq_dropdownCount",
4928
- "dropdownBtn": "B_Gxsq_dropdownBtn",
4929
- "dropdownCountActive": "B_Gxsq_dropdownCountActive",
4930
- "dropdownItemActive": "B_Gxsq_dropdownItemActive",
4931
4973
  "dropdownLabel": "B_Gxsq_dropdownLabel",
4974
+ "dropdownArrow": "B_Gxsq_dropdownArrow",
4932
4975
  "dropdownArrowOpen": "B_Gxsq_dropdownArrowOpen",
4933
- "dropdownFill": "B_Gxsq_dropdownFill",
4934
- "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
4935
- "dropdown": "B_Gxsq_dropdown",
4936
4976
  "dropdownPanel": "B_Gxsq_dropdownPanel",
4937
- "dropdownArrow": "B_Gxsq_dropdownArrow",
4938
- "dropdownItem": "B_Gxsq_dropdownItem"
4977
+ "dropdownItem": "B_Gxsq_dropdownItem",
4978
+ "dropdownCount": "B_Gxsq_dropdownCount",
4979
+ "dropdown": "B_Gxsq_dropdown",
4980
+ "dropdownItemLabel": "B_Gxsq_dropdownItemLabel",
4981
+ "dropdownFill": "B_Gxsq_dropdownFill",
4982
+ "dropdownCountActive": "B_Gxsq_dropdownCountActive",
4983
+ "dropdownItemActive": "B_Gxsq_dropdownItemActive",
4984
+ "dropdownBtn": "B_Gxsq_dropdownBtn"
4939
4985
  };
4940
4986
  //#endregion
4941
4987
  //#region \0dsh-css:src/client/styles/Toggle.module.css.mjs
@@ -4954,9 +5000,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
4954
5000
  css: css$3
4955
5001
  });
4956
5002
  var Toggle_module_css_default = {
4957
- "toggle": "k-cD4G_toggle",
4958
5003
  "toggleOn": "k-cD4G_toggleOn",
4959
- "knob": "k-cD4G_knob"
5004
+ "knob": "k-cD4G_knob",
5005
+ "toggle": "k-cD4G_toggle"
4960
5006
  };
4961
5007
  //#endregion
4962
5008
  //#region src/client/components/ui/Toggle.tsx
@@ -5057,28 +5103,28 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5057
5103
  });
5058
5104
  var DiagnosticsView_module_css_default = {
5059
5105
  "envLabel": "k9eRya_envLabel",
5060
- "runBtn": "k9eRya_runBtn",
5061
- "panel": "k9eRya_panel",
5062
- "row": "k9eRya_row",
5106
+ "meta": "k9eRya_meta",
5107
+ "badgeIdle": "k9eRya_badgeIdle",
5063
5108
  "summaryFail": "k9eRya_summaryFail",
5064
5109
  "head": "k9eRya_head",
5065
5110
  "display": "k9eRya_display",
5066
- "diagPulse": "k9eRya_diagPulse",
5067
- "badgeRunning": "k9eRya_badgeRunning",
5068
- "badgeIdle": "k9eRya_badgeIdle",
5111
+ "runBtn": "k9eRya_runBtn",
5112
+ "summaryRunning": "k9eRya_summaryRunning",
5113
+ "badgeFail": "k9eRya_badgeFail",
5114
+ "envDesc": "k9eRya_envDesc",
5069
5115
  "envCopyBtn": "k9eRya_envCopyBtn",
5116
+ "badge": "k9eRya_badge",
5070
5117
  "badgeOk": "k9eRya_badgeOk",
5071
- "badgeFail": "k9eRya_badgeFail",
5072
- "envTitle": "k9eRya_envTitle",
5073
- "name": "k9eRya_name",
5074
- "meta": "k9eRya_meta",
5075
5118
  "summaryOk": "k9eRya_summaryOk",
5076
- "envDesc": "k9eRya_envDesc",
5119
+ "badgeRunning": "k9eRya_badgeRunning",
5120
+ "row": "k9eRya_row",
5077
5121
  "summary": "k9eRya_summary",
5078
- "summaryRunning": "k9eRya_summaryRunning",
5122
+ "diagPulse": "k9eRya_diagPulse",
5123
+ "panel": "k9eRya_panel",
5124
+ "envTitle": "k9eRya_envTitle",
5079
5125
  "headHint": "k9eRya_headHint",
5080
- "envRow": "k9eRya_envRow",
5081
- "badge": "k9eRya_badge"
5126
+ "name": "k9eRya_name",
5127
+ "envRow": "k9eRya_envRow"
5082
5128
  };
5083
5129
  //#endregion
5084
5130
  //#region src/client/components/views/DiagnosticsView.tsx
@@ -5253,57 +5299,57 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
5253
5299
  css: css$1
5254
5300
  });
5255
5301
  var LogsView_module_css_default = {
5256
- "filterBar": "_3j77BW_filterBar",
5257
- "list": "_3j77BW_list",
5258
- "pathDialogRow": "_3j77BW_pathDialogRow",
5259
- "pathLabel": "_3j77BW_pathLabel",
5260
- "pathText": "_3j77BW_pathText",
5261
- "badge": "_3j77BW_badge",
5302
+ "head": "_3j77BW_head",
5303
+ "searchInput": "_3j77BW_searchInput",
5262
5304
  "badgeSuccess": "_3j77BW_badgeSuccess",
5263
- "badgeError": "_3j77BW_badgeError",
5264
- "catSystem": "_3j77BW_catSystem",
5305
+ "badgeInfo": "_3j77BW_badgeInfo",
5306
+ "catBadge": "_3j77BW_catBadge",
5307
+ "catInstall": "_3j77BW_catInstall",
5265
5308
  "empty": "_3j77BW_empty",
5266
- "pathDialogReset": "_3j77BW_pathDialogReset",
5267
- "previewRow": "_3j77BW_previewRow",
5268
- "filterChip": "_3j77BW_filterChip",
5269
- "actions": "_3j77BW_actions",
5270
- "time": "_3j77BW_time",
5271
- "headHint": "_3j77BW_headHint",
5272
- "panel": "_3j77BW_panel",
5273
- "headActions": "_3j77BW_headActions",
5309
+ "search": "_3j77BW_search",
5310
+ "clearBtn": "_3j77BW_clearBtn",
5311
+ "pathDialogDesc": "_3j77BW_pathDialogDesc",
5312
+ "filterBar": "_3j77BW_filterBar",
5274
5313
  "linkBtn": "_3j77BW_linkBtn",
5314
+ "moreEnd": "_3j77BW_moreEnd",
5315
+ "catUninstall": "_3j77BW_catUninstall",
5316
+ "btn": "_3j77BW_btn",
5317
+ "panel": "_3j77BW_panel",
5275
5318
  "pathDialogFoot": "_3j77BW_pathDialogFoot",
5276
- "foot": "_3j77BW_foot",
5277
- "catInstall": "_3j77BW_catInstall",
5278
- "catDiagnostics": "_3j77BW_catDiagnostics",
5279
- "pathDraft": "_3j77BW_pathDraft",
5280
- "clearBtn": "_3j77BW_clearBtn",
5281
- "footActions": "_3j77BW_footActions",
5282
- "head": "_3j77BW_head",
5283
- "footFail": "_3j77BW_footFail",
5284
- "entry": "_3j77BW_entry",
5285
5319
  "logList": "_3j77BW_logList",
5286
5320
  "more": "_3j77BW_more",
5321
+ "footPath": "_3j77BW_footPath",
5322
+ "list": "_3j77BW_list",
5323
+ "footActions": "_3j77BW_footActions",
5324
+ "filterChipActive": "_3j77BW_filterChipActive",
5325
+ "previewRow": "_3j77BW_previewRow",
5326
+ "badgeWarn": "_3j77BW_badgeWarn",
5327
+ "pathDialog": "_3j77BW_pathDialog",
5328
+ "pathDraft": "_3j77BW_pathDraft",
5329
+ "pathDialogHint": "_3j77BW_pathDialogHint",
5330
+ "badge": "_3j77BW_badge",
5331
+ "headHint": "_3j77BW_headHint",
5332
+ "pathText": "_3j77BW_pathText",
5287
5333
  "badgeDebug": "_3j77BW_badgeDebug",
5288
- "footCount": "_3j77BW_footCount",
5289
5334
  "catSettings": "_3j77BW_catSettings",
5290
- "btn": "_3j77BW_btn",
5335
+ "actions": "_3j77BW_actions",
5336
+ "headActions": "_3j77BW_headActions",
5337
+ "badgeError": "_3j77BW_badgeError",
5291
5338
  "event": "_3j77BW_event",
5292
- "search": "_3j77BW_search",
5293
- "pathRow": "_3j77BW_pathRow",
5294
- "badgeWarn": "_3j77BW_badgeWarn",
5295
- "message": "_3j77BW_message",
5296
- "filterChipActive": "_3j77BW_filterChipActive",
5297
- "pathDialogDesc": "_3j77BW_pathDialogDesc",
5298
- "moreEnd": "_3j77BW_moreEnd",
5299
- "footPath": "_3j77BW_footPath",
5300
- "pathDialog": "_3j77BW_pathDialog",
5301
- "badgeInfo": "_3j77BW_badgeInfo",
5339
+ "foot": "_3j77BW_foot",
5340
+ "catSystem": "_3j77BW_catSystem",
5341
+ "pathLabel": "_3j77BW_pathLabel",
5342
+ "pathDialogRow": "_3j77BW_pathDialogRow",
5343
+ "pathDialogReset": "_3j77BW_pathDialogReset",
5344
+ "footCount": "_3j77BW_footCount",
5302
5345
  "catUpdate": "_3j77BW_catUpdate",
5303
- "searchInput": "_3j77BW_searchInput",
5304
- "catBadge": "_3j77BW_catBadge",
5305
- "catUninstall": "_3j77BW_catUninstall",
5306
- "pathDialogHint": "_3j77BW_pathDialogHint"
5346
+ "catDiagnostics": "_3j77BW_catDiagnostics",
5347
+ "entry": "_3j77BW_entry",
5348
+ "filterChip": "_3j77BW_filterChip",
5349
+ "time": "_3j77BW_time",
5350
+ "message": "_3j77BW_message",
5351
+ "pathRow": "_3j77BW_pathRow",
5352
+ "footFail": "_3j77BW_footFail"
5307
5353
  };
5308
5354
  //#endregion
5309
5355
  //#region src/client/components/modals/LogsModal.tsx
@@ -6154,6 +6200,9 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6154
6200
  /** 命令行安装确认弹窗:记录待安装的裸目标(npm 包名 / GitHub 地址,DSH 命令已剥成裸目标)——
6155
6201
  * 与应用商店同一套确认/进度/结果弹窗,提供时 plugin 传 null 走 customTarget 模式 */
6156
6202
  const [confirmCustomTarget, setConfirmCustomTarget] = (0, react.useState)(null);
6203
+ /** 自定义安装入口渠道(三张卡片之一):随确认弹窗记录,提交时上报服务端,
6204
+ * 报错/日志据此精准溯源「从哪个入口发起」(npm 全局安装固定为 'npm') */
6205
+ const [confirmCustomChannel, setConfirmCustomChannel] = (0, react.useState)(null);
6157
6206
  /** 全局 npm 安装确认弹窗(官方 `npm install -g <pkgs>`):记录原始命令 + 解析出的包列表,
6158
6207
  * 走与应用商店同一套确认/进度/结果弹窗(plugin 传 null,InstallModal 走 globalNpm 模式) */
6159
6208
  const [confirmGlobalNpm, setConfirmGlobalNpm] = (0, react.useState)(null);
@@ -6306,6 +6355,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6306
6355
  if (e.key === "Escape") {
6307
6356
  setConfirmPlugin(null);
6308
6357
  setConfirmCustomTarget(null);
6358
+ setConfirmCustomChannel(null);
6309
6359
  setConfirmGlobalNpm(null);
6310
6360
  setUninstallPlugin(null);
6311
6361
  setUninstallItem(null);
@@ -6515,6 +6565,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6515
6565
  queue.clearModalTask();
6516
6566
  if (opts?.globalNpm && opts.globalNpm.length > 0) {
6517
6567
  setConfirmCustomTarget(null);
6568
+ setConfirmCustomChannel(null);
6518
6569
  setConfirmIsUpdate(false);
6519
6570
  setConfirmGlobalNpm({
6520
6571
  raw,
@@ -6523,6 +6574,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6523
6574
  return;
6524
6575
  }
6525
6576
  setConfirmGlobalNpm(null);
6577
+ setConfirmCustomChannel(opts.installChannel);
6526
6578
  setConfirmIsUpdate(customTargetInstalled(target));
6527
6579
  setConfirmCustomTarget(target);
6528
6580
  }
@@ -6542,7 +6594,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6542
6594
  openSection: settingsSection,
6543
6595
  onConsumedOpenSection: () => setSettingsSection(null)
6544
6596
  }), showHubUpdate && (0, react.createElement)(HubUpdateModal, {
6545
- info: catalog.hubUpdateInfo ?? { version: "1.3.8" },
6597
+ info: catalog.hubUpdateInfo ?? { version: "1.3.9" },
6546
6598
  lang,
6547
6599
  t,
6548
6600
  hasUpdate: catalog.hubHasUpdate,
@@ -6651,6 +6703,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6651
6703
  onClose: () => {
6652
6704
  setInstallDone(false);
6653
6705
  setConfirmCustomTarget(null);
6706
+ setConfirmCustomChannel(null);
6654
6707
  },
6655
6708
  onCopy: () => {
6656
6709
  doCopy(`pnpm add ${confirmCustomTarget}`);
@@ -6659,7 +6712,10 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6659
6712
  kind: "copied"
6660
6713
  });
6661
6714
  },
6662
- onInstall: () => void queue.installCustom(confirmCustomTarget, confirmIsUpdate ? { update: true } : void 0),
6715
+ onInstall: () => void queue.installCustom(confirmCustomTarget, {
6716
+ update: confirmIsUpdate,
6717
+ channel: confirmCustomChannel ?? "npm"
6718
+ }),
6663
6719
  onRestart: () => setShowRestartConfirm(true)
6664
6720
  }), confirmGlobalNpm && (0, react.createElement)(InstallModal, {
6665
6721
  plugin: null,
@@ -6676,6 +6732,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6676
6732
  onClose: () => {
6677
6733
  setInstallDone(false);
6678
6734
  setConfirmGlobalNpm(null);
6735
+ setConfirmCustomChannel(null);
6679
6736
  },
6680
6737
  onCopy: () => {
6681
6738
  doCopy(`npm install -g ${confirmGlobalNpm.pkgs.join(" ")}`);
@@ -6684,7 +6741,7 @@ window.__ModuleLoader__.load({ id: "dsh-plugin", factory: (require) => {
6684
6741
  kind: "copied"
6685
6742
  });
6686
6743
  },
6687
- onInstall: () => void queue.installGlobalNpm(confirmGlobalNpm.pkgs),
6744
+ onInstall: () => void queue.installGlobalNpm(confirmGlobalNpm.pkgs, { channel: "npm" }),
6688
6745
  onRestart: () => setShowRestartConfirm(true)
6689
6746
  }), (uninstallPlugin || uninstallItem) && (0, react.createElement)(UninstallModal, {
6690
6747
  plugin: uninstallPlugin ?? pluginOfItem(uninstallItem),