scream-code 0.19.1 → 0.19.3

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.
@@ -133,7 +133,14 @@ const dictionaries = {
133
133
  "status.awaiting_approval": "等待批准",
134
134
  "status.awaiting_answer": "等待回答",
135
135
  "status.reconnecting_short": "重连中 {attempt}/{max}",
136
- "status.reconnecting_detail": "重连中 {attempt}/{max} · {reason} · {delay}s 后重试",
136
+ "status.collab_request": "🤝 {name} 求助:{issue}",
137
+ "status.collab_request_bare": "🤝 {name} 求助",
138
+ "status.collab_handled": "✓ Scream 已处理 {name} 的请求",
139
+ "status.cron_fired": "⏰ 定时任务已触发:{preview}",
140
+ "status.cron_fired_coalesced": "⏰ 定时任务已触发(合并 {count} 次):{preview}",
141
+ "status.cron_once": "⏰ 一次性提醒已触发:{preview}",
142
+ "status.cron_stale": "⚠️ 定时任务已过期,仍触发:{preview}",
143
+ "status.reconnecting_detail": "⚠️ 重连中 {attempt}/{max}:{reason} · {delay}s",
137
144
  "status.reason_rate_limit": "限流",
138
145
  "status.reason_server": "服务器错误",
139
146
  "status.reason_timeout": "网络超时",
@@ -196,23 +203,12 @@ const dictionaries = {
196
203
  "error.internal": "内部错误",
197
204
  "error.no_session": "没有活跃的会话。",
198
205
  "error.session_header_hint": "请在 config.toml 对应服务商下设置 session_header = \"{name}\",以提供网关要求的会话标识。",
199
- "footer.shift_tab": "shift+tab: 计划模式",
200
- "footer.model": "/model: 切换模型",
201
- "footer.ctrl_s": "ctrl+s: 中途干预",
202
- "footer.compact": "/compact: 压缩上下文",
203
- "footer.ctrl_o": "ctrl+o: 展开/收起最新详情",
204
- "footer.tasks": "/tasks: 后台任务",
205
- "footer.shift_enter": "shift+enter: 换行",
206
- "footer.init": "/init: 生成 AGENTS.md",
207
- "footer.at": "@: 提及文件",
208
- "footer.ctrl_c": "ctrl+c: 取消",
209
- "footer.skill": "/skill: 打开 Skill 中心",
210
- "footer.help": "/help: 显示命令",
211
- "footer.config": "/config: 选择并配置你常用的模型商",
212
- "footer.reminder": "让 Scream 安排任务,例如 \"2个小时后提醒我去拿快递\"",
213
- "footer.context": "上下文: {bar} ({tokens}/{maxTokens})",
214
- "footer.context_short": "上下文: {bar}",
215
- "footer.hit": "HitR",
206
+ "footer.context": "📨 Context:{bar} {percent}",
207
+ "footer.context_plain": "📨 Context:{percent}",
208
+ "footer.hit": "Hitr",
209
+ "footer.git_label": "📁 工作区Git",
210
+ "footer.line_status": "Line: {status}",
211
+ "footer.line_disconnected": "未连接",
216
212
  "footer.tasks_running": "后台任务 x{count}",
217
213
  "footer.agents_running": "后台Agent x{count}",
218
214
  "footer.subagents_working": "前台Agent x{count}",
@@ -273,13 +269,6 @@ const dictionaries = {
273
269
  "welcome.like_active": "like已激活",
274
270
  "welcome.like_inactive": "like未加载",
275
271
  "welcome.help_hint": "/help 查看帮助",
276
- "loading.ai": "Ai正在加载中...",
277
- "loading.waking": "正在唤醒核心...",
278
- "loading.press_enter": "按下 ENTER 唤醒核心",
279
- "loading.quit_hint": "按住 Ctrl+C 即可退出 Scream Code",
280
- "loading.auto_start_hint": "Ctrl+E 即可切换一键启动",
281
- "loading.auto_start_on": "Ctrl+E 即可切换一键启动(默认启动开)",
282
- "loading.auto_start_off": "Ctrl+E 即可切换一键启动(默认启动关)",
283
272
  "language.picker_title": "语言 / Language",
284
273
  "language.picker_hint": "↑↓ 选择 · Enter 确认 · Esc 取消",
285
274
  "language.unchanged": "语言未更改:\"{locale}\"。",
@@ -456,46 +445,99 @@ const dictionaries = {
456
445
  "mcp.uninstall_failed": "卸载失败: {msg}",
457
446
  "mcp.footer_hint": "Enter 安装/启停 d 卸载 Esc 返回",
458
447
  "mcp.macos_only": "仅支持 macOS",
459
- "cc.start": "启动",
460
- "cc.stop": "关闭",
461
- "cc.restart": "重启",
462
- "cc.uninstall": "卸载",
463
- "cc.start_desc": "启动 cc-connect 后台守护进程",
464
- "cc.stop_desc": "停止 cc-connect 后台守护进程",
465
- "cc.restart_desc": "重启 cc-connect 后台守护进程",
466
- "cc.uninstall_desc": "彻底卸载 cc-connect(守护进程 + 配置 + npm 包)",
467
- "cc.manage_title": "cc-connect 守护进程管理",
468
- "cc.operating": "正在{label}cc-connect...",
469
- "cc.started": "cc-connect 已{label}",
470
- "cc.start_failed": "{label}失败:{output}",
471
- "cc.will_clean": "将执行以下清理:",
472
- "cc.clean_daemon": "· 停止并卸载 {label} 守护进程",
473
- "cc.clean_config": "· 删除配置目录{detail}",
474
- "cc.current_version": "· 当前版本:{version}",
475
- "cc.install_path": "· 安装路径:{path}",
476
- "cc.clean_pm2": "· 删除 pm2 进程 + 启动项(startup.bat / schtasks)",
477
- "cc.clean_residual": "· 清理 {count} 个残留文件(launchd/systemd/pm2 日志)",
478
- "cc.not_detected": "未识别 cc-connect 安装",
479
- "cc.not_detected_desc": "未在默认 npm 全局路径下检测到 cc-connect 安装,已中止卸载。建议将此情况发送给 scream,由其指导手动清理。",
480
- "cc.uninstalling": "正在卸载 cc-connect…",
481
- "cc.stop_daemon": "停止守护进程",
482
- "cc.delete_label": "删除",
483
- "cc.clean_files": "清理残留文件",
484
- "cc.uninstall_done": "cc-connect 已彻底卸载",
485
- "cc.uninstall_partial": "部分步骤失败,详见下方提示",
486
- "cc.uninstalled": "cc-connect 已卸载",
487
- "cc.restart_hint": "建议重启 Scream Code 以确保 cc-connect 状态完全清空。",
488
- "cc.uninstall_partial_label": "卸载部分失败",
489
- "cc.residual": "残留",
490
- "cc.confirm_uninstall": "确认彻底卸载 cc-connect?",
491
- "cc.uninstall_irreversible": "此操作不可撤销,所有 cc-connect 数据将被清除",
492
- "cc.confirm_uninstall_btn": "确认卸载",
493
- "cc.uninstall_step_npm": "· 执行 npm uninstall -g cc-connect",
494
- "cc.unknown_error": "未知错误",
448
+ "line.title": "原生 IM 通道",
449
+ "line.picker_hint": "配置向导 / 启停守护进程 / 卸载",
450
+ "line.state_running": "运行中(pid {pid})",
451
+ "line.state_stopped": "未运行",
452
+ "line.opt_wizard": "配置飞书(向导)",
453
+ "line.opt_wizard_desc": "傻瓜式教程:创建应用 → 粘贴凭证 → 校验 → 启动",
454
+ "line.opt_start_desc": "后台启动 line 守护进程",
455
+ "line.opt_stop_desc": "停止 line 守护进程",
456
+ "line.opt_restart_desc": "重启 line 守护进程",
457
+ "line.opt_uninstall": "卸载",
458
+ "line.opt_uninstall_desc": "停止守护进程并删除 ~/.scream-code/line",
459
+ "line.wizard_title": "配置飞书通道",
460
+ "line.wizard_hint": "跟着向导创建飞书应用(约 3 分钟),或直接粘贴已有凭证",
461
+ "line.opt_guided": "跟着向导创建应用(推荐)",
462
+ "line.opt_guided_desc": "分步引导:创建应用 → 开权限 → 长连接 → 发布 → 粘贴凭证",
463
+ "line.fs_wizard_title": "飞书应用创建向导",
464
+ "line.fs_step_title": "第 {n} 步,共 {total} 步",
465
+ "line.fs_next": "已完成,下一步",
466
+ "line.fs_later": "随时可退出,运行 /line 从当前步骤继续",
467
+ "line.fs_goto_credentials": "去粘贴凭证",
468
+ "line.fs_step1": "① 创建应用\n\n1. 打开 https://open.feishu.cn/app 并登录(个人账号也可以)\n2. 进入「控制台」→ 点击「创建企业自建应用」\n3. 名称随意(如 scream),描述可留空",
469
+ "line.fs_step2": "② 启用机器人\n\n应用详情页 → 左侧「应用能力」→ 添加并启用「机器人」(名称、描述随意)",
470
+ "line.fs_step3": "③ 开通权限\n\n左侧「权限管理」→ 逐个搜索并开通:\n· contact:user.base:readonly(获取用户信息)\n· im:message.group_at_msg:readonly(群聊 @ 机器人)\n· im:message.p2p_msg:readonly(私聊消息)\n· im:message:send_as_bot(以应用身份发消息)\n可选:im:message.group_msg(读取群内全部消息;不开则群聊仅响应 @机器人)",
471
+ "line.fs_step4": "④ 配置事件订阅(长连接,无需公网 IP)\n\n左侧「事件与回调」→\n· 事件配置:订阅方式选「使用长连接接收事件」→ 添加事件 im.message.receive_v1(接收消息)\n· 回调配置:订阅方式同样选「使用长连接接收事件」",
472
+ "line.fs_step5": "⑤ 发布应用\n\n左侧「版本管理与发布」→ 创建版本 → 申请发布(企业自建应用管理员即可通过)",
473
+ "line.fs_step6": "⑥ 获取凭证\n\n左侧「凭证与基础信息」→ 复制 App ID(cli_ 开头)与 App Secret。\n\n下一步把它们粘贴给向导即可完成配置。",
474
+ "line.opt_manual": "手动输入凭证",
475
+ "line.opt_manual_desc": "粘贴飞书应用的 App ID 与 App Secret",
476
+ "line.opt_tutorial": "查看配置教程",
477
+ "line.opt_tutorial_desc": "从零创建飞书应用的步骤",
478
+ "line.tutorial_title": "飞书应用配置教程",
479
+ "line.tutorial": "① 打开 open.feishu.cn → 控制台 →「创建企业自建应用」(个人账号也可以)\n② 应用详情 →「添加应用能力」→ 开通「机器人」\n③「权限管理」→ 开通 im:message 相关权限(接收与发送消息)\n④「事件与回调」→ 订阅方式选择「使用长连接接收事件」(无需公网 IP)\n⑤「版本管理与发布」→ 创建版本并发布\n⑥「凭证与基础信息」→ 复制 App ID(cli_…)与 App Secret\n\n完成后重新运行 /line,选择「手动输入凭证」粘贴即可。",
480
+ "line.input_appid": "输入 App ID",
481
+ "line.input_secret": "输入 App Secret",
482
+ "line.validating": "正在校验飞书凭证…",
483
+ "line.config_saved": "配置已保存",
484
+ "line.ask_start": "配置完成,立即启动守护进程?",
485
+ "line.opt_start_now": "立即启动",
486
+ "line.opt_start_now_desc": "后台拉起守护进程,之后在飞书里直接发消息即可",
487
+ "line.not_configured": "尚未配置任何平台(飞书/微信),请先运行配置向导。",
488
+ "line.starting": "正在启动守护进程…",
489
+ "line.started": "line 守护进程已启动(pid {pid})",
490
+ "line.already_running": "line 守护进程已在运行(pid {pid})",
491
+ "line.start_failed": "启动失败:{error}",
492
+ "line.stopping": "正在停止守护进程…",
493
+ "line.stopped": "line 守护进程已停止。",
494
+ "line.not_running": "line 守护进程未在运行。",
495
+ "line.restarting": "正在重启守护进程…",
496
+ "line.config_broken": "line 配置文件有问题",
497
+ "line.confirm_uninstall": "确认卸载 line 通道?",
498
+ "line.uninstall_irreversible": "此操作不可撤销;仅删除 line 配置与日志",
499
+ "line.confirm_uninstall_btn": "卸载",
500
+ "line.will_clean": "停止守护进程并删除 ~/.scream-code/line(配置与日志)",
501
+ "line.uninstalling": "正在卸载 line 通道…",
502
+ "line.uninstalled": "line 通道已卸载",
503
+ "line.uninstall_note": "随时可用 /line 重新配置。",
504
+ "line.uninstall_failed": "卸载失败:{error}",
505
+ "registry.line_desc": "飞书/微信原生通道(配置向导 / 守护进程)",
506
+ "line.opt_wizard_weixin": "配置微信(向导)",
507
+ "line.opt_wizard_weixin_desc": "官方 ilink 机器人接口,粘贴 token 即可",
508
+ "line.weixin_wizard_title": "配置微信通道",
509
+ "line.weixin_wizard_hint": "选择配置方式",
510
+ "line.weixin_opt_qr": "扫码登录(推荐)",
511
+ "line.weixin_opt_qr_desc": "终端显示登录链接,手机微信打开确认即可,全程无需其他工具",
512
+ "line.weixin_qr_begin": "正在获取微信登录链接…",
513
+ "line.weixin_qr_title": "微信扫码登录",
514
+ "line.weixin_qr_notice": "请完成微信登录:\n\n1. 复制下面的链接\n2. 在手机微信中打开该链接(或用微信「扫一扫」识别)\n3. 在手机上确认登录\n\n{url}\n\n确认后向导会自动获取 token 并写入配置(最多等待 8 分钟)。",
515
+ "line.weixin_qr_waiting": "等待微信确认登录…(最多 8 分钟)",
516
+ "line.weixin_qr_confirmed": "登录成功,token 已获取",
517
+ "line.weixin_qr_failed": "扫码登录失败:{error}",
518
+ "line.weixin_qr_timeout": "等待超时:未在 8 分钟内确认登录,请重新发起扫码。",
519
+ "line.weixin_allow_from_note": "已自动把你的微信 ID 加入 allow_from 白名单(可编辑配置文件调整):",
520
+ "line.weixin_tutorial_title": "微信通道教程",
521
+ "line.weixin_tutorial": "微信通道使用微信官方 ilink 机器人网关(无需公网 IP、无需任何第三方工具)。\n\n完整流程(约 1 分钟):\n① 运行 /line → 选「配置微信(向导)」→ 选「扫码登录(推荐)」\n② 终端显示一个登录链接 → 复制并在手机微信中打开(或用微信「扫一扫」识别)\n③ 在手机上确认登录 → token 自动写入配置,你的微信 ID 自动加入 allow_from 白名单\n④ 回到 /line → 选「启动」→ footer 出现绿色 ◆\n⑤ 用微信给机器人发一条消息 → 完成会话激活,之后即可随时对话\n\n白名单:allow_from 未配置时任何私聊用户都能触发你的模型计费;扫码登录会自动填入你自己的 ID,如需给同事开放,编辑 ~/.scream-code/line/config.json 追加(多个用英文逗号分隔,形如 xxx@im.wechat)。\n\n已有现成 token(运营商提供)→ 选「手动输入 token」直接粘贴。",
522
+ "line.weixin_opt_manual": "手动输入 token",
523
+ "line.weixin_opt_manual_desc": "粘贴 ilink bot Bearer token",
524
+ "line.weixin_opt_tutorial": "查看微信教程",
525
+ "line.weixin_opt_tutorial_desc": "完整流程说明(扫码/白名单/激活)",
526
+ "line.weixin_input_token": "输入 ilink bot token",
527
+ "line.weixin_validating": "正在校验微信 token…",
528
+ "line.weixin_session_expired": "token 有效,会话待激活",
529
+ "line.weixin_session_expired_hint": "启动守护进程后,用允许的微信账号给机器人发一条消息即可完成会话激活。",
530
+ "line.weixin_config_saved": "微信配置已保存",
531
+ "line.platform_taken": "line 是单通道设计",
532
+ "line.platform_taken_detail": "当前已配置{taken}通道,请先运行 /line → 卸载,再配置另一个平台。",
533
+ "line.channel_feishu": "飞书",
534
+ "line.channel_weixin": "微信",
495
535
  "auth.fetching_models": "正在拉取最新模型目录...",
496
536
  "auth.catalog_fetch_failed": "拉取远程模型目录失败: {error}。请检查网络(目录站点在你的网络环境下可能无法访问)后重试,或使用 /config diy 自行配置服务商。",
497
537
  "auth.no_providers": "没有已配置的模型商。",
498
538
  "auth.deleted": "已删除模型商: {name}",
539
+ "auth.deleted_current": "已删除模型商: {name}。当前会话已保留,重新选择模型后即可继续(/config 或 /model)。",
540
+ "auth.logout_busy": "正在执行任务时无法删除模型商 — 请先按 Esc 或 Ctrl-C。",
499
541
  "auth.input_api_url": "输入服务商 API 地址",
500
542
  "auth.api_url_hint": "例如 https://api.example.com(可粘贴)",
501
543
  "auth.api_url_hint_google": "例如 https://generativelanguage.googleapis.com(官方)或代理/网关地址(可粘贴)",
@@ -599,7 +641,7 @@ const dictionaries = {
599
641
  "session.title": "会话",
600
642
  "session.loading": "正在加载会话...",
601
643
  "session_picker.empty": "未找到会话。按 Escape 关闭。",
602
- "session_picker.cc_restricted": "CC专属会话不支持切换或删除,请点击或复制下方文件路径进入手动管理",
644
+ "session_picker.cc_restricted": "通道会话不支持切换或删除,请点击或复制下方文件路径进入手动管理",
603
645
  "session_picker.batch_delete_confirm": "删除选中的 {count} 个会话?",
604
646
  "session_picker.batch_delete_hint": " 按 Enter 确认批量删除,Esc 取消",
605
647
  "session_picker.batch_delete_unavailable": "此处不支持批量删除。",
@@ -1057,16 +1099,6 @@ const dictionaries = {
1057
1099
  "transcript.tool_name": "工具 {name}:",
1058
1100
  "transcript.activated_skill": "已激活插件:{name}",
1059
1101
  "transcript.more_history": "↑ 还有 {count} 条历史消息",
1060
- "transcript.child_request": "{name} 向主 Agent 求助({type})",
1061
- "transcript.child_request_anon": "子代理向主 Agent 求助({type})",
1062
- "transcript.child_request_type_info": "补充信息",
1063
- "transcript.child_request_type_handoff": "转交工作",
1064
- "transcript.child_request_type_escalate": "上报决策",
1065
- "transcript.child_request_needs": "需要 {value}",
1066
- "transcript.child_request_expecting": "期望 {value}",
1067
- "transcript.child_request_artifacts": "产出 {value}",
1068
- "transcript.child_request_evidence": "证据 {value}",
1069
- "transcript.child_request_missing": "缺项 {value}",
1070
1102
  "compaction.done": "压缩完成",
1071
1103
  "compaction.canceled": "压缩已取消",
1072
1104
  "compaction.in_progress": "正在压缩上下文...",
@@ -1105,9 +1137,9 @@ const dictionaries = {
1105
1137
  "tc.rejected": "已拒绝",
1106
1138
  "tc.cancelled": "已取消",
1107
1139
  "tc.error_prefix": "错误:",
1108
- "dialog.cc_session_connected": "已连接 CC 会话 ({id})。",
1140
+ "dialog.cc_session_connected": "已连接通道会话({id})。",
1109
1141
  "dialog.create_session_failed": "创建会话失败",
1110
- "dialog.cc_managed": "CC 会话由 cc-connect 管理,请在聊天通道中操作。",
1142
+ "dialog.cc_managed": "该会话由 IM 通道管理,请在聊天应用里操作,或停止对应通道后删除。",
1111
1143
  "dialog.memo_injected": "已注入备忘录 #{id}",
1112
1144
  "dialog.approval_title": "Scream Code 需要审批",
1113
1145
  "dialog.question_title": "Scream Code 需要您的回答",
@@ -1147,46 +1179,6 @@ const dictionaries = {
1147
1179
  "thinking.more_lines": "...(还有 {count} 行,按 ctrl+o 展开)",
1148
1180
  "tool.more_lines": "...(还有 {count} 行)",
1149
1181
  "shell.more_lines": "...(还有 {count} 行,按 ctrl+o 展开)",
1150
- "ccconnect.note_botfather": "需先在 @BotFather 创建 bot",
1151
- "ccconnect.note_napcat": "需要 NapCat/OneBot",
1152
- "ccconnect.note_wecom": "需要公网 IP",
1153
- "ccconnect.note_matrix": "E2EE 加密,需 homeserver + access token",
1154
- "ccconnect.note_webex": "需在 developer.webex.com 创建 Bot",
1155
- "ccconnect.note_max": "需通过 @MasterBot 创建 bot",
1156
- "ccconnect.note_googlechat": "需 GCP 服务账号 JSON",
1157
- "ccconnect.note_cloud_web": "自建 IM 网关",
1158
- "ccconnect.note_yuanbao": "腾讯元宝,需 app-key:app-secret",
1159
- "ccconnect.note_tuitui": "需 app_id + app_secret",
1160
- "ccconnect.note_wps_agentspace": "需 app_id + wps_sid",
1161
- "ccconnect.new_platform_version_hint": "⚠ 该平台需要 cc-connect v1.5.0 及以上,请先更新 cc-connect",
1162
- "ccconnect.config_comment_attachment": "# 全局:允许/禁止图片和文件回传到聊天(on = 开启,off = 关闭)",
1163
- "ccconnect.reconfigured": "{name} 已配置(配置不会丢失)",
1164
- "ccconnect.config_path": "配置文件:{path}",
1165
- "ccconnect.config_done": "✔ {name} 通道配置完成",
1166
- "ccconnect.config_written": "配置文件已写入:{path}",
1167
- "ccconnect.quick_ref": "📋 常用管理指令(建议复制保存):",
1168
- "ccconnect.pm2_status": " pm2 status 查看运行状态(online = 正常)",
1169
- "ccconnect.pm2_restart": " pm2 restart cc-connect 重启服务",
1170
- "ccconnect.pm2_stop": " pm2 stop cc-connect 停止服务",
1171
- "ccconnect.pm2_logs": " pm2 logs cc-connect 查看日志",
1172
- "ccconnect.pm2_delete": " pm2 delete cc-connect 完全删除",
1173
- "ccconnect.reconfigure_warning": " ⚠ 不要再次运行 /cc-connect 并选择相同平台,否则会覆盖已有配置!",
1174
- "ccconnect.reconfigure_change": " 如需更换平台,请先删除 C:\\Users\\<用户名>\\.cc-connect\\config.toml",
1175
- "ccconnect.init_steps": "📋 初始化步骤(仅首次配置时需要,按顺序执行):",
1176
- "ccconnect.step_platform_auth": " 第 1 步:平台认证{note}",
1177
- "ccconnect.once_tag": "(一次性)",
1178
- "ccconnect.step_n": " 第 {num} 步:{label}{once}",
1179
- "ccconnect.auto_done": " ✅ 已自动完成,无需手动操作 ({command})",
1180
- "ccconnect.more_commands": "更多指令 ({method}):",
1181
- "ccconnect.attachment_hint": "💡 激活附件回传(让 Agent 能发图片和文件):",
1182
- "ccconnect.bind_setup": " 在聊天窗口发送 /bind setup",
1183
- "ccconnect.autostart_hint": "💡 开机自启已通过 Startup 文件夹中的 cc-connect-startup.bat 实现。",
1184
- "ccconnect.manual_restart": " 如需手动重启服务:pm2 resurrect",
1185
- "ccconnect.not_installed": "cc-connect 未安装",
1186
- "ccconnect.install_guide": "请先在终端运行:\n\n npm install -g cc-connect\n\n安装完成后重新输入 /cc-connect 配置平台。",
1187
- "ccconnect.already_configured": "{name} ✔ 已配置",
1188
- "ccconnect.picker_title": "cc-connect 快速通道配置",
1189
- "ccconnect.picker_hint": "选择要连接的平台,配置将自动写入 ~/.cc-connect/config.toml",
1190
1182
  "market.humanizer_name": "Humanizer AI 文本去味",
1191
1183
  "market.humanizer_desc": "去除 AI 写作痕迹:30 种 AI 模式检测 × 5 大类 × 语音校准,输出纯正人类文风",
1192
1184
  "market.contract_name": "Contract Review Pro 合同审查",
@@ -1265,6 +1257,7 @@ const dictionaries = {
1265
1257
  "dispatch.eval_suggest_tool": "文件读写工具执行未成功,请检查工作目录权限;若重试后仍失败,请反馈",
1266
1258
  "dispatch.eval_suggest_answer": "模型回答可能不完整或不正确,可尝试更换更强的模型后重试",
1267
1259
  "constant.llm_not_set": "LLM 未设置,运行 /config 自定义模型配置",
1260
+ "constant.model_detached": "当前模型已被移除,请用 /config 或 /model 重新选择。",
1268
1261
  "constant.no_active_session": "没有活动会话。运行 /config 自定义模型配置。",
1269
1262
  "constant.ctrl_d_hint": "再次按 Ctrl+D 退出",
1270
1263
  "constant.ctrl_c_hint": "再次按 Ctrl+C 退出",
@@ -1281,7 +1274,6 @@ const dictionaries = {
1281
1274
  "knowledge.ingest_summary": "总计: {chunks} chunks, {events} events, {entities} entities",
1282
1275
  "knowledge.empty_store": "知识库为空,请先用 /knowledge 摄入文档",
1283
1276
  "knowledge.web_opened": "知识图谱已打开: {url}",
1284
- "cc.clean_config.detail": " ~/.cc-connect(含会话记录、配置、日志)",
1285
1277
  "registry.auto_desc": "切换自动权限模式",
1286
1278
  "registry.yolo_desc": "切换至自动批准模式(yolo)",
1287
1279
  "registry.bot_desc": "切换无人值守 Bot 模式(bot)",
@@ -1410,18 +1402,16 @@ const dictionaries = {
1410
1402
  "registry.mcp_desc": "管理 MCP 服务器(安装/停用/卸载)",
1411
1403
  "registry.plugin_desc": "插件中心,管理插件,含激活、安装、卸载等",
1412
1404
  "registry.extension_desc": "代码扩展,激活或停用插件入口",
1413
- "registry.cc_desc": "操控你的cc(启动/关闭/重启)",
1414
- "registry.cc_connect_desc": "cc-connect 快速通道配置(需先安装)",
1415
1405
  "registry.revoke_desc": "撤回上一次对话(可指定轮数,如 /revoke 3)",
1416
1406
  "registry.fork_desc": "复制当前会话并新开分支",
1417
1407
  "registry.title_desc": "设置或显示会话标题",
1418
1408
  "config.entry_title": "配置模型服务",
1419
1409
  "config.entry_hint": "使用 ↑/↓ 选择,Enter 确认,Esc 取消",
1420
- "config.entry_quick": "快捷选择模型提供商",
1410
+ "config.entry_quick": "快速选择",
1421
1411
  "config.entry_quick_desc": "从内置目录挑选服务商与模型,自动完成配置",
1422
- "config.entry_diy": "自定义Diy配置模型商",
1412
+ "config.entry_diy": "自定义",
1423
1413
  "config.entry_diy_desc": "手动填写接口类型、地址、密钥与模型参数",
1424
- "config.entry_image": "生图能力模型配置",
1414
+ "config.entry_image": "生图配置",
1425
1415
  "config.entry_image_desc": "配置生图服务(服务商 / 地址 / 密钥 / 模型)",
1426
1416
  "registry.config_desc": "配置模型服务(快捷选择 / 自定义 / 生图)",
1427
1417
  "registry.permission_desc": "选择权限模式",
@@ -1520,7 +1510,14 @@ const dictionaries = {
1520
1510
  "status.awaiting_approval": "Awaiting approval",
1521
1511
  "status.awaiting_answer": "Awaiting answer",
1522
1512
  "status.reconnecting_short": "Retrying {attempt}/{max}",
1523
- "status.reconnecting_detail": "Reconnecting {attempt}/{max} · {reason} · retry in {delay}s",
1513
+ "status.collab_request": "🤝 {name} needs help: {issue}",
1514
+ "status.collab_request_bare": "🤝 {name} needs help",
1515
+ "status.collab_handled": "✓ Scream handled the request from {name}",
1516
+ "status.cron_fired": "⏰ Scheduled task fired: {preview}",
1517
+ "status.cron_fired_coalesced": "⏰ Scheduled task fired ({count} runs merged): {preview}",
1518
+ "status.cron_once": "⏰ One-time reminder fired: {preview}",
1519
+ "status.cron_stale": "⚠️ Scheduled task expired, fired anyway: {preview}",
1520
+ "status.reconnecting_detail": "⚠️ Reconnecting {attempt}/{max}: {reason} · {delay}s",
1524
1521
  "status.reason_rate_limit": "rate limited",
1525
1522
  "status.reason_server": "server error",
1526
1523
  "status.reason_timeout": "network timeout",
@@ -1583,23 +1580,12 @@ const dictionaries = {
1583
1580
  "error.internal": "Internal error",
1584
1581
  "error.no_session": "No active session.",
1585
1582
  "error.session_header_hint": "Set session_header = \"{name}\" under this provider in config.toml to supply the required session id.",
1586
- "footer.shift_tab": "shift+tab: Plan mode",
1587
- "footer.model": "/model: Switch model",
1588
- "footer.ctrl_s": "ctrl+s: Interrupt",
1589
- "footer.compact": "/compact: Compress context",
1590
- "footer.ctrl_o": "ctrl+o: Expand/collapse the latest detail",
1591
- "footer.tasks": "/tasks: Background tasks",
1592
- "footer.shift_enter": "shift+enter: New line",
1593
- "footer.init": "/init: Generate AGENTS.md",
1594
- "footer.at": "@: Mention files",
1595
- "footer.ctrl_c": "ctrl+c: Cancel",
1596
- "footer.skill": "/skill: Skill center",
1597
- "footer.help": "/help: Show commands",
1598
- "footer.config": "/config: Configure your model provider",
1599
- "footer.reminder": "Let Scream schedule tasks, e.g. \"remind me to pick up the package in 2 hours\"",
1600
- "footer.context": "Context: {bar} ({tokens}/{maxTokens})",
1601
- "footer.context_short": "Context: {bar}",
1602
- "footer.hit": "HitR",
1583
+ "footer.context": "📨 Context:{bar} {percent}",
1584
+ "footer.context_plain": "📨 Context:{percent}",
1585
+ "footer.hit": "Hitr",
1586
+ "footer.git_label": "📁 Workspace Git",
1587
+ "footer.line_status": "Line: {status}",
1588
+ "footer.line_disconnected": "Disconnected",
1603
1589
  "footer.tasks_running": "bg task x{count}",
1604
1590
  "footer.agents_running": "bg agent x{count}",
1605
1591
  "footer.subagents_working": "fg agent x{count}",
@@ -1660,13 +1646,6 @@ const dictionaries = {
1660
1646
  "welcome.like_active": "like active",
1661
1647
  "welcome.like_inactive": "like not loaded",
1662
1648
  "welcome.help_hint": "/help for help",
1663
- "loading.ai": "AI is loading...",
1664
- "loading.waking": "Waking core...",
1665
- "loading.press_enter": "Press ENTER to wake core",
1666
- "loading.quit_hint": "Hold Ctrl+C to quit Scream Code",
1667
- "loading.auto_start_hint": "Ctrl+E to toggle auto-start",
1668
- "loading.auto_start_on": "Ctrl+E to toggle auto-start (ON)",
1669
- "loading.auto_start_off": "Ctrl+E to toggle auto-start (OFF)",
1670
1649
  "language.picker_title": "Language / 语言",
1671
1650
  "language.picker_hint": "↑↓ Select · Enter confirm · Esc cancel",
1672
1651
  "language.unchanged": "Language unchanged: \"{locale}\".",
@@ -1843,46 +1822,99 @@ const dictionaries = {
1843
1822
  "mcp.uninstall_failed": "Uninstall failed: {msg}",
1844
1823
  "mcp.footer_hint": "Enter install/toggle d uninstall Esc back",
1845
1824
  "mcp.macos_only": "macOS only",
1846
- "cc.start": "Start",
1847
- "cc.stop": "Stop",
1848
- "cc.restart": "Restart",
1849
- "cc.uninstall": "Uninstall",
1850
- "cc.start_desc": "Start cc-connect daemon",
1851
- "cc.stop_desc": "Stop cc-connect daemon",
1852
- "cc.restart_desc": "Restart cc-connect daemon",
1853
- "cc.uninstall_desc": "Completely uninstall cc-connect (daemon + config + npm package)",
1854
- "cc.manage_title": "cc-connect Daemon Management",
1855
- "cc.operating": "{label} cc-connect...",
1856
- "cc.started": "cc-connect {label}",
1857
- "cc.start_failed": "{label} failed: {output}",
1858
- "cc.will_clean": "The following will be cleaned up:",
1859
- "cc.clean_daemon": "· Stop and uninstall {label} daemon",
1860
- "cc.clean_config": "· Delete config directory{detail}",
1861
- "cc.current_version": "· Current version: {version}",
1862
- "cc.install_path": "· Install path: {path}",
1863
- "cc.clean_pm2": "· Remove pm2 process + startup items (startup.bat / schtasks)",
1864
- "cc.clean_residual": "· Clean {count} residual files (launchd/systemd/pm2 logs)",
1865
- "cc.not_detected": "cc-connect installation not detected",
1866
- "cc.not_detected_desc": "cc-connect was not detected at the default npm global path. Uninstall aborted. Please report this to scream for manual cleanup guidance.",
1867
- "cc.uninstalling": "Uninstalling cc-connect…",
1868
- "cc.stop_daemon": "Stop daemon",
1869
- "cc.delete_label": "Delete",
1870
- "cc.clean_files": "Clean residual files",
1871
- "cc.uninstall_done": "cc-connect completely uninstalled",
1872
- "cc.uninstall_partial": "Some steps failed, see details below",
1873
- "cc.uninstalled": "cc-connect uninstalled",
1874
- "cc.restart_hint": "Restart Scream Code to ensure cc-connect state is fully cleared.",
1875
- "cc.uninstall_partial_label": "Uninstall partially failed",
1876
- "cc.residual": "Residual",
1877
- "cc.confirm_uninstall": "Completely uninstall cc-connect?",
1878
- "cc.uninstall_irreversible": "This cannot be undone. All cc-connect data will be removed.",
1879
- "cc.confirm_uninstall_btn": "Confirm Uninstall",
1880
- "cc.uninstall_step_npm": "· Run npm uninstall -g cc-connect",
1881
- "cc.unknown_error": "Unknown error",
1825
+ "line.title": "Native IM Channels",
1826
+ "line.picker_hint": "Wizard / daemon lifecycle / uninstall",
1827
+ "line.state_running": "running (pid {pid})",
1828
+ "line.state_stopped": "not running",
1829
+ "line.opt_wizard": "Configure Feishu (wizard)",
1830
+ "line.opt_wizard_desc": "Guided setup: create app → paste credentials → verify → start",
1831
+ "line.opt_start_desc": "Start the line daemon in the background",
1832
+ "line.opt_stop_desc": "Stop the line daemon",
1833
+ "line.opt_restart_desc": "Restart the line daemon",
1834
+ "line.opt_uninstall": "Uninstall",
1835
+ "line.opt_uninstall_desc": "Stop the daemon and delete ~/.scream-code/line",
1836
+ "line.wizard_title": "Configure Feishu channel",
1837
+ "line.wizard_hint": "Follow the guided setup to create a Feishu app (~3 min), or paste existing credentials",
1838
+ "line.opt_guided": "Guided app creation (recommended)",
1839
+ "line.opt_guided_desc": "Step-by-step: create app → grant scopes → long connection → release → paste credentials",
1840
+ "line.fs_wizard_title": "Feishu app setup wizard",
1841
+ "line.fs_step_title": "Step {n} of {total}",
1842
+ "line.fs_next": "Done — next step",
1843
+ "line.fs_later": "Quit any time; run /line to resume where you left off",
1844
+ "line.fs_goto_credentials": "Paste credentials now",
1845
+ "line.fs_step1": "① Create the app\n\n1. Open https://open.feishu.cn/app and sign in (personal accounts work)\n2. Console → \"Create custom app\"\n3. Any name (e.g. scream); description optional",
1846
+ "line.fs_step2": "② Enable the bot\n\nApp details → \"App capability\" in the sidebar → add & enable \"Bot\" (name/description optional)",
1847
+ "line.fs_step3": "③ Grant scopes\n\n\"Permissions\" in the sidebar → search and enable each:\n· contact:user.base:readonly (user info)\n· im:message.group_at_msg:readonly (group @bot)\n· im:message.p2p_msg:readonly (direct messages)\n· im:message:send_as_bot (send as the app)\nOptional: im:message.group_msg (read all group messages; without it groups only respond when @-mentioned)",
1848
+ "line.fs_step4": "④ Event subscription (long connection, no public IP)\n\n\"Events & callbacks\" in the sidebar →\n· Event config: subscription method = \"Use long connection to receive events\" → add event im.message.receive_v1 (receive messages)\n· Callback config: subscription method = \"Use long connection to receive events\" too",
1849
+ "line.fs_step5": "⑤ Release the app\n\n\"Version management & release\" in the sidebar → create a version → submit for release (admin approval for custom apps)",
1850
+ "line.fs_step6": "⑥ Get credentials\n\n\"Credentials & basic info\" in the sidebar → copy the App ID (starts with cli_) and App Secret.\n\nPaste them in the next step to finish.",
1851
+ "line.opt_manual": "Enter credentials manually",
1852
+ "line.opt_manual_desc": "Paste your Feishu app App ID and App Secret",
1853
+ "line.opt_tutorial": "View setup tutorial",
1854
+ "line.opt_tutorial_desc": "Steps to create a Feishu app from scratch",
1855
+ "line.tutorial_title": "Feishu app setup tutorial",
1856
+ "line.tutorial": "① Open open.feishu.cn → Console → \"Create custom app\" (personal accounts work)\n② App details → \"Add app capability\" → enable \"Bot\"\n③ \"Permissions\" → grant im:message related scopes (receive & send messages)\n④ \"Events & callbacks\" → choose \"Use long connection to receive events\" (no public IP needed)\n⑤ \"Version management\" → create and release a version\n⑥ \"Credentials\" → copy the App ID (cli_…) and App Secret\n\nThen run /line again and choose \"Enter credentials manually\".",
1857
+ "line.input_appid": "Enter App ID",
1858
+ "line.input_secret": "Enter App Secret",
1859
+ "line.validating": "Verifying Feishu credentials…",
1860
+ "line.config_saved": "Configuration saved",
1861
+ "line.ask_start": "Configured. Start the daemon now?",
1862
+ "line.opt_start_now": "Start now",
1863
+ "line.opt_start_now_desc": "Launch the daemon in the background; then just message the bot in Feishu",
1864
+ "line.not_configured": "No platform configured yet (Feishu/WeChat). Run the wizard first.",
1865
+ "line.starting": "Starting daemon…",
1866
+ "line.started": "line daemon started (pid {pid})",
1867
+ "line.already_running": "line daemon already running (pid {pid})",
1868
+ "line.start_failed": "Start failed: {error}",
1869
+ "line.stopping": "Stopping daemon…",
1870
+ "line.stopped": "line daemon stopped.",
1871
+ "line.not_running": "line daemon is not running.",
1872
+ "line.restarting": "Restarting daemon…",
1873
+ "line.config_broken": "line configuration file is broken",
1874
+ "line.confirm_uninstall": "Uninstall the line channel?",
1875
+ "line.uninstall_irreversible": "This cannot be undone; only line config and logs are removed",
1876
+ "line.confirm_uninstall_btn": "Uninstall",
1877
+ "line.will_clean": "Stop the daemon and delete ~/.scream-code/line (config & logs)",
1878
+ "line.uninstalling": "Uninstalling the line channel…",
1879
+ "line.uninstalled": "line channel uninstalled",
1880
+ "line.uninstall_note": "Re-run /line any time to set it up again.",
1881
+ "line.uninstall_failed": "Uninstall failed: {error}",
1882
+ "registry.line_desc": "Native Feishu & WeChat channels (wizard / daemon)",
1883
+ "line.opt_wizard_weixin": "Configure WeChat (wizard)",
1884
+ "line.opt_wizard_weixin_desc": "Official ilink bot gateway — just paste a token",
1885
+ "line.weixin_wizard_title": "Configure WeChat channel",
1886
+ "line.weixin_wizard_hint": "Choose how to configure",
1887
+ "line.weixin_opt_qr": "Scan to log in (recommended)",
1888
+ "line.weixin_opt_qr_desc": "The terminal shows a login link — open it in WeChat on your phone. No other tools needed",
1889
+ "line.weixin_qr_begin": "Requesting a WeChat login link…",
1890
+ "line.weixin_qr_title": "WeChat QR login",
1891
+ "line.weixin_qr_notice": "To log in with WeChat:\n\n1. Copy the link below\n2. Open it in WeChat on your phone (or recognize it with WeChat \"Scan\")\n3. Confirm the login on your phone\n\n{url}\n\nOnce confirmed, the wizard fetches the token and writes the config automatically (waits up to 8 minutes).",
1892
+ "line.weixin_qr_waiting": "Waiting for WeChat confirmation… (up to 8 minutes)",
1893
+ "line.weixin_qr_confirmed": "Login confirmed — token received",
1894
+ "line.weixin_qr_failed": "QR login failed: {error}",
1895
+ "line.weixin_qr_timeout": "Timed out: no confirmation within 8 minutes. Start the QR login again.",
1896
+ "line.weixin_allow_from_note": "Your WeChat id was added to the allow_from list (edit the config file to adjust):",
1897
+ "line.weixin_tutorial_title": "WeChat channel tutorial",
1898
+ "line.weixin_tutorial": "The WeChat channel uses WeChat's official ilink bot gateway (no public IP, no third-party tools).\n\nComplete flow (about 1 minute):\n① Run /line → \"Configure WeChat (wizard)\" → \"Scan to log in (recommended)\"\n② The terminal shows a login link → copy it and open it in WeChat on your phone (or recognize it with WeChat \"Scan\")\n③ Confirm on your phone → the token is saved automatically and your WeChat id is added to allow_from\n④ Back to /line → \"Start\" → the footer shows a green ◆\n⑤ Message the bot once on WeChat → session activation done, then just chat\n\nAllow list: with allow_from unset, ANY private-chat user could trigger your model billing. QR login auto-fills your own id; to invite colleagues, edit ~/.scream-code/line/config.json (comma-separated, like xxx@im.wechat).\n\nAlready have a token (from a carrier) → \"Enter token manually\".",
1899
+ "line.weixin_opt_manual": "Enter token manually",
1900
+ "line.weixin_opt_manual_desc": "Paste the ilink bot Bearer token",
1901
+ "line.weixin_opt_tutorial": "View WeChat tutorial",
1902
+ "line.weixin_opt_tutorial_desc": "Complete flow (QR login / allow list / activation)",
1903
+ "line.weixin_input_token": "Enter ilink bot token",
1904
+ "line.weixin_validating": "Verifying WeChat token…",
1905
+ "line.weixin_session_expired": "Token valid, session pending activation",
1906
+ "line.weixin_session_expired_hint": "After the daemon starts, message the bot once from an allowed WeChat account to activate the session.",
1907
+ "line.weixin_config_saved": "WeChat configuration saved",
1908
+ "line.platform_taken": "line is a single-channel design",
1909
+ "line.platform_taken_detail": "The {taken} channel is configured. Run /line → Uninstall first, then set up the other platform.",
1910
+ "line.channel_feishu": "Feishu",
1911
+ "line.channel_weixin": "WeChat",
1882
1912
  "auth.fetching_models": "Fetching latest model catalog...",
1883
1913
  "auth.catalog_fetch_failed": "Failed to fetch the remote model catalog: {error}. Check your network (the catalog host may be unreachable in your region) and retry, or use /config diy to set up a provider manually.",
1884
1914
  "auth.no_providers": "No model providers configured.",
1885
1915
  "auth.deleted": "Deleted provider: {name}",
1916
+ "auth.deleted_current": "Deleted provider: {name}. The current session is kept — pick a model to continue (/config or /model).",
1917
+ "auth.logout_busy": "Cannot remove a provider while a turn is running — press Esc or Ctrl-C first.",
1886
1918
  "auth.input_api_url": "Enter provider API URL",
1887
1919
  "auth.api_url_hint": "e.g. https://api.example.com (paste supported)",
1888
1920
  "auth.api_url_hint_google": "e.g. https://generativelanguage.googleapis.com (official) or a proxy/gateway URL (paste supported)",
@@ -1986,7 +2018,7 @@ const dictionaries = {
1986
2018
  "session.title": "Sessions",
1987
2019
  "session.loading": "Loading sessions...",
1988
2020
  "session_picker.empty": "No sessions found. Press Escape to close.",
1989
- "session_picker.cc_restricted": "CC sessions cannot be switched or deleted. Use the file path below to manage manually",
2021
+ "session_picker.cc_restricted": "Channel-managed sessions cannot be switched or deleted here — use the file path below to manage manually",
1990
2022
  "session_picker.batch_delete_confirm": "Delete {count} selected sessions?",
1991
2023
  "session_picker.batch_delete_hint": " Press Enter to confirm batch delete, Esc to cancel",
1992
2024
  "session_picker.batch_delete_unavailable": "Batch delete is not available here.",
@@ -2444,16 +2476,6 @@ const dictionaries = {
2444
2476
  "transcript.tool_name": "Tool {name}: ",
2445
2477
  "transcript.activated_skill": "Activated plugin: {name}",
2446
2478
  "transcript.more_history": "↑ {count} more history message(s)",
2447
- "transcript.child_request": "{name} is asking the parent agent ({type})",
2448
- "transcript.child_request_anon": "A subagent is asking the parent agent ({type})",
2449
- "transcript.child_request_type_info": "info",
2450
- "transcript.child_request_type_handoff": "handoff",
2451
- "transcript.child_request_type_escalate": "escalate",
2452
- "transcript.child_request_needs": "needs {value}",
2453
- "transcript.child_request_expecting": "expecting {value}",
2454
- "transcript.child_request_artifacts": "artifacts {value}",
2455
- "transcript.child_request_evidence": "evidence {value}",
2456
- "transcript.child_request_missing": "missing {value}",
2457
2479
  "compaction.done": "Compaction complete",
2458
2480
  "compaction.canceled": "Compaction cancelled",
2459
2481
  "compaction.in_progress": "Compacting context...",
@@ -2492,9 +2514,9 @@ const dictionaries = {
2492
2514
  "tc.rejected": "Rejected",
2493
2515
  "tc.cancelled": "Cancelled",
2494
2516
  "tc.error_prefix": "Error: ",
2495
- "dialog.cc_session_connected": "Connected to CC session ({id}).",
2517
+ "dialog.cc_session_connected": "Connected to channel session ({id}).",
2496
2518
  "dialog.create_session_failed": "Failed to create session",
2497
- "dialog.cc_managed": "CC session managed by cc-connect. Please operate from the chat channel.",
2519
+ "dialog.cc_managed": "This session is managed by an IM channel. Operate from the chat app, or stop that channel before deleting.",
2498
2520
  "dialog.memo_injected": "Injected memo #{id}",
2499
2521
  "dialog.approval_title": "Scream Code requires approval",
2500
2522
  "dialog.question_title": "Scream Code needs your answer",
@@ -2534,46 +2556,6 @@ const dictionaries = {
2534
2556
  "thinking.more_lines": "... ({count} more lines, ctrl+o to expand)",
2535
2557
  "tool.more_lines": "... ({count} more lines)",
2536
2558
  "shell.more_lines": "... ({count} more lines, ctrl+o to expand)",
2537
- "ccconnect.note_botfather": "Create a bot at @BotFather first",
2538
- "ccconnect.note_napcat": "Requires NapCat/OneBot",
2539
- "ccconnect.note_wecom": "Requires public IP",
2540
- "ccconnect.note_matrix": "E2EE encrypted, needs homeserver + access token",
2541
- "ccconnect.note_webex": "Create a bot at developer.webex.com",
2542
- "ccconnect.note_max": "Create a bot via @MasterBot",
2543
- "ccconnect.note_googlechat": "Requires GCP service account JSON",
2544
- "ccconnect.note_cloud_web": "Self-hosted IM gateway",
2545
- "ccconnect.note_yuanbao": "Tencent Yuanbao, needs app-key:app-secret",
2546
- "ccconnect.note_tuitui": "Needs app_id + app_secret",
2547
- "ccconnect.note_wps_agentspace": "Needs app_id + wps_sid",
2548
- "ccconnect.new_platform_version_hint": "⚠ This platform requires cc-connect v1.5.0 or newer. Please update cc-connect first.",
2549
- "ccconnect.config_comment_attachment": "# Global: allow/disallow image & file backhaul to chat (on = enabled, off = disabled)",
2550
- "ccconnect.reconfigured": "{name} already configured (config preserved)",
2551
- "ccconnect.config_path": "Config file: {path}",
2552
- "ccconnect.config_done": "✔ {name} channel configured",
2553
- "ccconnect.config_written": "Config file written: {path}",
2554
- "ccconnect.quick_ref": "📋 Common management commands (recommended to save):",
2555
- "ccconnect.pm2_status": " pm2 status Check status (online = OK)",
2556
- "ccconnect.pm2_restart": " pm2 restart cc-connect Restart service",
2557
- "ccconnect.pm2_stop": " pm2 stop cc-connect Stop service",
2558
- "ccconnect.pm2_logs": " pm2 logs cc-connect View logs",
2559
- "ccconnect.pm2_delete": " pm2 delete cc-connect Fully delete",
2560
- "ccconnect.reconfigure_warning": " ⚠ Do not run /cc-connect again with the same platform, or existing config will be overwritten!",
2561
- "ccconnect.reconfigure_change": " To switch platforms, delete C:\\Users\\<username>\\.cc-connect\\config.toml first",
2562
- "ccconnect.init_steps": "📋 Initialization steps (first-time setup only, follow in order):",
2563
- "ccconnect.step_platform_auth": " Step 1: Platform auth{note}",
2564
- "ccconnect.once_tag": "(one-time)",
2565
- "ccconnect.step_n": " Step {num}: {label}{once}",
2566
- "ccconnect.auto_done": " ✅ Auto-completed, no manual action needed ({command})",
2567
- "ccconnect.more_commands": "More commands ({method}):",
2568
- "ccconnect.attachment_hint": "💡 Enable attachment backhaul (let Agent send images & files):",
2569
- "ccconnect.bind_setup": " Send /bind setup in chat",
2570
- "ccconnect.autostart_hint": "💡 Auto-start on boot via cc-connect-startup.bat in Startup folder.",
2571
- "ccconnect.manual_restart": " To manually restart service: pm2 resurrect",
2572
- "ccconnect.not_installed": "cc-connect not installed",
2573
- "ccconnect.install_guide": "Run in terminal first:\n\n npm install -g cc-connect\n\nAfter installation, run /cc-connect again to configure.",
2574
- "ccconnect.already_configured": "{name} ✔ Configured",
2575
- "ccconnect.picker_title": "cc-connect Quick Channel Setup",
2576
- "ccconnect.picker_hint": "Select a platform to connect; config will be auto-written to ~/.cc-connect/config.toml",
2577
2559
  "market.humanizer_name": "Humanizer AI Text De-AI",
2578
2560
  "market.humanizer_desc": "Remove AI writing traces: 30 AI pattern detection × 5 categories × voice calibration, output pure human style",
2579
2561
  "market.contract_name": "Contract Review Pro",
@@ -2652,6 +2634,7 @@ const dictionaries = {
2652
2634
  "dispatch.eval_suggest_tool": "A file read/write tool did not complete. Please check directory permissions; if it still fails after retrying, please report it",
2653
2635
  "dispatch.eval_suggest_answer": "The model answer may be incomplete or incorrect. Try a stronger model and retry",
2654
2636
  "constant.llm_not_set": "LLM not set, run /config to configure model",
2637
+ "constant.model_detached": "The current model was removed — pick one with /config or /model.",
2655
2638
  "constant.no_active_session": "No active session. Run /config to configure model.",
2656
2639
  "constant.ctrl_d_hint": "Press Ctrl+D again to exit",
2657
2640
  "constant.ctrl_c_hint": "Press Ctrl+C again to exit",
@@ -2668,7 +2651,6 @@ const dictionaries = {
2668
2651
  "knowledge.ingest_summary": "Total: {chunks} chunks, {events} events, {entities} entities",
2669
2652
  "knowledge.empty_store": "Knowledge base is empty, please ingest documents with /knowledge first",
2670
2653
  "knowledge.web_opened": "Knowledge graph opened: {url}",
2671
- "cc.clean_config.detail": " ~/.cc-connect (includes session records, config, logs)",
2672
2654
  "registry.auto_desc": "Toggle auto permission mode",
2673
2655
  "registry.yolo_desc": "Toggle auto-approve mode (yolo)",
2674
2656
  "registry.bot_desc": "Toggle unattended bot mode (bot)",
@@ -2797,18 +2779,16 @@ const dictionaries = {
2797
2779
  "registry.mcp_desc": "Manage MCP servers (install/disable/uninstall)",
2798
2780
  "registry.plugin_desc": "Plugin center, manage plugins including activate, install, uninstall",
2799
2781
  "registry.extension_desc": "Code extensions, activate or deactivate a plugin entry point",
2800
- "registry.cc_desc": "Control your cc (start/stop/restart)",
2801
- "registry.cc_connect_desc": "cc-connect quick channel setup (requires installation)",
2802
2782
  "registry.revoke_desc": "Undo last conversation round (specify rounds, e.g. /revoke 3)",
2803
2783
  "registry.fork_desc": "Copy current session and start a new branch",
2804
2784
  "registry.title_desc": "Set or show session title",
2805
2785
  "config.entry_title": "Configure a model service",
2806
2786
  "config.entry_hint": "↑/↓ to choose · Enter to confirm · Esc to cancel",
2807
- "config.entry_quick": "Pick a model provider",
2787
+ "config.entry_quick": "Quick pick",
2808
2788
  "config.entry_quick_desc": "Choose from the built-in directory; configuration is applied automatically",
2809
- "config.entry_diy": "Custom DIY provider setup",
2789
+ "config.entry_diy": "Custom",
2810
2790
  "config.entry_diy_desc": "Enter the wire type, endpoint, key and model parameters yourself",
2811
- "config.entry_image": "Image generation model setup",
2791
+ "config.entry_image": "Image",
2812
2792
  "config.entry_image_desc": "Configure the image service (provider, URL, key, model)",
2813
2793
  "registry.config_desc": "Configure model services (quick pick / custom / image)",
2814
2794
  "registry.permission_desc": "Select permission mode",
@@ -2878,14 +2858,20 @@ const dictionaries = {
2878
2858
  };
2879
2859
  function detectSystemLocale() {
2880
2860
  const env = process.env;
2881
- const envLang = (env["LC_ALL"] || env["LC_MESSAGES"] || env["LANG"] || env["LANGUAGE"] || "").toLowerCase();
2861
+ const envLang = ([
2862
+ "LC_ALL",
2863
+ "LC_MESSAGES",
2864
+ "LANG",
2865
+ "LANGUAGE"
2866
+ ].map((name) => env[name]).find((v) => v !== void 0 && v !== "") ?? "").toLowerCase();
2882
2867
  if (envLang.startsWith("zh")) return "zh";
2883
2868
  if (envLang.length > 0) return "en";
2884
2869
  try {
2885
2870
  if (Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase().startsWith("zh")) return "zh";
2886
2871
  } catch {}
2887
2872
  if (process.platform === "win32") {
2888
- if ((env["LANG"] || "").toLowerCase().startsWith("zh")) return "zh";
2873
+ const winRaw = env["LANG"];
2874
+ if ((winRaw !== void 0 && winRaw !== "" ? winRaw : "").toLowerCase().startsWith("zh")) return "zh";
2889
2875
  }
2890
2876
  return "en";
2891
2877
  }