dsh-config-manager 0.1.33 → 0.1.35

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.
Files changed (139) hide show
  1. package/lib/adapters/index.d.ts +6 -0
  2. package/lib/adapters/index.js +6 -0
  3. package/lib/adapters/index.js.map +1 -1
  4. package/lib/adapters/self.d.ts +17 -0
  5. package/lib/adapters/self.js +70 -0
  6. package/lib/adapters/self.js.map +1 -0
  7. package/lib/adapters/test-helpers.js +1 -1
  8. package/lib/adapters/test-helpers.js.map +1 -1
  9. package/lib/client.d.ts +181 -37
  10. package/lib/client.js +4186 -3397
  11. package/lib/client.js.map +1 -1
  12. package/lib/core/backup.js +4 -2
  13. package/lib/core/backup.js.map +1 -1
  14. package/lib/index.js +234 -94
  15. package/lib/index.js.map +1 -1
  16. package/lib/market/index-parser.js +30 -6
  17. package/lib/market/index-parser.js.map +1 -1
  18. package/lib/market/prepare.d.ts +35 -0
  19. package/lib/market/prepare.js +110 -0
  20. package/lib/market/prepare.js.map +1 -0
  21. package/lib/market/reader.d.ts +13 -5
  22. package/lib/market/reader.js +21 -8
  23. package/lib/market/reader.js.map +1 -1
  24. package/lib/market/types.d.ts +38 -0
  25. package/lib/market/url.d.ts +2 -0
  26. package/lib/market/url.js +20 -0
  27. package/lib/market/url.js.map +1 -0
  28. package/lib/market/view.d.ts +1 -1
  29. package/lib/market/view.js +2 -1
  30. package/lib/market/view.js.map +1 -1
  31. package/lib/profiles/profile-manager.js +1 -1
  32. package/lib/profiles/profile-manager.js.map +1 -1
  33. package/lib/schema/config.js +4 -2
  34. package/lib/schema/config.js.map +1 -1
  35. package/lib/schema/types.d.ts +1 -1
  36. package/lib/sync/autosync-config.d.ts +11 -6
  37. package/lib/sync/autosync-config.js +90 -45
  38. package/lib/sync/autosync-config.js.map +1 -1
  39. package/lib/sync/autosync-scheduler.d.ts +19 -17
  40. package/lib/sync/autosync-scheduler.js +101 -89
  41. package/lib/sync/autosync-scheduler.js.map +1 -1
  42. package/lib/sync/risk.js +1 -0
  43. package/lib/sync/risk.js.map +1 -1
  44. package/lib/sync/sync-config.d.ts +28 -4
  45. package/lib/sync/sync-config.js +103 -8
  46. package/lib/sync/sync-config.js.map +1 -1
  47. package/lib/sync/sync-selection.d.ts +11 -6
  48. package/lib/sync/sync-selection.js +68 -31
  49. package/lib/sync/sync-selection.js.map +1 -1
  50. package/lib/sync/ui-prefs.d.ts +16 -0
  51. package/lib/sync/ui-prefs.js +83 -0
  52. package/lib/sync/ui-prefs.js.map +1 -0
  53. package/lib/ui/export-flow.js +1 -0
  54. package/lib/ui/export-flow.js.map +1 -1
  55. package/lib/ui/flow.d.ts +5 -1
  56. package/lib/ui/flow.js +4 -0
  57. package/lib/ui/flow.js.map +1 -1
  58. package/lib/ui/i18n.d.ts +10 -0
  59. package/lib/ui/i18n.js +21 -0
  60. package/lib/ui/i18n.js.map +1 -1
  61. package/lib/ui/import-wizard.d.ts +9 -2
  62. package/lib/ui/import-wizard.js +9 -2
  63. package/lib/ui/import-wizard.js.map +1 -1
  64. package/lib/ui/market-publish.d.ts +129 -0
  65. package/lib/ui/market-publish.js +168 -0
  66. package/lib/ui/market-publish.js.map +1 -0
  67. package/lib/ui/test-helpers.d.ts +1 -0
  68. package/lib/ui/test-helpers.js +4 -4
  69. package/lib/ui/test-helpers.js.map +1 -1
  70. package/lib/ui/types.d.ts +3 -0
  71. package/lib/ui/types.js.map +1 -1
  72. package/package.json +1 -1
  73. package/src/adapters/index.ts +11 -0
  74. package/src/adapters/self.test.ts +93 -0
  75. package/src/adapters/self.ts +74 -0
  76. package/src/adapters/test-helpers.ts +1 -1
  77. package/src/client/ConfigManagerSection.tsx +41 -44
  78. package/src/client/about/AboutPanel.tsx +118 -0
  79. package/src/client/about/about-view.test.ts +91 -0
  80. package/src/client/about/about-view.ts +104 -0
  81. package/src/client/api.ts +56 -36
  82. package/src/client/common/ui.tsx +26 -2
  83. package/src/client/config-manager.module.css +27 -0
  84. package/src/client/export/ExportView.tsx +9 -7
  85. package/src/client/import/ImportWizardView.tsx +28 -82
  86. package/src/client/import/import-file-select.test.ts +13 -0
  87. package/src/client/import/import-file-select.ts +1 -1
  88. package/src/client/index.ts +4 -3
  89. package/src/client/locales.ts +35 -18
  90. package/src/client/market/MarketPanel.tsx +80 -29
  91. package/src/client/market/PublishView.tsx +388 -0
  92. package/src/client/market/market-api.ts +16 -1
  93. package/src/client/market/market-locales.ts +121 -0
  94. package/src/client/market/market-view.test.ts +34 -1
  95. package/src/client/market/market-view.ts +20 -1
  96. package/src/client/run-store.test.ts +252 -0
  97. package/src/client/run-store.ts +308 -18
  98. package/src/client/snapshots/SnapshotsPanel.tsx +35 -3
  99. package/src/client/sync/SyncSettingsView.tsx +276 -182
  100. package/src/client/sync/sync-api.test.ts +68 -9
  101. package/src/client/sync/sync-api.ts +36 -11
  102. package/src/client/sync/sync-locales.ts +2 -0
  103. package/src/client/sync/sync-view.test.ts +34 -2
  104. package/src/client/sync/sync-view.ts +72 -2
  105. package/src/core/backup.ts +4 -2
  106. package/src/index.ts +233 -94
  107. package/src/market/index-parser.ts +30 -6
  108. package/src/market/market.test.ts +151 -0
  109. package/src/market/prepare.test.ts +131 -0
  110. package/src/market/prepare.ts +142 -0
  111. package/src/market/reader.ts +25 -14
  112. package/src/market/types.ts +40 -0
  113. package/src/market/url.test.ts +25 -0
  114. package/src/market/url.ts +19 -0
  115. package/src/market/view.ts +2 -1
  116. package/src/profiles/profile-manager.ts +1 -1
  117. package/src/schema/config.ts +4 -2
  118. package/src/schema/types.ts +1 -1
  119. package/src/sync/autosync-config.test.ts +68 -14
  120. package/src/sync/autosync-config.ts +92 -41
  121. package/src/sync/autosync-scheduler.test.ts +70 -22
  122. package/src/sync/autosync-scheduler.ts +104 -93
  123. package/src/sync/risk.ts +1 -0
  124. package/src/sync/sync-config.test.ts +96 -12
  125. package/src/sync/sync-config.ts +105 -9
  126. package/src/sync/sync-selection.test.ts +54 -17
  127. package/src/sync/sync-selection.ts +73 -30
  128. package/src/sync/transport.test.ts +1 -1
  129. package/src/sync/ui-prefs.test.ts +78 -0
  130. package/src/sync/ui-prefs.ts +94 -0
  131. package/src/ui/export-flow.ts +1 -0
  132. package/src/ui/flow.ts +5 -1
  133. package/src/ui/i18n.ts +21 -0
  134. package/src/ui/import-wizard.test.ts +38 -0
  135. package/src/ui/import-wizard.ts +9 -3
  136. package/src/ui/market-publish.test.ts +219 -0
  137. package/src/ui/market-publish.ts +256 -0
  138. package/src/ui/test-helpers.ts +5 -5
  139. package/src/ui/types.ts +3 -1
