dsh-config-manager 0.1.34 → 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 (129) 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 +145 -30
  10. package/lib/client.js +2083 -1586
  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 +223 -86
  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 +7 -0
  45. package/lib/sync/sync-config.js +17 -0
  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 +6 -1
  62. package/lib/ui/import-wizard.js +4 -1
  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 +25 -53
  78. package/src/client/api.ts +6 -21
  79. package/src/client/import/ImportWizardView.tsx +22 -81
  80. package/src/client/locales.ts +4 -18
  81. package/src/client/market/MarketPanel.tsx +80 -29
  82. package/src/client/market/PublishView.tsx +388 -0
  83. package/src/client/market/market-api.ts +16 -1
  84. package/src/client/market/market-locales.ts +121 -0
  85. package/src/client/market/market-view.test.ts +34 -1
  86. package/src/client/market/market-view.ts +20 -1
  87. package/src/client/run-store.test.ts +252 -0
  88. package/src/client/run-store.ts +308 -18
  89. package/src/client/snapshots/SnapshotsPanel.tsx +35 -3
  90. package/src/client/sync/SyncSettingsView.tsx +276 -182
  91. package/src/client/sync/sync-api.test.ts +68 -9
  92. package/src/client/sync/sync-api.ts +32 -8
  93. package/src/client/sync/sync-locales.ts +2 -0
  94. package/src/client/sync/sync-view.test.ts +34 -2
  95. package/src/client/sync/sync-view.ts +72 -2
  96. package/src/core/backup.ts +4 -2
  97. package/src/index.ts +222 -86
  98. package/src/market/index-parser.ts +30 -6
  99. package/src/market/market.test.ts +151 -0
  100. package/src/market/prepare.test.ts +131 -0
  101. package/src/market/prepare.ts +142 -0
  102. package/src/market/reader.ts +25 -14
  103. package/src/market/types.ts +40 -0
  104. package/src/market/url.test.ts +25 -0
  105. package/src/market/url.ts +19 -0
  106. package/src/market/view.ts +2 -1
  107. package/src/profiles/profile-manager.ts +1 -1
  108. package/src/schema/config.ts +4 -2
  109. package/src/schema/types.ts +1 -1
  110. package/src/sync/autosync-config.test.ts +68 -14
  111. package/src/sync/autosync-config.ts +92 -41
  112. package/src/sync/autosync-scheduler.test.ts +70 -22
  113. package/src/sync/autosync-scheduler.ts +104 -93
  114. package/src/sync/risk.ts +1 -0
  115. package/src/sync/sync-config.ts +18 -0
  116. package/src/sync/sync-selection.test.ts +54 -17
  117. package/src/sync/sync-selection.ts +73 -30
  118. package/src/sync/transport.test.ts +1 -1
  119. package/src/sync/ui-prefs.test.ts +78 -0
  120. package/src/sync/ui-prefs.ts +94 -0
  121. package/src/ui/export-flow.ts +1 -0
  122. package/src/ui/flow.ts +5 -1
  123. package/src/ui/i18n.ts +21 -0
  124. package/src/ui/import-wizard.test.ts +2 -1
  125. package/src/ui/import-wizard.ts +5 -2
  126. package/src/ui/market-publish.test.ts +219 -0
  127. package/src/ui/market-publish.ts +256 -0
  128. package/src/ui/test-helpers.ts +5 -5
  129. 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":"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;SAC1D;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"}
1
+ {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../src/adapters/test-helpers.ts"],"names":[],"mappings":"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"}
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
  }
