dsh-config-manager 0.1.51 → 0.1.52

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/client.js CHANGED
@@ -3073,130 +3073,130 @@ if (typeof document !== "undefined" && document.querySelector("style[data-tag=\"
3073
3073
  document.head.appendChild(tag);
3074
3074
  }
3075
3075
  var config_manager_module_css_default = {
3076
- "planScroll": "_367UGW_planScroll",
3077
- "progressTrack": "_367UGW_progressTrack",
3078
- "categoryDesc": "_367UGW_categoryDesc",
3079
- "conflictOptions": "_367UGW_conflictOptions",
3080
3076
  "pathNew": "_367UGW_pathNew",
3081
- "pathOld": "_367UGW_pathOld",
3082
- "optionsHeader": "_367UGW_optionsHeader",
3083
- "modeTabs": "_367UGW_modeTabs",
3084
- "snapshotList": "_367UGW_snapshotList",
3085
- "groupLabel": "_367UGW_groupLabel",
3086
- "dialogBodyScroll": "_367UGW_dialogBodyScroll",
3087
- "snapshotRow": "_367UGW_snapshotRow",
3088
- "viewTabs": "_367UGW_viewTabs",
3089
- "empty": "_367UGW_empty",
3090
- "section": "_367UGW_section",
3091
- "pathRow": "_367UGW_pathRow",
3092
- "conflictId": "_367UGW_conflictId",
3093
- "card": "_367UGW_card",
3094
- "conflictItem": "_367UGW_conflictItem",
3095
- "reportScroll": "_367UGW_reportScroll",
3096
- "spinner": "_367UGW_spinner",
3097
- "progressIndeterminate": "_367UGW_progressIndeterminate",
3098
- "modeHint": "_367UGW_modeHint",
3099
- "progressBar": "_367UGW_progressBar",
3100
- "diffScroll": "_367UGW_diffScroll",
3101
- "banner": "_367UGW_banner",
3102
- "conflictList": "_367UGW_conflictList",
3103
- "errorLine": "_367UGW_errorLine",
3104
- "dialogBody": "_367UGW_dialogBody",
3105
- "actionRow": "_367UGW_actionRow",
3106
- "errorList": "_367UGW_errorList",
3107
- "confirmScroll": "_367UGW_confirmScroll",
3108
- "wizardCard": "_367UGW_wizardCard",
3109
- "sectionTitleBlock": "_367UGW_sectionTitleBlock",
3110
- "groupItems": "_367UGW_groupItems",
3111
- "errorItem": "_367UGW_errorItem",
3112
- "spinnerWrap": "_367UGW_spinnerWrap",
3113
- "progressMeta": "_367UGW_progressMeta",
3114
- "input": "_367UGW_input",
3115
- "hiddenFile": "_367UGW_hiddenFile",
3077
+ "pathIssueKind": "_367UGW_pathIssueKind",
3116
3078
  "logScroll": "_367UGW_logScroll",
3079
+ "progressDetail": "_367UGW_progressDetail",
3080
+ "conflictList": "_367UGW_conflictList",
3117
3081
  "backupFileMeta": "_367UGW_backupFileMeta",
3118
- "viewTab": "_367UGW_viewTab",
3119
- "errorAction": "_367UGW_errorAction",
3120
- "logPanel": "_367UGW_logPanel",
3121
- "backupFileList": "_367UGW_backupFileList",
3122
- "dialogHeaderRow": "_367UGW_dialogHeaderRow",
3123
- "sectionTitle": "_367UGW_sectionTitle",
3124
- "pathValue": "_367UGW_pathValue",
3082
+ "sectionHeader": "_367UGW_sectionHeader",
3083
+ "wizardCard": "_367UGW_wizardCard",
3084
+ "reportList": "_367UGW_reportList",
3085
+ "radioLabel": "_367UGW_radioLabel",
3125
3086
  "progressBarDone": "_367UGW_progressBarDone",
3087
+ "sectionTitle": "_367UGW_sectionTitle",
3088
+ "backupFileList": "_367UGW_backupFileList",
3089
+ "logJumpButton": "_367UGW_logJumpButton",
3090
+ "hiddenFile": "_367UGW_hiddenFile",
3126
3091
  "groupList": "_367UGW_groupList",
3127
- "progressDetail": "_367UGW_progressDetail",
3128
- "backupFileName": "_367UGW_backupFileName",
3129
- "errorTitle": "_367UGW_errorTitle",
3092
+ "dshCmIndeterminate": "_367UGW_dshCmIndeterminate",
3093
+ "logLine": "_367UGW_logLine",
3094
+ "dshCmSpin": "_367UGW_dshCmSpin",
3095
+ "snapshotList": "_367UGW_snapshotList",
3096
+ "kindTag": "_367UGW_kindTag",
3097
+ "viewTab": "_367UGW_viewTab",
3098
+ "confirmScroll": "_367UGW_confirmScroll",
3099
+ "aboutLinkRow": "_367UGW_aboutLinkRow",
3100
+ "dialogClose": "_367UGW_dialogClose",
3130
3101
  "fieldLabel": "_367UGW_fieldLabel",
3131
- "conflictHead": "_367UGW_conflictHead",
3102
+ "card": "_367UGW_card",
3103
+ "reportText": "_367UGW_reportText",
3104
+ "backupFileName": "_367UGW_backupFileName",
3105
+ "aboutAuthor": "_367UGW_aboutAuthor",
3106
+ "errorAction": "_367UGW_errorAction",
3107
+ "errorItem": "_367UGW_errorItem",
3108
+ "badgeError": "_367UGW_badgeError",
3109
+ "conflictItem": "_367UGW_conflictItem",
3110
+ "progressPercent": "_367UGW_progressPercent",
3111
+ "progressBadgeCount": "_367UGW_progressBadgeCount",
3132
3112
  "reportFooter": "_367UGW_reportFooter",
3113
+ "groupLabel": "_367UGW_groupLabel",
3114
+ "backupFileRow": "_367UGW_backupFileRow",
3115
+ "dialogMask": "_367UGW_dialogMask",
3116
+ "errorActionLabel": "_367UGW_errorActionLabel",
3117
+ "progressMeta": "_367UGW_progressMeta",
3118
+ "checkboxRow": "_367UGW_checkboxRow",
3119
+ "pathOld": "_367UGW_pathOld",
3120
+ "conflictHead": "_367UGW_conflictHead",
3121
+ "severityError": "_367UGW_severityError",
3122
+ "ghostButton": "_367UGW_ghostButton",
3133
3123
  "hint": "_367UGW_hint",
3134
- "aboutLinkRow": "_367UGW_aboutLinkRow",
3135
- "progressBadgeSection": "_367UGW_progressBadgeSection",
3124
+ "secretsList": "_367UGW_secretsList",
3125
+ "errorFooter": "_367UGW_errorFooter",
3126
+ "pathValue": "_367UGW_pathValue",
3127
+ "sectionBody": "_367UGW_sectionBody",
3128
+ "empty": "_367UGW_empty",
3136
3129
  "badgeWarn": "_367UGW_badgeWarn",
3137
- "aboutAuthor": "_367UGW_aboutAuthor",
3138
- "errorBanner": "_367UGW_errorBanner",
3139
- "select": "_367UGW_select",
3140
- "kindTag": "_367UGW_kindTag",
3141
- "categoryItem": "_367UGW_categoryItem",
3142
3130
  "reportView": "_367UGW_reportView",
3143
- "spinnerLabel": "_367UGW_spinnerLabel",
3144
- "logLine": "_367UGW_logLine",
3145
- "progressPercent": "_367UGW_progressPercent",
3146
- "badge": "_367UGW_badge",
3147
- "reportText": "_367UGW_reportText",
3148
- "dialogWide": "_367UGW_dialogWide",
3149
- "errorReason": "_367UGW_errorReason",
3150
- "formError": "_367UGW_formError",
3151
- "reportList": "_367UGW_reportList",
3152
- "badgeInfo": "_367UGW_badgeInfo",
3153
3131
  "dangerButton": "_367UGW_dangerButton",
3154
- "progressBlock": "_367UGW_progressBlock",
3155
- "severityError": "_367UGW_severityError",
3156
- "dialogClose": "_367UGW_dialogClose",
3157
- "pathMappingList": "_367UGW_pathMappingList",
3158
3132
  "progressLabel": "_367UGW_progressLabel",
3159
- "viewBody": "_367UGW_viewBody",
3160
- "ghostButton": "_367UGW_ghostButton",
3161
- "errorFooter": "_367UGW_errorFooter",
3133
+ "errorReason": "_367UGW_errorReason",
3134
+ "pathMappingList": "_367UGW_pathMappingList",
3135
+ "warnText": "_367UGW_warnText",
3136
+ "viewTabs": "_367UGW_viewTabs",
3137
+ "rowActions": "_367UGW_rowActions",
3138
+ "diffScroll": "_367UGW_diffScroll",
3139
+ "progressIndeterminate": "_367UGW_progressIndeterminate",
3140
+ "progressTrack": "_367UGW_progressTrack",
3141
+ "sectionSubtitle": "_367UGW_sectionSubtitle",
3142
+ "conflictOptions": "_367UGW_conflictOptions",
3143
+ "planScroll": "_367UGW_planScroll",
3144
+ "groupItems": "_367UGW_groupItems",
3145
+ "optionsCard": "_367UGW_optionsCard",
3146
+ "section": "_367UGW_section",
3147
+ "actionRow": "_367UGW_actionRow",
3148
+ "categoryDesc": "_367UGW_categoryDesc",
3149
+ "spinner": "_367UGW_spinner",
3150
+ "modeHint": "_367UGW_modeHint",
3151
+ "badge": "_367UGW_badge",
3152
+ "badgeOk": "_367UGW_badgeOk",
3153
+ "pathRow": "_367UGW_pathRow",
3154
+ "reportScroll": "_367UGW_reportScroll",
3155
+ "groupCard": "_367UGW_groupCard",
3156
+ "groupNote": "_367UGW_groupNote",
3157
+ "sectionTitleBlock": "_367UGW_sectionTitleBlock",
3158
+ "formError": "_367UGW_formError",
3159
+ "warnList": "_367UGW_warnList",
3160
+ "dialogWide": "_367UGW_dialogWide",
3161
+ "pullScroll": "_367UGW_pullScroll",
3162
+ "errorList": "_367UGW_errorList",
3163
+ "spinnerLabel": "_367UGW_spinnerLabel",
3164
+ "primaryButton": "_367UGW_primaryButton",
3165
+ "progressBadgeSection": "_367UGW_progressBadgeSection",
3162
3166
  "dialogHeader": "_367UGW_dialogHeader",
3163
- "secretFields": "_367UGW_secretFields",
3164
- "radioLabel": "_367UGW_radioLabel",
3165
- "logJumpButton": "_367UGW_logJumpButton",
3167
+ "modeTab": "_367UGW_modeTab",
3168
+ "modeTabs": "_367UGW_modeTabs",
3169
+ "select": "_367UGW_select",
3170
+ "errorTitle": "_367UGW_errorTitle",
3171
+ "progressBlock": "_367UGW_progressBlock",
3172
+ "spinnerWrap": "_367UGW_spinnerWrap",
3173
+ "errorLine": "_367UGW_errorLine",
3166
3174
  "statRow": "_367UGW_statRow",
3167
- "groupHeader": "_367UGW_groupHeader",
3168
- "secretsList": "_367UGW_secretsList",
3169
- "checkboxRow": "_367UGW_checkboxRow",
3170
- "pullScroll": "_367UGW_pullScroll",
3171
- "backupFileRow": "_367UGW_backupFileRow",
3172
- "sectionHeader": "_367UGW_sectionHeader",
3173
- "progressBadgeCount": "_367UGW_progressBadgeCount",
3174
- "dshCmSpin": "_367UGW_dshCmSpin",
3175
- "field": "_367UGW_field",
3175
+ "categoryItem": "_367UGW_categoryItem",
3176
+ "categoryName": "_367UGW_categoryName",
3177
+ "progressBar": "_367UGW_progressBar",
3178
+ "dialogBodyScroll": "_367UGW_dialogBodyScroll",
3179
+ "banner": "_367UGW_banner",
3180
+ "optionsHeader": "_367UGW_optionsHeader",
3181
+ "conflictId": "_367UGW_conflictId",
3182
+ "input": "_367UGW_input",
3183
+ "dialogBody": "_367UGW_dialogBody",
3184
+ "badgeInfo": "_367UGW_badgeInfo",
3185
+ "logPanel": "_367UGW_logPanel",
3186
+ "secretFields": "_367UGW_secretFields",
3176
3187
  "rollbackBox": "_367UGW_rollbackBox",
3177
- "sectionBody": "_367UGW_sectionBody",
3178
- "groupNote": "_367UGW_groupNote",
3179
- "optionsCard": "_367UGW_optionsCard",
3188
+ "field": "_367UGW_field",
3189
+ "groupHeader": "_367UGW_groupHeader",
3190
+ "snapshotRow": "_367UGW_snapshotRow",
3180
3191
  "dialogCard": "_367UGW_dialogCard",
3181
- "dshCmIndeterminate": "_367UGW_dshCmIndeterminate",
3182
- "errorActionLabel": "_367UGW_errorActionLabel",
3183
- "groupCard": "_367UGW_groupCard",
3184
- "warnList": "_367UGW_warnList",
3185
- "progressBadge": "_367UGW_progressBadge",
3186
- "warnText": "_367UGW_warnText",
3187
- "logEmpty": "_367UGW_logEmpty",
3188
3192
  "snapshotRowHeader": "_367UGW_snapshotRowHeader",
3189
- "primaryButton": "_367UGW_primaryButton",
3193
+ "logHeader": "_367UGW_logHeader",
3190
3194
  "conflictDetail": "_367UGW_conflictDetail",
3191
- "categoryName": "_367UGW_categoryName",
3192
- "sectionSubtitle": "_367UGW_sectionSubtitle",
3193
- "rowActions": "_367UGW_rowActions",
3194
- "dialogMask": "_367UGW_dialogMask",
3195
- "badgeOk": "_367UGW_badgeOk",
3196
- "modeTab": "_367UGW_modeTab",
3197
- "pathIssueKind": "_367UGW_pathIssueKind",
3198
- "badgeError": "_367UGW_badgeError",
3199
- "logHeader": "_367UGW_logHeader"
3195
+ "logEmpty": "_367UGW_logEmpty",
3196
+ "viewBody": "_367UGW_viewBody",
3197
+ "progressBadge": "_367UGW_progressBadge",
3198
+ "errorBanner": "_367UGW_errorBanner",
3199
+ "dialogHeaderRow": "_367UGW_dialogHeaderRow"
3200
3200
  };
3201
3201
  //#endregion
3202
3202
  //#region src/client/common/ui.tsx
package/lib/index.js CHANGED
@@ -97,7 +97,7 @@ export const name = 'config-manager';
97
97
  /** Services required before the engine can mount (present in every profile). */
98
98
  export const inject = ['settings', 'credentials'];
99
99
  /** Plugin version, kept in sync with package.json ("version"). */
100
- const PLUGIN_VERSION = '0.1.51';
100
+ const PLUGIN_VERSION = '0.1.52';
101
101
  /** Plugin own package name — excluded from its own exported plugins list. */
102
102
  const PLUGIN_NAME = 'dsh-config-manager';
103
103
  /**
@@ -111,10 +111,13 @@ export function validateMarketItem(itemId, manifestRaw, zipBytes) {
111
111
  return { status: 'invalid', errors: [`config.zip 包含禁止分区 ${sectionId}(sessions=历史会话 / pluginFiles=任意文件 / self=本地环境),市场条目禁止携带`], warnings, manifest, internalManifest, sections: [], checksumsOk: true };
112
112
  }
113
113
  if (isFileSection(sectionId)) {
114
- // 文件类分区:以文件形式进入 ZIP,结构校验由 security/safeExtract 在导入期做;
115
- // 这里只需确认前缀目录有内容(非空目录即视为有内容)。
114
+ // 文件类分区:以文件形式进入 ZIP,结构校验由 security/safeExtract 在导入期做。
115
+ // enabled 但 ZIP 无该前缀条目 = 空文件分区(如未安装 skills 时导出)——
116
+ // 合法状态:导入侧 analyzer.extractSections 对空分区收集空 files、零操作零报错,
117
+ // 与 sync 通道对空分区的语义一致(空分区参与 manifest 标记但不产生任何文件)。
118
+ // 仅加 warning 提示,不拒绝;JSON 分区仍严格要求文件存在(有内容才可能 enabled)。
116
119
  if (!archive.names().some((n) => n.startsWith(SECTION_FILE_PREFIXES[sectionId]))) {
117
- return { status: 'invalid', errors: [`config.zip 缺少文件分区 ${sectionId}`], warnings, manifest, internalManifest, sections: [], checksumsOk: true };
120
+ warnings.push(`config.zip 中分区 ${sectionId} 为空(无文件),导入后不产生任何效果`);
118
121
  }
119
122
  continue;
120
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/market/security.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/market/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAmB1E,MAAM,eAAe,GAAoB;IACvC,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;IAChC,kBAAkB,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;IACrC,cAAc,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;IACjC,QAAQ,EAAE,GAAG;CACd,CAAC;AAEF,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,WAAmB,EACnB,QAAoB;IAEpB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAE/D,sCAAsC;IACtC,MAAM,cAAc,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAClJ,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAS,CAAC;IAC1C,IAAI,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,mBAAmB,QAAQ,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACrK,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEzE,0BAA0B;IAC1B,IAAI,GAAG,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACtC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,iBAAiB,GAAG,CAAC,MAAM,SAAS,oBAAoB,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACtL,CAAC;IAED,8CAA8C;IAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,gCAAgC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACzJ,CAAC;IAED,+DAA+D;IAC/D,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACjM,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,+BAA+B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACxJ,CAAC;IACD,IAAI,gBAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,gBAAgB,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACzM,CAAC;IACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,kDAAkD,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACrK,CAAC;IAED,qDAAqD;IACrD,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAA2B,CAAC;YAC1F,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;YAC9C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnC,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,cAAc;oBAAE,SAAS;gBAChE,IAAI,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7C,CAAC;gBAAC,MAAM,CAAC;oBACP,iBAAiB;gBACnB,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/C,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YAClM,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACtM,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAA2B,EAAE,CAAC;QACvG,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,iFAAiF;QACjF,4FAA4F;QAC5F,IAAI,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,qBAAqB,SAAS,yDAAyD,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACzM,CAAC;QACD,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,sDAAsD;YACtD,kDAAkD;YAClD,0DAA0D;YAC1D,iDAAiD;YACjD,sDAAsD;YACtD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,SAAS,CAAE,CAAC,CAAC,EAAE,CAAC;gBAClF,QAAQ,CAAC,IAAI,CAAC,kBAAkB,SAAS,qBAAqB,CAAC,CAAC;YAClE,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS;QACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,qBAAqB,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC/J,CAAC;QACD,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,SAAS,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC/L,CAAC;QACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAChE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,SAAS,UAAU,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACxL,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAA4B;SACrF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACrB,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,0CAA0C,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC5J,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACpH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAc;IACxD,OAAO;QACL,MAAM,MAAM,yBAAyB;QACrC,qBAAqB;KACtB,CAAC;AACJ,CAAC"}
@@ -23,10 +23,11 @@ import os from 'node:os';
23
23
  import path from 'node:path';
24
24
  import { promisify } from 'node:util';
25
25
  import { createSnapshotFs, joinFs } from "../fs.js";
26
- import { readSnapshotFromDir, SNAPSHOT_MANIFEST_FILE, writeSnapshotToDir } from "../layout.js";
26
+ import { readSnapshotFromDir, SNAPSHOT_KEEP_CONTENT, SNAPSHOT_KEEP_FILE, SNAPSHOT_MANIFEST_FILE, writeSnapshotToDir } from "../layout.js";
27
27
  import { deserializeSnapshot, serializeSnapshot } from "../snapshot-json.js";
28
28
  import { computeSnapshotMeta, isEncryptedSections } from "../transport.js";
29
29
  import { parseJsonSafe } from "../../utils/json.js";
30
+ import { SECTION_FILE_PREFIXES } from "../../schema/config.js";
30
31
  import { zhMsg } from "../../core/messages.js";
31
32
  const execFileAsync = promisify(execFile);
32
33
  export class GitTransportError extends Error {
@@ -175,6 +176,17 @@ export class GitTransport {
175
176
  if (await fsx.exists(dir))
176
177
  await fsx.remove(dir); // 覆盖语义:先清旧目录,避免残留旧文件
177
178
  await writeSnapshotToDir(snapshot, dir, fsx);
179
+ // git 不跟踪空目录:为空文件类分区目录写占位文件,保证远端保留目录。
180
+ // 占位文件不参与 manifest.sectionHashes(基于传入数据计算);读回时按名+内容过滤。
181
+ // 否则空分区(如未安装 skills)上传后目录在远端丢失,B 机全新 clone 下载即失败。
182
+ const plain = snapshot.sections;
183
+ for (const [sid, prefix] of Object.entries(SECTION_FILE_PREFIXES)) {
184
+ const data = plain[sid];
185
+ if (data === undefined || data.files.length > 0)
186
+ continue;
187
+ // joinFs 只接受两个参数,占位路径拼进 prefix 一起传
188
+ await fsx.writeFile(joinFs(dir, `${prefix}${SNAPSHOT_KEEP_FILE}`), new TextEncoder().encode(SNAPSHOT_KEEP_CONTENT));
189
+ }
178
190
  // 同 id 旧密文单文件残留 → 一并清理(形态切换不残留)
179
191
  await fsx.remove(this.encryptedSnapshotFile(snapshot.id));
180
192
  rel = `${SNAPSHOTS_REL}/${snapshot.id}`;
@@ -195,8 +207,10 @@ export class GitTransport {
195
207
  await this.pullFromRemote();
196
208
  const fsx = createSnapshotFs();
197
209
  // 优先散文件目录(明文布局);其次密文单文件(加密布局)
210
+ // missingFileDir='empty':git 不跟踪空目录 → 目录缺失 = 空文件分区(非损坏;
211
+ // 提交原子性保证非空目录不会缺失),兼容旧版插件上传的无占位快照
198
212
  if (await fsx.isDir(this.snapshotDir(id))) {
199
- return readSnapshotFromDir(this.snapshotDir(id));
213
+ return readSnapshotFromDir(this.snapshotDir(id), fsx, { missingFileDir: 'empty' });
200
214
  }
201
215
  const encFile = this.encryptedSnapshotFile(id);
202
216
  if (await fsx.exists(encFile)) {
@@ -1 +1 @@
1
- {"version":3,"file":"git-transport.js","sourceRoot":"","sources":["../../../src/sync/git/git-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-transport.js","sourceRoot":"","sources":["../../../src/sync/git/git-transport.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,15 @@ import type { SectionId } from '../schema/types.ts';
2
2
  import type { SnapshotFs } from './fs.ts';
3
3
  import type { SyncSnapshot } from './transport.ts';
4
4
  export declare const SNAPSHOT_MANIFEST_FILE = "manifest.json";
5
+ /**
6
+ * 空文件类分区的 git 占位文件(git 不跟踪空目录):
7
+ * 上传方(GitTransport.upload)给 files 为空的文件类分区目录写入本占位文件,
8
+ * 保证远端仓库保留该目录;读回时仅当「文件名 + 内容」同时匹配才过滤,
9
+ * 避免吞掉用户真实同名文件。占位文件不参与 sectionHashes(基于传入数据计算)。
10
+ * 注意:占位内容不得含换行 —— Windows core.autocrlf 会把 LF 转 CRLF,内容校验会失败。
11
+ */
12
+ export declare const SNAPSHOT_KEEP_FILE = ".gitkeep";
13
+ export declare const SNAPSHOT_KEEP_CONTENT = "DSH Config Manager sync placeholder (keep empty section dir)";
5
14
  /** 快照根目录下的 manifest.json 结构 */
6
15
  export interface SnapshotDirManifest {
7
16
  id: string;
@@ -24,6 +33,11 @@ export declare function listSnapshotFiles(fsx: SnapshotFs, dir: string): Promise
24
33
  export declare function writeSnapshotToDir(snapshot: SyncSnapshot, dir: string, fsx?: SnapshotFs): Promise<SnapshotDirManifest>;
25
34
  /**
26
35
  * 从散文件目录读回快照。
27
- * manifest 声明的分区必须可解析:JSON 分区文件缺失 / 文件分区目录缺失 → 抛错(不静默降级)。
36
+ * manifest 声明的分区必须可解析:JSON 分区文件缺失 / 文件分区目录缺失 → 抛错(不静默降级),
37
+ * 但 opts.missingFileDir='empty' 时文件分区目录缺失降级为空分区
38
+ * (git 通道专用:git 不跟踪空目录,目录缺失 = 空文件分区;提交原子性保证非空目录不会缺失)。
39
+ * 读回时过滤 git 占位文件(SNAPSHOT_KEEP_FILE),使 files 与上传方数据一致。
28
40
  */
29
- export declare function readSnapshotFromDir(dir: string, fsx?: SnapshotFs): Promise<SyncSnapshot>;
41
+ export declare function readSnapshotFromDir(dir: string, fsx?: SnapshotFs, opts?: {
42
+ missingFileDir?: 'throw' | 'empty';
43
+ }): Promise<SyncSnapshot>;
@@ -12,6 +12,27 @@ import { createSnapshotFs, joinFs } from "./fs.js";
12
12
  import { hashSection } from "./sync-state.js";
13
13
  import { isEncryptedSections } from "./transport.js";
14
14
  export const SNAPSHOT_MANIFEST_FILE = 'manifest.json';
15
+ /**
16
+ * 空文件类分区的 git 占位文件(git 不跟踪空目录):
17
+ * 上传方(GitTransport.upload)给 files 为空的文件类分区目录写入本占位文件,
18
+ * 保证远端仓库保留该目录;读回时仅当「文件名 + 内容」同时匹配才过滤,
19
+ * 避免吞掉用户真实同名文件。占位文件不参与 sectionHashes(基于传入数据计算)。
20
+ * 注意:占位内容不得含换行 —— Windows core.autocrlf 会把 LF 转 CRLF,内容校验会失败。
21
+ */
22
+ export const SNAPSHOT_KEEP_FILE = '.gitkeep';
23
+ export const SNAPSHOT_KEEP_CONTENT = 'DSH Config Manager sync placeholder (keep empty section dir)';
24
+ const SNAPSHOT_KEEP_BYTES = new TextEncoder().encode(SNAPSHOT_KEEP_CONTENT);
25
+ function isKeepFile(rel, data) {
26
+ if (rel !== SNAPSHOT_KEEP_FILE)
27
+ return false;
28
+ if (data.length !== SNAPSHOT_KEEP_BYTES.length)
29
+ return false;
30
+ for (let i = 0; i < data.length; i++) {
31
+ if (data[i] !== SNAPSHOT_KEEP_BYTES[i])
32
+ return false;
33
+ }
34
+ return true;
35
+ }
15
36
  /** 布局支持的分区 = SECTION_JSON_PATHS ∪ SECTION_FILE_PREFIXES(secrets 等不在内) */
16
37
  const LAYOUT_SECTION_IDS = [
17
38
  ...Object.keys(SECTION_JSON_PATHS),
@@ -115,9 +136,12 @@ export async function writeSnapshotToDir(snapshot, dir, fsx = createSnapshotFs()
115
136
  }
116
137
  /**
117
138
  * 从散文件目录读回快照。
118
- * manifest 声明的分区必须可解析:JSON 分区文件缺失 / 文件分区目录缺失 → 抛错(不静默降级)。
139
+ * manifest 声明的分区必须可解析:JSON 分区文件缺失 / 文件分区目录缺失 → 抛错(不静默降级),
140
+ * 但 opts.missingFileDir='empty' 时文件分区目录缺失降级为空分区
141
+ * (git 通道专用:git 不跟踪空目录,目录缺失 = 空文件分区;提交原子性保证非空目录不会缺失)。
142
+ * 读回时过滤 git 占位文件(SNAPSHOT_KEEP_FILE),使 files 与上传方数据一致。
119
143
  */
120
- export async function readSnapshotFromDir(dir, fsx = createSnapshotFs()) {
144
+ export async function readSnapshotFromDir(dir, fsx = createSnapshotFs(), opts = {}) {
121
145
  const manifestAbs = joinFs(dir, SNAPSHOT_MANIFEST_FILE);
122
146
  if (!(await fsx.exists(manifestAbs))) {
123
147
  throw new Error(`快照目录缺少 ${SNAPSHOT_MANIFEST_FILE}: ${dir}`);
@@ -156,12 +180,20 @@ export async function readSnapshotFromDir(dir, fsx = createSnapshotFs()) {
156
180
  continue;
157
181
  const baseAbs = joinFs(dir, prefix);
158
182
  if (!(await fsx.isDir(baseAbs))) {
183
+ if (opts.missingFileDir === 'empty') {
184
+ // git 通道降级:目录缺失 = 空文件分区(git 不跟踪空目录,详见函数注释)
185
+ sections[sid] = { version: 1, files: [] };
186
+ continue;
187
+ }
159
188
  throw new Error(`快照缺少文件分区目录 ${prefix}(${sid})`);
160
189
  }
161
190
  const rels = await listSnapshotFiles(fsx, baseAbs);
162
191
  const files = [];
163
192
  for (const rel of rels) {
164
193
  const data = await fsx.readFile(joinFs(baseAbs, rel));
194
+ // 过滤 git 占位文件(名 + 内容同时匹配才过滤,避免吞用户真实同名文件)
195
+ if (isKeepFile(rel, data))
196
+ continue;
165
197
  files.push({ relativePath: rel, data, contentHash: sha256Hex(data) });
166
198
  }
167
199
  sections[sid] = { version: 1, files };
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/sync/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/sync/layout.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-config-manager",
3
- "version": "0.1.51",
3
+ "version": "0.1.52",
4
4
  "license": "MIT",
5
5
  "description": "Backup, restore, export, import, migrate and sync your DeepSeek Harness (DSH) configuration: settings, plugins, MCP servers, skills, agent presets and workspaces. One-click migration to another machine. DSH 配置一键备份、恢复、导出、导入、迁移与同步插件。",
6
6
  "keywords": [
package/src/index.ts CHANGED
@@ -142,7 +142,7 @@ export const name = 'config-manager'
142
142
  export const inject = ['settings', 'credentials']
143
143
 
144
144
  /** Plugin version, kept in sync with package.json ("version"). */
145
- const PLUGIN_VERSION = '0.1.51'
145
+ const PLUGIN_VERSION = '0.1.52'
146
146
 
147
147
  /** Plugin own package name — excluded from its own exported plugins list. */
148
148
  const PLUGIN_NAME = 'dsh-config-manager'
@@ -183,6 +183,24 @@ test('校验:sections 无交集拒绝', () => {
183
183
  assert.match(res.errors.join(), /无交集/);
184
184
  });
185
185
 
186
+ test('校验:文件分区 enabled 但 ZIP 无前缀条目 → valid(空分区合法,仅 warning)', () => {
187
+ // 模拟空 skills 分区导出:内部 manifest 声明 skills=true,但 ZIP 无任何 custom/skills/ 条目
188
+ const settingsJson = JSON.stringify({ version: 1, namespaces: {} });
189
+ const entries: ZipWriteEntry[] = [{ name: 'config/settings.json', data: Buffer.from(settingsJson) }];
190
+ entries.push({ name: 'integrity/checksums.json', data: Buffer.from(JSON.stringify({ 'config/settings.json': sha256Hex(Buffer.from(settingsJson)) })) });
191
+ const manifest = {
192
+ schemaVersion: 1, exporter: { name: 'X', version: '1' },
193
+ source: { dshVersion: '1', platform: 'linux', arch: 'x64' },
194
+ exportedAt: new Date().toISOString(), sections: { settings: true, skills: true },
195
+ security: { containsSecrets: false, encrypted: false, encryption: null },
196
+ };
197
+ entries.push({ name: 'manifest.json', data: Buffer.from(JSON.stringify(manifest)) });
198
+ const zip = Buffer.from(zipToBuffer(entries));
199
+ const res = validateMarketItem('foo', makeItemManifest('foo', zip, ['settings', 'skills']), zip);
200
+ assert.equal(res.status, 'valid', '空文件分区不应拒绝条目(导入侧对空分区零操作)');
201
+ assert.ok(res.warnings.some((w) => w.includes('skills') && w.includes('为空')), `应提示空分区 warning: ${res.warnings.join(' | ')}`);
202
+ });
203
+
186
204
  test('校验:内部 manifest 无效拒绝', () => {
187
205
  // zipToBuffer 自身已拒绝路径穿越条目,故此处验证 validateMarketItem 对「内容级恶意
188
206
  // 载荷」的防线:结构合法但内部 manifest 无效的 zip 必须被拒(parseManifest → parseZipHardened 委托)。
@@ -139,10 +139,13 @@ export function validateMarketItem(
139
139
  return { status: 'invalid', errors: [`config.zip 包含禁止分区 ${sectionId}(sessions=历史会话 / pluginFiles=任意文件 / self=本地环境),市场条目禁止携带`], warnings, manifest, internalManifest, sections: [], checksumsOk: true };
140
140
  }
141
141
  if (isFileSection(sectionId)) {
142
- // 文件类分区:以文件形式进入 ZIP,结构校验由 security/safeExtract 在导入期做;
143
- // 这里只需确认前缀目录有内容(非空目录即视为有内容)。
142
+ // 文件类分区:以文件形式进入 ZIP,结构校验由 security/safeExtract 在导入期做。
143
+ // enabled 但 ZIP 无该前缀条目 = 空文件分区(如未安装 skills 时导出)——
144
+ // 合法状态:导入侧 analyzer.extractSections 对空分区收集空 files、零操作零报错,
145
+ // 与 sync 通道对空分区的语义一致(空分区参与 manifest 标记但不产生任何文件)。
146
+ // 仅加 warning 提示,不拒绝;JSON 分区仍严格要求文件存在(有内容才可能 enabled)。
144
147
  if (!archive.names().some((n) => n.startsWith(SECTION_FILE_PREFIXES[sectionId]!))) {
145
- return { status: 'invalid', errors: [`config.zip 缺少文件分区 ${sectionId}`], warnings, manifest, internalManifest, sections: [], checksumsOk: true };
148
+ warnings.push(`config.zip 中分区 ${sectionId} 为空(无文件),导入后不产生任何效果`);
146
149
  }
147
150
  continue;
148
151
  }
@@ -607,6 +607,32 @@ test('集成:加密快照端到端(真实 git + 本地 bare repo)—— up
607
607
  await transport.delete('snap-enc'); // 不存在视为成功
608
608
  });
609
609
 
610
+ test('集成:空文件类分区(skills files:[])upload 后,全新 clone 的 B 机 download 应读回空分区(git 不跟踪空目录)', async (t) => {
611
+ const bare = await makeBareRepo(t);
612
+ // 机器 A:上传含空 skills 分区(~/.dsh/skills 不存在 → files: [])的快照
613
+ const workDirA = await makeTempDir(t);
614
+ const transportA = new GitTransport({ repoUrl: bare, workDir: workDirA, credentials: { getToken: async () => TEST_TOKEN } });
615
+ const snap = sampleSnapshot();
616
+ snap.sections.skills = { version: 1, files: [] } as unknown as FilesSection;
617
+ snap.manifest = { ...snap.manifest, sectionIds: ['settings', 'providers', 'skills'] };
618
+ await transportA.upload(snap);
619
+
620
+ // 机器 B:全新 workDir(重新 clone 远端),模拟另一台机器的首次拉取
621
+ const workDirB = await makeTempDir(t);
622
+ const transportB = new GitTransport({ repoUrl: bare, workDir: workDirB, credentials: { getToken: async () => TEST_TOKEN } });
623
+
624
+ // 复现前提:git 不跟踪空目录 → B 端工作副本里不存在 custom/skills/ 目录
625
+ const skillsAbsB = path.join(workDirB, 'snapshots', 'snap-001', 'custom', 'skills');
626
+ const skillsStat = await fs.stat(skillsAbsB).catch(() => null);
627
+ assert.equal(skillsStat, null, 'git 应不跟踪空目录:B 端工作副本不应存在 custom/skills/');
628
+
629
+ // 修复后:download 应降级读回空分区,而不是抛「快照缺少文件分区目录」
630
+ const roundtrip = await transportB.download('snap-001');
631
+ const skills = (roundtrip.sections as Partial<Record<SectionId, SectionData>>)['skills'];
632
+ assert.deepEqual(skills, { version: 1, files: [] });
633
+ assert.deepEqual(roundtrip.manifest, snap.manifest);
634
+ });
635
+
610
636
  // ─── t5:远端快照裁剪的 git 契约(upload 先 push,再 delete 删旧,各自独立 commit+push) ───
611
637
 
612
638
  test('集成:裁剪删除旧快照 → 每次 delete 独立 commit+push,add 提交先于 delete 提交', async (t) => {
@@ -25,12 +25,14 @@ import { promisify } from 'node:util';
25
25
 
26
26
  import { createSnapshotFs, joinFs } from '../fs.ts';
27
27
  import type { SnapshotFs } from '../fs.ts';
28
- import { readSnapshotFromDir, SNAPSHOT_MANIFEST_FILE, writeSnapshotToDir } from '../layout.ts';
28
+ import { readSnapshotFromDir, SNAPSHOT_KEEP_CONTENT, SNAPSHOT_KEEP_FILE, SNAPSHOT_MANIFEST_FILE, writeSnapshotToDir } from '../layout.ts';
29
29
  import type { SnapshotDirManifest } from '../layout.ts';
30
30
  import { deserializeSnapshot, serializeSnapshot } from '../snapshot-json.ts';
31
31
  import { computeSnapshotMeta, isEncryptedSections } from '../transport.ts';
32
32
  import type { SyncSnapshot, SyncSnapshotMeta, SyncTransport } from '../transport.ts';
33
33
  import { parseJsonSafe } from '../../utils/json.ts';
34
+ import { SECTION_FILE_PREFIXES } from '../../schema/config.ts';
35
+ import type { FilesSection, SectionData, SectionId } from '../../schema/types.ts';
34
36
  import { zhMsg } from '../../core/messages.ts';
35
37
  import type { MsgFunc } from '../../core/messages.ts';
36
38
 
@@ -228,6 +230,16 @@ export class GitTransport implements SyncTransport {
228
230
  const dir = this.snapshotDir(snapshot.id);
229
231
  if (await fsx.exists(dir)) await fsx.remove(dir); // 覆盖语义:先清旧目录,避免残留旧文件
230
232
  await writeSnapshotToDir(snapshot, dir, fsx);
233
+ // git 不跟踪空目录:为空文件类分区目录写占位文件,保证远端保留目录。
234
+ // 占位文件不参与 manifest.sectionHashes(基于传入数据计算);读回时按名+内容过滤。
235
+ // 否则空分区(如未安装 skills)上传后目录在远端丢失,B 机全新 clone 下载即失败。
236
+ const plain = snapshot.sections as Partial<Record<SectionId, SectionData>>;
237
+ for (const [sid, prefix] of Object.entries(SECTION_FILE_PREFIXES)) {
238
+ const data = plain[sid as SectionId] as FilesSection | undefined;
239
+ if (data === undefined || data.files.length > 0) continue;
240
+ // joinFs 只接受两个参数,占位路径拼进 prefix 一起传
241
+ await fsx.writeFile(joinFs(dir, `${prefix}${SNAPSHOT_KEEP_FILE}`), new TextEncoder().encode(SNAPSHOT_KEEP_CONTENT));
242
+ }
231
243
  // 同 id 旧密文单文件残留 → 一并清理(形态切换不残留)
232
244
  await fsx.remove(this.encryptedSnapshotFile(snapshot.id));
233
245
  rel = `${SNAPSHOTS_REL}/${snapshot.id}`;
@@ -249,8 +261,10 @@ export class GitTransport implements SyncTransport {
249
261
  await this.pullFromRemote();
250
262
  const fsx = createSnapshotFs();
251
263
  // 优先散文件目录(明文布局);其次密文单文件(加密布局)
264
+ // missingFileDir='empty':git 不跟踪空目录 → 目录缺失 = 空文件分区(非损坏;
265
+ // 提交原子性保证非空目录不会缺失),兼容旧版插件上传的无占位快照
252
266
  if (await fsx.isDir(this.snapshotDir(id))) {
253
- return readSnapshotFromDir(this.snapshotDir(id));
267
+ return readSnapshotFromDir(this.snapshotDir(id), fsx, { missingFileDir: 'empty' });
254
268
  }
255
269
  const encFile = this.encryptedSnapshotFile(id);
256
270
  if (await fsx.exists(encFile)) {
@@ -11,7 +11,7 @@ import fs from 'node:fs/promises';
11
11
  import os from 'node:os';
12
12
  import path from 'node:path';
13
13
 
14
- import { readSnapshotFromDir, writeSnapshotToDir, SNAPSHOT_MANIFEST_FILE, isSafeRelPath, listSnapshotFiles } from './layout.ts';
14
+ import { readSnapshotFromDir, writeSnapshotToDir, SNAPSHOT_KEEP_CONTENT, SNAPSHOT_KEEP_FILE, SNAPSHOT_MANIFEST_FILE, isSafeRelPath, listSnapshotFiles } from './layout.ts';
15
15
  import { createSnapshotFs } from './fs.ts';
16
16
  import { hashSection } from './sync-state.ts';
17
17
  import type { SnapshotFs } from './fs.ts';
@@ -169,6 +169,44 @@ test('readSnapshotFromDir: manifest 声明了分区但文件缺失 → 拒绝(
169
169
  }
170
170
  });
171
171
 
172
+ test('readSnapshotFromDir: 过滤 git 占位文件(名+内容匹配),保留真实同名文件', async () => {
173
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), 'dsh-sync-layout-keep-'));
174
+ try {
175
+ await writeSnapshotToDir(sampleSnapshot(), tmp);
176
+ // 模拟 GitTransport.upload 的空分区占位:custom/skills/.gitkeep(占位内容)
177
+ await fs.writeFile(path.join(tmp, 'custom', 'skills', SNAPSHOT_KEEP_FILE), SNAPSHOT_KEEP_CONTENT, 'utf8');
178
+ // 真实同名文件(非占位内容)不得被吞:plugin-files/.gitkeep
179
+ await fs.writeFile(path.join(tmp, 'plugin-files', SNAPSHOT_KEEP_FILE), 'real user file\n', 'utf8');
180
+
181
+ const back = (await readSnapshotFromDir(tmp)) as unknown as PlainSnapshot;
182
+ const skills = back.sections['skills'] as { files: { relativePath: string; data: Uint8Array }[] };
183
+ assert.deepEqual(skills.files.map((f) => f.relativePath), ['coding.md', 'nested/tool.md'], '占位文件应从 files 中过滤');
184
+ const pluginFiles = back.sections['pluginFiles'] as { files: { relativePath: string; data: Uint8Array }[] };
185
+ assert.deepEqual(pluginFiles.files.map((f) => f.relativePath), [SNAPSHOT_KEEP_FILE, 'dsh-ssh/main.js'], '真实 .gitkeep(非占位内容)应保留');
186
+ } finally {
187
+ await fs.rm(tmp, { recursive: true, force: true });
188
+ }
189
+ });
190
+
191
+ test('readSnapshotFromDir: missingFileDir=empty → 文件分区目录缺失降级为空分区;默认仍抛错', async () => {
192
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), 'dsh-sync-layout-empty-dir-'));
193
+ try {
194
+ const snap = sampleSnapshot();
195
+ snap.sections['skills'] = { version: 1, files: [] };
196
+ await writeSnapshotToDir(snap, tmp);
197
+ // 模拟 git 远端:空目录未被跟踪 → 目录不存在(manifest 仍声明 skills)
198
+ await fs.rm(path.join(tmp, 'custom', 'skills'), { recursive: true, force: true });
199
+
200
+ // 默认(throw):目录缺失 → 抛错(不静默降级)
201
+ await assert.rejects(() => readSnapshotFromDir(tmp), /快照缺少文件分区目录 custom\/skills\/(skills)/);
202
+ // git 通道语义(empty):目录缺失 = 空文件分区
203
+ const back = (await readSnapshotFromDir(tmp, createSnapshotFs(), { missingFileDir: 'empty' })) as unknown as PlainSnapshot;
204
+ assert.deepEqual(back.sections['skills'], { version: 1, files: [] });
205
+ } finally {
206
+ await fs.rm(tmp, { recursive: true, force: true });
207
+ }
208
+ });
209
+
172
210
  test('注入验证:内存 SnapshotFs 驱动同一往返逻辑', async () => {
173
211
  const mem: Map<string, Uint8Array> = new Map();
174
212
  const snap = sampleSnapshot();
@@ -17,6 +17,26 @@ import { isEncryptedSections } from './transport.ts';
17
17
 
18
18
  export const SNAPSHOT_MANIFEST_FILE = 'manifest.json';
19
19
 
20
+ /**
21
+ * 空文件类分区的 git 占位文件(git 不跟踪空目录):
22
+ * 上传方(GitTransport.upload)给 files 为空的文件类分区目录写入本占位文件,
23
+ * 保证远端仓库保留该目录;读回时仅当「文件名 + 内容」同时匹配才过滤,
24
+ * 避免吞掉用户真实同名文件。占位文件不参与 sectionHashes(基于传入数据计算)。
25
+ * 注意:占位内容不得含换行 —— Windows core.autocrlf 会把 LF 转 CRLF,内容校验会失败。
26
+ */
27
+ export const SNAPSHOT_KEEP_FILE = '.gitkeep';
28
+ export const SNAPSHOT_KEEP_CONTENT = 'DSH Config Manager sync placeholder (keep empty section dir)';
29
+ const SNAPSHOT_KEEP_BYTES = new TextEncoder().encode(SNAPSHOT_KEEP_CONTENT);
30
+
31
+ function isKeepFile(rel: string, data: Uint8Array): boolean {
32
+ if (rel !== SNAPSHOT_KEEP_FILE) return false;
33
+ if (data.length !== SNAPSHOT_KEEP_BYTES.length) return false;
34
+ for (let i = 0; i < data.length; i++) {
35
+ if (data[i] !== SNAPSHOT_KEEP_BYTES[i]) return false;
36
+ }
37
+ return true;
38
+ }
39
+
20
40
  /** 快照根目录下的 manifest.json 结构 */
21
41
  export interface SnapshotDirManifest {
22
42
  id: string;
@@ -131,9 +151,16 @@ export async function writeSnapshotToDir(
131
151
 
132
152
  /**
133
153
  * 从散文件目录读回快照。
134
- * manifest 声明的分区必须可解析:JSON 分区文件缺失 / 文件分区目录缺失 → 抛错(不静默降级)。
154
+ * manifest 声明的分区必须可解析:JSON 分区文件缺失 / 文件分区目录缺失 → 抛错(不静默降级),
155
+ * 但 opts.missingFileDir='empty' 时文件分区目录缺失降级为空分区
156
+ * (git 通道专用:git 不跟踪空目录,目录缺失 = 空文件分区;提交原子性保证非空目录不会缺失)。
157
+ * 读回时过滤 git 占位文件(SNAPSHOT_KEEP_FILE),使 files 与上传方数据一致。
135
158
  */
136
- export async function readSnapshotFromDir(dir: string, fsx: SnapshotFs = createSnapshotFs()): Promise<SyncSnapshot> {
159
+ export async function readSnapshotFromDir(
160
+ dir: string,
161
+ fsx: SnapshotFs = createSnapshotFs(),
162
+ opts: { missingFileDir?: 'throw' | 'empty' } = {},
163
+ ): Promise<SyncSnapshot> {
137
164
  const manifestAbs = joinFs(dir, SNAPSHOT_MANIFEST_FILE);
138
165
  if (!(await fsx.exists(manifestAbs))) {
139
166
  throw new Error(`快照目录缺少 ${SNAPSHOT_MANIFEST_FILE}: ${dir}`);
@@ -173,12 +200,19 @@ export async function readSnapshotFromDir(dir: string, fsx: SnapshotFs = createS
173
200
  if (!(sid in manifest.sectionHashes)) continue;
174
201
  const baseAbs = joinFs(dir, prefix);
175
202
  if (!(await fsx.isDir(baseAbs))) {
203
+ if (opts.missingFileDir === 'empty') {
204
+ // git 通道降级:目录缺失 = 空文件分区(git 不跟踪空目录,详见函数注释)
205
+ sections[sid as SectionId] = { version: 1, files: [] };
206
+ continue;
207
+ }
176
208
  throw new Error(`快照缺少文件分区目录 ${prefix}(${sid})`);
177
209
  }
178
210
  const rels = await listSnapshotFiles(fsx, baseAbs);
179
211
  const files: FilesSection['files'] = [];
180
212
  for (const rel of rels) {
181
213
  const data = await fsx.readFile(joinFs(baseAbs, rel));
214
+ // 过滤 git 占位文件(名 + 内容同时匹配才过滤,避免吞用户真实同名文件)
215
+ if (isKeepFile(rel, data)) continue;
182
216
  files.push({ relativePath: rel, data, contentHash: sha256Hex(data) });
183
217
  }
184
218
  sections[sid as SectionId] = { version: 1, files };