@@ -23,6 +23,11 @@ export interface AdapterRegistryOptions {
23
23
  includeSessions?: boolean;
24
24
  /** 插件自身包名:导出 plugins 分区时不列自己(避免自引用;缺省 dsh-config-manager) */
25
25
  selfPluginName?: string;
26
+ /**
27
+ * self 分区:插件自身配置目录(相对 ~/.dsh 根,如 'dsh-config-manager')。
28
+ * 缺省 'dsh-config-manager';传入 '' 表示不挂载(宿主自定义 dataDir 在 homeDir 外时)。
29
+ */
30
+ selfDir?: string;
26
31
  }
27
32
  /** 组装默认 adapter 列表(pluginFiles/sessions 恒挂载但 defaultIncluded=false,用户勾选才导出) */
28
33
  export declare function createAdapters(options?: AdapterRegistryOptions): ConfigAdapter[];
@@ -41,4 +46,5 @@ export { WorkspacesAdapter } from './workspaces.ts';
41
46
  export { CredentialsAdapter, defaultCredentialRefs } from './credentials.ts';
42
47
  export { PluginFilesAdapter, DEFAULT_PLUGIN_FILE_WHITELIST } from './plugin-files.ts';
43
48
  export { SessionsAdapter } from './sessions.ts';
49
+ export { SelfAdapter, SELF_CONFIG_FILES } from './self.ts';
44
50
  export { FileCollectionAdapter } from './file-collection.ts';
@@ -11,6 +11,7 @@ import { WorkspacesAdapter } from "./workspaces.js";
11
11
  import { CredentialsAdapter } from "./credentials.js";
12
12
  import { PluginFilesAdapter } from "./plugin-files.js";
13
13
  import { SessionsAdapter } from "./sessions.js";
14
+ import { SelfAdapter } from "./self.js";
14
15
  /** 组装默认 adapter 列表(pluginFiles/sessions 恒挂载但 defaultIncluded=false,用户勾选才导出) */
