@sfmc-bds/cli 0.2.3 → 0.2.5

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/commands.ts"],
4
- "sourcesContent": ["/**\n * commands.ts \u2014 CLI \u6838\u5FC3\u8FD0\u7EF4\u547D\u4EE4\u5B9E\u73B0\n *\n * \u63D0\u4F9B\u547D\u4EE4\u884C\u4E0E REPL \u5171\u4EAB\u7684\u7CFB\u7EDF\u7EA7\u8FD0\u7EF4\u6307\u4EE4\uFF1A\n * - `status`\uFF1A\u67E5\u8BE2\u5168\u90E8\u670D\u52A1\uFF08BDS\u3001db-server\u3001qq-bridge\u3001LLBot\uFF09\u8FD0\u884C\u72B6\u6001\u3001PID\u3001\u8FD0\u884C\u65F6\u957F\u4E0E\u6240\u6709\u6743\n * - `start` / `stop` / `restart`\uFF1A\u6309\u4F9D\u8D56\u987A\u5E8F\u6216\u5355\u4E2A\u63A7\u5236\u670D\u52A1\u542F\u505C\n * - `startAll` / `stopAll`\uFF1A\u6279\u91CF\u7F16\u6392\u63A7\u5236\u6240\u6709\u540E\u53F0\u670D\u52A1\n * - `logs`\uFF1A\u68C0\u7D22\u5E76\u5B9E\u65F6\u8FFD\u8E2A\u6307\u5B9A\u670D\u52A1\u7684\u6700\u8FD1\u65E5\u5FD7\u6D41\n * - `update`\uFF1A\u89E6\u53D1 BDS \u6838\u5FC3\u7248\u672C\u66F4\u65B0\u68C0\u67E5\u4E0E\u70ED\u5347\u7EA7\n */\n\nimport { clearBdsPidFile, killBedrockServerByImage, probeBdsStatus } from \"@sfmc-bds/bds-tools/process-probe\";\nimport { stripTaskbarOsc } from \"@sfmc-bds/bds-tools/taskbar\";\nimport { didUpdateDeploy } from \"@sfmc-bds/bds-tools/update-result\";\nimport {\n DEFAULT_QQ_CONFIG,\n loadEnsuredConfig,\n qqRuntimeStatusPath,\n type QQBridgeConfig,\n} from \"@sfmc-bds/sdk/node/config\";\nimport fs from \"node:fs\";\nimport { isDaemonServer } from \"./daemon/role.js\";\nimport { t } from \"./i18n/index.js\";\nimport { pushLog as pushUnifiedLog } from \"./logs.js\";\nimport { findNodeServicePids, killNodeServiceByScript, type NodeServiceName } from \"./node-service-probe.js\";\nimport { spawnService } from \"./runtime.js\";\nimport { queryServicesRuntime, ROOT, SERVICE_NAMES, services, type ServiceName } from \"./services.js\";\nimport { c, DIVIDER, highlightLogLine, padRight } from \"./theme.js\";\n\n/**\n * CLI \u4FA7\u7ECF\u5B88\u62A4\u8FDB\u7A0B\u6267\u884C\u5E76\u53D6\u56DE text\uFF1B\u5B88\u62A4\u8FDB\u7A0B\u5185\u76F4\u63A5\u8DD1 localFn\u3002\n * \u4F7F\u7528\u573A\u666F\uFF1Astatus/start/stop/send/update \u7B49\u8FD0\u7EF4\u547D\u4EE4\u7684\u7EDF\u4E00\u5206\u6D41\uFF0C\u907F\u514D CLI \u8FDB\u7A0B\u6301\u6709\u5B50\u8FDB\u7A0B\u3002\n */\nasync function viaDaemonText(\n method: \"status\" | \"start\" | \"stop\" | \"restart\" | \"startAll\" | \"stopAll\" | \"send\" | \"update\",\n localFn: () => Promise<string>,\n params?: { name?: string; message?: string; args?: string[] }\n): Promise<string> {\n if (isDaemonServer()) return localFn();\n const { textViaDaemon, statusTextViaDaemon } = await import(\"./daemon/client.js\");\n if (method === \"status\") return statusTextViaDaemon();\n return textViaDaemon(method, params);\n}\n\nfunction parseService(raw: string): ServiceName | null {\n const s = raw.toLowerCase() as ServiceName;\n if (SERVICE_NAMES.includes(s)) return s;\n return null;\n}\n\nfunction statusLine(\n name: string,\n running: boolean,\n pid: number,\n uptime: string,\n ownership?: \"managed\" | \"external\"\n): string {\n const dot = running ? c.green(\"\u25CF\") : c.dim(\"\u25CB\");\n const state = running ? c.green(t(\"svc.state.running\")) : c.dim(t(\"svc.state.stopped\"));\n let owner = c.dim(t(\"svc.owner.none\"));\n if (running && ownership === \"managed\") owner = c.cyan(t(\"svc.owner.managed\"));\n else if (running && ownership === \"external\") owner = c.yellow(t(\"svc.owner.external\"));\n const pidStr = pid ? c.dim(String(pid)) : c.dim(\"\u2014\");\n const upStr = uptime !== \"\u2014\" ? c.dim(uptime) : c.dim(\"\u2014\");\n return ` ${dot} ${c.bold(padRight(name, 14))} ${padRight(state, 8)} ${padRight(owner, 6)} ${padRight(pidStr, 8)} ${upStr}`;\n}\n\n/** status \u9875\u811A\uFF1AQQ \u540E\u7AEF\u4E0E\u5173\u952E\u6458\u8981\uFF08\u5BC6\u94A5\u8131\u654F\uFF09 */\nfunction qqBridgeStatusFooter(): string {\n const qqCfg = loadEnsuredConfig(ROOT, \"qq_config.json\", \"qq_config\", { ...DEFAULT_QQ_CONFIG } as Record<\n string,\n unknown\n >) as QQBridgeConfig;\n const backend = qqCfg.qq_backend === \"llbot\" ? \"llbot\" : \"official\";\n const enabled = qqCfg.qq_enabled !== false;\n if (backend === \"llbot\") {\n const group = qqCfg.llbot?.group_id || \"\u2014\";\n const pathHint = qqCfg.llbot?.path ? String(qqCfg.llbot.path) : \"\u2014\";\n return `\\n${c.dim(t(\"svc.qq.footer.llbot\", { enabled: enabled ? \"on\" : \"off\", group, path: pathHint }))}\\n`;\n }\n const appId = String(qqCfg.official?.app_id ?? \"\").trim();\n const appIdHint = appId ? (appId.length > 8 ? `${appId.slice(0, 4)}\u2026${appId.slice(-4)}` : appId) : \"\u2014\";\n const openid = String(qqCfg.official?.group_openid ?? \"\").trim() || \"\u2014\";\n const sandbox = qqCfg.official?.sandbox ? \"sandbox\" : \"prod\";\n const creds = appId && String(qqCfg.official?.app_secret ?? \"\").trim() ? \"ok\" : \"missing\";\n return `\\n${c.dim(t(\"svc.qq.footer.official\", { enabled: enabled ? \"on\" : \"off\", appId: appIdHint, openid, sandbox, creds }))}\\n`;\n}\n\n/**\n * \u67E5\u8BE2\u5E76\u683C\u5F0F\u5316\u5C55\u793A\u6240\u6709\u540E\u53F0\u670D\u52A1\u7684\u5F53\u524D\u8FD0\u884C\u72B6\u6001\u77E9\u9635\u3002\n *\n * @returns \u683C\u5F0F\u5316\u540E\u7684\u72B6\u6001\u6458\u8981\u6587\u672C\u8868\u683C\u3002\n */\nexport async function cmdStatus(): Promise<string> {\n return viaDaemonText(\"status\", async () => {\n const rows = await queryServicesRuntime();\n const lines = rows.map((row) => statusLine(row.title, row.running, row.pid, row.uptime, row.ownership));\n const nameH = t(\"svc.col.name\");\n const statusH = t(\"svc.col.status\");\n const ownerH = t(\"svc.col.owner\");\n const pidH = t(\"svc.col.pid\");\n const upH = t(\"svc.col.uptime\");\n const header = ` ${padRight(nameH, 16)}${padRight(statusH, 8)}${padRight(ownerH, 6)}${padRight(pidH, 8)}${upH}`;\n return (\n `\\n${c.bold(t(\"svc.header\"))}\\n` + c.dim(header) + \"\\n\" + DIVIDER + \"\\n\" + lines.join(\"\\n\") + qqBridgeStatusFooter()\n );\n });\n}\n\n/**\n * \u68C0\u7D22\u5E76\u683C\u5F0F\u5316\u6307\u5B9A\u670D\u52A1\u7684\u6700\u8FD1\u5386\u53F2\u65E5\u5FD7\u884C\uFF08\u652F\u6301 `-n <\u884C\u6570>` \u53CA `-f` \u5B9E\u65F6\u8FFD\u8E2A\uFF09\u3002\n *\n * @param args \u53C2\u6570\u5217\u8868\u3002\n * @param onFollow \u53EF\u9009\u7684\u8DDF\u968F\u6A21\u5F0F\u56DE\u8C03\u3002\n * @returns \u683C\u5F0F\u5316\u540E\u7684\u65E5\u5FD7\u8F93\u51FA\u6587\u672C\u3002\n */\nexport function cmdLogs(args: string[], onFollow?: (serviceName: ServiceName) => void): string {\n let n = 20;\n let follow = false;\n const positional: string[] = [];\n\n for (const a of args) {\n if (a === \"-n\") continue; /* handled below */\n if (a === \"-f\") {\n follow = true;\n continue;\n }\n positional.push(a);\n }\n\n /* -n takes the next argument as value */\n const nIdx = args.indexOf(\"-n\");\n if (nIdx >= 0 && nIdx + 1 < args.length) n = parseInt(args[nIdx + 1] ?? \"0\", 10);\n\n const svcRaw = positional[0];\n if (!svcRaw) return c.yellow(t(\"svc.logs.usage\"));\n\n const svc = parseService(svcRaw);\n if (!svc) return c.red(t(\"svc.unknown\", { name: svcRaw, list: SERVICE_NAMES.join(\", \") }));\n\n const svcObj = services[svc];\n\n const lines = svcObj.getRecentLogs(n);\n if (lines.length === 0) return c.dim(t(\"svc.logs.empty\"));\n\n const header = `\\n${c.bold(t(\"svc.logs.header\", { title: svcObj.title, count: lines.length }))}`;\n const body = lines\n .map((l) => {\n const ts = c.dim(l.time.toLocaleTimeString());\n const text = highlightLogLine(l.text);\n const prefix = l.stream === \"stderr\" ? c.red(\"!\") : c.dim(\" \");\n return `${ts} ${prefix} ${text}`;\n })\n .join(\"\\n\");\n\n const result = header + \"\\n\" + DIVIDER + \"\\n\" + body + \"\\n\";\n\n if (follow && onFollow) {\n onFollow(svc);\n return \"\";\n }\n\n return result;\n}\n\nconst STARTING = new Set<ServiceName>();\nconst STOPPING = new Set<ServiceName>();\n\nfunction isNodeSvc(name: ServiceName): name is NodeServiceName {\n return name === \"db\" || name === \"qq\";\n}\n\nfunction clearQqRuntimeFile(): void {\n try {\n const file = qqRuntimeStatusPath(ROOT);\n if (fs.existsSync(file)) fs.unlinkSync(file);\n } catch {\n /* ignore */\n }\n}\n\n/**\n * \u542F\u52A8\u6307\u5B9A\u7684\u5355\u9879\u540E\u53F0\u670D\u52A1\uFF08bds / db / qq / llbot\uFF09\u3002\n *\n * @param raw \u76EE\u6807\u670D\u52A1\u540D\u79F0\u5B57\u7B26\u4E32\u3002\n * @returns \u542F\u52A8\u7ED3\u679C\u63CF\u8FF0\u6587\u672C\u3002\n */\nexport async function cmdStart(raw: string): Promise<string> {\n return viaDaemonText(\"start\", () => cmdStartLocal(raw), { name: raw });\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u542F\u52A8\u5355\u670D\u52A1\uFF08\u542B\u5916\u90E8\u63A2\u6D3B\u9632\u53CC\u5F00\uFF09 */\nasync function cmdStartLocal(raw: string): Promise<string> {\n const svc = parseService(raw);\n if (!svc) return c.red(t(\"svc.unknown\", { name: raw, list: SERVICE_NAMES.join(\", \") }));\n const svcObj = services[svc];\n if (svc === \"bds\") {\n const probe = await probeBdsStatus({ rootDir: ROOT });\n if (probe.state !== \"stopped\") {\n return c.yellow(\n t(\"svc.bdsAlreadyRunning\", {\n pid: String(probe.pid),\n kind: probe.state === \"managed\" ? t(\"svc.running\") : t(\"svc.runningExternal\"),\n })\n );\n }\n }\n // \u5916\u90E8\u5DF2\u5728\u8DD1\uFF1A\u7981\u6B62\u518D spawn\uFF08\u907F\u514D\u53CC db / \u53CC qq\uFF09\n if (isNodeSvc(svc)) {\n const external = await findNodeServicePids(svc);\n if (external.length > 0) {\n return c.yellow(t(\"svc.alreadyRunning\", { title: svcObj.title, pid: String(external.join(\",\")) }));\n }\n }\n if (svcObj.running) return c.yellow(t(\"svc.alreadyRunning\", { title: svcObj.title, pid: svcObj.pid }));\n if (STARTING.has(svc)) return c.dim(t(\"svc.alreadyStarting\", { title: svcObj.title }));\n STARTING.add(svc);\n try {\n const outcome = await svcObj.start();\n if (outcome.status === \"skipped\") {\n return c.yellow(t(\"svc.skipped\", { title: svcObj.title, reason: outcome.reason }));\n }\n if (outcome.status === \"already\") {\n return c.yellow(t(\"svc.alreadyRunning\", { title: svcObj.title, pid: svcObj.pid }));\n }\n return c.green(t(\"svc.started\", { title: svcObj.title }));\n } catch (e) {\n return c.red(t(\"svc.startFailed\", { title: svcObj.title, message: (e as Error).message }));\n } finally {\n STARTING.delete(svc);\n }\n}\n\n/**\n * \u505C\u6B62\u6307\u5B9A\u7684\u5355\u9879\u540E\u53F0\u670D\u52A1\uFF08\u652F\u6301\u5BF9\u5916\u90E8\u975E\u6258\u7BA1\u5B9E\u4F8B\u6267\u884C\u7CBE\u51C6\u6E05\u7406\uFF09\u3002\n *\n * @param raw \u76EE\u6807\u670D\u52A1\u540D\u79F0\u5B57\u7B26\u4E32\u3002\n * @returns \u505C\u6B62\u64CD\u4F5C\u7ED3\u679C\u6587\u672C\u3002\n */\nexport async function cmdStop(raw: string): Promise<string> {\n return viaDaemonText(\"stop\", () => cmdStopLocal(raw), { name: raw });\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u505C\u6B62\u5355\u670D\u52A1\uFF08\u542B\u5916\u90E8\u5B9E\u4F8B\u6E05\u7406\uFF09 */\nasync function cmdStopLocal(raw: string): Promise<string> {\n const svc = parseService(raw);\n if (!svc) return c.red(t(\"svc.unknown\", { name: raw, list: SERVICE_NAMES.join(\", \") }));\n const svcObj = services[svc];\n if (svc === \"bds\") {\n const probe = await probeBdsStatus({\n managedPid: svcObj.pid,\n hasStdin: Boolean(svcObj.proc?.stdin),\n rootDir: ROOT,\n });\n if (probe.state === \"external\") {\n if (STOPPING.has(svc)) return c.dim(t(\"svc.alreadyStopping\", { title: svcObj.title }));\n STOPPING.add(svc);\n try {\n await killBedrockServerByImage();\n clearBdsPidFile(ROOT);\n return c.dim(t(\"svc.stoppedExternal\", { title: svcObj.title }));\n } catch (e) {\n return c.red(t(\"svc.stopFailed\", { title: svcObj.title, message: (e as Error).message }));\n } finally {\n STOPPING.delete(svc);\n }\n }\n }\n\n // db / qq\uFF1A\u6258\u7BA1\u6216\u5916\u90E8\u90FD\u8981\u80FD\u505C\u5E72\u51C0\n if (isNodeSvc(svc)) {\n if (STOPPING.has(svc)) return c.dim(t(\"svc.alreadyStopping\", { title: svcObj.title }));\n STOPPING.add(svc);\n try {\n const managed = svcObj.running;\n if (managed) {\n await svcObj.stop();\n }\n const killed = await killNodeServiceByScript(svc);\n if (svc === \"qq\") clearQqRuntimeFile();\n if (!managed && killed.length === 0) {\n return c.yellow(t(\"svc.alreadyStopped\", { title: svcObj.title }));\n }\n if (!managed && killed.length > 0) {\n return c.dim(t(\"svc.stoppedExternal\", { title: svcObj.title }));\n }\n return c.dim(t(\"svc.stoppedMsg\", { title: svcObj.title }));\n } catch (e) {\n return c.red(t(\"svc.stopFailed\", { title: svcObj.title, message: (e as Error).message }));\n } finally {\n STOPPING.delete(svc);\n }\n }\n\n if (!svcObj.running) {\n if (svc === \"tunnel\") await svcObj.stop(); // \u53D6\u6D88\u7B49\u5F85\u4E2D\u7684\u65AD\u7EBF\u91CD\u8BD5\n return c.yellow(t(\"svc.alreadyStopped\", { title: svcObj.title }));\n }\n if (STOPPING.has(svc)) return c.dim(t(\"svc.alreadyStopping\", { title: svcObj.title }));\n STOPPING.add(svc);\n try {\n await svcObj.stop();\n return c.dim(t(\"svc.stoppedMsg\", { title: svcObj.title }));\n } catch (e) {\n return c.red(t(\"svc.stopFailed\", { title: svcObj.title, message: (e as Error).message }));\n } finally {\n STOPPING.delete(svc);\n }\n}\n\nexport async function cmdSend(raw: string, message: string): Promise<string> {\n return viaDaemonText(\"send\", () => cmdSendLocal(raw, message), { name: raw, message });\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u5411\u670D\u52A1 stdin \u5199\u5165\u4E00\u884C */\nasync function cmdSendLocal(raw: string, message: string): Promise<string> {\n const svc = parseService(raw);\n if (!svc) return c.red(t(\"svc.unknown\", { name: raw, list: SERVICE_NAMES.join(\", \") }));\n if (svc === \"tunnel\") return c.yellow(t(\"svc.stdinUnavailable\", { title: services[svc].title }));\n if (!message) return c.yellow(t(\"svc.send.usage\"));\n const svcObj = services[svc];\n /* \u5148\u7EDF\u4E00\u63A2\u6D4B\uFF0C\u907F\u514D\u5185\u5B58 running \u4E0E\u771F\u5B9E\u8FDB\u7A0B\u8131\u8282 */\n await queryServicesRuntime();\n if (svc === \"bds\") {\n const probe = await probeBdsStatus({\n managedPid: svcObj.pid,\n hasStdin: Boolean(svcObj.proc?.stdin),\n rootDir: ROOT,\n });\n if (probe.state === \"external\") {\n return c.yellow(t(\"svc.stdinUnavailable\", { title: svcObj.title }));\n }\n }\n if (!svcObj.running || !svcObj.proc?.stdin) return c.yellow(t(\"svc.notRunning\", { title: svcObj.title }));\n try {\n svcObj.proc.stdin.write(message + \"\\n\");\n return \"\";\n } catch {\n return c.red(t(\"svc.writeFailed\"));\n }\n}\n\n/**\n * \u91CD\u542F\u6307\u5B9A\u7684\u5355\u9879\u540E\u53F0\u670D\u52A1\uFF08\u9075\u5FAA stop \u2192 start \u4E25\u8C28\u65F6\u5E8F\uFF09\u3002\n *\n * @param raw \u76EE\u6807\u670D\u52A1\u540D\u79F0\u5B57\u7B26\u4E32\u3002\n * @returns \u91CD\u542F\u64CD\u4F5C\u7ED3\u679C\u6587\u672C\u3002\n */\nexport async function cmdRestart(raw: string): Promise<string> {\n return viaDaemonText(\"restart\", () => cmdRestartLocal(raw), { name: raw });\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u91CD\u542F\u5355\u670D\u52A1 */\nasync function cmdRestartLocal(raw: string): Promise<string> {\n const svc = parseService(raw);\n if (!svc) return c.red(t(\"svc.unknown\", { name: raw, list: SERVICE_NAMES.join(\", \") }));\n // bds / db / qq\uFF1A\u7EDF\u4E00\u8D70 stop\u2192start\uFF0C\u786E\u4FDD\u5916\u90E8\u5B9E\u4F8B\u4E5F\u88AB\u6E05\u6389\n if (svc === \"bds\" || isNodeSvc(svc)) {\n const stopMsg = await cmdStopLocal(svc);\n const startMsg = await cmdStartLocal(svc);\n // \u82E5 stop \u5DF2\u62A5\u9519\u6587\u6848\u542B\u300C\u5931\u8D25\u300D\uFF0C\u539F\u6837\u5E26\u56DE\n if (/\u5931\u8D25|failed/i.test(stopMsg) && !/\u5DF2\u505C\u6B62|stopped|already/i.test(stopMsg)) {\n return stopMsg;\n }\n if (/\u5931\u8D25|failed/i.test(startMsg)) return startMsg;\n return c.green(t(\"svc.restarted\", { title: services[svc].title }));\n }\n const svcObj = services[svc];\n try {\n const outcome = await svcObj.restart();\n if (outcome.status === \"skipped\") {\n return c.yellow(t(\"svc.skipped\", { title: svcObj.title, reason: outcome.reason }));\n }\n return c.green(t(\"svc.restarted\", { title: svcObj.title }));\n } catch (e) {\n return c.red(t(\"svc.restartFailed\", { title: svcObj.title, message: (e as Error).message }));\n }\n}\n\n/**\n * \u6309\u670D\u52A1\u62D3\u6251\u4F9D\u8D56\u6B21\u5E8F\u6279\u91CF\u542F\u52A8\u6240\u6709\u5DF2\u542F\u7528\u7684\u540E\u53F0\u670D\u52A1\u3002\n *\n * @returns \u6279\u91CF\u542F\u52A8\u7ED3\u679C\u7EDF\u8BA1\u62A5\u544A\u6587\u672C\u3002\n */\nexport async function cmdStartAll(): Promise<string> {\n return viaDaemonText(\"startAll\", cmdStartAllLocal);\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u6279\u91CF\u542F\u52A8 */\nasync function cmdStartAllLocal(): Promise<string> {\n const { startAll } = await import(\"./services.js\");\n const result = await startAll();\n const parts: string[] = [];\n if (result.started.length > 0) {\n parts.push(c.green(t(\"svc.startAll.started\", { list: result.started.join(\", \") })));\n }\n if (result.skipped.length > 0) {\n parts.push(\n c.dim(\n t(\"svc.startAll.skipped\", {\n list: result.skipped.map((s) => `${s.name}(${s.reason})`).join(\"; \"),\n })\n )\n );\n }\n if (result.failed.length > 0) {\n parts.push(\n c.red(\n t(\"svc.startAll.failed\", {\n list: result.failed.map((s) => `${s.name}: ${s.reason}`).join(\"; \"),\n })\n )\n );\n }\n if (parts.length === 0) return c.dim(t(\"svc.startAll.empty\"));\n if (result.failed.length === 0 && result.skipped.length === 0) {\n return c.green(t(\"svc.allStarted\"));\n }\n return parts.join(\"\\n\");\n}\n\n/**\n * \u6279\u91CF\u505C\u6B62\u6240\u6709\u5F53\u524D\u5904\u4E8E\u8FD0\u884C\u6001\u7684\u540E\u53F0\u670D\u52A1\u3002\n *\n * @returns \u6279\u91CF\u505C\u6B62\u786E\u8BA4\u6587\u672C\u3002\n */\nexport async function cmdStopAll(): Promise<string> {\n return viaDaemonText(\"stopAll\", cmdStopAllLocal);\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u6279\u91CF\u505C\u6B62 */\nasync function cmdStopAllLocal(): Promise<string> {\n const { stopAll } = await import(\"./services.js\");\n await stopAll();\n return c.dim(t(\"svc.allStopped\"));\n}\n\n/**\n * \u89E6\u53D1 BDS \u6838\u5FC3\u7248\u672C\u66F4\u65B0\u68C0\u67E5\u4E0E\u70ED\u5347\u7EA7\u6D41\u7A0B\u3002\n *\n * \u8FDB\u7A0B\u7BA1\u7406\u4E0E\u7F16\u6392\u7EA6\u675F\uFF1A\n * - updater \u5B50\u8FDB\u7A0B\u59CB\u7EC8\u9644\u52A0 `--no-start` \u53C2\u6570\uFF0C\u907F\u514D\u7531\u4E8E\u8FDB\u7A0B\u8131\u79BB\u5BFC\u81F4 REPL \u4E22\u5931 PID \u8DDF\u8E2A\u53CA\u6807\u51C6\u8F93\u51FA\n * - \u82E5\u66F4\u65B0\u524D BDS \u5904\u4E8E\u8FD0\u884C\u72B6\u6001\uFF0C\u4E14\u672A\u663E\u5F0F\u6307\u5B9A `--no-start`\uFF0C\u5728\u66F4\u65B0\u843D\u76D8\u90E8\u7F72\u5B8C\u6210\u540E\u7531\u76D1\u7763\u5668\u91CD\u65B0\u5524\u8D77 BDS\n *\n * @param args \u4F20\u9012\u7ED9\u66F4\u65B0\u5668\u7684\u547D\u4EE4\u884C\u53C2\u6570\u3002\n * @returns \u66F4\u65B0\u6267\u884C\u7ED3\u679C\u6458\u8981\u6587\u672C\u3002\n */\nexport async function cmdUpdate(args: string[] = []): Promise<string> {\n return viaDaemonText(\"update\", () => cmdUpdateLocal(args), { args });\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u6267\u884C BDS \u66F4\u65B0\uFF08\u9700\u6301\u6709 bds Service \u53E5\u67C4\u4EE5 beginUpdate/endUpdate\uFF09 */\nasync function cmdUpdateLocal(args: string[] = []): Promise<string> {\n const userNoStart = args.includes(\"--no-start\");\n const checkOnly = args.includes(\"--check-only\");\n const spawnArgs = userNoStart ? [...args] : [...args, \"--no-start\"];\n\n const bds = services.bds;\n // \u66F4\u65B0\u5668\u548C CLI \u5206\u5C5E\u4E0D\u540C\u8FDB\u7A0B\uFF1B\u5148\u6682\u505C CLI \u7684\u5D29\u6E83\u81EA\u542F\uFF0C\u518D\u4EA4\u7ED9\u66F4\u65B0\u5668\u505C\u670D\u3002\n bds.beginUpdate();\n try {\n const bdsProbe = await probeBdsStatus({\n managedPid: bds.pid,\n hasStdin: Boolean(bds.proc?.stdin),\n rootDir: ROOT,\n });\n const bdsWasRunning = bdsProbe.state !== \"stopped\";\n\n const result = await new Promise<{ code: number | null; out: string }>((resolve) => {\n const proc = spawnService(\"update\", spawnArgs, {\n cwd: ROOT,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n windowsHide: true,\n });\n let out = \"\";\n const pushChunk = (raw: string, level: \"info\" | \"error\"): void => {\n // \u5265\u79BB Windows Terminal \u4EFB\u52A1\u680F OSC\uFF0C\u907F\u514D pipe \u65E5\u5FD7\u7A7A\u767D\u884C\uFF08\u6743\u5A01\uFF1Abds-tools/taskbar\uFF09\n const s = stripTaskbarOsc(raw);\n out += s;\n for (const line of s\n .split(/\\r?\\n/)\n .map((l) => l.trimEnd())\n .filter((l) => l.length > 0)) {\n pushUnifiedLog(line, \"update\", level);\n }\n };\n proc.stdout?.on(\"data\", (d: Buffer) => pushChunk(d.toString(), \"info\"));\n proc.stderr?.on(\"data\", (d: Buffer) => pushChunk(d.toString(), \"error\"));\n proc.on(\"exit\", (code) => {\n if (code === 0) {\n pushUnifiedLog(t(\"svc.updateComplete\"), \"system\", \"success\");\n resolve({ code: 0, out: (out ? out + \"\\n\" : \"\") + t(\"svc.updateComplete\") });\n } else {\n resolve({ code, out: out || t(\"svc.updateExited\", { code: String(code) }) });\n }\n });\n proc.on(\"error\", (e) => {\n pushUnifiedLog(t(\"svc.updateError\", { message: e.message }), \"system\", \"error\");\n resolve({ code: 1, out: t(\"svc.updateError\", { message: e.message }) });\n });\n });\n\n /* \u4EC5\u5728\u771F\u6B63\u5B8C\u6210\u90E8\u7F72\u540E\u62C9\u8D77 BDS\uFF1B\u300C\u5DF2\u662F\u6700\u65B0\u300D\u4E0D\u6253\u6270\u5F53\u524D\u72B6\u6001\u3002\n * \u4EE5 updater \u8F93\u51FA\u7684 SFMC_UPDATE_RESULT=deployed \u673A\u5668\u6807\u8BB0\u4E3A\u51C6\uFF08\u52FF\u5339\u914D\u672C\u5730\u5316\u65E5\u5FD7\uFF09\u3002 */\n const didDeploy = didUpdateDeploy(result.out);\n if (result.code === 0 && didDeploy && !userNoStart && !checkOnly) {\n const afterProbe = await probeBdsStatus({\n managedPid: bds.pid,\n hasStdin: Boolean(bds.proc?.stdin),\n rootDir: ROOT,\n });\n if (afterProbe.state !== \"stopped\") {\n return result.out;\n }\n try {\n pushUnifiedLog(t(\"svc.updateStartBds\"), \"system\", \"info\");\n bds.endUpdate();\n await bds.start();\n return result.out + \"\\n\" + c.green(t(\"svc.bdsStarted\"));\n } catch (e) {\n return result.out + \"\\n\" + c.red(t(\"svc.bdsStartFailed\", { message: (e as Error).message }));\n }\n }\n\n if (result.code === 0 && didDeploy && userNoStart && bdsWasRunning) {\n const afterProbe = await probeBdsStatus({ rootDir: ROOT });\n if (afterProbe.state === \"stopped\") {\n return result.out + \"\\n\" + c.yellow(t(\"svc.bdsStoppedForUpdate\"));\n }\n }\n\n return result.out;\n } finally {\n bds.endUpdate();\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * commands.ts \u2014 CLI \u6838\u5FC3\u8FD0\u7EF4\u547D\u4EE4\u5B9E\u73B0\n *\n * \u63D0\u4F9B\u547D\u4EE4\u884C\u4E0E REPL \u5171\u4EAB\u7684\u7CFB\u7EDF\u7EA7\u8FD0\u7EF4\u6307\u4EE4\uFF1A\n * - `status`\uFF1A\u67E5\u8BE2\u5168\u90E8\u670D\u52A1\uFF08BDS\u3001db-server\u3001qq-bridge\u3001LLBot\uFF09\u8FD0\u884C\u72B6\u6001\u3001PID\u3001\u8FD0\u884C\u65F6\u957F\u4E0E\u6240\u6709\u6743\n * - `start` / `stop` / `restart`\uFF1A\u6309\u4F9D\u8D56\u987A\u5E8F\u6216\u5355\u4E2A\u63A7\u5236\u670D\u52A1\u542F\u505C\n * - `startAll` / `stopAll`\uFF1A\u6279\u91CF\u7F16\u6392\u63A7\u5236\u6240\u6709\u540E\u53F0\u670D\u52A1\n * - `logs`\uFF1A\u68C0\u7D22\u5E76\u5B9E\u65F6\u8FFD\u8E2A\u6307\u5B9A\u670D\u52A1\u7684\u6700\u8FD1\u65E5\u5FD7\u6D41\n * - `update`\uFF1A\u89E6\u53D1 BDS \u6838\u5FC3\u7248\u672C\u66F4\u65B0\u68C0\u67E5\u4E0E\u70ED\u5347\u7EA7\n */\n\nimport { clearBdsPidFile, killBedrockServerByImage, probeBdsStatus } from \"@sfmc-bds/bds-tools/process-probe\";\nimport { stripTaskbarOsc } from \"@sfmc-bds/bds-tools/taskbar\";\nimport { didUpdateDeploy } from \"@sfmc-bds/bds-tools/update-result\";\nimport { qqRuntimeStatusPath } from \"@sfmc-bds/sdk/node/config\";\nimport fs from \"node:fs\";\nimport { isDaemonServer } from \"./daemon/role.js\";\nimport { t } from \"./i18n/index.js\";\nimport { pushLog as pushUnifiedLog } from \"./logs.js\";\nimport { findNodeServicePids, killNodeServiceByScript, type NodeServiceName } from \"./node-service-probe.js\";\nimport { spawnService } from \"./runtime.js\";\nimport { queryServicesRuntime, ROOT, SERVICE_NAMES, services, type ServiceName } from \"./services.js\";\nimport { c, DIVIDER, highlightLogLine, padRight } from \"./theme.js\";\n\n/**\n * CLI \u4FA7\u7ECF\u5B88\u62A4\u8FDB\u7A0B\u6267\u884C\u5E76\u53D6\u56DE text\uFF1B\u5B88\u62A4\u8FDB\u7A0B\u5185\u76F4\u63A5\u8DD1 localFn\u3002\n * \u4F7F\u7528\u573A\u666F\uFF1Astatus/start/stop/send/update \u7B49\u8FD0\u7EF4\u547D\u4EE4\u7684\u7EDF\u4E00\u5206\u6D41\uFF0C\u907F\u514D CLI \u8FDB\u7A0B\u6301\u6709\u5B50\u8FDB\u7A0B\u3002\n */\nasync function viaDaemonText(\n method: \"status\" | \"start\" | \"stop\" | \"restart\" | \"startAll\" | \"stopAll\" | \"send\" | \"update\",\n localFn: () => Promise<string>,\n params?: { name?: string; message?: string; args?: string[] }\n): Promise<string> {\n if (isDaemonServer()) return localFn();\n const { textViaDaemon, statusTextViaDaemon } = await import(\"./daemon/client.js\");\n if (method === \"status\") return statusTextViaDaemon();\n return textViaDaemon(method, params);\n}\n\nfunction parseService(raw: string): ServiceName | null {\n const s = raw.toLowerCase() as ServiceName;\n if (SERVICE_NAMES.includes(s)) return s;\n return null;\n}\n\nfunction statusLine(\n name: string,\n running: boolean,\n pid: number,\n uptime: string,\n ownership?: \"managed\" | \"external\"\n): string {\n const dot = running ? c.green(\"\u25CF\") : c.dim(\"\u25CB\");\n const state = running ? c.green(t(\"svc.state.running\")) : c.dim(t(\"svc.state.stopped\"));\n let owner = c.dim(t(\"svc.owner.none\"));\n if (running && ownership === \"managed\") owner = c.cyan(t(\"svc.owner.managed\"));\n else if (running && ownership === \"external\") owner = c.yellow(t(\"svc.owner.external\"));\n const pidStr = pid ? c.dim(String(pid)) : c.dim(\"\u2014\");\n const upStr = uptime !== \"\u2014\" ? c.dim(uptime) : c.dim(\"\u2014\");\n return ` ${dot} ${c.bold(padRight(name, 14))} ${padRight(state, 8)} ${padRight(owner, 6)} ${padRight(pidStr, 8)} ${upStr}`;\n}\n\n/**\n * \u67E5\u8BE2\u5E76\u683C\u5F0F\u5316\u5C55\u793A\u6240\u6709\u540E\u53F0\u670D\u52A1\u7684\u5F53\u524D\u8FD0\u884C\u72B6\u6001\u77E9\u9635\u3002\n *\n * @returns \u683C\u5F0F\u5316\u540E\u7684\u72B6\u6001\u6458\u8981\u6587\u672C\u8868\u683C\u3002\n */\nexport async function cmdStatus(): Promise<string> {\n return viaDaemonText(\"status\", async () => {\n const rows = await queryServicesRuntime();\n const lines = rows.map((row) => statusLine(row.title, row.running, row.pid, row.uptime, row.ownership));\n const nameH = t(\"svc.col.name\");\n const statusH = t(\"svc.col.status\");\n const ownerH = t(\"svc.col.owner\");\n const pidH = t(\"svc.col.pid\");\n const upH = t(\"svc.col.uptime\");\n const header = ` ${padRight(nameH, 16)}${padRight(statusH, 8)}${padRight(ownerH, 6)}${padRight(pidH, 8)}${upH}`;\n return `\\n${c.bold(t(\"svc.header\"))}\\n` + c.dim(header) + \"\\n\" + DIVIDER + \"\\n\" + lines.join(\"\\n\");\n });\n}\n\n/**\n * \u68C0\u7D22\u5E76\u683C\u5F0F\u5316\u6307\u5B9A\u670D\u52A1\u7684\u6700\u8FD1\u5386\u53F2\u65E5\u5FD7\u884C\uFF08\u652F\u6301 `-n <\u884C\u6570>` \u53CA `-f` \u5B9E\u65F6\u8FFD\u8E2A\uFF09\u3002\n *\n * @param args \u53C2\u6570\u5217\u8868\u3002\n * @param onFollow \u53EF\u9009\u7684\u8DDF\u968F\u6A21\u5F0F\u56DE\u8C03\u3002\n * @returns \u683C\u5F0F\u5316\u540E\u7684\u65E5\u5FD7\u8F93\u51FA\u6587\u672C\u3002\n */\nexport function cmdLogs(args: string[], onFollow?: (serviceName: ServiceName) => void): string {\n let n = 20;\n let follow = false;\n const positional: string[] = [];\n\n for (const a of args) {\n if (a === \"-n\") continue; /* handled below */\n if (a === \"-f\") {\n follow = true;\n continue;\n }\n positional.push(a);\n }\n\n /* -n takes the next argument as value */\n const nIdx = args.indexOf(\"-n\");\n if (nIdx >= 0 && nIdx + 1 < args.length) n = parseInt(args[nIdx + 1] ?? \"0\", 10);\n\n const svcRaw = positional[0];\n if (!svcRaw) return c.yellow(t(\"svc.logs.usage\"));\n\n const svc = parseService(svcRaw);\n if (!svc) return c.red(t(\"svc.unknown\", { name: svcRaw, list: SERVICE_NAMES.join(\", \") }));\n\n const svcObj = services[svc];\n\n const lines = svcObj.getRecentLogs(n);\n if (lines.length === 0) return c.dim(t(\"svc.logs.empty\"));\n\n const header = `\\n${c.bold(t(\"svc.logs.header\", { title: svcObj.title, count: lines.length }))}`;\n const body = lines\n .map((l) => {\n const ts = c.dim(l.time.toLocaleTimeString());\n const text = highlightLogLine(l.text);\n const prefix = l.stream === \"stderr\" ? c.red(\"!\") : c.dim(\" \");\n return `${ts} ${prefix} ${text}`;\n })\n .join(\"\\n\");\n\n const result = header + \"\\n\" + DIVIDER + \"\\n\" + body + \"\\n\";\n\n if (follow && onFollow) {\n onFollow(svc);\n return \"\";\n }\n\n return result;\n}\n\nconst STARTING = new Set<ServiceName>();\nconst STOPPING = new Set<ServiceName>();\n\nfunction isNodeSvc(name: ServiceName): name is NodeServiceName {\n return name === \"db\" || name === \"qq\";\n}\n\nfunction clearQqRuntimeFile(): void {\n try {\n const file = qqRuntimeStatusPath(ROOT);\n if (fs.existsSync(file)) fs.unlinkSync(file);\n } catch {\n /* ignore */\n }\n}\n\n/**\n * \u542F\u52A8\u6307\u5B9A\u7684\u5355\u9879\u540E\u53F0\u670D\u52A1\uFF08bds / db / qq / llbot\uFF09\u3002\n *\n * @param raw \u76EE\u6807\u670D\u52A1\u540D\u79F0\u5B57\u7B26\u4E32\u3002\n * @returns \u542F\u52A8\u7ED3\u679C\u63CF\u8FF0\u6587\u672C\u3002\n */\nexport async function cmdStart(raw: string): Promise<string> {\n return viaDaemonText(\"start\", () => cmdStartLocal(raw), { name: raw });\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u542F\u52A8\u5355\u670D\u52A1\uFF08\u542B\u5916\u90E8\u63A2\u6D3B\u9632\u53CC\u5F00\uFF09 */\nasync function cmdStartLocal(raw: string): Promise<string> {\n const svc = parseService(raw);\n if (!svc) return c.red(t(\"svc.unknown\", { name: raw, list: SERVICE_NAMES.join(\", \") }));\n const svcObj = services[svc];\n if (svc === \"bds\") {\n const probe = await probeBdsStatus({ rootDir: ROOT });\n if (probe.state !== \"stopped\") {\n return c.yellow(\n t(\"svc.bdsAlreadyRunning\", {\n pid: String(probe.pid),\n kind: probe.state === \"managed\" ? t(\"svc.running\") : t(\"svc.runningExternal\"),\n })\n );\n }\n }\n // \u5916\u90E8\u5DF2\u5728\u8DD1\uFF1A\u7981\u6B62\u518D spawn\uFF08\u907F\u514D\u53CC db / \u53CC qq\uFF09\n if (isNodeSvc(svc)) {\n const external = await findNodeServicePids(svc);\n if (external.length > 0) {\n return c.yellow(t(\"svc.alreadyRunning\", { title: svcObj.title, pid: String(external.join(\",\")) }));\n }\n }\n if (svcObj.running) return c.yellow(t(\"svc.alreadyRunning\", { title: svcObj.title, pid: svcObj.pid }));\n if (STARTING.has(svc)) return c.dim(t(\"svc.alreadyStarting\", { title: svcObj.title }));\n STARTING.add(svc);\n try {\n const outcome = await svcObj.start();\n if (outcome.status === \"skipped\") {\n return c.yellow(t(\"svc.skipped\", { title: svcObj.title, reason: outcome.reason }));\n }\n if (outcome.status === \"already\") {\n return c.yellow(t(\"svc.alreadyRunning\", { title: svcObj.title, pid: svcObj.pid }));\n }\n return c.green(t(\"svc.started\", { title: svcObj.title }));\n } catch (e) {\n return c.red(t(\"svc.startFailed\", { title: svcObj.title, message: (e as Error).message }));\n } finally {\n STARTING.delete(svc);\n }\n}\n\n/**\n * \u505C\u6B62\u6307\u5B9A\u7684\u5355\u9879\u540E\u53F0\u670D\u52A1\uFF08\u652F\u6301\u5BF9\u5916\u90E8\u975E\u6258\u7BA1\u5B9E\u4F8B\u6267\u884C\u7CBE\u51C6\u6E05\u7406\uFF09\u3002\n *\n * @param raw \u76EE\u6807\u670D\u52A1\u540D\u79F0\u5B57\u7B26\u4E32\u3002\n * @returns \u505C\u6B62\u64CD\u4F5C\u7ED3\u679C\u6587\u672C\u3002\n */\nexport async function cmdStop(raw: string): Promise<string> {\n return viaDaemonText(\"stop\", () => cmdStopLocal(raw), { name: raw });\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u505C\u6B62\u5355\u670D\u52A1\uFF08\u542B\u5916\u90E8\u5B9E\u4F8B\u6E05\u7406\uFF09 */\nasync function cmdStopLocal(raw: string): Promise<string> {\n const svc = parseService(raw);\n if (!svc) return c.red(t(\"svc.unknown\", { name: raw, list: SERVICE_NAMES.join(\", \") }));\n const svcObj = services[svc];\n if (svc === \"bds\") {\n const probe = await probeBdsStatus({\n managedPid: svcObj.pid,\n hasStdin: Boolean(svcObj.proc?.stdin),\n rootDir: ROOT,\n });\n if (probe.state === \"external\") {\n if (STOPPING.has(svc)) return c.dim(t(\"svc.alreadyStopping\", { title: svcObj.title }));\n STOPPING.add(svc);\n try {\n await killBedrockServerByImage();\n clearBdsPidFile(ROOT);\n return c.dim(t(\"svc.stoppedExternal\", { title: svcObj.title }));\n } catch (e) {\n return c.red(t(\"svc.stopFailed\", { title: svcObj.title, message: (e as Error).message }));\n } finally {\n STOPPING.delete(svc);\n }\n }\n }\n\n // db / qq\uFF1A\u6258\u7BA1\u6216\u5916\u90E8\u90FD\u8981\u80FD\u505C\u5E72\u51C0\n if (isNodeSvc(svc)) {\n if (STOPPING.has(svc)) return c.dim(t(\"svc.alreadyStopping\", { title: svcObj.title }));\n STOPPING.add(svc);\n try {\n const managed = svcObj.running;\n if (managed) {\n await svcObj.stop();\n }\n const killed = await killNodeServiceByScript(svc);\n if (svc === \"qq\") clearQqRuntimeFile();\n if (!managed && killed.length === 0) {\n return c.yellow(t(\"svc.alreadyStopped\", { title: svcObj.title }));\n }\n if (!managed && killed.length > 0) {\n return c.dim(t(\"svc.stoppedExternal\", { title: svcObj.title }));\n }\n return c.dim(t(\"svc.stoppedMsg\", { title: svcObj.title }));\n } catch (e) {\n return c.red(t(\"svc.stopFailed\", { title: svcObj.title, message: (e as Error).message }));\n } finally {\n STOPPING.delete(svc);\n }\n }\n\n if (!svcObj.running) {\n if (svc === \"tunnel\") await svcObj.stop(); // \u53D6\u6D88\u7B49\u5F85\u4E2D\u7684\u65AD\u7EBF\u91CD\u8BD5\n return c.yellow(t(\"svc.alreadyStopped\", { title: svcObj.title }));\n }\n if (STOPPING.has(svc)) return c.dim(t(\"svc.alreadyStopping\", { title: svcObj.title }));\n STOPPING.add(svc);\n try {\n await svcObj.stop();\n return c.dim(t(\"svc.stoppedMsg\", { title: svcObj.title }));\n } catch (e) {\n return c.red(t(\"svc.stopFailed\", { title: svcObj.title, message: (e as Error).message }));\n } finally {\n STOPPING.delete(svc);\n }\n}\n\nexport async function cmdSend(raw: string, message: string): Promise<string> {\n return viaDaemonText(\"send\", () => cmdSendLocal(raw, message), { name: raw, message });\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u5411\u670D\u52A1 stdin \u5199\u5165\u4E00\u884C */\nasync function cmdSendLocal(raw: string, message: string): Promise<string> {\n const svc = parseService(raw);\n if (!svc) return c.red(t(\"svc.unknown\", { name: raw, list: SERVICE_NAMES.join(\", \") }));\n if (svc === \"tunnel\") return c.yellow(t(\"svc.stdinUnavailable\", { title: services[svc].title }));\n if (!message) return c.yellow(t(\"svc.send.usage\"));\n const svcObj = services[svc];\n /* \u5148\u7EDF\u4E00\u63A2\u6D4B\uFF0C\u907F\u514D\u5185\u5B58 running \u4E0E\u771F\u5B9E\u8FDB\u7A0B\u8131\u8282 */\n await queryServicesRuntime();\n if (svc === \"bds\") {\n const probe = await probeBdsStatus({\n managedPid: svcObj.pid,\n hasStdin: Boolean(svcObj.proc?.stdin),\n rootDir: ROOT,\n });\n if (probe.state === \"external\") {\n return c.yellow(t(\"svc.stdinUnavailable\", { title: svcObj.title }));\n }\n }\n if (!svcObj.running || !svcObj.proc?.stdin) return c.yellow(t(\"svc.notRunning\", { title: svcObj.title }));\n try {\n svcObj.proc.stdin.write(message + \"\\n\");\n return \"\";\n } catch {\n return c.red(t(\"svc.writeFailed\"));\n }\n}\n\n/**\n * \u91CD\u542F\u6307\u5B9A\u7684\u5355\u9879\u540E\u53F0\u670D\u52A1\uFF08\u9075\u5FAA stop \u2192 start \u4E25\u8C28\u65F6\u5E8F\uFF09\u3002\n *\n * @param raw \u76EE\u6807\u670D\u52A1\u540D\u79F0\u5B57\u7B26\u4E32\u3002\n * @returns \u91CD\u542F\u64CD\u4F5C\u7ED3\u679C\u6587\u672C\u3002\n */\nexport async function cmdRestart(raw: string): Promise<string> {\n return viaDaemonText(\"restart\", () => cmdRestartLocal(raw), { name: raw });\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u91CD\u542F\u5355\u670D\u52A1 */\nasync function cmdRestartLocal(raw: string): Promise<string> {\n const svc = parseService(raw);\n if (!svc) return c.red(t(\"svc.unknown\", { name: raw, list: SERVICE_NAMES.join(\", \") }));\n // bds / db / qq\uFF1A\u7EDF\u4E00\u8D70 stop\u2192start\uFF0C\u786E\u4FDD\u5916\u90E8\u5B9E\u4F8B\u4E5F\u88AB\u6E05\u6389\n if (svc === \"bds\" || isNodeSvc(svc)) {\n const stopMsg = await cmdStopLocal(svc);\n const startMsg = await cmdStartLocal(svc);\n // \u82E5 stop \u5DF2\u62A5\u9519\u6587\u6848\u542B\u300C\u5931\u8D25\u300D\uFF0C\u539F\u6837\u5E26\u56DE\n if (/\u5931\u8D25|failed/i.test(stopMsg) && !/\u5DF2\u505C\u6B62|stopped|already/i.test(stopMsg)) {\n return stopMsg;\n }\n if (/\u5931\u8D25|failed/i.test(startMsg)) return startMsg;\n return c.green(t(\"svc.restarted\", { title: services[svc].title }));\n }\n const svcObj = services[svc];\n try {\n const outcome = await svcObj.restart();\n if (outcome.status === \"skipped\") {\n return c.yellow(t(\"svc.skipped\", { title: svcObj.title, reason: outcome.reason }));\n }\n return c.green(t(\"svc.restarted\", { title: svcObj.title }));\n } catch (e) {\n return c.red(t(\"svc.restartFailed\", { title: svcObj.title, message: (e as Error).message }));\n }\n}\n\n/**\n * \u6309\u670D\u52A1\u62D3\u6251\u4F9D\u8D56\u6B21\u5E8F\u6279\u91CF\u542F\u52A8\u6240\u6709\u5DF2\u542F\u7528\u7684\u540E\u53F0\u670D\u52A1\u3002\n *\n * @returns \u6279\u91CF\u542F\u52A8\u7ED3\u679C\u7EDF\u8BA1\u62A5\u544A\u6587\u672C\u3002\n */\nexport async function cmdStartAll(): Promise<string> {\n return viaDaemonText(\"startAll\", cmdStartAllLocal);\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u6279\u91CF\u542F\u52A8 */\nasync function cmdStartAllLocal(): Promise<string> {\n const { startAll } = await import(\"./services.js\");\n const result = await startAll();\n const parts: string[] = [];\n if (result.started.length > 0) {\n parts.push(c.green(t(\"svc.startAll.started\", { list: result.started.join(\", \") })));\n }\n if (result.skipped.length > 0) {\n parts.push(\n c.dim(\n t(\"svc.startAll.skipped\", {\n list: result.skipped.map((s) => `${s.name}(${s.reason})`).join(\"; \"),\n })\n )\n );\n }\n if (result.failed.length > 0) {\n parts.push(\n c.red(\n t(\"svc.startAll.failed\", {\n list: result.failed.map((s) => `${s.name}: ${s.reason}`).join(\"; \"),\n })\n )\n );\n }\n if (parts.length === 0) return c.dim(t(\"svc.startAll.empty\"));\n if (result.failed.length === 0 && result.skipped.length === 0) {\n return c.green(t(\"svc.allStarted\"));\n }\n return parts.join(\"\\n\");\n}\n\n/**\n * \u6279\u91CF\u505C\u6B62\u6240\u6709\u5F53\u524D\u5904\u4E8E\u8FD0\u884C\u6001\u7684\u540E\u53F0\u670D\u52A1\u3002\n *\n * @returns \u6279\u91CF\u505C\u6B62\u786E\u8BA4\u6587\u672C\u3002\n */\nexport async function cmdStopAll(): Promise<string> {\n return viaDaemonText(\"stopAll\", cmdStopAllLocal);\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u6279\u91CF\u505C\u6B62 */\nasync function cmdStopAllLocal(): Promise<string> {\n const { stopAll } = await import(\"./services.js\");\n await stopAll();\n return c.dim(t(\"svc.allStopped\"));\n}\n\n/**\n * \u89E6\u53D1 BDS \u6838\u5FC3\u7248\u672C\u66F4\u65B0\u68C0\u67E5\u4E0E\u70ED\u5347\u7EA7\u6D41\u7A0B\u3002\n *\n * \u8FDB\u7A0B\u7BA1\u7406\u4E0E\u7F16\u6392\u7EA6\u675F\uFF1A\n * - updater \u5B50\u8FDB\u7A0B\u59CB\u7EC8\u9644\u52A0 `--no-start` \u53C2\u6570\uFF0C\u907F\u514D\u7531\u4E8E\u8FDB\u7A0B\u8131\u79BB\u5BFC\u81F4 REPL \u4E22\u5931 PID \u8DDF\u8E2A\u53CA\u6807\u51C6\u8F93\u51FA\n * - \u82E5\u66F4\u65B0\u524D BDS \u5904\u4E8E\u8FD0\u884C\u72B6\u6001\uFF0C\u4E14\u672A\u663E\u5F0F\u6307\u5B9A `--no-start`\uFF0C\u5728\u66F4\u65B0\u843D\u76D8\u90E8\u7F72\u5B8C\u6210\u540E\u7531\u76D1\u7763\u5668\u91CD\u65B0\u5524\u8D77 BDS\n *\n * @param args \u4F20\u9012\u7ED9\u66F4\u65B0\u5668\u7684\u547D\u4EE4\u884C\u53C2\u6570\u3002\n * @returns \u66F4\u65B0\u6267\u884C\u7ED3\u679C\u6458\u8981\u6587\u672C\u3002\n */\nexport async function cmdUpdate(args: string[] = []): Promise<string> {\n return viaDaemonText(\"update\", () => cmdUpdateLocal(args), { args });\n}\n\n/** \u5B88\u62A4\u8FDB\u7A0B\u5185\u6267\u884C BDS \u66F4\u65B0\uFF08\u9700\u6301\u6709 bds Service \u53E5\u67C4\u4EE5 beginUpdate/endUpdate\uFF09 */\nasync function cmdUpdateLocal(args: string[] = []): Promise<string> {\n const userNoStart = args.includes(\"--no-start\");\n const checkOnly = args.includes(\"--check-only\");\n const spawnArgs = userNoStart ? [...args] : [...args, \"--no-start\"];\n\n const bds = services.bds;\n // \u66F4\u65B0\u5668\u548C CLI \u5206\u5C5E\u4E0D\u540C\u8FDB\u7A0B\uFF1B\u5148\u6682\u505C CLI \u7684\u5D29\u6E83\u81EA\u542F\uFF0C\u518D\u4EA4\u7ED9\u66F4\u65B0\u5668\u505C\u670D\u3002\n bds.beginUpdate();\n try {\n const bdsProbe = await probeBdsStatus({\n managedPid: bds.pid,\n hasStdin: Boolean(bds.proc?.stdin),\n rootDir: ROOT,\n });\n const bdsWasRunning = bdsProbe.state !== \"stopped\";\n\n const result = await new Promise<{ code: number | null; out: string }>((resolve) => {\n const proc = spawnService(\"update\", spawnArgs, {\n cwd: ROOT,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n windowsHide: true,\n });\n let out = \"\";\n const pushChunk = (raw: string, level: \"info\" | \"error\"): void => {\n // \u5265\u79BB Windows Terminal \u4EFB\u52A1\u680F OSC\uFF0C\u907F\u514D pipe \u65E5\u5FD7\u7A7A\u767D\u884C\uFF08\u6743\u5A01\uFF1Abds-tools/taskbar\uFF09\n const s = stripTaskbarOsc(raw);\n out += s;\n for (const line of s\n .split(/\\r?\\n/)\n .map((l) => l.trimEnd())\n .filter((l) => l.length > 0)) {\n pushUnifiedLog(line, \"update\", level);\n }\n };\n proc.stdout?.on(\"data\", (d: Buffer) => pushChunk(d.toString(), \"info\"));\n proc.stderr?.on(\"data\", (d: Buffer) => pushChunk(d.toString(), \"error\"));\n proc.on(\"exit\", (code) => {\n if (code === 0) {\n pushUnifiedLog(t(\"svc.updateComplete\"), \"system\", \"success\");\n resolve({ code: 0, out: (out ? out + \"\\n\" : \"\") + t(\"svc.updateComplete\") });\n } else {\n resolve({ code, out: out || t(\"svc.updateExited\", { code: String(code) }) });\n }\n });\n proc.on(\"error\", (e) => {\n pushUnifiedLog(t(\"svc.updateError\", { message: e.message }), \"system\", \"error\");\n resolve({ code: 1, out: t(\"svc.updateError\", { message: e.message }) });\n });\n });\n\n /* \u4EC5\u5728\u771F\u6B63\u5B8C\u6210\u90E8\u7F72\u540E\u62C9\u8D77 BDS\uFF1B\u300C\u5DF2\u662F\u6700\u65B0\u300D\u4E0D\u6253\u6270\u5F53\u524D\u72B6\u6001\u3002\n * \u4EE5 updater \u8F93\u51FA\u7684 SFMC_UPDATE_RESULT=deployed \u673A\u5668\u6807\u8BB0\u4E3A\u51C6\uFF08\u52FF\u5339\u914D\u672C\u5730\u5316\u65E5\u5FD7\uFF09\u3002 */\n const didDeploy = didUpdateDeploy(result.out);\n if (result.code === 0 && didDeploy && !userNoStart && !checkOnly) {\n const afterProbe = await probeBdsStatus({\n managedPid: bds.pid,\n hasStdin: Boolean(bds.proc?.stdin),\n rootDir: ROOT,\n });\n if (afterProbe.state !== \"stopped\") {\n return result.out;\n }\n try {\n pushUnifiedLog(t(\"svc.updateStartBds\"), \"system\", \"info\");\n bds.endUpdate();\n await bds.start();\n return result.out + \"\\n\" + c.green(t(\"svc.bdsStarted\"));\n } catch (e) {\n return result.out + \"\\n\" + c.red(t(\"svc.bdsStartFailed\", { message: (e as Error).message }));\n }\n }\n\n if (result.code === 0 && didDeploy && userNoStart && bdsWasRunning) {\n const afterProbe = await probeBdsStatus({ rootDir: ROOT });\n if (afterProbe.state === \"stopped\") {\n return result.out + \"\\n\" + c.yellow(t(\"svc.bdsStoppedForUpdate\"));\n }\n }\n\n return result.out;\n } finally {\n bds.endUpdate();\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -61,12 +61,20 @@ export declare const en: {
61
61
  readonly "help.send": "Send command to a service (Tab cycles targets; QQ prompt shows official / llbot)";
62
62
  readonly "help.section.update": "─── BDS Update ───";
63
63
  readonly "help.update": "Check / apply BDS update";
64
+ readonly "help.update.checkOnly": "Check for an update without downloading";
65
+ readonly "help.update.force": "Force update even when versions match";
66
+ readonly "help.update.noStart": "Do not start BDS after the update";
67
+ readonly "help.update.channelRelease": "Use the release channel";
68
+ readonly "help.update.channelPreview": "Use the preview channel";
64
69
  readonly "help.section.debug": "─── BDS debug ───";
65
70
  readonly "help.debug.status": "View sfmc_debug / SENTRY_DSN state";
66
71
  readonly "help.debug.toggle": "Toggle sfmc_debug";
67
72
  readonly "help.debug.sentry.on": "Set SENTRY_DSN";
68
73
  readonly "help.debug.sentry.off": "Remove SENTRY_DSN";
74
+ readonly "help.debug.sentry": "Configure Sentry DSN";
69
75
  readonly "help.ui": "UI Studio — visual editor for declarative UI";
76
+ readonly "help.ui.studio": "Start UI Studio and open the browser";
77
+ readonly "help.ui.stop": "Stop UI Studio in this process";
70
78
  readonly "ui.usage": "Usage: ui studio | ui stop";
71
79
  readonly "ui.studio.started": "UI Studio started: {url}";
72
80
  readonly "ui.studio.hint": "Press Ctrl+C to stop the server.";
@@ -91,6 +99,10 @@ export declare const en: {
91
99
  readonly "help.packs.enable": "Enable a pack";
92
100
  readonly "help.packs.disable": "Disable a pack";
93
101
  readonly "help.packs.doctor": "Diagnose pack wiring";
102
+ readonly "help.packs.doctor.fix": "Heal wiring and grant missing Beta APIs";
103
+ readonly "help.packs.doctor.allExperiments": "Enable all known experimental gameplay";
104
+ readonly "help.packs.doctor.experiments": "Show experiment toggles only";
105
+ readonly "help.packs.doctor.experimentsList": "Enable by alias, comma-separated: beta, upcoming, cameras, voxel, villager, drop3, edu";
94
106
  readonly "help.packs.path": "Show pack paths";
95
107
  readonly "help.section.general": "─── General ───";
96
108
  readonly "help.init": "Setup wizard";
@@ -128,6 +140,11 @@ export declare const en: {
128
140
  readonly "daemon.usage": "usage: daemon [status|stop]";
129
141
  readonly "daemon.connectFailed": "failed to connect daemon: {message}";
130
142
  readonly "help.daemon": "Show/stop background daemon";
143
+ readonly "help.daemon.status": "Show whether the daemon is running";
144
+ readonly "help.daemon.stop": "Stop the background daemon";
145
+ readonly "palette.asIs": "run";
146
+ readonly "palette.fixOnly": "fix only";
147
+ readonly "palette.localeCurrent": "current";
131
148
  readonly "svc.header": "Services";
132
149
  readonly "svc.col.name": "Name";
133
150
  readonly "svc.col.status": "Status";
@@ -172,8 +189,6 @@ export declare const en: {
172
189
  readonly "svc.startAll.skipped": "Skipped: {list}";
173
190
  readonly "svc.startAll.failed": "Failed: {list}";
174
191
  readonly "svc.startAll.empty": "Nothing to start";
175
- readonly "svc.qq.footer.official": "QQ bridge: official · {enabled} · AppID {appId} · group_openid {openid} · {sandbox} · creds={creds}";
176
- readonly "svc.qq.footer.llbot": "QQ bridge: llbot · {enabled} · group {group} · path {path}";
177
192
  readonly "svc.updateComplete": "update complete";
178
193
  readonly "svc.updateExited": "update exited with code {code}";
179
194
  readonly "svc.updateError": "update error: {message}";
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/en.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/en.ts"],"names":[],"mappings":"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"}
@@ -62,12 +62,20 @@ const en = {
62
62
  "help.send": "Send command to a service (Tab cycles targets; QQ prompt shows official / llbot)",
63
63
  "help.section.update": "\u2500\u2500\u2500 BDS Update \u2500\u2500\u2500",
64
64
  "help.update": "Check / apply BDS update",
65
+ "help.update.checkOnly": "Check for an update without downloading",
66
+ "help.update.force": "Force update even when versions match",
67
+ "help.update.noStart": "Do not start BDS after the update",
68
+ "help.update.channelRelease": "Use the release channel",
69
+ "help.update.channelPreview": "Use the preview channel",
65
70
  "help.section.debug": "\u2500\u2500\u2500 BDS debug \u2500\u2500\u2500",
66
71
  "help.debug.status": "View sfmc_debug / SENTRY_DSN state",
67
72
  "help.debug.toggle": "Toggle sfmc_debug",
68
73
  "help.debug.sentry.on": "Set SENTRY_DSN",
69
74
  "help.debug.sentry.off": "Remove SENTRY_DSN",
75
+ "help.debug.sentry": "Configure Sentry DSN",
70
76
  "help.ui": "UI Studio \u2014 visual editor for declarative UI",
77
+ "help.ui.studio": "Start UI Studio and open the browser",
78
+ "help.ui.stop": "Stop UI Studio in this process",
71
79
  "ui.usage": "Usage: ui studio | ui stop",
72
80
  "ui.studio.started": "UI Studio started: {url}",
73
81
  "ui.studio.hint": "Press Ctrl+C to stop the server.",
@@ -92,6 +100,10 @@ const en = {
92
100
  "help.packs.enable": "Enable a pack",
93
101
  "help.packs.disable": "Disable a pack",
94
102
  "help.packs.doctor": "Diagnose pack wiring",
103
+ "help.packs.doctor.fix": "Heal wiring and grant missing Beta APIs",
104
+ "help.packs.doctor.allExperiments": "Enable all known experimental gameplay",
105
+ "help.packs.doctor.experiments": "Show experiment toggles only",
106
+ "help.packs.doctor.experimentsList": "Enable by alias, comma-separated: beta, upcoming, cameras, voxel, villager, drop3, edu",
95
107
  "help.packs.path": "Show pack paths",
96
108
  "help.section.general": "\u2500\u2500\u2500 General \u2500\u2500\u2500",
97
109
  "help.init": "Setup wizard",
@@ -131,6 +143,11 @@ const en = {
131
143
  "daemon.usage": "usage: daemon [status|stop]",
132
144
  "daemon.connectFailed": "failed to connect daemon: {message}",
133
145
  "help.daemon": "Show/stop background daemon",
146
+ "help.daemon.status": "Show whether the daemon is running",
147
+ "help.daemon.stop": "Stop the background daemon",
148
+ "palette.asIs": "run",
149
+ "palette.fixOnly": "fix only",
150
+ "palette.localeCurrent": "current",
134
151
  /* ─── services / commands ─── */
135
152
  "svc.header": "Services",
136
153
  "svc.col.name": "Name",
@@ -176,8 +193,6 @@ const en = {
176
193
  "svc.startAll.skipped": "Skipped: {list}",
177
194
  "svc.startAll.failed": "Failed: {list}",
178
195
  "svc.startAll.empty": "Nothing to start",
179
- "svc.qq.footer.official": "QQ bridge: official \xB7 {enabled} \xB7 AppID {appId} \xB7 group_openid {openid} \xB7 {sandbox} \xB7 creds={creds}",
180
- "svc.qq.footer.llbot": "QQ bridge: llbot \xB7 {enabled} \xB7 group {group} \xB7 path {path}",
181
196
  "svc.updateComplete": "update complete",
182
197
  "svc.updateExited": "update exited with code {code}",
183
198
  "svc.updateError": "update error: {message}",
@@ -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 CLI channel gates \u2500\u2500\u2500 */\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 (includes QQ backend summary)\",\n \"help.logs\": \"Open log filter window (on-disk logs)\",\n \"help.start\": \"Start a service (db / qq / llbot / bds; qq defaults to official Bot)\",\n \"help.stop\": \"Stop a service\",\n \"help.restart\": \"Restart a service\",\n \"help.send\": \"Send command to a service (Tab cycles targets; QQ prompt shows official / llbot)\",\n \"help.section.update\": \"\u2500\u2500\u2500 BDS Update \u2500\u2500\u2500\",\n \"help.update\": \"Check / apply BDS update\",\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.ui\": \"UI Studio \u2014 visual editor for declarative UI\",\n \"ui.usage\": \"Usage: ui studio | ui stop\",\n \"ui.studio.started\": \"UI Studio started: {url}\",\n \"ui.studio.hint\": \"Press Ctrl+C to stop the server.\",\n \"ui.studio.already\": \"UI Studio is already running: {url}\",\n \"ui.studio.stopped\": \"UI Studio stopped.\",\n \"ui.studio.notRunning\": \"UI Studio is not running in this process.\",\n \"ui.studio.failed\": \"Failed to start UI Studio: {message}\",\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.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 CLI (services keep running)\",\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.detach\": \"CLI detached (services keep running; use stop / daemon stop to halt)\",\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 daemon \u2500\u2500\u2500 */\n \"daemon.stopped\": \"daemon stopped\",\n \"daemon.notRunning\": \"daemon is not running\",\n \"daemon.running\": \"daemon running (PID {pid})\",\n \"daemon.usage\": \"usage: daemon [status|stop]\",\n \"daemon.connectFailed\": \"failed to connect daemon: {message}\",\n \"help.daemon\": \"Show/stop background daemon\",\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.skipped\": \"{title} skipped: {reason}\",\n \"svc.startAll.started\": \"Started: {list}\",\n \"svc.startAll.skipped\": \"Skipped: {list}\",\n \"svc.startAll.failed\": \"Failed: {list}\",\n \"svc.startAll.empty\": \"Nothing to start\",\n \"svc.qq.footer.official\":\n \"QQ bridge: official \u00B7 {enabled} \u00B7 AppID {appId} \u00B7 group_openid {openid} \u00B7 {sandbox} \u00B7 creds={creds}\",\n \"svc.qq.footer.llbot\": \"QQ bridge: llbot \u00B7 {enabled} \u00B7 group {group} \u00B7 path {path}\",\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 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.runtimeMissingAssets\": \"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 QQ bridge backend\",\n \"wizard.bdsDir\": \"BDS installation directory\",\n \"wizard.cannotCreateBds\": \"Cannot create BDS installation directory: {dir}\",\n \"wizard.qqBackend\": \"QQ bridge backend:\",\n \"wizard.qqBackend.official\": \"QQ Open Platform (official Bot)\",\n \"wizard.qqBackend.officialHint\": \"Recommended; needs AppID / AppSecret\",\n \"wizard.qqBackend.llbot\": \"LLBot (OneBot 11)\",\n \"wizard.qqBackend.llbotHint\": \"Requires local LLBot process\",\n \"wizard.qqBackend.disabled\": \"Disable QQ bridge for now\",\n \"wizard.qqBackend.disabledHint\": \"qq_enabled=false\",\n \"wizard.qqAppId\": \"QQ Open Platform AppID:\",\n \"wizard.qqAppSecret\": \"QQ Open Platform AppSecret:\",\n \"wizard.qqSandbox\": \"Use sandbox environment?\",\n \"wizard.qqGroupOpenid\": \"Group openid (optional for now):\",\n \"wizard.qqGroupOpenidHint\": \"not a classic group number\",\n \"wizard.enableLlbot\": \"Enable LLBot process takeover?\",\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 \"prompt.browseUnavailable\": \"system picker unavailable; enter path manually\",\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 bp \u2500\u2500\u2500 */\n \"bp.usage\": \"Usage: sfmc behavior-pack|bp <build|deploy>\",\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.cannotDisable\": \"Module {id} cannot be disabled (canDisable=false)\",\n \"mod.toggleLockFailed\": \"Failed to write module-lock ({id}): {message}\",\n \"mod.toggleDbSkipped\":\n \"Wrote module-lock; db-server not synced ({detail}). Memory state updates on next start db; in-game still needs mod reload / BDS restart.\",\n \"mod.enable.usage\": \"Usage: mod enable <id>\",\n \"mod.disable.usage\": \"Usage: mod disable <id>\",\n \"mod.install.usage\": \"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.betaApisMissing\":\n 'World \"{level}\" has not enabled \"Beta APIs (gametest)\", but required by:\\n{packs}\\n These packs will be blocked by BDS! Run packs doctor --fix to enable.',\n \"packs.doctor.betaApisFixed\":\n 'Successfully enabled \"Beta APIs\" (gametest = 1b) for world \"{level}\", backup created at: {backup}',\n \"packs.doctor.betaApisAlreadyOn\": 'Beta APIs is already enabled for world \"{level}\"',\n \"packs.doctor.betaApisFailed\": 'Failed to enable Beta APIs for world \"{level}\": {error}',\n \"packs.doctor.ghostPackCleaned\": \"Cleaned missing pack entry ({kind}): {uuid}\",\n \"packs.doctor.versionSynced\": \"Synced version ({kind}): {folder} list {listVer} \u2192 disk {diskVer}\",\n \"packs.doctor.permissionsMissing\":\n \"The following behavior packs depend on modules not allowed in BDS config:\\n{list}\\n Unconfigured modules will be blocked at runtime by BDS! Run packs doctor --fix to allow them.\",\n \"packs.doctor.permissionsFixed\": \"Automatically allowed script modules: {perms}\",\n \"packs.doctor.fixedSummary\": \"doctor: auto-healed {count} issue(s).\",\n \"packs.doctor.fixPrompt\": 'Run \"packs doctor --fix\" to automatically heal fixable issues.',\n \"packs.doctor.experimentsStatus\": 'World Experiments Status (World \"{level}\"):',\n \"packs.doctor.experimentsFixed\":\n 'Successfully enabled experimental features ({list}) for world \"{level}\", backup created at: {backup}',\n \"packs.doctor.experimentsAlreadyOn\": 'Requested experimental features for world \"{level}\" are already enabled',\n \"packs.doctor.experimentsFailed\": 'Failed to modify experimental features for world \"{level}\": {error}',\n \"packs.doctor.experimentsFixPrompt\":\n 'Run \"packs doctor --fix --all-experiments\" to enable all known experimental features.',\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.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 (includes QQ backend summary)\",\n \"help.logs\": \"Open log filter window (on-disk logs)\",\n \"help.start\": \"Start a service (db / qq / llbot / bds; qq defaults to official Bot)\",\n \"help.stop\": \"Stop a service\",\n \"help.restart\": \"Restart a service\",\n \"help.send\": \"Send command to a service (Tab cycles targets; QQ prompt shows official / llbot)\",\n \"help.section.update\": \"\u2500\u2500\u2500 BDS Update \u2500\u2500\u2500\",\n \"help.update\": \"Check / apply BDS update\",\n \"help.update.checkOnly\": \"Check for an update without downloading\",\n \"help.update.force\": \"Force update even when versions match\",\n \"help.update.noStart\": \"Do not start BDS after the update\",\n \"help.update.channelRelease\": \"Use the release channel\",\n \"help.update.channelPreview\": \"Use the preview channel\",\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.debug.sentry\": \"Configure Sentry DSN\",\n \"help.ui\": \"UI Studio \u2014 visual editor for declarative UI\",\n \"help.ui.studio\": \"Start UI Studio and open the browser\",\n \"help.ui.stop\": \"Stop UI Studio in this process\",\n \"ui.usage\": \"Usage: ui studio | ui stop\",\n \"ui.studio.started\": \"UI Studio started: {url}\",\n \"ui.studio.hint\": \"Press Ctrl+C to stop the server.\",\n \"ui.studio.already\": \"UI Studio is already running: {url}\",\n \"ui.studio.stopped\": \"UI Studio stopped.\",\n \"ui.studio.notRunning\": \"UI Studio is not running in this process.\",\n \"ui.studio.failed\": \"Failed to start UI Studio: {message}\",\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.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.doctor.fix\": \"Heal wiring and grant missing Beta APIs\",\n \"help.packs.doctor.allExperiments\": \"Enable all known experimental gameplay\",\n \"help.packs.doctor.experiments\": \"Show experiment toggles only\",\n \"help.packs.doctor.experimentsList\":\n \"Enable by alias, comma-separated: beta, upcoming, cameras, voxel, villager, drop3, edu\",\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 CLI (services keep running)\",\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.detach\": \"CLI detached (services keep running; use stop / daemon stop to halt)\",\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 daemon \u2500\u2500\u2500 */\n \"daemon.stopped\": \"daemon stopped\",\n \"daemon.notRunning\": \"daemon is not running\",\n \"daemon.running\": \"daemon running (PID {pid})\",\n \"daemon.usage\": \"usage: daemon [status|stop]\",\n \"daemon.connectFailed\": \"failed to connect daemon: {message}\",\n \"help.daemon\": \"Show/stop background daemon\",\n \"help.daemon.status\": \"Show whether the daemon is running\",\n \"help.daemon.stop\": \"Stop the background daemon\",\n \"palette.asIs\": \"run\",\n \"palette.fixOnly\": \"fix only\",\n \"palette.localeCurrent\": \"current\",\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.skipped\": \"{title} skipped: {reason}\",\n \"svc.startAll.started\": \"Started: {list}\",\n \"svc.startAll.skipped\": \"Skipped: {list}\",\n \"svc.startAll.failed\": \"Failed: {list}\",\n \"svc.startAll.empty\": \"Nothing to start\",\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 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.runtimeMissingAssets\": \"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 QQ bridge backend\",\n \"wizard.bdsDir\": \"BDS installation directory\",\n \"wizard.cannotCreateBds\": \"Cannot create BDS installation directory: {dir}\",\n \"wizard.qqBackend\": \"QQ bridge backend:\",\n \"wizard.qqBackend.official\": \"QQ Open Platform (official Bot)\",\n \"wizard.qqBackend.officialHint\": \"Recommended; needs AppID / AppSecret\",\n \"wizard.qqBackend.llbot\": \"LLBot (OneBot 11)\",\n \"wizard.qqBackend.llbotHint\": \"Requires local LLBot process\",\n \"wizard.qqBackend.disabled\": \"Disable QQ bridge for now\",\n \"wizard.qqBackend.disabledHint\": \"qq_enabled=false\",\n \"wizard.qqAppId\": \"QQ Open Platform AppID:\",\n \"wizard.qqAppSecret\": \"QQ Open Platform AppSecret:\",\n \"wizard.qqSandbox\": \"Use sandbox environment?\",\n \"wizard.qqGroupOpenid\": \"Group openid (optional for now):\",\n \"wizard.qqGroupOpenidHint\": \"not a classic group number\",\n \"wizard.enableLlbot\": \"Enable LLBot process takeover?\",\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 \"prompt.browseUnavailable\": \"system picker unavailable; enter path manually\",\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 bp \u2500\u2500\u2500 */\n \"bp.usage\": \"Usage: sfmc behavior-pack|bp <build|deploy>\",\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.cannotDisable\": \"Module {id} cannot be disabled (canDisable=false)\",\n \"mod.toggleLockFailed\": \"Failed to write module-lock ({id}): {message}\",\n \"mod.toggleDbSkipped\":\n \"Wrote module-lock; db-server not synced ({detail}). Memory state updates on next start db; in-game still needs mod reload / BDS restart.\",\n \"mod.enable.usage\": \"Usage: mod enable <id>\",\n \"mod.disable.usage\": \"Usage: mod disable <id>\",\n \"mod.install.usage\": \"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.betaApisMissing\":\n 'World \"{level}\" has not enabled \"Beta APIs (gametest)\", but required by:\\n{packs}\\n These packs will be blocked by BDS! Run packs doctor --fix to enable.',\n \"packs.doctor.betaApisFixed\":\n 'Successfully enabled \"Beta APIs\" (gametest = 1b) for world \"{level}\", backup created at: {backup}',\n \"packs.doctor.betaApisAlreadyOn\": 'Beta APIs is already enabled for world \"{level}\"',\n \"packs.doctor.betaApisFailed\": 'Failed to enable Beta APIs for world \"{level}\": {error}',\n \"packs.doctor.ghostPackCleaned\": \"Cleaned missing pack entry ({kind}): {uuid}\",\n \"packs.doctor.versionSynced\": \"Synced version ({kind}): {folder} list {listVer} \u2192 disk {diskVer}\",\n \"packs.doctor.permissionsMissing\":\n \"The following behavior packs depend on modules not allowed in BDS config:\\n{list}\\n Unconfigured modules will be blocked at runtime by BDS! Run packs doctor --fix to allow them.\",\n \"packs.doctor.permissionsFixed\": \"Automatically allowed script modules: {perms}\",\n \"packs.doctor.fixedSummary\": \"doctor: auto-healed {count} issue(s).\",\n \"packs.doctor.fixPrompt\": 'Run \"packs doctor --fix\" to automatically heal fixable issues.',\n \"packs.doctor.experimentsStatus\": 'World Experiments Status (World \"{level}\"):',\n \"packs.doctor.experimentsFixed\":\n 'Successfully enabled experimental features ({list}) for world \"{level}\", backup created at: {backup}',\n \"packs.doctor.experimentsAlreadyOn\": 'Requested experimental features for world \"{level}\" are already enabled',\n \"packs.doctor.experimentsFailed\": 'Failed to modify experimental features for world \"{level}\": {error}',\n \"packs.doctor.experimentsFixPrompt\":\n 'Run \"packs doctor --fix --all-experiments\" to enable all known experimental features.',\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,CA+b3C,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,CA8c3C,CAAC"}