@sfmc-bds/cli 0.2.0-beta.6 → 0.2.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/argv-parse.d.ts +0 -2
  2. package/dist/argv-parse.d.ts.map +1 -1
  3. package/dist/argv-parse.js +1 -5
  4. package/dist/argv-parse.js.map +2 -2
  5. package/dist/cli-gate.d.ts.map +1 -1
  6. package/dist/cli-gate.js +0 -2
  7. package/dist/cli-gate.js.map +2 -2
  8. package/dist/command-surface.d.ts +5 -12
  9. package/dist/command-surface.d.ts.map +1 -1
  10. package/dist/command-surface.js +6 -62
  11. package/dist/command-surface.js.map +2 -2
  12. package/dist/help-text.d.ts.map +1 -1
  13. package/dist/help-text.js +6 -10
  14. package/dist/help-text.js.map +2 -2
  15. package/dist/i18n/locales/en.d.ts +9 -87
  16. package/dist/i18n/locales/en.d.ts.map +1 -1
  17. package/dist/i18n/locales/en.js +9 -90
  18. package/dist/i18n/locales/en.js.map +2 -2
  19. package/dist/i18n/locales/zh-CN.d.ts.map +1 -1
  20. package/dist/i18n/locales/zh-CN.js +9 -90
  21. package/dist/i18n/locales/zh-CN.js.map +2 -2
  22. package/dist/index.d.ts +2 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -4
  25. package/dist/index.js.map +2 -2
  26. package/dist/main.js +3 -6
  27. package/dist/main.js.map +2 -2
  28. package/dist/module-commands.d.ts +6 -25
  29. package/dist/module-commands.d.ts.map +1 -1
  30. package/dist/module-commands.js +107 -127
  31. package/dist/module-commands.js.map +2 -2
  32. package/dist/module-pack-build.d.ts.map +1 -1
  33. package/dist/module-pack-build.js +4 -0
  34. package/dist/module-pack-build.js.map +2 -2
  35. package/dist/module-toggle.d.ts +33 -0
  36. package/dist/module-toggle.d.ts.map +1 -0
  37. package/dist/module-toggle.js +28 -0
  38. package/dist/module-toggle.js.map +7 -0
  39. package/dist/pack-lifecycle.d.ts.map +1 -1
  40. package/dist/pack-lifecycle.js +4 -0
  41. package/dist/pack-lifecycle.js.map +2 -2
  42. package/dist/remote-agent.js +5 -5
  43. package/dist/remote-agent.js.map +2 -2
  44. package/dist/repl.d.ts +0 -2
  45. package/dist/repl.d.ts.map +1 -1
  46. package/dist/repl.js +2 -31
  47. package/dist/repl.js.map +2 -2
  48. package/dist/runtime.d.ts +4 -13
  49. package/dist/runtime.d.ts.map +1 -1
  50. package/dist/runtime.js +15 -27
  51. package/dist/runtime.js.map +2 -2
  52. package/dist/services.d.ts +0 -2
  53. package/dist/services.d.ts.map +1 -1
  54. package/dist/services.js +0 -4
  55. package/dist/services.js.map +2 -2
  56. package/package.json +6 -6
  57. package/dist/module-publish.d.ts +0 -69
  58. package/dist/module-publish.d.ts.map +0 -1
  59. package/dist/module-publish.js +0 -478
  60. package/dist/module-publish.js.map +0 -7
  61. package/dist/module-watch.d.ts +0 -32
  62. package/dist/module-watch.d.ts.map +0 -1
  63. package/dist/module-watch.js +0 -171
  64. package/dist/module-watch.js.map +0 -7
  65. package/dist/module-wizard.d.ts +0 -12
  66. package/dist/module-wizard.d.ts.map +0 -1
  67. package/dist/module-wizard.js +0 -297
  68. package/dist/module-wizard.js.map +0 -7
