dshmarket 1.16.5 → 1.16.6
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 +25 -11
- package/client/client.js.map +1 -1
- package/lib/backup.js +41 -0
- package/lib/routes.js +34 -6
- package/lib/types/backup.d.ts +23 -0
- package/lib/types/verify.d.ts +42 -0
- package/lib/verify.js +90 -0
- package/package.json +1 -1
- package/src/backup.ts +35 -0
- package/src/client/MarketSection.tsx +21 -2
- package/src/client/locales.ts +4 -0
- package/src/routes.ts +37 -9
- package/src/verify.ts +90 -0
package/client/client.js
CHANGED
|
@@ -105,6 +105,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
105
105
|
agentBusyInstall: "有 agent 正在运行,请等待其完成或将其取消后再安装——安装会修改插件文件,运行中的 agent 可能中途报错。",
|
|
106
106
|
compatRiskBanner: "检测到兼容性风险,建议重启前到诊断页处理,或一键回滚本次操作。",
|
|
107
107
|
shadowNameBanner: "本次操作让同一个插件名在两个层里同时存在,重启后只有一个会生效:",
|
|
108
|
+
brokenBundleBanner: "下列插件的前端文件已损坏、无法解析,刷新后界面可能空白,建议回滚:",
|
|
108
109
|
goDiagnose: "去诊断页修复",
|
|
109
110
|
rollbackNow: "一键回滚",
|
|
110
111
|
rollingBack: "回滚中…",
|
|
@@ -253,6 +254,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
253
254
|
backupDone: "备份已上传",
|
|
254
255
|
restoreDone: "恢复完成,请重启 DeepSeek Harness",
|
|
255
256
|
restorePartial: "恢复已完成,但下列插件安装失败:",
|
|
257
|
+
restoreUnportable: "依赖指向了另一台机器上的绝对路径,本机不存在,需要手动改成本机路径或重新安装",
|
|
256
258
|
restoreConfirm: "恢复将覆盖当前 profile 配置并重新安装插件,确定继续吗?",
|
|
257
259
|
restorePreviewDone: "备份已导入,请在「已安装」中确认后开始恢复",
|
|
258
260
|
restoreMissing: "备份中有 {0} 个插件尚未安装",
|
|
@@ -463,6 +465,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
463
465
|
agentBusyInstall: "An agent is currently working — wait for it to finish (or cancel it) before installing. Installing changes plugin files, so a working agent can fail mid-turn.",
|
|
464
466
|
compatRiskBanner: "Compatibility risk detected — open Diagnostics before restarting, or roll this operation back.",
|
|
465
467
|
shadowNameBanner: "This operation left one plugin name defined in two layers; only one will load after a restart:",
|
|
468
|
+
brokenBundleBanner: "These plugins now have a client bundle that will not parse; the page may come up blank after a refresh — rolling back is recommended:",
|
|
466
469
|
goDiagnose: "Open Diagnostics",
|
|
467
470
|
rollbackNow: "Roll back",
|
|
468
471
|
rollingBack: "Rolling back…",
|
|
@@ -611,6 +614,7 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
611
614
|
backupDone: "Backup uploaded",
|
|
612
615
|
restoreDone: "Restore complete — restart DeepSeek Harness",
|
|
613
616
|
restorePartial: "Restore completed, but these plugins failed to install:",
|
|
617
|
+
restoreUnportable: "points at an absolute path from another machine that does not exist here — repoint it locally or reinstall the plugin",
|
|
614
618
|
restoreConfirm: "Restore will overwrite this profile configuration and reinstall plugins. Continue?",
|
|
615
619
|
restorePreviewDone: "Backup imported. Review Installed, then start restore.",
|
|
616
620
|
restoreMissing: "{0} plugins from this backup are not installed",
|
|
@@ -4702,7 +4706,8 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
4702
4706
|
}, [updatableNames, doUpdate]);
|
|
4703
4707
|
const finishRestore = (0, react.useCallback)((body) => {
|
|
4704
4708
|
const errors = Array.isArray(body.errors) ? body.errors : [];
|
|
4705
|
-
|
|
4709
|
+
const unportable = Array.isArray(body.unportable) ? body.unportable : [];
|
|
4710
|
+
setRestoreErrors([...errors.map((item) => `${String(item.name)}: ${String(item.error)}`), ...unportable.map((item) => `${String(item.name)}: ${t("restoreUnportable")} (${String(item.spec)})`)]);
|
|
4706
4711
|
setBackupRestored(true);
|
|
4707
4712
|
setBackupMessage(t("restoreDone"));
|
|
4708
4713
|
if (errors.length === 0) {
|
|
@@ -5660,16 +5665,25 @@ window.__ModuleLoader__.load({ id: "dshmarket", factory: (require) => {
|
|
|
5660
5665
|
children: [
|
|
5661
5666
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
5662
5667
|
className: Market_module_css_default.grow,
|
|
5663
|
-
children: [
|
|
5664
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
5665
|
-
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
5669
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
5670
|
-
|
|
5671
|
-
|
|
5672
|
-
|
|
5668
|
+
children: [
|
|
5669
|
+
compatibilityNotice.risks.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
5670
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: t("compatRiskBanner") }),
|
|
5671
|
+
" ",
|
|
5672
|
+
compatibilitySummary(compatibilityNotice.risks)
|
|
5673
|
+
] }),
|
|
5674
|
+
compatibilityNotice.shadowedNames !== void 0 && compatibilityNotice.shadowedNames.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
5675
|
+
compatibilityNotice.risks.length > 0 && " · ",
|
|
5676
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: t("shadowNameBanner") }),
|
|
5677
|
+
" ",
|
|
5678
|
+
shadowSummary(compatibilityNotice.shadowedNames)
|
|
5679
|
+
] }),
|
|
5680
|
+
compatibilityNotice.brokenBundles !== void 0 && compatibilityNotice.brokenBundles.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
5681
|
+
(compatibilityNotice.risks.length > 0 || (compatibilityNotice.shadowedNames?.length ?? 0) > 0) && " · ",
|
|
5682
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: t("brokenBundleBanner") }),
|
|
5683
|
+
" ",
|
|
5684
|
+
compatibilityNotice.brokenBundles.map((entry) => entry.name).join(", ")
|
|
5685
|
+
] })
|
|
5686
|
+
]
|
|
5673
5687
|
}),
|
|
5674
5688
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
5675
5689
|
variant: "outline",
|