dsh-config-manager 0.1.5 → 0.1.7

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/README.md CHANGED
@@ -73,7 +73,11 @@ dsh plugin --profile web add dsh-config-manager@latest --config.auto-install-pee
73
73
 
74
74
  > 💡 Just copy-paste the command: `--config.auto-install-peers=false` skips a few DSH core packages that aren't on the public registry yet (the DSH runtime provides them), and `@latest` ensures you get the newest build.
75
75
  >
76
- > 🐛 **`@latest` installed an old version?** pnpm caches registry metadata, so `@latest` may resolve to a stale release. Use an exact version instead: `dsh plugin --profile web add dsh-config-manager@0.1.4 --config.auto-install-peers=false`.
76
+ > 🐛 **`@latest` installed an old version?** That's pnpm 11's `minimumReleaseAge` supply-chain policy, not a cache issue: versions published less than ~30 days ago are excluded from resolution until whitelisted. Install an exact version once (it auto-whitelists, then `@latest` works):
77
+ > ```bash
78
+ > dsh plugin --profile web add dsh-config-manager@0.1.5 --config.auto-install-peers=false
79
+ > ```
80
+ > (Or set `minimumReleaseAge: 0` in the profile's `pnpm-workspace.yaml` to disable the age gate.)
77
81
 
78
82
  ---
79
83
 
package/README.zh-CN.md CHANGED
@@ -73,7 +73,11 @@ dsh plugin --profile web add dsh-config-manager@latest --config.auto-install-pee
73
73
 
74
74
  > 💡 照着复制就行:`--config.auto-install-peers=false` 跳过几个尚未公开发布的 DSH 核心依赖(运行时由 DSH 自己提供),`@latest` 确保装到最新版。
75
75
  >
76
- > 🐛 **`@latest` 装到了旧版?** pnpm 会缓存 registry 元数据,`@latest` 可能解析到过期版本。改用精确版本即可:`dsh plugin --profile web add dsh-config-manager@0.1.4 --config.auto-install-peers=false`。
76
+ > 🐛 **`@latest` 装到了旧版?** 这是 **pnpm 11 `minimumReleaseAge` 供应链发布年龄策略**(不是缓存):发布不足约 30 天的新版本会被排除出版本解析,直到进入白名单。装一次精确版本即可自动白名单,之后 `@latest` 正常:
77
+ > ```bash
78
+ > dsh plugin --profile web add dsh-config-manager@0.1.5 --config.auto-install-peers=false
79
+ > ```
80
+ > (或在 profile 的 `pnpm-workspace.yaml` 加 `minimumReleaseAge: 0` 彻底关闭年龄门槛。)
77
81
 
78
82
  ---
79
83
 
@@ -65,8 +65,20 @@ export class WorkspacesAdapter {
65
65
  const rec = data?.workspaces.find((r) => r.id === ref);
66
66
  if (!rec)
67
67
  return { ok: false, message: `导入数据缺少工作区 ${ref}` };
68
- await ctx.target.workspace.writeRecord(rec);
69
- return { ok: true };
68
+ try {
69
+ await ctx.target.workspace.writeRecord(rec);
70
+ return { ok: true };
71
+ }
72
+ catch (err) {
73
+ // 目标端无法写入(如路径 realpath 失败/目录不存在)→ 非致命警告(§34.17),
74
+ // 不触发整体回滚——否则一个失效路径会拖垮已成功导入的其余配置。
75
+ const msg = err instanceof Error ? err.message : String(err);
76
+ return {
77
+ ok: false,
78
+ warning: true,
79
+ message: `工作区 ${ref} 未能写入:${msg}(需映射路径或先在目标创建目录)`,
80
+ };
81
+ }
70
82
  }
71
83
  async validate(data) {
72
84
  const issues = [];
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../src/adapters/workspaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../src/adapters/workspaces.ts"],"names":[],"mappings":"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"}
package/lib/client.d.ts CHANGED
@@ -134,7 +134,8 @@ interface ImportPlan {
134
134
  }
135
135
  interface ExecutedItem {
136
136
  itemId: string;
137
- status: 'ok' | 'skipped' | 'failed';
137
+ /** warning = 未应用但非致命(目标不可达等),不计入失败、不触发回滚 */
138
+ status: 'ok' | 'skipped' | 'warning' | 'failed';
138
139
  message?: string;
139
140
  }
140
141
  interface ImportResult {
package/lib/client.js CHANGED
@@ -328,6 +328,7 @@ function importSectionStats(executed) {
328
328
  section,
329
329
  ok: 0,
330
330
  skipped: 0,
331
+ warned: 0,
331
332
  failed: 0,
332
333
  items: []
333
334
  };
@@ -335,6 +336,7 @@ function importSectionStats(executed) {
335
336
  }
336
337
  if (e.status === "ok") stat.ok += 1;
337
338
  else if (e.status === "skipped") stat.skipped += 1;
339
+ else if (e.status === "warning") stat.warned += 1;
338
340
  else stat.failed += 1;
339
341
  stat.items.push(e);
340
342
  }
@@ -348,9 +350,10 @@ function renderImportReport(result) {
348
350
  const parts = [];
349
351
  if (s.ok > 0) parts.push(`✓ ${s.ok} imported/restored`);
350
352
  if (s.skipped > 0) parts.push(`- ${s.skipped} skipped`);
353
+ if (s.warned > 0) parts.push(`⚠ ${s.warned} need attention`);
351
354
  if (s.failed > 0) parts.push(`✗ ${s.failed} failed`);
352
355
  lines.push(`${s.section}: ${parts.join(" ") || "no changes"}`);
353
- for (const it of s.items) if (it.status === "failed") lines.push(` Reason: ${it.message ?? "未知原因"}`);
356
+ for (const it of s.items) if (it.status === "failed" || it.status === "warning") lines.push(` ${it.status === "failed" ? "Reason" : "Note"}: ${it.message ?? "未知原因"}`);
354
357
  }
355
358
  if (result.missingSecrets.length > 0) lines.push(`Secrets: ⚠ ${result.missingSecrets.length} credentials need to be entered`);
356
359
  if (result.needsRestart) lines.push("Restart required: 插件/MCP 变更将在重启 DSH 后生效");
@@ -361,13 +364,10 @@ function renderImportReport(result) {
361
364
  }
362
365
  return lines.join("\n");
363
366
  }
364
- /** 结果页动作按钮(§22:Fix Issues / View Details / Done) */
365
- function suggestedActions(result) {
366
- const actions = [];
367
- if (result.executed.some((e) => e.status === "failed")) actions.push("fixIssues");
368
- if (result.executed.length > 0 || result.warnings.length > 0) actions.push("viewDetails");
369
- actions.push("done");
370
- return actions;
367
+ /** 结果页动作按钮(§22)。报告已内联展示全部失败/警告项的原因与回滚详情(§23),
368
+ * 不再提供空操作的 Fix Issues / View Details 按钮——仅保留「完成」。 */
369
+ function suggestedActions(_result) {
370
+ return ["done"];
371
371
  }
372
372
  /** 回滚报告渲染(full / partial + 人工恢复清单) */
373
373
  function renderRollbackReport(rr) {
@@ -559,93 +559,93 @@ if (typeof document !== "undefined" && document.querySelector("style[data-tag=\"
559
559
  document.head.appendChild(tag);
560
560
  }
561
561
  var config_manager_module_css_default = {
562
- "spinnerLabel": "_367UGW_spinnerLabel",
563
- "errorItem": "_367UGW_errorItem",
564
- "groupHeader": "_367UGW_groupHeader",
565
- "formError": "_367UGW_formError",
566
- "conflictHead": "_367UGW_conflictHead",
567
- "checkboxRow": "_367UGW_checkboxRow",
568
- "input": "_367UGW_input",
569
- "conflictId": "_367UGW_conflictId",
562
+ "modeTab": "_367UGW_modeTab",
563
+ "badgeWarn": "_367UGW_badgeWarn",
564
+ "progressIndeterminate": "_367UGW_progressIndeterminate",
565
+ "viewBody": "_367UGW_viewBody",
566
+ "spinnerWrap": "_367UGW_spinnerWrap",
567
+ "sectionSubtitle": "_367UGW_sectionSubtitle",
568
+ "hint": "_367UGW_hint",
569
+ "progressBarDone": "_367UGW_progressBarDone",
570
+ "progressBlock": "_367UGW_progressBlock",
570
571
  "reportText": "_367UGW_reportText",
571
- "card": "_367UGW_card",
572
- "primaryButton": "_367UGW_primaryButton",
573
- "categoryName": "_367UGW_categoryName",
574
- "groupCard": "_367UGW_groupCard",
575
- "reportView": "_367UGW_reportView",
576
- "errorReason": "_367UGW_errorReason",
577
- "pathRow": "_367UGW_pathRow",
578
- "pathIssueKind": "_367UGW_pathIssueKind",
579
572
  "empty": "_367UGW_empty",
580
- "pathMappingList": "_367UGW_pathMappingList",
581
- "groupNote": "_367UGW_groupNote",
582
- "pathNew": "_367UGW_pathNew",
583
- "sectionBody": "_367UGW_sectionBody",
584
573
  "dshCmSpin": "_367UGW_dshCmSpin",
585
- "actionRow": "_367UGW_actionRow",
586
- "groupList": "_367UGW_groupList",
587
- "progressBarDone": "_367UGW_progressBarDone",
588
- "reportFooter": "_367UGW_reportFooter",
589
- "spinner": "_367UGW_spinner",
590
- "groupItems": "_367UGW_groupItems",
591
- "optionsCard": "_367UGW_optionsCard",
592
- "spinnerWrap": "_367UGW_spinnerWrap",
593
- "progressBlock": "_367UGW_progressBlock",
594
- "progressBar": "_367UGW_progressBar",
574
+ "sectionBody": "_367UGW_sectionBody",
575
+ "categoryItem": "_367UGW_categoryItem",
576
+ "conflictOptions": "_367UGW_conflictOptions",
577
+ "conflictItem": "_367UGW_conflictItem",
578
+ "viewTabs": "_367UGW_viewTabs",
579
+ "ghostButton": "_367UGW_ghostButton",
580
+ "sectionTitleBlock": "_367UGW_sectionTitleBlock",
595
581
  "dangerButton": "_367UGW_dangerButton",
596
- "hiddenFile": "_367UGW_hiddenFile",
597
- "section": "_367UGW_section",
598
- "badge": "_367UGW_badge",
599
- "modeTabs": "_367UGW_modeTabs",
600
- "groupLabel": "_367UGW_groupLabel",
601
- "sectionHeader": "_367UGW_sectionHeader",
582
+ "banner": "_367UGW_banner",
583
+ "card": "_367UGW_card",
584
+ "iconButton": "_367UGW_iconButton",
585
+ "categoryDesc": "_367UGW_categoryDesc",
586
+ "statRow": "_367UGW_statRow",
587
+ "reportFooter": "_367UGW_reportFooter",
588
+ "conflictId": "_367UGW_conflictId",
602
589
  "conflictList": "_367UGW_conflictList",
590
+ "groupList": "_367UGW_groupList",
603
591
  "secretsList": "_367UGW_secretsList",
604
- "warnList": "_367UGW_warnList",
605
- "progressDetail": "_367UGW_progressDetail",
606
- "field": "_367UGW_field",
592
+ "spinner": "_367UGW_spinner",
593
+ "progressMeta": "_367UGW_progressMeta",
594
+ "input": "_367UGW_input",
595
+ "viewTab": "_367UGW_viewTab",
596
+ "pathRow": "_367UGW_pathRow",
597
+ "section": "_367UGW_section",
598
+ "formError": "_367UGW_formError",
599
+ "progressTrack": "_367UGW_progressTrack",
607
600
  "severityError": "_367UGW_severityError",
608
- "errorAction": "_367UGW_errorAction",
609
- "fieldLabel": "_367UGW_fieldLabel",
601
+ "radioLabel": "_367UGW_radioLabel",
602
+ "conflictDetail": "_367UGW_conflictDetail",
610
603
  "errorFooter": "_367UGW_errorFooter",
611
- "rollbackBox": "_367UGW_rollbackBox",
612
- "pathOld": "_367UGW_pathOld",
613
604
  "badgeInfo": "_367UGW_badgeInfo",
614
- "radioLabel": "_367UGW_radioLabel",
615
- "viewTabs": "_367UGW_viewTabs",
616
- "dshCmIndeterminate": "_367UGW_dshCmIndeterminate",
617
- "progressMeta": "_367UGW_progressMeta",
618
- "progressLabel": "_367UGW_progressLabel",
605
+ "primaryButton": "_367UGW_primaryButton",
606
+ "errorBanner": "_367UGW_errorBanner",
607
+ "groupNote": "_367UGW_groupNote",
619
608
  "errorLine": "_367UGW_errorLine",
609
+ "conflictHead": "_367UGW_conflictHead",
610
+ "hiddenFile": "_367UGW_hiddenFile",
611
+ "groupItems": "_367UGW_groupItems",
612
+ "progressBar": "_367UGW_progressBar",
613
+ "errorReason": "_367UGW_errorReason",
614
+ "dshCmIndeterminate": "_367UGW_dshCmIndeterminate",
620
615
  "errorActionLabel": "_367UGW_errorActionLabel",
616
+ "groupHeader": "_367UGW_groupHeader",
617
+ "errorAction": "_367UGW_errorAction",
618
+ "fieldLabel": "_367UGW_fieldLabel",
619
+ "progressPercent": "_367UGW_progressPercent",
620
+ "rollbackBox": "_367UGW_rollbackBox",
621
+ "reportView": "_367UGW_reportView",
622
+ "errorItem": "_367UGW_errorItem",
623
+ "field": "_367UGW_field",
621
624
  "errorList": "_367UGW_errorList",
622
- "badgeWarn": "_367UGW_badgeWarn",
625
+ "pathMappingList": "_367UGW_pathMappingList",
626
+ "pathOld": "_367UGW_pathOld",
627
+ "pathValue": "_367UGW_pathValue",
628
+ "badge": "_367UGW_badge",
629
+ "categoryName": "_367UGW_categoryName",
630
+ "actionRow": "_367UGW_actionRow",
631
+ "badgeError": "_367UGW_badgeError",
623
632
  "modeHint": "_367UGW_modeHint",
624
- "progressPercent": "_367UGW_progressPercent",
625
- "sectionSubtitle": "_367UGW_sectionSubtitle",
626
- "sectionTitle": "_367UGW_sectionTitle",
627
- "ghostButton": "_367UGW_ghostButton",
628
- "progressTrack": "_367UGW_progressTrack",
633
+ "groupLabel": "_367UGW_groupLabel",
629
634
  "secretFields": "_367UGW_secretFields",
635
+ "progressDetail": "_367UGW_progressDetail",
636
+ "pathIssueKind": "_367UGW_pathIssueKind",
637
+ "sectionHeader": "_367UGW_sectionHeader",
638
+ "modeTabs": "_367UGW_modeTabs",
639
+ "warnList": "_367UGW_warnList",
630
640
  "errorTitle": "_367UGW_errorTitle",
631
- "conflictItem": "_367UGW_conflictItem",
632
- "categoryDesc": "_367UGW_categoryDesc",
633
- "statRow": "_367UGW_statRow",
634
- "badgeError": "_367UGW_badgeError",
635
- "hint": "_367UGW_hint",
636
- "progressIndeterminate": "_367UGW_progressIndeterminate",
637
- "conflictDetail": "_367UGW_conflictDetail",
638
- "modeTab": "_367UGW_modeTab",
639
- "categoryItem": "_367UGW_categoryItem",
640
- "sectionTitleBlock": "_367UGW_sectionTitleBlock",
641
- "conflictOptions": "_367UGW_conflictOptions",
642
- "viewBody": "_367UGW_viewBody",
643
- "banner": "_367UGW_banner",
644
- "pathValue": "_367UGW_pathValue",
641
+ "pathNew": "_367UGW_pathNew",
642
+ "spinnerLabel": "_367UGW_spinnerLabel",
645
643
  "badgeOk": "_367UGW_badgeOk",
646
- "iconButton": "_367UGW_iconButton",
647
- "viewTab": "_367UGW_viewTab",
648
- "errorBanner": "_367UGW_errorBanner"
644
+ "groupCard": "_367UGW_groupCard",
645
+ "optionsCard": "_367UGW_optionsCard",
646
+ "progressLabel": "_367UGW_progressLabel",
647
+ "checkboxRow": "_367UGW_checkboxRow",
648
+ "sectionTitle": "_367UGW_sectionTitle"
649
649
  };
650
650
  //#endregion
651
651
  //#region src/client/common/ui.tsx
@@ -2333,15 +2333,7 @@ function ImportWizardView({ api, t }) {
2333
2333
  kind: "warn",
2334
2334
  children: t("report.needsRestart")
2335
2335
  }),
2336
- error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ErrorBanner, { error }),
2337
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2338
- className: config_manager_module_css_default.actionRow,
2339
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
2340
- variant: "ghost",
2341
- onClick: resetWizard,
2342
- children: t("common.done")
2343
- })
2344
- })
2336
+ error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ErrorBanner, { error })
2345
2337
  ]
2346
2338
  });
2347
2339
  }