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.
- package/lib/adapters/index.d.ts +6 -0
- package/lib/adapters/index.js +6 -0
- package/lib/adapters/index.js.map +1 -1
- package/lib/adapters/self.d.ts +17 -0
- package/lib/adapters/self.js +70 -0
- package/lib/adapters/self.js.map +1 -0
- package/lib/adapters/test-helpers.js +1 -1
- package/lib/adapters/test-helpers.js.map +1 -1
- package/lib/client.d.ts +145 -30
- package/lib/client.js +2083 -1586
- package/lib/client.js.map +1 -1
- package/lib/core/backup.js +4 -2
- package/lib/core/backup.js.map +1 -1
- package/lib/index.js +223 -86
- package/lib/index.js.map +1 -1
- package/lib/market/index-parser.js +30 -6
- package/lib/market/index-parser.js.map +1 -1
- package/lib/market/prepare.d.ts +35 -0
- package/lib/market/prepare.js +110 -0
- package/lib/market/prepare.js.map +1 -0
- package/lib/market/reader.d.ts +13 -5
- package/lib/market/reader.js +21 -8
- package/lib/market/reader.js.map +1 -1
- package/lib/market/types.d.ts +38 -0
- package/lib/market/url.d.ts +2 -0
- package/lib/market/url.js +20 -0
- package/lib/market/url.js.map +1 -0
- package/lib/market/view.d.ts +1 -1
- package/lib/market/view.js +2 -1
- package/lib/market/view.js.map +1 -1
- package/lib/profiles/profile-manager.js +1 -1
- package/lib/profiles/profile-manager.js.map +1 -1
- package/lib/schema/config.js +4 -2
- package/lib/schema/config.js.map +1 -1
- package/lib/schema/types.d.ts +1 -1
- package/lib/sync/autosync-config.d.ts +11 -6
- package/lib/sync/autosync-config.js +90 -45
- package/lib/sync/autosync-config.js.map +1 -1
- package/lib/sync/autosync-scheduler.d.ts +19 -17
- package/lib/sync/autosync-scheduler.js +101 -89
- package/lib/sync/autosync-scheduler.js.map +1 -1
- package/lib/sync/risk.js +1 -0
- package/lib/sync/risk.js.map +1 -1
- package/lib/sync/sync-config.d.ts +7 -0
- package/lib/sync/sync-config.js +17 -0
- package/lib/sync/sync-config.js.map +1 -1
- package/lib/sync/sync-selection.d.ts +11 -6
- package/lib/sync/sync-selection.js +68 -31
- package/lib/sync/sync-selection.js.map +1 -1
- package/lib/sync/ui-prefs.d.ts +16 -0
- package/lib/sync/ui-prefs.js +83 -0
- package/lib/sync/ui-prefs.js.map +1 -0
- package/lib/ui/export-flow.js +1 -0
- package/lib/ui/export-flow.js.map +1 -1
- package/lib/ui/flow.d.ts +5 -1
- package/lib/ui/flow.js +4 -0
- package/lib/ui/flow.js.map +1 -1
- package/lib/ui/i18n.d.ts +10 -0
- package/lib/ui/i18n.js +21 -0
- package/lib/ui/i18n.js.map +1 -1
- package/lib/ui/import-wizard.d.ts +6 -1
- package/lib/ui/import-wizard.js +4 -1
- package/lib/ui/import-wizard.js.map +1 -1
- package/lib/ui/market-publish.d.ts +129 -0
- package/lib/ui/market-publish.js +168 -0
- package/lib/ui/market-publish.js.map +1 -0
- package/lib/ui/test-helpers.d.ts +1 -0
- package/lib/ui/test-helpers.js +4 -4
- package/lib/ui/test-helpers.js.map +1 -1
- package/lib/ui/types.d.ts +3 -0
- package/lib/ui/types.js.map +1 -1
- package/package.json +1 -1
- package/src/adapters/index.ts +11 -0
- package/src/adapters/self.test.ts +93 -0
- package/src/adapters/self.ts +74 -0
- package/src/adapters/test-helpers.ts +1 -1
- package/src/client/ConfigManagerSection.tsx +25 -53
- package/src/client/api.ts +6 -21
- package/src/client/import/ImportWizardView.tsx +22 -81
- package/src/client/locales.ts +4 -18
- package/src/client/market/MarketPanel.tsx +80 -29
- package/src/client/market/PublishView.tsx +388 -0
- package/src/client/market/market-api.ts +16 -1
- package/src/client/market/market-locales.ts +121 -0
- package/src/client/market/market-view.test.ts +34 -1
- package/src/client/market/market-view.ts +20 -1
- package/src/client/run-store.test.ts +252 -0
- package/src/client/run-store.ts +308 -18
- package/src/client/snapshots/SnapshotsPanel.tsx +35 -3
- package/src/client/sync/SyncSettingsView.tsx +276 -182
- package/src/client/sync/sync-api.test.ts +68 -9
- package/src/client/sync/sync-api.ts +32 -8
- package/src/client/sync/sync-locales.ts +2 -0
- package/src/client/sync/sync-view.test.ts +34 -2
- package/src/client/sync/sync-view.ts +72 -2
- package/src/core/backup.ts +4 -2
- package/src/index.ts +222 -86
- package/src/market/index-parser.ts +30 -6
- package/src/market/market.test.ts +151 -0
- package/src/market/prepare.test.ts +131 -0
- package/src/market/prepare.ts +142 -0
- package/src/market/reader.ts +25 -14
- package/src/market/types.ts +40 -0
- package/src/market/url.test.ts +25 -0
- package/src/market/url.ts +19 -0
- package/src/market/view.ts +2 -1
- package/src/profiles/profile-manager.ts +1 -1
- package/src/schema/config.ts +4 -2
- package/src/schema/types.ts +1 -1
- package/src/sync/autosync-config.test.ts +68 -14
- package/src/sync/autosync-config.ts +92 -41
- package/src/sync/autosync-scheduler.test.ts +70 -22
- package/src/sync/autosync-scheduler.ts +104 -93
- package/src/sync/risk.ts +1 -0
- package/src/sync/sync-config.ts +18 -0
- package/src/sync/sync-selection.test.ts +54 -17
- package/src/sync/sync-selection.ts +73 -30
- package/src/sync/transport.test.ts +1 -1
- package/src/sync/ui-prefs.test.ts +78 -0
- package/src/sync/ui-prefs.ts +94 -0
- package/src/ui/export-flow.ts +1 -0
- package/src/ui/flow.ts +5 -1
- package/src/ui/i18n.ts +21 -0
- package/src/ui/import-wizard.test.ts +2 -1
- package/src/ui/import-wizard.ts +5 -2
- package/src/ui/market-publish.test.ts +219 -0
- package/src/ui/market-publish.ts +256 -0
- package/src/ui/test-helpers.ts +5 -5
- package/src/ui/types.ts +3 -1
package/lib/adapters/index.d.ts
CHANGED
|
@@ -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';
|
package/lib/adapters/index.js
CHANGED
|
@@ -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;
|
|
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":"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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-
|
|
551
|
-
interface
|
|
552
|
-
|
|
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
|
-
/**
|
|
615
|
-
|
|
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
|
-
/**
|
|
697
|
+
/** 当前分区选择(当前激活通道;UI 回填用,自动同步与手动 push 共用) */
|
|
694
698
|
syncSelection?: SyncSelectionPayload;
|
|
695
|
-
/**
|
|
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
|
-
|
|
981
|
-
/**
|
|
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.
|
|
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': "重试";
|