@sfmc-bds/cli 0.3.1 → 0.3.2

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.
@@ -212,12 +212,12 @@ const zhCN = {
212
212
  "wizard.runtimeMissingAssets": "\u8FD0\u884C\u73AF\u5883\u7F3A\u5C11\u5FC5\u9700\u76EE\u5F55: {list}",
213
213
  "wizard.prepFailed": "\u8FD0\u884C\u73AF\u5883\u51C6\u5907\u5931\u8D25: {message}",
214
214
  "wizard.step2": "\u6B65\u9AA4 2 - \u5916\u90E8\u8FD0\u884C\u65F6",
215
- "wizard.step2Note": "\u9009\u62E9 BDS\u3001\u6570\u636E\u5E93\u4E0E QQ \u6865\u63A5\u540E\u7AEF",
215
+ "wizard.step2Note": "\u5148\u786E\u8BA4 BDS \u76EE\u5F55\u3002\u6570\u636E\u5E93\u3001\u5907\u4EFD\u548C QQ \u53EF\u4EE5\u6CBF\u7528\u9ED8\u8BA4\u503C\u3002",
216
216
  "wizard.bdsDir": "BDS \u5B89\u88C5\u76EE\u5F55",
217
217
  "wizard.cannotCreateBds": "\u65E0\u6CD5\u521B\u5EFA BDS \u5B89\u88C5\u76EE\u5F55: {dir}",
218
218
  "wizard.qqBackend": "QQ \u6865\u63A5\u540E\u7AEF:",
219
219
  "wizard.qqBackend.official": "QQ \u5F00\u653E\u5E73\u53F0\uFF08\u5B98\u65B9 Bot\uFF09",
220
- "wizard.qqBackend.officialHint": "\u63A8\u8350\uFF1B\u9700 AppID / AppSecret",
220
+ "wizard.qqBackend.officialHint": "\u9700 AppID / AppSecret\uFF0C\u53EF\u7A0D\u540E\u914D\u7F6E",
221
221
  "wizard.qqBackend.llbot": "LLBot\uFF08OneBot 11\uFF09",
222
222
  "wizard.qqBackend.llbotHint": "\u9700\u672C\u673A LLBot \u8FDB\u7A0B",
223
223
  "wizard.qqBackend.disabled": "\u6682\u4E0D\u542F\u7528 QQ \u6865",
@@ -254,7 +254,12 @@ const zhCN = {
254
254
  "wizard.updaterTip": "\u82E5\u627E\u4E0D\u5230 BDS \u8FD0\u884C\u65F6\uFF0C\u7A0D\u540E\u4F1A\u81EA\u52A8\u4E0B\u8F7DBDS\u3002\n \u53EF\u5728 configs/bds_updater.json \u4E2D\u914D\u7F6E\u66F4\u65B0\u9009\u9879\u3002",
255
255
  "wizard.step4": "\u6B65\u9AA4 4 - \u6A21\u5757",
256
256
  "wizard.modulesFound": "\u53D1\u73B0 {count} \u4E2A\u53EF\u9009\u6A21\u5757",
257
- "wizard.modulesNone": "\u672A\u627E\u5230\u6A21\u5757\u76EE\u5F55",
257
+ "wizard.modulesNone": "\u8FD8\u6CA1\u6709\u5DF2\u5B89\u88C5\u7684\u6A21\u5757\u3002",
258
+ "wizard.useDefaults": "\u6570\u636E\u5E93\u3001\u5907\u4EFD\u76EE\u5F55\u548C\u66F4\u65B0\u4FDD\u7559\u9879\u4F7F\u7528\u9ED8\u8BA4\u503C\uFF1F",
259
+ "wizard.defaultsApplied": "\u6570\u636E\u5E93 {db}\uFF08\u7AEF\u53E3 {port}\uFF09\uFF0C\u5907\u4EFD {backup}\u3002",
260
+ "wizard.installFromRegistry": "\u4ECE\u5B98\u65B9\u7D22\u5F15\u5B89\u88C5\u6A21\u5757\uFF08\u53EF\u8DF3\u8FC7\uFF09\uFF1A",
261
+ "wizard.registryLoading": "\u6B63\u5728\u8BFB\u53D6\u5B98\u65B9\u6A21\u5757\u7D22\u5F15",
262
+ "wizard.registryOffline": "\u5B98\u65B9\u7D22\u5F15\u4E0D\u53EF\u7528\u3002\u7A0D\u540E\u6267\u884C `mod install <id>`\u3002",
258
263
  "wizard.enableModules": "\u542F\u7528\u6A21\u5757:",
259
264
  "wizard.emptyHint": "\uFF08\u7A7A\uFF09",
260
265
  "wizard.updatingConfigs": "\u6B63\u5728\u66F4\u65B0\u914D\u7F6E",
@@ -278,6 +283,7 @@ const zhCN = {
278
283
  "wizard.deploying": "\u6B63\u5728\u90E8\u7F72\u5230 {path}",
279
284
  "wizard.restartBds": "\u8BF7\u91CD\u542F BDS \u4EE5\u52A0\u8F7D\u65B0\u884C\u4E3A\u5305\u3002",
280
285
  "wizard.deployFailed": "\u90E8\u7F72\u5931\u8D25: {message}\n\u4FEE\u590D configs/ \u4E2D\u7684 bds_path \u540E\u6267\u884C `mod reload`\u3002",
286
+ "prompt.useDefault": "\u4F7F\u7528\u6B64\u8DEF\u5F84",
281
287
  "prompt.enterPath": "\u8F93\u5165\u8DEF\u5F84",
282
288
  "prompt.browse": "\u6D4F\u89C8\u2026",
283
289
  "prompt.browseHint": "\u6253\u5F00\u7CFB\u7EDF\u6587\u4EF6\u5939\u9009\u62E9\u5668",
@@ -313,7 +319,7 @@ const zhCN = {
313
319
  "mod.removed": "\u5DF2\u4ECE {path} \u79FB\u9664 {id}\n",
314
320
  "mod.update.usage": "\u7528\u6CD5: mod update [id...] [--check] [--yes] [--allow-major]",
315
321
  "mod.update.disabled": "\u6A21\u5757\u81EA\u52A8\u66F4\u65B0\u5DF2\u5173\u95ED\uFF08configs/module-update.json\uFF09\u3002",
316
- "mod.update.checkOff": "\u672C\u6B21\u5F00\u670D\u4E0D\u68C0\u67E5\u6A21\u5757\u66F4\u65B0\u3002",
322
+ "mod.update.checkOff": "\u6A21\u5757\u66F4\u65B0\u53EA\u5728\u6267\u884C\u66F4\u65B0\u547D\u4EE4\u65F6\u8FDB\u884C\u3002",
317
323
  "mod.update.none": "\u6CA1\u6709\u53EF\u66F4\u65B0\u7684\u6A21\u5757\u3002",
318
324
  "mod.update.upgrade": "{id} {from} -> {to}",
319
325
  "mod.update.confirm": "\u66F4\u65B0 {count} \u4E2A\u6A21\u5757\uFF1F",
@@ -340,7 +346,7 @@ const zhCN = {
340
346
  "mod.pin.ok": "{id} \u81EA\u52A8\u66F4\u65B0{state}",
341
347
  "mod.pin.on": "\u5DF2\u6253\u5F00",
342
348
  "mod.pin.off": "\u5DF2\u5173\u95ED",
343
- "mod.pin.locked": "{id} \u662F\u672C\u5730\u94FE\u63A5\u6216\u76EE\u5F55\uFF0C\u4E0D\u80FD\u81EA\u52A8\u66F4\u65B0\u3002",
349
+ "mod.pin.locked": "{id} \u662F\u672C\u5730\u94FE\u63A5\u3001\u76EE\u5F55\u6216 GitHub \u6765\u6E90\uFF0C\u4E0D\u80FD\u81EA\u52A8\u66F4\u65B0\u3002",
344
350
  "mod.pin.missing": "\u6A21\u5757 {id} \u672A\u5B89\u88C5\u3002",
345
351
  "pack.built": "\u5DF2\u6784\u5EFA\u5305\u81F3 {path}",
346
352
  "pack.buildFailed": "pack \u6784\u5EFA\u5931\u8D25: {message}",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/i18n/locales/zh-CN.ts"],
4
- "sourcesContent": ["import type { MessageKey } from \"./en.js\";\n\n/** \u7B80\u4F53\u4E2D\u6587\u6587\u6848\uFF1B\u952E\u96C6\u987B\u4E0E en \u4E00\u81F4\u3002 */\nexport const zhCN: Record<MessageKey, string> = {\n \"common.cancelled\": \"\u5DF2\u53D6\u6D88\",\n \"common.done\": \"\u5B8C\u6210\",\n \"common.required\": \"\u5FC5\u586B\",\n \"common.error\": \"\u9519\u8BEF: {message}\",\n \"common.fatal\": \"\u81F4\u547D\u9519\u8BEF\",\n \"common.unknownCommand\": \"\u672A\u77E5\u547D\u4EE4: {cmd}\",\n \"common.unknownShort\": \"\u672A\u77E5: {cmd} \uFF08\u8F93\u5165 help \u67E5\u770B\u5E2E\u52A9\uFF09\",\n \"common.tips\": \"\u63D0\u793A\",\n \"common.path\": \"\u8DEF\u5F84\",\n \"common.hint\": \"\u63D0\u793A\",\n \"common.none\": \"\uFF08\u65E0\uFF09\",\n \"common.all\": \"\u5168\u90E8\",\n\n \"locale.current\": \"\u5F53\u524D\u8BED\u8A00: {locale}\",\n \"locale.set\": \"\u8BED\u8A00\u5DF2\u8BBE\u4E3A {locale}\",\n \"locale.invalid\": \"\u672A\u77E5\u8BED\u8A00: {value}\uFF08\u53EF\u9009: zh-CN, en\uFF09\",\n \"locale.usage\": \"\u7528\u6CD5: locale [zh-CN|en|zh|cn]\",\n \"locale.wizard\": \"CLI language / \u754C\u9762\u8BED\u8A00\",\n \"locale.opt.zh\": \"\u7B80\u4F53\u4E2D\u6587\",\n \"locale.opt.en\": \"English\",\n\n /* \u2500\u2500\u2500 CLI \u901A\u9053\u95E8\u7981 \u2500\u2500\u2500 */\n \"cli.replOnly\": \"\u547D\u4EE4 `{cmd}` \u4EC5\u53EF\u5728 REPL \u5185\u4F7F\u7528\u3002\",\n \"cli.replOnly.hint\": \"\u5148\u8FD0\u884C\u65E0\u53C2\u6570\u7684 `sfmc` \u8FDB\u5165\u4EA4\u4E92\u6A21\u5F0F\uFF0C\u518D\u6267\u884C\u8BE5\u547D\u4EE4\u3002\",\n \"cli.needTty\": \"\u547D\u4EE4 `{cmd}` \u9700\u8981\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\uFF08TTY\uFF09\u3002\",\n\n /* \u2500\u2500\u2500 debug (BDS \u914D\u7F6E) \u2500\u2500\u2500 */\n \"debug.state.on\": \"\u5F00\u542F\",\n \"debug.state.off\": \"\u5173\u95ED\",\n \"debug.statusTitle\": \"BDS \u8C03\u8BD5\u914D\u7F6E\",\n \"debug.enabled\": \"sfmc_debug = true\uFF08BDS \u63A7\u5236\u53F0\u8C03\u8BD5\u65E5\u5FD7\u5C06\u5728\u4E0B\u6B21 reload \u540E\u751F\u6548\uFF09\",\n \"debug.disabled\": \"sfmc_debug = false\uFF08BDS \u63A7\u5236\u53F0\u8C03\u8BD5\u65E5\u5FD7\u5C06\u5728\u4E0B\u6B21 reload \u540E\u5173\u95ED\uFF09\",\n \"debug.sentry.set\": \"\u5DF2\u8BBE\u7F6E SENTRY_DSN: {dsn}\",\n \"debug.sentry.removed\": \"\u5DF2\u5220\u9664 SENTRY_DSN\",\n \"debug.sentry.alreadyOff\": \"SENTRY_DSN \u672C\u6765\u5C31\u672A\u8BBE\u7F6E\",\n \"debug.sentry.dsnMissing\": \"\u9700\u8981 --dsn <\u503C>\",\n \"debug.sentry.unknown\": \"\u672A\u77E5 sentry \u5B50\u547D\u4EE4: {action}\",\n \"debug.sentry.usage\": \"\u7528\u6CD5: debug sentry on --dsn <dsn> | debug sentry off\",\n \"debug.unknown\": \"\u672A\u77E5 debug \u5B50\u547D\u4EE4: {sub}\",\n \"debug.usage\": \"\u7528\u6CD5: debug status | enable | disable | sentry on --dsn | sentry off\",\n \"debug.reloadHint\": \"\u9700\u8FD0\u884C `sfmc mod reload` \u6216\u91CD\u542F BDS \u540E\u751F\u6548\u3002\",\n\n /* \u2500\u2500\u2500 \u5E2E\u52A9\u6587\u672C \u2500\u2500\u2500 */\n \"help.title\": \"SFMC CLI\",\n \"help.title.repl\": \"SFMC REPL\",\n \"help.usage\": \"\u7528\u6CD5:\",\n \"help.section.options\": \"\u9009\u9879\",\n \"help.opt.packs\": \"\u8D44\u6E90\u5305\u7BA1\u7406\u5668\uFF0C\u540E\u63A5 packs \u5B50\u547D\u4EE4\uFF1Bi = install\",\n \"help.opt.lang\": \"\u672C\u6B21\u8FDB\u7A0B\u754C\u9762\u8BED\u8A00\",\n \"help.addon.compat\": \"\u517C\u5BB9\uFF1A-p/--packs\",\n \"help.slash.hint\": \"\u952E\u5165 / \u5217\u51FA\u547D\u4EE4\u3002\",\n \"help.shortcut.slash\": \"\u547D\u4EE4\u5217\u8868\",\n \"help.shortcut.ctrlp\": \"\u547D\u4EE4\u5217\u8868\",\n \"help.shortcut.cursor\": \"\u79FB\u52A8\u5149\u6807\",\n \"repl.palette.hint\": \"\u2191\u2193 \u00B7 Enter \u00B7 Esc\",\n \"repl.palette.empty\": \"\u65E0\u5339\u914D\",\n \"help.section.service\": \" \u670D\u52A1\u63A7\u5236 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.status\": \"\u67E5\u770B\u670D\u52A1\u72B6\u6001\uFF08\u542B QQ \u540E\u7AEF\u6458\u8981\uFF09\",\n \"help.logs\": \"\u65E5\u5FD7\u5386\u53F2\",\n \"help.start\": \"\u542F\u52A8\u670D\u52A1\uFF08db / qq / llbot / bds\uFF1Bqq \u9ED8\u8BA4\u5B98\u65B9 Bot\uFF09\",\n \"help.stop\": \"\u505C\u6B62\u670D\u52A1\",\n \"help.restart\": \"\u91CD\u542F\u670D\u52A1\",\n \"help.send\": \"\u5411\u670D\u52A1\u53D1\u9001\u547D\u4EE4\uFF08Tab \u5207\u6362\u76EE\u6807\uFF1BQQ \u63D0\u793A\u7B26\u533A\u5206 official / llbot\uFF09\",\n \"help.section.update\": \" BDS \u66F4\u65B0 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.update\": \"\u68C0\u67E5BDS \u66F4\u65B0\",\n \"help.update.checkOnly\": \"\u53EA\u68C0\u67E5\u66F4\u65B0\uFF0C\u4E0D\u4E0B\u8F7D\",\n \"help.update.force\": \"\u5373\u4F7F\u7248\u672C\u76F8\u540C\u4E5F\u5F3A\u5236\u66F4\u65B0\",\n \"help.update.noStart\": \"\u66F4\u65B0\u540E\u4E0D\u542F\u52A8 BDS\",\n \"help.update.channelRelease\": \"\u4F7F\u7528\u6B63\u5F0F\u7248\u901A\u9053\",\n \"help.update.channelPreview\": \"\u4F7F\u7528\u9884\u89C8\u7248\u901A\u9053\",\n \"help.section.debug\": \" \u8C03\u8BD5 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.debug.status\": \"SFMC_DEBUG \u72B6\u6001\",\n \"help.debug.toggle\": \"\u5F00\u5173 SFMC_DEBUG\",\n \"help.debug.sentry.on\": \"\u8BBE\u7F6E SENTRY_DSN\",\n \"help.debug.sentry.off\": \"\u5220\u9664 SENTRY_DSN\",\n \"help.debug.sentry\": \"\u914D\u7F6E Sentry DSN\",\n \"help.ui\": \"UI Studio \u58F0\u660E\u5F0F\u754C\u9762\u53EF\u89C6\u5316\u7F16\u8F91\u5668\",\n \"help.ui.studio\": \"\u542F\u52A8 UI Studio \u5E76\u6253\u5F00\u6D4F\u89C8\u5668\",\n \"help.ui.stop\": \"\u505C\u6B62\u5F53\u524D\u8FDB\u7A0B\u91CC\u7684 UI Studio\",\n \"ui.usage\": \"\u7528\u6CD5: ui studio | ui stop\",\n \"ui.studio.started\": \"UI Studio \u5DF2\u542F\u52A8: {url}\",\n \"ui.studio.hint\": \"\u6309 Ctrl+C \u505C\u6B62\u670D\u52A1\u3002\",\n \"ui.studio.already\": \"UI Studio \u5DF2\u5728\u8FD0\u884C: {url}\",\n \"ui.studio.stopped\": \"UI Studio \u5DF2\u505C\u6B62\u3002\",\n \"ui.studio.notRunning\": \"\u5F53\u524D\u8FDB\u7A0B\u6CA1\u6709\u8FD0\u884C\u4E2D\u7684 UI Studio\u3002\",\n \"ui.studio.failed\": \"\u542F\u52A8 UI Studio \u5931\u8D25: {message}\",\n \"help.section.module\": \" \u6A21\u5757\u7BA1\u7406 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.module.list\": \"\u5217\u51FA\u5DF2\u5B89\u88C5\u6A21\u5757\",\n \"help.module.search\": \"\u5728\u7EBF\u641C\u7D22\u6A21\u5757\",\n \"help.module.install\": \"\u5B89\u88C5\u6A21\u5757\",\n \"help.module.uninstall\": \"\u5378\u8F7D\u5DF2\u5B89\u88C5\u6A21\u5757\",\n \"help.module.verify\": \"\u6821\u9A8C\u6A21\u5757 SHA-256 \u5B8C\u6574\u6027\",\n \"help.module.info\": \"\u663E\u793A\u6A21\u5757\u8BE6\u60C5\",\n \"help.module.toggle\": \"\u542F\u7528/\u7981\u7528\u6A21\u5757\",\n \"help.module.update\": \"\u68C0\u67E5\u5E76\u66F4\u65B0\u5DF2\u5B89\u88C5\u6A21\u5757\",\n \"help.module.pin\": \"\u6253\u5F00\u6216\u5173\u95ED\u6A21\u5757\u81EA\u52A8\u66F4\u65B0\",\n \"help.module.build\": \"\u4ECE\u5DF2\u542F\u7528\u6A21\u5757\u6784\u5EFA\u8D44\u6E90\u5305\",\n \"help.module.reload\": \"\u6784\u5EFA\u5E76\u90E8\u7F72\u8D44\u6E90\u5305\uFF0C\u5728 BDS \u53D1\u9001 reload\u6307\u4EE4\u4EE5\u91CD\u8F7D\u811A\u672C\",\n \"help.section.addon\": \" \u8D44\u6E90\u5305\u7BA1\u7406 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.addon\": \"\u8D44\u6E90\u5305\u6536\u4EF6\u7BB1\u7BA1\u7406\",\n \"help.packs.list\": \"\u5DF2\u5B89\u88C5\u8D44\u6E90\u5305\u5217\u8868\",\n \"help.packs.search\": \"\u5728\u7EBF\u641C\u7D22\u8D44\u6E90\u5305\",\n \"help.packs.enable\": \"\u542F\u7528\u8D44\u6E90\u5305\",\n \"help.packs.disable\": \"\u7981\u7528\u8D44\u6E90\u5305\",\n \"help.packs.doctor\": \"\u8BCA\u65AD\u8D44\u6E90\u5305\u63A5\u7EBF\",\n \"help.packs.doctor.fix\": \"\u4FEE\u590D\u63A5\u7EBF\u5E76\u8865\u9F50\u7F3A\u5931\u7684\u6D4B\u8BD5\u7248 API\",\n \"help.packs.doctor.allExperiments\": \"\u5F00\u542F\u5168\u90E8\u5DF2\u77E5\u5B9E\u9A8C\u6027\u73A9\u6CD5\",\n \"help.packs.doctor.experiments\": \"\u4EC5\u67E5\u770B\u5B9E\u9A8C\u6027\u5F00\u5173\u72B6\u6001\",\n \"help.packs.doctor.experimentsList\":\n \"\u6309\u522B\u540D\u5F00\u542F\uFF0C\u9017\u53F7\u5206\u9694\uFF1Abeta, upcoming, cameras, voxel, villager, drop3, edu\",\n \"help.packs.path\": \"\u663E\u793A\u8D44\u6E90\u5305\u8DEF\u5F84\",\n \"help.section.general\": \" \u901A\u7528 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.init\": \"\u521D\u59CB\u5316\u5411\u5BFC\",\n \"help.locale\": \"\u8BBE\u7F6E CLI \u8BED\u8A00\",\n \"help.version\": \"\u663E\u793A\u7248\u672C\",\n \"help.help\": \"\u663E\u793A\u5E2E\u52A9\",\n \"help.quit\": \"\u9000\u51FA CLI\uFF08\u540E\u53F0\u670D\u52A1\u7EE7\u7EED\u8FD0\u884C\uFF09\",\n \"help.shortcuts\": \"\u5FEB\u6377\u952E:\",\n \"help.shortcut.tab\": \"\u5207\u6362\u53D1\u9001\u76EE\u6807 / \u547D\u4EE4\u5217\u8868\u9009\u62E9\",\n \"help.shortcut.right\": \"\u63A5\u53D7\u5EFA\u8BAE\",\n \"help.shortcut.ctrll\": \"\u8FC7\u6EE4\u65E5\u5FD7\u7EA7\u522B / \u6765\u6E90 / \u5386\u53F2\",\n \"help.shortcut.history\": \"\u547D\u4EE4\u5386\u53F2\",\n\n /* \u2500\u2500\u2500 REPL \u2500\u2500\u2500 */\n \"repl.stopping\": \"\u6B63\u5728\u505C\u6B62\u670D\u52A1...\",\n \"repl.detach\": \"\u5DF2\u65AD\u5F00 CLI\uFF08\u540E\u53F0\u670D\u52A1\u7EE7\u7EED\u8FD0\u884C\uFF1B\u505C\u670D\u7528 stop / daemon stop\uFF09\",\n \"repl.bye\": \"bye...\",\n \"repl.forceStop\": \"\u6B63\u5728\u5F3A\u5236\u505C\u6B62\u670D\u52A1...\",\n \"repl.nonInteractive\": \" \u975E\u4EA4\u4E92\u6A21\u5F0F\uFF08\u68C0\u6D4B\u5230\u7BA1\u9053\uFF09\\n\",\n\n /* \u2500\u2500\u2500 \u5B88\u62A4\u8FDB\u7A0B \u2500\u2500\u2500 */\n \"daemon.stopped\": \"\u5B88\u62A4\u8FDB\u7A0B\u5DF2\u505C\u6B62\",\n \"daemon.notRunning\": \"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\",\n \"daemon.running\": \"\u5B88\u62A4\u8FDB\u7A0B\u8FD0\u884C\u4E2D (PID {pid})\",\n \"daemon.usage\": \"\u7528\u6CD5: daemon [status|stop]\",\n \"daemon.connectFailed\": \"\u65E0\u6CD5\u8FDE\u63A5\u5B88\u62A4\u8FDB\u7A0B: {message}\",\n \"help.daemon\": \"\u67E5\u770B/\u505C\u6B62\u540E\u53F0\u5B88\u62A4\u8FDB\u7A0B\",\n \"help.daemon.status\": \"\u67E5\u770B\u5B88\u62A4\u8FDB\u7A0B\u662F\u5426\u5728\u8FD0\u884C\",\n \"help.daemon.stop\": \"\u505C\u6B62\u540E\u53F0\u5B88\u62A4\u8FDB\u7A0B\",\n \"palette.asIs\": \"\u76F4\u63A5\u8FD0\u884C\",\n \"palette.fixOnly\": \"\u4EC5\u4FEE\u590D\",\n \"palette.localeCurrent\": \"\u5F53\u524D\u8BED\u8A00\",\n \"repl.historyHeader\": \"\u2500\u2500 \u5386\u53F2 {count} \u884C \u2500\u2500\",\n \"repl.filter\": \"\u8FC7\u6EE4: {level} / {source} / {history}\",\n \"repl.followRequiresTty\": \"\u8DDF\u8E2A\u6A21\u5F0F\u9700\u8981 TTY\",\n \"repl.logsReplOnly\": \"logs \u4EC5\u5728\u4EA4\u4E92 REPL \u4E2D\u53EF\u7528\",\n \"repl.history.live\": \"\u5B9E\u65F6\",\n \"repl.history.last50\": \"\u6700\u8FD1 50 \u6761\",\n \"repl.history.last100\": \"\u6700\u8FD1 100 \u6761\",\n \"repl.history.last500\": \"\u6700\u8FD1 500 \u6761\",\n \"repl.history.last1000\": \"\u6700\u8FD1 1000 \u6761\",\n \"repl.history.last1min\": \"\u6700\u8FD1 1 \u5206\u949F\",\n \"repl.history.last5min\": \"\u6700\u8FD1 5 \u5206\u949F\",\n \"repl.history.last15min\": \"\u6700\u8FD1 15 \u5206\u949F\",\n \"repl.history.last1hour\": \"\u6700\u8FD1 1 \u5C0F\u65F6\",\n \"repl.history.all\": \"\u7F13\u51B2\u5168\u90E8\",\n\n /* \u2500\u2500\u2500 \u670D\u52A1\u63A7\u5236 \u2500\u2500\u2500 */\n \"svc.header\": \"\u670D\u52A1\",\n \"svc.col.name\": \"\u540D\u79F0\",\n \"svc.col.status\": \"\u72B6\u6001\",\n \"svc.col.owner\": \"\u5F52\u5C5E\",\n \"svc.col.pid\": \"PID\",\n \"svc.col.uptime\": \"\u8FD0\u884C\u65F6\u957F\",\n \"svc.state.running\": \"\u8FD0\u884C\u4E2D\",\n \"svc.state.stopped\": \"\u5DF2\u505C\u6B62\",\n \"svc.owner.managed\": \"\u63A5\u7BA1\",\n \"svc.owner.external\": \"\u5916\u90E8\",\n \"svc.owner.none\": \"\u2014\",\n \"svc.running\": \"\u8FD0\u884C\u4E2D - \u5DF2\u63A5\u7BA1\",\n \"svc.runningExternal\": \"\u8FD0\u884C\u4E2D - \u5916\u90E8\",\n \"svc.stopped\": \"\u5DF2\u505C\u6B62\",\n \"svc.unknown\": \"\u672A\u77E5\u670D\u52A1: {name}\uFF08\u53EF\u9009: {list}\uFF09\",\n \"svc.logs.usage\": \"\u7528\u6CD5: logs <service> [-n N] [-f]\",\n \"svc.logs.empty\": \"\uFF08\u6682\u65E0\u65E5\u5FD7\uFF09\",\n \"svc.logs.header\": \"{title} \u65E5\u5FD7\uFF08\u6700\u8FD1 {count} \u6761\uFF09:\",\n \"svc.start.usage\": \"\u7528\u6CD5: start <service>|-all\",\n \"svc.start.usageShort\": \"\u7528\u6CD5: start <service>|-all\",\n \"svc.stop.usage\": \"\u7528\u6CD5: stop <service>|-all\",\n \"svc.stop.usageShort\": \"\u7528\u6CD5: stop <service>|-all\",\n \"svc.restart.usage\": \"\u7528\u6CD5: restart <service>|-all\",\n \"svc.restart.usageShort\": \"\u7528\u6CD5: restart <service>|-all\",\n \"svc.alreadyRunning\": \"{title} \u5DF2\u5728\u8FD0\u884C\uFF08PID {pid}\uFF09\",\n \"svc.alreadyStarting\": \"{title} \u6B63\u5728\u542F\u52A8...\",\n \"svc.started\": \"{title} \u5DF2\u542F\u52A8\",\n \"svc.startFailed\": \"{title} \u5931\u8D25: {message}\",\n \"svc.alreadyStopped\": \"{title} \u5DF2\u505C\u6B62\",\n \"svc.alreadyStopping\": \"{title} \u6B63\u5728\u505C\u6B62...\",\n \"svc.stoppedMsg\": \"{title} \u5DF2\u505C\u6B62\",\n \"svc.stopFailed\": \"{title} \u505C\u6B62\u5931\u8D25: {message}\",\n \"svc.send.usage\": \"\u7528\u6CD5: send <service> <message>\",\n \"svc.notRunning\": \"{title} \u672A\u8FD0\u884C\",\n \"svc.writeFailed\": \"\u5199\u5165\u5931\u8D25\",\n \"svc.restarted\": \"{title} \u5DF2\u91CD\u542F\",\n \"svc.restartFailed\": \"{title} \u91CD\u542F\u5931\u8D25: {message}\",\n \"svc.allStarted\": \"\u5168\u90E8\u670D\u52A1\u5DF2\u542F\u52A8\",\n \"svc.allStopped\": \"\u5168\u90E8\u670D\u52A1\u5DF2\u505C\u6B62\",\n \"svc.skipped\": \"{title} \u5DF2\u8DF3\u8FC7: {reason}\",\n \"svc.startAll.started\": \"\u5DF2\u542F\u52A8: {list}\",\n \"svc.startAll.skipped\": \"\u5DF2\u8DF3\u8FC7: {list}\",\n \"svc.startAll.failed\": \"\u542F\u52A8\u5931\u8D25: {list}\",\n \"svc.startAll.empty\": \"\u6CA1\u6709\u670D\u52A1\u9700\u8981\u542F\u52A8\",\n \"svc.updateComplete\": \"\u66F4\u65B0\u5B8C\u6210\",\n \"svc.updateExited\": \"\u66F4\u65B0\u8FDB\u7A0B\u9000\u51FA\uFF0C\u4EE3\u7801 {code}\",\n \"svc.updateError\": \"\u66F4\u65B0\u9519\u8BEF: {message}\",\n \"svc.updateStartBds\": \"\u66F4\u65B0: \u901A\u8FC7\u8FDB\u7A0B\u76D1\u7763\u5668\u542F\u52A8 BDS\",\n \"svc.bdsStarted\": \"BDS \u5DF2\u542F\u52A8\uFF08\u76D1\u7763\u6A21\u5F0F\uFF09\",\n \"svc.bdsStartFailed\": \"BDS \u542F\u52A8\u5931\u8D25: {message}\",\n \"svc.bdsStoppedForUpdate\": \"\u66F4\u65B0\u65F6\u5DF2\u505C\u6B62 BDS\uFF1B\u5C31\u7EEA\u540E\u8BF7\u6267\u884C `start bds`\",\n \"svc.bdsAlreadyRunning\": \"BDS \u5DF2\u5728\u8FD0\u884C\uFF08{kind}\uFF0CPID {pid}\uFF09\",\n \"svc.stdinUnavailable\": \"{title} \u7531\u5916\u90E8\u542F\u52A8\uFF0C\u65E0\u6CD5\u901A\u8FC7 stdin \u53D1\u9001\u547D\u4EE4\",\n \"svc.stoppedExternal\": \"{title} \u5DF2\u505C\u6B62\uFF08\u5916\u90E8\u8FDB\u7A0B\uFF09\",\n\n /* \u2500\u2500\u2500 \u521D\u59CB\u5316 \u2500\u2500\u2500 */\n \"wizard.intro\": \"\u521D\u59CB\u5316\",\n \"wizard.rerun\": \"\u5DF2\u521D\u59CB\u5316\u3002\u662F\u5426\u91CD\u65B0\u8FD0\u884C\u5411\u5BFC\uFF1F\",\n \"wizard.skipped\": \"\u5DF2\u8DF3\u8FC7\u521D\u59CB\u5316\",\n \"wizard.step1\": \"\u6B65\u9AA4 1 - \u8FD0\u884C\u73AF\u5883\",\n \"wizard.runtimeRoot\": \"\u8FD0\u884C\u6839\u76EE\u5F55: {root}\",\n \"wizard.runtimeMissingAssets\": \"\u8FD0\u884C\u73AF\u5883\u7F3A\u5C11\u5FC5\u9700\u76EE\u5F55: {list}\",\n \"wizard.prepFailed\": \"\u8FD0\u884C\u73AF\u5883\u51C6\u5907\u5931\u8D25: {message}\",\n \"wizard.step2\": \"\u6B65\u9AA4 2 - \u5916\u90E8\u8FD0\u884C\u65F6\",\n \"wizard.step2Note\": \"\u9009\u62E9 BDS\u3001\u6570\u636E\u5E93\u4E0E QQ \u6865\u63A5\u540E\u7AEF\",\n \"wizard.bdsDir\": \"BDS \u5B89\u88C5\u76EE\u5F55\",\n \"wizard.cannotCreateBds\": \"\u65E0\u6CD5\u521B\u5EFA BDS \u5B89\u88C5\u76EE\u5F55: {dir}\",\n \"wizard.qqBackend\": \"QQ \u6865\u63A5\u540E\u7AEF:\",\n \"wizard.qqBackend.official\": \"QQ \u5F00\u653E\u5E73\u53F0\uFF08\u5B98\u65B9 Bot\uFF09\",\n \"wizard.qqBackend.officialHint\": \"\u63A8\u8350\uFF1B\u9700 AppID / AppSecret\",\n \"wizard.qqBackend.llbot\": \"LLBot\uFF08OneBot 11\uFF09\",\n \"wizard.qqBackend.llbotHint\": \"\u9700\u672C\u673A LLBot \u8FDB\u7A0B\",\n \"wizard.qqBackend.disabled\": \"\u6682\u4E0D\u542F\u7528 QQ \u6865\",\n \"wizard.qqBackend.disabledHint\": \"qq_enabled=false\",\n \"wizard.qqAppId\": \"QQ \u5F00\u653E\u5E73\u53F0 AppID:\",\n \"wizard.qqAppSecret\": \"QQ \u5F00\u653E\u5E73\u53F0 AppSecret:\",\n \"wizard.qqSandbox\": \"\u4F7F\u7528\u6C99\u7BB1\u73AF\u5883\uFF1F\",\n \"wizard.qqGroupOpenid\": \"\u7FA4 openid\uFF08\u53EF\u7A0D\u540E\u586B\u5199\uFF09:\",\n \"wizard.qqGroupOpenidHint\": \"\u975E\u4F20\u7EDF\u7FA4\u53F7\",\n \"wizard.enableLlbot\": \"\u542F\u7528 LLBot \u8FDB\u7A0B\u63A5\u7BA1\uFF1F\",\n \"wizard.llbotDir\": \"LLBot \u8FD0\u884C\u76EE\u5F55\",\n \"wizard.usingDefault\": \"\u4F7F\u7528\u9ED8\u8BA4: {path}\",\n \"wizard.dbDir\": \"\u6570\u636E\u5E93\u5B58\u50A8\u76EE\u5F55\",\n \"wizard.dbPort\": \"\u6570\u636E\u5E93\u670D\u52A1\u7AEF\u53E3:\",\n \"wizard.portRange\": \"\u8BF7\u8F93\u5165 1024\u201365535\",\n \"wizard.valueRequired\": \"\u6B64\u9879\u5FC5\u586B\uFF01\",\n \"wizard.step3\": \"\u6B65\u9AA4 3 - BDS \u73AF\u5883\",\n \"wizard.bdsFound\": \"\u5DF2\u627E\u5230: {path}\",\n \"wizard.bdsNotFound\": \"\u672A\u627E\u5230: {path}\",\n \"wizard.eula\": \"\u662F\u5426\u540C\u610F Mojang \u53D1\u5E03\u7684 EULA(https://www.minecraft.net/en-us/eula)\uFF1F\u4F7F\u7528\u672C\u7A0B\u5E8F\u524D\u5FC5\u987B\u540C\u610F\u3002\",\n \"wizard.disagreed\": \"\u5DF2\u62D2\u7EDD\u3002\",\n \"wizard.downloadBds\": \"\u73B0\u5728\u4E0B\u8F7D BDS\uFF1F\",\n \"wizard.selectChannel\": \"\u9009\u62E9\u901A\u9053:\",\n \"wizard.channel.release\": \"Release\",\n \"wizard.channel.releaseHint\": \"\u7A33\u5B9A\u7248\",\n \"wizard.channel.preview\": \"Preview\",\n \"wizard.channel.previewHint\": \"\u9884\u89C8\u7248\",\n \"wizard.cannotCreateBackup\": \"\u65E0\u6CD5\u521B\u5EFA BDS \u5907\u4EFD\u76EE\u5F55: {dir}\",\n \"wizard.backupDir\": \"BDS \u5907\u4EFD\u76EE\u5F55\",\n \"wizard.preserve\": \"\u66F4\u65B0\u65F6\u4FDD\u7559\u7684\u6587\u4EF6\uFF08\u4E0B\u6B21\u542F\u7528\u66F4\u65B0\u65F6\uFF09:\",\n \"wizard.preserve.serverProps\": \"\u670D\u52A1\u5668\u914D\u7F6E\",\n \"wizard.preserve.worlds\": \"\u4E16\u754C\u6570\u636E\",\n \"wizard.preserve.config\": \"\u914D\u7F6E\u76EE\u5F55\",\n \"wizard.updaterTip\": \"\u82E5\u627E\u4E0D\u5230 BDS \u8FD0\u884C\u65F6\uFF0C\u7A0D\u540E\u4F1A\u81EA\u52A8\u4E0B\u8F7DBDS\u3002\\n \u53EF\u5728 configs/bds_updater.json \u4E2D\u914D\u7F6E\u66F4\u65B0\u9009\u9879\u3002\",\n \"wizard.step4\": \"\u6B65\u9AA4 4 - \u6A21\u5757\",\n \"wizard.modulesFound\": \"\u53D1\u73B0 {count} \u4E2A\u53EF\u9009\u6A21\u5757\",\n \"wizard.modulesNone\": \"\u672A\u627E\u5230\u6A21\u5757\u76EE\u5F55\",\n \"wizard.enableModules\": \"\u542F\u7528\u6A21\u5757:\",\n \"wizard.emptyHint\": \"\uFF08\u7A7A\uFF09\",\n \"wizard.updatingConfigs\": \"\u6B63\u5728\u66F4\u65B0\u914D\u7F6E\",\n \"wizard.configsUpdated\": \"\u914D\u7F6E\u5DF2\u66F4\u65B0\",\n \"wizard.updatingModules\": \"\u6B63\u5728\u66F4\u65B0\u6A21\u5757\u72B6\u6001\",\n \"wizard.modulesUpdated\": \"\u6A21\u5757\u72B6\u6001\u5DF2\u66F4\u65B0\",\n \"wizard.initDb\": \"\u6B63\u5728\u521D\u59CB\u5316\u6570\u636E\u5E93\",\n \"wizard.dbTimeout\": \"\u6570\u636E\u5E93\u542F\u52A8\u8D85\u65F6\",\n \"wizard.dbOk\": \"\u6570\u636E\u5E93\u5DF2\u521D\u59CB\u5316\",\n \"wizard.downloadingBds\": \"\u6B63\u5728\u4E0B\u8F7D BDS\",\n \"wizard.downloadFail\": \"\u4E0B\u8F7D\u5931\u8D25\u3002\",\n \"wizard.bdsDownloaded\": \"BDS \u5DF2\u4E0B\u8F7D\",\n \"wizard.done\": \"\u5B8C\u6210\uFF01\u952E\u5165 / \u4EE5\u6267\u884C\u547D\u4EE4\",\n \"wizard.installing\": \"\u6B63\u5728\u5B89\u88C5 {count} \u4E2A\u6A21\u5757\",\n \"wizard.installed\": \"\u5DF2\u5B89\u88C5 {count} \u4E2A\",\n \"wizard.installFailed\": \"\u5B89\u88C5\u5931\u8D25: {message}\\n\u53EF\u7A0D\u540E\u6267\u884C: mod install <id>\",\n \"wizard.fetchMissing\": \"\u7F3A\u5C11 fetch-module \u2014 \u8BF7\u7A0D\u540E\u5BF9\u4EE5\u4E0B\u6A21\u5757\u6267\u884C `mod install <id>`: {list}\",\n \"wizard.noModulesSelected\": \"\u672A\u9009\u62E9\u6A21\u5757 \u2014 \u884C\u4E3A\u5305\u5C06\u4E3A\u7A7A\uFF0C\u76F4\u5230\u6267\u884C `mod install <id>` \u5B89\u88C5\u6A21\u5757\u3002\",\n \"wizard.buildingBp\": \"\u6B63\u5728\u6784\u5EFA\u884C\u4E3A\u5305\",\n \"wizard.buildFailed\": \"\u6784\u5EFA\u5931\u8D25: {message}\\n\u7A0D\u540E\u53EF\u6267\u884C `mod build` \u91CD\u8BD5\u3002\",\n \"wizard.deploying\": \"\u6B63\u5728\u90E8\u7F72\u5230 {path}\",\n \"wizard.restartBds\": \"\u8BF7\u91CD\u542F BDS \u4EE5\u52A0\u8F7D\u65B0\u884C\u4E3A\u5305\u3002\",\n \"wizard.deployFailed\": \"\u90E8\u7F72\u5931\u8D25: {message}\\n\u4FEE\u590D configs/ \u4E2D\u7684 bds_path \u540E\u6267\u884C `mod reload`\u3002\",\n\n \"prompt.enterPath\": \"\u8F93\u5165\u8DEF\u5F84\",\n \"prompt.browse\": \"\u6D4F\u89C8\u2026\",\n \"prompt.browseHint\": \"\u6253\u5F00\u7CFB\u7EDF\u6587\u4EF6\u5939\u9009\u62E9\u5668\",\n \"prompt.browseUnavailable\": \"\u65E0\u6CD5\u6253\u5F00\u7CFB\u7EDF\u9009\u62E9\u5668\uFF0C\u8BF7\u624B\u52A8\u8F93\u5165\u8DEF\u5F84\",\n\n \"reload.buildOnly\": \"\u6784\u5EFA\u5B8C\u6210\u3002\",\n \"reload.bdsNotRunning\": \"BDS \u672A\u8FD0\u884C \u2014 \u5DF2\u5B8C\u6210\u6784\u5EFA\u3002\",\n \"reload.sent\": \"\u5DF2\u5411 BDS \u53D1\u9001 reload\",\n\n \"bp.usage\": \"\u7528\u6CD5: bp <build|deploy>\",\n\n \"mod.usage\": \"\u7528\u6CD5: sfmc {cmds} <{subs}> [args]\",\n \"mod.list.title\": \"\u5DF2\u5B89\u88C5\u6A21\u5757\",\n \"mod.noneInstalled\": \"\\n\u672A\u5B89\u88C5\u6A21\u5757\u3002\u8BF7\u5C06\u6A21\u5757\u76EE\u5F55\u653E\u5230 {dir}\uFF0C\u6216\u6267\u884C `sfmc mod install <id>`\u3002\\n\",\n \"mod.notInRegistry\": '\u6A21\u5757 \"{query}\" \u4E0D\u5728\u5B98\u65B9 registry \u4E2D\u3002',\n \"mod.info.usage\": \"\u7528\u6CD5: mod info <id>\",\n \"mod.notInstalledAt\": \"\u6A21\u5757 {id} \u672A\u5B89\u88C5\u4E8E {path}\",\n \"mod.notInstalled\": \"\u6A21\u5757 {id} \u672A\u5B89\u88C5\",\n \"mod.verifyOk\": \"{id} \u6B63\u5E38\\n fingerprint: {fp}\\n\",\n \"mod.dbUnreachable\": \"\u65E0\u6CD5\u8FDE\u63A5 db-server {url}: {message}\u3002db \u670D\u52A1\u662F\u5426\u5728\u8FD0\u884C\uFF1F\uFF08sfmc> start db\uFF09\",\n \"mod.toggleFailed\": \"{action} {id} \u5931\u8D25: {err}\",\n \"mod.action.enabled\": \"\u5DF2\u542F\u7528\",\n \"mod.action.disabled\": \"\u5DF2\u7981\u7528\",\n \"mod.toggleOk\": \"{label} {id}\",\n \"mod.toggleBadBody\": \"{action} {id} \u8FD4\u56DE: {text}\",\n \"mod.cannotDisable\": \"\u6A21\u5757 {id} \u4E0D\u53EF\u7981\u7528\uFF08canDisable=false\uFF09\",\n \"mod.toggleLockFailed\": \"\u5199\u5165 module-lock \u5931\u8D25\uFF08{id}\uFF09: {message}\",\n \"mod.toggleDbSkipped\":\n \"\u5DF2\u5199\u5165 module-lock\uFF1Bdb-server \u672A\u540C\u6B65\uFF08{detail}\uFF09\u3002\u4E0B\u6B21 start db \u540E\u5185\u5B58\u6001\u4F1A\u8DDF\u4E0A\uFF1B\u6E38\u620F\u5185\u4ECD\u9700 mod reload / \u91CD\u542F BDS\u3002\",\n \"mod.enable.usage\": \"\u7528\u6CD5: mod enable <id>\",\n \"mod.disable.usage\": \"\u7528\u6CD5: mod disable <id>\",\n \"mod.install.usage\": \"\u7528\u6CD5: mod install <id>\\n mod install <id> --from <scheme> [--link] [--sha256 <hex>]\",\n \"mod.fromUnknown\": \"\u672A\u77E5\u7684 --from \u6765\u6E90: {value}\u3002\u53EF\u7528: npm:|local[:<\u8DEF\u5F84>]|tgz:|zip:|dir:|github:<repo>[@tag]\",\n \"mod.fetchMissing\": \"\u672A\u627E\u5230 fetch-module\u3002\u8BF7\u5B89\u88C5 @sfmc-bds/sfmc \u6216\u5728 monorepo \u5185\u8FD0\u884C\u3002\",\n \"mod.uninstall.usage\": \"\u7528\u6CD5: mod uninstall <id>\",\n \"mod.notInstalledFolder\": \"\u6A21\u5757 {id} \u672A\u5B89\u88C5\uFF08\u76EE\u5F55\u4E0D\u5B58\u5728: {path}\uFF09\",\n \"mod.removed\": \"\u5DF2\u4ECE {path} \u79FB\u9664 {id}\\n\",\n \"mod.update.usage\": \"\u7528\u6CD5: mod update [id...] [--check] [--yes] [--allow-major]\",\n \"mod.update.disabled\": \"\u6A21\u5757\u81EA\u52A8\u66F4\u65B0\u5DF2\u5173\u95ED\uFF08configs/module-update.json\uFF09\u3002\",\n \"mod.update.checkOff\": \"\u672C\u6B21\u5F00\u670D\u4E0D\u68C0\u67E5\u6A21\u5757\u66F4\u65B0\u3002\",\n \"mod.update.none\": \"\u6CA1\u6709\u53EF\u66F4\u65B0\u7684\u6A21\u5757\u3002\",\n \"mod.update.upgrade\": \"{id} {from} -> {to}\",\n \"mod.update.confirm\": \"\u66F4\u65B0 {count} \u4E2A\u6A21\u5757\uFF1F\",\n \"mod.update.cancelled\": \"\u5DF2\u53D6\u6D88\u6A21\u5757\u66F4\u65B0\u3002\",\n \"mod.update.needYes\": \"\u975E\u4EA4\u4E92\u73AF\u5883\u8BF7\u52A0\u4E0A --yes \u624D\u4F1A\u5E94\u7528\u66F4\u65B0\u3002\",\n \"mod.update.applied\": \"\u5DF2\u66F4\u65B0 {id} {from} -> {to}\",\n \"mod.update.failed\": \"\u66F4\u65B0\u5931\u8D25 {id}: {message}\",\n \"mod.update.reloadHint\": \"\u8BF7\u6267\u884C mod reload\uFF0C\u6216\u91CD\u542F BDS\uFF0C\u4F7F\u65B0\u6A21\u5757\u8FDB\u5165\u6E38\u620F\u3002\",\n \"mod.update.reason.autoOff\": \"\u672A\u5F00\u542F\u81EA\u52A8\u66F4\u65B0\",\n \"mod.update.reason.localSource\": \"\u672C\u5730\u94FE\u63A5\u6216\u76EE\u5F55\",\n \"mod.update.reason.registryOffline\": \"\u6A21\u5757\u7D22\u5F15\u4E0D\u53EF\u7528\",\n \"mod.update.reason.noTarget\": \"\u6CA1\u6709\u76EE\u6807\u7248\u672C\",\n \"mod.update.reason.noInstalledVersion\": \"\u8BFB\u4E0D\u5230\u5DF2\u88C5\u7248\u672C\",\n \"mod.update.reason.upToDate\": \"\u5DF2\u662F\u5F53\u524D\u7248\u672C\",\n \"mod.update.reason.installedNewer\": \"\u5DF2\u88C5\u7248\u672C\u66F4\u9AD8\",\n \"mod.update.reason.major\": \"\u4E3B\u7248\u672C\u66F4\u65B0\u5DF2\u8DF3\u8FC7\",\n \"mod.update.reason.sdk\": \"\u4E0D\u6EE1\u8DB3 SDK \u8303\u56F4\",\n \"mod.update.reason.dependencyFailed\": \"\u4F9D\u8D56\u6A21\u5757\u66F4\u65B0\u5931\u8D25\",\n \"mod.update.reason.githubManual\": \"GitHub \u6765\u6E90\u9700\u624B\u52A8\u66F4\u65B0\",\n \"mod.update.reason.missingModule\": \"\u672A\u5B89\u88C5\",\n \"mod.update.reason.missingDependency\": \"\u4F9D\u8D56\u6A21\u5757\u672A\u5B89\u88C5\",\n \"mod.update.reason.badVersion\": \"\u7248\u672C\u53F7\u4E0D\u662F semver\",\n \"mod.pin.usage\": \"\u7528\u6CD5: mod pin <id> --auto on|off\",\n \"mod.pin.ok\": \"{id} \u81EA\u52A8\u66F4\u65B0{state}\",\n \"mod.pin.on\": \"\u5DF2\u6253\u5F00\",\n \"mod.pin.off\": \"\u5DF2\u5173\u95ED\",\n \"mod.pin.locked\": \"{id} \u662F\u672C\u5730\u94FE\u63A5\u6216\u76EE\u5F55\uFF0C\u4E0D\u80FD\u81EA\u52A8\u66F4\u65B0\u3002\",\n \"mod.pin.missing\": \"\u6A21\u5757 {id} \u672A\u5B89\u88C5\u3002\",\n\n \"pack.built\": \"\u5DF2\u6784\u5EFA\u5305\u81F3 {path}\",\n \"pack.buildFailed\": \"pack \u6784\u5EFA\u5931\u8D25: {message}\",\n \"pack.deployed\": \"\u5DF2\u90E8\u7F72\u5305\",\n \"pack.deployFailed\": \"pack \u90E8\u7F72\u5931\u8D25: {message}\",\n \"pack.statusFailed\": \"pack status \u5931\u8D25: {message}\",\n \"pack.listFailed\": \"pack list \u5931\u8D25: {message}\",\n \"pack.noCatalog\": \"\u5C1A\u65E0\u5DF2\u90E8\u7F72 catalog \u2014 \u8BF7\u5148\u6267\u884C `sfmc pack deploy`\",\n \"pack.noUuid\": \"catalog \u4E2D\u65E0 {kind} \u5305 uuid\",\n \"pack.actionFailed\": \"{action} \u5931\u8D25: {detail}\",\n \"pack.enabledOk\": \"\u5DF2\u542F\u7528 {kind} \u5305 {uuid}\",\n \"pack.disabledOk\": \"\u5DF2\u7981\u7528 {kind} \u5305 {uuid}\",\n \"pack.actionErr\": \"pack {action} \u5931\u8D25: {message}\",\n \"pack.usage\": \"\u7528\u6CD5: sfmc pack <{subs}> [behavior|resource]\",\n\n \"packs.restartHint\": \"\u9700\u91CD\u542F BDS \u540E\u751F\u6548\",\n \"packs.rejoinHint\": \"\u5BA2\u6237\u7AEF\u9700\u91CD\u8FDB\u670D\u4EE5\u4E0B\u8F7D\u8D44\u6E90\u5305\",\n \"packs.conflict\": \"\u68C0\u6D4B\u5230\u51B2\u7A81\uFF1A\",\n \"packs.conflict.existing\": \" \u5DF2\u6709: {name} v{version} {uuid}\\n {dir}\",\n \"packs.conflict.incoming\": \" \u65B0\u6765: {name} v{version} {uuid}\",\n \"packs.overwriteAsk\": \"\u8986\u76D6\u5DF2\u6709\u5305\uFF08\u76F8\u540C UUID\uFF0C\u4F46\u7248\u672C\u76F8\u5BF9\u73B0\u5B58\u5305\u8F83\u4F4E\uFF09\uFF1F\",\n \"packs.badManifest\": \"\u65E0\u6CD5\u8BC6\u522B manifest\uFF08\u9700\u542B resources/data/script \u6A21\u5757\uFF0C\u4E14 header \u542B name/uuid/version\uFF09\",\n \"packs.skippedNoOverwrite\": \"\u5DF2\u8DF3\u8FC7\uFF08\u672A\u8986\u76D6\uFF09\",\n \"packs.conflictSkip\": \" \u51B2\u7A81\u8DF3\u8FC7\uFF08\u975E\u4EA4\u4E92\uFF0C\u53EF\u7528 --force\uFF09: {name}\",\n \"packs.inboxSkip\": \" \u8DF3\u8FC7\u6536\u4EF6\u7BB1\uFF1A{message}\",\n \"packs.inboxFound\": \" \u6536\u4EF6\u7BB1\u53D1\u73B0 {count} \u9879 \u2192 {level}\",\n \"packs.alreadyDone\": \" \u5DF2\u5904\u7406\u8FC7\uFF0C\u8DF3\u8FC7: {name}\",\n \"packs.dryRunExtract\": \" dry-run \u89E3\u538B: {name}\",\n \"packs.noPackRoot\": \" \u672A\u627E\u5230\u5305\u6839: {name}\",\n \"packs.installedEnabled\": \" \u5DF2\u5B89\u88C5\u5E76\u542F\u7528 {kind}: {name} v{version}\",\n \"packs.installFailed\": \" \u5B89\u88C5\u5931\u8D25 {name}: {reason}\",\n \"packs.listEmpty\": \"\uFF08\u65E0\uFF09\",\n \"packs.list.bpHeader\": \"\u884C\u4E3A\u5305:\",\n \"packs.list.rpHeader\": \"\u8D44\u6E90\u5305:\",\n \"packs.list.on\": \"\u5F00 \",\n \"packs.list.off\": \"\u5173\",\n \"packs.doctor.parseFail\": \"{file} \u65E0\u6CD5\u89E3\u6790\",\n \"packs.doctor.missingDir\": \"\u6E05\u5355\u6709 uuid \u4F46\u76EE\u5F55\u7F3A\u5931 ({kind}): {uuid}\",\n \"packs.doctor.versionMismatch\": \"\u7248\u672C\u4E0D\u4E00\u81F4 ({kind}): {folder} \u6E05\u5355 {listVer} vs \u78C1\u76D8 {diskVer}\",\n \"packs.doctor.notEnabled\": \"\u5DF2\u5B89\u88C5\u672A\u542F\u7528: [{kind}] {folder} ({uuid})\",\n \"packs.doctor.betaApisMissing\":\n \"\u5F53\u524D\u4E16\u754C\u300C{level}\u300D\u672A\u5F00\u542F\u300C\u6D4B\u8BD5\u7248 API (Beta APIs / gametest)\u300D\uFF0C\u4F46\u4EE5\u4E0B\u884C\u4E3A\u5305\u4F9D\u8D56\u5B83:\\n{packs}\\n \u8FD9\u4E9B\u5305\u7684\u811A\u672C\u5C06\u88AB BDS \u62D2\u7EDD\u52A0\u8F7D\uFF01\u8FD0\u884C packs doctor --fix \u53EF\u4E00\u952E\u5F00\u542F\u3002\",\n \"packs.doctor.betaApisFixed\": \"\u5DF2\u6210\u529F\u4E3A\u4E16\u754C\u300C{level}\u300D\u5F00\u542F\u300C\u6D4B\u8BD5\u7248 API\u300D(gametest = 1b)\uFF0C\u539F\u5B58\u6863\u5DF2\u5907\u4EFD\u81F3: {backup}\",\n \"packs.doctor.betaApisAlreadyOn\": \"\u4E16\u754C\u300C{level}\u300D\u7684\u300C\u6D4B\u8BD5\u7248 API\u300D\u5DF2\u5904\u4E8E\u5F00\u542F\u72B6\u6001\",\n \"packs.doctor.betaApisFailed\": \"\u4E3A\u4E16\u754C\u300C{level}\u300D\u5F00\u542F\u300C\u6D4B\u8BD5\u7248 API\u300D\u5931\u8D25: {error}\",\n \"packs.doctor.ghostPackCleaned\": \"\u5DF2\u6E05\u7406\u5931\u6548\u7684\u65E7\u5305\u6761\u76EE ({kind}): {uuid}\",\n \"packs.doctor.versionSynced\": \"\u5DF2\u540C\u6B65\u7248\u672C ({kind}): {folder} \u6E05\u5355 {listVer} \u2192 \u78C1\u76D8 {diskVer}\",\n \"packs.doctor.permissionsMissing\":\n \"\u4EE5\u4E0B\u884C\u4E3A\u5305\u4F9D\u8D56\u7684\u539F\u751F\u6A21\u5757\u672A\u5728 BDS \u6743\u9650\u914D\u7F6E\u4E2D\u5141\u8BB8\u4F7F\u7528:\\n{list}\\n \u672A\u914D\u7F6E\u6743\u9650\u7684\u6A21\u5757\u5C06\u5728\u8FD0\u884C\u65F6\u88AB BDS \u963B\u65AD\uFF01\u8FD0\u884C packs doctor --fix \u53EF\u4E00\u952E\u81EA\u52A8\u6388\u6743\u3002\",\n \"packs.doctor.permissionsFixed\": \"\u5DF2\u81EA\u52A8\u8865\u9F50\u884C\u4E3A\u5305\u7684\u539F\u751F\u6A21\u5757\u6743\u9650: {perms}\",\n \"packs.doctor.fixedSummary\": \"doctor: \u81EA\u6108\u5B8C\u6210\uFF0C\u5171\u5904\u7406 {count} \u9879\u95EE\u9898\u3002\",\n \"packs.doctor.fixPrompt\": '\u53EF\u8FD0\u884C \"packs doctor --fix\" \u81EA\u52A8\u4FEE\u590D\u4E0A\u8FF0\u95EE\u9898\u3002',\n \"packs.doctor.experimentsStatus\": \"\u5B58\u6863\u5B9E\u9A8C\u6027\u5F00\u5173\u72B6\u6001 (\u4E16\u754C\u300C{level}\u300D):\",\n \"packs.doctor.experimentsFixed\": \"\u5DF2\u6210\u529F\u4E3A\u4E16\u754C\u300C{level}\u300D\u5F00\u542F\u5B9E\u9A8C\u6027\u5F00\u5173 ({list})\uFF0C\u539F\u5B58\u6863\u5DF2\u5907\u4EFD\u81F3: {backup}\",\n \"packs.doctor.experimentsAlreadyOn\": \"\u4E16\u754C\u300C{level}\u300D\u8BF7\u6C42\u7684\u5B9E\u9A8C\u6027\u5F00\u5173\u5DF2\u5904\u4E8E\u5F00\u542F\u72B6\u6001\",\n \"packs.doctor.experimentsFailed\": \"\u4E3A\u4E16\u754C\u300C{level}\u300D\u4FEE\u6539\u5B9E\u9A8C\u6027\u5F00\u5173\u5931\u8D25: {error}\",\n \"packs.doctor.experimentsFixPrompt\": '\u53EF\u8FD0\u884C \"packs doctor --fix --all-experiments\" \u4E00\u952E\u5F00\u542F\u5168\u90E8\u5DF2\u77E5\u5B9E\u9A8C\u6027\u73A9\u6CD5\u3002',\n \"packs.doctor.ok\": \"doctor: \u672A\u53D1\u73B0\u95EE\u9898\",\n \"packs.doctor.found\": \"doctor \u53D1\u73B0 {count} \u9879:\\n{list}\",\n \"packs.notFound\": \"\u672A\u627E\u5230\u5305: {id}\",\n \"packs.toggleDone\": \"{verb} {folder} \u5B8C\u6210\u3002{hint}\",\n \"packs.bump.usage\": \"\u7528\u6CD5: packs bump <uuid|folder> \uFF08\u4EC5 RP\uFF09\",\n \"packs.bump.rpOnly\": \"packs bump \u4EC5\u652F\u6301\u8D44\u6E90\u5305 (RP)\",\n \"packs.bumped\": \"\u5DF2 bump {folder} \u2192 v{version}\u3002{restart}\uFF1B{rejoin}\",\n \"packs.pathMissing\": \"\u8DEF\u5F84\u4E0D\u5B58\u5728: {path}\",\n \"packs.notArchive\": \"\u4E0D\u662F\u5305\u76EE\u5F55\u6216 .zip/.mcpack/.mcaddon\",\n \"packs.noManifestRoot\": \"\u672A\u53D1\u73B0\u542B manifest.json \u7684\u5305\u6839\",\n \"packs.installedLine\": \"\u5DF2\u5B89\u88C5\u5E76\u542F\u7528: {name} v{version} ({kind})\",\n \"packs.skipFailLine\": \"\u8DF3\u8FC7/\u5931\u8D25: {name} ({reason})\",\n \"packs.inboxEmpty\": \"\u6536\u4EF6\u7BB1\u4E3A\u7A7A\",\n \"packs.search.usage\": \"\u7528\u6CD5: packs search <query>\uFF08CurseForge \u8FDC\u7A0B\u641C\u7D22\uFF0C\u9700 API Key\uFF09\",\n \"packs.bind.usage\": \"\u7528\u6CD5: packs bind <uuid|folder> <projectId|slug|url>\",\n \"packs.unbind.usage\": \"\u7528\u6CD5: packs unbind <uuid|folder>\",\n \"packs.unbindOk\": \"\u5DF2\u89E3\u9664\u7ED1\u5B9A {uuid}\uFF08\u7F16\u8F91 {path} \u4EA6\u53EF\uFF09\",\n \"packs.unbindMiss\": \"\u672A\u627E\u5230\u7ED1\u5B9A: {id}\",\n \"packs.update.usage\": \"\u7528\u6CD5: packs update <uuid|folder|--all>\",\n \"packs.toggle.usage\": \"\u7528\u6CD5: packs {verb} <uuid|folder>\",\n \"packs.uninstall.usage\":\n \"\u7528\u6CD5: packs uninstall [uuid|folder...] [--purge] [--no-paired]\\n \u65E0\u53C2\u6570\u4E14\u4E3A TTY \u65F6\u8FDB\u5165\u591A\u9009\uFF1B\u53EF\u4E00\u6B21\u4F20\u591A\u4E2A id\",\n \"packs.uninstall.protected\": \"\u62D2\u7EDD\u5378\u8F7D\u5E73\u53F0\u805A\u5408\u5305: {folder}\uFF08\u8BF7\u7528 sfmc mod\uFF09\",\n \"packs.uninstall.trashed\": \"\u5DF2\u5378\u8F7D\u5E76\u79FB\u5165\u56DE\u6536\u7AD9: {folder}\\n \u2192 {dest}\",\n \"packs.uninstall.deleted\": \"\u5DF2\u5378\u8F7D\u5E76\u5220\u9664: {folder}\",\n \"packs.uninstall.dirMissing\": \"\u6E05\u5355\u5DF2\u79FB\u9664\uFF0C\u76EE\u5F55\u672C\u5C31\u4E0D\u5B58\u5728: {folder}\",\n \"packs.uninstall.bindingRemoved\": \"\u5DF2\u6E05\u9664\u66F4\u65B0\u6E90\u7ED1\u5B9A: {uuid}\",\n \"packs.uninstall.pick\": \"\u9009\u62E9\u8981\u5378\u8F7D\u7684\u8D44\u6E90\u5305\uFF08\u7A7A\u683C\u52FE\u9009\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF09\",\n \"packs.uninstall.summary\": \"\u5C06\u5378\u8F7D\u4EE5\u4E0B {count} \u9879\uFF08\u542B\u914D\u5BF9 RP\uFF09\uFF1A\",\n \"packs.uninstall.confirm\": \"\u786E\u8BA4\u5378\u8F7D\u8FD9 {count} \u9879\uFF1F\",\n \"packs.uninstall.cancelled\": \"\u5DF2\u53D6\u6D88\u5378\u8F7D\",\n \"packs.uninstall.none\": \"\u6CA1\u6709\u53EF\u5378\u8F7D\u7684\u8D44\u6E90\u5305\",\n \"packs.uninstall.pairedOf\": \"\uFF08\u914D\u5BF9\u81EA {folder}\uFF09\",\n \"packs.install.usage\": \"\u7528\u6CD5: packs install [path|--inbox] [--force]\",\n \"packs.installInbox\": \"\u6536\u4EF6\u7BB1\u5B89\u88C5: \u6210\u529F={installed} \u8DF3\u8FC7={skipped} \u5931\u8D25={failed}\",\n \"packs.scanResult\": \"\u626B\u63CF: \u6210\u529F={installed} \u8DF3\u8FC7={skipped} \u5931\u8D25={failed}\",\n \"packs.unknownSub\": \"\u672A\u77E5 packs \u5B50\u547D\u4EE4: {verb}\\n\",\n \"packs.usage.title\": \"{cmd}\uFF08\u522B\u540D {alias}\uFF09\u2014 \u4E16\u754C\u4FA7\u4EFB\u610F BP/RP\",\n \"packs.usage.bump\": \"\u4EC5 RP\uFF0Cpatch \u7248\u672C +1\",\n \"packs.usage.cfSearch\": \"CurseForge \u641C\u7D22\uFF08\u9700 Key\uFF09\",\n \"packs.usage.inbox\": \"\u6536\u4EF6\u7BB1: {path}\",\n \"packs.usage.trash\": \"\u5378\u8F7D\u56DE\u6536\u7AD9: {path}\uFF08pack-update.json \u2192 uninstall.recycleBin\uFF09\",\n \"packs.usage.sources\": \"\u66F4\u65B0\u6E90\u7ED1\u5B9A: {path}\uFF08\u53EF\u624B\u6539 enabled/projectId\uFF09\",\n \"packs.usage.enableNote\": \"\u5B89\u88C5\u9ED8\u8BA4\u5199\u5165 world_*_packs.json \u542F\u7528\uFF1B{hint}\u3002\",\n \"packs.usage.moduleNote\": \"\u6A21\u5757\u805A\u5408\u8BF7\u7528 {cmd}\uFF08\u975E\u672C\u547D\u4EE4\uFF09\u3002\",\n\n \"packUpdate.needKey\":\n \"\u672A\u914D\u7F6E\u4EFB\u4F55 pack \u66F4\u65B0\u6E90\u3002\u8BF7\u7F16\u8F91 {path} \u7684 providers.*.apiKey\uFF08\u6216\u5BF9\u5E94\u73AF\u5883\u53D8\u91CF\uFF09\u3002CurseForge\uFF1Ahttps://console.curseforge.com/ \u7533\u8BF7 Studios Key \u2192 providers.curseforge.apiKey / CURSEFORGE_API_KEY\",\n \"packUpdate.probeNoName\": \"\u65E0\u6CD5\u4ECE manifest / \u6587\u4EF6\u5939\u540D\u6D3E\u751F\u53EF\u641C\u7D22\u540D\u79F0\",\n \"packUpdate.probeQueries\": \"\u63A2\u6D4B\u67E5\u8BE2\u6E90 header={header} folder={folder}\\n \u2192 {queries}\",\n \"packUpdate.probeFail\": \"\u63A2\u6D4B\u66F4\u65B0\u6E90\u5931\u8D25: {message}\",\n \"packUpdate.probeMiss\": \"\u672A\u5728 CurseForge \u627E\u5230\u5339\u914D: {name}\",\n \"packUpdate.probeLowScore\": \"\u5019\u9009\u76F8\u4F3C\u5EA6\u504F\u4F4E: {name} \u2192 {hit} ({score}) {url}\",\n \"packUpdate.probeHit\": \"\u627E\u5230\u53EF\u80FD\u7684\u66F4\u65B0\u6E90: {name} \u2192 {hit} ({score})\\n {url}\",\n \"packUpdate.editHint\": \"\u7A0D\u540E\u53EF\u7F16\u8F91 {path} \u4FEE\u6539/\u5173\u95ED\u5BF9\u5E94\u6E90\uFF08enabled: false\uFF09\",\n \"packUpdate.confirmBind\": \"\u5C06\u6B64 CurseForge \u9879\u76EE\u7ED1\u5B9A\u4E3A\u66F4\u65B0\u6E90\uFF1F {hit}\",\n \"packUpdate.probeAutoBind\": \"\u975E\u4EA4\u4E92\u73AF\u5883\uFF1A\u81EA\u52A8\u7ED1\u5B9A \u2192 {provider}:{slug}\\n {path}\",\n \"packUpdate.probeNoAutoBind\": \"\u975E\u4EA4\u4E92\u73AF\u5883\u4E0D\u81EA\u52A8\u7ED1\u5B9A\uFF1B\u53EF\u7528 packs bind \u624B\u52A8\u7ED1\u5B9A\",\n \"packUpdate.bindSkipped\": \"\u5DF2\u8DF3\u8FC7\u7ED1\u5B9A\",\n \"packUpdate.bindOk\": \"\u5DF2\u7ED1\u5B9A {uuid} \u2192 {provider}:{slug} [{enabled}]\\n \u6587\u4EF6: {path}\",\n \"packUpdate.bindBpOnly\": \"\u53EA\u80FD\u4E3A\u884C\u4E3A\u5305\uFF08BP\uFF09\u7ED1\u5B9A\u66F4\u65B0\u6E90\",\n \"packUpdate.resolveFail\": \"\u65E0\u6CD5\u89E3\u6790 CurseForge \u9879\u76EE: {ref}\",\n \"packUpdate.searchEmpty\": \"CurseForge \u65E0\u7ED3\u679C: {query}\",\n \"packUpdate.sourcesHeader\": \"\u914D\u7F6E: {config}\\n\u7ED1\u5B9A: {sources}\",\n \"packUpdate.sourcesEmpty\": \"\u5C1A\u65E0\u7ED1\u5B9A\u3002\u5B89\u88C5 BP \u540E\u4F1A\u5C1D\u8BD5\u63A2\u6D4B\uFF0C\u6216\u4F7F\u7528 packs bind\u3002\",\n \"packUpdate.disabled\": \"pack-update \u5DF2\u5728\u914D\u7F6E\u4E2D\u7981\u7528\",\n \"packUpdate.bindingDisabled\": \"\u7ED1\u5B9A\u5DF2\u5173\u95ED (enabled: false)\",\n \"packUpdate.noRemoteFile\": \"\u8FDC\u7A0B\u65E0\u53EF\u7528\u6587\u4EF6\",\n \"packUpdate.fileNewer\": \"\u8FDC\u7A0B\u6587\u4EF6\u66F4\u65B0: {file} (id={id})\",\n \"packUpdate.upToDate\": \"\u5DF2\u662F\u6700\u65B0\",\n \"packUpdate.needSync\": \"\u8FDC\u7A0B\u6587\u4EF6\u5C1A\u672A\u540C\u6B65\u5230\u4E16\u754C\u76EE\u5F55\uFF08\u7248\u672C {local} \u2261 {remote}\uFF0CfileId={id}\uFF09\",\n \"packUpdate.remoteNoBp\": \"\u8FDC\u7A0B\u5F52\u6863\u4E2D\u672A\u627E\u5230\u884C\u4E3A\u5305\",\n \"packUpdate.bpNewer\": \"BP \u6709\u66F4\u65B0 {local} \u2192 {remote}\",\n \"packUpdate.installFail\": \"\u5B89\u88C5\u5931\u8D25: {reason}\",\n \"packUpdate.installedBp\": \"\u5DF2\u5199\u5165 BP \u2192 {dir} (v{version})\",\n \"packUpdate.installedRp\": \"\u5DF2\u5199\u5165 RP \u2192 {dir} (v{version})\",\n \"packUpdate.rpInstallMiss\": \"\u5F52\u6863\u542B RP \u4F46\u672A\u80FD\u5B89\u88C5\u914D\u5BF9\u8D44\u6E90\u5305\uFF08\u68C0\u67E5 dependencies / pairedResourceUuid\uFF09\",\n \"packUpdate.applied\": \"\u5DF2\u66F4\u65B0 {name} BP={bp} RP={rp}\",\n \"packUpdate.noBinding\": \"\u672A\u627E\u5230\u66F4\u65B0\u6E90\u7ED1\u5B9A: {id}\",\n \"packUpdate.startupFail\": \"\u542F\u52A8\u65F6\u68C0\u67E5\u66F4\u65B0\u5931\u8D25: {message}\",\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { MessageKey } from \"./en.js\";\n\n/** \u7B80\u4F53\u4E2D\u6587\u6587\u6848\uFF1B\u952E\u96C6\u987B\u4E0E en \u4E00\u81F4\u3002 */\nexport const zhCN: Record<MessageKey, string> = {\n \"common.cancelled\": \"\u5DF2\u53D6\u6D88\",\n \"common.done\": \"\u5B8C\u6210\",\n \"common.required\": \"\u5FC5\u586B\",\n \"common.error\": \"\u9519\u8BEF: {message}\",\n \"common.fatal\": \"\u81F4\u547D\u9519\u8BEF\",\n \"common.unknownCommand\": \"\u672A\u77E5\u547D\u4EE4: {cmd}\",\n \"common.unknownShort\": \"\u672A\u77E5: {cmd} \uFF08\u8F93\u5165 help \u67E5\u770B\u5E2E\u52A9\uFF09\",\n \"common.tips\": \"\u63D0\u793A\",\n \"common.path\": \"\u8DEF\u5F84\",\n \"common.hint\": \"\u63D0\u793A\",\n \"common.none\": \"\uFF08\u65E0\uFF09\",\n \"common.all\": \"\u5168\u90E8\",\n\n \"locale.current\": \"\u5F53\u524D\u8BED\u8A00: {locale}\",\n \"locale.set\": \"\u8BED\u8A00\u5DF2\u8BBE\u4E3A {locale}\",\n \"locale.invalid\": \"\u672A\u77E5\u8BED\u8A00: {value}\uFF08\u53EF\u9009: zh-CN, en\uFF09\",\n \"locale.usage\": \"\u7528\u6CD5: locale [zh-CN|en|zh|cn]\",\n \"locale.wizard\": \"CLI language / \u754C\u9762\u8BED\u8A00\",\n \"locale.opt.zh\": \"\u7B80\u4F53\u4E2D\u6587\",\n \"locale.opt.en\": \"English\",\n\n /* \u2500\u2500\u2500 CLI \u901A\u9053\u95E8\u7981 \u2500\u2500\u2500 */\n \"cli.replOnly\": \"\u547D\u4EE4 `{cmd}` \u4EC5\u53EF\u5728 REPL \u5185\u4F7F\u7528\u3002\",\n \"cli.replOnly.hint\": \"\u5148\u8FD0\u884C\u65E0\u53C2\u6570\u7684 `sfmc` \u8FDB\u5165\u4EA4\u4E92\u6A21\u5F0F\uFF0C\u518D\u6267\u884C\u8BE5\u547D\u4EE4\u3002\",\n \"cli.needTty\": \"\u547D\u4EE4 `{cmd}` \u9700\u8981\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\uFF08TTY\uFF09\u3002\",\n\n /* \u2500\u2500\u2500 debug (BDS \u914D\u7F6E) \u2500\u2500\u2500 */\n \"debug.state.on\": \"\u5F00\u542F\",\n \"debug.state.off\": \"\u5173\u95ED\",\n \"debug.statusTitle\": \"BDS \u8C03\u8BD5\u914D\u7F6E\",\n \"debug.enabled\": \"sfmc_debug = true\uFF08BDS \u63A7\u5236\u53F0\u8C03\u8BD5\u65E5\u5FD7\u5C06\u5728\u4E0B\u6B21 reload \u540E\u751F\u6548\uFF09\",\n \"debug.disabled\": \"sfmc_debug = false\uFF08BDS \u63A7\u5236\u53F0\u8C03\u8BD5\u65E5\u5FD7\u5C06\u5728\u4E0B\u6B21 reload \u540E\u5173\u95ED\uFF09\",\n \"debug.sentry.set\": \"\u5DF2\u8BBE\u7F6E SENTRY_DSN: {dsn}\",\n \"debug.sentry.removed\": \"\u5DF2\u5220\u9664 SENTRY_DSN\",\n \"debug.sentry.alreadyOff\": \"SENTRY_DSN \u672C\u6765\u5C31\u672A\u8BBE\u7F6E\",\n \"debug.sentry.dsnMissing\": \"\u9700\u8981 --dsn <\u503C>\",\n \"debug.sentry.unknown\": \"\u672A\u77E5 sentry \u5B50\u547D\u4EE4: {action}\",\n \"debug.sentry.usage\": \"\u7528\u6CD5: debug sentry on --dsn <dsn> | debug sentry off\",\n \"debug.unknown\": \"\u672A\u77E5 debug \u5B50\u547D\u4EE4: {sub}\",\n \"debug.usage\": \"\u7528\u6CD5: debug status | enable | disable | sentry on --dsn | sentry off\",\n \"debug.reloadHint\": \"\u9700\u8FD0\u884C `sfmc mod reload` \u6216\u91CD\u542F BDS \u540E\u751F\u6548\u3002\",\n\n /* \u2500\u2500\u2500 \u5E2E\u52A9\u6587\u672C \u2500\u2500\u2500 */\n \"help.title\": \"SFMC CLI\",\n \"help.title.repl\": \"SFMC REPL\",\n \"help.usage\": \"\u7528\u6CD5:\",\n \"help.section.options\": \"\u9009\u9879\",\n \"help.opt.packs\": \"\u8D44\u6E90\u5305\u7BA1\u7406\u5668\uFF0C\u540E\u63A5 packs \u5B50\u547D\u4EE4\uFF1Bi = install\",\n \"help.opt.lang\": \"\u672C\u6B21\u8FDB\u7A0B\u754C\u9762\u8BED\u8A00\",\n \"help.addon.compat\": \"\u517C\u5BB9\uFF1A-p/--packs\",\n \"help.slash.hint\": \"\u952E\u5165 / \u5217\u51FA\u547D\u4EE4\u3002\",\n \"help.shortcut.slash\": \"\u547D\u4EE4\u5217\u8868\",\n \"help.shortcut.ctrlp\": \"\u547D\u4EE4\u5217\u8868\",\n \"help.shortcut.cursor\": \"\u79FB\u52A8\u5149\u6807\",\n \"repl.palette.hint\": \"\u2191\u2193 \u00B7 Enter \u00B7 Esc\",\n \"repl.palette.empty\": \"\u65E0\u5339\u914D\",\n \"help.section.service\": \" \u670D\u52A1\u63A7\u5236 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.status\": \"\u67E5\u770B\u670D\u52A1\u72B6\u6001\uFF08\u542B QQ \u540E\u7AEF\u6458\u8981\uFF09\",\n \"help.logs\": \"\u65E5\u5FD7\u5386\u53F2\",\n \"help.start\": \"\u542F\u52A8\u670D\u52A1\uFF08db / qq / llbot / bds\uFF1Bqq \u9ED8\u8BA4\u5B98\u65B9 Bot\uFF09\",\n \"help.stop\": \"\u505C\u6B62\u670D\u52A1\",\n \"help.restart\": \"\u91CD\u542F\u670D\u52A1\",\n \"help.send\": \"\u5411\u670D\u52A1\u53D1\u9001\u547D\u4EE4\uFF08Tab \u5207\u6362\u76EE\u6807\uFF1BQQ \u63D0\u793A\u7B26\u533A\u5206 official / llbot\uFF09\",\n \"help.section.update\": \" BDS \u66F4\u65B0 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.update\": \"\u68C0\u67E5BDS \u66F4\u65B0\",\n \"help.update.checkOnly\": \"\u53EA\u68C0\u67E5\u66F4\u65B0\uFF0C\u4E0D\u4E0B\u8F7D\",\n \"help.update.force\": \"\u5373\u4F7F\u7248\u672C\u76F8\u540C\u4E5F\u5F3A\u5236\u66F4\u65B0\",\n \"help.update.noStart\": \"\u66F4\u65B0\u540E\u4E0D\u542F\u52A8 BDS\",\n \"help.update.channelRelease\": \"\u4F7F\u7528\u6B63\u5F0F\u7248\u901A\u9053\",\n \"help.update.channelPreview\": \"\u4F7F\u7528\u9884\u89C8\u7248\u901A\u9053\",\n \"help.section.debug\": \" \u8C03\u8BD5 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.debug.status\": \"SFMC_DEBUG \u72B6\u6001\",\n \"help.debug.toggle\": \"\u5F00\u5173 SFMC_DEBUG\",\n \"help.debug.sentry.on\": \"\u8BBE\u7F6E SENTRY_DSN\",\n \"help.debug.sentry.off\": \"\u5220\u9664 SENTRY_DSN\",\n \"help.debug.sentry\": \"\u914D\u7F6E Sentry DSN\",\n \"help.ui\": \"UI Studio \u58F0\u660E\u5F0F\u754C\u9762\u53EF\u89C6\u5316\u7F16\u8F91\u5668\",\n \"help.ui.studio\": \"\u542F\u52A8 UI Studio \u5E76\u6253\u5F00\u6D4F\u89C8\u5668\",\n \"help.ui.stop\": \"\u505C\u6B62\u5F53\u524D\u8FDB\u7A0B\u91CC\u7684 UI Studio\",\n \"ui.usage\": \"\u7528\u6CD5: ui studio | ui stop\",\n \"ui.studio.started\": \"UI Studio \u5DF2\u542F\u52A8: {url}\",\n \"ui.studio.hint\": \"\u6309 Ctrl+C \u505C\u6B62\u670D\u52A1\u3002\",\n \"ui.studio.already\": \"UI Studio \u5DF2\u5728\u8FD0\u884C: {url}\",\n \"ui.studio.stopped\": \"UI Studio \u5DF2\u505C\u6B62\u3002\",\n \"ui.studio.notRunning\": \"\u5F53\u524D\u8FDB\u7A0B\u6CA1\u6709\u8FD0\u884C\u4E2D\u7684 UI Studio\u3002\",\n \"ui.studio.failed\": \"\u542F\u52A8 UI Studio \u5931\u8D25: {message}\",\n \"help.section.module\": \" \u6A21\u5757\u7BA1\u7406 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.module.list\": \"\u5217\u51FA\u5DF2\u5B89\u88C5\u6A21\u5757\",\n \"help.module.search\": \"\u5728\u7EBF\u641C\u7D22\u6A21\u5757\",\n \"help.module.install\": \"\u5B89\u88C5\u6A21\u5757\",\n \"help.module.uninstall\": \"\u5378\u8F7D\u5DF2\u5B89\u88C5\u6A21\u5757\",\n \"help.module.verify\": \"\u6821\u9A8C\u6A21\u5757 SHA-256 \u5B8C\u6574\u6027\",\n \"help.module.info\": \"\u663E\u793A\u6A21\u5757\u8BE6\u60C5\",\n \"help.module.toggle\": \"\u542F\u7528/\u7981\u7528\u6A21\u5757\",\n \"help.module.update\": \"\u68C0\u67E5\u5E76\u66F4\u65B0\u5DF2\u5B89\u88C5\u6A21\u5757\",\n \"help.module.pin\": \"\u6253\u5F00\u6216\u5173\u95ED\u6A21\u5757\u81EA\u52A8\u66F4\u65B0\",\n \"help.module.build\": \"\u4ECE\u5DF2\u542F\u7528\u6A21\u5757\u6784\u5EFA\u8D44\u6E90\u5305\",\n \"help.module.reload\": \"\u6784\u5EFA\u5E76\u90E8\u7F72\u8D44\u6E90\u5305\uFF0C\u5728 BDS \u53D1\u9001 reload\u6307\u4EE4\u4EE5\u91CD\u8F7D\u811A\u672C\",\n \"help.section.addon\": \" \u8D44\u6E90\u5305\u7BA1\u7406 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.addon\": \"\u8D44\u6E90\u5305\u6536\u4EF6\u7BB1\u7BA1\u7406\",\n \"help.packs.list\": \"\u5DF2\u5B89\u88C5\u8D44\u6E90\u5305\u5217\u8868\",\n \"help.packs.search\": \"\u5728\u7EBF\u641C\u7D22\u8D44\u6E90\u5305\",\n \"help.packs.enable\": \"\u542F\u7528\u8D44\u6E90\u5305\",\n \"help.packs.disable\": \"\u7981\u7528\u8D44\u6E90\u5305\",\n \"help.packs.doctor\": \"\u8BCA\u65AD\u8D44\u6E90\u5305\u63A5\u7EBF\",\n \"help.packs.doctor.fix\": \"\u4FEE\u590D\u63A5\u7EBF\u5E76\u8865\u9F50\u7F3A\u5931\u7684\u6D4B\u8BD5\u7248 API\",\n \"help.packs.doctor.allExperiments\": \"\u5F00\u542F\u5168\u90E8\u5DF2\u77E5\u5B9E\u9A8C\u6027\u73A9\u6CD5\",\n \"help.packs.doctor.experiments\": \"\u4EC5\u67E5\u770B\u5B9E\u9A8C\u6027\u5F00\u5173\u72B6\u6001\",\n \"help.packs.doctor.experimentsList\":\n \"\u6309\u522B\u540D\u5F00\u542F\uFF0C\u9017\u53F7\u5206\u9694\uFF1Abeta, upcoming, cameras, voxel, villager, drop3, edu\",\n \"help.packs.path\": \"\u663E\u793A\u8D44\u6E90\u5305\u8DEF\u5F84\",\n \"help.section.general\": \" \u901A\u7528 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.init\": \"\u521D\u59CB\u5316\u5411\u5BFC\",\n \"help.locale\": \"\u8BBE\u7F6E CLI \u8BED\u8A00\",\n \"help.version\": \"\u663E\u793A\u7248\u672C\",\n \"help.help\": \"\u663E\u793A\u5E2E\u52A9\",\n \"help.quit\": \"\u9000\u51FA CLI\uFF08\u540E\u53F0\u670D\u52A1\u7EE7\u7EED\u8FD0\u884C\uFF09\",\n \"help.shortcuts\": \"\u5FEB\u6377\u952E:\",\n \"help.shortcut.tab\": \"\u5207\u6362\u53D1\u9001\u76EE\u6807 / \u547D\u4EE4\u5217\u8868\u9009\u62E9\",\n \"help.shortcut.right\": \"\u63A5\u53D7\u5EFA\u8BAE\",\n \"help.shortcut.ctrll\": \"\u8FC7\u6EE4\u65E5\u5FD7\u7EA7\u522B / \u6765\u6E90 / \u5386\u53F2\",\n \"help.shortcut.history\": \"\u547D\u4EE4\u5386\u53F2\",\n\n /* \u2500\u2500\u2500 REPL \u2500\u2500\u2500 */\n \"repl.stopping\": \"\u6B63\u5728\u505C\u6B62\u670D\u52A1...\",\n \"repl.detach\": \"\u5DF2\u65AD\u5F00 CLI\uFF08\u540E\u53F0\u670D\u52A1\u7EE7\u7EED\u8FD0\u884C\uFF1B\u505C\u670D\u7528 stop / daemon stop\uFF09\",\n \"repl.bye\": \"bye...\",\n \"repl.forceStop\": \"\u6B63\u5728\u5F3A\u5236\u505C\u6B62\u670D\u52A1...\",\n \"repl.nonInteractive\": \" \u975E\u4EA4\u4E92\u6A21\u5F0F\uFF08\u68C0\u6D4B\u5230\u7BA1\u9053\uFF09\\n\",\n\n /* \u2500\u2500\u2500 \u5B88\u62A4\u8FDB\u7A0B \u2500\u2500\u2500 */\n \"daemon.stopped\": \"\u5B88\u62A4\u8FDB\u7A0B\u5DF2\u505C\u6B62\",\n \"daemon.notRunning\": \"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\",\n \"daemon.running\": \"\u5B88\u62A4\u8FDB\u7A0B\u8FD0\u884C\u4E2D (PID {pid})\",\n \"daemon.usage\": \"\u7528\u6CD5: daemon [status|stop]\",\n \"daemon.connectFailed\": \"\u65E0\u6CD5\u8FDE\u63A5\u5B88\u62A4\u8FDB\u7A0B: {message}\",\n \"help.daemon\": \"\u67E5\u770B/\u505C\u6B62\u540E\u53F0\u5B88\u62A4\u8FDB\u7A0B\",\n \"help.daemon.status\": \"\u67E5\u770B\u5B88\u62A4\u8FDB\u7A0B\u662F\u5426\u5728\u8FD0\u884C\",\n \"help.daemon.stop\": \"\u505C\u6B62\u540E\u53F0\u5B88\u62A4\u8FDB\u7A0B\",\n \"palette.asIs\": \"\u76F4\u63A5\u8FD0\u884C\",\n \"palette.fixOnly\": \"\u4EC5\u4FEE\u590D\",\n \"palette.localeCurrent\": \"\u5F53\u524D\u8BED\u8A00\",\n \"repl.historyHeader\": \"\u2500\u2500 \u5386\u53F2 {count} \u884C \u2500\u2500\",\n \"repl.filter\": \"\u8FC7\u6EE4: {level} / {source} / {history}\",\n \"repl.followRequiresTty\": \"\u8DDF\u8E2A\u6A21\u5F0F\u9700\u8981 TTY\",\n \"repl.logsReplOnly\": \"logs \u4EC5\u5728\u4EA4\u4E92 REPL \u4E2D\u53EF\u7528\",\n \"repl.history.live\": \"\u5B9E\u65F6\",\n \"repl.history.last50\": \"\u6700\u8FD1 50 \u6761\",\n \"repl.history.last100\": \"\u6700\u8FD1 100 \u6761\",\n \"repl.history.last500\": \"\u6700\u8FD1 500 \u6761\",\n \"repl.history.last1000\": \"\u6700\u8FD1 1000 \u6761\",\n \"repl.history.last1min\": \"\u6700\u8FD1 1 \u5206\u949F\",\n \"repl.history.last5min\": \"\u6700\u8FD1 5 \u5206\u949F\",\n \"repl.history.last15min\": \"\u6700\u8FD1 15 \u5206\u949F\",\n \"repl.history.last1hour\": \"\u6700\u8FD1 1 \u5C0F\u65F6\",\n \"repl.history.all\": \"\u7F13\u51B2\u5168\u90E8\",\n\n /* \u2500\u2500\u2500 \u670D\u52A1\u63A7\u5236 \u2500\u2500\u2500 */\n \"svc.header\": \"\u670D\u52A1\",\n \"svc.col.name\": \"\u540D\u79F0\",\n \"svc.col.status\": \"\u72B6\u6001\",\n \"svc.col.owner\": \"\u5F52\u5C5E\",\n \"svc.col.pid\": \"PID\",\n \"svc.col.uptime\": \"\u8FD0\u884C\u65F6\u957F\",\n \"svc.state.running\": \"\u8FD0\u884C\u4E2D\",\n \"svc.state.stopped\": \"\u5DF2\u505C\u6B62\",\n \"svc.owner.managed\": \"\u63A5\u7BA1\",\n \"svc.owner.external\": \"\u5916\u90E8\",\n \"svc.owner.none\": \"\u2014\",\n \"svc.running\": \"\u8FD0\u884C\u4E2D - \u5DF2\u63A5\u7BA1\",\n \"svc.runningExternal\": \"\u8FD0\u884C\u4E2D - \u5916\u90E8\",\n \"svc.stopped\": \"\u5DF2\u505C\u6B62\",\n \"svc.unknown\": \"\u672A\u77E5\u670D\u52A1: {name}\uFF08\u53EF\u9009: {list}\uFF09\",\n \"svc.logs.usage\": \"\u7528\u6CD5: logs <service> [-n N] [-f]\",\n \"svc.logs.empty\": \"\uFF08\u6682\u65E0\u65E5\u5FD7\uFF09\",\n \"svc.logs.header\": \"{title} \u65E5\u5FD7\uFF08\u6700\u8FD1 {count} \u6761\uFF09:\",\n \"svc.start.usage\": \"\u7528\u6CD5: start <service>|-all\",\n \"svc.start.usageShort\": \"\u7528\u6CD5: start <service>|-all\",\n \"svc.stop.usage\": \"\u7528\u6CD5: stop <service>|-all\",\n \"svc.stop.usageShort\": \"\u7528\u6CD5: stop <service>|-all\",\n \"svc.restart.usage\": \"\u7528\u6CD5: restart <service>|-all\",\n \"svc.restart.usageShort\": \"\u7528\u6CD5: restart <service>|-all\",\n \"svc.alreadyRunning\": \"{title} \u5DF2\u5728\u8FD0\u884C\uFF08PID {pid}\uFF09\",\n \"svc.alreadyStarting\": \"{title} \u6B63\u5728\u542F\u52A8...\",\n \"svc.started\": \"{title} \u5DF2\u542F\u52A8\",\n \"svc.startFailed\": \"{title} \u5931\u8D25: {message}\",\n \"svc.alreadyStopped\": \"{title} \u5DF2\u505C\u6B62\",\n \"svc.alreadyStopping\": \"{title} \u6B63\u5728\u505C\u6B62...\",\n \"svc.stoppedMsg\": \"{title} \u5DF2\u505C\u6B62\",\n \"svc.stopFailed\": \"{title} \u505C\u6B62\u5931\u8D25: {message}\",\n \"svc.send.usage\": \"\u7528\u6CD5: send <service> <message>\",\n \"svc.notRunning\": \"{title} \u672A\u8FD0\u884C\",\n \"svc.writeFailed\": \"\u5199\u5165\u5931\u8D25\",\n \"svc.restarted\": \"{title} \u5DF2\u91CD\u542F\",\n \"svc.restartFailed\": \"{title} \u91CD\u542F\u5931\u8D25: {message}\",\n \"svc.allStarted\": \"\u5168\u90E8\u670D\u52A1\u5DF2\u542F\u52A8\",\n \"svc.allStopped\": \"\u5168\u90E8\u670D\u52A1\u5DF2\u505C\u6B62\",\n \"svc.skipped\": \"{title} \u5DF2\u8DF3\u8FC7: {reason}\",\n \"svc.startAll.started\": \"\u5DF2\u542F\u52A8: {list}\",\n \"svc.startAll.skipped\": \"\u5DF2\u8DF3\u8FC7: {list}\",\n \"svc.startAll.failed\": \"\u542F\u52A8\u5931\u8D25: {list}\",\n \"svc.startAll.empty\": \"\u6CA1\u6709\u670D\u52A1\u9700\u8981\u542F\u52A8\",\n \"svc.updateComplete\": \"\u66F4\u65B0\u5B8C\u6210\",\n \"svc.updateExited\": \"\u66F4\u65B0\u8FDB\u7A0B\u9000\u51FA\uFF0C\u4EE3\u7801 {code}\",\n \"svc.updateError\": \"\u66F4\u65B0\u9519\u8BEF: {message}\",\n \"svc.updateStartBds\": \"\u66F4\u65B0: \u901A\u8FC7\u8FDB\u7A0B\u76D1\u7763\u5668\u542F\u52A8 BDS\",\n \"svc.bdsStarted\": \"BDS \u5DF2\u542F\u52A8\uFF08\u76D1\u7763\u6A21\u5F0F\uFF09\",\n \"svc.bdsStartFailed\": \"BDS \u542F\u52A8\u5931\u8D25: {message}\",\n \"svc.bdsStoppedForUpdate\": \"\u66F4\u65B0\u65F6\u5DF2\u505C\u6B62 BDS\uFF1B\u5C31\u7EEA\u540E\u8BF7\u6267\u884C `start bds`\",\n \"svc.bdsAlreadyRunning\": \"BDS \u5DF2\u5728\u8FD0\u884C\uFF08{kind}\uFF0CPID {pid}\uFF09\",\n \"svc.stdinUnavailable\": \"{title} \u7531\u5916\u90E8\u542F\u52A8\uFF0C\u65E0\u6CD5\u901A\u8FC7 stdin \u53D1\u9001\u547D\u4EE4\",\n \"svc.stoppedExternal\": \"{title} \u5DF2\u505C\u6B62\uFF08\u5916\u90E8\u8FDB\u7A0B\uFF09\",\n\n /* \u2500\u2500\u2500 \u521D\u59CB\u5316 \u2500\u2500\u2500 */\n \"wizard.intro\": \"\u521D\u59CB\u5316\",\n \"wizard.rerun\": \"\u5DF2\u521D\u59CB\u5316\u3002\u662F\u5426\u91CD\u65B0\u8FD0\u884C\u5411\u5BFC\uFF1F\",\n \"wizard.skipped\": \"\u5DF2\u8DF3\u8FC7\u521D\u59CB\u5316\",\n \"wizard.step1\": \"\u6B65\u9AA4 1 - \u8FD0\u884C\u73AF\u5883\",\n \"wizard.runtimeRoot\": \"\u8FD0\u884C\u6839\u76EE\u5F55: {root}\",\n \"wizard.runtimeMissingAssets\": \"\u8FD0\u884C\u73AF\u5883\u7F3A\u5C11\u5FC5\u9700\u76EE\u5F55: {list}\",\n \"wizard.prepFailed\": \"\u8FD0\u884C\u73AF\u5883\u51C6\u5907\u5931\u8D25: {message}\",\n \"wizard.step2\": \"\u6B65\u9AA4 2 - \u5916\u90E8\u8FD0\u884C\u65F6\",\n \"wizard.step2Note\": \"\u5148\u786E\u8BA4 BDS \u76EE\u5F55\u3002\u6570\u636E\u5E93\u3001\u5907\u4EFD\u548C QQ \u53EF\u4EE5\u6CBF\u7528\u9ED8\u8BA4\u503C\u3002\",\n \"wizard.bdsDir\": \"BDS \u5B89\u88C5\u76EE\u5F55\",\n \"wizard.cannotCreateBds\": \"\u65E0\u6CD5\u521B\u5EFA BDS \u5B89\u88C5\u76EE\u5F55: {dir}\",\n \"wizard.qqBackend\": \"QQ \u6865\u63A5\u540E\u7AEF:\",\n \"wizard.qqBackend.official\": \"QQ \u5F00\u653E\u5E73\u53F0\uFF08\u5B98\u65B9 Bot\uFF09\",\n \"wizard.qqBackend.officialHint\": \"\u9700 AppID / AppSecret\uFF0C\u53EF\u7A0D\u540E\u914D\u7F6E\",\n \"wizard.qqBackend.llbot\": \"LLBot\uFF08OneBot 11\uFF09\",\n \"wizard.qqBackend.llbotHint\": \"\u9700\u672C\u673A LLBot \u8FDB\u7A0B\",\n \"wizard.qqBackend.disabled\": \"\u6682\u4E0D\u542F\u7528 QQ \u6865\",\n \"wizard.qqBackend.disabledHint\": \"qq_enabled=false\",\n \"wizard.qqAppId\": \"QQ \u5F00\u653E\u5E73\u53F0 AppID:\",\n \"wizard.qqAppSecret\": \"QQ \u5F00\u653E\u5E73\u53F0 AppSecret:\",\n \"wizard.qqSandbox\": \"\u4F7F\u7528\u6C99\u7BB1\u73AF\u5883\uFF1F\",\n \"wizard.qqGroupOpenid\": \"\u7FA4 openid\uFF08\u53EF\u7A0D\u540E\u586B\u5199\uFF09:\",\n \"wizard.qqGroupOpenidHint\": \"\u975E\u4F20\u7EDF\u7FA4\u53F7\",\n \"wizard.enableLlbot\": \"\u542F\u7528 LLBot \u8FDB\u7A0B\u63A5\u7BA1\uFF1F\",\n \"wizard.llbotDir\": \"LLBot \u8FD0\u884C\u76EE\u5F55\",\n \"wizard.usingDefault\": \"\u4F7F\u7528\u9ED8\u8BA4: {path}\",\n \"wizard.dbDir\": \"\u6570\u636E\u5E93\u5B58\u50A8\u76EE\u5F55\",\n \"wizard.dbPort\": \"\u6570\u636E\u5E93\u670D\u52A1\u7AEF\u53E3:\",\n \"wizard.portRange\": \"\u8BF7\u8F93\u5165 1024\u201365535\",\n \"wizard.valueRequired\": \"\u6B64\u9879\u5FC5\u586B\uFF01\",\n \"wizard.step3\": \"\u6B65\u9AA4 3 - BDS \u73AF\u5883\",\n \"wizard.bdsFound\": \"\u5DF2\u627E\u5230: {path}\",\n \"wizard.bdsNotFound\": \"\u672A\u627E\u5230: {path}\",\n \"wizard.eula\": \"\u662F\u5426\u540C\u610F Mojang \u53D1\u5E03\u7684 EULA(https://www.minecraft.net/en-us/eula)\uFF1F\u4F7F\u7528\u672C\u7A0B\u5E8F\u524D\u5FC5\u987B\u540C\u610F\u3002\",\n \"wizard.disagreed\": \"\u5DF2\u62D2\u7EDD\u3002\",\n \"wizard.downloadBds\": \"\u73B0\u5728\u4E0B\u8F7D BDS\uFF1F\",\n \"wizard.selectChannel\": \"\u9009\u62E9\u901A\u9053:\",\n \"wizard.channel.release\": \"Release\",\n \"wizard.channel.releaseHint\": \"\u7A33\u5B9A\u7248\",\n \"wizard.channel.preview\": \"Preview\",\n \"wizard.channel.previewHint\": \"\u9884\u89C8\u7248\",\n \"wizard.cannotCreateBackup\": \"\u65E0\u6CD5\u521B\u5EFA BDS \u5907\u4EFD\u76EE\u5F55: {dir}\",\n \"wizard.backupDir\": \"BDS \u5907\u4EFD\u76EE\u5F55\",\n \"wizard.preserve\": \"\u66F4\u65B0\u65F6\u4FDD\u7559\u7684\u6587\u4EF6\uFF08\u4E0B\u6B21\u542F\u7528\u66F4\u65B0\u65F6\uFF09:\",\n \"wizard.preserve.serverProps\": \"\u670D\u52A1\u5668\u914D\u7F6E\",\n \"wizard.preserve.worlds\": \"\u4E16\u754C\u6570\u636E\",\n \"wizard.preserve.config\": \"\u914D\u7F6E\u76EE\u5F55\",\n \"wizard.updaterTip\": \"\u82E5\u627E\u4E0D\u5230 BDS \u8FD0\u884C\u65F6\uFF0C\u7A0D\u540E\u4F1A\u81EA\u52A8\u4E0B\u8F7DBDS\u3002\\n \u53EF\u5728 configs/bds_updater.json \u4E2D\u914D\u7F6E\u66F4\u65B0\u9009\u9879\u3002\",\n \"wizard.step4\": \"\u6B65\u9AA4 4 - \u6A21\u5757\",\n \"wizard.modulesFound\": \"\u53D1\u73B0 {count} \u4E2A\u53EF\u9009\u6A21\u5757\",\n \"wizard.modulesNone\": \"\u8FD8\u6CA1\u6709\u5DF2\u5B89\u88C5\u7684\u6A21\u5757\u3002\",\n \"wizard.useDefaults\": \"\u6570\u636E\u5E93\u3001\u5907\u4EFD\u76EE\u5F55\u548C\u66F4\u65B0\u4FDD\u7559\u9879\u4F7F\u7528\u9ED8\u8BA4\u503C\uFF1F\",\n \"wizard.defaultsApplied\": \"\u6570\u636E\u5E93 {db}\uFF08\u7AEF\u53E3 {port}\uFF09\uFF0C\u5907\u4EFD {backup}\u3002\",\n \"wizard.installFromRegistry\": \"\u4ECE\u5B98\u65B9\u7D22\u5F15\u5B89\u88C5\u6A21\u5757\uFF08\u53EF\u8DF3\u8FC7\uFF09\uFF1A\",\n \"wizard.registryLoading\": \"\u6B63\u5728\u8BFB\u53D6\u5B98\u65B9\u6A21\u5757\u7D22\u5F15\",\n \"wizard.registryOffline\": \"\u5B98\u65B9\u7D22\u5F15\u4E0D\u53EF\u7528\u3002\u7A0D\u540E\u6267\u884C `mod install <id>`\u3002\",\n \"wizard.enableModules\": \"\u542F\u7528\u6A21\u5757:\",\n \"wizard.emptyHint\": \"\uFF08\u7A7A\uFF09\",\n \"wizard.updatingConfigs\": \"\u6B63\u5728\u66F4\u65B0\u914D\u7F6E\",\n \"wizard.configsUpdated\": \"\u914D\u7F6E\u5DF2\u66F4\u65B0\",\n \"wizard.updatingModules\": \"\u6B63\u5728\u66F4\u65B0\u6A21\u5757\u72B6\u6001\",\n \"wizard.modulesUpdated\": \"\u6A21\u5757\u72B6\u6001\u5DF2\u66F4\u65B0\",\n \"wizard.initDb\": \"\u6B63\u5728\u521D\u59CB\u5316\u6570\u636E\u5E93\",\n \"wizard.dbTimeout\": \"\u6570\u636E\u5E93\u542F\u52A8\u8D85\u65F6\",\n \"wizard.dbOk\": \"\u6570\u636E\u5E93\u5DF2\u521D\u59CB\u5316\",\n \"wizard.downloadingBds\": \"\u6B63\u5728\u4E0B\u8F7D BDS\",\n \"wizard.downloadFail\": \"\u4E0B\u8F7D\u5931\u8D25\u3002\",\n \"wizard.bdsDownloaded\": \"BDS \u5DF2\u4E0B\u8F7D\",\n \"wizard.done\": \"\u5B8C\u6210\uFF01\u952E\u5165 / \u4EE5\u6267\u884C\u547D\u4EE4\",\n \"wizard.installing\": \"\u6B63\u5728\u5B89\u88C5 {count} \u4E2A\u6A21\u5757\",\n \"wizard.installed\": \"\u5DF2\u5B89\u88C5 {count} \u4E2A\",\n \"wizard.installFailed\": \"\u5B89\u88C5\u5931\u8D25: {message}\\n\u53EF\u7A0D\u540E\u6267\u884C: mod install <id>\",\n \"wizard.fetchMissing\": \"\u7F3A\u5C11 fetch-module \u2014 \u8BF7\u7A0D\u540E\u5BF9\u4EE5\u4E0B\u6A21\u5757\u6267\u884C `mod install <id>`: {list}\",\n \"wizard.noModulesSelected\": \"\u672A\u9009\u62E9\u6A21\u5757 \u2014 \u884C\u4E3A\u5305\u5C06\u4E3A\u7A7A\uFF0C\u76F4\u5230\u6267\u884C `mod install <id>` \u5B89\u88C5\u6A21\u5757\u3002\",\n \"wizard.buildingBp\": \"\u6B63\u5728\u6784\u5EFA\u884C\u4E3A\u5305\",\n \"wizard.buildFailed\": \"\u6784\u5EFA\u5931\u8D25: {message}\\n\u7A0D\u540E\u53EF\u6267\u884C `mod build` \u91CD\u8BD5\u3002\",\n \"wizard.deploying\": \"\u6B63\u5728\u90E8\u7F72\u5230 {path}\",\n \"wizard.restartBds\": \"\u8BF7\u91CD\u542F BDS \u4EE5\u52A0\u8F7D\u65B0\u884C\u4E3A\u5305\u3002\",\n \"wizard.deployFailed\": \"\u90E8\u7F72\u5931\u8D25: {message}\\n\u4FEE\u590D configs/ \u4E2D\u7684 bds_path \u540E\u6267\u884C `mod reload`\u3002\",\n\n \"prompt.useDefault\": \"\u4F7F\u7528\u6B64\u8DEF\u5F84\",\n \"prompt.enterPath\": \"\u8F93\u5165\u8DEF\u5F84\",\n \"prompt.browse\": \"\u6D4F\u89C8\u2026\",\n \"prompt.browseHint\": \"\u6253\u5F00\u7CFB\u7EDF\u6587\u4EF6\u5939\u9009\u62E9\u5668\",\n \"prompt.browseUnavailable\": \"\u65E0\u6CD5\u6253\u5F00\u7CFB\u7EDF\u9009\u62E9\u5668\uFF0C\u8BF7\u624B\u52A8\u8F93\u5165\u8DEF\u5F84\",\n\n \"reload.buildOnly\": \"\u6784\u5EFA\u5B8C\u6210\u3002\",\n \"reload.bdsNotRunning\": \"BDS \u672A\u8FD0\u884C \u2014 \u5DF2\u5B8C\u6210\u6784\u5EFA\u3002\",\n \"reload.sent\": \"\u5DF2\u5411 BDS \u53D1\u9001 reload\",\n\n \"bp.usage\": \"\u7528\u6CD5: bp <build|deploy>\",\n\n \"mod.usage\": \"\u7528\u6CD5: sfmc {cmds} <{subs}> [args]\",\n \"mod.list.title\": \"\u5DF2\u5B89\u88C5\u6A21\u5757\",\n \"mod.noneInstalled\": \"\\n\u672A\u5B89\u88C5\u6A21\u5757\u3002\u8BF7\u5C06\u6A21\u5757\u76EE\u5F55\u653E\u5230 {dir}\uFF0C\u6216\u6267\u884C `sfmc mod install <id>`\u3002\\n\",\n \"mod.notInRegistry\": '\u6A21\u5757 \"{query}\" \u4E0D\u5728\u5B98\u65B9 registry \u4E2D\u3002',\n \"mod.info.usage\": \"\u7528\u6CD5: mod info <id>\",\n \"mod.notInstalledAt\": \"\u6A21\u5757 {id} \u672A\u5B89\u88C5\u4E8E {path}\",\n \"mod.notInstalled\": \"\u6A21\u5757 {id} \u672A\u5B89\u88C5\",\n \"mod.verifyOk\": \"{id} \u6B63\u5E38\\n fingerprint: {fp}\\n\",\n \"mod.dbUnreachable\": \"\u65E0\u6CD5\u8FDE\u63A5 db-server {url}: {message}\u3002db \u670D\u52A1\u662F\u5426\u5728\u8FD0\u884C\uFF1F\uFF08sfmc> start db\uFF09\",\n \"mod.toggleFailed\": \"{action} {id} \u5931\u8D25: {err}\",\n \"mod.action.enabled\": \"\u5DF2\u542F\u7528\",\n \"mod.action.disabled\": \"\u5DF2\u7981\u7528\",\n \"mod.toggleOk\": \"{label} {id}\",\n \"mod.toggleBadBody\": \"{action} {id} \u8FD4\u56DE: {text}\",\n \"mod.cannotDisable\": \"\u6A21\u5757 {id} \u4E0D\u53EF\u7981\u7528\uFF08canDisable=false\uFF09\",\n \"mod.toggleLockFailed\": \"\u5199\u5165 module-lock \u5931\u8D25\uFF08{id}\uFF09: {message}\",\n \"mod.toggleDbSkipped\":\n \"\u5DF2\u5199\u5165 module-lock\uFF1Bdb-server \u672A\u540C\u6B65\uFF08{detail}\uFF09\u3002\u4E0B\u6B21 start db \u540E\u5185\u5B58\u6001\u4F1A\u8DDF\u4E0A\uFF1B\u6E38\u620F\u5185\u4ECD\u9700 mod reload / \u91CD\u542F BDS\u3002\",\n \"mod.enable.usage\": \"\u7528\u6CD5: mod enable <id>\",\n \"mod.disable.usage\": \"\u7528\u6CD5: mod disable <id>\",\n \"mod.install.usage\": \"\u7528\u6CD5: mod install <id>\\n mod install <id> --from <scheme> [--link] [--sha256 <hex>]\",\n \"mod.fromUnknown\": \"\u672A\u77E5\u7684 --from \u6765\u6E90: {value}\u3002\u53EF\u7528: npm:|local[:<\u8DEF\u5F84>]|tgz:|zip:|dir:|github:<repo>[@tag]\",\n \"mod.fetchMissing\": \"\u672A\u627E\u5230 fetch-module\u3002\u8BF7\u5B89\u88C5 @sfmc-bds/sfmc \u6216\u5728 monorepo \u5185\u8FD0\u884C\u3002\",\n \"mod.uninstall.usage\": \"\u7528\u6CD5: mod uninstall <id>\",\n \"mod.notInstalledFolder\": \"\u6A21\u5757 {id} \u672A\u5B89\u88C5\uFF08\u76EE\u5F55\u4E0D\u5B58\u5728: {path}\uFF09\",\n \"mod.removed\": \"\u5DF2\u4ECE {path} \u79FB\u9664 {id}\\n\",\n \"mod.update.usage\": \"\u7528\u6CD5: mod update [id...] [--check] [--yes] [--allow-major]\",\n \"mod.update.disabled\": \"\u6A21\u5757\u81EA\u52A8\u66F4\u65B0\u5DF2\u5173\u95ED\uFF08configs/module-update.json\uFF09\u3002\",\n \"mod.update.checkOff\": \"\u6A21\u5757\u66F4\u65B0\u53EA\u5728\u6267\u884C\u66F4\u65B0\u547D\u4EE4\u65F6\u8FDB\u884C\u3002\",\n \"mod.update.none\": \"\u6CA1\u6709\u53EF\u66F4\u65B0\u7684\u6A21\u5757\u3002\",\n \"mod.update.upgrade\": \"{id} {from} -> {to}\",\n \"mod.update.confirm\": \"\u66F4\u65B0 {count} \u4E2A\u6A21\u5757\uFF1F\",\n \"mod.update.cancelled\": \"\u5DF2\u53D6\u6D88\u6A21\u5757\u66F4\u65B0\u3002\",\n \"mod.update.needYes\": \"\u975E\u4EA4\u4E92\u73AF\u5883\u8BF7\u52A0\u4E0A --yes \u624D\u4F1A\u5E94\u7528\u66F4\u65B0\u3002\",\n \"mod.update.applied\": \"\u5DF2\u66F4\u65B0 {id} {from} -> {to}\",\n \"mod.update.failed\": \"\u66F4\u65B0\u5931\u8D25 {id}: {message}\",\n \"mod.update.reloadHint\": \"\u8BF7\u6267\u884C mod reload\uFF0C\u6216\u91CD\u542F BDS\uFF0C\u4F7F\u65B0\u6A21\u5757\u8FDB\u5165\u6E38\u620F\u3002\",\n \"mod.update.reason.autoOff\": \"\u672A\u5F00\u542F\u81EA\u52A8\u66F4\u65B0\",\n \"mod.update.reason.localSource\": \"\u672C\u5730\u94FE\u63A5\u6216\u76EE\u5F55\",\n \"mod.update.reason.registryOffline\": \"\u6A21\u5757\u7D22\u5F15\u4E0D\u53EF\u7528\",\n \"mod.update.reason.noTarget\": \"\u6CA1\u6709\u76EE\u6807\u7248\u672C\",\n \"mod.update.reason.noInstalledVersion\": \"\u8BFB\u4E0D\u5230\u5DF2\u88C5\u7248\u672C\",\n \"mod.update.reason.upToDate\": \"\u5DF2\u662F\u5F53\u524D\u7248\u672C\",\n \"mod.update.reason.installedNewer\": \"\u5DF2\u88C5\u7248\u672C\u66F4\u9AD8\",\n \"mod.update.reason.major\": \"\u4E3B\u7248\u672C\u66F4\u65B0\u5DF2\u8DF3\u8FC7\",\n \"mod.update.reason.sdk\": \"\u4E0D\u6EE1\u8DB3 SDK \u8303\u56F4\",\n \"mod.update.reason.dependencyFailed\": \"\u4F9D\u8D56\u6A21\u5757\u66F4\u65B0\u5931\u8D25\",\n \"mod.update.reason.githubManual\": \"GitHub \u6765\u6E90\u9700\u624B\u52A8\u66F4\u65B0\",\n \"mod.update.reason.missingModule\": \"\u672A\u5B89\u88C5\",\n \"mod.update.reason.missingDependency\": \"\u4F9D\u8D56\u6A21\u5757\u672A\u5B89\u88C5\",\n \"mod.update.reason.badVersion\": \"\u7248\u672C\u53F7\u4E0D\u662F semver\",\n \"mod.pin.usage\": \"\u7528\u6CD5: mod pin <id> --auto on|off\",\n \"mod.pin.ok\": \"{id} \u81EA\u52A8\u66F4\u65B0{state}\",\n \"mod.pin.on\": \"\u5DF2\u6253\u5F00\",\n \"mod.pin.off\": \"\u5DF2\u5173\u95ED\",\n \"mod.pin.locked\": \"{id} \u662F\u672C\u5730\u94FE\u63A5\u3001\u76EE\u5F55\u6216 GitHub \u6765\u6E90\uFF0C\u4E0D\u80FD\u81EA\u52A8\u66F4\u65B0\u3002\",\n \"mod.pin.missing\": \"\u6A21\u5757 {id} \u672A\u5B89\u88C5\u3002\",\n\n \"pack.built\": \"\u5DF2\u6784\u5EFA\u5305\u81F3 {path}\",\n \"pack.buildFailed\": \"pack \u6784\u5EFA\u5931\u8D25: {message}\",\n \"pack.deployed\": \"\u5DF2\u90E8\u7F72\u5305\",\n \"pack.deployFailed\": \"pack \u90E8\u7F72\u5931\u8D25: {message}\",\n \"pack.statusFailed\": \"pack status \u5931\u8D25: {message}\",\n \"pack.listFailed\": \"pack list \u5931\u8D25: {message}\",\n \"pack.noCatalog\": \"\u5C1A\u65E0\u5DF2\u90E8\u7F72 catalog \u2014 \u8BF7\u5148\u6267\u884C `sfmc pack deploy`\",\n \"pack.noUuid\": \"catalog \u4E2D\u65E0 {kind} \u5305 uuid\",\n \"pack.actionFailed\": \"{action} \u5931\u8D25: {detail}\",\n \"pack.enabledOk\": \"\u5DF2\u542F\u7528 {kind} \u5305 {uuid}\",\n \"pack.disabledOk\": \"\u5DF2\u7981\u7528 {kind} \u5305 {uuid}\",\n \"pack.actionErr\": \"pack {action} \u5931\u8D25: {message}\",\n \"pack.usage\": \"\u7528\u6CD5: sfmc pack <{subs}> [behavior|resource]\",\n\n \"packs.restartHint\": \"\u9700\u91CD\u542F BDS \u540E\u751F\u6548\",\n \"packs.rejoinHint\": \"\u5BA2\u6237\u7AEF\u9700\u91CD\u8FDB\u670D\u4EE5\u4E0B\u8F7D\u8D44\u6E90\u5305\",\n \"packs.conflict\": \"\u68C0\u6D4B\u5230\u51B2\u7A81\uFF1A\",\n \"packs.conflict.existing\": \" \u5DF2\u6709: {name} v{version} {uuid}\\n {dir}\",\n \"packs.conflict.incoming\": \" \u65B0\u6765: {name} v{version} {uuid}\",\n \"packs.overwriteAsk\": \"\u8986\u76D6\u5DF2\u6709\u5305\uFF08\u76F8\u540C UUID\uFF0C\u4F46\u7248\u672C\u76F8\u5BF9\u73B0\u5B58\u5305\u8F83\u4F4E\uFF09\uFF1F\",\n \"packs.badManifest\": \"\u65E0\u6CD5\u8BC6\u522B manifest\uFF08\u9700\u542B resources/data/script \u6A21\u5757\uFF0C\u4E14 header \u542B name/uuid/version\uFF09\",\n \"packs.skippedNoOverwrite\": \"\u5DF2\u8DF3\u8FC7\uFF08\u672A\u8986\u76D6\uFF09\",\n \"packs.conflictSkip\": \" \u51B2\u7A81\u8DF3\u8FC7\uFF08\u975E\u4EA4\u4E92\uFF0C\u53EF\u7528 --force\uFF09: {name}\",\n \"packs.inboxSkip\": \" \u8DF3\u8FC7\u6536\u4EF6\u7BB1\uFF1A{message}\",\n \"packs.inboxFound\": \" \u6536\u4EF6\u7BB1\u53D1\u73B0 {count} \u9879 \u2192 {level}\",\n \"packs.alreadyDone\": \" \u5DF2\u5904\u7406\u8FC7\uFF0C\u8DF3\u8FC7: {name}\",\n \"packs.dryRunExtract\": \" dry-run \u89E3\u538B: {name}\",\n \"packs.noPackRoot\": \" \u672A\u627E\u5230\u5305\u6839: {name}\",\n \"packs.installedEnabled\": \" \u5DF2\u5B89\u88C5\u5E76\u542F\u7528 {kind}: {name} v{version}\",\n \"packs.installFailed\": \" \u5B89\u88C5\u5931\u8D25 {name}: {reason}\",\n \"packs.listEmpty\": \"\uFF08\u65E0\uFF09\",\n \"packs.list.bpHeader\": \"\u884C\u4E3A\u5305:\",\n \"packs.list.rpHeader\": \"\u8D44\u6E90\u5305:\",\n \"packs.list.on\": \"\u5F00 \",\n \"packs.list.off\": \"\u5173\",\n \"packs.doctor.parseFail\": \"{file} \u65E0\u6CD5\u89E3\u6790\",\n \"packs.doctor.missingDir\": \"\u6E05\u5355\u6709 uuid \u4F46\u76EE\u5F55\u7F3A\u5931 ({kind}): {uuid}\",\n \"packs.doctor.versionMismatch\": \"\u7248\u672C\u4E0D\u4E00\u81F4 ({kind}): {folder} \u6E05\u5355 {listVer} vs \u78C1\u76D8 {diskVer}\",\n \"packs.doctor.notEnabled\": \"\u5DF2\u5B89\u88C5\u672A\u542F\u7528: [{kind}] {folder} ({uuid})\",\n \"packs.doctor.betaApisMissing\":\n \"\u5F53\u524D\u4E16\u754C\u300C{level}\u300D\u672A\u5F00\u542F\u300C\u6D4B\u8BD5\u7248 API (Beta APIs / gametest)\u300D\uFF0C\u4F46\u4EE5\u4E0B\u884C\u4E3A\u5305\u4F9D\u8D56\u5B83:\\n{packs}\\n \u8FD9\u4E9B\u5305\u7684\u811A\u672C\u5C06\u88AB BDS \u62D2\u7EDD\u52A0\u8F7D\uFF01\u8FD0\u884C packs doctor --fix \u53EF\u4E00\u952E\u5F00\u542F\u3002\",\n \"packs.doctor.betaApisFixed\": \"\u5DF2\u6210\u529F\u4E3A\u4E16\u754C\u300C{level}\u300D\u5F00\u542F\u300C\u6D4B\u8BD5\u7248 API\u300D(gametest = 1b)\uFF0C\u539F\u5B58\u6863\u5DF2\u5907\u4EFD\u81F3: {backup}\",\n \"packs.doctor.betaApisAlreadyOn\": \"\u4E16\u754C\u300C{level}\u300D\u7684\u300C\u6D4B\u8BD5\u7248 API\u300D\u5DF2\u5904\u4E8E\u5F00\u542F\u72B6\u6001\",\n \"packs.doctor.betaApisFailed\": \"\u4E3A\u4E16\u754C\u300C{level}\u300D\u5F00\u542F\u300C\u6D4B\u8BD5\u7248 API\u300D\u5931\u8D25: {error}\",\n \"packs.doctor.ghostPackCleaned\": \"\u5DF2\u6E05\u7406\u5931\u6548\u7684\u65E7\u5305\u6761\u76EE ({kind}): {uuid}\",\n \"packs.doctor.versionSynced\": \"\u5DF2\u540C\u6B65\u7248\u672C ({kind}): {folder} \u6E05\u5355 {listVer} \u2192 \u78C1\u76D8 {diskVer}\",\n \"packs.doctor.permissionsMissing\":\n \"\u4EE5\u4E0B\u884C\u4E3A\u5305\u4F9D\u8D56\u7684\u539F\u751F\u6A21\u5757\u672A\u5728 BDS \u6743\u9650\u914D\u7F6E\u4E2D\u5141\u8BB8\u4F7F\u7528:\\n{list}\\n \u672A\u914D\u7F6E\u6743\u9650\u7684\u6A21\u5757\u5C06\u5728\u8FD0\u884C\u65F6\u88AB BDS \u963B\u65AD\uFF01\u8FD0\u884C packs doctor --fix \u53EF\u4E00\u952E\u81EA\u52A8\u6388\u6743\u3002\",\n \"packs.doctor.permissionsFixed\": \"\u5DF2\u81EA\u52A8\u8865\u9F50\u884C\u4E3A\u5305\u7684\u539F\u751F\u6A21\u5757\u6743\u9650: {perms}\",\n \"packs.doctor.fixedSummary\": \"doctor: \u81EA\u6108\u5B8C\u6210\uFF0C\u5171\u5904\u7406 {count} \u9879\u95EE\u9898\u3002\",\n \"packs.doctor.fixPrompt\": '\u53EF\u8FD0\u884C \"packs doctor --fix\" \u81EA\u52A8\u4FEE\u590D\u4E0A\u8FF0\u95EE\u9898\u3002',\n \"packs.doctor.experimentsStatus\": \"\u5B58\u6863\u5B9E\u9A8C\u6027\u5F00\u5173\u72B6\u6001 (\u4E16\u754C\u300C{level}\u300D):\",\n \"packs.doctor.experimentsFixed\": \"\u5DF2\u6210\u529F\u4E3A\u4E16\u754C\u300C{level}\u300D\u5F00\u542F\u5B9E\u9A8C\u6027\u5F00\u5173 ({list})\uFF0C\u539F\u5B58\u6863\u5DF2\u5907\u4EFD\u81F3: {backup}\",\n \"packs.doctor.experimentsAlreadyOn\": \"\u4E16\u754C\u300C{level}\u300D\u8BF7\u6C42\u7684\u5B9E\u9A8C\u6027\u5F00\u5173\u5DF2\u5904\u4E8E\u5F00\u542F\u72B6\u6001\",\n \"packs.doctor.experimentsFailed\": \"\u4E3A\u4E16\u754C\u300C{level}\u300D\u4FEE\u6539\u5B9E\u9A8C\u6027\u5F00\u5173\u5931\u8D25: {error}\",\n \"packs.doctor.experimentsFixPrompt\": '\u53EF\u8FD0\u884C \"packs doctor --fix --all-experiments\" \u4E00\u952E\u5F00\u542F\u5168\u90E8\u5DF2\u77E5\u5B9E\u9A8C\u6027\u73A9\u6CD5\u3002',\n \"packs.doctor.ok\": \"doctor: \u672A\u53D1\u73B0\u95EE\u9898\",\n \"packs.doctor.found\": \"doctor \u53D1\u73B0 {count} \u9879:\\n{list}\",\n \"packs.notFound\": \"\u672A\u627E\u5230\u5305: {id}\",\n \"packs.toggleDone\": \"{verb} {folder} \u5B8C\u6210\u3002{hint}\",\n \"packs.bump.usage\": \"\u7528\u6CD5: packs bump <uuid|folder> \uFF08\u4EC5 RP\uFF09\",\n \"packs.bump.rpOnly\": \"packs bump \u4EC5\u652F\u6301\u8D44\u6E90\u5305 (RP)\",\n \"packs.bumped\": \"\u5DF2 bump {folder} \u2192 v{version}\u3002{restart}\uFF1B{rejoin}\",\n \"packs.pathMissing\": \"\u8DEF\u5F84\u4E0D\u5B58\u5728: {path}\",\n \"packs.notArchive\": \"\u4E0D\u662F\u5305\u76EE\u5F55\u6216 .zip/.mcpack/.mcaddon\",\n \"packs.noManifestRoot\": \"\u672A\u53D1\u73B0\u542B manifest.json \u7684\u5305\u6839\",\n \"packs.installedLine\": \"\u5DF2\u5B89\u88C5\u5E76\u542F\u7528: {name} v{version} ({kind})\",\n \"packs.skipFailLine\": \"\u8DF3\u8FC7/\u5931\u8D25: {name} ({reason})\",\n \"packs.inboxEmpty\": \"\u6536\u4EF6\u7BB1\u4E3A\u7A7A\",\n \"packs.search.usage\": \"\u7528\u6CD5: packs search <query>\uFF08CurseForge \u8FDC\u7A0B\u641C\u7D22\uFF0C\u9700 API Key\uFF09\",\n \"packs.bind.usage\": \"\u7528\u6CD5: packs bind <uuid|folder> <projectId|slug|url>\",\n \"packs.unbind.usage\": \"\u7528\u6CD5: packs unbind <uuid|folder>\",\n \"packs.unbindOk\": \"\u5DF2\u89E3\u9664\u7ED1\u5B9A {uuid}\uFF08\u7F16\u8F91 {path} \u4EA6\u53EF\uFF09\",\n \"packs.unbindMiss\": \"\u672A\u627E\u5230\u7ED1\u5B9A: {id}\",\n \"packs.update.usage\": \"\u7528\u6CD5: packs update <uuid|folder|--all>\",\n \"packs.toggle.usage\": \"\u7528\u6CD5: packs {verb} <uuid|folder>\",\n \"packs.uninstall.usage\":\n \"\u7528\u6CD5: packs uninstall [uuid|folder...] [--purge] [--no-paired]\\n \u65E0\u53C2\u6570\u4E14\u4E3A TTY \u65F6\u8FDB\u5165\u591A\u9009\uFF1B\u53EF\u4E00\u6B21\u4F20\u591A\u4E2A id\",\n \"packs.uninstall.protected\": \"\u62D2\u7EDD\u5378\u8F7D\u5E73\u53F0\u805A\u5408\u5305: {folder}\uFF08\u8BF7\u7528 sfmc mod\uFF09\",\n \"packs.uninstall.trashed\": \"\u5DF2\u5378\u8F7D\u5E76\u79FB\u5165\u56DE\u6536\u7AD9: {folder}\\n \u2192 {dest}\",\n \"packs.uninstall.deleted\": \"\u5DF2\u5378\u8F7D\u5E76\u5220\u9664: {folder}\",\n \"packs.uninstall.dirMissing\": \"\u6E05\u5355\u5DF2\u79FB\u9664\uFF0C\u76EE\u5F55\u672C\u5C31\u4E0D\u5B58\u5728: {folder}\",\n \"packs.uninstall.bindingRemoved\": \"\u5DF2\u6E05\u9664\u66F4\u65B0\u6E90\u7ED1\u5B9A: {uuid}\",\n \"packs.uninstall.pick\": \"\u9009\u62E9\u8981\u5378\u8F7D\u7684\u8D44\u6E90\u5305\uFF08\u7A7A\u683C\u52FE\u9009\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF09\",\n \"packs.uninstall.summary\": \"\u5C06\u5378\u8F7D\u4EE5\u4E0B {count} \u9879\uFF08\u542B\u914D\u5BF9 RP\uFF09\uFF1A\",\n \"packs.uninstall.confirm\": \"\u786E\u8BA4\u5378\u8F7D\u8FD9 {count} \u9879\uFF1F\",\n \"packs.uninstall.cancelled\": \"\u5DF2\u53D6\u6D88\u5378\u8F7D\",\n \"packs.uninstall.none\": \"\u6CA1\u6709\u53EF\u5378\u8F7D\u7684\u8D44\u6E90\u5305\",\n \"packs.uninstall.pairedOf\": \"\uFF08\u914D\u5BF9\u81EA {folder}\uFF09\",\n \"packs.install.usage\": \"\u7528\u6CD5: packs install [path|--inbox] [--force]\",\n \"packs.installInbox\": \"\u6536\u4EF6\u7BB1\u5B89\u88C5: \u6210\u529F={installed} \u8DF3\u8FC7={skipped} \u5931\u8D25={failed}\",\n \"packs.scanResult\": \"\u626B\u63CF: \u6210\u529F={installed} \u8DF3\u8FC7={skipped} \u5931\u8D25={failed}\",\n \"packs.unknownSub\": \"\u672A\u77E5 packs \u5B50\u547D\u4EE4: {verb}\\n\",\n \"packs.usage.title\": \"{cmd}\uFF08\u522B\u540D {alias}\uFF09\u2014 \u4E16\u754C\u4FA7\u4EFB\u610F BP/RP\",\n \"packs.usage.bump\": \"\u4EC5 RP\uFF0Cpatch \u7248\u672C +1\",\n \"packs.usage.cfSearch\": \"CurseForge \u641C\u7D22\uFF08\u9700 Key\uFF09\",\n \"packs.usage.inbox\": \"\u6536\u4EF6\u7BB1: {path}\",\n \"packs.usage.trash\": \"\u5378\u8F7D\u56DE\u6536\u7AD9: {path}\uFF08pack-update.json \u2192 uninstall.recycleBin\uFF09\",\n \"packs.usage.sources\": \"\u66F4\u65B0\u6E90\u7ED1\u5B9A: {path}\uFF08\u53EF\u624B\u6539 enabled/projectId\uFF09\",\n \"packs.usage.enableNote\": \"\u5B89\u88C5\u9ED8\u8BA4\u5199\u5165 world_*_packs.json \u542F\u7528\uFF1B{hint}\u3002\",\n \"packs.usage.moduleNote\": \"\u6A21\u5757\u805A\u5408\u8BF7\u7528 {cmd}\uFF08\u975E\u672C\u547D\u4EE4\uFF09\u3002\",\n\n \"packUpdate.needKey\":\n \"\u672A\u914D\u7F6E\u4EFB\u4F55 pack \u66F4\u65B0\u6E90\u3002\u8BF7\u7F16\u8F91 {path} \u7684 providers.*.apiKey\uFF08\u6216\u5BF9\u5E94\u73AF\u5883\u53D8\u91CF\uFF09\u3002CurseForge\uFF1Ahttps://console.curseforge.com/ \u7533\u8BF7 Studios Key \u2192 providers.curseforge.apiKey / CURSEFORGE_API_KEY\",\n \"packUpdate.probeNoName\": \"\u65E0\u6CD5\u4ECE manifest / \u6587\u4EF6\u5939\u540D\u6D3E\u751F\u53EF\u641C\u7D22\u540D\u79F0\",\n \"packUpdate.probeQueries\": \"\u63A2\u6D4B\u67E5\u8BE2\u6E90 header={header} folder={folder}\\n \u2192 {queries}\",\n \"packUpdate.probeFail\": \"\u63A2\u6D4B\u66F4\u65B0\u6E90\u5931\u8D25: {message}\",\n \"packUpdate.probeMiss\": \"\u672A\u5728 CurseForge \u627E\u5230\u5339\u914D: {name}\",\n \"packUpdate.probeLowScore\": \"\u5019\u9009\u76F8\u4F3C\u5EA6\u504F\u4F4E: {name} \u2192 {hit} ({score}) {url}\",\n \"packUpdate.probeHit\": \"\u627E\u5230\u53EF\u80FD\u7684\u66F4\u65B0\u6E90: {name} \u2192 {hit} ({score})\\n {url}\",\n \"packUpdate.editHint\": \"\u7A0D\u540E\u53EF\u7F16\u8F91 {path} \u4FEE\u6539/\u5173\u95ED\u5BF9\u5E94\u6E90\uFF08enabled: false\uFF09\",\n \"packUpdate.confirmBind\": \"\u5C06\u6B64 CurseForge \u9879\u76EE\u7ED1\u5B9A\u4E3A\u66F4\u65B0\u6E90\uFF1F {hit}\",\n \"packUpdate.probeAutoBind\": \"\u975E\u4EA4\u4E92\u73AF\u5883\uFF1A\u81EA\u52A8\u7ED1\u5B9A \u2192 {provider}:{slug}\\n {path}\",\n \"packUpdate.probeNoAutoBind\": \"\u975E\u4EA4\u4E92\u73AF\u5883\u4E0D\u81EA\u52A8\u7ED1\u5B9A\uFF1B\u53EF\u7528 packs bind \u624B\u52A8\u7ED1\u5B9A\",\n \"packUpdate.bindSkipped\": \"\u5DF2\u8DF3\u8FC7\u7ED1\u5B9A\",\n \"packUpdate.bindOk\": \"\u5DF2\u7ED1\u5B9A {uuid} \u2192 {provider}:{slug} [{enabled}]\\n \u6587\u4EF6: {path}\",\n \"packUpdate.bindBpOnly\": \"\u53EA\u80FD\u4E3A\u884C\u4E3A\u5305\uFF08BP\uFF09\u7ED1\u5B9A\u66F4\u65B0\u6E90\",\n \"packUpdate.resolveFail\": \"\u65E0\u6CD5\u89E3\u6790 CurseForge \u9879\u76EE: {ref}\",\n \"packUpdate.searchEmpty\": \"CurseForge \u65E0\u7ED3\u679C: {query}\",\n \"packUpdate.sourcesHeader\": \"\u914D\u7F6E: {config}\\n\u7ED1\u5B9A: {sources}\",\n \"packUpdate.sourcesEmpty\": \"\u5C1A\u65E0\u7ED1\u5B9A\u3002\u5B89\u88C5 BP \u540E\u4F1A\u5C1D\u8BD5\u63A2\u6D4B\uFF0C\u6216\u4F7F\u7528 packs bind\u3002\",\n \"packUpdate.disabled\": \"pack-update \u5DF2\u5728\u914D\u7F6E\u4E2D\u7981\u7528\",\n \"packUpdate.bindingDisabled\": \"\u7ED1\u5B9A\u5DF2\u5173\u95ED (enabled: false)\",\n \"packUpdate.noRemoteFile\": \"\u8FDC\u7A0B\u65E0\u53EF\u7528\u6587\u4EF6\",\n \"packUpdate.fileNewer\": \"\u8FDC\u7A0B\u6587\u4EF6\u66F4\u65B0: {file} (id={id})\",\n \"packUpdate.upToDate\": \"\u5DF2\u662F\u6700\u65B0\",\n \"packUpdate.needSync\": \"\u8FDC\u7A0B\u6587\u4EF6\u5C1A\u672A\u540C\u6B65\u5230\u4E16\u754C\u76EE\u5F55\uFF08\u7248\u672C {local} \u2261 {remote}\uFF0CfileId={id}\uFF09\",\n \"packUpdate.remoteNoBp\": \"\u8FDC\u7A0B\u5F52\u6863\u4E2D\u672A\u627E\u5230\u884C\u4E3A\u5305\",\n \"packUpdate.bpNewer\": \"BP \u6709\u66F4\u65B0 {local} \u2192 {remote}\",\n \"packUpdate.installFail\": \"\u5B89\u88C5\u5931\u8D25: {reason}\",\n \"packUpdate.installedBp\": \"\u5DF2\u5199\u5165 BP \u2192 {dir} (v{version})\",\n \"packUpdate.installedRp\": \"\u5DF2\u5199\u5165 RP \u2192 {dir} (v{version})\",\n \"packUpdate.rpInstallMiss\": \"\u5F52\u6863\u542B RP \u4F46\u672A\u80FD\u5B89\u88C5\u914D\u5BF9\u8D44\u6E90\u5305\uFF08\u68C0\u67E5 dependencies / pairedResourceUuid\uFF09\",\n \"packUpdate.applied\": \"\u5DF2\u66F4\u65B0 {name} BP={bp} RP={rp}\",\n \"packUpdate.noBinding\": \"\u672A\u627E\u5230\u66F4\u65B0\u6E90\u7ED1\u5B9A: {id}\",\n \"packUpdate.startupFail\": \"\u542F\u52A8\u65F6\u68C0\u67E5\u66F4\u65B0\u5931\u8D25: {message}\",\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- /** 与 init 向导一致:文本输入或系统文件夹选择器。 */
1
+ /** 与 init 向导一致:默认接受建议路径,也可以手输或打开系统文件夹选择器。 */
2
2
  export declare function pickDirectory(message: string, defaultDirectory: string): Promise<string>;
3
3
  export { pickDirectoryDialog, type DirectoryPickerResult } from "./directory-picker.js";
4
4
  export declare function ensureDirectory(directory: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-prompts.d.ts","sourceRoot":"","sources":["../src/interactive-prompts.ts"],"names":[],"mappings":"AAMA,iCAAiC;AACjC,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB9F;AAED,OAAO,EAAE,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAExF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED,wCAAwC;AACxC,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAgB,GAAG,MAAM,CAE3E"}
1
+ {"version":3,"file":"interactive-prompts.d.ts","sourceRoot":"","sources":["../src/interactive-prompts.ts"],"names":[],"mappings":"AAMA,6CAA6C;AAC7C,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B9F;AAED,OAAO,EAAE,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAExF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED,wCAAwC;AACxC,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAgB,GAAG,MAAM,CAE3E"}
@@ -7,11 +7,13 @@ async function pickDirectory(message, defaultDirectory) {
7
7
  const method = await select({
8
8
  message,
9
9
  options: [
10
+ { value: "default", label: t("prompt.useDefault"), hint: defaultDirectory },
10
11
  { value: "text", label: t("prompt.enterPath"), hint: defaultDirectory },
11
12
  { value: "browse", label: t("prompt.browse"), hint: t("prompt.browseHint") }
12
- ]
13
+ ],
14
+ initialValue: "default"
13
15
  });
14
- if (isCancel(method)) return defaultDirectory;
16
+ if (isCancel(method) || method === "default") return defaultDirectory;
15
17
  if (method === "browse") {
16
18
  const result = runNativeDirectoryPicker(message, defaultDirectory);
17
19
  if (result.status === "selected") return result.path;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/interactive-prompts.ts"],
4
- "sourcesContent": ["import { isCancel, select, text } from \"@clack/prompts\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { pickDirectoryDialog as runNativeDirectoryPicker } from \"./directory-picker.js\";\nimport { t } from \"./i18n/index.js\";\n\n/** \u4E0E init \u5411\u5BFC\u4E00\u81F4\uFF1A\u6587\u672C\u8F93\u5165\u6216\u7CFB\u7EDF\u6587\u4EF6\u5939\u9009\u62E9\u5668\u3002 */\nexport async function pickDirectory(message: string, defaultDirectory: string): Promise<string> {\n const method = await select({\n message,\n options: [\n { value: \"text\", label: t(\"prompt.enterPath\"), hint: defaultDirectory },\n { value: \"browse\", label: t(\"prompt.browse\"), hint: t(\"prompt.browseHint\") },\n ],\n });\n if (isCancel(method)) return defaultDirectory;\n\n if (method === \"browse\") {\n const result = runNativeDirectoryPicker(message, defaultDirectory);\n if (result.status === \"selected\") return result.path;\n if (result.status === \"cancelled\") return defaultDirectory;\n\n const selected = await text({\n message: `${message} \u2014 ${t(\"prompt.browseUnavailable\")}`,\n initialValue: defaultDirectory,\n });\n return isCancel(selected) || !selected ? defaultDirectory : selected;\n }\n\n const selected = await text({ message, initialValue: defaultDirectory });\n return isCancel(selected) || !selected ? defaultDirectory : selected;\n}\n\nexport { pickDirectoryDialog, type DirectoryPickerResult } from \"./directory-picker.js\";\n\nexport function ensureDirectory(directory: string): boolean {\n try {\n fs.mkdirSync(directory, { recursive: true });\n return fs.statSync(directory).isDirectory();\n } catch {\n return false;\n }\n}\n\n/** \u5C06\u7528\u6237\u8F93\u5165\u89C4\u8303\u4E3A\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u517C\u5BB9\u542B # \u7684 Windows \u8DEF\u5F84\uFF09\u3002 */\nexport function resolveUserPath(input: string, base = process.cwd()): string {\n return path.resolve(base, input.trim());\n}\n"],
5
- "mappings": "AAAA,SAAS,UAAU,QAAQ,YAAY;AACvC,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,uBAAuB,gCAAgC;AAChE,SAAS,SAAS;AAGlB,eAAsB,cAAc,SAAiB,kBAA2C;AAC9F,QAAM,SAAS,MAAM,OAAO;AAAA,IAC1B;AAAA,IACA,SAAS;AAAA,MACP,EAAE,OAAO,QAAQ,OAAO,EAAE,kBAAkB,GAAG,MAAM,iBAAiB;AAAA,MACtE,EAAE,OAAO,UAAU,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,mBAAmB,EAAE;AAAA,IAC7E;AAAA,EACF,CAAC;AACD,MAAI,SAAS,MAAM,EAAG,QAAO;AAE7B,MAAI,WAAW,UAAU;AACvB,UAAM,SAAS,yBAAyB,SAAS,gBAAgB;AACjE,QAAI,OAAO,WAAW,WAAY,QAAO,OAAO;AAChD,QAAI,OAAO,WAAW,YAAa,QAAO;AAE1C,UAAMA,YAAW,MAAM,KAAK;AAAA,MAC1B,SAAS,GAAG,OAAO,WAAM,EAAE,0BAA0B,CAAC;AAAA,MACtD,cAAc;AAAA,IAChB,CAAC;AACD,WAAO,SAASA,SAAQ,KAAK,CAACA,YAAW,mBAAmBA;AAAA,EAC9D;AAEA,QAAM,WAAW,MAAM,KAAK,EAAE,SAAS,cAAc,iBAAiB,CAAC;AACvE,SAAO,SAAS,QAAQ,KAAK,CAAC,WAAW,mBAAmB;AAC9D;AAEA,SAAS,2BAAuD;AAEzD,SAAS,gBAAgB,WAA4B;AAC1D,MAAI;AACF,OAAG,UAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AAC3C,WAAO,GAAG,SAAS,SAAS,EAAE,YAAY;AAAA,EAC5C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGO,SAAS,gBAAgB,OAAe,OAAO,QAAQ,IAAI,GAAW;AAC3E,SAAO,KAAK,QAAQ,MAAM,MAAM,KAAK,CAAC;AACxC;",
4
+ "sourcesContent": ["import { isCancel, select, text } from \"@clack/prompts\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { pickDirectoryDialog as runNativeDirectoryPicker } from \"./directory-picker.js\";\nimport { t } from \"./i18n/index.js\";\n\n/** \u4E0E init \u5411\u5BFC\u4E00\u81F4\uFF1A\u9ED8\u8BA4\u63A5\u53D7\u5EFA\u8BAE\u8DEF\u5F84\uFF0C\u4E5F\u53EF\u4EE5\u624B\u8F93\u6216\u6253\u5F00\u7CFB\u7EDF\u6587\u4EF6\u5939\u9009\u62E9\u5668\u3002 */\nexport async function pickDirectory(message: string, defaultDirectory: string): Promise<string> {\n const method = await select({\n message,\n options: [\n { value: \"default\", label: t(\"prompt.useDefault\"), hint: defaultDirectory },\n { value: \"text\", label: t(\"prompt.enterPath\"), hint: defaultDirectory },\n { value: \"browse\", label: t(\"prompt.browse\"), hint: t(\"prompt.browseHint\") },\n ],\n initialValue: \"default\",\n });\n if (isCancel(method) || method === \"default\") return defaultDirectory;\n\n if (method === \"browse\") {\n const result = runNativeDirectoryPicker(message, defaultDirectory);\n if (result.status === \"selected\") return result.path;\n if (result.status === \"cancelled\") return defaultDirectory;\n\n const selected = await text({\n message: `${message} \u2014 ${t(\"prompt.browseUnavailable\")}`,\n initialValue: defaultDirectory,\n });\n return isCancel(selected) || !selected ? defaultDirectory : selected;\n }\n\n const selected = await text({ message, initialValue: defaultDirectory });\n return isCancel(selected) || !selected ? defaultDirectory : selected;\n}\n\nexport { pickDirectoryDialog, type DirectoryPickerResult } from \"./directory-picker.js\";\n\nexport function ensureDirectory(directory: string): boolean {\n try {\n fs.mkdirSync(directory, { recursive: true });\n return fs.statSync(directory).isDirectory();\n } catch {\n return false;\n }\n}\n\n/** \u5C06\u7528\u6237\u8F93\u5165\u89C4\u8303\u4E3A\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u517C\u5BB9\u542B # \u7684 Windows \u8DEF\u5F84\uFF09\u3002 */\nexport function resolveUserPath(input: string, base = process.cwd()): string {\n return path.resolve(base, input.trim());\n}\n"],
5
+ "mappings": "AAAA,SAAS,UAAU,QAAQ,YAAY;AACvC,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,SAAS,uBAAuB,gCAAgC;AAChE,SAAS,SAAS;AAGlB,eAAsB,cAAc,SAAiB,kBAA2C;AAC9F,QAAM,SAAS,MAAM,OAAO;AAAA,IAC1B;AAAA,IACA,SAAS;AAAA,MACP,EAAE,OAAO,WAAW,OAAO,EAAE,mBAAmB,GAAG,MAAM,iBAAiB;AAAA,MAC1E,EAAE,OAAO,QAAQ,OAAO,EAAE,kBAAkB,GAAG,MAAM,iBAAiB;AAAA,MACtE,EAAE,OAAO,UAAU,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,mBAAmB,EAAE;AAAA,IAC7E;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AACD,MAAI,SAAS,MAAM,KAAK,WAAW,UAAW,QAAO;AAErD,MAAI,WAAW,UAAU;AACvB,UAAM,SAAS,yBAAyB,SAAS,gBAAgB;AACjE,QAAI,OAAO,WAAW,WAAY,QAAO,OAAO;AAChD,QAAI,OAAO,WAAW,YAAa,QAAO;AAE1C,UAAMA,YAAW,MAAM,KAAK;AAAA,MAC1B,SAAS,GAAG,OAAO,WAAM,EAAE,0BAA0B,CAAC;AAAA,MACtD,cAAc;AAAA,IAChB,CAAC;AACD,WAAO,SAASA,SAAQ,KAAK,CAACA,YAAW,mBAAmBA;AAAA,EAC9D;AAEA,QAAM,WAAW,MAAM,KAAK,EAAE,SAAS,cAAc,iBAAiB,CAAC;AACvE,SAAO,SAAS,QAAQ,KAAK,CAAC,WAAW,mBAAmB;AAC9D;AAEA,SAAS,2BAAuD;AAEzD,SAAS,gBAAgB,WAA4B;AAC1D,MAAI;AACF,OAAG,UAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AAC3C,WAAO,GAAG,SAAS,SAAS,EAAE,YAAY;AAAA,EAC5C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGO,SAAS,gBAAgB,OAAe,OAAO,QAAQ,IAAI,GAAW;AAC3E,SAAO,KAAK,QAAQ,MAAM,MAAM,KAAK,CAAC;AACxC;",
6
6
  "names": ["selected"]
7
7
  }
@@ -2,13 +2,10 @@
2
2
  export declare function ensureModuleUpdateConfigFile(): Promise<void>;
3
3
  /**
4
4
  * mod update:先出计划,交互确认后再换包。
5
- * --check 只报告。开服路径走 runModuleUpdatesOnBdsStart,不经过确认。
5
+ * --check 只报告。模块更新只在执行本命令时进行。
6
6
  */
7
7
  export declare function cmdModuleUpdate(args: string[]): Promise<string>;
8
- /**
9
- * BDS beforeStart:按配置检查,并在 applyOnBdsStart 时直接换包。
10
- * 失败只记日志,不阻止随后的行为包装配。
11
- */
8
+ /** 开服路径已废弃,更新只能走显式命令。 */
12
9
  export declare function runModuleUpdatesOnBdsStart(): Promise<void>;
13
10
  /**
14
11
  * mod pin <id> --auto on|off
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/module-update/index.ts"],"names":[],"mappings":"AA4HA,4BAA4B;AAC5B,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAQlE;AAoGD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BrE;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBhE;AAOD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BlE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/module-update/index.ts"],"names":[],"mappings":"AA4HA,4BAA4B;AAC5B,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAQlE;AAyGD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCrE;AAED,yBAAyB;AACzB,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,CAEhE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BlE"}
@@ -75,7 +75,8 @@ function formatPlan(plan, quiet, showAll, quietEmpty = false) {
75
75
  const lines = [];
76
76
  for (const item of plan.skipped) {
77
77
  if (!showAll && quiet.has(item.reason)) continue;
78
- lines.push(c.dim(` ${item.id} ${reasonText(item.reason, item.detail)}`));
78
+ const versions = item.fromVersion || item.toVersion ? ` ${versionText(item.fromVersion)} -> ${versionText(item.toVersion)}` : "";
79
+ lines.push(c.dim(` ${item.id}${versions} ${reasonText(item.reason, item.detail)}`));
79
80
  }
80
81
  for (const item of plan.upgrades) {
81
82
  lines.push(
@@ -134,7 +135,8 @@ async function cmdModuleUpdate(args) {
134
135
  allowMajor: flags.allowMajor,
135
136
  ids: flags.ids
136
137
  });
137
- const lines = formatPlan(plan, api.QUIET_SKIP_REASONS, flags.check);
138
+ const revealQuietSkips = flags.check || flags.ids.length > 0;
139
+ const lines = formatPlan(plan, api.QUIET_SKIP_REASONS, revealQuietSkips);
138
140
  if (flags.check || plan.configSkipped || plan.upgrades.length === 0) return lines.join("\n");
139
141
  if (!flags.yes) {
140
142
  if (!isCliTty()) return [...lines, c.yellow(t("mod.update.needYes"))].join("\n");
@@ -157,33 +159,7 @@ async function cmdModuleUpdate(args) {
157
159
  return [...lines, ...formatApply(result, true)].join("\n");
158
160
  }
159
161
  async function runModuleUpdatesOnBdsStart() {
160
- try {
161
- const api = await loadUpdateApi();
162
- if (!api) return;
163
- const plan = await api.planModuleUpdates({ root: ROOT, startup: true, ids: [] });
164
- for (const line of formatPlan(plan, api.QUIET_SKIP_REASONS, false, true)) {
165
- pushLog(stripColor(line), "module", "info");
166
- }
167
- if (!plan.applyOnStart || plan.upgrades.length === 0) return;
168
- const fetchApi = await loadFetchApi();
169
- if (!fetchApi) return;
170
- const result = await api.applyModuleUpgrades(plan.upgrades, {
171
- root: ROOT,
172
- failMode: plan.failMode,
173
- install: fetchApi.installPreservingLock,
174
- resync: api.resyncInstalledCatalog
175
- });
176
- const level = result.failed.length > 0 ? "warn" : "info";
177
- for (const line of formatApply(result, false)) {
178
- pushLog(stripColor(line), "module", level);
179
- }
180
- } catch (error) {
181
- const message = error instanceof Error ? error.message : String(error);
182
- pushLog(message, "module", "warn");
183
- }
184
- }
185
- function stripColor(text) {
186
- return text.replace(/\x1b\[[0-9;]*m/g, "");
162
+ return;
187
163
  }
188
164
  async function cmdModulePin(args) {
189
165
  let id = "";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/module-update/index.ts"],
4
- "sourcesContent": ["/**\n * \u6A21\u5757\u81EA\u52A8\u66F4\u65B0\u7684 CLI \u5165\u53E3\u3002\n * \u8BA1\u5212\u4E0E\u6362\u5305\u5728 scripts/module-install/lib/module-update.mjs\uFF1B\n * \u8FD9\u91CC\u8D1F\u8D23\u786E\u8BA4\u3001\u6587\u6848\uFF0C\u4EE5\u53CA\u5F00\u670D\u524D\u8C03\u7528\u3002\n */\nimport { confirm, isCancel } from \"@clack/prompts\";\nimport { stdin } from \"node:process\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { isCliTty } from \"../command-surface.js\";\nimport { t, type MessageKey } from \"../i18n/index.js\";\nimport { pushLog } from \"../logs.js\";\nimport { ROOT, resolveFetchModule } from \"../runtime.js\";\nimport { c } from \"../theme.js\";\n\n/** \u4E0E module-update.mjs \u7684\u5347\u7EA7\u5019\u9009\u4E00\u81F4\u3002 */\ninterface ModuleUpgrade {\n id: string;\n fromVersion: string | null;\n toVersion: string | null;\n spec: string;\n requires: string[];\n}\n\n/** \u4E0E module-update.mjs \u7684\u8DF3\u8FC7\u8BB0\u5F55\u4E00\u81F4\u3002 */\ninterface ModuleSkip {\n id: string;\n reason: string;\n fromVersion: string | null;\n toVersion: string | null;\n detail: string;\n}\n\n/** planModuleUpdates \u7684\u8FD4\u56DE\u3002 */\ninterface ModuleUpdatePlan {\n configSkipped: \"disabled\" | \"check-off\" | null;\n applyOnStart: boolean;\n failMode: \"continue\" | \"abort\";\n upgrades: ModuleUpgrade[];\n skipped: ModuleSkip[];\n}\n\n/** applyModuleUpgrades \u7684\u8FD4\u56DE\u3002 */\ninterface ModuleUpdateApplyResult {\n applied: ModuleUpgrade[];\n skipped: ModuleSkip[];\n failed: Array<{ id: string; message: string }>;\n}\n\n/** \u5B89\u88C5\u5668\u5BFC\u51FA\u7684\u4FDD\u7559\u542F\u505C\u5B89\u88C5\u53E3\u3002 */\ninterface FetchModuleApi {\n installPreservingLock: (id: string, spec: string) => Promise<void>;\n}\n\n/** module-update.mjs \u5BFC\u51FA\u9762\u3002\u5F53\u524D\u547D\u4EE4\u4E0E\u5F00\u670D\u94A9\u5B50\u90FD\u53EA\u4F9D\u8D56\u8FD9\u4E00\u5C42\u3002 */\ninterface ModuleUpdateApi {\n ensureModuleUpdateConfigFile: (root?: string) => string;\n planModuleUpdates: (options: {\n root?: string;\n startup?: boolean;\n allowMajor?: boolean;\n ids?: string[];\n }) => Promise<ModuleUpdatePlan>;\n applyModuleUpgrades: (\n upgrades: ModuleUpgrade[],\n deps: {\n root: string;\n failMode: \"continue\" | \"abort\";\n install: (id: string, spec: string) => Promise<void>;\n resync?: (id: string) => void;\n }\n ) => Promise<ModuleUpdateApplyResult>;\n resyncInstalledCatalog: (folder: string) => void;\n setModulePinAuto: (\n root: string,\n id: string,\n auto: boolean\n ) => { ok: true; code: \"ok\"; id: string; auto: boolean } | { ok: false; code: \"missing\" | \"locked\"; id?: string };\n QUIET_SKIP_REASONS: Set<string>;\n}\n\nconst REASON_KEYS: Record<string, MessageKey> = {\n \"auto-off\": \"mod.update.reason.autoOff\",\n \"local-source\": \"mod.update.reason.localSource\",\n \"registry-offline\": \"mod.update.reason.registryOffline\",\n \"no-target\": \"mod.update.reason.noTarget\",\n \"no-installed-version\": \"mod.update.reason.noInstalledVersion\",\n \"up-to-date\": \"mod.update.reason.upToDate\",\n \"installed-newer\": \"mod.update.reason.installedNewer\",\n major: \"mod.update.reason.major\",\n sdk: \"mod.update.reason.sdk\",\n \"dependency-failed\": \"mod.update.reason.dependencyFailed\",\n \"github-manual\": \"mod.update.reason.githubManual\",\n \"missing-module\": \"mod.update.reason.missingModule\",\n \"missing-dependency\": \"mod.update.reason.missingDependency\",\n \"bad-version\": \"mod.update.reason.badVersion\",\n};\n\n/** \u5B9A\u4F4D fetch-module.mjs\u3002\u627E\u4E0D\u5230\u65F6\u8FD4\u56DE null\uFF0C\u8C03\u7528\u65B9\u7ED9\u51FA\u5B89\u88C5\u63D0\u793A\u3002 */\nfunction fetchModuleUrl(): URL | null {\n const script = resolveFetchModule();\n if (!script) return null;\n return pathToFileURL(script);\n}\n\n/** \u4E0E fetch-module \u540C\u76EE\u5F55\u7684\u66F4\u65B0\u5E93\u3002\u4F7F\u7528\u6587\u4EF6\u7CFB\u7EDF\u8DEF\u5F84\u62FC\u63A5\uFF0C\u907F\u514D Windows \u4E0B file URL \u7684 pathname \u88AB dirname \u62C6\u574F\u3002 */\nfunction updateLibUrl(): URL | null {\n const script = resolveFetchModule();\n if (!script) return null;\n return pathToFileURL(path.join(path.dirname(script), \"lib\", \"module-update.mjs\"));\n}\n\nasync function loadUpdateApi(): Promise<ModuleUpdateApi | null> {\n const url = updateLibUrl();\n if (!url) return null;\n return (await import(url.href)) as ModuleUpdateApi;\n}\n\nasync function loadFetchApi(): Promise<FetchModuleApi | null> {\n const url = fetchModuleUrl();\n if (!url) return null;\n return (await import(url.href)) as FetchModuleApi;\n}\n\n/** \u7F3A\u6587\u4EF6\u65F6\u5199\u5165\u9ED8\u8BA4\u7B56\u7565\u3002\u5931\u8D25\u4E0D\u5F71\u54CD\u5176\u4ED6\u547D\u4EE4\u3002 */\nexport async function ensureModuleUpdateConfigFile(): Promise<void> {\n try {\n const api = await loadUpdateApi();\n api?.ensureModuleUpdateConfigFile(ROOT);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n pushLog(message, \"module\", \"warn\");\n }\n}\n\n/**\n * REPL \u5904\u4E8E raw \u6A21\u5F0F\u65F6\uFF0C\u5148\u6682\u65F6\u5173\u6389\uFF0C\u8BA9\u786E\u8BA4\u63D0\u793A\u80FD\u8BFB\u5230\u6574\u884C\u3002\n */\nasync function withCookedStdin<T>(fn: () => Promise<T>): Promise<T> {\n const wasRaw = stdin.isRaw === true;\n if (wasRaw) stdin.setRawMode(false);\n try {\n return await fn();\n } finally {\n if (wasRaw) stdin.setRawMode(true);\n }\n}\n\n/** \u8DF3\u8FC7\u539F\u56E0\u7684\u53EF\u8BFB\u6587\u6848\u3002\u672A\u77E5\u539F\u56E0\u4FDD\u6301\u539F\u6837\u3002 */\nfunction reasonText(reason: string, detail: string): string {\n const key = REASON_KEYS[reason];\n const label = key ? t(key) : reason;\n return detail ? `${label} (${detail})` : label;\n}\n\nfunction versionText(value: string | null): string {\n return value || \"?\";\n}\n\n/**\n * \u628A\u8BA1\u5212\u683C\u5F0F\u5316\u6210\u591A\u884C\u3002startup \u6216\u975E --check \u65F6\u9690\u85CF\u201C\u5DF2\u5173\u95ED / \u5DF2\u6700\u65B0\u201D\u8FD9\u7C7B\u5B89\u9759\u8DF3\u8FC7\u3002\n */\nfunction formatPlan(\n plan: ModuleUpdatePlan,\n quiet: Set<string>,\n showAll: boolean,\n quietEmpty = false\n): string[] {\n if (plan.configSkipped === \"disabled\") return quietEmpty ? [] : [c.yellow(t(\"mod.update.disabled\"))];\n if (plan.configSkipped === \"check-off\") return quietEmpty ? [] : [c.dim(t(\"mod.update.checkOff\"))];\n const lines: string[] = [];\n for (const item of plan.skipped) {\n if (!showAll && quiet.has(item.reason)) continue;\n lines.push(c.dim(` ${item.id} ${reasonText(item.reason, item.detail)}`));\n }\n for (const item of plan.upgrades) {\n lines.push(\n c.green(\n ` ${t(\"mod.update.upgrade\", {\n id: item.id,\n from: versionText(item.fromVersion),\n to: versionText(item.toVersion),\n })}`\n )\n );\n }\n if (plan.upgrades.length === 0 && lines.length === 0 && !quietEmpty) lines.push(c.dim(t(\"mod.update.none\")));\n return lines;\n}\n\nfunction formatApply(result: ModuleUpdateApplyResult, hintReload: boolean): string[] {\n const lines: string[] = [];\n for (const item of result.applied) {\n lines.push(\n c.green(\n t(\"mod.update.applied\", {\n id: item.id,\n from: versionText(item.fromVersion),\n to: versionText(item.toVersion),\n })\n )\n );\n }\n for (const item of result.skipped) {\n lines.push(c.yellow(` ${item.id} ${reasonText(item.reason, item.detail)}`));\n }\n for (const item of result.failed) {\n lines.push(c.red(t(\"mod.update.failed\", { id: item.id, message: item.message })));\n }\n if (hintReload && result.applied.length > 0) lines.push(c.yellow(t(\"mod.update.reloadHint\")));\n return lines;\n}\n\ninterface UpdateFlags {\n check: boolean;\n yes: boolean;\n allowMajor: boolean;\n ids: string[];\n}\n\n/** \u89E3\u6790 mod update \u7684\u65D7\u6807\u3002\u672A\u77E5\u65D7\u6807\u8FD4\u56DE null\u3002 */\nfunction parseUpdateFlags(args: string[]): UpdateFlags | null {\n const flags: UpdateFlags = { check: false, yes: false, allowMajor: false, ids: [] };\n for (const arg of args) {\n if (arg === \"--check\") flags.check = true;\n else if (arg === \"--yes\") flags.yes = true;\n else if (arg === \"--allow-major\") flags.allowMajor = true;\n else if (arg.startsWith(\"--\")) return null;\n else flags.ids.push(arg);\n }\n return flags;\n}\n\n/**\n * mod update\uFF1A\u5148\u51FA\u8BA1\u5212\uFF0C\u4EA4\u4E92\u786E\u8BA4\u540E\u518D\u6362\u5305\u3002\n * --check \u53EA\u62A5\u544A\u3002\u5F00\u670D\u8DEF\u5F84\u8D70 runModuleUpdatesOnBdsStart\uFF0C\u4E0D\u7ECF\u8FC7\u786E\u8BA4\u3002\n */\nexport async function cmdModuleUpdate(args: string[]): Promise<string> {\n const flags = parseUpdateFlags(args);\n if (!flags) return c.yellow(t(\"mod.update.usage\"));\n const api = await loadUpdateApi();\n if (!api) return c.red(t(\"mod.fetchMissing\"));\n const plan = await api.planModuleUpdates({\n root: ROOT,\n allowMajor: flags.allowMajor,\n ids: flags.ids,\n });\n const lines = formatPlan(plan, api.QUIET_SKIP_REASONS, flags.check);\n if (flags.check || plan.configSkipped || plan.upgrades.length === 0) return lines.join(\"\\n\");\n if (!flags.yes) {\n if (!isCliTty()) return [...lines, c.yellow(t(\"mod.update.needYes\"))].join(\"\\n\");\n const ans = await withCookedStdin(() =>\n confirm({\n message: t(\"mod.update.confirm\", { count: plan.upgrades.length }),\n initialValue: true,\n })\n );\n if (isCancel(ans) || !ans) return [...lines, c.dim(t(\"mod.update.cancelled\"))].join(\"\\n\");\n }\n const fetchApi = await loadFetchApi();\n if (!fetchApi) return c.red(t(\"mod.fetchMissing\"));\n const result = await api.applyModuleUpgrades(plan.upgrades, {\n root: ROOT,\n failMode: plan.failMode,\n install: fetchApi.installPreservingLock,\n resync: api.resyncInstalledCatalog,\n });\n return [...lines, ...formatApply(result, true)].join(\"\\n\");\n}\n\n/**\n * BDS beforeStart\uFF1A\u6309\u914D\u7F6E\u68C0\u67E5\uFF0C\u5E76\u5728 applyOnBdsStart \u65F6\u76F4\u63A5\u6362\u5305\u3002\n * \u5931\u8D25\u53EA\u8BB0\u65E5\u5FD7\uFF0C\u4E0D\u963B\u6B62\u968F\u540E\u7684\u884C\u4E3A\u5305\u88C5\u914D\u3002\n */\nexport async function runModuleUpdatesOnBdsStart(): Promise<void> {\n try {\n const api = await loadUpdateApi();\n if (!api) return;\n const plan = await api.planModuleUpdates({ root: ROOT, startup: true, ids: [] });\n for (const line of formatPlan(plan, api.QUIET_SKIP_REASONS, false, true)) {\n pushLog(stripColor(line), \"module\", \"info\");\n }\n if (!plan.applyOnStart || plan.upgrades.length === 0) return;\n const fetchApi = await loadFetchApi();\n if (!fetchApi) return;\n const result = await api.applyModuleUpgrades(plan.upgrades, {\n root: ROOT,\n failMode: plan.failMode,\n install: fetchApi.installPreservingLock,\n resync: api.resyncInstalledCatalog,\n });\n const level = result.failed.length > 0 ? \"warn\" : \"info\";\n for (const line of formatApply(result, false)) {\n pushLog(stripColor(line), \"module\", level);\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n pushLog(message, \"module\", \"warn\");\n }\n}\n\n/** \u53BB\u6389\u4E3B\u9898\u8272\uFF0C\u907F\u514D\u65E5\u5FD7\u6587\u4EF6\u91CC\u7559\u4E0B ANSI\u3002 */\nfunction stripColor(text: string): string {\n return text.replace(/\\x1b\\[[0-9;]*m/g, \"\");\n}\n\n/**\n * mod pin <id> --auto on|off\n * \u94FE\u63A5\u548C\u672C\u5730\u76EE\u5F55\u4E0D\u80FD\u6253\u5F00\u81EA\u52A8\u66F4\u65B0\u3002\n */\nexport async function cmdModulePin(args: string[]): Promise<string> {\n let id = \"\";\n let auto: boolean | null = null;\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--auto\") {\n const value = args[++i];\n if (value === \"on\") auto = true;\n else if (value === \"off\") auto = false;\n else return c.yellow(t(\"mod.pin.usage\"));\n } else if (arg?.startsWith(\"--auto=\")) {\n const value = arg.slice(\"--auto=\".length);\n if (value === \"on\") auto = true;\n else if (value === \"off\") auto = false;\n else return c.yellow(t(\"mod.pin.usage\"));\n } else if (arg?.startsWith(\"--\")) {\n return c.yellow(t(\"mod.pin.usage\"));\n } else if (arg) {\n id = arg;\n }\n }\n if (!id || auto === null) return c.yellow(t(\"mod.pin.usage\"));\n const api = await loadUpdateApi();\n if (!api) return c.red(t(\"mod.fetchMissing\"));\n const result = api.setModulePinAuto(ROOT, id, auto);\n if (!result.ok && result.code === \"locked\") return c.yellow(t(\"mod.pin.locked\", { id: result.id || id }));\n if (!result.ok) return c.yellow(t(\"mod.pin.missing\", { id }));\n return c.green(t(\"mod.pin.ok\", { id: result.id, state: t(result.auto ? \"mod.pin.on\" : \"mod.pin.off\") }));\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * \u6A21\u5757\u66F4\u65B0\u7684 CLI \u5165\u53E3\u3002\n * \u8BA1\u5212\u4E0E\u6362\u5305\u5728 scripts/module-install/lib/module-update.mjs\uFF1B\n * \u8FD9\u91CC\u8D1F\u8D23\u786E\u8BA4\u4E0E\u6587\u6848\u3002\u5F00\u670D\u8DEF\u5F84\u5DF2\u5E9F\u5F03\uFF0C\u66F4\u65B0\u53EA\u80FD\u8D70\u663E\u5F0F\u547D\u4EE4\u3002\n */\nimport { confirm, isCancel } from \"@clack/prompts\";\nimport { stdin } from \"node:process\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { isCliTty } from \"../command-surface.js\";\nimport { t, type MessageKey } from \"../i18n/index.js\";\nimport { pushLog } from \"../logs.js\";\nimport { ROOT, resolveFetchModule } from \"../runtime.js\";\nimport { c } from \"../theme.js\";\n\n/** \u4E0E module-update.mjs \u7684\u5347\u7EA7\u5019\u9009\u4E00\u81F4\u3002 */\ninterface ModuleUpgrade {\n id: string;\n fromVersion: string | null;\n toVersion: string | null;\n spec: string;\n requires: string[];\n}\n\n/** \u4E0E module-update.mjs \u7684\u8DF3\u8FC7\u8BB0\u5F55\u4E00\u81F4\u3002 */\ninterface ModuleSkip {\n id: string;\n reason: string;\n fromVersion: string | null;\n toVersion: string | null;\n detail: string;\n}\n\n/** planModuleUpdates \u7684\u8FD4\u56DE\u3002 */\ninterface ModuleUpdatePlan {\n configSkipped: \"disabled\" | \"check-off\" | null;\n applyOnStart: boolean;\n failMode: \"continue\" | \"abort\";\n upgrades: ModuleUpgrade[];\n skipped: ModuleSkip[];\n}\n\n/** applyModuleUpgrades \u7684\u8FD4\u56DE\u3002 */\ninterface ModuleUpdateApplyResult {\n applied: ModuleUpgrade[];\n skipped: ModuleSkip[];\n failed: Array<{ id: string; message: string }>;\n}\n\n/** \u5B89\u88C5\u5668\u5BFC\u51FA\u7684\u4FDD\u7559\u542F\u505C\u5B89\u88C5\u53E3\u3002 */\ninterface FetchModuleApi {\n installPreservingLock: (id: string, spec: string) => Promise<void>;\n}\n\n/** module-update.mjs \u5BFC\u51FA\u9762\u3002\u663E\u5F0F\u66F4\u65B0\u547D\u4EE4\u4F9D\u8D56\u8FD9\u4E00\u5C42\u3002 */\ninterface ModuleUpdateApi {\n ensureModuleUpdateConfigFile: (root?: string) => string;\n planModuleUpdates: (options: {\n root?: string;\n startup?: boolean;\n allowMajor?: boolean;\n ids?: string[];\n }) => Promise<ModuleUpdatePlan>;\n applyModuleUpgrades: (\n upgrades: ModuleUpgrade[],\n deps: {\n root: string;\n failMode: \"continue\" | \"abort\";\n install: (id: string, spec: string) => Promise<void>;\n resync?: (id: string) => void;\n }\n ) => Promise<ModuleUpdateApplyResult>;\n resyncInstalledCatalog: (folder: string) => void;\n setModulePinAuto: (\n root: string,\n id: string,\n auto: boolean\n ) => { ok: true; code: \"ok\"; id: string; auto: boolean } | { ok: false; code: \"missing\" | \"locked\"; id?: string };\n QUIET_SKIP_REASONS: Set<string>;\n}\n\nconst REASON_KEYS: Record<string, MessageKey> = {\n \"auto-off\": \"mod.update.reason.autoOff\",\n \"local-source\": \"mod.update.reason.localSource\",\n \"registry-offline\": \"mod.update.reason.registryOffline\",\n \"no-target\": \"mod.update.reason.noTarget\",\n \"no-installed-version\": \"mod.update.reason.noInstalledVersion\",\n \"up-to-date\": \"mod.update.reason.upToDate\",\n \"installed-newer\": \"mod.update.reason.installedNewer\",\n major: \"mod.update.reason.major\",\n sdk: \"mod.update.reason.sdk\",\n \"dependency-failed\": \"mod.update.reason.dependencyFailed\",\n \"github-manual\": \"mod.update.reason.githubManual\",\n \"missing-module\": \"mod.update.reason.missingModule\",\n \"missing-dependency\": \"mod.update.reason.missingDependency\",\n \"bad-version\": \"mod.update.reason.badVersion\",\n};\n\n/** \u5B9A\u4F4D fetch-module.mjs\u3002\u627E\u4E0D\u5230\u65F6\u8FD4\u56DE null\uFF0C\u8C03\u7528\u65B9\u7ED9\u51FA\u5B89\u88C5\u63D0\u793A\u3002 */\nfunction fetchModuleUrl(): URL | null {\n const script = resolveFetchModule();\n if (!script) return null;\n return pathToFileURL(script);\n}\n\n/** \u4E0E fetch-module \u540C\u76EE\u5F55\u7684\u66F4\u65B0\u5E93\u3002\u4F7F\u7528\u6587\u4EF6\u7CFB\u7EDF\u8DEF\u5F84\u62FC\u63A5\uFF0C\u907F\u514D Windows \u4E0B file URL \u7684 pathname \u88AB dirname \u62C6\u574F\u3002 */\nfunction updateLibUrl(): URL | null {\n const script = resolveFetchModule();\n if (!script) return null;\n return pathToFileURL(path.join(path.dirname(script), \"lib\", \"module-update.mjs\"));\n}\n\nasync function loadUpdateApi(): Promise<ModuleUpdateApi | null> {\n const url = updateLibUrl();\n if (!url) return null;\n return (await import(url.href)) as ModuleUpdateApi;\n}\n\nasync function loadFetchApi(): Promise<FetchModuleApi | null> {\n const url = fetchModuleUrl();\n if (!url) return null;\n return (await import(url.href)) as FetchModuleApi;\n}\n\n/** \u7F3A\u6587\u4EF6\u65F6\u5199\u5165\u9ED8\u8BA4\u7B56\u7565\u3002\u5931\u8D25\u4E0D\u5F71\u54CD\u5176\u4ED6\u547D\u4EE4\u3002 */\nexport async function ensureModuleUpdateConfigFile(): Promise<void> {\n try {\n const api = await loadUpdateApi();\n api?.ensureModuleUpdateConfigFile(ROOT);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n pushLog(message, \"module\", \"warn\");\n }\n}\n\n/**\n * REPL \u5904\u4E8E raw \u6A21\u5F0F\u65F6\uFF0C\u5148\u6682\u65F6\u5173\u6389\uFF0C\u8BA9\u786E\u8BA4\u63D0\u793A\u80FD\u8BFB\u5230\u6574\u884C\u3002\n */\nasync function withCookedStdin<T>(fn: () => Promise<T>): Promise<T> {\n const wasRaw = stdin.isRaw === true;\n if (wasRaw) stdin.setRawMode(false);\n try {\n return await fn();\n } finally {\n if (wasRaw) stdin.setRawMode(true);\n }\n}\n\n/** \u8DF3\u8FC7\u539F\u56E0\u7684\u53EF\u8BFB\u6587\u6848\u3002\u672A\u77E5\u539F\u56E0\u4FDD\u6301\u539F\u6837\u3002 */\nfunction reasonText(reason: string, detail: string): string {\n const key = REASON_KEYS[reason];\n const label = key ? t(key) : reason;\n return detail ? `${label} (${detail})` : label;\n}\n\nfunction versionText(value: string | null): string {\n return value || \"?\";\n}\n\n/**\n * \u628A\u8BA1\u5212\u683C\u5F0F\u5316\u6210\u591A\u884C\u3002\n * \u6CA1\u70B9\u540D\u6A21\u5757\u3001\u4E5F\u6CA1 --check \u65F6\uFF0C\u9690\u85CF auto-off / local-source / up-to-date\u3002\n * \u70B9\u540D\u4E86 id \u6216 --check \u65F6\u5C55\u5F00\u8FD9\u4E9B\u539F\u56E0\u548C\u7248\u672C\u3002quietEmpty \u4E3A true \u65F6\u4E0D\u8F93\u51FA\u7A7A\u7ED3\u679C\u3002\n */\nfunction formatPlan(\n plan: ModuleUpdatePlan,\n quiet: Set<string>,\n showAll: boolean,\n quietEmpty = false\n): string[] {\n if (plan.configSkipped === \"disabled\") return quietEmpty ? [] : [c.yellow(t(\"mod.update.disabled\"))];\n if (plan.configSkipped === \"check-off\") return quietEmpty ? [] : [c.dim(t(\"mod.update.checkOff\"))];\n const lines: string[] = [];\n for (const item of plan.skipped) {\n if (!showAll && quiet.has(item.reason)) continue;\n /** \u8DF3\u8FC7\u884C\u4E0A\u7684\u7248\u672C\u5BF9\u7167\u3002\u6709\u7D22\u5F15\u76EE\u6807\u65F6\u8BA9\u670D\u4E3B\u770B\u5230 1.0.0 -> 1.2.0\uFF0C\u800C\u4E0D\u662F\u53EA\u770B\u5230\u539F\u56E0\u3002 */\n const versions =\n item.fromVersion || item.toVersion ? ` ${versionText(item.fromVersion)} -> ${versionText(item.toVersion)}` : \"\";\n lines.push(c.dim(` ${item.id}${versions} ${reasonText(item.reason, item.detail)}`));\n }\n for (const item of plan.upgrades) {\n lines.push(\n c.green(\n ` ${t(\"mod.update.upgrade\", {\n id: item.id,\n from: versionText(item.fromVersion),\n to: versionText(item.toVersion),\n })}`\n )\n );\n }\n if (plan.upgrades.length === 0 && lines.length === 0 && !quietEmpty) lines.push(c.dim(t(\"mod.update.none\")));\n return lines;\n}\n\nfunction formatApply(result: ModuleUpdateApplyResult, hintReload: boolean): string[] {\n const lines: string[] = [];\n for (const item of result.applied) {\n lines.push(\n c.green(\n t(\"mod.update.applied\", {\n id: item.id,\n from: versionText(item.fromVersion),\n to: versionText(item.toVersion),\n })\n )\n );\n }\n for (const item of result.skipped) {\n lines.push(c.yellow(` ${item.id} ${reasonText(item.reason, item.detail)}`));\n }\n for (const item of result.failed) {\n lines.push(c.red(t(\"mod.update.failed\", { id: item.id, message: item.message })));\n }\n if (hintReload && result.applied.length > 0) lines.push(c.yellow(t(\"mod.update.reloadHint\")));\n return lines;\n}\n\ninterface UpdateFlags {\n check: boolean;\n yes: boolean;\n allowMajor: boolean;\n ids: string[];\n}\n\n/** \u89E3\u6790 mod update \u7684\u65D7\u6807\u3002\u672A\u77E5\u65D7\u6807\u8FD4\u56DE null\u3002 */\nfunction parseUpdateFlags(args: string[]): UpdateFlags | null {\n const flags: UpdateFlags = { check: false, yes: false, allowMajor: false, ids: [] };\n for (const arg of args) {\n if (arg === \"--check\") flags.check = true;\n else if (arg === \"--yes\") flags.yes = true;\n else if (arg === \"--allow-major\") flags.allowMajor = true;\n else if (arg.startsWith(\"--\")) return null;\n else flags.ids.push(arg);\n }\n return flags;\n}\n\n/**\n * mod update\uFF1A\u5148\u51FA\u8BA1\u5212\uFF0C\u4EA4\u4E92\u786E\u8BA4\u540E\u518D\u6362\u5305\u3002\n * --check \u53EA\u62A5\u544A\u3002\u6A21\u5757\u66F4\u65B0\u53EA\u5728\u6267\u884C\u672C\u547D\u4EE4\u65F6\u8FDB\u884C\u3002\n */\nexport async function cmdModuleUpdate(args: string[]): Promise<string> {\n const flags = parseUpdateFlags(args);\n if (!flags) return c.yellow(t(\"mod.update.usage\"));\n const api = await loadUpdateApi();\n if (!api) return c.red(t(\"mod.fetchMissing\"));\n const plan = await api.planModuleUpdates({\n root: ROOT,\n allowMajor: flags.allowMajor,\n ids: flags.ids,\n });\n /** \u70B9\u540D\u4E86\u6A21\u5757\u6216\u663E\u5F0F --check \u65F6\u5C55\u5F00\u5B89\u9759\u8DF3\u8FC7\uFF1B\u6CA1\u70B9\u540D\u65F6\u4ECD\u53EF\u6536\u6210\u300C\u6CA1\u6709\u53EF\u66F4\u65B0\u7684\u6A21\u5757\u300D\u3002 */\n const revealQuietSkips = flags.check || flags.ids.length > 0;\n const lines = formatPlan(plan, api.QUIET_SKIP_REASONS, revealQuietSkips);\n if (flags.check || plan.configSkipped || plan.upgrades.length === 0) return lines.join(\"\\n\");\n if (!flags.yes) {\n if (!isCliTty()) return [...lines, c.yellow(t(\"mod.update.needYes\"))].join(\"\\n\");\n const ans = await withCookedStdin(() =>\n confirm({\n message: t(\"mod.update.confirm\", { count: plan.upgrades.length }),\n initialValue: true,\n })\n );\n if (isCancel(ans) || !ans) return [...lines, c.dim(t(\"mod.update.cancelled\"))].join(\"\\n\");\n }\n const fetchApi = await loadFetchApi();\n if (!fetchApi) return c.red(t(\"mod.fetchMissing\"));\n const result = await api.applyModuleUpgrades(plan.upgrades, {\n root: ROOT,\n failMode: plan.failMode,\n install: fetchApi.installPreservingLock,\n resync: api.resyncInstalledCatalog,\n });\n return [...lines, ...formatApply(result, true)].join(\"\\n\");\n}\n\n/** \u5F00\u670D\u8DEF\u5F84\u5DF2\u5E9F\u5F03\uFF0C\u66F4\u65B0\u53EA\u80FD\u8D70\u663E\u5F0F\u547D\u4EE4\u3002 */\nexport async function runModuleUpdatesOnBdsStart(): Promise<void> {\n return;\n}\n\n/**\n * mod pin <id> --auto on|off\n * \u94FE\u63A5\u548C\u672C\u5730\u76EE\u5F55\u4E0D\u80FD\u6253\u5F00\u81EA\u52A8\u66F4\u65B0\u3002\n */\nexport async function cmdModulePin(args: string[]): Promise<string> {\n let id = \"\";\n let auto: boolean | null = null;\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--auto\") {\n const value = args[++i];\n if (value === \"on\") auto = true;\n else if (value === \"off\") auto = false;\n else return c.yellow(t(\"mod.pin.usage\"));\n } else if (arg?.startsWith(\"--auto=\")) {\n const value = arg.slice(\"--auto=\".length);\n if (value === \"on\") auto = true;\n else if (value === \"off\") auto = false;\n else return c.yellow(t(\"mod.pin.usage\"));\n } else if (arg?.startsWith(\"--\")) {\n return c.yellow(t(\"mod.pin.usage\"));\n } else if (arg) {\n id = arg;\n }\n }\n if (!id || auto === null) return c.yellow(t(\"mod.pin.usage\"));\n const api = await loadUpdateApi();\n if (!api) return c.red(t(\"mod.fetchMissing\"));\n const result = api.setModulePinAuto(ROOT, id, auto);\n if (!result.ok && result.code === \"locked\") return c.yellow(t(\"mod.pin.locked\", { id: result.id || id }));\n if (!result.ok) return c.yellow(t(\"mod.pin.missing\", { id }));\n return c.green(t(\"mod.pin.ok\", { id: result.id, state: t(result.auto ? \"mod.pin.on\" : \"mod.pin.off\") }));\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }