@sfmc-bds/cli 0.2.0-beta.5 → 0.2.0-beta.7

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 (163) hide show
  1. package/dist/argv-parse.d.ts +13 -0
  2. package/dist/argv-parse.d.ts.map +1 -0
  3. package/dist/argv-parse.js +32 -0
  4. package/dist/argv-parse.js.map +7 -0
  5. package/dist/cli-gate.d.ts +11 -0
  6. package/dist/cli-gate.d.ts.map +1 -0
  7. package/dist/cli-gate.js +48 -0
  8. package/dist/cli-gate.js.map +7 -0
  9. package/dist/cmd-remote.d.ts +13 -0
  10. package/dist/cmd-remote.d.ts.map +1 -0
  11. package/dist/cmd-remote.js +38 -0
  12. package/dist/cmd-remote.js.map +7 -0
  13. package/dist/command-palette.d.ts +61 -0
  14. package/dist/command-palette.d.ts.map +1 -0
  15. package/dist/command-palette.js +352 -0
  16. package/dist/command-palette.js.map +7 -0
  17. package/dist/command-surface.d.ts +95 -0
  18. package/dist/command-surface.d.ts.map +1 -0
  19. package/dist/command-surface.js +324 -0
  20. package/dist/command-surface.js.map +7 -0
  21. package/dist/commands-reload.js +2 -2
  22. package/dist/commands-reload.js.map +2 -2
  23. package/dist/commands.d.ts +1 -1
  24. package/dist/commands.d.ts.map +1 -1
  25. package/dist/commands.js +79 -17
  26. package/dist/commands.js.map +2 -2
  27. package/dist/debug-command.d.ts +5 -0
  28. package/dist/debug-command.d.ts.map +1 -0
  29. package/dist/debug-command.js +118 -0
  30. package/dist/debug-command.js.map +7 -0
  31. package/dist/help-text.d.ts +3 -0
  32. package/dist/help-text.d.ts.map +1 -0
  33. package/dist/help-text.js +164 -0
  34. package/dist/help-text.js.map +7 -0
  35. package/dist/i18n/locales/en.d.ts +93 -68
  36. package/dist/i18n/locales/en.d.ts.map +1 -1
  37. package/dist/i18n/locales/en.js +97 -69
  38. package/dist/i18n/locales/en.js.map +2 -2
  39. package/dist/i18n/locales/zh-CN.d.ts.map +1 -1
  40. package/dist/i18n/locales/zh-CN.js +140 -106
  41. package/dist/i18n/locales/zh-CN.js.map +2 -2
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +6 -0
  45. package/dist/index.js.map +2 -2
  46. package/dist/logs.d.ts +16 -1
  47. package/dist/logs.d.ts.map +1 -1
  48. package/dist/logs.js +80 -11
  49. package/dist/logs.js.map +2 -2
  50. package/dist/main.js +58 -44
  51. package/dist/main.js.map +2 -2
  52. package/dist/module-commands.d.ts +25 -35
  53. package/dist/module-commands.d.ts.map +1 -1
  54. package/dist/module-commands.js +107 -65
  55. package/dist/module-commands.js.map +2 -2
  56. package/dist/module-pack-build.d.ts +10 -0
  57. package/dist/module-pack-build.d.ts.map +1 -0
  58. package/dist/module-pack-build.js +430 -0
  59. package/dist/module-pack-build.js.map +7 -0
  60. package/dist/module-publish.d.ts +69 -0
  61. package/dist/module-publish.d.ts.map +1 -0
  62. package/dist/module-publish.js +478 -0
  63. package/dist/module-publish.js.map +7 -0
  64. package/dist/module-watch.d.ts +32 -0
  65. package/dist/module-watch.d.ts.map +1 -0
  66. package/dist/module-watch.js +171 -0
  67. package/dist/module-watch.js.map +7 -0
  68. package/dist/pack-lifecycle.d.ts +1 -1
  69. package/dist/pack-lifecycle.d.ts.map +1 -1
  70. package/dist/pack-lifecycle.js +3 -3
  71. package/dist/pack-lifecycle.js.map +2 -2
  72. package/dist/pack-update/index.d.ts +18 -0
  73. package/dist/pack-update/index.d.ts.map +1 -0
  74. package/dist/pack-update/index.js +113 -0
  75. package/dist/pack-update/index.js.map +7 -0
  76. package/dist/registry.d.ts +6 -3
  77. package/dist/registry.d.ts.map +1 -1
  78. package/dist/registry.js +15 -3
  79. package/dist/registry.js.map +2 -2
  80. package/dist/remote-agent.d.ts.map +1 -1
  81. package/dist/remote-agent.js +7 -5
  82. package/dist/remote-agent.js.map +2 -2
  83. package/dist/repl-windows/format-display.d.ts +10 -0
  84. package/dist/repl-windows/format-display.d.ts.map +1 -0
  85. package/dist/repl-windows/format-display.js +57 -0
  86. package/dist/repl-windows/format-display.js.map +7 -0
  87. package/dist/repl-windows/host.d.ts +60 -0
  88. package/dist/repl-windows/host.d.ts.map +1 -0
  89. package/dist/repl-windows/host.js +179 -0
  90. package/dist/repl-windows/host.js.map +7 -0
  91. package/dist/repl-windows/index.d.ts +9 -0
  92. package/dist/repl-windows/index.d.ts.map +1 -0
  93. package/dist/repl-windows/index.js +13 -0
  94. package/dist/repl-windows/index.js.map +7 -0
  95. package/dist/repl-windows/logs-filter-window.d.ts +15 -0
  96. package/dist/repl-windows/logs-filter-window.d.ts.map +1 -0
  97. package/dist/repl-windows/logs-filter-window.js +77 -0
  98. package/dist/repl-windows/logs-filter-window.js.map +7 -0
  99. package/dist/repl-windows/service-window.d.ts +4 -0
  100. package/dist/repl-windows/service-window.d.ts.map +1 -0
  101. package/dist/repl-windows/service-window.js +28 -0
  102. package/dist/repl-windows/service-window.js.map +7 -0
  103. package/dist/repl-windows/types.d.ts +56 -0
  104. package/dist/repl-windows/types.d.ts.map +1 -0
  105. package/dist/repl-windows/types.js +1 -0
  106. package/dist/repl-windows/types.js.map +7 -0
  107. package/dist/repl.d.ts +7 -8
  108. package/dist/repl.d.ts.map +1 -1
  109. package/dist/repl.js +707 -417
  110. package/dist/repl.js.map +3 -3
  111. package/dist/runtime.d.ts +2 -0
  112. package/dist/runtime.d.ts.map +1 -1
  113. package/dist/runtime.js +4 -0
  114. package/dist/runtime.js.map +2 -2
  115. package/dist/send-target.d.ts +11 -0
  116. package/dist/send-target.d.ts.map +1 -0
  117. package/dist/send-target.js +38 -0
  118. package/dist/send-target.js.map +7 -0
  119. package/dist/services.d.ts +21 -1
  120. package/dist/services.d.ts.map +1 -1
  121. package/dist/services.js +146 -7
  122. package/dist/services.js.map +2 -2
  123. package/dist/theme.js +1 -1
  124. package/dist/theme.js.map +2 -2
  125. package/dist/wizard.d.ts.map +1 -1
  126. package/dist/wizard.js +11 -9
  127. package/dist/wizard.js.map +2 -2
  128. package/dist/world-packs.d.ts.map +1 -1
  129. package/dist/world-packs.js +6 -3
  130. package/dist/world-packs.js.map +2 -2
  131. package/package.json +5 -5
  132. package/dist/module-wizard.d.ts +0 -14
  133. package/dist/module-wizard.d.ts.map +0 -1
  134. package/dist/module-wizard.js +0 -313
  135. package/dist/module-wizard.js.map +0 -7
  136. package/dist/pack-update/bindings.d.ts +0 -12
  137. package/dist/pack-update/bindings.d.ts.map +0 -1
  138. package/dist/pack-update/bindings.js +0 -64
  139. package/dist/pack-update/bindings.js.map +0 -7
  140. package/dist/pack-update/config.d.ts +0 -22
  141. package/dist/pack-update/config.d.ts.map +0 -1
  142. package/dist/pack-update/config.js +0 -141
  143. package/dist/pack-update/config.js.map +0 -7
  144. package/dist/pack-update/providers/curseforge.d.ts +0 -23
  145. package/dist/pack-update/providers/curseforge.d.ts.map +0 -1
  146. package/dist/pack-update/providers/curseforge.js +0 -229
  147. package/dist/pack-update/providers/curseforge.js.map +0 -7
  148. package/dist/pack-update/providers/index.d.ts +0 -16
  149. package/dist/pack-update/providers/index.d.ts.map +0 -1
  150. package/dist/pack-update/providers/index.js +0 -37
  151. package/dist/pack-update/providers/index.js.map +0 -7
  152. package/dist/pack-update/service.d.ts +0 -21
  153. package/dist/pack-update/service.d.ts.map +0 -1
  154. package/dist/pack-update/service.js +0 -572
  155. package/dist/pack-update/service.js.map +0 -7
  156. package/dist/pack-update/types.d.ts +0 -126
  157. package/dist/pack-update/types.d.ts.map +0 -1
  158. package/dist/pack-update/types.js +0 -8
  159. package/dist/pack-update/types.js.map +0 -7
  160. package/dist/pack-update/version-policy.d.ts +0 -81
  161. package/dist/pack-update/version-policy.d.ts.map +0 -1
  162. package/dist/pack-update/version-policy.js +0 -210
  163. package/dist/pack-update/version-policy.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/i18n/locales/en.ts"],