@@ -19,8 +19,6 @@ const zhCN = {
19
19
  "locale.opt.zh": "\u7B80\u4F53\u4E2D\u6587",
20
20
  "locale.opt.en": "English",
21
21
  /* ─── CLI 通道门禁 ─── */
22
- "cli.externalOnly": "\u547D\u4EE4 `{cmd}` \u4EC5\u53EF\u5728\u5916\u90E8 CLI \u4F7F\u7528\uFF08REPL \u5185\u4E0D\u53EF\u7528\uFF09\u3002",
23
- "cli.externalOnly.hint": "\u8BF7\u5728 shell \u4E2D\u8FD0\u884C: sfmc {cmd}",
24
22
  "cli.replOnly": "\u547D\u4EE4 `{cmd}` \u4EC5\u53EF\u5728 REPL \u5185\u4F7F\u7528\u3002",
25
23
  "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",
26
24
  "cli.needTty": "\u547D\u4EE4 `{cmd}` \u9700\u8981\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\uFF08TTY\uFF09\u3002",
@@ -79,14 +77,8 @@ const zhCN = {
79
77
  "help.module.verify": "\u6821\u9A8C\u6A21\u5757 SHA-256 \u5B8C\u6574\u6027",
80
78
  "help.module.info": "\u663E\u793A\u6A21\u5757\u8BE6\u60C5",
81
79
  "help.module.toggle": "\u542F\u7528/\u7981\u7528\u6A21\u5757",
82
- "help.module.create": "\u6A21\u5757\u811A\u624B\u67B6",
83
- "help.module.link": "\u94FE\u63A5\u672C\u5730\u6A21\u5757",
84
- "help.module.dev": "\u94FE\u63A5 + \u542F\u7528 + \u6784\u5EFA + \u90E8\u7F72",
85
80
  "help.module.build": "\u4ECE\u5DF2\u542F\u7528\u6A21\u5757\u6784\u5EFA\u8D44\u6E90\u5305",
86
81
  "help.module.reload": "\u6784\u5EFA\u5E76\u90E8\u7F72\u8D44\u6E90\u5305\uFF0C\u5728 BDS \u53D1\u9001 reload\u6307\u4EE4\u4EE5\u91CD\u8F7D\u811A\u672C",
87
- "help.module.watch": "\u76D1\u542C sapi/src \u53D8\u66F4\u5E76\u81EA\u52A8 rebuild+reload",
88
- "help.module.test": "\u8FD0\u884C\u6A21\u5757\u6D4B\u8BD5\uFF08node --test + @sfmc-bds/sdk/testing\uFF09",
89
- "help.module.publish": "\u4FDD\u59C6\u5F0F npm publish\uFF08\u767B\u5F55\u5F15\u5BFC + dry-run + bump + \u8584 index PR\uFF09",
90
82
  "help.section.addon": " \u8D44\u6E90\u5305\u7BA1\u7406 \u2500\u2500\u2500\u2500\u2500\u2500",
91
83
  "help.addon": "\u8D44\u6E90\u5305\u6536\u4EF6\u7BB1\u7BA1\u7406",
92
84
  "help.packs.list": "\u5DF2\u5B89\u88C5\u8D44\u6E90\u5305\u5217\u8868",
@@ -249,88 +241,12 @@ const zhCN = {
249
241
  "reload.buildOnly": "\u6784\u5EFA\u5B8C\u6210\u3002",
250
242
  "reload.bdsNotRunning": "BDS \u672A\u8FD0\u884C \u2014 \u5DF2\u5B8C\u6210\u6784\u5EFA\u3002",
251
243
  "reload.sent": "\u5DF2\u5411 BDS \u53D1\u9001 reload",
252
- /* ─── module watch ─── */
253
- "watch.usage": "\u7528\u6CD5: mod watch [--from local[:<path>]] [--no-reload]\n \u9ED8\u8BA4\u76D1\u542C cwd \u6A21\u5757\u4ED3\u7684 sapi/src \u53D8\u66F4\uFF1B\u6539 sapi/manifest.json \u4E0E tsconfig.json \u4EC5\u63D0\u793A\u300C\u8BF7\u91CD\u542F BDS\u300D\u3002\n Ctrl+C \u9000\u51FA\u3002",
254
- "watch.banner": "[watch] \u76D1\u542C\u6A21\u5757: {path}",
255
- "watch.hint": "[watch] \u6539 sapi/src/** \u5373 rebuild + deploy + reload\uFF1B\u5176\u5B83\u6587\u4EF6\u5FFD\u7565\u3002",
256
- "watch.noSapiDir": "[watch] \u672A\u627E\u5230 sapi \u76EE\u5F55: {path}",
257
- "watch.noSapiSrc": "[watch] \u672A\u627E\u5230 sapi/src \u76EE\u5F55: {path}\uFF08\u4EC5\u5F53 src \u5DF2\u5C31\u7EEA\u540E\u624D\u4F1A\u89E6\u53D1 rebuild\uFF09",
258
- "watch.recursiveFallback": "[watch] \u9012\u5F52\u76D1\u542C\u5931\u8D25\uFF0C\u56DE\u9000\u975E\u9012\u5F52\u6A21\u5F0F\uFF08\u4EC5 sapi/src \u4E00\u7EA7\u5B50\u76EE\u5F55\uFF09: {message}",
259
- "watch.manifestOrTsconfig": "[watch] \u6539 {kind} \u4E0D\u4F1A\u70ED\u66F4\u65B0\uFF1BSAPI \u542F\u52A8\u671F\u7F13\u5B58 manifest\uFF1B\u8BF7\u91CD\u542F BDS \u8FDB\u7A0B\u3002\u53D8\u66F4: {files}",
260
- "watch.rebuild.start": "[watch] \u89E6\u53D1 rebuild\uFF08{count} \u6587\u4EF6\uFF09: {files}",
261
- "watch.rebuild.ok": "[watch] rebuild OK ({ms} ms)",
262
- "watch.rebuild.fail": "[watch] rebuild FAILED ({ms} ms)\n{output}",
263
- "watch.rebuild.error": "[watch] rebuild \u5F02\u5E38: {message}",
264
- "watch.reload.sent": "[watch] reload sent",
265
- "watch.reload.manualHint": "[watch] --no-reload \u6A21\u5F0F\uFF1A\u5728 BDS \u63A7\u5236\u53F0\u6216\u6E38\u620F\u5185\u8F93\u5165 reload \u5373\u53EF",
266
- "watch.stopped": "[watch] \u5DF2\u505C\u6B62",
267
- /* ─── module publish ─── */
268
- "publish.banner": "[publish] \u4FDD\u59C6\u5F0F\u53D1\u5E03\uFF08npm + \u8584 index PR\uFF09",
269
- "publish.noLogin": "[publish] \u672A\u767B\u5F55 npm",
270
- "publish.noLoginHint": " \u2192 \u8FD0\u884C `npm login --auth-type=web`\uFF08\u6D4F\u89C8\u5668 OAuth\uFF0C\u65E0\u9700\u628A credential \u843D\u672C\u673A\uFF09",
271
- "publish.precheckFail": "[publish] \u9884\u68C0\u672A\u901A\u8FC7\uFF1B\u4FEE\u6B63\u4E0A\u9762 error \u540E\u91CD\u8BD5",
272
- "publish.dryRun.summary": "[publish] --dry-run \u5B8C\u6210\uFF1B\u6B63\u5F0F publish \u8DD1 `sfmc mod publish [--bump <lvl>]`",
273
- "publish.done": "[publish] \u5B8C\u6210 \u2713",
274
244
  "bp.usage": "\u7528\u6CD5: bp <build|deploy>",
275
- /* ─── 模块脚手架─── */
276
- "modwiz.needTty.create": "\u8BF7\u5728\u4EA4\u4E92\u7EC8\u7AEF\u8FD0\u884C: mod create",
277
- "modwiz.needTty.link": "\u8BF7\u5728\u4EA4\u4E92\u7EC8\u7AEF\u8FD0\u884C: module link",
278
- "modwiz.needTty.dev": "\u8BF7\u5728\u4EA4\u4E92\u7EC8\u7AEF\u8FD0\u884C: mod dev",
279
- "modwiz.sfmcModulesPath": "sfmc-modules: {path}",
280
- "modwiz.pickModulesRoot": "\u6A21\u5757\u5305\u7236\u76EE\u5F55\uFF08\u5C06\u5728\u5176\u4E0B\u521B\u5EFA <id>/\uFF09",
281
- "modwiz.pickPackageRoot": "\u9009\u62E9\u6A21\u5757\u5305\u7236\u76EE\u5F55\uFF08\u5C06\u5728\u5176\u4E0B\u521B\u5EFA <id>/\uFF09",
282
- "modwiz.pickAuthorPkg": "\u9009\u62E9\u4F5C\u8005\u6A21\u5757\u4ED3\u6839\u76EE\u5F55\uFF08\u542B sapi/manifest.json\uFF09",
283
- "modwiz.notModulePkg": "\u4E0D\u662F\u6709\u6548\u6A21\u5757\u5305\uFF08\u7F3A\u5C11 sapi/manifest.json\uFF09: {path}",
284
- "modwiz.standaloneHint": "\u5C06\u751F\u6210\u72EC\u7ACB\u5355\u5305\u4ED3\uFF08\u4E0E sfmc-module-template \u540C\u6784\uFF09\u3002sfmc-modules \u4EC5\u4E3A index\uFF0C\u4E0D\u518D\u5199\u5165 packages/\u3002",
285
- "modwiz.noPackages": "\u672A\u627E\u5230 packages/ \u5B50\u76EE\u5F55: {path}",
286
- "modwiz.noFetch": "\u672A\u627E\u5230 fetch-module.mjs",
287
- "modwiz.enableModule": "\u542F\u7528\u8BE5\u6A21\u5757\uFF1F\uFF08\u5199\u5165 module-lock.json\uFF0C\u9700 db-server\uFF09",
288
- "modwiz.buildDeploy": "\u6784\u5EFA\u5E76\u90E8\u7F72\u884C\u4E3A\u5305\uFF1F\uFF08\u5B8C\u6210\u540E\u53EF\u7528 `sfmc mod reload` \u6216\u5728 BDS/\u6E38\u620F\u5185\u8F93\u5165 reload\uFF09",
289
- "modwiz.task.build": "\u6784\u5EFA\u884C\u4E3A\u5305",
290
- "modwiz.task.deploy": "\u90E8\u7F72\u884C\u4E3A\u5305",
291
- "modwiz.reloadHint": "\u8BF7\u7528 `sfmc mod reload`\uFF08build+deploy \u540E\u5411 BDS \u53D1 reload\uFF09\uFF1B\u4E5F\u53EF\u624B\u52A8\u5728 BDS/\u6E38\u620F\u5185\u8F93\u5165 reload\u3002",
292
- "modwiz.kebab": "\u987B\u4E3A\u5C0F\u5199 kebab-case\uFF0C\u4F8B\u5982 my-feature",
293
- "modwiz.createIntro": "\u6A21\u5757\u811A\u624B\u67B6",
294
- "modwiz.folderId": "\u6A21\u5757\u6587\u4EF6\u5939\u540D\uFF08install id\uFF09",
295
- "modwiz.dirExists": "\u76EE\u5F55\u5DF2\u5B58\u5728: {path}",
296
- "modwiz.displayName": "\u663E\u793A\u540D\u79F0",
297
- "modwiz.template": "\u811A\u624B\u67B6\u6A21\u677F",
298
- "modwiz.tpl.minimal": "\u6700\u5C0F\u6A21\u5757",
299
- "modwiz.tpl.minimalHint": "\u547D\u4EE4 + \u6743\u9650\u5360\u4F4D",
300
- "modwiz.tpl.db": "\u542B DB \u6743\u9650\u5360\u4F4D",
301
- "modwiz.tpl.dbHint": "manifest \u9884\u7F6E db:read/write",
302
- "modwiz.noNewModule": "\u672A\u627E\u5230 tools/new-module.mjs\uFF08\u4E3B\u4ED3 tools/\uFF09",
303
- "modwiz.genPackage": "\u751F\u6210 {id}\uFF08\u5355\u5305\u6839\uFF09",
304
- "modwiz.skeletonWritten": "\u9AA8\u67B6\u5DF2\u5199\u5165",
305
- "modwiz.createdNote": "\u5DF2\u521B\u5EFA {path}",
306
- "modwiz.linkAsk": "\u94FE\u63A5\u5230\u4E3B\u4ED3 modules/packages/\uFF1F\uFF08--link\uFF0C\u6539\u6E90\u7801\u5373\u751F\u6548\uFF09",
307
- "modwiz.link": "\u94FE\u63A5",
308
- "modwiz.linkFailed": "\u94FE\u63A5\u5931\u8D25",
309
- "modwiz.linkDone": "\u5DF2\u94FE\u63A5 {id}",
310
- "modwiz.enable": "\u542F\u7528",
311
- "modwiz.createDone": "\u5B8C\u6210\u3002\u6E90\u7801: {path}",
312
- "modwiz.moduleCreated": "\u6A21\u5757 {id} \u5DF2\u521B\u5EFA",
313
- "modwiz.linkIntro": "\u94FE\u63A5\u672C\u5730\u4F5C\u8005\u4ED3",
314
- "modwiz.noLinkable": "{path}/packages \u4E0B\u6CA1\u6709\u6A21\u5757",
315
- "modwiz.noLinkableShort": "\u6CA1\u6709\u53EF\u94FE\u63A5\u7684\u6A21\u5757\u5305",
316
- "modwiz.pickLink": "\u9009\u62E9\u8981\u94FE\u63A5\u7684\u6A21\u5757\u5305",
317
- "modwiz.linking": "\u94FE\u63A5 {id}",
318
- "modwiz.linkSynced": "catalog + lock \u5DF2\u540C\u6B65",
319
- "modwiz.linked": "\u5DF2\u94FE\u63A5 {id}",
320
- "modwiz.devIntro": "\u672C\u5730\u6A21\u5757\u5F00\u53D1",
321
- "modwiz.devStandalone": "\u5728\u4F5C\u8005\u4ED3\u6539\u4EE3\u7801\uFF1B\u4E3B\u4ED3\u6267\u884C:\nsfmc mod install <id> --from dir:<\u4F5C\u8005\u4ED3> --link\nsfmc mod reload \u6216 sfmc mod watch",
322
- "modwiz.noDevPackages": "{path}/packages \u4E0B\u6CA1\u6709\u6A21\u5757",
323
- "modwiz.noDevShort": "\u6CA1\u6709\u53EF\u5F00\u53D1\u7684\u6A21\u5757\u5305",
324
- "modwiz.pickDev": "\u9009\u62E9\u8981\u8054\u8C03\u7684\u6A21\u5757",
325
- "modwiz.enabling": "\u542F\u7528 {id}",
326
- "modwiz.devHint": "\u4FEE\u6539\u4F5C\u8005\u4ED3\u6E90\u7801\u540E\u6267\u884C `mod reload`\uFF08build + deploy + \u5411 BDS \u53D1 reload\uFF09\u3002\n\u6216\u4F7F\u7528 `sfmc mod watch`\u3002",
327
- "modwiz.devDone": "{id} \u5DF2\u94FE\u63A5\u5E76\u5B8C\u6210 build + deploy",
328
- "modwiz.devReady": "{id} \u5F00\u53D1\u73AF\u5883\u5C31\u7EEA",
329
245
  "mod.usage": "\u7528\u6CD5: sfmc {cmds} <{subs}> [args]",
330
246
  "mod.list.title": "\u5DF2\u5B89\u88C5\u6A21\u5757",
331
247
  "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",
332
248
  "mod.notInRegistry": '\u6A21\u5757 "{query}" \u4E0D\u5728\u5B98\u65B9 registry \u4E2D\u3002',
333
- "mod.info.usage": "\u7528\u6CD5: sfmc module|mod info <id>",
249
+ "mod.info.usage": "\u7528\u6CD5: mod info <id>",
334
250
  "mod.notInstalledAt": "\u6A21\u5757 {id} \u672A\u5B89\u88C5\u4E8E {path}",
335
251
  "mod.notInstalled": "\u6A21\u5757 {id} \u672A\u5B89\u88C5",
336
252
  "mod.verifyOk": "{id} \u6B63\u5E38\n fingerprint: {fp}\n",
@@ -340,12 +256,15 @@ const zhCN = {
340
256
  "mod.action.disabled": "\u5DF2\u7981\u7528",
341
257
  "mod.toggleOk": "{label} {id}",
342
258
  "mod.toggleBadBody": "{action} {id} \u8FD4\u56DE: {text}",
343
- "mod.enable.usage": "\u7528\u6CD5: sfmc module|mod enable <id>",
344
- "mod.disable.usage": "\u7528\u6CD5: sfmc module|mod disable <id>",
345
- "mod.install.usage": "\u7528\u6CD5: sfmc module|mod install <id> [id2 ...] [--from <source>] [--link]",
346
- "mod.linkNeedsFrom": "--link \u9700\u8981 --from dir:<\u4F5C\u8005\u4ED3\u8DEF\u5F84> \u6216 --from local:<\u8DEF\u5F84>\u3002\n\u793A\u4F8B: sfmc mod install my-mod --from dir:D:/mods/my-mod --link",
259
+ "mod.cannotDisable": "\u6A21\u5757 {id} \u4E0D\u53EF\u7981\u7528\uFF08canDisable=false\uFF09",
260
+ "mod.toggleLockFailed": "\u5199\u5165 module-lock \u5931\u8D25\uFF08{id}\uFF09: {message}",
261
+ "mod.toggleDbSkipped": "\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",
262
+ "mod.enable.usage": "\u7528\u6CD5: mod enable <id>",
263
+ "mod.disable.usage": "\u7528\u6CD5: mod disable <id>",
264
+ "mod.install.usage": "\u7528\u6CD5: mod install <id>\n mod install <id> --from <scheme> [--link] [--sha256 <hex>]",
265
+ "mod.fromUnknown": "\u672A\u77E5\u7684 --from \u6765\u6E90: {value}\u3002\u53EF\u7528: npm:|local[:<\u8DEF\u5F84>]|tgz:|zip:|dir:|github:<repo>[@tag]",
347
266
  "mod.fetchMissing": "\u672A\u627E\u5230 fetch-module\u3002\u8BF7\u5B89\u88C5 @sfmc-bds/sfmc \u6216\u5728 monorepo \u5185\u8FD0\u884C\u3002",
348
- "mod.uninstall.usage": "\u7528\u6CD5: sfmc module|mod uninstall <id>",
267
+ "mod.uninstall.usage": "\u7528\u6CD5: mod uninstall <id>",
349
268
  "mod.notInstalledFolder": "\u6A21\u5757 {id} \u672A\u5B89\u88C5\uFF08\u76EE\u5F55\u4E0D\u5B58\u5728: {path}\uFF09",
350
269
  "mod.removed": "\u5DF2\u4ECE {path} \u79FB\u9664 {id}\n",
351
270
  "pack.built": "\u5DF2\u6784\u5EFA\u5305\u81F3 {path}",
@@ -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.externalOnly\": \"\u547D\u4EE4 `{cmd}` \u4EC5\u53EF\u5728\u5916\u90E8 CLI \u4F7F\u7528\uFF08REPL \u5185\u4E0D\u53EF\u7528\uFF09\u3002\",\n \"cli.externalOnly.hint\": \"\u8BF7\u5728 shell \u4E2D\u8FD0\u884C: sfmc {cmd}\",\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\",\n \"help.logs\": \"\u65E5\u5FD7\u5386\u53F2\",\n \"help.start\": \"\u542F\u52A8\u670D\u52A1\",\n \"help.stop\": \"\u505C\u6B62\u670D\u52A1\",\n \"help.restart\": \"\u91CD\u542F\u670D\u52A1\",\n \"help.send\": \"\u5411\u670D\u52A1\u53D1\u9001\u547D\u4EE4\",\n \"help.section.update\": \" BDS \u66F4\u65B0 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.update\": \"\u68C0\u67E5BDS \u66F4\u65B0\",\n \"help.section.remote\": \" \u8FDC\u7A0B\u63A7\u5236 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.remote.status\": \"\u8FDC\u7A0B\u63A7\u5236\u6CE8\u518C\u72B6\u6001\",\n \"help.remote.enroll\": \"\u5411\u63A7\u5236\u5668\u6CE8\u518C\",\n \"help.remote.disable\": \"\u65AD\u5F00\u8FDC\u7A0B\u63A7\u5236\",\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.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.create\": \"\u6A21\u5757\u811A\u624B\u67B6\",\n \"help.module.link\": \"\u94FE\u63A5\u672C\u5730\u6A21\u5757\",\n \"help.module.dev\": \"\u94FE\u63A5 + \u542F\u7528 + \u6784\u5EFA + \u90E8\u7F72\",\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.module.watch\": \"\u76D1\u542C sapi/src \u53D8\u66F4\u5E76\u81EA\u52A8 rebuild+reload\",\n \"help.module.test\": \"\u8FD0\u884C\u6A21\u5757\u6D4B\u8BD5\uFF08node --test + @sfmc-bds/sdk/testing\uFF09\",\n \"help.module.publish\": \"\u4FDD\u59C6\u5F0F npm publish\uFF08\u767B\u5F55\u5F15\u5BFC + dry-run + bump + \u8584 index PR\uFF09\",\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.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\",\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.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 \"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.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 \u8FDC\u7A0B\u63A7\u5236 \u2500\u2500\u2500 */\n \"remote.enrolled\": \"\u5DF2\u6CE8\u518C\u8FDC\u7A0B\u63A7\u5236: {id}\",\n \"remote.disabled\": \"\u8FDC\u7A0B\u63A7\u5236\u5DF2\u7981\u7528\",\n \"remote.usage\": \"\u7528\u6CD5: remote enroll <controller-url> <enrollment-token> [name] | remote status | remote disable\",\n \"remote.usageShort\":\n \"\u7528\u6CD5: remote enroll <controller-url> <enrollment-token> [name] | remote status | remote disable\",\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.npmMissing\": \"npm \u8FD0\u884C\u65F6\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 LLBOT \u8DEF\u5F84\",\n \"wizard.bdsDir\": \"BDS \u5B89\u88C5\u76EE\u5F55\",\n \"wizard.cannotCreateBds\": \"\u65E0\u6CD5\u521B\u5EFA BDS \u5B89\u88C5\u76EE\u5F55: {dir}\",\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\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 /* \u2500\u2500\u2500 module watch \u2500\u2500\u2500 */\n \"watch.usage\":\n \"\u7528\u6CD5: mod watch [--from local[:<path>]] [--no-reload]\\n\" +\n \" \u9ED8\u8BA4\u76D1\u542C cwd \u6A21\u5757\u4ED3\u7684 sapi/src \u53D8\u66F4\uFF1B\u6539 sapi/manifest.json \u4E0E tsconfig.json \u4EC5\u63D0\u793A\u300C\u8BF7\u91CD\u542F BDS\u300D\u3002\\n\" +\n \" Ctrl+C \u9000\u51FA\u3002\",\n \"watch.banner\": \"[watch] \u76D1\u542C\u6A21\u5757: {path}\",\n \"watch.hint\": \"[watch] \u6539 sapi/src/** \u5373 rebuild + deploy + reload\uFF1B\u5176\u5B83\u6587\u4EF6\u5FFD\u7565\u3002\",\n \"watch.noSapiDir\": \"[watch] \u672A\u627E\u5230 sapi \u76EE\u5F55: {path}\",\n \"watch.noSapiSrc\": \"[watch] \u672A\u627E\u5230 sapi/src \u76EE\u5F55: {path}\uFF08\u4EC5\u5F53 src \u5DF2\u5C31\u7EEA\u540E\u624D\u4F1A\u89E6\u53D1 rebuild\uFF09\",\n \"watch.recursiveFallback\":\n \"[watch] \u9012\u5F52\u76D1\u542C\u5931\u8D25\uFF0C\u56DE\u9000\u975E\u9012\u5F52\u6A21\u5F0F\uFF08\u4EC5 sapi/src \u4E00\u7EA7\u5B50\u76EE\u5F55\uFF09: {message}\",\n \"watch.manifestOrTsconfig\":\n \"[watch] \u6539 {kind} \u4E0D\u4F1A\u70ED\u66F4\u65B0\uFF1BSAPI \u542F\u52A8\u671F\u7F13\u5B58 manifest\uFF1B\u8BF7\u91CD\u542F BDS \u8FDB\u7A0B\u3002\u53D8\u66F4: {files}\",\n \"watch.rebuild.start\": \"[watch] \u89E6\u53D1 rebuild\uFF08{count} \u6587\u4EF6\uFF09: {files}\",\n \"watch.rebuild.ok\": \"[watch] rebuild OK ({ms} ms)\",\n \"watch.rebuild.fail\": \"[watch] rebuild FAILED ({ms} ms)\\n{output}\",\n \"watch.rebuild.error\": \"[watch] rebuild \u5F02\u5E38: {message}\",\n \"watch.reload.sent\": \"[watch] reload sent\",\n \"watch.reload.manualHint\":\n \"[watch] --no-reload \u6A21\u5F0F\uFF1A\u5728 BDS \u63A7\u5236\u53F0\u6216\u6E38\u620F\u5185\u8F93\u5165 reload \u5373\u53EF\",\n \"watch.stopped\": \"[watch] \u5DF2\u505C\u6B62\",\n\n /* \u2500\u2500\u2500 module publish \u2500\u2500\u2500 */\n \"publish.banner\": \"[publish] \u4FDD\u59C6\u5F0F\u53D1\u5E03\uFF08npm + \u8584 index PR\uFF09\",\n \"publish.noLogin\": \"[publish] \u672A\u767B\u5F55 npm\",\n \"publish.noLoginHint\":\n \" \u2192 \u8FD0\u884C `npm login --auth-type=web`\uFF08\u6D4F\u89C8\u5668 OAuth\uFF0C\u65E0\u9700\u628A credential \u843D\u672C\u673A\uFF09\",\n \"publish.precheckFail\": \"[publish] \u9884\u68C0\u672A\u901A\u8FC7\uFF1B\u4FEE\u6B63\u4E0A\u9762 error \u540E\u91CD\u8BD5\",\n \"publish.dryRun.summary\":\n \"[publish] --dry-run \u5B8C\u6210\uFF1B\u6B63\u5F0F publish \u8DD1 `sfmc mod publish [--bump <lvl>]`\",\n \"publish.done\": \"[publish] \u5B8C\u6210 \u2713\",\n\n \"bp.usage\": \"\u7528\u6CD5: bp <build|deploy>\",\n\n /* \u2500\u2500\u2500 \u6A21\u5757\u811A\u624B\u67B6\u2500\u2500\u2500 */\n \"modwiz.needTty.create\": \"\u8BF7\u5728\u4EA4\u4E92\u7EC8\u7AEF\u8FD0\u884C: mod create\",\n \"modwiz.needTty.link\": \"\u8BF7\u5728\u4EA4\u4E92\u7EC8\u7AEF\u8FD0\u884C: module link\",\n \"modwiz.needTty.dev\": \"\u8BF7\u5728\u4EA4\u4E92\u7EC8\u7AEF\u8FD0\u884C: mod dev\",\n \"modwiz.sfmcModulesPath\": \"sfmc-modules: {path}\",\n \"modwiz.pickModulesRoot\": \"\u6A21\u5757\u5305\u7236\u76EE\u5F55\uFF08\u5C06\u5728\u5176\u4E0B\u521B\u5EFA <id>/\uFF09\",\n \"modwiz.pickPackageRoot\": \"\u9009\u62E9\u6A21\u5757\u5305\u7236\u76EE\u5F55\uFF08\u5C06\u5728\u5176\u4E0B\u521B\u5EFA <id>/\uFF09\",\n \"modwiz.pickAuthorPkg\": \"\u9009\u62E9\u4F5C\u8005\u6A21\u5757\u4ED3\u6839\u76EE\u5F55\uFF08\u542B sapi/manifest.json\uFF09\",\n \"modwiz.notModulePkg\": \"\u4E0D\u662F\u6709\u6548\u6A21\u5757\u5305\uFF08\u7F3A\u5C11 sapi/manifest.json\uFF09: {path}\",\n \"modwiz.standaloneHint\": \"\u5C06\u751F\u6210\u72EC\u7ACB\u5355\u5305\u4ED3\uFF08\u4E0E sfmc-module-template \u540C\u6784\uFF09\u3002sfmc-modules \u4EC5\u4E3A index\uFF0C\u4E0D\u518D\u5199\u5165 packages/\u3002\",\n \"modwiz.noPackages\": \"\u672A\u627E\u5230 packages/ \u5B50\u76EE\u5F55: {path}\",\n \"modwiz.noFetch\": \"\u672A\u627E\u5230 fetch-module.mjs\",\n \"modwiz.enableModule\": \"\u542F\u7528\u8BE5\u6A21\u5757\uFF1F\uFF08\u5199\u5165 module-lock.json\uFF0C\u9700 db-server\uFF09\",\n \"modwiz.buildDeploy\": \"\u6784\u5EFA\u5E76\u90E8\u7F72\u884C\u4E3A\u5305\uFF1F\uFF08\u5B8C\u6210\u540E\u53EF\u7528 `sfmc mod reload` \u6216\u5728 BDS/\u6E38\u620F\u5185\u8F93\u5165 reload\uFF09\",\n \"modwiz.task.build\": \"\u6784\u5EFA\u884C\u4E3A\u5305\",\n \"modwiz.task.deploy\": \"\u90E8\u7F72\u884C\u4E3A\u5305\",\n \"modwiz.reloadHint\": \"\u8BF7\u7528 `sfmc mod reload`\uFF08build+deploy \u540E\u5411 BDS \u53D1 reload\uFF09\uFF1B\u4E5F\u53EF\u624B\u52A8\u5728 BDS/\u6E38\u620F\u5185\u8F93\u5165 reload\u3002\",\n \"modwiz.kebab\": \"\u987B\u4E3A\u5C0F\u5199 kebab-case\uFF0C\u4F8B\u5982 my-feature\",\n \"modwiz.createIntro\": \"\u6A21\u5757\u811A\u624B\u67B6\",\n \"modwiz.folderId\": \"\u6A21\u5757\u6587\u4EF6\u5939\u540D\uFF08install id\uFF09\",\n \"modwiz.dirExists\": \"\u76EE\u5F55\u5DF2\u5B58\u5728: {path}\",\n \"modwiz.displayName\": \"\u663E\u793A\u540D\u79F0\",\n \"modwiz.template\": \"\u811A\u624B\u67B6\u6A21\u677F\",\n \"modwiz.tpl.minimal\": \"\u6700\u5C0F\u6A21\u5757\",\n \"modwiz.tpl.minimalHint\": \"\u547D\u4EE4 + \u6743\u9650\u5360\u4F4D\",\n \"modwiz.tpl.db\": \"\u542B DB \u6743\u9650\u5360\u4F4D\",\n \"modwiz.tpl.dbHint\": \"manifest \u9884\u7F6E db:read/write\",\n \"modwiz.noNewModule\": \"\u672A\u627E\u5230 tools/new-module.mjs\uFF08\u4E3B\u4ED3 tools/\uFF09\",\n \"modwiz.genPackage\": \"\u751F\u6210 {id}\uFF08\u5355\u5305\u6839\uFF09\",\n \"modwiz.skeletonWritten\": \"\u9AA8\u67B6\u5DF2\u5199\u5165\",\n \"modwiz.createdNote\": \"\u5DF2\u521B\u5EFA {path}\",\n \"modwiz.linkAsk\": \"\u94FE\u63A5\u5230\u4E3B\u4ED3 modules/packages/\uFF1F\uFF08--link\uFF0C\u6539\u6E90\u7801\u5373\u751F\u6548\uFF09\",\n \"modwiz.link\": \"\u94FE\u63A5\",\n \"modwiz.linkFailed\": \"\u94FE\u63A5\u5931\u8D25\",\n \"modwiz.linkDone\": \"\u5DF2\u94FE\u63A5 {id}\",\n \"modwiz.enable\": \"\u542F\u7528\",\n \"modwiz.createDone\": \"\u5B8C\u6210\u3002\u6E90\u7801: {path}\",\n \"modwiz.moduleCreated\": \"\u6A21\u5757 {id} \u5DF2\u521B\u5EFA\",\n \"modwiz.linkIntro\": \"\u94FE\u63A5\u672C\u5730\u4F5C\u8005\u4ED3\",\n \"modwiz.noLinkable\": \"{path}/packages \u4E0B\u6CA1\u6709\u6A21\u5757\",\n \"modwiz.noLinkableShort\": \"\u6CA1\u6709\u53EF\u94FE\u63A5\u7684\u6A21\u5757\u5305\",\n \"modwiz.pickLink\": \"\u9009\u62E9\u8981\u94FE\u63A5\u7684\u6A21\u5757\u5305\",\n \"modwiz.linking\": \"\u94FE\u63A5 {id}\",\n \"modwiz.linkSynced\": \"catalog + lock \u5DF2\u540C\u6B65\",\n \"modwiz.linked\": \"\u5DF2\u94FE\u63A5 {id}\",\n \"modwiz.devIntro\": \"\u672C\u5730\u6A21\u5757\u5F00\u53D1\",\n \"modwiz.devStandalone\":\n \"\u5728\u4F5C\u8005\u4ED3\u6539\u4EE3\u7801\uFF1B\u4E3B\u4ED3\u6267\u884C:\\nsfmc mod install <id> --from dir:<\u4F5C\u8005\u4ED3> --link\\nsfmc mod reload \u6216 sfmc mod watch\",\n \"modwiz.noDevPackages\": \"{path}/packages \u4E0B\u6CA1\u6709\u6A21\u5757\",\n \"modwiz.noDevShort\": \"\u6CA1\u6709\u53EF\u5F00\u53D1\u7684\u6A21\u5757\u5305\",\n \"modwiz.pickDev\": \"\u9009\u62E9\u8981\u8054\u8C03\u7684\u6A21\u5757\",\n \"modwiz.enabling\": \"\u542F\u7528 {id}\",\n \"modwiz.devHint\":\n \"\u4FEE\u6539\u4F5C\u8005\u4ED3\u6E90\u7801\u540E\u6267\u884C `mod reload`\uFF08build + deploy + \u5411 BDS \u53D1 reload\uFF09\u3002\\n\u6216\u4F7F\u7528 `sfmc mod watch`\u3002\",\n \"modwiz.devDone\": \"{id} \u5DF2\u94FE\u63A5\u5E76\u5B8C\u6210 build + deploy\",\n \"modwiz.devReady\": \"{id} \u5F00\u53D1\u73AF\u5883\u5C31\u7EEA\",\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: sfmc module|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.enable.usage\": \"\u7528\u6CD5: sfmc module|mod enable <id>\",\n \"mod.disable.usage\": \"\u7528\u6CD5: sfmc module|mod disable <id>\",\n \"mod.install.usage\": \"\u7528\u6CD5: sfmc module|mod install <id> [id2 ...] [--from <source>] [--link]\",\n \"mod.linkNeedsFrom\":\n \"--link \u9700\u8981 --from dir:<\u4F5C\u8005\u4ED3\u8DEF\u5F84> \u6216 --from local:<\u8DEF\u5F84>\u3002\\n\u793A\u4F8B: sfmc mod install my-mod --from dir:D:/mods/my-mod --link\",\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: sfmc module|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\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.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\uFF08\u4E0D\u8981\u7528 Upload API \u7684 UUID Token\uFF09\",\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\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\",\n \"help.logs\": \"\u65E5\u5FD7\u5386\u53F2\",\n \"help.start\": \"\u542F\u52A8\u670D\u52A1\",\n \"help.stop\": \"\u505C\u6B62\u670D\u52A1\",\n \"help.restart\": \"\u91CD\u542F\u670D\u52A1\",\n \"help.send\": \"\u5411\u670D\u52A1\u53D1\u9001\u547D\u4EE4\",\n \"help.section.update\": \" BDS \u66F4\u65B0 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.update\": \"\u68C0\u67E5BDS \u66F4\u65B0\",\n \"help.section.remote\": \" \u8FDC\u7A0B\u63A7\u5236 \u2500\u2500\u2500\u2500\u2500\u2500\",\n \"help.remote.status\": \"\u8FDC\u7A0B\u63A7\u5236\u6CE8\u518C\u72B6\u6001\",\n \"help.remote.enroll\": \"\u5411\u63A7\u5236\u5668\u6CE8\u518C\",\n \"help.remote.disable\": \"\u65AD\u5F00\u8FDC\u7A0B\u63A7\u5236\",\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.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.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.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\",\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.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 \"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.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 \u8FDC\u7A0B\u63A7\u5236 \u2500\u2500\u2500 */\n \"remote.enrolled\": \"\u5DF2\u6CE8\u518C\u8FDC\u7A0B\u63A7\u5236: {id}\",\n \"remote.disabled\": \"\u8FDC\u7A0B\u63A7\u5236\u5DF2\u7981\u7528\",\n \"remote.usage\": \"\u7528\u6CD5: remote enroll <controller-url> <enrollment-token> [name] | remote status | remote disable\",\n \"remote.usageShort\":\n \"\u7528\u6CD5: remote enroll <controller-url> <enrollment-token> [name] | remote status | remote disable\",\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.npmMissing\": \"npm \u8FD0\u884C\u65F6\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 LLBOT \u8DEF\u5F84\",\n \"wizard.bdsDir\": \"BDS \u5B89\u88C5\u76EE\u5F55\",\n \"wizard.cannotCreateBds\": \"\u65E0\u6CD5\u521B\u5EFA BDS \u5B89\u88C5\u76EE\u5F55: {dir}\",\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\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\":\n \"\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\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.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\uFF08\u4E0D\u8981\u7528 Upload API \u7684 UUID Token\uFF09\",\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\n"],
5
+ "mappings": "AAGO,MAAM,OAAmC;AAAA,EAC9C,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,cAAc;AAAA,EAEd,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA;AAAA,EAGjB,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,eAAe;AAAA;AAAA,EAGf,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,wBAAwB;AAAA,EACxB,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,oBAAoB;AAAA;AAAA,EAGpB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,eAAe;AAAA,EACf,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,wBAAwB;AAAA,EACxB,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA;AAAA,EAGzB,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,eAAe;AAAA,EACf,0BAA0B;AAAA,EAC1B,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,oBAAoB;AAAA;AAAA,EAGpB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,0BAA0B;AAAA,EAC1B,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA;AAAA,EAGvB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,qBACE;AAAA;AAAA,EAGF,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,0BAA0B;AAAA,EAC1B,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,6BAA6B;AAAA,EAC7B,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,+BAA+B;AAAA,EAC/B,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,0BAA0B;AAAA,EAC1B,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,yBAAyB;AAAA,EACzB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,4BAA4B;AAAA,EAC5B,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EAEvB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EAErB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,eAAe;AAAA,EAEf,YAAY;AAAA,EAEZ,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,wBAAwB;AAAA,EACxB,uBACE;AAAA,EACF,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,qBACE;AAAA,EACF,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,eAAe;AAAA,EAEf,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,cAAc;AAAA,EAEd,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,4BAA4B;AAAA,EAC5B,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA,EACvB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,gCAAgC;AAAA,EAChC,2BAA2B;AAAA,EAC3B,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,yBACE;AAAA,EACF,6BAA6B;AAAA,EAC7B,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,8BAA8B;AAAA,EAC9B,kCAAkC;AAAA,EAClC,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAC7B,wBAAwB;AAAA,EACxB,4BAA4B;AAAA,EAC5B,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAE1B,sBACE;AAAA,EACF,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,4BAA4B;AAAA,EAC5B,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,4BAA4B;AAAA,EAC5B,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,qBAAqB;AAAA,EACrB,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,4BAA4B;AAAA,EAC5B,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAC3B,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,4BAA4B;AAAA,EAC5B,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,0BAA0B;AAC5B;",
6
6
  "names": []
7
7
  }
package/dist/index.d.ts CHANGED
@@ -16,9 +16,9 @@
16
16
  * helpers (LogLine buffers, child-process piping) are NOT re-exported.
17
17
  */
18
18
  export { ROOT, isMonorepoLayout, isRuntimeInitialized, resolveServiceScript, resolveFetchModule, spawnService, spawnServiceSync, type ServiceId } from "./runtime.js";
19
- export { SERVICE_NAMES, type ServiceName, type ServiceStatus, type ServiceStateEvent, refreshServices, startAll, stopAll, forceStopAll, queryServicesRuntime, serviceStatus, isServiceRunning, onServiceStateChange, services, START_ORDER, } from "./services.js";
19
+ export { SERVICE_NAMES, type ServiceName, type ServiceStatus, type ServiceStateEvent, refreshServices, startAll, stopAll, forceStopAll, queryServicesRuntime, isServiceRunning, onServiceStateChange, services, START_ORDER, } from "./services.js";
20
20
  export { pushLog, onLog, getAllLogs, getRecentLogs, type UnifiedLog, type LogLevel, type LogSource } from "./logs.js";
21
- export { startRepl, getHelp, HELP } from "./repl.js";
21
+ export { startRepl, getHelp } from "./repl.js";
22
22
  export { t, getLocale, setLocale, initLocale, type Locale } from "./i18n/index.js";
23
23
  export { runWizard } from "./wizard.js";
24
24
  export { cmdModuleList, cmdModuleInstall, cmdModuleUninstall, cmdModuleVerify, cmdModuleInfo } from "./module-commands.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtK,OAAO,EACL,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,eAAe,EACf,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,QAAQ,EACR,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtK,OAAO,EACL,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,eAAe,EACf,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,QAAQ,EACR,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -6,19 +6,17 @@ import {
6
6
  stopAll,
7
7
  forceStopAll,
8
8
  queryServicesRuntime,
9
- serviceStatus,
10
9
  isServiceRunning,
11
10
  onServiceStateChange,
12
11
  services,
13
12
  START_ORDER
14
13
  } from "./services.js";
15
14
  import { pushLog, onLog, getAllLogs, getRecentLogs } from "./logs.js";
16
- import { startRepl, getHelp, HELP } from "./repl.js";
15
+ import { startRepl, getHelp } from "./repl.js";
17
16
  import { t, getLocale, setLocale, initLocale } from "./i18n/index.js";
18
17
  import { runWizard } from "./wizard.js";
19
18
  import { cmdModuleList, cmdModuleInstall, cmdModuleUninstall, cmdModuleVerify, cmdModuleInfo } from "./module-commands.js";
20
19
  export {
21
- HELP,
22
20
  ROOT,
23
21
  SERVICE_NAMES,
24
22
  START_ORDER,
@@ -44,7 +42,6 @@ export {
44
42
  resolveFetchModule,
45
43
  resolveServiceScript,
46
44
  runWizard,
47
- serviceStatus,
48
45
  services,
49
46
  setLocale,
50
47
  spawnService,
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["/**\n * sfmc/ public runtime surface (Stage J \u2014 minimum entry design)\n *\n * This is the clean API that downstream callers (CLI commands,\n * external scripts, CI tooling) consume to manage the runtime stack\n * without re-implementing process lifecycle logic.\n *\n * Design:\n * - Single process tree. sfmc/ does not spawn itself recursively \u2014 it spawns\n * the actual services (db-server, qq-bridge, bds-tools, BDS).\n * - `ROOT` from runtime.ts describes the deployment root so callers\n * can adapt (path lookup, config dir).\n * - Service lifecycle goes through ServiceRegistry (start/stop/restart/status).\n *\n * Re-exports are deliberately thin: each item is a stable contract. Internal\n * helpers (LogLine buffers, child-process piping) are NOT re-exported.\n */\n\nexport { ROOT, isMonorepoLayout, isRuntimeInitialized, resolveServiceScript, resolveFetchModule, spawnService, spawnServiceSync, type ServiceId } from \"./runtime.js\";\n\nexport {\n SERVICE_NAMES,\n type ServiceName,\n type ServiceStatus,\n type ServiceStateEvent,\n refreshServices,\n startAll,\n stopAll,\n forceStopAll,\n queryServicesRuntime,\n serviceStatus,\n isServiceRunning,\n onServiceStateChange,\n services,\n START_ORDER,\n} from \"./services.js\";\n\nexport { pushLog, onLog, getAllLogs, getRecentLogs, type UnifiedLog, type LogLevel, type LogSource } from \"./logs.js\";\n\nexport { startRepl, getHelp, HELP } from \"./repl.js\";\nexport { t, getLocale, setLocale, initLocale, type Locale } from \"./i18n/index.js\";\nexport { runWizard } from \"./wizard.js\";\nexport { cmdModuleList, cmdModuleInstall, cmdModuleUninstall, cmdModuleVerify, cmdModuleInfo } from \"./module-commands.js\";\n"],
5
- "mappings": "AAkBA,SAAS,MAAM,kBAAkB,sBAAsB,sBAAsB,oBAAoB,cAAc,wBAAwC;AAEvJ;AAAA,EACE;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,SAAS,OAAO,YAAY,qBAAqE;AAE1G,SAAS,WAAW,SAAS,YAAY;AACzC,SAAS,GAAG,WAAW,WAAW,kBAA+B;AACjE,SAAS,iBAAiB;AAC1B,SAAS,eAAe,kBAAkB,oBAAoB,iBAAiB,qBAAqB;",
4
+ "sourcesContent": ["/**\n * sfmc/ public runtime surface (Stage J \u2014 minimum entry design)\n *\n * This is the clean API that downstream callers (CLI commands,\n * external scripts, CI tooling) consume to manage the runtime stack\n * without re-implementing process lifecycle logic.\n *\n * Design:\n * - Single process tree. sfmc/ does not spawn itself recursively \u2014 it spawns\n * the actual services (db-server, qq-bridge, bds-tools, BDS).\n * - `ROOT` from runtime.ts describes the deployment root so callers\n * can adapt (path lookup, config dir).\n * - Service lifecycle goes through ServiceRegistry (start/stop/restart/status).\n *\n * Re-exports are deliberately thin: each item is a stable contract. Internal\n * helpers (LogLine buffers, child-process piping) are NOT re-exported.\n */\n\nexport { ROOT, isMonorepoLayout, isRuntimeInitialized, resolveServiceScript, resolveFetchModule, spawnService, spawnServiceSync, type ServiceId } from \"./runtime.js\";\n\nexport {\n SERVICE_NAMES,\n type ServiceName,\n type ServiceStatus,\n type ServiceStateEvent,\n refreshServices,\n startAll,\n stopAll,\n forceStopAll,\n queryServicesRuntime,\n isServiceRunning,\n onServiceStateChange,\n services,\n START_ORDER,\n} from \"./services.js\";\n\nexport { pushLog, onLog, getAllLogs, getRecentLogs, type UnifiedLog, type LogLevel, type LogSource } from \"./logs.js\";\n\nexport { startRepl, getHelp } from \"./repl.js\";\nexport { t, getLocale, setLocale, initLocale, type Locale } from \"./i18n/index.js\";\nexport { runWizard } from \"./wizard.js\";\nexport { cmdModuleList, cmdModuleInstall, cmdModuleUninstall, cmdModuleVerify, cmdModuleInfo } from \"./module-commands.js\";\n"],
5
+ "mappings": "AAkBA,SAAS,MAAM,kBAAkB,sBAAsB,sBAAsB,oBAAoB,cAAc,wBAAwC;AAEvJ;AAAA,EACE;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,SAAS,OAAO,YAAY,qBAAqE;AAE1G,SAAS,WAAW,eAAe;AACnC,SAAS,GAAG,WAAW,WAAW,kBAA+B;AACjE,SAAS,iBAAiB;AAC1B,SAAS,eAAe,kBAAkB,oBAAoB,iBAAiB,qBAAqB;",
6
6
  "names": []
7
7
  }
package/dist/main.js CHANGED
@@ -1,13 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import process from "node:process";
3
- import {
4
- mapPacksSubAlias,
5
- parseGlobalArgv,
6
- resolveModuleShorthandSub
7
- } from "./argv-parse.js";
3
+ import { mapPacksSubAlias, parseGlobalArgv } from "./argv-parse.js";
8
4
  import { cmdRemote } from "./cmd-remote.js";
9
5
  import { cmdRestart, cmdStart, cmdStartAll, cmdStatus, cmdStop, cmdStopAll, cmdUpdate } from "./commands.js";
10
6
  import { gateModuleSub, gatePacksSub, gateTopLevel } from "./cli-gate.js";
7
+ import { resolveModuleTopShorthand } from "./command-surface.js";
11
8
  import { cmdDebug } from "./debug-command.js";
12
9
  import { initLocale, stripLangArgs, t } from "./i18n/index.js";
13
10
  import { cmdLocale } from "./locale-command.js";
@@ -59,7 +56,7 @@ async function main() {
59
56
  const topGate = gateTopLevel(cmd, MODE);
60
57
  if (topGate) deny(topGate);
61
58
  }
62
- const moduleSub = resolveModuleShorthandSub(cmd);
59
+ const moduleSub = resolveModuleTopShorthand(cmd);
63
60
  if (moduleSub) {
64
61
  const g = gateModuleSub(moduleSub, MODE);
65
62
  if (g) deny(g);
package/dist/main.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts"],
4
- "sourcesContent": ["#!/usr/bin/env node\nimport process from \"node:process\";\nimport {\n mapPacksSubAlias,\n parseGlobalArgv,\n resolveModuleShorthandSub,\n} from \"./argv-parse.js\";\nimport { cmdRemote } from \"./cmd-remote.js\";\nimport { cmdRestart, cmdStart, cmdStartAll, cmdStatus, cmdStop, cmdStopAll, cmdUpdate } from \"./commands.js\";\nimport { gateModuleSub, gatePacksSub, gateTopLevel } from \"./cli-gate.js\";\nimport { cmdDebug } from \"./debug-command.js\";\nimport { initLocale, stripLangArgs, t } from \"./i18n/index.js\";\nimport { cmdLocale } from \"./locale-command.js\";\nimport { dispatchModuleCommand, isModuleCommand, scanAndWarnUnknown } from \"./module-commands.js\";\nimport { startRemoteAgent } from \"./remote-agent.js\";\nimport { getHelp, playWelcomeAnimation, startRepl } from \"./repl.js\";\nimport { ROOT } from \"./runtime.js\";\nimport { c } from \"./theme.js\";\nimport { dispatchPacksCommand, isPacksCommand } from \"./world-packs.js\";\n\nconst MODE = \"argv\" as const;\n\nasync function printVersion(): Promise<void> {\n await playWelcomeAnimation();\n}\n\nfunction printUsage(): void {\n console.log(`${getHelp(\"argv\")}`);\n}\n\nfunction deny(msg: string): never {\n console.log(msg);\n process.exit(1);\n}\n\nasync function main(): Promise<void> {\n const stripped = stripLangArgs(process.argv.slice(2));\n initLocale({ root: ROOT, flag: stripped.lang });\n const { packsMode, args } = parseGlobalArgv(stripped.args);\n\n if (args.length === 0 && !packsMode) {\n const { isRuntimeInitialized } = await import(\"./runtime.js\");\n if (!isRuntimeInitialized()) {\n const { runWizard } = await import(\"./wizard.js\");\n await runWizard();\n const { refreshServices } = await import(\"./services.js\");\n refreshServices();\n }\n const warn = await scanAndWarnUnknown();\n if (warn) console.log(warn);\n startRemoteAgent();\n await startRepl();\n return;\n }\n\n if (packsMode) {\n const [subRaw, ...subRest] = args;\n const sub = mapPacksSubAlias(subRaw);\n const g = gatePacksSub(sub, MODE);\n if (g) deny(g);\n console.log(await dispatchPacksCommand(sub, subRest));\n process.exit(0);\n }\n\n const [cmd, ...rest] = args;\n\n if (cmd && ![\"--help\", \"-h\", \"--version\", \"-v\"].includes(cmd)) {\n const topGate = gateTopLevel(cmd, MODE);\n if (topGate) deny(topGate);\n }\n\n const moduleSub = resolveModuleShorthandSub(cmd);\n if (moduleSub) {\n const g = gateModuleSub(moduleSub, MODE);\n if (g) deny(g);\n console.log(await dispatchModuleCommand(moduleSub, rest));\n process.exit(0);\n }\n\n switch (cmd) {\n case \"--help\":\n case \"-h\":\n case \"help\":\n printUsage();\n break;\n case \"--version\":\n case \"-v\":\n await printVersion();\n break;\n case \"locale\":\n case \"lang\":\n console.log(cmdLocale(rest));\n break;\n case \"debug\":\n console.log(await cmdDebug(rest));\n break;\n case \"status\":\n console.log(await cmdStatus());\n break;\n case \"logs\":\n case \"log\":\n /* channel=repl\uFF1A\u6B63\u5E38\u7531 gateTopLevel \u62E6\u622A\uFF1B\u6B64\u5904\u515C\u5E95 */\n deny(gateTopLevel(\"logs\", MODE) ?? c.yellow(t(\"cli.replOnly\", { cmd: \"logs\" })));\n break;\n case \"start\":\n if (rest[0] === \"-all\" || rest[0] === \"all\" || rest[0] === \"--all\") {\n console.log(await cmdStartAll());\n } else if (rest[0]) {\n console.log(await cmdStart(rest[0]));\n } else {\n console.log(c.yellow(t(\"svc.start.usage\")));\n }\n break;\n case \"stop\":\n if (rest[0] === \"-all\" || rest[0] === \"all\" || rest[0] === \"--all\") {\n console.log(await cmdStopAll());\n } else if (rest[0]) {\n console.log(await cmdStop(rest[0]));\n } else {\n console.log(c.yellow(t(\"svc.stop.usage\")));\n }\n break;\n case \"restart\":\n if (rest[0] === \"-all\" || rest[0] === \"all\" || rest[0] === \"--all\") {\n await cmdStopAll();\n console.log(await cmdStartAll());\n } else if (rest[0]) {\n console.log(await cmdRestart(rest[0]));\n } else {\n console.log(c.yellow(t(\"svc.restart.usage\")));\n }\n break;\n case \"update\":\n console.log(await cmdUpdate(rest));\n break;\n case \"packs\":\n case \"addon\": {\n const [sub, ...subRest] = rest;\n const g = gatePacksSub(sub, MODE);\n if (g) deny(g);\n console.log(await dispatchPacksCommand(sub, subRest));\n break;\n }\n case \"init\": {\n const { runWizard } = await import(\"./wizard.js\");\n await runWizard();\n break;\n }\n case \"remote\":\n console.log(await cmdRemote(rest, { daemonAfterEnroll: true }));\n break;\n default:\n if (isModuleCommand(cmd)) {\n const [sub, ...subRest] = rest;\n const g = gateModuleSub(sub, MODE);\n if (g) deny(g);\n console.log(await dispatchModuleCommand(sub, subRest));\n break;\n }\n if (isPacksCommand(cmd)) {\n const [sub, ...subRest] = rest;\n const g = gatePacksSub(sub, MODE);\n if (g) deny(g);\n console.log(await dispatchPacksCommand(sub, subRest));\n break;\n }\n console.log(c.red(t(\"common.unknownCommand\", { cmd: cmd ?? \"\" })));\n printUsage();\n process.exit(1);\n }\n process.exit(0);\n}\n\nmain().catch((err) => {\n console.error(c.red(err?.message ? t(\"common.error\", { message: err.message }) : t(\"common.fatal\")));\n process.exit(1);\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["#!/usr/bin/env node\nimport process from \"node:process\";\nimport { mapPacksSubAlias, parseGlobalArgv } from \"./argv-parse.js\";\nimport { cmdRemote } from \"./cmd-remote.js\";\nimport { cmdRestart, cmdStart, cmdStartAll, cmdStatus, cmdStop, cmdStopAll, cmdUpdate } from \"./commands.js\";\nimport { gateModuleSub, gatePacksSub, gateTopLevel } from \"./cli-gate.js\";\nimport { resolveModuleTopShorthand } from \"./command-surface.js\";\nimport { cmdDebug } from \"./debug-command.js\";\nimport { initLocale, stripLangArgs, t } from \"./i18n/index.js\";\nimport { cmdLocale } from \"./locale-command.js\";\nimport { dispatchModuleCommand, isModuleCommand, scanAndWarnUnknown } from \"./module-commands.js\";\nimport { startRemoteAgent } from \"./remote-agent.js\";\nimport { getHelp, playWelcomeAnimation, startRepl } from \"./repl.js\";\nimport { ROOT } from \"./runtime.js\";\nimport { c } from \"./theme.js\";\nimport { dispatchPacksCommand, isPacksCommand } from \"./world-packs.js\";\n\nconst MODE = \"argv\" as const;\n\nasync function printVersion(): Promise<void> {\n await playWelcomeAnimation();\n}\n\nfunction printUsage(): void {\n console.log(`${getHelp(\"argv\")}`);\n}\n\nfunction deny(msg: string): never {\n console.log(msg);\n process.exit(1);\n}\n\nasync function main(): Promise<void> {\n const stripped = stripLangArgs(process.argv.slice(2));\n initLocale({ root: ROOT, flag: stripped.lang });\n const { packsMode, args } = parseGlobalArgv(stripped.args);\n\n if (args.length === 0 && !packsMode) {\n const { isRuntimeInitialized } = await import(\"./runtime.js\");\n if (!isRuntimeInitialized()) {\n const { runWizard } = await import(\"./wizard.js\");\n await runWizard();\n const { refreshServices } = await import(\"./services.js\");\n refreshServices();\n }\n const warn = await scanAndWarnUnknown();\n if (warn) console.log(warn);\n startRemoteAgent();\n await startRepl();\n return;\n }\n\n if (packsMode) {\n const [subRaw, ...subRest] = args;\n const sub = mapPacksSubAlias(subRaw);\n const g = gatePacksSub(sub, MODE);\n if (g) deny(g);\n console.log(await dispatchPacksCommand(sub, subRest));\n process.exit(0);\n }\n\n const [cmd, ...rest] = args;\n\n if (cmd && ![\"--help\", \"-h\", \"--version\", \"-v\"].includes(cmd)) {\n const topGate = gateTopLevel(cmd, MODE);\n if (topGate) deny(topGate);\n }\n\n const moduleSub = resolveModuleTopShorthand(cmd);\n if (moduleSub) {\n const g = gateModuleSub(moduleSub, MODE);\n if (g) deny(g);\n console.log(await dispatchModuleCommand(moduleSub, rest));\n process.exit(0);\n }\n\n switch (cmd) {\n case \"--help\":\n case \"-h\":\n case \"help\":\n printUsage();\n break;\n case \"--version\":\n case \"-v\":\n await printVersion();\n break;\n case \"locale\":\n case \"lang\":\n console.log(cmdLocale(rest));\n break;\n case \"debug\":\n console.log(await cmdDebug(rest));\n break;\n case \"status\":\n console.log(await cmdStatus());\n break;\n case \"logs\":\n case \"log\":\n /* channel=repl\uFF1A\u6B63\u5E38\u7531 gateTopLevel \u62E6\u622A\uFF1B\u6B64\u5904\u515C\u5E95 */\n deny(gateTopLevel(\"logs\", MODE) ?? c.yellow(t(\"cli.replOnly\", { cmd: \"logs\" })));\n break;\n case \"start\":\n if (rest[0] === \"-all\" || rest[0] === \"all\" || rest[0] === \"--all\") {\n console.log(await cmdStartAll());\n } else if (rest[0]) {\n console.log(await cmdStart(rest[0]));\n } else {\n console.log(c.yellow(t(\"svc.start.usage\")));\n }\n break;\n case \"stop\":\n if (rest[0] === \"-all\" || rest[0] === \"all\" || rest[0] === \"--all\") {\n console.log(await cmdStopAll());\n } else if (rest[0]) {\n console.log(await cmdStop(rest[0]));\n } else {\n console.log(c.yellow(t(\"svc.stop.usage\")));\n }\n break;\n case \"restart\":\n if (rest[0] === \"-all\" || rest[0] === \"all\" || rest[0] === \"--all\") {\n await cmdStopAll();\n console.log(await cmdStartAll());\n } else if (rest[0]) {\n console.log(await cmdRestart(rest[0]));\n } else {\n console.log(c.yellow(t(\"svc.restart.usage\")));\n }\n break;\n case \"update\":\n console.log(await cmdUpdate(rest));\n break;\n case \"packs\":\n case \"addon\": {\n const [sub, ...subRest] = rest;\n const g = gatePacksSub(sub, MODE);\n if (g) deny(g);\n console.log(await dispatchPacksCommand(sub, subRest));\n break;\n }\n case \"init\": {\n const { runWizard } = await import(\"./wizard.js\");\n await runWizard();\n break;\n }\n case \"remote\":\n console.log(await cmdRemote(rest, { daemonAfterEnroll: true }));\n break;\n default:\n if (isModuleCommand(cmd)) {\n const [sub, ...subRest] = rest;\n const g = gateModuleSub(sub, MODE);\n if (g) deny(g);\n console.log(await dispatchModuleCommand(sub, subRest));\n break;\n }\n if (isPacksCommand(cmd)) {\n const [sub, ...subRest] = rest;\n const g = gatePacksSub(sub, MODE);\n if (g) deny(g);\n console.log(await dispatchPacksCommand(sub, subRest));\n break;\n }\n console.log(c.red(t(\"common.unknownCommand\", { cmd: cmd ?? \"\" })));\n printUsage();\n process.exit(1);\n }\n process.exit(0);\n}\n\nmain().catch((err) => {\n console.error(c.red(err?.message ? t(\"common.error\", { message: err.message }) : t(\"common.fatal\")));\n process.exit(1);\n});\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -7,27 +7,18 @@
7
7
  */
8
8
  import { type CommandMode } from "./command-surface.js";
9
9
  import { type CliResult } from "./cli-result.js";
10
- /** 顶层命令名(主名 + 短别名),供 HELP / 补全 / 分发共用。 */
10
+ /** 顶层命令名(主名 + 短别名),供帮助 / 补全 / 分发共用。 */
11
11
  export declare const MODULE_CMD_NAMES: readonly ["module", "mod"];
12
12
  export type ModuleCmdName = (typeof MODULE_CMD_NAMES)[number];
13
13
  /** 判断是否为 module 顶层命令(含别名);避免 main/repl 再硬编码 case。 */
14
14
  export declare function isModuleCommand(cmd: string | undefined): cmd is ModuleCmdName;
15
- /** 染色后的 HELP 前缀,避免 HELP 硬编码 module/mod。 */
16
- export declare function paintModuleCmdAlias(paint: (name: string) => string): string;
17
- /** @deprecated 使用 listVisibleModuleSubs(mode);保留全集供调试。 */
18
- export declare const ALL_MODULE_SUBCOMMANDS: readonly ["list", "search", "install", "uninstall", "verify", "info", "enable", "disable", "link", "create", "dev", "build", "reload"];
19
15
  /** 开发者样式子命令(蓝标,非门禁)。 */
20
- export declare const DEV_ACCENT_MODULE_SUBCOMMANDS: readonly ["create", "dev", "build", "reload"];
21
- /** @deprecated 使用 ALL_MODULE_SUBCOMMANDS 或 listVisibleModuleSubs。 */
22
- export declare const MODULE_SUBCOMMANDS: readonly ["list", "search", "install", "uninstall", "verify", "info", "enable", "disable", "link", "create", "dev", "build", "reload"];
23
- /** @deprecated 使用 DEV_ACCENT_MODULE_SUBCOMMANDS / isDevAccentModuleSub。 */
24
- export declare const DEV_MODULE_SUBCOMMANDS: readonly ["create", "dev", "build", "reload"];
25
- export type ModuleSubcommand = (typeof ALL_MODULE_SUBCOMMANDS)[number];
16
+ export declare const DEV_ACCENT_MODULE_SUBCOMMANDS: readonly ["build", "reload"];
26
17
  /** 当前通道下可见的 module 子命令(自动补全 / usage)。 */
27
18
  export declare function getVisibleModuleSubcommands(mode: CommandMode): readonly string[];
28
19
  /** sub 是否为开发者蓝标(help 着色)。 */
29
20
  export declare function isDeveloperSubcommand(sub: string | undefined): boolean;
30
- /** Usage 行主名|别名(与 MODULE_CMD_NAMES 同源,避免与 HELP 漂移)。 */
21
+ /** Usage 行主名|别名(与 MODULE_CMD_NAMES 同源,避免与帮助文案漂移)。 */
31
22
  export declare function moduleUsage(mode?: CommandMode): string;
32
23
  export declare function cmdModuleList(_args: string[]): Promise<string>;
33
24
  /**
@@ -48,25 +39,15 @@ export declare function cmdModuleVerify(args: string[]): Promise<string>;
48
39
  export declare function cmdModuleEnable(args: string[]): Promise<CliResult>;
49
40
  export declare function cmdModuleDisable(args: string[]): Promise<CliResult>;
50
41
  export declare function cmdModuleInstall(args: string[]): Promise<string>;
51
- /**
52
- * `mod link [id] --from dir:…|local:…`
53
- * - 有 id:等价 `install <id> --link --from …`(必须带 --from)
54
- * - 无 id:交互询问本地包路径并 link
55
- */
56
- export declare function cmdModuleLink(args: string[]): Promise<string>;
57
42
  export declare function cmdModuleUninstall(args: string[]): Promise<string>;
58
- /**
59
- * `sfmc mod test` — 委托模块仓的 test runner(node --test + @sfmc-bds/sdk/testing)。
60
- * 解析 --from local[:path] 规则与 watch 一致;缺省 cwd。
61
- * 透传 npm test:让模块仓的 `scripts.test` 自己决定怎么跑(node --test / tsx / vitest 等)。
62
- */
63
- export declare function cmdModuleTest(args: string[]): Promise<string>;
64
43
  /**
65
44
  * 统一分发 module/mod 子命令 —— CLI(`main.ts`)与 REPL(`repl.ts`)共用,
66
45
  * 避免两处 switch 漂移。
67
46
  *
68
- * 通道门禁(external/repl)由调用方在 dispatch 前经 command-surface 判定;
47
+ * 通道门禁(argv/repl)由调用方在 dispatch 前经 command-surface 判定;
69
48
  * 本函数只负责子命令路由。`remove` 作为 uninstall 的同义别名保留。
49
+ *
50
+ * 作者向 test/watch/publish 已迁至 VS Code 扩展与 @sfmc-bds/devkit。
70
51
  */
71
52
  export declare function dispatchModuleCommand(sub: string | undefined, args: string[]): Promise<string>;
72
53
  /** 同步枚举已安装模块 id,供 REPL Tab 补全(不读 fingerprint,尽量轻量)。 */