@@ -611,12 +617,8 @@ declare class ConfigManagerApi {
611
617
  analyzeImport(zipPath: string): Promise<ImportAnalysis>;
612
618
  /** ImportPort.createImportPlan:用用户决策(冲突/路径映射/策略)生成最终计划(Dry Run 零写入) */
613
619
  createImportPlan(zipPath: string, decisions: ImportDecisions): Promise<ImportPlan>;
614
- /** 验证加密备份的解密密码(只读零写入):成功返回将恢复的凭据数;密码错误抛 ConfigManagerApiError */
615
- verifyDecrypt(zipPath: string, password: string): Promise<DecryptVerifyResponse>;
616
- /** ImportPort.decryptArchive:解锁整体加密备份容器 → 返回可被 analyze/plan/execute 引用的明文 ZIP 路径 */
617
- decryptArchive(zipPath: string, password: string): Promise<{
618
- zipPath: string;
619
- }>;
620
+ /** ImportPort.decryptArchive:解锁整体加密备份容器 明文 ZIP 路径 + 解密覆盖的凭据 ref 名 */
621
+ decryptArchive(zipPath: string, password: string): Promise<DecryptArchiveResponse>;
620
622
  /** ImportPort.executeImportPlan:快照→分阶段 apply→validate→commit/rollback */
621
623
  executeImportPlan(zipPath: string, plan: ImportPlan, opts: {
622
624
  confirm: boolean;
@@ -688,15 +690,24 @@ interface SyncStatusResponse {
688
690
  type: string;
689
691
  ref: string;
690
692
  };
693
+ /** 上次选择的同步通道(磁盘 ui-prefs.json;UI 回填优先于此,localStorage 仅兜底) */
694
+ lastSyncChannel?: 'git' | 'webdav';
691
695
  /** 可同步分区目录(「高级/自定义导出」勾选列表;host adapters 唯一事实源,只含 portable) */
692
696
  syncSections?: SyncSectionInfo[];
693
- /** 当前分区选择(默认/高级模式 + 勾选分区;UI 回填用,自动同步与手动 push 共用) */
697
+ /** 当前分区选择(当前激活通道;UI 回填用,自动同步与手动 push 共用) */
694
698
  syncSelection?: SyncSelectionPayload;
695
- /** 自动同步当前状态(供 UI 顶部开关回填;§3.9) */
699
+ /** 全部通道的分区选择(git/webdav 各自独立;UI 按当前 tab 取对应通道) */
700
+ syncSelectionByChannel?: Record<SyncTransportType, SyncSelectionPayload>;
701
+ /** 自动同步当前状态(当前激活通道;供 UI 顶部开关回填;§3.9) */
696
702
  autosync?: AutosyncStatusResponse;
703
+ /** 全部通道的自动同步状态(git/webdav 各自独立;UI 按当前 tab 取对应通道) */
704
+ autosyncByChannel?: Record<SyncTransportType, AutosyncStatusResponse>;
697
705
  }
698
- /** 同步分区选择(POST /sync/selection 请求体 + status.syncSelection 响应;持久化于 Host)。 */
706
+ /** 同步分区选择(POST /sync/selection 请求体 + status.syncSelection 响应;持久化于 Host)。
707
+ * git/webdav 通道各自独立(transport 缺省 git)。 */
699
708
  interface SyncSelectionPayload {
709
+ /** 目标通道(git/webdav 各自独立的模式与勾选;缺省 git) */
710
+ transport?: SyncTransportType;
700
711
  mode: 'default' | 'advanced';
701
712
  /** 高级模式勾选分区;default 模式可为空数组 */
702
713
  sections: SectionId[];
@@ -880,8 +891,10 @@ interface AutosyncStatusResponse {
880
891
  elapsedMs: number;
881
892
  lastRunHistoryId?: string;
882
893
  }
883
- /** POST /sync/autosync 请求体。 */
894
+ /** POST /sync/autosync 请求体(transport 指定目标通道;git/webdav 各自独立)。 */
884
895
  interface AutosyncUpdatePayload {
896
+ /** 目标通道(git/webdav 各自独立的开关/间隔/状态;缺省 git) */
897
+ transport?: SyncTransportType;
885
898
  enabled: boolean;
886
899
  interval?: AutosyncInterval;
887
900
  startupMinIntervalMs?: number;
@@ -976,9 +989,11 @@ declare class SyncApi {
976
989
  cancel(syncSessionId: string): Promise<{
977
990
  ok: boolean;
978
991
  }>;
979
- /** 自动同步状态(GET /sync/autosync)。 */
980
- autosyncStatus(): Promise<AutosyncStatusResponse>;
981
- /** 自动同步配置更新(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 指定目标通道)。 */
982
997
  autosyncUpdate(payload: AutosyncUpdatePayload): Promise<AutosyncStatusResponse>;
983
998
  /** 保存同步分区选择(POST /sync/selection):模式 + 勾选分区持久化到 Host。
984
999
  * 自动同步调度器与手动 push 共用此配置(刷新/重启后仍然生效)。 */
@@ -986,6 +1001,14 @@ declare class SyncApi {
986
1001
  /** 保存同步通道配置(POST /sync/config):url/username/password(git: repoUrl/token)持久化。
987
1002
  * password/token 经 Host 写入 DSH credentials(值永不回传);返回凭据布尔供 UI 刷新徽章。 */
988
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
+ }>;
989
1012
  /** 一键回滚:按 restoreId 调用 backup→rollback */
990
1013
  rollback(payload: {
991
1014
  restoreId: string;
@@ -1012,6 +1035,9 @@ interface MarketIndexItem {
1012
1035
  updatedAt?: string;
1013
1036
  /** 内容类别标签(展示用;禁止执行语义) */
1014
1037
  categories?: string[];
1038
+ /** 条目来源仓库 URL(发布者自托管;读取路由依据);缺省 = 市场仓库自身(兼容现状单仓)。
1039
+ * 存在时必须过 validateRepoUrl(拒绝 userinfo / 空白),只读拉取、永不注入凭据。 */
1040
+ repo?: string;
1015
1041
  }
1016
1042
  /** 供应链/来源信息(纯展示,不做身份验证) */
1017
1043
  interface MarketItemProvenance {
@@ -1040,6 +1066,8 @@ interface MarketListItem {
1040
1066
  version?: string;
1041
1067
  updatedAt?: string;
1042
1068
  categories?: string[];
1069
+ /** 条目来源仓库 URL(来自 index 条目;UI 据此显示来源徽章);缺省 = 市场仓库自身 */
1070
+ repo?: string;
1043
1071
  /** 本地缓存状态:cached | fresh | none(UI 徽章) */
1044
1072
  cacheState: 'cached' | 'fresh' | 'none';
1045
1073
  }
@@ -1052,6 +1080,8 @@ interface MarketItemDetail {
1052
1080
  description?: string;
1053
1081
  updatedAt?: string;
1054
1082
  sections: SectionId[];
1083
+ /** 条目来源仓库 URL(本次下载实际读取的仓库,repo ?? 市场 url);展示用 */
1084
+ repo?: string;
1055
1085
  /** 供应链/来源信息(UI 恒展示) */
1056
1086
  provenance?: MarketItemProvenance;
1057
1087
  /** 下载/校验时间 */
@@ -1090,6 +1120,35 @@ interface MarketBrowseResponse {
1090
1120
  ok: boolean;
1091
1121
  items: MarketListItem[];
1092
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
+ }
1093
1152
  //#endregion
1094
1153
  //#region src/client/market/market-api.d.ts
1095
1154
  /** 配置市场浏览器半数据入口(备份与迁移页第 5 个 tab 的注入业务面) */
@@ -1105,6 +1164,11 @@ declare class MarketApi {
1105
1164
  /** 下载 + 校验单条目(dry-run 预览:拉取 → §6 校验 → analyzeImport → createImportPlan)。
1106
1165
  * 真正落盘由用户对预览确认后走现有 executeImportPlan(confirm:true 安全阀 + 回滚)。 */
1107
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;
1108
1172
  }
1109
1173
  //#endregion
1110
1174
  //#region src/client/client-types.d.ts
@@ -1200,19 +1264,12 @@ declare const zh$2: {
1200
1264
  readonly 'import.secrets.optional': "(可选)";
1201
1265
  readonly 'import.secrets.required': "(必需)";
1202
1266
  readonly 'import.decrypt.badge': "加密备份";
1203
- readonly 'import.decrypt.title': "解密备份";
1204
- readonly 'import.decrypt.hint': "此备份包含加密的凭据,必须输入导出时设置的加密密码才能解锁并继续导入。";
1205
1267
  readonly 'import.decryptArchive.title': "解锁加密备份";
1206
- readonly 'import.decryptArchive.hint': "此备份已整体加密(整个文件被密码保护)。输入导出时设置的密码才能解密并继续导入;密码仅本次使用,绝不落盘。";
1268
+ readonly 'import.decryptArchive.hint': "此备份已整体加密(整个文件被密码保护)。输入导出时设置的密码即可解密并继续导入——备份内的加密凭据也会用同一密码自动恢复,全程只需输入这一次密码;密码仅本次使用,绝不落盘。";
1207
1269
  readonly 'import.decryptArchive.passwordPlaceholder': "输入备份加密密码";
1208
1270
  readonly 'import.decryptArchive.unlock': "解锁并继续";
1209
1271
  readonly 'import.decryptArchive.unlocking': "解锁中…";
1210
- readonly 'import.decrypt.passwordPlaceholder': "输入备份加密密码";
1211
- readonly 'import.decrypt.verify': "验证密码";
1212
- readonly 'import.decrypt.verifying': "验证中…";
1213
- readonly 'import.decrypt.verified': "密码正确,解密将恢复 {count} 个凭据";
1214
- readonly 'import.decrypt.verifiedEmpty': "密码正确(该备份没有可恢复的凭据)";
1215
- readonly 'import.decrypt.previewHint': "加密备份:下一步需输入导出时的加密密码才能解锁凭据。";
1272
+ readonly 'import.decrypt.previewHint': "加密备份:凭据已由解锁密码自动恢复,无需再次输入密码。";
1216
1273
  readonly 'import.conflicts.title': "解决冲突";
1217
1274
  readonly 'import.conflicts.hint': "以下配置项在目标 DSH 已存在且与备份不同,请逐项决策。";
1218
1275
  readonly 'import.conflicts.keepCurrent': "保留当前";
@@ -1301,6 +1358,7 @@ declare const zh$1: {
1301
1358
  readonly 'channel.hint': "选择远程同步通道:Git 私有仓库或 WebDAV 服务器。";
1302
1359
  readonly 'channel.git': "Git 私有仓库";
1303
1360
  readonly 'channel.webdav': "WebDAV 服务器";
1361
+ readonly 'channel.perChannelHint': "GitHub 与 WebDAV 通道的自动同步、同步模式、加密与远端快照各自独立配置。";
1304
1362
  readonly 'webdav.title': "WebDAV 配置";
1305
1363
  readonly 'webdav.url': "服务器地址";
1306
1364
  readonly 'webdav.urlHint': "WebDAV 服务器根地址(https://…)。同步快照与索引存放于该地址的 snapshots/ 子目录下。请勿在地址中包含用户名/密码。";
@@ -1481,6 +1539,8 @@ declare const zh: {
1481
1539
  readonly 'list.cacheCached': "已缓存";
1482
1540
  readonly 'list.cacheFresh': "刚刚拉取";
1483
1541
  readonly 'list.cacheNone': "未缓存";
1542
+ readonly 'list.sourceOfficial': "官方来源";
1543
+ readonly 'list.sourceThirdParty': "第三方来源";
1484
1544
  readonly 'list.download': "查看详情";
1485
1545
  readonly 'detail.title': "条目详情";
1486
1546
  readonly 'detail.downloadedAt': "下载时间:{time}";
@@ -1497,6 +1557,61 @@ declare const zh: {
1497
1557
  readonly 'detail.approval.safe': "可导入";
1498
1558
  readonly 'detail.approval.count': "已批准 {selected}/{total} 分区";
1499
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': "复制失败,请手动选择文本复制";
1500
1615
  readonly 'common.cancel': "取消";
1501
1616
  readonly 'common.close': "关闭";
1502
1617
  readonly 'common.retry': "重试";