4
- "sourcesContent": ["/**\n * English message catalog \u2014 source of truth for MessageKey.\n * Placeholders use {name} form; chalk stays at call sites.\n */\nexport const en = {\n /* \u2500\u2500\u2500 common \u2500\u2500\u2500 */\n \"common.cancelled\": \"Cancelled\",\n \"common.done\": \"Done\",\n \"common.required\": \"Required\",\n \"common.error\": \"Error: {message}\",\n \"common.fatal\": \"Fatal\",\n \"common.unknownCommand\": \"Unknown command: {cmd}\",\n \"common.unknownShort\": \"Unknown: {cmd} (try: help)\",\n \"common.tips\": \"Tips\",\n \"common.path\": \"Path\",\n \"common.hint\": \"Hint\",\n \"common.none\": \"(none)\",\n \"common.all\": \"ALL\",\n\n /* \u2500\u2500\u2500 locale \u2500\u2500\u2500 */\n \"locale.current\": \"Current locale: {locale}\",\n \"locale.set\": \"Locale set to {locale}\",\n \"locale.invalid\": \"Unknown locale: {value} (try: zh-CN, en)\",\n \"locale.usage\": \"Usage: 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 help \u2500\u2500\u2500 */\n \"help.title\": \"sfmc \u2014 ScriptsForMinecraftServer CLI\",\n \"help.section.service\": \"\u2500\u2500\u2500 Service Control \u2500\u2500\u2500\",\n \"help.status\": \"Show all services status\",\n \"help.logs\": \"View / follow service logs\",\n \"help.start\": \"Start a service (or all)\",\n \"help.stop\": \"Stop a service (or all)\",\n \"help.restart\": \"Restart a service (or all)\",\n \"help.send\": \"Send command to a service's stdin\",\n \"help.section.update\": \"\u2500\u2500\u2500 BDS Update \u2500\u2500\u2500\",\n \"help.update\": \"Check / apply BDS update\",\n \"help.section.remote\": \"\u2500\u2500\u2500 Remote Agent \u2500\u2500\u2500\",\n \"help.remote.status\": \"Show enrollment status\",\n \"help.remote.enroll\": \"Enroll with a controller\",\n \"help.remote.disable\": \"Disconnect + disable agent\",\n \"help.section.module\": \"\u2500\u2500\u2500 Module Management \u2500\u2500\u2500\",\n \"help.module.list\": \"List installed modules\",\n \"help.module.search\": \"Search registry / show module info\",\n \"help.module.install\": \"Install a module (--link = symlink)\",\n \"help.module.uninstall\": \"Remove installed module\",\n \"help.module.verify\": \"Verify SHA-256 integrity\",\n \"help.module.info\": \"Show module details\",\n \"help.module.toggle\": \"Toggle module (requires db-server)\",\n \"help.module.create\": \"Interactive scaffold\",\n \"help.module.link\": \"Link local module (--link install)\",\n \"help.module.dev\": \"Link + enable + build + deploy\",\n \"help.module.build\": \"Build BP+RP from enabled modules\",\n \"help.module.reload\": \"Build + deploy BP; send reload to BDS (--build-only skips send)\",\n \"help.section.addon\": \"\u2500\u2500\u2500 Addon Manager \u2500\u2500\u2500\",\n \"help.addon\": \"World BP/RP inbox manager\",\n \"help.section.general\": \"\u2500\u2500\u2500 General \u2500\u2500\u2500\",\n \"help.init\": \"Setup wizard\",\n \"help.locale\": \"Show / set CLI language\",\n \"help.version\": \"Show version\",\n \"help.help\": \"Show this help\",\n \"help.quit\": \"Exit\",\n \"help.shortcuts\": \"Shortcuts:\",\n \"help.shortcut.tab\": \"Complete (cycle on repeat)\",\n \"help.shortcut.right\": \"Accept gray suggestion\",\n \"help.shortcut.ctrll\": \"Filter log level / source / history\",\n \"help.shortcut.history\": \"Command history\",\n\n /* \u2500\u2500\u2500 repl \u2500\u2500\u2500 */\n \"repl.stopping\": \"stopping services...\",\n \"repl.bye\": \"bye\",\n \"repl.forceStop\": \"force stopping services...\",\n \"repl.nonInteractive\": \" Non-interactive mode (pipe detected)\\n\",\n \"repl.historyHeader\": \"\u2500\u2500 history {count} line(s) \u2500\u2500\",\n \"repl.filter\": \"filter: {level} / {source} / {history}\",\n \"repl.followRequiresTty\": \"follow mode requires TTY\",\n \"repl.history.live\": \"live only (no replay)\",\n \"repl.history.last50\": \"last 50\",\n \"repl.history.last100\": \"last 100\",\n \"repl.history.last500\": \"last 500\",\n \"repl.history.last1000\": \"last 1000\",\n \"repl.history.last1min\": \"last 1 min\",\n \"repl.history.last5min\": \"last 5 min\",\n \"repl.history.last15min\": \"last 15 min\",\n \"repl.history.last1hour\": \"last 1 hour\",\n \"repl.history.all\": \"all buffered\",\n\n /* \u2500\u2500\u2500 services / commands \u2500\u2500\u2500 */\n \"svc.header\": \"Services\",\n \"svc.col.name\": \"Name\",\n \"svc.col.status\": \"Status\",\n \"svc.col.pid\": \"PID\",\n \"svc.col.uptime\": \"Uptime\",\n \"svc.running\": \"Running\",\n \"svc.stopped\": \"Stopped\",\n \"svc.unknown\": \"Unknown service: {name} (try: {list})\",\n \"svc.logs.usage\": \"Usage: logs <service> [-n N] [-f]\",\n \"svc.logs.empty\": \"(no logs yet)\",\n \"svc.logs.header\": \"{title} logs (last {count}):\",\n \"svc.start.usage\": \"Usage: sfmc start <service>|-all\",\n \"svc.start.usageShort\": \"Usage: start <service>|-all\",\n \"svc.stop.usage\": \"Usage: sfmc stop <service>|-all\",\n \"svc.stop.usageShort\": \"Usage: stop <service>|-all\",\n \"svc.restart.usage\": \"Usage: sfmc restart <service>|-all\",\n \"svc.restart.usageShort\": \"Usage: restart <service>|-all\",\n \"svc.alreadyRunning\": \"{title} already running (PID {pid})\",\n \"svc.alreadyStarting\": \"{title} already starting...\",\n \"svc.started\": \"{title} started\",\n \"svc.startFailed\": \"{title} failed: {message}\",\n \"svc.alreadyStopped\": \"{title} already stopped\",\n \"svc.alreadyStopping\": \"{title} already stopping...\",\n \"svc.stoppedMsg\": \"{title} stopped\",\n \"svc.stopFailed\": \"{title} stop failed: {message}\",\n \"svc.send.usage\": \"Usage: send <service> <message>\",\n \"svc.notRunning\": \"{title} not running\",\n \"svc.sent\": \"sent to {name}\",\n \"svc.writeFailed\": \"write failed\",\n \"svc.restarted\": \"{title} restarted\",\n \"svc.restartFailed\": \"{title} restart failed: {message}\",\n \"svc.allStarted\": \"All services started\",\n \"svc.allStopped\": \"All services stopped\",\n \"svc.updateComplete\": \"update complete\",\n \"svc.updateExited\": \"update exited with code {code}\",\n \"svc.updateError\": \"update error: {message}\",\n \"svc.updateStartBds\": \"update: starting BDS via supervisor\",\n \"svc.bdsStarted\": \"BDS started (supervised)\",\n \"svc.bdsStartFailed\": \"BDS start failed: {message}\",\n \"svc.bdsStoppedForUpdate\": \"BDS was stopped for update; run `start bds` when ready\",\n\n /* \u2500\u2500\u2500 remote \u2500\u2500\u2500 */\n \"remote.enrolled\": \"Enrolled remote agent: {id}\",\n \"remote.disabled\": \"Remote agent disabled\",\n \"remote.usage\":\n \"Usage: sfmc remote enroll <controller-url> <enrollment-token> [name] | sfmc remote status | sfmc remote disable\",\n \"remote.usageShort\":\n \"Usage: remote enroll <controller-url> <enrollment-token> [name] | remote status | remote disable\",\n\n /* \u2500\u2500\u2500 wizard \u2500\u2500\u2500 */\n \"wizard.intro\": \"Setup Wizard =D\",\n \"wizard.rerun\": \"Already initialized. Re-run setup?\",\n \"wizard.skipped\": \"Setup skipped\",\n \"wizard.step1\": \"Step 1 - Runtime Environment\",\n \"wizard.runtimeRoot\": \"Runtime root: {root}\",\n \"wizard.npmMissing\": \"npm runtime is missing required directories: {list}\",\n \"wizard.prepFailed\": \"Runtime preparation failed: {message}\",\n \"wizard.step2\": \"Step 2 - External Runtimes\",\n \"wizard.step2Note\": \"Select paths for BDS, Database, and LLBOT\",\n \"wizard.bdsDir\": \"BDS installation directory\",\n \"wizard.cannotCreateBds\": \"Cannot create BDS installation directory: {dir}\",\n \"wizard.enableLlbot\": \"Enable LLBot (QQ bridge)?\",\n \"wizard.llbotDir\": \"LLBot runtime directory\",\n \"wizard.usingDefault\": \"Using default: {path}\",\n \"wizard.dbDir\": \"Database storage directory\",\n \"wizard.dbPort\": \"Database server port:\",\n \"wizard.portRange\": \"Enter 1024\u201365535\",\n \"wizard.valueRequired\": \"Value is required!\",\n \"wizard.step3\": \"Step 3 - BDS Environment\",\n \"wizard.bdsFound\": \"Found at {path}\",\n \"wizard.bdsNotFound\": \"Not found at {path}\",\n \"wizard.eula\":\n \"Do you agree to the EULA(https://www.minecraft.net/en-us/eula) published by Mojang? You must agree to it before you can use this program.\",\n \"wizard.disagreed\": \"Disagreed.\",\n \"wizard.downloadBds\": \"Download BDS now?\",\n \"wizard.selectChannel\": \"Select channel:\",\n \"wizard.channel.release\": \"Release\",\n \"wizard.channel.releaseHint\": \"stable\",\n \"wizard.channel.preview\": \"Preview\",\n \"wizard.channel.previewHint\": \"may be unstable\",\n \"wizard.cannotCreateBackup\": \"Cannot create BDS backup directory: {dir}\",\n \"wizard.backupDir\": \"BDS backup directory\",\n \"wizard.preserve\": \"Files to preserve on update(When updates are enabled next time):\",\n \"wizard.preserve.serverProps\": \"server config\",\n \"wizard.preserve.worlds\": \"world data\",\n \"wizard.preserve.config\": \"config directory\",\n \"wizard.updaterTip\":\n \"If could not find BDS runtime, updater will be started later.\\n You can configure updater later in configs/bds_updater.json\",\n \"wizard.step4\": \"Step 4 - Modules\",\n \"wizard.modulesFound\": \"Found {count} optional modules\",\n \"wizard.modulesNone\": \"No modules catalog found\",\n \"wizard.enableModules\": \"Enable modules:\",\n \"wizard.emptyHint\": \"(empty)\",\n \"wizard.updatingConfigs\": \"Updating configs\",\n \"wizard.configsUpdated\": \"Configs updated\",\n \"wizard.updatingModules\": \"Updating module state\",\n \"wizard.modulesUpdated\": \"Module state updated\",\n \"wizard.initDb\": \"Initializing database\",\n \"wizard.dbTimeout\": \"Database startup timed out\",\n \"wizard.dbOk\": \"Database initialized\",\n \"wizard.downloadingBds\": \"Downloading BDS\",\n \"wizard.downloadFail\": \"Downloaded Failure.\",\n \"wizard.bdsDownloaded\": \"BDS downloaded\",\n \"wizard.done\": \"Done! Run help to learn managing.\",\n \"wizard.installing\": \"Installing {count} module(s) from first-party registry\",\n \"wizard.installed\": \"{count} installed\",\n \"wizard.installFailed\": \"install failed: {message}\\nYou can retry with: sfmc mod install <id>\",\n \"wizard.fetchMissing\": \"fetch-module missing \u2014 run `sfmc mod install <id>` later for each of: {list}\",\n \"wizard.noModulesSelected\":\n \"No modules selected \u2014 behavior pack will be empty until you install one with `sfmc mod install <id>`.\",\n \"wizard.buildingBp\": \"Building behavior pack\",\n \"wizard.buildFailed\": \"build failed: {message}\\nRun `sfmc mod build` later to retry.\",\n \"wizard.deploying\": \"Deploying to {path}\",\n \"wizard.restartBds\": \"Restart BDS to load the new behavior pack.\",\n \"wizard.deployFailed\": \"deploy failed: {message}\\nRun `sfmc mod reload` after fixing bds_path in configs/.\",\n\n /* \u2500\u2500\u2500 prompts \u2500\u2500\u2500 */\n \"prompt.enterPath\": \"Enter path\",\n \"prompt.browse\": \"Browse\u2026\",\n \"prompt.browseHint\": \"Open system folder picker\",\n\n /* \u2500\u2500\u2500 reload \u2500\u2500\u2500 */\n \"reload.buildOnly\": \"(deploy done; type reload in BDS/game, or omit --build-only to send automatically)\",\n \"reload.bdsNotRunning\":\n \"BDS is not running \u2014 build+deploy finished. After start, type reload in BDS console or in-game.\",\n \"reload.sent\": \"Sent reload to BDS (scripts will reload from new main.js)\",\n\n /* \u2500\u2500\u2500 bp \u2500\u2500\u2500 */\n \"bp.usage\": \"Usage: sfmc behavior-pack|bp <build|deploy>\",\n\n /* \u2500\u2500\u2500 module wizard \u2500\u2500\u2500 */\n \"modwiz.needTty.create\": \"Run in an interactive terminal: sfmc module create\",\n \"modwiz.needTty.link\": \"Run in an interactive terminal: sfmc module link\",\n \"modwiz.needTty.dev\": \"Run in an interactive terminal: sfmc module dev\",\n \"modwiz.sfmcModulesPath\": \"sfmc-modules: {path}\",\n \"modwiz.pickModulesRoot\": \"sfmc-modules root (with packages/ and index.json)\",\n \"modwiz.noPackages\": \"packages/ subdirectory not found: {path}\",\n \"modwiz.noFetch\": \"fetch-module.mjs not found\",\n \"modwiz.enableModule\": \"Enable this module? (writes module-lock.json; needs db-server)\",\n \"modwiz.buildDeploy\": \"Build and deploy behavior pack? (then use `sfmc mod reload` or type reload in BDS/game)\",\n \"modwiz.task.build\": \"Building behavior pack\",\n \"modwiz.task.deploy\": \"Deploying behavior pack\",\n \"modwiz.reloadHint\": \"Use `sfmc mod reload` (build+deploy then send reload to BDS); or type reload in BDS/game.\",\n \"modwiz.kebab\": \"Must be lowercase kebab-case, e.g. my-feature\",\n \"modwiz.createIntro\": \"Module scaffold\",\n \"modwiz.folderId\": \"Module folder name (install id)\",\n \"modwiz.dirExists\": \"Directory already exists: {path}\",\n \"modwiz.displayName\": \"Display name\",\n \"modwiz.template\": \"Scaffold template\",\n \"modwiz.tpl.minimal\": \"Minimal module\",\n \"modwiz.tpl.minimalHint\": \"Command + permission stubs\",\n \"modwiz.tpl.db\": \"With DB permission stubs\",\n \"modwiz.tpl.dbHint\": \"manifest presets db:read/write\",\n \"modwiz.noNewModule\": \"tools/new-module.mjs not found (beside sfmc-modules or repo tools/)\",\n \"modwiz.genPackage\": \"Generate packages/{id}\",\n \"modwiz.skeletonWritten\": \"Skeleton written to sfmc-modules\",\n \"modwiz.createdNote\": \"Created {path}\",\n \"modwiz.linkAsk\": \"Link into repo modules/packages/? (--link; edits apply live)\",\n \"modwiz.link\": \"Link\",\n \"modwiz.linkFailed\": \"Link failed\",\n \"modwiz.enable\": \"Enable\",\n \"modwiz.createDone\": \"Done. Source: {path}\",\n \"modwiz.moduleCreated\": \"Module {id} created\",\n \"modwiz.linkIntro\": \"Link local module\",\n \"modwiz.noLinkable\": \"No modules under {path}/packages\",\n \"modwiz.noLinkableShort\": \"No linkable module packages\",\n \"modwiz.pickLink\": \"Select module package to link\",\n \"modwiz.linking\": \"Linking {id}\",\n \"modwiz.linkSynced\": \"catalog + lock synced\",\n \"modwiz.linked\": \"Linked {id}\",\n \"modwiz.devIntro\": \"Local module development\",\n \"modwiz.noDevPackages\": \"No modules under {path}/packages\",\n \"modwiz.noDevShort\": \"No developable module packages\",\n \"modwiz.pickDev\": \"Select module to develop\",\n \"modwiz.enabling\": \"Enabling {id}\",\n \"modwiz.devHint\":\n \"After editing sfmc-modules sources, run `sfmc mod reload` (build + deploy + send reload to BDS).\\nOr run `sfmc module dev` again, then type reload in BDS/game.\",\n \"modwiz.devDone\": \"{id} linked; build + deploy finished\",\n \"modwiz.devReady\": \"{id} ready for development\",\n\n /* \u2500\u2500\u2500 module commands \u2500\u2500\u2500 */\n \"mod.usage\": \"Usage: sfmc {cmds} <{subs}> [args]\",\n \"mod.list.title\": \"Installed modules\",\n \"mod.noneInstalled\": \"\\nNo modules installed. Drop a module folder under {dir} or run `sfmc mod install <id>`.\\n\",\n \"mod.notInRegistry\": 'Module \"{query}\" not found in first-party registry.',\n \"mod.info.usage\": \"Usage: sfmc module|mod info <id>\",\n \"mod.notInstalledAt\": \"Module {id} not installed at {path}\",\n \"mod.notInstalled\": \"Module {id} not installed\",\n \"mod.verifyOk\": \"{id} ok\\n fingerprint: {fp}\\n\",\n \"mod.dbUnreachable\": \"Cannot reach db-server at {url}: {message}. Is db-service running? (sfmc> start db)\",\n \"mod.toggleFailed\": \"{action} {id} failed: {err}\",\n \"mod.action.enabled\": \"enabled\",\n \"mod.action.disabled\": \"disabled\",\n \"mod.toggleOk\": \"{label} {id}\",\n \"mod.toggleBadBody\": \"{action} {id} returned: {text}\",\n \"mod.enable.usage\": \"Usage: sfmc module|mod enable <id>\",\n \"mod.disable.usage\": \"Usage: sfmc module|mod disable <id>\",\n \"mod.install.usage\": \"Usage: sfmc module|mod install <id> [id2 ...] [--from <source>] [--link]\",\n \"mod.linkNeedsFrom\":\n \"--link requires --from dir:<path>, or set SFMC_MODULES_ROOT / sibling ../sfmc-modules.\\nExample: sfmc mod install land --from dir:../sfmc-modules/packages/land --link\",\n \"mod.fetchMissing\": \"fetch-module not found. Install @sfmc-bds/sfmc or run inside the monorepo.\",\n \"mod.uninstall.usage\": \"Usage: sfmc module|mod uninstall <id>\",\n \"mod.notInstalledFolder\": \"Module {id} not installed (no folder at {path})\",\n \"mod.removed\": \"Removed {id} from {path}\\n\",\n\n /* \u2500\u2500\u2500 pack lifecycle \u2500\u2500\u2500 */\n \"pack.built\": \"built packs at {path}\",\n \"pack.buildFailed\": \"pack build failed: {message}\",\n \"pack.deployed\": \"deployed packs\",\n \"pack.deployFailed\": \"pack deploy failed: {message}\",\n \"pack.statusFailed\": \"pack status failed: {message}\",\n \"pack.listFailed\": \"pack list failed: {message}\",\n \"pack.noCatalog\": \"no deployed catalog \u2014 run `sfmc pack deploy` first\",\n \"pack.noUuid\": \"no {kind} pack uuid in catalog\",\n \"pack.actionFailed\": \"{action} failed: {detail}\",\n \"pack.enabledOk\": \"enabled {kind} pack {uuid}\",\n \"pack.disabledOk\": \"disabled {kind} pack {uuid}\",\n \"pack.actionErr\": \"pack {action} failed: {message}\",\n \"pack.usage\": \"Usage: sfmc pack <{subs}> [behavior|resource]\",\n\n /* \u2500\u2500\u2500 world packs / addon \u2500\u2500\u2500 */\n \"packs.restartHint\": \"Restart BDS for changes to take effect\",\n \"packs.rejoinHint\": \"Clients must rejoin to download resource packs\",\n \"packs.conflict\": \"Conflict detected:\",\n \"packs.conflict.existing\": \" Existing: {name} v{version} {uuid}\\n {dir}\",\n \"packs.conflict.incoming\": \" Incoming: {name} v{version} {uuid}\",\n \"packs.overwriteAsk\": \"Overwrite existing pack (same UUID, version not newer)?\",\n \"packs.badManifest\": \"Unrecognized manifest (need resources/data/script module and header name/uuid/version)\",\n \"packs.skippedNoOverwrite\": \"Skipped (not overwritten)\",\n \"packs.conflictSkip\": \" Conflict skipped (non-interactive; use --force): {name}\",\n \"packs.inboxSkip\": \" Skipping inbox: {message}\",\n \"packs.inboxFound\": \" Inbox found {count} item(s) \u2192 {level}\",\n \"packs.alreadyDone\": \" Already processed, skip: {name}\",\n \"packs.dryRunExtract\": \" dry-run extract: {name}\",\n \"packs.noPackRoot\": \" Pack root not found: {name}\",\n \"packs.installedEnabled\": \" Installed & enabled {kind}: {name} v{version}\",\n \"packs.installFailed\": \" Install failed {name}: {reason}\",\n \"packs.listEmpty\": \"(none)\",\n \"packs.list.bpHeader\": \"Behavior packs:\",\n \"packs.list.rpHeader\": \"Resource packs:\",\n \"packs.list.on\": \"on \",\n \"packs.list.off\": \"off\",\n \"packs.doctor.parseFail\": \"{file} could not be parsed\",\n \"packs.doctor.missingDir\": \"List has uuid but directory missing ({kind}): {uuid}\",\n \"packs.doctor.versionMismatch\": \"Version mismatch ({kind}): {folder} list {listVer} vs disk {diskVer}\",\n \"packs.doctor.notEnabled\": \"Installed but not enabled: [{kind}] {folder} ({uuid})\",\n \"packs.doctor.ok\": \"doctor: no issues found\",\n \"packs.doctor.found\": \"doctor found {count} issue(s):\\n{list}\",\n \"packs.notFound\": \"Pack not found: {id}\",\n \"packs.toggleDone\": \"{verb} {folder} done. {hint}\",\n \"packs.bump.usage\": \"Usage: packs bump <uuid|folder> (RP only)\",\n \"packs.bump.rpOnly\": \"packs bump only supports resource packs (RP)\",\n \"packs.bumped\": \"Bumped {folder} \u2192 v{version}. {restart}; {rejoin}\",\n \"packs.pathMissing\": \"Path does not exist: {path}\",\n \"packs.notArchive\": \"Not a pack directory or .zip/.mcpack/.mcaddon\",\n \"packs.noManifestRoot\": \"No pack root with manifest.json found\",\n \"packs.installedLine\": \"Installed & enabled: {name} v{version} ({kind})\",\n \"packs.skipFailLine\": \"Skipped/failed: {name} ({reason})\",\n \"packs.inboxEmpty\": \"Inbox is empty\",\n \"packs.search.usage\": \"Usage: packs search <query> (CurseForge remote; requires API key)\",\n \"packs.bind.usage\": \"Usage: packs bind <uuid|folder> <projectId|slug|url>\",\n \"packs.unbind.usage\": \"Usage: packs unbind <uuid|folder>\",\n \"packs.unbindOk\": \"Unbound {uuid} (or edit {path})\",\n \"packs.unbindMiss\": \"No binding found: {id}\",\n \"packs.update.usage\": \"Usage: packs update <uuid|folder|--all>\",\n \"packs.toggle.usage\": \"Usage: packs {verb} <uuid|folder>\",\n \"packs.uninstall.usage\":\n \"Usage: packs uninstall [uuid|folder...] [--purge] [--no-paired]\\n No args + TTY \u2192 multi-select; multiple ids allowed\",\n \"packs.uninstall.protected\": \"Refusing to uninstall platform pack: {folder} (use sfmc mod)\",\n \"packs.uninstall.trashed\": \"Uninstalled to recycle bin: {folder}\\n \u2192 {dest}\",\n \"packs.uninstall.deleted\": \"Uninstalled and deleted: {folder}\",\n \"packs.uninstall.dirMissing\": \"Removed from enable list; directory already missing: {folder}\",\n \"packs.uninstall.bindingRemoved\": \"Cleared update-source binding: {uuid}\",\n \"packs.uninstall.pick\": \"Select packs to uninstall (space to toggle, enter to confirm)\",\n \"packs.uninstall.summary\": \"Will uninstall {count} item(s) (including paired RPs):\",\n \"packs.uninstall.confirm\": \"Uninstall these {count} item(s)?\",\n \"packs.uninstall.cancelled\": \"Uninstall cancelled\",\n \"packs.uninstall.none\": \"No uninstallable packs\",\n \"packs.uninstall.pairedOf\": \"(paired with {folder})\",\n \"packs.install.usage\": \"Usage: packs install [path|--inbox] [--force]\",\n \"packs.installInbox\": \"install inbox: installed={installed} skipped={skipped} failed={failed}\",\n \"packs.scanResult\": \"scan: installed={installed} skipped={skipped} failed={failed}\",\n \"packs.unknownSub\": \"Unknown packs subcommand: {verb}\\n\",\n \"packs.usage.title\": \"{cmd} (alias {alias}) \u2014 world-side BP/RP\",\n \"packs.usage.bump\": \"RP only; patch version +1\",\n \"packs.usage.cfSearch\": \"CurseForge search (API key required)\",\n \"packs.usage.inbox\": \"Inbox: {path}\",\n \"packs.usage.trash\": \"Uninstall recycle bin: {path} (pack-update.json \u2192 uninstall.recycleBin)\",\n \"packs.usage.sources\": \"Update source bindings: {path} (edit enabled/projectId)\",\n \"packs.usage.enableNote\": \"Install enables via world_*_packs.json by default; {hint}.\",\n \"packs.usage.moduleNote\": \"For module aggregation use {cmd} (not this command).\",\n\n \"packUpdate.needKey\":\n \"No pack update provider configured. Set providers.*.apiKey in {path} (or the matching env var). CurseForge: get a Studios key from https://console.curseforge.com/ \u2192 providers.curseforge.apiKey / CURSEFORGE_API_KEY (not the Upload API UUID token)\",\n \"packUpdate.probeNoName\": \"Cannot derive a searchable name from header/folder\",\n \"packUpdate.probeQueries\": \"Probe sources header={header} folder={folder}\\n \u2192 {queries}\",\n \"packUpdate.probeFail\": \"Source probe failed: {message}\",\n \"packUpdate.probeMiss\": \"No CurseForge match for: {name}\",\n \"packUpdate.probeLowScore\": \"Low similarity: {name} \u2192 {hit} ({score}) {url}\",\n \"packUpdate.probeHit\": \"Possible update source: {name} \u2192 {hit} ({score})\\n {url}\",\n \"packUpdate.editHint\": \"You can later edit {path} to change/disable sources (enabled: false)\",\n \"packUpdate.confirmBind\": \"Bind this CurseForge project as update source? {hit}\",\n \"packUpdate.probeAutoBind\": \"Non-interactive: auto-binding \u2192 {provider}:{slug}\\n {path}\",\n \"packUpdate.probeNoAutoBind\": \"Non-interactive: not auto-binding; use packs bind\",\n \"packUpdate.bindSkipped\": \"Bind skipped\",\n \"packUpdate.bindOk\": \"Bound {uuid} \u2192 {provider}:{slug} [{enabled}]\\n file: {path}\",\n \"packUpdate.bindBpOnly\": \"Only behavior packs (BP) can be bound\",\n \"packUpdate.resolveFail\": \"Cannot resolve CurseForge project: {ref}\",\n \"packUpdate.searchEmpty\": \"No CurseForge results: {query}\",\n \"packUpdate.sourcesHeader\": \"config: {config}\\nbindings: {sources}\",\n \"packUpdate.sourcesEmpty\": \"No bindings yet. Install a BP to probe, or packs bind.\",\n \"packUpdate.disabled\": \"pack-update disabled in config\",\n \"packUpdate.bindingDisabled\": \"binding disabled (enabled: false)\",\n \"packUpdate.noRemoteFile\": \"No remote file available\",\n \"packUpdate.fileNewer\": \"Newer remote file: {file} (id={id})\",\n \"packUpdate.upToDate\": \"up to date\",\n \"packUpdate.needSync\": \"Remote file not yet synced into world (version {local} \u2261 {remote}, fileId={id})\",\n \"packUpdate.remoteNoBp\": \"No behavior pack in remote archive\",\n \"packUpdate.bpNewer\": \"BP update {local} \u2192 {remote}\",\n \"packUpdate.installFail\": \"Install failed: {reason}\",\n \"packUpdate.installedBp\": \"Wrote BP \u2192 {dir} (v{version})\",\n \"packUpdate.installedRp\": \"Wrote RP \u2192 {dir} (v{version})\",\n \"packUpdate.rpInstallMiss\":\n \"Archive has RP but paired resource pack was not installed (check dependencies / pairedResourceUuid)\",\n \"packUpdate.applied\": \"Updated {name} BP={bp} RP={rp}\",\n \"packUpdate.noBinding\": \"No update binding for: {id}\",\n \"packUpdate.startupFail\": \"Startup update check failed: {message}\",\n} as const;\n\nexport type MessageKey = keyof typeof en;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * English message catalog \u2014 source of truth for MessageKey.\n * Placeholders use {name} form; chalk stays at call sites.\n */\nexport const en = {\n /* \u2500\u2500\u2500 common \u2500\u2500\u2500 */\n \"common.cancelled\": \"Cancelled\",\n \"common.done\": \"Done\",\n \"common.required\": \"Required\",\n \"common.error\": \"Error: {message}\",\n \"common.fatal\": \"Fatal\",\n \"common.unknownCommand\": \"Unknown command: {cmd}\",\n \"common.unknownShort\": \"Unknown: {cmd} (try: help)\",\n \"common.tips\": \"Tips\",\n \"common.path\": \"Path\",\n \"common.hint\": \"Hint\",\n \"common.none\": \"(none)\",\n \"common.all\": \"ALL\",\n\n /* \u2500\u2500\u2500 locale \u2500\u2500\u2500 */\n \"locale.current\": \"Current locale: {locale}\",\n \"locale.set\": \"Locale set to {locale}\",\n \"locale.invalid\": \"Unknown locale: {value} (try: zh-CN, en)\",\n \"locale.usage\": \"Usage: 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 channel gates \u2500\u2500\u2500 */\n \"cli.externalOnly\": \"Command `{cmd}` is external-only (not available in the REPL).\",\n \"cli.externalOnly.hint\": \"Run from a shell: sfmc {cmd}\",\n \"cli.replOnly\": \"Command `{cmd}` is REPL-only.\",\n \"cli.replOnly.hint\": \"Start the interactive CLI with `sfmc` (no args), then run it there.\",\n \"cli.needTty\": \"Command `{cmd}` requires an interactive TTY.\",\n\n /* \u2500\u2500\u2500 debug (BDS config) \u2500\u2500\u2500 */\n \"debug.state.on\": \"ON\",\n \"debug.state.off\": \"OFF\",\n \"debug.statusTitle\": \"BDS debug config\",\n \"debug.enabled\": \"sfmc_debug = true (BDS console debug logs enabled on next reload)\",\n \"debug.disabled\": \"sfmc_debug = false (BDS console debug logs disabled on next reload)\",\n \"debug.sentry.set\": \"SENTRY_DSN set: {dsn}\",\n \"debug.sentry.removed\": \"SENTRY_DSN removed\",\n \"debug.sentry.alreadyOff\": \"SENTRY_DSN already absent\",\n \"debug.sentry.dsnMissing\": \"--dsn <value> required\",\n \"debug.sentry.unknown\": \"Unknown sentry action: {action}\",\n \"debug.sentry.usage\": \"Usage: debug sentry on --dsn <dsn> | debug sentry off\",\n \"debug.unknown\": \"Unknown debug subcommand: {sub}\",\n \"debug.usage\": \"Usage: debug status | enable | disable | sentry on --dsn | sentry off\",\n \"debug.reloadHint\": \"Run `sfmc mod reload` or restart BDS to take effect.\",\n\n /* \u2500\u2500\u2500 help \u2500\u2500\u2500 */\n \"help.title\": \"sfmc \u2014 ScriptsForMinecraftServer CLI\",\n \"help.title.repl\": \"sfmc REPL\",\n \"help.usage\": \"Usage:\",\n \"help.section.options\": \"Options\",\n \"help.opt.packs\": \"Pack context, then packs subcommand; i = install\",\n \"help.opt.lang\": \"UI language for this process\",\n \"help.addon.compat\": \"Compat: -p/--packs flag (prefer `sfmc packs \u2026`)\",\n \"help.slash.hint\": \"Lines starting with / list commands. Tab switches send target.\",\n \"help.shortcut.slash\": \"Command list\",\n \"help.shortcut.ctrlp\": \"Command list\",\n \"help.shortcut.cursor\": \"Move cursor\",\n \"repl.palette.hint\": \"\u2191\u2193 \u00B7 Enter \u00B7 Esc\",\n \"repl.palette.empty\": \"No matches\",\n \"help.section.service\": \"\u2500\u2500\u2500 Service Control \u2500\u2500\u2500\",\n \"help.status\": \"Show all services status\",\n \"help.logs\": \"Open log filter window (on-disk logs)\",\n \"help.start\": \"Start a service\",\n \"help.stop\": \"Stop a service\",\n \"help.restart\": \"Restart a service\",\n \"help.send\": \"Send command to a service\",\n \"help.section.update\": \"\u2500\u2500\u2500 BDS Update \u2500\u2500\u2500\",\n \"help.update\": \"Check / apply BDS update\",\n \"help.section.remote\": \"\u2500\u2500\u2500 Remote Agent \u2500\u2500\u2500\",\n \"help.remote.status\": \"Show enrollment status\",\n \"help.remote.enroll\": \"Enroll with a controller\",\n \"help.remote.disable\": \"Disconnect + disable agent\",\n \"help.section.debug\": \"\u2500\u2500\u2500 BDS debug \u2500\u2500\u2500\",\n \"help.debug.status\": \"View sfmc_debug / SENTRY_DSN state\",\n \"help.debug.toggle\": \"Toggle sfmc_debug\",\n \"help.debug.sentry.on\": \"Set SENTRY_DSN\",\n \"help.debug.sentry.off\": \"Remove SENTRY_DSN\",\n \"help.section.module\": \"\u2500\u2500\u2500 Module Management \u2500\u2500\u2500\",\n \"help.module.list\": \"List installed modules\",\n \"help.module.search\": \"Search registry / show module info\",\n \"help.module.install\": \"Install a module\",\n \"help.module.uninstall\": \"Remove installed module\",\n \"help.module.verify\": \"Verify SHA-256 integrity\",\n \"help.module.info\": \"Show module details\",\n \"help.module.toggle\": \"Toggle module\",\n \"help.module.build\": \"Build BP+RP from enabled modules\",\n \"help.module.reload\": \"Build + deploy BP; send reload to BDS\",\n \"help.module.watch\": \"Watch sapi/src and auto rebuild+reload\",\n \"help.module.test\": \"Run module tests (node --test + @sfmc-bds/sdk/testing)\",\n \"help.module.publish\": \"Nanny-mode npm publish (login hint + dry-run + bump + thin-index PR)\",\n \"help.section.addon\": \"\u2500\u2500\u2500 Addon Manager \u2500\u2500\u2500\",\n \"help.addon\": \"World BP/RP inbox manager\",\n \"help.packs.list\": \"List world packs\",\n \"help.packs.search\": \"Search pack sources\",\n \"help.packs.enable\": \"Enable a pack\",\n \"help.packs.disable\": \"Disable a pack\",\n \"help.packs.doctor\": \"Diagnose pack wiring\",\n \"help.packs.path\": \"Show pack paths\",\n \"help.section.general\": \"\u2500\u2500\u2500 General \u2500\u2500\u2500\",\n \"help.init\": \"Setup wizard\",\n \"help.locale\": \"Show / set CLI language\",\n \"help.version\": \"Show version\",\n \"help.help\": \"Show this help\",\n \"help.quit\": \"Exit\",\n \"help.shortcuts\": \"Shortcuts:\",\n \"help.shortcut.tab\": \"Send target / list select\",\n \"help.shortcut.right\": \"Accept suggestion\",\n \"help.shortcut.ctrll\": \"Filter log level / source / history\",\n \"help.shortcut.history\": \"Command history\",\n\n /* \u2500\u2500\u2500 repl \u2500\u2500\u2500 */\n \"repl.stopping\": \"stopping services...\",\n \"repl.bye\": \"bye\",\n \"repl.forceStop\": \"force stopping services...\",\n \"repl.nonInteractive\": \" Non-interactive mode (pipe detected)\\n\",\n \"repl.historyHeader\": \"\u2500\u2500 history {count} line(s) \u2500\u2500\",\n \"repl.filter\": \"filter: {level} / {source} / {history}\",\n \"repl.followRequiresTty\": \"follow mode requires TTY\",\n \"repl.logsReplOnly\": \"logs is only available in the interactive REPL (opens filter window)\",\n \"repl.history.live\": \"live only (no replay)\",\n \"repl.history.last50\": \"last 50\",\n \"repl.history.last100\": \"last 100\",\n \"repl.history.last500\": \"last 500\",\n \"repl.history.last1000\": \"last 1000\",\n \"repl.history.last1min\": \"last 1 min\",\n \"repl.history.last5min\": \"last 5 min\",\n \"repl.history.last15min\": \"last 15 min\",\n \"repl.history.last1hour\": \"last 1 hour\",\n \"repl.history.all\": \"all buffered\",\n\n /* \u2500\u2500\u2500 services / commands \u2500\u2500\u2500 */\n \"svc.header\": \"Services\",\n \"svc.col.name\": \"Name\",\n \"svc.col.status\": \"Status\",\n \"svc.col.owner\": \"Owner\",\n \"svc.col.pid\": \"PID\",\n \"svc.col.uptime\": \"Uptime\",\n \"svc.state.running\": \"Running\",\n \"svc.state.stopped\": \"Stopped\",\n \"svc.owner.managed\": \"Managed\",\n \"svc.owner.external\": \"External\",\n \"svc.owner.none\": \"\u2014\",\n \"svc.running\": \"Running\",\n \"svc.runningExternal\": \"Running (external)\",\n \"svc.stopped\": \"Stopped\",\n \"svc.unknown\": \"Unknown service: {name} (try: {list})\",\n \"svc.logs.usage\": \"Usage: logs <service> [-n N] [-f]\",\n \"svc.logs.empty\": \"(no logs yet)\",\n \"svc.logs.header\": \"{title} logs (last {count}):\",\n \"svc.start.usage\": \"Usage: sfmc start <service>|-all\",\n \"svc.start.usageShort\": \"Usage: start <service>|-all\",\n \"svc.stop.usage\": \"Usage: sfmc stop <service>|-all\",\n \"svc.stop.usageShort\": \"Usage: stop <service>|-all\",\n \"svc.restart.usage\": \"Usage: sfmc restart <service>|-all\",\n \"svc.restart.usageShort\": \"Usage: restart <service>|-all\",\n \"svc.alreadyRunning\": \"{title} already running (PID {pid})\",\n \"svc.alreadyStarting\": \"{title} already starting...\",\n \"svc.started\": \"{title} started\",\n \"svc.startFailed\": \"{title} failed: {message}\",\n \"svc.alreadyStopped\": \"{title} already stopped\",\n \"svc.alreadyStopping\": \"{title} already stopping...\",\n \"svc.stoppedMsg\": \"{title} stopped\",\n \"svc.stopFailed\": \"{title} stop failed: {message}\",\n \"svc.send.usage\": \"Usage: send <service> <message>\",\n \"svc.notRunning\": \"{title} not running\",\n \"svc.writeFailed\": \"write failed\",\n \"svc.restarted\": \"{title} restarted\",\n \"svc.restartFailed\": \"{title} restart failed: {message}\",\n \"svc.allStarted\": \"All services started\",\n \"svc.allStopped\": \"All services stopped\",\n \"svc.updateComplete\": \"update complete\",\n \"svc.updateExited\": \"update exited with code {code}\",\n \"svc.updateError\": \"update error: {message}\",\n \"svc.updateStartBds\": \"update: starting BDS via supervisor\",\n \"svc.bdsStarted\": \"BDS started (supervised)\",\n \"svc.bdsStartFailed\": \"BDS start failed: {message}\",\n \"svc.bdsStoppedForUpdate\": \"BDS was stopped for update; run `start bds` when ready\",\n \"svc.bdsAlreadyRunning\": \"BDS already running ({kind}, PID {pid})\",\n \"svc.stdinUnavailable\": \"{title} was started externally; stdin commands unavailable\",\n \"svc.stoppedExternal\": \"{title} stopped (external process)\",\n\n /* \u2500\u2500\u2500 remote \u2500\u2500\u2500 */\n \"remote.enrolled\": \"Enrolled remote agent: {id}\",\n \"remote.disabled\": \"Remote agent disabled\",\n \"remote.usage\":\n \"Usage: sfmc remote enroll <controller-url> <enrollment-token> [name] | sfmc remote status | sfmc remote disable\",\n \"remote.usageShort\":\n \"Usage: remote enroll <controller-url> <enrollment-token> [name] | remote status | remote disable\",\n\n /* \u2500\u2500\u2500 wizard \u2500\u2500\u2500 */\n \"wizard.intro\": \"Setup Wizard =D\",\n \"wizard.rerun\": \"Already initialized. Re-run setup?\",\n \"wizard.skipped\": \"Setup skipped\",\n \"wizard.step1\": \"Step 1 - Runtime Environment\",\n \"wizard.runtimeRoot\": \"Runtime root: {root}\",\n \"wizard.npmMissing\": \"npm runtime is missing required directories: {list}\",\n \"wizard.prepFailed\": \"Runtime preparation failed: {message}\",\n \"wizard.step2\": \"Step 2 - External Runtimes\",\n \"wizard.step2Note\": \"Select paths for BDS, Database, and LLBOT\",\n \"wizard.bdsDir\": \"BDS installation directory\",\n \"wizard.cannotCreateBds\": \"Cannot create BDS installation directory: {dir}\",\n \"wizard.enableLlbot\": \"Enable LLBot (QQ bridge)?\",\n \"wizard.llbotDir\": \"LLBot runtime directory\",\n \"wizard.usingDefault\": \"Using default: {path}\",\n \"wizard.dbDir\": \"Database storage directory\",\n \"wizard.dbPort\": \"Database server port:\",\n \"wizard.portRange\": \"Enter 1024\u201365535\",\n \"wizard.valueRequired\": \"Value is required!\",\n \"wizard.step3\": \"Step 3 - BDS Environment\",\n \"wizard.bdsFound\": \"Found at {path}\",\n \"wizard.bdsNotFound\": \"Not found at {path}\",\n \"wizard.eula\":\n \"Do you agree to the EULA(https://www.minecraft.net/en-us/eula) published by Mojang? You must agree to it before you can use this program.\",\n \"wizard.disagreed\": \"Disagreed.\",\n \"wizard.downloadBds\": \"Download BDS now?\",\n \"wizard.selectChannel\": \"Select channel:\",\n \"wizard.channel.release\": \"Release\",\n \"wizard.channel.releaseHint\": \"stable\",\n \"wizard.channel.preview\": \"Preview\",\n \"wizard.channel.previewHint\": \"may be unstable\",\n \"wizard.cannotCreateBackup\": \"Cannot create BDS backup directory: {dir}\",\n \"wizard.backupDir\": \"BDS backup directory\",\n \"wizard.preserve\": \"Files to preserve on update(When updates are enabled next time):\",\n \"wizard.preserve.serverProps\": \"server config\",\n \"wizard.preserve.worlds\": \"world data\",\n \"wizard.preserve.config\": \"config directory\",\n \"wizard.updaterTip\":\n \"If could not find BDS runtime, updater will be started later.\\n You can configure updater later in configs/bds_updater.json\",\n \"wizard.step4\": \"Step 4 - Modules\",\n \"wizard.modulesFound\": \"Found {count} optional modules\",\n \"wizard.modulesNone\": \"No modules catalog found\",\n \"wizard.enableModules\": \"Enable modules:\",\n \"wizard.emptyHint\": \"(empty)\",\n \"wizard.updatingConfigs\": \"Updating configs\",\n \"wizard.configsUpdated\": \"Configs updated\",\n \"wizard.updatingModules\": \"Updating module state\",\n \"wizard.modulesUpdated\": \"Module state updated\",\n \"wizard.initDb\": \"Initializing database\",\n \"wizard.dbTimeout\": \"Database startup timed out\",\n \"wizard.dbOk\": \"Database initialized\",\n \"wizard.downloadingBds\": \"Downloading BDS\",\n \"wizard.downloadFail\": \"Downloaded Failure.\",\n \"wizard.bdsDownloaded\": \"BDS downloaded\",\n \"wizard.done\": \"Done! Run help to learn managing.\",\n \"wizard.installing\": \"Installing {count} module(s) from first-party registry\",\n \"wizard.installed\": \"{count} installed\",\n \"wizard.installFailed\": \"install failed: {message}\\nYou can retry with: sfmc mod install <id>\",\n \"wizard.fetchMissing\": \"fetch-module missing \u2014 run `sfmc mod install <id>` later for each of: {list}\",\n \"wizard.noModulesSelected\":\n \"No modules selected \u2014 behavior pack will be empty until you install one with `sfmc mod install <id>`.\",\n \"wizard.buildingBp\": \"Building behavior pack\",\n \"wizard.buildFailed\": \"build failed: {message}\\nRun `sfmc mod build` later to retry.\",\n \"wizard.deploying\": \"Deploying to {path}\",\n \"wizard.restartBds\": \"Restart BDS to load the new behavior pack.\",\n \"wizard.deployFailed\": \"deploy failed: {message}\\nRun `sfmc mod reload` after fixing bds_path in configs/.\",\n\n /* \u2500\u2500\u2500 prompts \u2500\u2500\u2500 */\n \"prompt.enterPath\": \"Enter path\",\n \"prompt.browse\": \"Browse\u2026\",\n \"prompt.browseHint\": \"Open system folder picker\",\n\n /* \u2500\u2500\u2500 reload \u2500\u2500\u2500 */\n \"reload.buildOnly\": \"(deploy done; type reload in BDS/game, or omit --build-only to send automatically)\",\n \"reload.bdsNotRunning\":\n \"BDS is not running \u2014 build+deploy finished. After start, type reload in BDS console or in-game.\",\n \"reload.sent\": \"Sent reload to BDS\",\n\n /* \u2500\u2500\u2500 module watch \u2500\u2500\u2500 */\n \"watch.usage\":\n \"Usage: mod watch [--from local[:<path>]] [--no-reload]\\n\" +\n \" Watches sapi/src in the cwd module repo by default; sapi/manifest.json and tsconfig.json changes only print 'please restart BDS'.\\n\" +\n \" Ctrl+C to exit.\",\n \"watch.banner\": \"[watch] watching module: {path}\",\n \"watch.hint\":\n \"[watch] changes under sapi/src/** trigger rebuild + deploy + reload; everything else is ignored.\",\n \"watch.noSapiDir\": \"[watch] sapi directory not found: {path}\",\n \"watch.noSapiSrc\":\n \"[watch] sapi/src not found: {path} (rebuilds only trigger after src is in place)\",\n \"watch.recursiveFallback\":\n \"[watch] recursive watch failed; falling back to non-recursive (sapi/src only): {message}\",\n \"watch.manifestOrTsconfig\":\n \"[watch] {kind} changed \u2014 SAPI caches the manifest at startup; restart BDS to apply. files: {files}\",\n \"watch.rebuild.start\": \"[watch] rebuild triggered ({count} files): {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 error: {message}\",\n \"watch.reload.sent\": \"[watch] reload sent\",\n \"watch.reload.manualHint\":\n \"[watch] --no-reload mode: type reload in BDS console or in-game\",\n \"watch.stopped\": \"[watch] stopped\",\n\n /* \u2500\u2500\u2500 module publish \u2500\u2500\u2500 */\n \"publish.banner\": \"[publish] nanny-mode publish (npm + thin-index PR)\",\n \"publish.noLogin\": \"[publish] not logged in to npm\",\n \"publish.noLoginHint\":\n \" \u2192 run `npm login --auth-type=web` (browser OAuth, no local credential)\",\n \"publish.precheckFail\":\n \"[publish] precheck failed; fix the errors above and retry\",\n \"publish.dryRun.summary\":\n \"[publish] --dry-run done; run `sfmc mod publish [--bump <lvl>]` for real\",\n \"publish.done\": \"[publish] done \u2713\",\n\n /* \u2500\u2500\u2500 bp \u2500\u2500\u2500 */\n \"bp.usage\": \"Usage: sfmc behavior-pack|bp <build|deploy>\",\n\n /* \u2500\u2500\u2500 module commands \u2500\u2500\u2500 */\n \"mod.usage\": \"Usage: sfmc {cmds} <{subs}> [args]\",\n \"mod.list.title\": \"Installed modules\",\n \"mod.noneInstalled\": \"\\nNo modules installed. Drop a module folder under {dir} or run `sfmc mod install <id>`.\\n\",\n \"mod.notInRegistry\": 'Module \"{query}\" not found in first-party registry.',\n \"mod.info.usage\": \"Usage: mod info <id>\",\n \"mod.notInstalledAt\": \"Module {id} not installed at {path}\",\n \"mod.notInstalled\": \"Module {id} not installed\",\n \"mod.verifyOk\": \"{id} ok\\n fingerprint: {fp}\\n\",\n \"mod.dbUnreachable\": \"Cannot reach db-server at {url}: {message}. Is db-service running? (sfmc> start db)\",\n \"mod.toggleFailed\": \"{action} {id} failed: {err}\",\n \"mod.action.enabled\": \"enabled\",\n \"mod.action.disabled\": \"disabled\",\n \"mod.toggleOk\": \"{label} {id}\",\n \"mod.toggleBadBody\": \"{action} {id} returned: {text}\",\n \"mod.enable.usage\": \"Usage: mod enable <id>\",\n \"mod.disable.usage\": \"Usage: mod disable <id>\",\n \"mod.install.usage\":\n \"Usage: mod install <id>\\n mod install <id> --from <source> [--link] [--sha256 <hex>]\",\n \"mod.fromUnknown\": \"unknown --from source: {value}. Use npm:|local[:<path>]|tgz:|zip:|dir:|github:<repo>[@tag]\",\n \"mod.fetchMissing\": \"fetch-module not found. Install @sfmc-bds/sfmc or run inside the monorepo.\",\n \"mod.uninstall.usage\": \"Usage: mod uninstall <id>\",\n \"mod.notInstalledFolder\": \"Module {id} not installed (no folder at {path})\",\n \"mod.removed\": \"Removed {id} from {path}\\n\",\n\n /* \u2500\u2500\u2500 pack lifecycle \u2500\u2500\u2500 */\n \"pack.built\": \"built packs at {path}\",\n \"pack.buildFailed\": \"pack build failed: {message}\",\n \"pack.deployed\": \"deployed packs\",\n \"pack.deployFailed\": \"pack deploy failed: {message}\",\n \"pack.statusFailed\": \"pack status failed: {message}\",\n \"pack.listFailed\": \"pack list failed: {message}\",\n \"pack.noCatalog\": \"no deployed catalog \u2014 run `sfmc pack deploy` first\",\n \"pack.noUuid\": \"no {kind} pack uuid in catalog\",\n \"pack.actionFailed\": \"{action} failed: {detail}\",\n \"pack.enabledOk\": \"enabled {kind} pack {uuid}\",\n \"pack.disabledOk\": \"disabled {kind} pack {uuid}\",\n \"pack.actionErr\": \"pack {action} failed: {message}\",\n \"pack.usage\": \"Usage: sfmc pack <{subs}> [behavior|resource]\",\n\n /* \u2500\u2500\u2500 world packs / addon \u2500\u2500\u2500 */\n \"packs.restartHint\": \"Restart BDS for changes to take effect\",\n \"packs.rejoinHint\": \"Clients must rejoin to download resource packs\",\n \"packs.conflict\": \"Conflict detected:\",\n \"packs.conflict.existing\": \" Existing: {name} v{version} {uuid}\\n {dir}\",\n \"packs.conflict.incoming\": \" Incoming: {name} v{version} {uuid}\",\n \"packs.overwriteAsk\": \"Overwrite existing pack (same UUID, version not newer)?\",\n \"packs.badManifest\": \"Unrecognized manifest (need resources/data/script module and header name/uuid/version)\",\n \"packs.skippedNoOverwrite\": \"Skipped (not overwritten)\",\n \"packs.conflictSkip\": \" Conflict skipped (non-interactive; use --force): {name}\",\n \"packs.inboxSkip\": \" Skipping inbox: {message}\",\n \"packs.inboxFound\": \" Inbox found {count} item(s) \u2192 {level}\",\n \"packs.alreadyDone\": \" Already processed, skip: {name}\",\n \"packs.dryRunExtract\": \" dry-run extract: {name}\",\n \"packs.noPackRoot\": \" Pack root not found: {name}\",\n \"packs.installedEnabled\": \" Installed & enabled {kind}: {name} v{version}\",\n \"packs.installFailed\": \" Install failed {name}: {reason}\",\n \"packs.listEmpty\": \"(none)\",\n \"packs.list.bpHeader\": \"Behavior packs:\",\n \"packs.list.rpHeader\": \"Resource packs:\",\n \"packs.list.on\": \"on \",\n \"packs.list.off\": \"off\",\n \"packs.doctor.parseFail\": \"{file} could not be parsed\",\n \"packs.doctor.missingDir\": \"List has uuid but directory missing ({kind}): {uuid}\",\n \"packs.doctor.versionMismatch\": \"Version mismatch ({kind}): {folder} list {listVer} vs disk {diskVer}\",\n \"packs.doctor.notEnabled\": \"Installed but not enabled: [{kind}] {folder} ({uuid})\",\n \"packs.doctor.ok\": \"doctor: no issues found\",\n \"packs.doctor.found\": \"doctor found {count} issue(s):\\n{list}\",\n \"packs.notFound\": \"Pack not found: {id}\",\n \"packs.toggleDone\": \"{verb} {folder} done. {hint}\",\n \"packs.bump.usage\": \"Usage: packs bump <uuid|folder> (RP only)\",\n \"packs.bump.rpOnly\": \"packs bump only supports resource packs (RP)\",\n \"packs.bumped\": \"Bumped {folder} \u2192 v{version}. {restart}; {rejoin}\",\n \"packs.pathMissing\": \"Path does not exist: {path}\",\n \"packs.notArchive\": \"Not a pack directory or .zip/.mcpack/.mcaddon\",\n \"packs.noManifestRoot\": \"No pack root with manifest.json found\",\n \"packs.installedLine\": \"Installed & enabled: {name} v{version} ({kind})\",\n \"packs.skipFailLine\": \"Skipped/failed: {name} ({reason})\",\n \"packs.inboxEmpty\": \"Inbox is empty\",\n \"packs.search.usage\": \"Usage: packs search <query> (CurseForge remote; requires API key)\",\n \"packs.bind.usage\": \"Usage: packs bind <uuid|folder> <projectId|slug|url>\",\n \"packs.unbind.usage\": \"Usage: packs unbind <uuid|folder>\",\n \"packs.unbindOk\": \"Unbound {uuid} (or edit {path})\",\n \"packs.unbindMiss\": \"No binding found: {id}\",\n \"packs.update.usage\": \"Usage: packs update <uuid|folder|--all>\",\n \"packs.toggle.usage\": \"Usage: packs {verb} <uuid|folder>\",\n \"packs.uninstall.usage\":\n \"Usage: packs uninstall [uuid|folder...] [--purge] [--no-paired]\\n No args + TTY \u2192 multi-select; multiple ids allowed\",\n \"packs.uninstall.protected\": \"Refusing to uninstall platform pack: {folder} (use sfmc mod)\",\n \"packs.uninstall.trashed\": \"Uninstalled to recycle bin: {folder}\\n \u2192 {dest}\",\n \"packs.uninstall.deleted\": \"Uninstalled and deleted: {folder}\",\n \"packs.uninstall.dirMissing\": \"Removed from enable list; directory already missing: {folder}\",\n \"packs.uninstall.bindingRemoved\": \"Cleared update-source binding: {uuid}\",\n \"packs.uninstall.pick\": \"Select packs to uninstall (space to toggle, enter to confirm)\",\n \"packs.uninstall.summary\": \"Will uninstall {count} item(s) (including paired RPs):\",\n \"packs.uninstall.confirm\": \"Uninstall these {count} item(s)?\",\n \"packs.uninstall.cancelled\": \"Uninstall cancelled\",\n \"packs.uninstall.none\": \"No uninstallable packs\",\n \"packs.uninstall.pairedOf\": \"(paired with {folder})\",\n \"packs.install.usage\": \"Usage: packs install [path|--inbox] [--force]\",\n \"packs.installInbox\": \"install inbox: installed={installed} skipped={skipped} failed={failed}\",\n \"packs.scanResult\": \"scan: installed={installed} skipped={skipped} failed={failed}\",\n \"packs.unknownSub\": \"Unknown packs subcommand: {verb}\\n\",\n \"packs.usage.title\": \"{cmd} (alias {alias}) \u2014 world-side BP/RP\",\n \"packs.usage.bump\": \"RP only; patch version +1\",\n \"packs.usage.cfSearch\": \"CurseForge search (API key required)\",\n \"packs.usage.inbox\": \"Inbox: {path}\",\n \"packs.usage.trash\": \"Uninstall recycle bin: {path} (pack-update.json \u2192 uninstall.recycleBin)\",\n \"packs.usage.sources\": \"Update source bindings: {path} (edit enabled/projectId)\",\n \"packs.usage.enableNote\": \"Install enables via world_*_packs.json by default; {hint}.\",\n \"packs.usage.moduleNote\": \"For module aggregation use {cmd} (not this command).\",\n\n \"packUpdate.needKey\":\n \"No pack update provider configured. Set providers.*.apiKey in {path} (or the matching env var). CurseForge: get a Studios key from https://console.curseforge.com/ \u2192 providers.curseforge.apiKey / CURSEFORGE_API_KEY (not the Upload API UUID token)\",\n \"packUpdate.probeNoName\": \"Cannot derive a searchable name from header/folder\",\n \"packUpdate.probeQueries\": \"Probe sources header={header} folder={folder}\\n \u2192 {queries}\",\n \"packUpdate.probeFail\": \"Source probe failed: {message}\",\n \"packUpdate.probeMiss\": \"No CurseForge match for: {name}\",\n \"packUpdate.probeLowScore\": \"Low similarity: {name} \u2192 {hit} ({score}) {url}\",\n \"packUpdate.probeHit\": \"Possible update source: {name} \u2192 {hit} ({score})\\n {url}\",\n \"packUpdate.editHint\": \"You can later edit {path} to change/disable sources (enabled: false)\",\n \"packUpdate.confirmBind\": \"Bind this CurseForge project as update source? {hit}\",\n \"packUpdate.probeAutoBind\": \"Non-interactive: auto-binding \u2192 {provider}:{slug}\\n {path}\",\n \"packUpdate.probeNoAutoBind\": \"Non-interactive: not auto-binding; use packs bind\",\n \"packUpdate.bindSkipped\": \"Bind skipped\",\n \"packUpdate.bindOk\": \"Bound {uuid} \u2192 {provider}:{slug} [{enabled}]\\n file: {path}\",\n \"packUpdate.bindBpOnly\": \"Only behavior packs (BP) can be bound\",\n \"packUpdate.resolveFail\": \"Cannot resolve CurseForge project: {ref}\",\n \"packUpdate.searchEmpty\": \"No CurseForge results: {query}\",\n \"packUpdate.sourcesHeader\": \"config: {config}\\nbindings: {sources}\",\n \"packUpdate.sourcesEmpty\": \"No bindings yet. Install a BP to probe, or packs bind.\",\n \"packUpdate.disabled\": \"pack-update disabled in config\",\n \"packUpdate.bindingDisabled\": \"binding disabled (enabled: false)\",\n \"packUpdate.noRemoteFile\": \"No remote file available\",\n \"packUpdate.fileNewer\": \"Newer remote file: {file} (id={id})\",\n \"packUpdate.upToDate\": \"up to date\",\n \"packUpdate.needSync\": \"Remote file not yet synced into world (version {local} \u2261 {remote}, fileId={id})\",\n \"packUpdate.remoteNoBp\": \"No behavior pack in remote archive\",\n \"packUpdate.bpNewer\": \"BP update {local} \u2192 {remote}\",\n \"packUpdate.installFail\": \"Install failed: {reason}\",\n \"packUpdate.installedBp\": \"Wrote BP \u2192 {dir} (v{version})\",\n \"packUpdate.installedRp\": \"Wrote RP \u2192 {dir} (v{version})\",\n \"packUpdate.rpInstallMiss\":\n \"Archive has RP but paired resource pack was not installed (check dependencies / pairedResourceUuid)\",\n \"packUpdate.applied\": \"Updated {name} BP={bp} RP={rp}\",\n \"packUpdate.noBinding\": \"No update binding for: {id}\",\n \"packUpdate.startupFail\": \"Startup update check failed: {message}\",\n} as const;\n\nexport type MessageKey = keyof typeof en;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"zh-CN.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/zh-CN.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,yBAAyB;AACzB,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CA0Y3C,CAAC"}
1
+ {"version":3,"file":"zh-CN.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/zh-CN.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,yBAAyB;AACzB,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAqb3C,CAAC"}
@@ -18,46 +18,92 @@ const zhCN = {
18
18
  "locale.wizard": "CLI language / \u754C\u9762\u8BED\u8A00",
19
19
  "locale.opt.zh": "\u7B80\u4F53\u4E2D\u6587",
20
20
  "locale.opt.en": "English",
21
- "help.title": "sfmc \u2014 ScriptsForMinecraftServer CLI",
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
+ "cli.replOnly": "\u547D\u4EE4 `{cmd}` \u4EC5\u53EF\u5728 REPL \u5185\u4F7F\u7528\u3002",
25
+ "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
+ "cli.needTty": "\u547D\u4EE4 `{cmd}` \u9700\u8981\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\uFF08TTY\uFF09\u3002",
27
+ /* ─── debug (BDS 配置) ─── */
28
+ "debug.state.on": "\u5F00\u542F",
29
+ "debug.state.off": "\u5173\u95ED",
30
+ "debug.statusTitle": "BDS \u8C03\u8BD5\u914D\u7F6E",
31
+ "debug.enabled": "sfmc_debug = true\uFF08BDS \u63A7\u5236\u53F0\u8C03\u8BD5\u65E5\u5FD7\u5C06\u5728\u4E0B\u6B21 reload \u540E\u751F\u6548\uFF09",
32
+ "debug.disabled": "sfmc_debug = false\uFF08BDS \u63A7\u5236\u53F0\u8C03\u8BD5\u65E5\u5FD7\u5C06\u5728\u4E0B\u6B21 reload \u540E\u5173\u95ED\uFF09",
33
+ "debug.sentry.set": "\u5DF2\u8BBE\u7F6E SENTRY_DSN: {dsn}",
34
+ "debug.sentry.removed": "\u5DF2\u5220\u9664 SENTRY_DSN",
35
+ "debug.sentry.alreadyOff": "SENTRY_DSN \u672C\u6765\u5C31\u672A\u8BBE\u7F6E",
36
+ "debug.sentry.dsnMissing": "\u9700\u8981 --dsn <\u503C>",
37
+ "debug.sentry.unknown": "\u672A\u77E5 sentry \u5B50\u547D\u4EE4: {action}",
38
+ "debug.sentry.usage": "\u7528\u6CD5: debug sentry on --dsn <dsn> | debug sentry off",
39
+ "debug.unknown": "\u672A\u77E5 debug \u5B50\u547D\u4EE4: {sub}",
40
+ "debug.usage": "\u7528\u6CD5: debug status | enable | disable | sentry on --dsn | sentry off",
41
+ "debug.reloadHint": "\u9700\u8FD0\u884C `sfmc mod reload` \u6216\u91CD\u542F BDS \u540E\u751F\u6548\u3002",
42
+ /* ─── 帮助文本 ─── */
43
+ "help.title": "SFMC CLI",
44
+ "help.title.repl": "SFMC REPL",
45
+ "help.usage": "\u7528\u6CD5:",
46
+ "help.section.options": "\u9009\u9879",
47
+ "help.opt.packs": "\u8D44\u6E90\u5305\u7BA1\u7406\u5668\uFF0C\u540E\u63A5 packs \u5B50\u547D\u4EE4\uFF1Bi = install",
48
+ "help.opt.lang": "\u672C\u6B21\u8FDB\u7A0B\u754C\u9762\u8BED\u8A00",
49
+ "help.addon.compat": "\u517C\u5BB9\uFF1A-p/--packs",
50
+ "help.slash.hint": "\u952E\u5165 / \u5217\u51FA\u547D\u4EE4\u3002",
51
+ "help.shortcut.slash": "\u547D\u4EE4\u5217\u8868",
52
+ "help.shortcut.ctrlp": "\u547D\u4EE4\u5217\u8868",
53
+ "help.shortcut.cursor": "\u79FB\u52A8\u5149\u6807",
54
+ "repl.palette.hint": "\u2191\u2193 \xB7 Enter \xB7 Esc",
55
+ "repl.palette.empty": "\u65E0\u5339\u914D",
22
56
  "help.section.service": " \u670D\u52A1\u63A7\u5236 \u2500\u2500\u2500\u2500\u2500\u2500",
23
- "help.status": "\u67E5\u770B\u6240\u6709\u670D\u52A1\u72B6\u6001",
24
- "help.logs": "\u67E5\u770B / \u8DDF\u8E2A\u670D\u52A1\u65E5\u5FD7",
25
- "help.start": "\u542F\u52A8\u670D\u52A1\uFF08\u6216\u5168\u90E8\uFF09",
26
- "help.stop": "\u505C\u6B62\u670D\u52A1\uFF08\u6216\u5168\u90E8\uFF09",
27
- "help.restart": "\u91CD\u542F\u670D\u52A1\uFF08\u6216\u5168\u90E8\uFF09",
28
- "help.send": "\u5411\u670D\u52A1 stdin \u53D1\u9001\u547D\u4EE4",
57
+ "help.status": "\u67E5\u770B\u670D\u52A1\u72B6\u6001",
58
+ "help.logs": "\u65E5\u5FD7\u5386\u53F2",
59
+ "help.start": "\u542F\u52A8\u670D\u52A1",
60
+ "help.stop": "\u505C\u6B62\u670D\u52A1",
61
+ "help.restart": "\u91CD\u542F\u670D\u52A1",
62
+ "help.send": "\u5411\u670D\u52A1\u53D1\u9001\u547D\u4EE4",
29
63
  "help.section.update": " BDS \u66F4\u65B0 \u2500\u2500\u2500\u2500\u2500\u2500",
30
- "help.update": "\u68C0\u67E5 / \u5E94\u7528 BDS \u66F4\u65B0",
31
- "help.section.remote": " \u8FDC\u7A0B Agent \u2500\u2500\u2500\u2500\u2500\u2500",
32
- "help.remote.status": "\u67E5\u770B\u6CE8\u518C\u72B6\u6001",
64
+ "help.update": "\u68C0\u67E5BDS \u66F4\u65B0",
65
+ "help.section.remote": " \u8FDC\u7A0B\u63A7\u5236 \u2500\u2500\u2500\u2500\u2500\u2500",
66
+ "help.remote.status": "\u8FDC\u7A0B\u63A7\u5236\u6CE8\u518C\u72B6\u6001",
33
67
  "help.remote.enroll": "\u5411\u63A7\u5236\u5668\u6CE8\u518C",
34
- "help.remote.disable": "\u65AD\u5F00\u5E76\u7981\u7528 agent",
68
+ "help.remote.disable": "\u65AD\u5F00\u8FDC\u7A0B\u63A7\u5236",
69
+ "help.section.debug": " \u8C03\u8BD5 \u2500\u2500\u2500\u2500\u2500\u2500",
70
+ "help.debug.status": "SFMC_DEBUG \u72B6\u6001",
71
+ "help.debug.toggle": "\u5F00\u5173 SFMC_DEBUG",
72
+ "help.debug.sentry.on": "\u8BBE\u7F6E SENTRY_DSN",
73
+ "help.debug.sentry.off": "\u5220\u9664 SENTRY_DSN",
35
74
  "help.section.module": " \u6A21\u5757\u7BA1\u7406 \u2500\u2500\u2500\u2500\u2500\u2500",
36
75
  "help.module.list": "\u5217\u51FA\u5DF2\u5B89\u88C5\u6A21\u5757",
37
- "help.module.search": "\u641C\u7D22 registry / \u67E5\u770B\u6A21\u5757\u4FE1\u606F",
38
- "help.module.install": "\u5B89\u88C5\u6A21\u5757\uFF08--link = \u7B26\u53F7\u94FE\u63A5\uFF09",
76
+ "help.module.search": "\u5728\u7EBF\u641C\u7D22\u6A21\u5757",
77
+ "help.module.install": "\u5B89\u88C5\u6A21\u5757",
39
78
  "help.module.uninstall": "\u5378\u8F7D\u5DF2\u5B89\u88C5\u6A21\u5757",
40
- "help.module.verify": "\u6821\u9A8C SHA-256 \u5B8C\u6574\u6027",
79
+ "help.module.verify": "\u6821\u9A8C\u6A21\u5757 SHA-256 \u5B8C\u6574\u6027",
41
80
  "help.module.info": "\u663E\u793A\u6A21\u5757\u8BE6\u60C5",
42
- "help.module.toggle": "\u542F\u7528/\u7981\u7528\u6A21\u5757\uFF08\u9700 db-server\uFF09",
43
- "help.module.create": "\u4EA4\u4E92\u5F0F\u811A\u624B\u67B6",
44
- "help.module.link": "\u94FE\u63A5\u672C\u5730\u6A21\u5757\uFF08--link \u5B89\u88C5\uFF09",
45
- "help.module.dev": "\u94FE\u63A5 + \u542F\u7528 + \u6784\u5EFA + \u90E8\u7F72",
46
- "help.module.build": "\u4ECE\u5DF2\u542F\u7528\u6A21\u5757\u6784\u5EFA BP+RP",
47
- "help.module.reload": "\u6784\u5EFA\u5E76\u90E8\u7F72 BP\uFF1B\u5411 BDS \u53D1\u9001 reload\uFF08\u53EF\u7528 --build-only\uFF09",
48
- "help.section.addon": " \u9644\u52A0\u5305\u7BA1\u7406 \u2500\u2500\u2500\u2500\u2500\u2500",
49
- "help.addon": "\u4E16\u754C\u4FA7 BP/RP \u6536\u4EF6\u7BB1\u7BA1\u7406",
81
+ "help.module.toggle": "\u542F\u7528/\u7981\u7528\u6A21\u5757",
82
+ "help.module.build": "\u4ECE\u5DF2\u542F\u7528\u6A21\u5757\u6784\u5EFA\u8D44\u6E90\u5305",
83
+ "help.module.reload": "\u6784\u5EFA\u5E76\u90E8\u7F72\u8D44\u6E90\u5305\uFF0C\u5728 BDS \u53D1\u9001 reload\u6307\u4EE4\u4EE5\u91CD\u8F7D\u811A\u672C",
84
+ "help.module.watch": "\u76D1\u542C sapi/src \u53D8\u66F4\u5E76\u81EA\u52A8 rebuild+reload",
85
+ "help.module.test": "\u8FD0\u884C\u6A21\u5757\u6D4B\u8BD5\uFF08node --test + @sfmc-bds/sdk/testing\uFF09",
86
+ "help.module.publish": "\u4FDD\u59C6\u5F0F npm publish\uFF08\u767B\u5F55\u5F15\u5BFC + dry-run + bump + \u8584 index PR\uFF09",
87
+ "help.section.addon": " \u8D44\u6E90\u5305\u7BA1\u7406 \u2500\u2500\u2500\u2500\u2500\u2500",
88
+ "help.addon": "\u8D44\u6E90\u5305\u6536\u4EF6\u7BB1\u7BA1\u7406",
89
+ "help.packs.list": "\u5DF2\u5B89\u88C5\u8D44\u6E90\u5305\u5217\u8868",
90
+ "help.packs.search": "\u5728\u7EBF\u641C\u7D22\u8D44\u6E90\u5305",
91
+ "help.packs.enable": "\u542F\u7528\u8D44\u6E90\u5305",
92
+ "help.packs.disable": "\u7981\u7528\u8D44\u6E90\u5305",
93
+ "help.packs.doctor": "\u8BCA\u65AD\u8D44\u6E90\u5305\u63A5\u7EBF",
94
+ "help.packs.path": "\u663E\u793A\u8D44\u6E90\u5305\u8DEF\u5F84",
50
95
  "help.section.general": " \u901A\u7528 \u2500\u2500\u2500\u2500\u2500\u2500",
51
96
  "help.init": "\u521D\u59CB\u5316\u5411\u5BFC",
52
- "help.locale": "\u67E5\u770B / \u8BBE\u7F6E CLI \u8BED\u8A00",
97
+ "help.locale": "\u8BBE\u7F6E CLI \u8BED\u8A00",
53
98
  "help.version": "\u663E\u793A\u7248\u672C",
54
- "help.help": "\u663E\u793A\u672C\u5E2E\u52A9",
99
+ "help.help": "\u663E\u793A\u5E2E\u52A9",
55
100
  "help.quit": "\u9000\u51FA",
56
101
  "help.shortcuts": "\u5FEB\u6377\u952E:",
57
- "help.shortcut.tab": "\u8865\u5168\uFF08\u91CD\u590D\u6309\u5FAA\u73AF\uFF09",
58
- "help.shortcut.right": "\u63A5\u53D7\u7070\u8272\u5EFA\u8BAE",
102
+ "help.shortcut.tab": "\u5207\u6362\u53D1\u9001\u76EE\u6807 / \u547D\u4EE4\u5217\u8868\u9009\u62E9",
103
+ "help.shortcut.right": "\u63A5\u53D7\u5EFA\u8BAE",
59
104
  "help.shortcut.ctrll": "\u8FC7\u6EE4\u65E5\u5FD7\u7EA7\u522B / \u6765\u6E90 / \u5386\u53F2",
60
105
  "help.shortcut.history": "\u547D\u4EE4\u5386\u53F2",
106
+ /* ─── REPL ─── */
61
107
  "repl.stopping": "\u6B63\u5728\u505C\u6B62\u670D\u52A1...",
62
108
  "repl.bye": "bye...",
63
109
  "repl.forceStop": "\u6B63\u5728\u5F3A\u5236\u505C\u6B62\u670D\u52A1...",
@@ -65,7 +111,8 @@ const zhCN = {
65
111
  "repl.historyHeader": "\u2500\u2500 \u5386\u53F2 {count} \u884C \u2500\u2500",
66
112
  "repl.filter": "\u8FC7\u6EE4: {level} / {source} / {history}",
67
113
  "repl.followRequiresTty": "\u8DDF\u8E2A\u6A21\u5F0F\u9700\u8981 TTY",
68
- "repl.history.live": "\u4EC5\u5B9E\u65F6\uFF08\u4E0D\u56DE\u653E\uFF09",
114
+ "repl.logsReplOnly": "logs \u4EC5\u5728\u4EA4\u4E92 REPL \u4E2D\u53EF\u7528",
115
+ "repl.history.live": "\u5B9E\u65F6",
69
116
  "repl.history.last50": "\u6700\u8FD1 50 \u6761",
70
117
  "repl.history.last100": "\u6700\u8FD1 100 \u6761",
71
118
  "repl.history.last500": "\u6700\u8FD1 500 \u6761",
@@ -75,22 +122,30 @@ const zhCN = {
75
122
  "repl.history.last15min": "\u6700\u8FD1 15 \u5206\u949F",
76
123
  "repl.history.last1hour": "\u6700\u8FD1 1 \u5C0F\u65F6",
77
124
  "repl.history.all": "\u7F13\u51B2\u5168\u90E8",
125
+ /* ─── 服务控制 ─── */
78
126
  "svc.header": "\u670D\u52A1",
79
127
  "svc.col.name": "\u540D\u79F0",
80
128
  "svc.col.status": "\u72B6\u6001",
129
+ "svc.col.owner": "\u5F52\u5C5E",
81
130
  "svc.col.pid": "PID",
82
131
  "svc.col.uptime": "\u8FD0\u884C\u65F6\u957F",
83
- "svc.running": "\u8FD0\u884C\u4E2D",
132
+ "svc.state.running": "\u8FD0\u884C\u4E2D",
133
+ "svc.state.stopped": "\u5DF2\u505C\u6B62",
134
+ "svc.owner.managed": "\u63A5\u7BA1",
135
+ "svc.owner.external": "\u5916\u90E8",
136
+ "svc.owner.none": "\u2014",
137
+ "svc.running": "\u8FD0\u884C\u4E2D - \u5DF2\u63A5\u7BA1",
138
+ "svc.runningExternal": "\u8FD0\u884C\u4E2D - \u5916\u90E8",
84
139
  "svc.stopped": "\u5DF2\u505C\u6B62",
85
140
  "svc.unknown": "\u672A\u77E5\u670D\u52A1: {name}\uFF08\u53EF\u9009: {list}\uFF09",
86
141
  "svc.logs.usage": "\u7528\u6CD5: logs <service> [-n N] [-f]",
87
142
  "svc.logs.empty": "\uFF08\u6682\u65E0\u65E5\u5FD7\uFF09",
88
143
  "svc.logs.header": "{title} \u65E5\u5FD7\uFF08\u6700\u8FD1 {count} \u6761\uFF09:",
89
- "svc.start.usage": "\u7528\u6CD5: sfmc start <service>|-all",
144
+ "svc.start.usage": "\u7528\u6CD5: start <service>|-all",
90
145
  "svc.start.usageShort": "\u7528\u6CD5: start <service>|-all",
91
- "svc.stop.usage": "\u7528\u6CD5: sfmc stop <service>|-all",
146
+ "svc.stop.usage": "\u7528\u6CD5: stop <service>|-all",
92
147
  "svc.stop.usageShort": "\u7528\u6CD5: stop <service>|-all",
93
- "svc.restart.usage": "\u7528\u6CD5: sfmc restart <service>|-all",
148
+ "svc.restart.usage": "\u7528\u6CD5: restart <service>|-all",
94
149
  "svc.restart.usageShort": "\u7528\u6CD5: restart <service>|-all",
95
150
  "svc.alreadyRunning": "{title} \u5DF2\u5728\u8FD0\u884C\uFF08PID {pid}\uFF09",
96
151
  "svc.alreadyStarting": "{title} \u6B63\u5728\u542F\u52A8...",
@@ -102,7 +157,6 @@ const zhCN = {
102
157
  "svc.stopFailed": "{title} \u505C\u6B62\u5931\u8D25: {message}",
103
158
  "svc.send.usage": "\u7528\u6CD5: send <service> <message>",
104
159
  "svc.notRunning": "{title} \u672A\u8FD0\u884C",
105
- "svc.sent": "\u5DF2\u53D1\u9001\u81F3 {name}",
106
160
  "svc.writeFailed": "\u5199\u5165\u5931\u8D25",
107
161
  "svc.restarted": "{title} \u5DF2\u91CD\u542F",
108
162
  "svc.restartFailed": "{title} \u91CD\u542F\u5931\u8D25: {message}",
@@ -111,17 +165,22 @@ const zhCN = {
111
165
  "svc.updateComplete": "\u66F4\u65B0\u5B8C\u6210",
112
166
  "svc.updateExited": "\u66F4\u65B0\u8FDB\u7A0B\u9000\u51FA\uFF0C\u4EE3\u7801 {code}",
113
167
  "svc.updateError": "\u66F4\u65B0\u9519\u8BEF: {message}",
114
- "svc.updateStartBds": "\u66F4\u65B0: \u901A\u8FC7\u76D1\u7763\u5668\u542F\u52A8 BDS",
168
+ "svc.updateStartBds": "\u66F4\u65B0: \u901A\u8FC7\u8FDB\u7A0B\u76D1\u7763\u5668\u542F\u52A8 BDS",
115
169
  "svc.bdsStarted": "BDS \u5DF2\u542F\u52A8\uFF08\u76D1\u7763\u6A21\u5F0F\uFF09",
116
170
  "svc.bdsStartFailed": "BDS \u542F\u52A8\u5931\u8D25: {message}",
117
171
  "svc.bdsStoppedForUpdate": "\u66F4\u65B0\u65F6\u5DF2\u505C\u6B62 BDS\uFF1B\u5C31\u7EEA\u540E\u8BF7\u6267\u884C `start bds`",
118
- "remote.enrolled": "\u5DF2\u6CE8\u518C\u8FDC\u7A0B agent: {id}",
119
- "remote.disabled": "\u8FDC\u7A0B agent \u5DF2\u7981\u7528",
120
- "remote.usage": "\u7528\u6CD5: sfmc remote enroll <controller-url> <enrollment-token> [name] | sfmc remote status | sfmc remote disable",
172
+ "svc.bdsAlreadyRunning": "BDS \u5DF2\u5728\u8FD0\u884C\uFF08{kind}\uFF0CPID {pid}\uFF09",
173
+ "svc.stdinUnavailable": "{title} \u7531\u5916\u90E8\u542F\u52A8\uFF0C\u65E0\u6CD5\u901A\u8FC7 stdin \u53D1\u9001\u547D\u4EE4",
174
+ "svc.stoppedExternal": "{title} \u5DF2\u505C\u6B62\uFF08\u5916\u90E8\u8FDB\u7A0B\uFF09",
175
+ /* ─── 远程控制 ─── */
176
+ "remote.enrolled": "\u5DF2\u6CE8\u518C\u8FDC\u7A0B\u63A7\u5236: {id}",
177
+ "remote.disabled": "\u8FDC\u7A0B\u63A7\u5236\u5DF2\u7981\u7528",
178
+ "remote.usage": "\u7528\u6CD5: remote enroll <controller-url> <enrollment-token> [name] | remote status | remote disable",
121
179
  "remote.usageShort": "\u7528\u6CD5: remote enroll <controller-url> <enrollment-token> [name] | remote status | remote disable",
122
- "wizard.intro": "\u521D\u59CB\u5316\u5411\u5BFC =D",
180
+ /* ─── 初始化 ─── */
181
+ "wizard.intro": "\u521D\u59CB\u5316",
123
182
  "wizard.rerun": "\u5DF2\u521D\u59CB\u5316\u3002\u662F\u5426\u91CD\u65B0\u8FD0\u884C\u5411\u5BFC\uFF1F",
124
- "wizard.skipped": "\u5DF2\u8DF3\u8FC7\u8BBE\u7F6E",
183
+ "wizard.skipped": "\u5DF2\u8DF3\u8FC7\u521D\u59CB\u5316",
125
184
  "wizard.step1": "\u6B65\u9AA4 1 - \u8FD0\u884C\u73AF\u5883",
126
185
  "wizard.runtimeRoot": "\u8FD0\u884C\u6839\u76EE\u5F55: {root}",
127
186
  "wizard.npmMissing": "npm \u8FD0\u884C\u65F6\u7F3A\u5C11\u5FC5\u9700\u76EE\u5F55: {list}",
@@ -130,7 +189,7 @@ const zhCN = {
130
189
  "wizard.step2Note": "\u9009\u62E9 BDS\u3001\u6570\u636E\u5E93\u4E0E LLBOT \u8DEF\u5F84",
131
190
  "wizard.bdsDir": "BDS \u5B89\u88C5\u76EE\u5F55",
132
191
  "wizard.cannotCreateBds": "\u65E0\u6CD5\u521B\u5EFA BDS \u5B89\u88C5\u76EE\u5F55: {dir}",
133
- "wizard.enableLlbot": "\u542F\u7528 LLBot\uFF08QQ \u6865\uFF09\uFF1F",
192
+ "wizard.enableLlbot": "\u542F\u7528 LLBOT \u8FDB\u7A0B\u63A5\u7BA1\uFF1F",
134
193
  "wizard.llbotDir": "LLBot \u8FD0\u884C\u76EE\u5F55",
135
194
  "wizard.usingDefault": "\u4F7F\u7528\u9ED8\u8BA4: {path}",
136
195
  "wizard.dbDir": "\u6570\u636E\u5E93\u5B58\u50A8\u76EE\u5F55",
@@ -147,14 +206,14 @@ const zhCN = {
147
206
  "wizard.channel.release": "Release",
148
207
  "wizard.channel.releaseHint": "\u7A33\u5B9A\u7248",
149
208
  "wizard.channel.preview": "Preview",
150
- "wizard.channel.previewHint": "\u53EF\u80FD\u4E0D\u7A33\u5B9A",
209
+ "wizard.channel.previewHint": "\u9884\u89C8\u7248",
151
210
  "wizard.cannotCreateBackup": "\u65E0\u6CD5\u521B\u5EFA BDS \u5907\u4EFD\u76EE\u5F55: {dir}",
152
211
  "wizard.backupDir": "BDS \u5907\u4EFD\u76EE\u5F55",
153
212
  "wizard.preserve": "\u66F4\u65B0\u65F6\u4FDD\u7559\u7684\u6587\u4EF6\uFF08\u4E0B\u6B21\u542F\u7528\u66F4\u65B0\u65F6\uFF09:",
154
213
  "wizard.preserve.serverProps": "\u670D\u52A1\u5668\u914D\u7F6E",
155
214
  "wizard.preserve.worlds": "\u4E16\u754C\u6570\u636E",
156
215
  "wizard.preserve.config": "\u914D\u7F6E\u76EE\u5F55",
157
- "wizard.updaterTip": "\u82E5\u627E\u4E0D\u5230 BDS \u8FD0\u884C\u65F6\uFF0C\u7A0D\u540E\u4F1A\u542F\u52A8\u66F4\u65B0\u5668\u3002\n \u53EF\u5728 configs/bds_updater.json \u4E2D\u7EE7\u7EED\u914D\u7F6E\u3002",
216
+ "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",
158
217
  "wizard.step4": "\u6B65\u9AA4 4 - \u6A21\u5757",
159
218
  "wizard.modulesFound": "\u53D1\u73B0 {count} \u4E2A\u53EF\u9009\u6A21\u5757",
160
219
  "wizard.modulesNone": "\u672A\u627E\u5230\u6A21\u5757\u76EE\u5F55",
@@ -170,76 +229,51 @@ const zhCN = {
170
229
  "wizard.downloadingBds": "\u6B63\u5728\u4E0B\u8F7D BDS",
171
230
  "wizard.downloadFail": "\u4E0B\u8F7D\u5931\u8D25\u3002",
172
231
  "wizard.bdsDownloaded": "BDS \u5DF2\u4E0B\u8F7D",
173
- "wizard.done": "\u5B8C\u6210\uFF01\u8F93\u5165 help \u4E86\u89E3\u7BA1\u7406\u547D\u4EE4\u3002",
174
- "wizard.installing": "\u6B63\u5728\u4ECE\u5B98\u65B9 registry \u5B89\u88C5 {count} \u4E2A\u6A21\u5757",
232
+ "wizard.done": "\u5B8C\u6210\uFF01\u952E\u5165 / \u4EE5\u6267\u884C\u547D\u4EE4",
233
+ "wizard.installing": "\u6B63\u5728\u5B89\u88C5 {count} \u4E2A\u6A21\u5757",
175
234
  "wizard.installed": "\u5DF2\u5B89\u88C5 {count} \u4E2A",
176
- "wizard.installFailed": "\u5B89\u88C5\u5931\u8D25: {message}\n\u53EF\u7A0D\u540E\u6267\u884C: sfmc mod install <id>",
177
- "wizard.fetchMissing": "\u7F3A\u5C11 fetch-module \u2014 \u8BF7\u7A0D\u540E\u5BF9\u4EE5\u4E0B\u6A21\u5757\u6267\u884C `sfmc mod install <id>`: {list}",
178
- "wizard.noModulesSelected": "\u672A\u9009\u62E9\u6A21\u5757 \u2014 \u884C\u4E3A\u5305\u5C06\u4E3A\u7A7A\uFF0C\u76F4\u5230\u6267\u884C `sfmc mod install <id>` \u5B89\u88C5\u6A21\u5757\u3002",
235
+ "wizard.installFailed": "\u5B89\u88C5\u5931\u8D25: {message}\n\u53EF\u7A0D\u540E\u6267\u884C: mod install <id>",
236
+ "wizard.fetchMissing": "\u7F3A\u5C11 fetch-module \u2014 \u8BF7\u7A0D\u540E\u5BF9\u4EE5\u4E0B\u6A21\u5757\u6267\u884C `mod install <id>`: {list}",
237
+ "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",
179
238
  "wizard.buildingBp": "\u6B63\u5728\u6784\u5EFA\u884C\u4E3A\u5305",
180
- "wizard.buildFailed": "\u6784\u5EFA\u5931\u8D25: {message}\n\u7A0D\u540E\u53EF\u6267\u884C `sfmc mod build` \u91CD\u8BD5\u3002",
239
+ "wizard.buildFailed": "\u6784\u5EFA\u5931\u8D25: {message}\n\u7A0D\u540E\u53EF\u6267\u884C `mod build` \u91CD\u8BD5\u3002",
181
240
  "wizard.deploying": "\u6B63\u5728\u90E8\u7F72\u5230 {path}",
182
241
  "wizard.restartBds": "\u8BF7\u91CD\u542F BDS \u4EE5\u52A0\u8F7D\u65B0\u884C\u4E3A\u5305\u3002",
183
- "wizard.deployFailed": "\u90E8\u7F72\u5931\u8D25: {message}\n\u4FEE\u590D configs/ \u4E2D\u7684 bds_path \u540E\u6267\u884C `sfmc mod reload`\u3002",
242
+ "wizard.deployFailed": "\u90E8\u7F72\u5931\u8D25: {message}\n\u4FEE\u590D configs/ \u4E2D\u7684 bds_path \u540E\u6267\u884C `mod reload`\u3002",
184
243
  "prompt.enterPath": "\u8F93\u5165\u8DEF\u5F84",
185
244
  "prompt.browse": "\u6D4F\u89C8\u2026",
186
245
  "prompt.browseHint": "\u6253\u5F00\u7CFB\u7EDF\u6587\u4EF6\u5939\u9009\u62E9\u5668",
187
- "reload.buildOnly": "\uFF08deploy \u5B8C\u6210\uFF1B\u5728 BDS/\u6E38\u620F\u5185\u8F93\u5165 reload\uFF0C\u6216\u53BB\u6389 --build-only \u81EA\u52A8\u53D1\u9001\uFF09",
188
- "reload.bdsNotRunning": "BDS \u672A\u8FD0\u884C \u2014 \u5DF2\u5B8C\u6210 build+deploy\u3002\u542F\u52A8\u540E\u8BF7\u5728 BDS \u63A7\u5236\u53F0\u6216\u6E38\u620F\u5185\u8F93\u5165 reload\u3002",
189
- "reload.sent": "\u5DF2\u5411 BDS \u53D1\u9001 reload\uFF08\u811A\u672C\u5C06\u6309\u65B0 main.js \u91CD\u65B0\u52A0\u8F7D\uFF09",
190
- "bp.usage": "\u7528\u6CD5: sfmc behavior-pack|bp <build|deploy>",
191
- "modwiz.needTty.create": "\u8BF7\u5728\u4EA4\u4E92\u7EC8\u7AEF\u8FD0\u884C: sfmc module create",
192
- "modwiz.needTty.link": "\u8BF7\u5728\u4EA4\u4E92\u7EC8\u7AEF\u8FD0\u884C: sfmc module link",
193
- "modwiz.needTty.dev": "\u8BF7\u5728\u4EA4\u4E92\u7EC8\u7AEF\u8FD0\u884C: sfmc module dev",
194
- "modwiz.sfmcModulesPath": "sfmc-modules: {path}",
195
- "modwiz.pickModulesRoot": "sfmc-modules \u6839\u76EE\u5F55\uFF08\u542B packages/ \u4E0E index.json\uFF09",
196
- "modwiz.noPackages": "\u672A\u627E\u5230 packages/ \u5B50\u76EE\u5F55: {path}",
197
- "modwiz.noFetch": "\u672A\u627E\u5230 fetch-module.mjs",
198
- "modwiz.enableModule": "\u542F\u7528\u8BE5\u6A21\u5757\uFF1F\uFF08\u5199\u5165 module-lock.json\uFF0C\u9700 db-server\uFF09",
199
- "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",
200
- "modwiz.task.build": "\u6784\u5EFA\u884C\u4E3A\u5305",
201
- "modwiz.task.deploy": "\u90E8\u7F72\u884C\u4E3A\u5305",
202
- "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",
203
- "modwiz.kebab": "\u987B\u4E3A\u5C0F\u5199 kebab-case\uFF0C\u4F8B\u5982 my-feature",
204
- "modwiz.createIntro": "\u6A21\u5757\u811A\u624B\u67B6",
205
- "modwiz.folderId": "\u6A21\u5757\u6587\u4EF6\u5939\u540D\uFF08install id\uFF09",
206
- "modwiz.dirExists": "\u76EE\u5F55\u5DF2\u5B58\u5728: {path}",
207
- "modwiz.displayName": "\u663E\u793A\u540D\u79F0",
208
- "modwiz.template": "\u811A\u624B\u67B6\u6A21\u677F",
209
- "modwiz.tpl.minimal": "\u6700\u5C0F\u6A21\u5757",
210
- "modwiz.tpl.minimalHint": "\u547D\u4EE4 + \u6743\u9650\u5360\u4F4D",
211
- "modwiz.tpl.db": "\u542B DB \u6743\u9650\u5360\u4F4D",
212
- "modwiz.tpl.dbHint": "manifest \u9884\u7F6E db:read/write",
213
- "modwiz.noNewModule": "\u672A\u627E\u5230 tools/new-module.mjs\uFF08\u65C1\u8DEF sfmc-modules \u6216\u4E3B\u4ED3 tools/\uFF09",
214
- "modwiz.genPackage": "\u751F\u6210 packages/{id}",
215
- "modwiz.skeletonWritten": "\u9AA8\u67B6\u5DF2\u5199\u5165 sfmc-modules",
216
- "modwiz.createdNote": "\u5DF2\u521B\u5EFA {path}",
217
- "modwiz.linkAsk": "\u94FE\u63A5\u5230\u4E3B\u4ED3 modules/packages/\uFF1F\uFF08--link\uFF0C\u6539\u6E90\u7801\u5373\u751F\u6548\uFF09",
218
- "modwiz.link": "\u94FE\u63A5",
219
- "modwiz.linkFailed": "\u94FE\u63A5\u5931\u8D25",
220
- "modwiz.enable": "\u542F\u7528",
221
- "modwiz.createDone": "\u5B8C\u6210\u3002\u6E90\u7801: {path}",
222
- "modwiz.moduleCreated": "\u6A21\u5757 {id} \u5DF2\u521B\u5EFA",
223
- "modwiz.linkIntro": "\u94FE\u63A5\u672C\u5730\u6A21\u5757",
224
- "modwiz.noLinkable": "{path}/packages \u4E0B\u6CA1\u6709\u6A21\u5757",
225
- "modwiz.noLinkableShort": "\u6CA1\u6709\u53EF\u94FE\u63A5\u7684\u6A21\u5757\u5305",
226
- "modwiz.pickLink": "\u9009\u62E9\u8981\u94FE\u63A5\u7684\u6A21\u5757\u5305",
227
- "modwiz.linking": "\u94FE\u63A5 {id}",
228
- "modwiz.linkSynced": "catalog + lock \u5DF2\u540C\u6B65",
229
- "modwiz.linked": "\u5DF2\u94FE\u63A5 {id}",
230
- "modwiz.devIntro": "\u672C\u5730\u6A21\u5757\u5F00\u53D1",
231
- "modwiz.noDevPackages": "{path}/packages \u4E0B\u6CA1\u6709\u6A21\u5757",
232
- "modwiz.noDevShort": "\u6CA1\u6709\u53EF\u5F00\u53D1\u7684\u6A21\u5757\u5305",
233
- "modwiz.pickDev": "\u9009\u62E9\u8981\u8054\u8C03\u7684\u6A21\u5757",
234
- "modwiz.enabling": "\u542F\u7528 {id}",
235
- "modwiz.devHint": "\u4FEE\u6539 sfmc-modules \u6E90\u7801\u540E\u6267\u884C `sfmc mod reload`\uFF08build + deploy + \u5411 BDS \u53D1 reload\uFF09\u3002\n\u6216\u518D\u6B21\u8FD0\u884C `sfmc module dev`\uFF0C\u7136\u540E\u5728 BDS/\u6E38\u620F\u5185\u8F93\u5165 reload\u3002",
236
- "modwiz.devDone": "{id} \u5DF2\u94FE\u63A5\u5E76\u5B8C\u6210 build + deploy",
237
- "modwiz.devReady": "{id} \u5F00\u53D1\u73AF\u5883\u5C31\u7EEA",
246
+ "reload.buildOnly": "\u6784\u5EFA\u5B8C\u6210\u3002",
247
+ "reload.bdsNotRunning": "BDS \u672A\u8FD0\u884C \u2014 \u5DF2\u5B8C\u6210\u6784\u5EFA\u3002",
248
+ "reload.sent": "\u5DF2\u5411 BDS \u53D1\u9001 reload",
249
+ /* ─── module watch ─── */
250
+ "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",
251
+ "watch.banner": "[watch] \u76D1\u542C\u6A21\u5757: {path}",
252
+ "watch.hint": "[watch] \u6539 sapi/src/** \u5373 rebuild + deploy + reload\uFF1B\u5176\u5B83\u6587\u4EF6\u5FFD\u7565\u3002",
253
+ "watch.noSapiDir": "[watch] \u672A\u627E\u5230 sapi \u76EE\u5F55: {path}",
254
+ "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",
255
+ "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}",
256
+ "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}",
257
+ "watch.rebuild.start": "[watch] \u89E6\u53D1 rebuild\uFF08{count} \u6587\u4EF6\uFF09: {files}",
258
+ "watch.rebuild.ok": "[watch] rebuild OK ({ms} ms)",
259
+ "watch.rebuild.fail": "[watch] rebuild FAILED ({ms} ms)\n{output}",
260
+ "watch.rebuild.error": "[watch] rebuild \u5F02\u5E38: {message}",
261
+ "watch.reload.sent": "[watch] reload sent",
262
+ "watch.reload.manualHint": "[watch] --no-reload \u6A21\u5F0F\uFF1A\u5728 BDS \u63A7\u5236\u53F0\u6216\u6E38\u620F\u5185\u8F93\u5165 reload \u5373\u53EF",
263
+ "watch.stopped": "[watch] \u5DF2\u505C\u6B62",
264
+ /* ─── module publish ─── */
265
+ "publish.banner": "[publish] \u4FDD\u59C6\u5F0F\u53D1\u5E03\uFF08npm + \u8584 index PR\uFF09",
266
+ "publish.noLogin": "[publish] \u672A\u767B\u5F55 npm",
267
+ "publish.noLoginHint": " \u2192 \u8FD0\u884C `npm login --auth-type=web`\uFF08\u6D4F\u89C8\u5668 OAuth\uFF0C\u65E0\u9700\u628A credential \u843D\u672C\u673A\uFF09",
268
+ "publish.precheckFail": "[publish] \u9884\u68C0\u672A\u901A\u8FC7\uFF1B\u4FEE\u6B63\u4E0A\u9762 error \u540E\u91CD\u8BD5",
269
+ "publish.dryRun.summary": "[publish] --dry-run \u5B8C\u6210\uFF1B\u6B63\u5F0F publish \u8DD1 `sfmc mod publish [--bump <lvl>]`",
270
+ "publish.done": "[publish] \u5B8C\u6210 \u2713",
271
+ "bp.usage": "\u7528\u6CD5: bp <build|deploy>",
238
272
  "mod.usage": "\u7528\u6CD5: sfmc {cmds} <{subs}> [args]",
239
273
  "mod.list.title": "\u5DF2\u5B89\u88C5\u6A21\u5757",
240
274
  "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",
241
275
  "mod.notInRegistry": '\u6A21\u5757 "{query}" \u4E0D\u5728\u5B98\u65B9 registry \u4E2D\u3002',
242
- "mod.info.usage": "\u7528\u6CD5: sfmc module|mod info <id>",
276
+ "mod.info.usage": "\u7528\u6CD5: mod info <id>",
243
277
  "mod.notInstalledAt": "\u6A21\u5757 {id} \u672A\u5B89\u88C5\u4E8E {path}",
244
278
  "mod.notInstalled": "\u6A21\u5757 {id} \u672A\u5B89\u88C5",
245
279
  "mod.verifyOk": "{id} \u6B63\u5E38\n fingerprint: {fp}\n",
@@ -249,12 +283,12 @@ const zhCN = {
249
283
  "mod.action.disabled": "\u5DF2\u7981\u7528",
250
284
  "mod.toggleOk": "{label} {id}",
251
285
  "mod.toggleBadBody": "{action} {id} \u8FD4\u56DE: {text}",
252
- "mod.enable.usage": "\u7528\u6CD5: sfmc module|mod enable <id>",
253
- "mod.disable.usage": "\u7528\u6CD5: sfmc module|mod disable <id>",
254
- "mod.install.usage": "\u7528\u6CD5: sfmc module|mod install <id> [id2 ...] [--from <source>] [--link]",
255
- "mod.linkNeedsFrom": "--link \u9700\u8981 --from dir:<path>\uFF0C\u6216\u8BBE\u7F6E SFMC_MODULES_ROOT / \u65C1\u8DEF ../sfmc-modules\u3002\n\u793A\u4F8B: sfmc mod install land --from dir:../sfmc-modules/packages/land --link",
286
+ "mod.enable.usage": "\u7528\u6CD5: mod enable <id>",
287
+ "mod.disable.usage": "\u7528\u6CD5: mod disable <id>",
288
+ "mod.install.usage": "\u7528\u6CD5: mod install <id>\n mod install <id> --from <scheme> [--link] [--sha256 <hex>]",
289
+ "mod.fromUnknown": "\u672A\u77E5\u7684 --from \u6765\u6E90: {value}\u3002\u53EF\u7528: npm:|local[:<\u8DEF\u5F84>]|tgz:|zip:|dir:|github:<repo>[@tag]",
256
290
  "mod.fetchMissing": "\u672A\u627E\u5230 fetch-module\u3002\u8BF7\u5B89\u88C5 @sfmc-bds/sfmc \u6216\u5728 monorepo \u5185\u8FD0\u884C\u3002",
257
- "mod.uninstall.usage": "\u7528\u6CD5: sfmc module|mod uninstall <id>",
291
+ "mod.uninstall.usage": "\u7528\u6CD5: mod uninstall <id>",
258
292
  "mod.notInstalledFolder": "\u6A21\u5757 {id} \u672A\u5B89\u88C5\uFF08\u76EE\u5F55\u4E0D\u5B58\u5728: {path}\uFF09",
259
293
  "mod.removed": "\u5DF2\u4ECE {path} \u79FB\u9664 {id}\n",
260
294
  "pack.built": "\u5DF2\u6784\u5EFA\u5305\u81F3 {path}",
@@ -275,7 +309,7 @@ const zhCN = {
275
309
  "packs.conflict": "\u68C0\u6D4B\u5230\u51B2\u7A81\uFF1A",
276
310
  "packs.conflict.existing": " \u5DF2\u6709: {name} v{version} {uuid}\n {dir}",
277
311
  "packs.conflict.incoming": " \u65B0\u6765: {name} v{version} {uuid}",
278
- "packs.overwriteAsk": "\u8986\u76D6\u5DF2\u6709\u5305\uFF08\u76F8\u540C UUID\uFF0C\u7248\u672C\u672A\u66F4\u9AD8\uFF09\uFF1F",
312
+ "packs.overwriteAsk": "\u8986\u76D6\u5DF2\u6709\u5305\uFF08\u76F8\u540C UUID\uFF0C\u4F46\u7248\u672C\u76F8\u5BF9\u73B0\u5B58\u5305\u8F83\u4F4E\uFF09\uFF1F",
279
313
  "packs.badManifest": "\u65E0\u6CD5\u8BC6\u522B manifest\uFF08\u9700\u542B resources/data/script \u6A21\u5757\uFF0C\u4E14 header \u542B name/uuid/version\uFF09",
280
314
  "packs.skippedNoOverwrite": "\u5DF2\u8DF3\u8FC7\uFF08\u672A\u8986\u76D6\uFF09",
281
315
  "packs.conflictSkip": " \u51B2\u7A81\u8DF3\u8FC7\uFF08\u975E\u4EA4\u4E92\uFF0C\u53EF\u7528 --force\uFF09: {name}",