15
16
  export function createAdapters(options = {}) {
16
17
  const namespaces = options.namespaces ?? [];
@@ -28,6 +29,10 @@ export function createAdapters(options = {}) {
28
29
  new CredentialsAdapter({ namespaces, refs: options.credentialsRefs }),
29
30
  new PluginFilesAdapter(options.pluginFiles, options.pluginFilesDir),
30
31
  ];
32
+ // self 分区:插件自身配置(同步/市场/偏好),portable 默认包含;'' = 不挂载
33
+ if (options.selfDir !== '') {
34
+ adapters.push(new SelfAdapter(options.selfDir ?? 'dsh-config-manager'));
35
+ }
31
36
  if (options.includeSessions)
32
37
  adapters.push(new SessionsAdapter());
33
38
  return adapters;
@@ -45,5 +50,6 @@ export { WorkspacesAdapter } from "./workspaces.js";
45
50
  export { CredentialsAdapter, defaultCredentialRefs } from "./credentials.js";
46
51
  export { PluginFilesAdapter, DEFAULT_PLUGIN_FILE_WHITELIST } from "./plugin-files.js";
47
52
  export { SessionsAdapter } from "./sessions.js";
53
+ export { SelfAdapter, SELF_CONFIG_FILES } from "./self.js";
48
54
  export { FileCollectionAdapter } from "./file-collection.js";
49
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAA0B,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAA+B,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAiBhD,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,UAAkC,EAAE;IACjE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAoB;QAChC,IAAI,eAAe,CAAC,UAAU,CAAC;QAC/B,IAAI,SAAS,CAAC,UAAU,CAAC;QACzB,IAAI,gBAAgB,EAAE;QACtB,IAAI,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC;QAC1C,IAAI,UAAU,EAAE;QAChB,IAAI,cAAc,EAAE;QACpB,IAAI,aAAa,EAAE;QACnB,IAAI,mBAAmB,EAAE;QACzB,IAAI,wBAAwB,EAAE;QAC9B,IAAI,iBAAiB,EAAE;QACvB,IAAI,kBAAkB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;QACrE,IAAI,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC;KACpE,CAAC;IACF,IAAI,OAAO,CAAC,eAAe;QAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;IAClE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAKD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAwD,MAAM,gBAAgB,CAAC;AACrI,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAA8C,MAAM,UAAU,CAAC;AACxH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAqD,MAAM,cAAc,CAAC;AACvJ,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ExportOptions, ExportSection, HostContext } from '../core/types.ts';
2
+ import type { FilesSection } from '../schema/types.ts';
3
+ import { FileCollectionAdapter } from './file-collection.ts';
4
+ /** self 分区白名单文件(相对 baseDir,即 $DSH_HOME/dsh-config-manager/)。 */
5
+ export declare const SELF_CONFIG_FILES: readonly string[];
6
+ export declare class SelfAdapter extends FileCollectionAdapter {
7
+ readonly id: "self";
8
+ readonly displayName = "Plugin Self Config";
9
+ readonly defaultIncluded = true;
10
+ readonly portability: "portable";
11
+ /** 插件自身配置目录(相对 homeDir;宿主按 dataDir 解析注入,缺省 dsh-config-manager) */
12
+ readonly baseDir: string;
13
+ constructor(baseDir?: string);
14
+ /** 白名单收集:只导出配置类文件(存在才收),不递归(排除快照/历史/缓存/临时产物)。
15
+ * relativePath 产出相对 baseDir 的路径(与 analyzeImport/applyItem 的 path.join(baseDir, ref) 匹配)。 */
16
+ export(ctx: HostContext, _options: ExportOptions): Promise<ExportSection<FilesSection>>;
17
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * self 分区 adapter(插件自身配置,设计「self 分区」):
3
+ * 数据源 = $DSH_HOME/dsh-config-manager/ 下的插件自身配置文件(白名单收集,非递归):
4
+ * - sync/sync-config.json 同步通道配置(git repoUrl / webdav url+username;凭据值走 credentials 槽位,不含 secret)
5
+ * - sync/sync-autosync.json 自动同步调度配置
6
+ * - sync/sync-selection.json 同步分区选择(默认/高级模式 + 勾选分区)
7
+ * - sync/ui-prefs.json 插件 UI 偏好(如上次选择的同步通道;从 localStorage 迁入)
8
+ * - market/market-config.json 配置市场配置
9
+ *
10
+ * 排除项:sync/sync-history.json(执行记录,属数据非配置)、market/cache/(缓存)、
11
+ * snapshots/(快照)、tmp/ exports/(临时/导出产物)——只备份「配置」,不备份数据。
12
+ *
13
+ * 实现:继承 FileCollectionAdapter 复用 analyzeImport/applyItem/validate(幂等 hash 比对、
14
+ * 快照/回滚路径一致),仅覆写 export() 为白名单收集(self 目录内存在大量非配置子目录,
15
+ * 不能像 skills/sessions 那样整体递归)。
16
+ *
17
+ * relativePath 一律是「相对 baseDir」的路径(如 sync/sync-config.json),与
18
+ * FileCollectionAdapter 的基准目录语义一致:导入时按 path.join(baseDir, rel) 写回
19
+ * $DSH_HOME/dsh-config-manager/<rel>;ZIP 内位于 self/<rel>。
20
+ *
21
+ * 安全不变量:配置文件本身不含凭据值(同步凭据走 DSH credentials 槽位引用),
22
+ * 且文件类分区不进 SecretScanner(与 pluginFiles/skills 同语义)。
23
+ */
24
+ import path from 'node:path';
25
+ import { msgOf } from "../core/messages.js";
26
+ import { sha256Hex } from "../utils/hashing.js";
27
+ import { FileCollectionAdapter } from "./file-collection.js";
28
+ /** self 分区白名单文件(相对 baseDir,即 $DSH_HOME/dsh-config-manager/)。 */
29
+ export const SELF_CONFIG_FILES = [
30
+ 'sync/sync-config.json',
31
+ 'sync/sync-autosync.json',
32
+ 'sync/sync-selection.json',
33
+ 'sync/ui-prefs.json',
34
+ 'market/market-config.json',
35
+ ];
36
+ export class SelfAdapter extends FileCollectionAdapter {
37
+ id = 'self';
38
+ displayName = 'Plugin Self Config';
39
+ defaultIncluded = true;
40
+ portability = 'portable';
41
+ /** 插件自身配置目录(相对 homeDir;宿主按 dataDir 解析注入,缺省 dsh-config-manager) */
42
+ baseDir;
43
+ constructor(baseDir = 'dsh-config-manager') {
44
+ super();
45
+ this.baseDir = baseDir;
46
+ }
47
+ /** 白名单收集:只导出配置类文件(存在才收),不递归(排除快照/历史/缓存/临时产物)。
48
+ * relativePath 产出相对 baseDir 的路径(与 analyzeImport/applyItem 的 path.join(baseDir, ref) 匹配)。 */
49
+ async export(ctx, _options) {
50
+ const files = [];
51
+ const warnings = [];
52
+ for (const rel of SELF_CONFIG_FILES) {
53
+ // ctx.fs.readFile 语义 = 相对 homeDir 的完整路径 → 拼接 baseDir;产出仍为相对 baseDir
54
+ const data = await ctx.fs.readFile(path.join(this.baseDir, rel)).catch(() => null);
55
+ if (data === null)
56
+ continue; // 未创建过的配置文件跳过(如从未配置市场/同步)
57
+ files.push({ relativePath: rel, data, contentHash: sha256Hex(data) });
58
+ }
59
+ if (files.length === 0) {
60
+ warnings.push(msgOf(ctx)('adapter.dirEmpty', { type: this.displayName }));
61
+ }
62
+ return {
63
+ sectionId: this.id,
64
+ data: { version: 1, files },
65
+ counts: { files: files.length },
66
+ warnings,
67
+ };
68
+ }
69
+ }
70
+ //# sourceMappingURL=self.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self.js","sourceRoot":"","sources":["../../src/adapters/self.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,gEAAgE;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,uBAAuB;IACvB,yBAAyB;IACzB,0BAA0B;IAC1B,oBAAoB;IACpB,2BAA2B;CAC5B,CAAC;AAEF,MAAM,OAAO,WAAY,SAAQ,qBAAqB;IAC3C,EAAE,GAAG,MAAe,CAAC;IACrB,WAAW,GAAG,oBAAoB,CAAC;IACnC,eAAe,GAAG,IAAI,CAAC;IACvB,WAAW,GAAG,UAAmB,CAAC;IAC3C,kEAAkE;IACzD,OAAO,CAAS;IAEzB,YAAY,OAAO,GAAG,oBAAoB;QACxC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;iGAC6F;IACpF,KAAK,CAAC,MAAM,CAAC,GAAgB,EAAE,QAAuB;QAC7D,MAAM,KAAK,GAA0B,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACpC,oEAAoE;YACpE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACnF,IAAI,IAAI,KAAK,IAAI;gBAAE,SAAS,CAAC,0BAA0B;YACvD,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,EAAE;YAClB,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE;YAC3B,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;YAC/B,QAAQ;SACT,CAAC;IACJ,CAAC;CACF"}
@@ -210,7 +210,7 @@ export function makeManifest(platform = 'win32') {
210
210
  sections: {
211
211
  settings: false, ui: false, providers: false, plugins: false, mcp: false, prompts: false,
212
212
  skills: false, agentPresets: false, agentInstructions: false, workspaces: false, pluginFiles: false,
213
- credentialsStatus: false, secrets: false, sessions: false,
213
+ credentialsStatus: false, secrets: false, sessions: false, self: false,
214
214
  },
215
215
  security: { containsSecrets: false, encrypted: false, encryption: null },
216
216
  };
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../src/adapters/test-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../src/adapters/test-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAQ5C,MAAM,OAAO,KAAK;IAChB,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACrB,OAAO,CAAS;IACjC,YAAY,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IACO,GAAG,CAAC,CAAS;QACnB,OAAO,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,IAAgB;QAC/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,EAAU;QACjC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAClF,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,KAAK,KAAoC,CAAC;CACjD;AAED,yDAAyD;AACzD,MAAM,eAAgB,SAAQ,GAAkI;IAC7I,UAAU,CAAc;IACzC,YAAY,UAAuB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IACQ,GAAG,CAAC,GAAW,EAAE,KAA4H;QACpJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,WAAW;IACtB,kEAAkE;IAClE,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,qBAAqB;IACrB,EAAE,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,KAAmC;QACnE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,qBAAqB,CAAC,CAAC;QAC5G,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO;YACL,KAAK,EAAE,GAAG,EAAE,KAAK;YACjB,IAAI,EAAE,GAAG,EAAE,IAAI;YACf,QAAQ,EAAE,GAAG,EAAE,QAAQ,IAAI,CAAC;YAC5B,OAAO,EAAE,GAAG,EAAE,OAAO;YACrB,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,EAAE;SAC5B,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,KAAc,EAAE,gBAAyB;QACxE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,qBAAqB,CAAC,CAAC;QAC5G,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,gBAAgB,KAAK,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,aAAa,GAAG,CAAC,QAAQ,QAAQ,gBAAgB,EAAE,CAAC,CAAC;QACtG,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE;YACrB,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO;SAC/G,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,MAAM,CAAE,SAAiB,EAAE,KAAc,EAAE,gBAAyB;QACxE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,qBAAqB,CAAC,CAAC;QAC5G,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,gBAAgB,KAAK,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,aAAa,GAAG,CAAC,QAAQ,QAAQ,gBAAgB,EAAE,CAAC,CAAC;QACtG,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,GAAI,GAAG,EAAE,KAA6C,EAAE,GAAI,KAAiC,EAAE,CAAC;QACjH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7G,CAAC;CACF;AAED,MAAM,OAAO,cAAc;IACzB,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnC,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,EAAE,UAAU,EAAE,CAAC,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACnG,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa,IAAmB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrF,KAAK,CAAC,KAAK,CAAC,GAAW,IAAmB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrE;AAED,MAAM,OAAO,UAAU;IACrB,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC1C,8CAA8C;IAC9C,WAAW,GAAG,KAAK,CAAC;IACpB,yDAAyD;IACzD,QAAQ,CAAqB;IAC7B,KAAK,CAAC,aAAa;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,IAAa;QACtC,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,EAAE,CAAC,CAAC;QAC3F,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IACvB,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC7C,KAAK,CAAC,WAAW,KAAiC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,KAAK,CAAC,WAAW,CAAC,CAAkB,IAAmB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,KAAK,CAAC,YAAY,CAAC,EAAU,IAAmB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,OAAO,QAAQ;IACnB,KAAK,GAAG,IAAI,GAAG,EAA4C,CAAC;IAC5D,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,KAAK,CAAC,iBAAiB,CACrB,KAAa,EACb,OAAmF;QAEnF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;gBAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,gBAAgB;IAC3B,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IACxC,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,QAAkB,EAAE,QAAiC,IAAI,GAAG,EAAE;QACvE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAU;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,QAAgB;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,MAA0B;QACvD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC;CACF;AAED,MAAM,OAAO,eAAe;IAC1B,QAAQ,CAAS;IACjB,IAAI,GAAG,KAAK,CAAC;IACb,OAAO,CAAS;IAChB,UAAU,GAAG,YAAY,CAAC;IAC1B,GAAG,CAAS;IACZ,OAAO,CAAU;IACjB,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;IAC7B,WAAW,GAAG,IAAI,cAAc,EAAE,CAAC;IACnC,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC;IAC3B,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;IAC/B,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC3B,EAAE,CAAQ;IACV,YAAY,QAAgB,EAAE,OAAe,EAAE,OAAgB;QAC7D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,OAAe,EAAE,OAAgB;IAC7E,OAAO,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,YAAY,CAAC,QAAQ,GAAG,OAAO;IAC7C,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,OAAO,EAAE;QAC/D,MAAM,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,QAA0C,EAAE,IAAI,EAAE,KAAK,EAAE;QACvG,UAAU,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC,WAAW,EAAE;QAC9D,QAAQ,EAAE;YACR,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;YACxF,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK;YACnG,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;SACvE;QACD,QAAQ,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;KACzE,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,QAAsC,EACtC,YAAoC,EAAE;IAEtC,OAAO;QACL,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvC,cAAc,EAAE,MAAM,CAAC,QAAQ;QAC/B,MAAM;QACN,QAAQ,EAAE,QAAmC;QAC7C,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,EAAE;QAChB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,EAAE,KAAK;QACV,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
package/lib/client.d.ts CHANGED
@@ -21,7 +21,7 @@ type Platform = 'win32' | 'darwin' | 'linux' | 'freebsd' | 'openbsd' | 'aix' | '
21
21
  * 明确不实现的分区(keybindings/workflows/commands)不在此列;
22
22
  * rules 已由 agentInstructions(~/.dsh/AGENTS.md,dsh-agent-instructions 全局指令)承接。
23
23
  */
24
- type SectionId = 'settings' | 'ui' | 'providers' | 'plugins' | 'mcp' | 'prompts' | 'skills' | 'agentPresets' | 'agentInstructions' | 'workspaces' | 'pluginFiles' | 'credentialsStatus' | 'secrets' | 'sessions';
24
+ type SectionId = 'settings' | 'ui' | 'providers' | 'plugins' | 'mcp' | 'prompts' | 'skills' | 'agentPresets' | 'agentInstructions' | 'workspaces' | 'pluginFiles' | 'credentialsStatus' | 'secrets' | 'sessions' | 'self';
25
25
  /** 加密备份的算法参数(非秘密:salt/iv/authTag 仅用于解密与完整性校验) */
26
26
  interface EncryptionInfo {
27
27
  algorithm: 'aes-256-gcm';
@@ -517,6 +517,16 @@ declare const uiZh: {
517
517
  readonly 'market.detail.sectionsEmpty': "未声明分区";
518
518
  readonly 'market.detail.statusValid': "校验通过";
519
519
  readonly 'market.detail.statusInvalid': "校验未通过";
520
+ readonly 'marketPublish.stepSelect': "选择配置包";
521
+ readonly 'marketPublish.stepValidate': "本地校验";
522
+ readonly 'marketPublish.stepPrepare': "生成条目包";
523
+ readonly 'marketPublish.stepPush': "推送作者仓库";
524
+ readonly 'marketPublish.stepSubmit': "提交收录申请";
525
+ readonly 'marketPublish.errorItemId': "条目 id 仅允许字母数字开头,字符限 . _ -(最长 128)";
526
+ readonly 'marketPublish.errorName': "条目名称不能为空";
527
+ readonly 'marketPublish.repoWhitespace': "仓库地址不能包含空白字符";
528
+ readonly 'marketPublish.repoScheme': "仓库地址必须为 http(s) 链接";
529
+ readonly 'marketPublish.repoUserinfo': "仓库地址不能包含用户名或密码(userinfo);凭据请通过 DSH credentials 提供";
520
530
  };
521
531
  type UiTextKey = keyof typeof uiZh;
522
532
  /** UI 翻译函数:key → 当前语言文案({param} 插值;未知键回退 zh/键名)。 */
@@ -547,13 +557,9 @@ interface UploadResponse {
547
557
  /** zip=普通备份;encrypted=整体加密备份容器(需先 decryptArchive 解锁才能按 ZIP 解析) */
548
558
  containerType: 'zip' | 'encrypted';
549
559
  }
550
- /** decrypt-verify 端点响应:校验加密备份密码是否可解开 secrets.enc(零写入) */
551
- interface DecryptVerifyResponse {
552
- ok: boolean;
553
- /** 该备份是否加密(password 非空时恒 true;用于 UI 双保险) */
554
- encrypted: boolean;
555
- /** 解密成功后将恢复的凭据数(普通备份为 0) */
556
- secretCount: number;
560
+ /** decrypt-archive 端点响应:解锁整体加密容器后返回明文 ZIP 路径 + 解密覆盖的凭据 ref 名(非值) */
561
+ interface DecryptArchiveResponse {
562
+ zipPath: string;
557
563
  /** 解密覆盖的凭据 ref 名(非值);UI 据此从补录阶段剔除已恢复项 */
558
564
  refs: string[];
559
565
  }
@@ -574,6 +580,10 @@ interface DownloadResult {
574
580
  streamed: boolean;
575
581
  bytes: number;
576
582
  }
583
+ /** 下载选项:saveDialog=true 才弹系统保存对话框(需用户手势);缺省自动下载到浏览器下载目录 */
584
+ interface DownloadOptions {
585
+ saveDialog?: boolean;
586
+ }
577
587
  /**
578
588
  * Config Manager 浏览器半的唯一数据入口。
579
589
  * 同时实现 `ExportPort`(export-flow 用)与 `ImportPort`(import-wizard 用)。
@@ -594,22 +604,21 @@ declare class ConfigManagerApi {
594
604
  * 带 AbortController 超时:宿主若卡死,客户端得到明确错误而不是永远停在进度条。 */
595
605
  export(options: ExportOptions): Promise<ExportResponse>;
596
606
  /**
597
- * 把导出的 ZIP 下载到本机。优先 File System Access API 流式落盘
598
- * (不占整文件内存),不可用时回退内存 Blob(dsh-ssh downloadFile 同款策略)。
607
+ * 把导出的 ZIP 下载到本机。
608
+ * - 默认(saveDialog 缺省/false):读取为 Blob 后用 <a download> 触发浏览器
609
+ * 静默下载到「下载」目录,无需用户额外操作(导出完成即可自动调用);
610
+ * - saveDialog: true:优先 File System Access API 流式落盘(不占整文件内存),
611
+ * 用户可在系统保存对话框中选择位置;不可用/取消时回退 Blob 下载。
599
612
  */
600
- download(zipPath: string, onProgress?: (received: number, total: number) => void): Promise<DownloadResult>;
613
+ download(zipPath: string, opts?: DownloadOptions, onProgress?: (received: number, total: number) => void): Promise<DownloadResult>;
601
614
  /** 上传用户选择的 ZIP 到 Host 受控临时目录,返回可引用的 zipPath(dsh-ssh 同款原始字节上传) */
602
615
  upload(file: File): Promise<UploadResponse>;
603
616
  /** ImportPort.analyzeImport:零写入分析(校验/兼容性/差异/路径/秘密检测) */
604
617
  analyzeImport(zipPath: string): Promise<ImportAnalysis>;
605
618
  /** ImportPort.createImportPlan:用用户决策(冲突/路径映射/策略)生成最终计划(Dry Run 零写入) */
606
619
  createImportPlan(zipPath: string, decisions: ImportDecisions): Promise<ImportPlan>;
607
- /** 验证加密备份的解密密码(只读零写入):成功返回将恢复的凭据数;密码错误抛 ConfigManagerApiError */
608
- verifyDecrypt(zipPath: string, password: string): Promise<DecryptVerifyResponse>;
609
- /** ImportPort.decryptArchive:解锁整体加密备份容器 → 返回可被 analyze/plan/execute 引用的明文 ZIP 路径 */
610
- decryptArchive(zipPath: string, password: string): Promise<{
611
- zipPath: string;
612
- }>;
620
+ /** ImportPort.decryptArchive:解锁整体加密备份容器 明文 ZIP 路径 + 解密覆盖的凭据 ref 名 */
621
+ decryptArchive(zipPath: string, password: string): Promise<DecryptArchiveResponse>;
613
622
  /** ImportPort.executeImportPlan:快照→分阶段 apply→validate→commit/rollback */
614
623
  executeImportPlan(zipPath: string, plan: ImportPlan, opts: {
615
624
  confirm: boolean;
@@ -663,14 +672,15 @@ type SyncTransportType = 'git' | 'webdav';
663
672
  /** GET /sync/status 响应:配置/凭据/上次同步的只读事实(无任何 secret 值) */
664
673
  interface SyncStatusResponse {
665
674
  ok: boolean;
666
- /** 是否已保存过仓库/通道配置(sync-config.json) */
675
+ /** 是否已保存过仓库/通道配置(sync-config.json;任一通道配置过即为 true) */
667
676
  configured: boolean;
668
- /** git 通道:上次使用的仓库地址(不含 token,可回显) */
677
+ /** git 通道:已配置的仓库地址(不含 token,可回显;与当前通道无关,配置过即返回) */
669
678
  repoUrl?: string;
670
679
  /** git 通道:DSH credentials 中是否已存在 token(describe 只报状态,值永不返回) */
671
680
  credentialConfigured: boolean;
672
681
  credentialWritable: boolean;
673
- /** webdav 通道:配置状态(url 可回显,username 非敏感;password 值永不返回) */
682
+ /** webdav 通道:配置状态(url 可回显,username 非敏感;password 值永不返回;
683
+ * 与当前通道无关,配置过即返回,供 git ↔ webdav 切换时回填表单) */
674
684
  webdav?: WebDavStatusResponse;
675
685
  /** sync-state.lastSyncAt;'' = 从未同步 */
676
686
  lastSyncAt?: string;
@@ -680,15 +690,24 @@ interface SyncStatusResponse {
680
690
  type: string;
681
691
  ref: string;
682
692
  };
693
+ /** 上次选择的同步通道(磁盘 ui-prefs.json;UI 回填优先于此,localStorage 仅兜底) */
694
+ lastSyncChannel?: 'git' | 'webdav';
683
695
  /** 可同步分区目录(「高级/自定义导出」勾选列表;host adapters 唯一事实源,只含 portable) */
684
696
  syncSections?: SyncSectionInfo[];
685
- /** 当前分区选择(默认/高级模式 + 勾选分区;UI 回填用,自动同步与手动 push 共用) */
697
+ /** 当前分区选择(当前激活通道;UI 回填用,自动同步与手动 push 共用) */
686
698
  syncSelection?: SyncSelectionPayload;
687
- /** 自动同步当前状态(供 UI 顶部开关回填;§3.9) */
699
+ /** 全部通道的分区选择(git/webdav 各自独立;UI 按当前 tab 取对应通道) */
700
+ syncSelectionByChannel?: Record<SyncTransportType, SyncSelectionPayload>;
701
+ /** 自动同步当前状态(当前激活通道;供 UI 顶部开关回填;§3.9) */
688
702
  autosync?: AutosyncStatusResponse;
703
+ /** 全部通道的自动同步状态(git/webdav 各自独立;UI 按当前 tab 取对应通道) */
704
+ autosyncByChannel?: Record<SyncTransportType, AutosyncStatusResponse>;
689
705
  }
690
- /** 同步分区选择(POST /sync/selection 请求体 + status.syncSelection 响应;持久化于 Host)。 */
706
+ /** 同步分区选择(POST /sync/selection 请求体 + status.syncSelection 响应;持久化于 Host)。
707
+ * git/webdav 通道各自独立(transport 缺省 git)。 */
691
708
  interface SyncSelectionPayload {
709
+ /** 目标通道(git/webdav 各自独立的模式与勾选;缺省 git) */
710
+ transport?: SyncTransportType;
692
711
  mode: 'default' | 'advanced';
693
712
  /** 高级模式勾选分区;default 模式可为空数组 */
694
713
  sections: SectionId[];
@@ -872,8 +891,10 @@ interface AutosyncStatusResponse {
872
891
  elapsedMs: number;
873
892
  lastRunHistoryId?: string;
874
893
  }
875
- /** POST /sync/autosync 请求体。 */
894
+ /** POST /sync/autosync 请求体(transport 指定目标通道;git/webdav 各自独立)。 */
876
895
  interface AutosyncUpdatePayload {
896
+ /** 目标通道(git/webdav 各自独立的开关/间隔/状态;缺省 git) */
897
+ transport?: SyncTransportType;
877
898
  enabled: boolean;
878
899
  interval?: AutosyncInterval;
879
900
  startupMinIntervalMs?: number;
@@ -968,9 +989,11 @@ declare class SyncApi {
968
989
  cancel(syncSessionId: string): Promise<{
969
990
  ok: boolean;
970
991
  }>;
971
- /** 自动同步状态(GET /sync/autosync)。 */
972
- autosyncStatus(): Promise<AutosyncStatusResponse>;
973
- /** 自动同步配置更新(POST /sync/autosync)。 */
992
+ /** 自动同步状态(GET /sync/autosync 返回全部通道的 { git, webdav },各自独立)。 */
993
+ autosyncStatusAll(): Promise<Record<SyncTransportType, AutosyncStatusResponse>>;
994
+ /** 自动同步状态(指定通道;从全部通道状态中取)。 */
995
+ autosyncStatus(transport?: SyncTransportType): Promise<AutosyncStatusResponse>;
996
+ /** 自动同步配置更新(POST /sync/autosync;payload.transport 指定目标通道)。 */
974
997
  autosyncUpdate(payload: AutosyncUpdatePayload): Promise<AutosyncStatusResponse>;
975
998
  /** 保存同步分区选择(POST /sync/selection):模式 + 勾选分区持久化到 Host。
976
999
  * 自动同步调度器与手动 push 共用此配置(刷新/重启后仍然生效)。 */
@@ -978,6 +1001,14 @@ declare class SyncApi {
978
1001
  /** 保存同步通道配置(POST /sync/config):url/username/password(git: repoUrl/token)持久化。
979
1002
  * password/token 经 Host 写入 DSH credentials(值永不回传);返回凭据布尔供 UI 刷新徽章。 */
980
1003
  saveConfig(payload: SyncPushPayload): Promise<SyncConfigSaveResponse>;
1004
+ /** 保存插件 UI 偏好(POST /sync/ui-prefs):当前为上次选择的同步通道(ui-prefs.json,
1005
+ * 随 self 分区进导出备份)。纯偏好无 secret;失败由调用方静默降级(localStorage 兜底)。 */
1006
+ saveUiPrefs(payload: {
1007
+ lastSyncChannel?: 'git' | 'webdav';
1008
+ }): Promise<{
1009
+ ok: boolean;
1010
+ lastSyncChannel?: 'git' | 'webdav';
1011
+ }>;
981
1012
  /** 一键回滚:按 restoreId 调用 backup→rollback */
982
1013
  rollback(payload: {
983
1014
  restoreId: string;
@@ -1004,6 +1035,9 @@ interface MarketIndexItem {
1004
1035
  updatedAt?: string;
1005
1036
  /** 内容类别标签(展示用;禁止执行语义) */
1006
1037
  categories?: string[];
1038
+ /** 条目来源仓库 URL(发布者自托管;读取路由依据);缺省 = 市场仓库自身(兼容现状单仓)。
1039
+ * 存在时必须过 validateRepoUrl(拒绝 userinfo / 空白),只读拉取、永不注入凭据。 */
1040
+ repo?: string;
1007
1041
  }
1008
1042
  /** 供应链/来源信息(纯展示,不做身份验证) */
1009
1043
  interface MarketItemProvenance {
@@ -1032,6 +1066,8 @@ interface MarketListItem {
1032
1066
  version?: string;
1033
1067
  updatedAt?: string;
1034
1068
  categories?: string[];
1069
+ /** 条目来源仓库 URL(来自 index 条目;UI 据此显示来源徽章);缺省 = 市场仓库自身 */
1070
+ repo?: string;
1035
1071
  /** 本地缓存状态:cached | fresh | none(UI 徽章) */
1036
1072
  cacheState: 'cached' | 'fresh' | 'none';
1037
1073
  }
@@ -1044,6 +1080,8 @@ interface MarketItemDetail {
1044
1080
  description?: string;
1045
1081
  updatedAt?: string;
1046
1082
  sections: SectionId[];
1083
+ /** 条目来源仓库 URL(本次下载实际读取的仓库,repo ?? 市场 url);展示用 */
1084
+ repo?: string;
1047
1085
  /** 供应链/来源信息(UI 恒展示) */
1048
1086
  provenance?: MarketItemProvenance;
1049
1087
  /** 下载/校验时间 */
@@ -1082,6 +1120,35 @@ interface MarketBrowseResponse {
1082
1120
  ok: boolean;
1083
1121
  items: MarketListItem[];
1084
1122
  }
1123
+ /** POST /market/prepare 请求体:由上传 zip + 用户填写元数据生成市场条目包(发布向导) */
1124
+ interface MarketPreparePayload {
1125
+ /** 受控临时区中的配置 zip 路径(upload 端点返回;必须引用 staged upload) */
1126
+ zipPath: string;
1127
+ itemId: string;
1128
+ name: string;
1129
+ version?: string;
1130
+ description?: string;
1131
+ author?: string;
1132
+ /** 作者托管仓库 URL(可选;非空须过 validateRepoUrl) */
1133
+ repoUrl?: string;
1134
+ categories?: string[];
1135
+ }
1136
+ /** POST /market/prepare 响应:条目包生成结果(manifest 文本 + 校验摘要 + 发布目录) */
1137
+ interface MarketPrepareResponse {
1138
+ ok: boolean;
1139
+ /** 发布目录(受控临时区,含 items/<id>/manifest.json + config.zip;懒 GC 与下载临时区同款) */
1140
+ dir: string;
1141
+ /** 发布目录打包 zip 路径(受控临时区,供 /download 端点下载;懒 GC 清理) */
1142
+ zipPath: string;
1143
+ /** items/<id>/manifest.json 内容(pretty JSON,可直接复制/写入) */
1144
+ manifestText: string;
1145
+ /** config.zip 的 SHA-256(与 manifest.checksums.zip 一致) */
1146
+ sha256: string;
1147
+ /** zip 内启用的分区(与 manifest.sections 一致) */
1148
+ sections: SectionId[];
1149
+ /** 供应链警示(恒生成:发布即公开、未经审核) */
1150
+ warnings: string[];
1151
+ }
1085
1152
  //#endregion
1086
1153
  //#region src/client/market/market-api.d.ts
1087
1154
  /** 配置市场浏览器半数据入口(备份与迁移页第 5 个 tab 的注入业务面) */
@@ -1097,6 +1164,11 @@ declare class MarketApi {
1097
1164
  /** 下载 + 校验单条目(dry-run 预览:拉取 → §6 校验 → analyzeImport → createImportPlan)。
1098
1165
  * 真正落盘由用户对预览确认后走现有 executeImportPlan(confirm:true 安全阀 + 回滚)。 */
1099
1166
  download(itemId: string): Promise<MarketDownloadResult>;
1167
+ /** 发布向导:由「上传 zip + 用户填写元数据」生成市场条目包(L2 manifest + SHA-256 + sections),
1168
+ * 供 UI 展示/复制与引导推送。零写入配置(发布目录在受控临时区);不含任何凭据字段。 */
1169
+ prepare(payload: MarketPreparePayload): Promise<MarketPrepareResponse>;
1170
+ /** 发布包下载 URL(受控临时区 zip;经宿主 /download 端点,无凭据、无写操作) */
1171
+ downloadPublishUrl(zipPath: string): string;
1100
1172
  }
1101
1173
  //#endregion
1102
1174
  //#region src/client/client-types.d.ts
@@ -1127,6 +1199,7 @@ declare const zh$2: {
1127
1199
  readonly 'view.snapshots': "快照恢复";
1128
1200
  readonly 'view.sync': "远程同步";
1129
1201
  readonly 'view.market': "配置市场";
1202
+ readonly 'view.about': "关于";
1130
1203
  readonly 'common.close': "关闭";
1131
1204
  readonly 'common.cancel': "取消";
1132
1205
  readonly 'common.back': "上一步";
@@ -1154,6 +1227,7 @@ declare const zh$2: {
1154
1227
  readonly 'export.run': "开始导出";
1155
1228
  readonly 'export.running': "正在导出…";
1156
1229
  readonly 'export.download': "下载备份文件";
1230
+ readonly 'export.saved': "已保存到下载目录:{name}";
1157
1231
  readonly 'export.selectionWarnings': "以下分区为设备相关数据,跨设备导入时可能不适用:";
1158
1232
  readonly 'export.group.unknown': "其他";
1159
1233
  readonly 'export.included': "已包含";
@@ -1190,19 +1264,12 @@ declare const zh$2: {
1190
1264
  readonly 'import.secrets.optional': "(可选)";
1191
1265
  readonly 'import.secrets.required': "(必需)";
1192
1266
  readonly 'import.decrypt.badge': "加密备份";
1193
- readonly 'import.decrypt.title': "解密备份";
1194
- readonly 'import.decrypt.hint': "此备份包含加密的凭据,必须输入导出时设置的加密密码才能解锁并继续导入。";
1195
1267
  readonly 'import.decryptArchive.title': "解锁加密备份";
1196
- readonly 'import.decryptArchive.hint': "此备份已整体加密(整个文件被密码保护)。输入导出时设置的密码才能解密并继续导入;密码仅本次使用,绝不落盘。";
1268
+ readonly 'import.decryptArchive.hint': "此备份已整体加密(整个文件被密码保护)。输入导出时设置的密码即可解密并继续导入——备份内的加密凭据也会用同一密码自动恢复,全程只需输入这一次密码;密码仅本次使用,绝不落盘。";
1197
1269
  readonly 'import.decryptArchive.passwordPlaceholder': "输入备份加密密码";
1198
1270
  readonly 'import.decryptArchive.unlock': "解锁并继续";
1199
1271
  readonly 'import.decryptArchive.unlocking': "解锁中…";
1200
- readonly 'import.decrypt.passwordPlaceholder': "输入备份加密密码";
1201
- readonly 'import.decrypt.verify': "验证密码";
1202
- readonly 'import.decrypt.verifying': "验证中…";
1203
- readonly 'import.decrypt.verified': "密码正确,解密将恢复 {count} 个凭据";
1204
- readonly 'import.decrypt.verifiedEmpty': "密码正确(该备份没有可恢复的凭据)";
1205
- readonly 'import.decrypt.previewHint': "加密备份:下一步需输入导出时的加密密码才能解锁凭据。";
1272
+ readonly 'import.decrypt.previewHint': "加密备份:凭据已由解锁密码自动恢复,无需再次输入密码。";
1206
1273
  readonly 'import.conflicts.title': "解决冲突";
1207
1274
  readonly 'import.conflicts.hint': "以下配置项在目标 DSH 已存在且与备份不同,请逐项决策。";
1208
1275
  readonly 'import.conflicts.keepCurrent': "保留当前";
@@ -1250,6 +1317,19 @@ declare const zh$2: {
1250
1317
  readonly 'report.needsRestart': "插件 / MCP 变更将在重启 DSH 后生效。";
1251
1318
  readonly 'error.title': "操作失败";
1252
1319
  readonly 'error.hint': "错误消息已自动脱敏,不会泄露任何密钥信息。";
1320
+ readonly 'about.title': "关于 DSH Config Manager";
1321
+ readonly 'about.subtitle': "插件信息、作者与反馈入口";
1322
+ readonly 'about.official': "官方";
1323
+ readonly 'about.version': "版本 {version}";
1324
+ readonly 'about.dshVersion': "DSH {version}";
1325
+ readonly 'about.links': "相关链接";
1326
+ readonly 'about.star': "⭐ 在 GitHub 上点赞";
1327
+ readonly 'about.repo': "GitHub 仓库";
1328
+ readonly 'about.docs': "使用文档";
1329
+ readonly 'about.issues': "反馈问题";
1330
+ readonly 'about.authorLabel': "作者";
1331
+ readonly 'about.loading': "正在获取版本信息…";
1332
+ readonly 'about.retryStatus': "重新获取";
1253
1333
  };
1254
1334
  /** 字典键联合(注册处 compile-time 校验) */
1255
1335
  type ConfigManagerKey = keyof typeof zh$2;
@@ -1278,6 +1358,7 @@ declare const zh$1: {
1278
1358
  readonly 'channel.hint': "选择远程同步通道:Git 私有仓库或 WebDAV 服务器。";
1279
1359
  readonly 'channel.git': "Git 私有仓库";
1280
1360
  readonly 'channel.webdav': "WebDAV 服务器";
1361
+ readonly 'channel.perChannelHint': "GitHub 与 WebDAV 通道的自动同步、同步模式、加密与远端快照各自独立配置。";
1281
1362
  readonly 'webdav.title': "WebDAV 配置";
1282
1363
  readonly 'webdav.url': "服务器地址";
1283
1364
  readonly 'webdav.urlHint': "WebDAV 服务器根地址(https://…)。同步快照与索引存放于该地址的 snapshots/ 子目录下。请勿在地址中包含用户名/密码。";
@@ -1458,6 +1539,8 @@ declare const zh: {
1458
1539
  readonly 'list.cacheCached': "已缓存";
1459
1540
  readonly 'list.cacheFresh': "刚刚拉取";
1460
1541
  readonly 'list.cacheNone': "未缓存";
1542
+ readonly 'list.sourceOfficial': "官方来源";
1543
+ readonly 'list.sourceThirdParty': "第三方来源";
1461
1544
  readonly 'list.download': "查看详情";
1462
1545
  readonly 'detail.title': "条目详情";
1463
1546
  readonly 'detail.downloadedAt': "下载时间:{time}";
@@ -1474,6 +1557,61 @@ declare const zh: {
1474
1557
  readonly 'detail.approval.safe': "可导入";
1475
1558
  readonly 'detail.approval.count': "已批准 {selected}/{total} 分区";
1476
1559
  readonly 'detail.noApproval': "未批准任何分区,无法导入";
1560
+ readonly 'publish.title': "发布到市场";
1561
+ readonly 'publish.subtitle': "把本地导出配置分享到社区:作者自托管公开仓库 + 官方收录引用(方案 B),官方市场只读、零凭据";
1562
+ readonly 'publish.back': "返回市场";
1563
+ readonly 'publish.stepIndicator': "步骤 {current}/{total}:{label}";
1564
+ readonly 'publish.next': "下一步";
1565
+ readonly 'publish.prev': "上一步";
1566
+ readonly 'publish.step.select': "选择配置包";
1567
+ readonly 'publish.step.validate': "本地校验";
1568
+ readonly 'publish.step.prepare': "生成条目包";
1569
+ readonly 'publish.step.push': "推送作者仓库";
1570
+ readonly 'publish.step.submit': "提交收录申请";
1571
+ readonly 'publish.select.hint': "发布内容来自你的导出 zip:先在「导出」tab 生成备份文件,再回到这里选择。市场通道永不携带秘密——包含密钥的备份将被拒绝。";
1572
+ readonly 'publish.select.browse': "选择导出 ZIP…";
1573
+ readonly 'publish.select.reselect': "重新选择";
1574
+ readonly 'publish.select.file': "已选择:{name}";
1575
+ readonly 'publish.select.uploading': "上传中…";
1576
+ readonly 'publish.validate.hint': "本地 dry-run 校验(零写入):确认内容合法且不含密钥,之后才能生成条目包。";
1577
+ readonly 'publish.validate.run': "开始校验";
1578
+ readonly 'publish.validate.running': "校验中…";
1579
+ readonly 'publish.validate.ok': "校验通过:内容合法、不含密钥";
1580
+ readonly 'publish.validate.secrets': "包含密钥:市场通道永不携带秘密,拒绝发布";
1581
+ readonly 'publish.validate.invalid': "内容校验未通过,无法发布";
1582
+ readonly 'publish.validate.retry': "重新校验";
1583
+ readonly 'publish.form.title': "条目元数据";
1584
+ readonly 'publish.form.id': "条目 ID(必需)";
1585
+ readonly 'publish.form.idHint': "字母数字开头,仅 . _ -,最长 128;将作为 items/<id>/ 目录名";
1586
+ readonly 'publish.form.name': "条目名称(必需)";
1587
+ readonly 'publish.form.description': "描述";
1588
+ readonly 'publish.form.author': "作者";
1589
+ readonly 'publish.form.version': "版本";
1590
+ readonly 'publish.form.categories': "类别(逗号分隔)";
1591
+ readonly 'publish.form.repoUrl': "托管仓库 URL(可选)";
1592
+ readonly 'publish.form.repoUrlHint': "作者公开 Git 仓库地址(http(s),不含用户名/密码)。留空表示暂不关联仓库;推送指引与收录引用需要它。";
1593
+ readonly 'publish.form.generate': "生成条目包";
1594
+ readonly 'publish.form.generating': "生成中…";
1595
+ readonly 'publish.prepare.title': "条目包已生成";
1596
+ readonly 'publish.prepare.manifest': "items/<id>/manifest.json";
1597
+ readonly 'publish.prepare.sha256': "SHA-256:{hash}";
1598
+ readonly 'publish.prepare.sections': "包含分区:{sections}";
1599
+ readonly 'publish.prepare.warnings': "发布即公开、未经官方审核;下载方导入前会逐项核对";
1600
+ readonly 'publish.prepare.dirHint': "发布目录已在宿主受控临时区生成({dir}):items/<id>/manifest.json + config.zip";
1601
+ readonly 'publish.prepare.copyManifest': "复制 manifest";
1602
+ readonly 'publish.push.hint': "先下载「发布包」并解压为 dist/,然后在你自己的公开仓库中按序执行以下命令(插件不做任何 git 写操作、不持有凭据):";
1603
+ readonly 'publish.push.commands': "git 命令";
1604
+ readonly 'publish.push.download': "下载发布包";
1605
+ readonly 'publish.push.copy': "复制命令";
1606
+ readonly 'publish.push.repoMissing': "尚未填写托管仓库 URL——请在上一步「生成条目包」中填写,或手动把 items/{id}/ 目录推送到你的公开仓库。";
1607
+ readonly 'publish.submit.hint': "把下面的片段追加到官方市场仓库 index.json 的 items[],然后提 PR。收录由创建者人工审核。";
1608
+ readonly 'publish.submit.snippet': "index.json 追加片段(items[] 内新增一条)";
1609
+ readonly 'publish.submit.copy': "复制片段";
1610
+ readonly 'publish.submit.fork': "提交流程:fork 官方仓库({url})→ 在 index.json 的 items[] 追加上述片段 → 提交 PR。";
1611
+ readonly 'publish.submit.manual': "也可把「条目 ID + 仓库地址」提交到项目 issue,由创建者人工收录。";
1612
+ readonly 'publish.submit.repoMissing': "收录引用需要托管仓库 URL——请先在上一步「生成条目包」中填写。";
1613
+ readonly 'publish.copied': "已复制";
1614
+ readonly 'publish.copyFailed': "复制失败,请手动选择文本复制";
1477
1615
  readonly 'common.cancel': "取消";
1478
1616
  readonly 'common.close': "关闭";
1479
1617
  readonly 'common.retry': "重试";
@@ -1514,6 +1652,12 @@ interface MarketPanelProps {
1514
1652
  t: TranslateNS<'config-manager-market'>;
1515
1653
  }
1516
1654
  //#endregion
1655
+ //#region src/client/about/AboutPanel.d.ts
1656
+ interface AboutPanelProps {
1657
+ api: ConfigManagerApi;
1658
+ t: TranslateNS<'config-manager'>;
1659
+ }
1660
+ //#endregion
1517
1661
  //#region src/client/index.d.ts
1518
1662
  declare module '@deepseek-ai/dsh-client-ui-slots' {
1519
1663
  interface LocaleNamespaceMap {
@@ -1533,7 +1677,7 @@ declare const inject: string[];
1533
1677
  */
1534
1678
  declare function apply(ctx: ClientContext): void;
1535
1679
  //#endregion
1536
- export { type ConfigManagerApiError, type ConfigManagerKey, type ConfigManagerSectionProps, type DownloadResult, type ExportViewProps, type ImportWizardViewProps, type MarketKey, type MarketPanelProps, type ServiceStatus, type SyncKey, type SyncSettingsViewProps, type UploadResponse, apply, inject };
1680
+ export { type AboutPanelProps, type ConfigManagerApiError, type ConfigManagerKey, type ConfigManagerSectionProps, type DownloadResult, type ExportViewProps, type ImportWizardViewProps, type MarketKey, type MarketPanelProps, type ServiceStatus, type SyncKey, type SyncSettingsViewProps, type UploadResponse, apply, inject };
1537
1681
 
1538
1682
  return module.exports;
1539
1683
  }