scream-code 0.19.2 → 0.19.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.
- package/README.md +8 -3
- package/dist/{app-EAybRJki.mjs → app-JxeaGaIc.mjs} +18869 -15109
- package/dist/{dispatch-DJaTHdEQ.mjs → dispatch-Brb_yK-J.mjs} +1844 -1476
- package/dist/{dispatch-P923Xotf.mjs → dispatch-Cqw-jMk5.mjs} +1 -1
- package/dist/main.mjs +1 -1
- package/dist/{text-input-dialog-CxeTM7z0.mjs → text-input-dialog-1CeiIQzf.mjs} +1 -1
- package/dist/{text-input-dialog-N0mGJvxm.mjs → text-input-dialog-D6PfbOws.mjs} +225 -223
- package/docs/architecture.md +67 -0
- package/docs/configuration.md +95 -0
- package/docs/line.md +156 -0
- package/docs/mcp.md +67 -0
- package/docs/sessions.md +69 -0
- package/docs/skills.md +73 -0
- package/package.json +4 -2
|
@@ -8,8 +8,8 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
|
8
8
|
import { join } from "node:path";
|
|
9
9
|
import { arch, hostname, release, type } from "node:os";
|
|
10
10
|
import { execFileSync } from "node:child_process";
|
|
11
|
-
import chalk from "chalk";
|
|
12
11
|
import { Container, Input, Key, matchesKey, truncateToWidth, visibleWidth } from "@liutod-scream/pi-tui";
|
|
12
|
+
import chalk from "chalk";
|
|
13
13
|
//#region ../../packages/config/src/identity.ts
|
|
14
14
|
/**
|
|
15
15
|
* Scream host and device identity header factories.
|
|
@@ -133,7 +133,15 @@ const dictionaries = {
|
|
|
133
133
|
"status.awaiting_approval": "等待批准",
|
|
134
134
|
"status.awaiting_answer": "等待回答",
|
|
135
135
|
"status.reconnecting_short": "重连中 {attempt}/{max}",
|
|
136
|
-
"status.
|
|
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.cron_empty": "⚠️ 定时任务执行结束但没有输出:{preview}",
|
|
144
|
+
"status.reconnecting_detail": "⚠️ 重连中 {attempt}/{max}:{reason} · {delay}s",
|
|
137
145
|
"status.reason_rate_limit": "限流",
|
|
138
146
|
"status.reason_server": "服务器错误",
|
|
139
147
|
"status.reason_timeout": "网络超时",
|
|
@@ -196,23 +204,12 @@ const dictionaries = {
|
|
|
196
204
|
"error.internal": "内部错误",
|
|
197
205
|
"error.no_session": "没有活跃的会话。",
|
|
198
206
|
"error.session_header_hint": "请在 config.toml 对应服务商下设置 session_header = \"{name}\",以提供网关要求的会话标识。",
|
|
199
|
-
"footer.
|
|
200
|
-
"footer.
|
|
201
|
-
"footer.
|
|
202
|
-
"footer.
|
|
203
|
-
"footer.
|
|
204
|
-
"footer.
|
|
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",
|
|
207
|
+
"footer.context": "📨 Context:{bar} {percent}",
|
|
208
|
+
"footer.context_plain": "📨 Context:{percent}",
|
|
209
|
+
"footer.hit": "Hitr",
|
|
210
|
+
"footer.git_label": "📁 工作区Git",
|
|
211
|
+
"footer.line_status": "Line: {status}",
|
|
212
|
+
"footer.line_disconnected": "未连接",
|
|
216
213
|
"footer.tasks_running": "后台任务 x{count}",
|
|
217
214
|
"footer.agents_running": "后台Agent x{count}",
|
|
218
215
|
"footer.subagents_working": "前台Agent x{count}",
|
|
@@ -449,42 +446,93 @@ const dictionaries = {
|
|
|
449
446
|
"mcp.uninstall_failed": "卸载失败: {msg}",
|
|
450
447
|
"mcp.footer_hint": "Enter 安装/启停 d 卸载 Esc 返回",
|
|
451
448
|
"mcp.macos_only": "仅支持 macOS",
|
|
452
|
-
"
|
|
453
|
-
"
|
|
454
|
-
"
|
|
455
|
-
"
|
|
456
|
-
"
|
|
457
|
-
"
|
|
458
|
-
"
|
|
459
|
-
"
|
|
460
|
-
"
|
|
461
|
-
"
|
|
462
|
-
"
|
|
463
|
-
"
|
|
464
|
-
"
|
|
465
|
-
"
|
|
466
|
-
"
|
|
467
|
-
"
|
|
468
|
-
"
|
|
469
|
-
"
|
|
470
|
-
"
|
|
471
|
-
"
|
|
472
|
-
"
|
|
473
|
-
"
|
|
474
|
-
"
|
|
475
|
-
"
|
|
476
|
-
"
|
|
477
|
-
"
|
|
478
|
-
"
|
|
479
|
-
"
|
|
480
|
-
"
|
|
481
|
-
"
|
|
482
|
-
"
|
|
483
|
-
"
|
|
484
|
-
"
|
|
485
|
-
"
|
|
486
|
-
"
|
|
487
|
-
"
|
|
449
|
+
"line.title": "原生 IM 通道",
|
|
450
|
+
"line.picker_hint": "配置向导 / 启停守护进程 / 卸载",
|
|
451
|
+
"line.state_running": "运行中(pid {pid})",
|
|
452
|
+
"line.state_stopped": "未运行",
|
|
453
|
+
"line.opt_wizard": "配置飞书(向导)",
|
|
454
|
+
"line.opt_wizard_desc": "傻瓜式教程:创建应用 → 粘贴凭证 → 校验 → 启动",
|
|
455
|
+
"line.opt_start_desc": "后台启动 line 守护进程",
|
|
456
|
+
"line.opt_stop_desc": "停止 line 守护进程",
|
|
457
|
+
"line.opt_restart_desc": "重启 line 守护进程",
|
|
458
|
+
"line.opt_uninstall": "卸载",
|
|
459
|
+
"line.opt_uninstall_desc": "停止守护进程并删除 ~/.scream-code/line",
|
|
460
|
+
"line.wizard_title": "配置飞书通道",
|
|
461
|
+
"line.wizard_hint": "跟着向导创建飞书应用(约 3 分钟),或直接粘贴已有凭证",
|
|
462
|
+
"line.opt_guided": "跟着向导创建应用(推荐)",
|
|
463
|
+
"line.opt_guided_desc": "分步引导:创建应用 → 开权限 → 长连接 → 发布 → 粘贴凭证",
|
|
464
|
+
"line.fs_wizard_title": "飞书应用创建向导",
|
|
465
|
+
"line.fs_step_title": "第 {n} 步,共 {total} 步",
|
|
466
|
+
"line.fs_next": "已完成,下一步",
|
|
467
|
+
"line.fs_later": "随时可退出,运行 /line 从当前步骤继续",
|
|
468
|
+
"line.fs_goto_credentials": "去粘贴凭证",
|
|
469
|
+
"line.fs_step1": "① 创建应用\n\n1. 打开 https://open.feishu.cn/app 并登录(个人账号也可以)\n2. 进入「控制台」→ 点击「创建企业自建应用」\n3. 名称随意(如 scream),描述可留空",
|
|
470
|
+
"line.fs_step2": "② 启用机器人\n\n应用详情页 → 左侧「应用能力」→ 添加并启用「机器人」(名称、描述随意)",
|
|
471
|
+
"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(读取群内全部消息;不开则群聊仅响应 @机器人)",
|
|
472
|
+
"line.fs_step4": "④ 配置事件订阅(长连接,无需公网 IP)\n\n左侧「事件与回调」→\n· 事件配置:订阅方式选「使用长连接接收事件」→ 添加事件 im.message.receive_v1(接收消息)\n· 回调配置:订阅方式同样选「使用长连接接收事件」",
|
|
473
|
+
"line.fs_step5": "⑤ 发布应用\n\n左侧「版本管理与发布」→ 创建版本 → 申请发布(企业自建应用管理员即可通过)",
|
|
474
|
+
"line.fs_step6": "⑥ 获取凭证\n\n左侧「凭证与基础信息」→ 复制 App ID(cli_ 开头)与 App Secret。\n\n下一步把它们粘贴给向导即可完成配置。",
|
|
475
|
+
"line.opt_manual": "手动输入凭证",
|
|
476
|
+
"line.opt_manual_desc": "粘贴飞书应用的 App ID 与 App Secret",
|
|
477
|
+
"line.opt_tutorial": "查看配置教程",
|
|
478
|
+
"line.opt_tutorial_desc": "从零创建飞书应用的步骤",
|
|
479
|
+
"line.tutorial_title": "飞书应用配置教程",
|
|
480
|
+
"line.tutorial": "① 打开 open.feishu.cn → 控制台 →「创建企业自建应用」(个人账号也可以)\n② 应用详情 →「添加应用能力」→ 开通「机器人」\n③「权限管理」→ 开通 im:message 相关权限(接收与发送消息)\n④「事件与回调」→ 订阅方式选择「使用长连接接收事件」(无需公网 IP)\n⑤「版本管理与发布」→ 创建版本并发布\n⑥「凭证与基础信息」→ 复制 App ID(cli_…)与 App Secret\n\n完成后重新运行 /line,选择「手动输入凭证」粘贴即可。",
|
|
481
|
+
"line.input_appid": "输入 App ID",
|
|
482
|
+
"line.input_secret": "输入 App Secret",
|
|
483
|
+
"line.validating": "正在校验飞书凭证…",
|
|
484
|
+
"line.config_saved": "配置已保存",
|
|
485
|
+
"line.ask_start": "配置完成,立即启动守护进程?",
|
|
486
|
+
"line.opt_start_now": "立即启动",
|
|
487
|
+
"line.opt_start_now_desc": "后台拉起守护进程,之后在飞书里直接发消息即可",
|
|
488
|
+
"line.not_configured": "尚未配置任何平台(飞书/微信),请先运行配置向导。",
|
|
489
|
+
"line.starting": "正在启动守护进程…",
|
|
490
|
+
"line.started": "line 守护进程已启动(pid {pid})",
|
|
491
|
+
"line.already_running": "line 守护进程已在运行(pid {pid})",
|
|
492
|
+
"line.start_failed": "启动失败:{error}",
|
|
493
|
+
"line.stopping": "正在停止守护进程…",
|
|
494
|
+
"line.stopped": "line 守护进程已停止。",
|
|
495
|
+
"line.not_running": "line 守护进程未在运行。",
|
|
496
|
+
"line.restarting": "正在重启守护进程…",
|
|
497
|
+
"line.config_broken": "line 配置文件有问题",
|
|
498
|
+
"line.confirm_uninstall": "确认卸载 line 通道?",
|
|
499
|
+
"line.uninstall_irreversible": "此操作不可撤销;仅删除 line 配置与日志",
|
|
500
|
+
"line.confirm_uninstall_btn": "卸载",
|
|
501
|
+
"line.will_clean": "停止守护进程并删除 ~/.scream-code/line(配置与日志)",
|
|
502
|
+
"line.uninstalling": "正在卸载 line 通道…",
|
|
503
|
+
"line.uninstalled": "line 通道已卸载",
|
|
504
|
+
"line.uninstall_note": "随时可用 /line 重新配置。",
|
|
505
|
+
"line.uninstall_failed": "卸载失败:{error}",
|
|
506
|
+
"registry.line_desc": "飞书/微信原生通道(配置向导 / 守护进程)",
|
|
507
|
+
"line.opt_wizard_weixin": "配置微信(向导)",
|
|
508
|
+
"line.opt_wizard_weixin_desc": "官方 ilink 机器人接口,粘贴 token 即可",
|
|
509
|
+
"line.weixin_wizard_title": "配置微信通道",
|
|
510
|
+
"line.weixin_wizard_hint": "选择配置方式",
|
|
511
|
+
"line.weixin_opt_qr": "扫码登录(推荐)",
|
|
512
|
+
"line.weixin_opt_qr_desc": "终端显示登录链接,手机微信打开确认即可,全程无需其他工具",
|
|
513
|
+
"line.weixin_qr_begin": "正在获取微信登录链接…",
|
|
514
|
+
"line.weixin_qr_title": "微信扫码登录",
|
|
515
|
+
"line.weixin_qr_notice": "请完成微信登录:\n\n1. 复制下面的链接\n2. 在手机微信中打开该链接(或用微信「扫一扫」识别)\n3. 在手机上确认登录\n\n{url}\n\n确认后向导会自动获取 token 并写入配置(最多等待 8 分钟)。",
|
|
516
|
+
"line.weixin_qr_waiting": "等待微信确认登录…(最多 8 分钟)",
|
|
517
|
+
"line.weixin_qr_confirmed": "登录成功,token 已获取",
|
|
518
|
+
"line.weixin_qr_failed": "扫码登录失败:{error}",
|
|
519
|
+
"line.weixin_qr_timeout": "等待超时:未在 8 分钟内确认登录,请重新发起扫码。",
|
|
520
|
+
"line.weixin_allow_from_note": "已自动把你的微信 ID 加入 allow_from 白名单(可编辑配置文件调整):",
|
|
521
|
+
"line.weixin_tutorial_title": "微信通道教程",
|
|
522
|
+
"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」直接粘贴。",
|
|
523
|
+
"line.weixin_opt_manual": "手动输入 token",
|
|
524
|
+
"line.weixin_opt_manual_desc": "粘贴 ilink bot Bearer token",
|
|
525
|
+
"line.weixin_opt_tutorial": "查看微信教程",
|
|
526
|
+
"line.weixin_opt_tutorial_desc": "完整流程说明(扫码/白名单/激活)",
|
|
527
|
+
"line.weixin_input_token": "输入 ilink bot token",
|
|
528
|
+
"line.weixin_validating": "正在校验微信 token…",
|
|
529
|
+
"line.weixin_session_expired": "token 有效,会话待激活",
|
|
530
|
+
"line.weixin_session_expired_hint": "启动守护进程后,用允许的微信账号给机器人发一条消息即可完成会话激活。",
|
|
531
|
+
"line.weixin_config_saved": "微信配置已保存",
|
|
532
|
+
"line.platform_taken": "line 是单通道设计",
|
|
533
|
+
"line.platform_taken_detail": "当前已配置{taken}通道,请先运行 /line → 卸载,再配置另一个平台。",
|
|
534
|
+
"line.channel_feishu": "飞书",
|
|
535
|
+
"line.channel_weixin": "微信",
|
|
488
536
|
"auth.fetching_models": "正在拉取最新模型目录...",
|
|
489
537
|
"auth.catalog_fetch_failed": "拉取远程模型目录失败: {error}。请检查网络(目录站点在你的网络环境下可能无法访问)后重试,或使用 /config diy 自行配置服务商。",
|
|
490
538
|
"auth.no_providers": "没有已配置的模型商。",
|
|
@@ -594,7 +642,7 @@ const dictionaries = {
|
|
|
594
642
|
"session.title": "会话",
|
|
595
643
|
"session.loading": "正在加载会话...",
|
|
596
644
|
"session_picker.empty": "未找到会话。按 Escape 关闭。",
|
|
597
|
-
"session_picker.cc_restricted": "
|
|
645
|
+
"session_picker.cc_restricted": "通道会话不支持切换或删除,请点击或复制下方文件路径进入手动管理",
|
|
598
646
|
"session_picker.batch_delete_confirm": "删除选中的 {count} 个会话?",
|
|
599
647
|
"session_picker.batch_delete_hint": " 按 Enter 确认批量删除,Esc 取消",
|
|
600
648
|
"session_picker.batch_delete_unavailable": "此处不支持批量删除。",
|
|
@@ -1052,16 +1100,6 @@ const dictionaries = {
|
|
|
1052
1100
|
"transcript.tool_name": "工具 {name}:",
|
|
1053
1101
|
"transcript.activated_skill": "已激活插件:{name}",
|
|
1054
1102
|
"transcript.more_history": "↑ 还有 {count} 条历史消息",
|
|
1055
|
-
"transcript.child_request": "{name} 向主 Agent 求助({type})",
|
|
1056
|
-
"transcript.child_request_anon": "子代理向主 Agent 求助({type})",
|
|
1057
|
-
"transcript.child_request_type_info": "补充信息",
|
|
1058
|
-
"transcript.child_request_type_handoff": "转交工作",
|
|
1059
|
-
"transcript.child_request_type_escalate": "上报决策",
|
|
1060
|
-
"transcript.child_request_needs": "需要 {value}",
|
|
1061
|
-
"transcript.child_request_expecting": "期望 {value}",
|
|
1062
|
-
"transcript.child_request_artifacts": "产出 {value}",
|
|
1063
|
-
"transcript.child_request_evidence": "证据 {value}",
|
|
1064
|
-
"transcript.child_request_missing": "缺项 {value}",
|
|
1065
1103
|
"compaction.done": "压缩完成",
|
|
1066
1104
|
"compaction.canceled": "压缩已取消",
|
|
1067
1105
|
"compaction.in_progress": "正在压缩上下文...",
|
|
@@ -1100,9 +1138,9 @@ const dictionaries = {
|
|
|
1100
1138
|
"tc.rejected": "已拒绝",
|
|
1101
1139
|
"tc.cancelled": "已取消",
|
|
1102
1140
|
"tc.error_prefix": "错误:",
|
|
1103
|
-
"dialog.cc_session_connected": "
|
|
1141
|
+
"dialog.cc_session_connected": "已连接通道会话({id})。",
|
|
1104
1142
|
"dialog.create_session_failed": "创建会话失败",
|
|
1105
|
-
"dialog.cc_managed": "
|
|
1143
|
+
"dialog.cc_managed": "该会话由 IM 通道管理,请在聊天应用里操作,或停止对应通道后删除。",
|
|
1106
1144
|
"dialog.memo_injected": "已注入备忘录 #{id}",
|
|
1107
1145
|
"dialog.approval_title": "Scream Code 需要审批",
|
|
1108
1146
|
"dialog.question_title": "Scream Code 需要您的回答",
|
|
@@ -1142,46 +1180,6 @@ const dictionaries = {
|
|
|
1142
1180
|
"thinking.more_lines": "...(还有 {count} 行,按 ctrl+o 展开)",
|
|
1143
1181
|
"tool.more_lines": "...(还有 {count} 行)",
|
|
1144
1182
|
"shell.more_lines": "...(还有 {count} 行,按 ctrl+o 展开)",
|
|
1145
|
-
"ccconnect.note_botfather": "需先在 @BotFather 创建 bot",
|
|
1146
|
-
"ccconnect.note_napcat": "需要 NapCat/OneBot",
|
|
1147
|
-
"ccconnect.note_wecom": "需要公网 IP",
|
|
1148
|
-
"ccconnect.note_matrix": "E2EE 加密,需 homeserver + access token",
|
|
1149
|
-
"ccconnect.note_webex": "需在 developer.webex.com 创建 Bot",
|
|
1150
|
-
"ccconnect.note_max": "需通过 @MasterBot 创建 bot",
|
|
1151
|
-
"ccconnect.note_googlechat": "需 GCP 服务账号 JSON",
|
|
1152
|
-
"ccconnect.note_cloud_web": "自建 IM 网关",
|
|
1153
|
-
"ccconnect.note_yuanbao": "腾讯元宝,需 app-key:app-secret",
|
|
1154
|
-
"ccconnect.note_tuitui": "需 app_id + app_secret",
|
|
1155
|
-
"ccconnect.note_wps_agentspace": "需 app_id + wps_sid",
|
|
1156
|
-
"ccconnect.new_platform_version_hint": "⚠ 该平台需要 cc-connect v1.5.0 及以上,请先更新 cc-connect",
|
|
1157
|
-
"ccconnect.config_comment_attachment": "# 全局:允许/禁止图片和文件回传到聊天(on = 开启,off = 关闭)",
|
|
1158
|
-
"ccconnect.reconfigured": "{name} 已配置(配置不会丢失)",
|
|
1159
|
-
"ccconnect.config_path": "配置文件:{path}",
|
|
1160
|
-
"ccconnect.config_done": "✔ {name} 通道配置完成",
|
|
1161
|
-
"ccconnect.config_written": "配置文件已写入:{path}",
|
|
1162
|
-
"ccconnect.quick_ref": "📋 常用管理指令(建议复制保存):",
|
|
1163
|
-
"ccconnect.pm2_status": " pm2 status 查看运行状态(online = 正常)",
|
|
1164
|
-
"ccconnect.pm2_restart": " pm2 restart cc-connect 重启服务",
|
|
1165
|
-
"ccconnect.pm2_stop": " pm2 stop cc-connect 停止服务",
|
|
1166
|
-
"ccconnect.pm2_logs": " pm2 logs cc-connect 查看日志",
|
|
1167
|
-
"ccconnect.pm2_delete": " pm2 delete cc-connect 完全删除",
|
|
1168
|
-
"ccconnect.reconfigure_warning": " ⚠ 不要再次运行 /cc-connect 并选择相同平台,否则会覆盖已有配置!",
|
|
1169
|
-
"ccconnect.reconfigure_change": " 如需更换平台,请先删除 C:\\Users\\<用户名>\\.cc-connect\\config.toml",
|
|
1170
|
-
"ccconnect.init_steps": "📋 初始化步骤(仅首次配置时需要,按顺序执行):",
|
|
1171
|
-
"ccconnect.step_platform_auth": " 第 1 步:平台认证{note}",
|
|
1172
|
-
"ccconnect.once_tag": "(一次性)",
|
|
1173
|
-
"ccconnect.step_n": " 第 {num} 步:{label}{once}",
|
|
1174
|
-
"ccconnect.auto_done": " ✅ 已自动完成,无需手动操作 ({command})",
|
|
1175
|
-
"ccconnect.more_commands": "更多指令 ({method}):",
|
|
1176
|
-
"ccconnect.attachment_hint": "💡 激活附件回传(让 Agent 能发图片和文件):",
|
|
1177
|
-
"ccconnect.bind_setup": " 在聊天窗口发送 /bind setup",
|
|
1178
|
-
"ccconnect.autostart_hint": "💡 开机自启已通过 Startup 文件夹中的 cc-connect-startup.bat 实现。",
|
|
1179
|
-
"ccconnect.manual_restart": " 如需手动重启服务:pm2 resurrect",
|
|
1180
|
-
"ccconnect.not_installed": "cc-connect 未安装",
|
|
1181
|
-
"ccconnect.install_guide": "请先在终端运行:\n\n npm install -g cc-connect\n\n安装完成后重新输入 /cc-connect 配置平台。",
|
|
1182
|
-
"ccconnect.already_configured": "{name} ✔ 已配置",
|
|
1183
|
-
"ccconnect.picker_title": "cc-connect 快速通道配置",
|
|
1184
|
-
"ccconnect.picker_hint": "选择要连接的平台,配置将自动写入 ~/.cc-connect/config.toml",
|
|
1185
1183
|
"market.humanizer_name": "Humanizer AI 文本去味",
|
|
1186
1184
|
"market.humanizer_desc": "去除 AI 写作痕迹:30 种 AI 模式检测 × 5 大类 × 语音校准,输出纯正人类文风",
|
|
1187
1185
|
"market.contract_name": "Contract Review Pro 合同审查",
|
|
@@ -1277,7 +1275,6 @@ const dictionaries = {
|
|
|
1277
1275
|
"knowledge.ingest_summary": "总计: {chunks} chunks, {events} events, {entities} entities",
|
|
1278
1276
|
"knowledge.empty_store": "知识库为空,请先用 /knowledge 摄入文档",
|
|
1279
1277
|
"knowledge.web_opened": "知识图谱已打开: {url}",
|
|
1280
|
-
"cc.clean_config.detail": " ~/.cc-connect(含会话记录、配置、日志)",
|
|
1281
1278
|
"registry.auto_desc": "切换自动权限模式",
|
|
1282
1279
|
"registry.yolo_desc": "切换至自动批准模式(yolo)",
|
|
1283
1280
|
"registry.bot_desc": "切换无人值守 Bot 模式(bot)",
|
|
@@ -1365,6 +1362,9 @@ const dictionaries = {
|
|
|
1365
1362
|
"cron.kind_recurring": "重复",
|
|
1366
1363
|
"cron.kind_once": "一次性",
|
|
1367
1364
|
"cron.stale": "已过期",
|
|
1365
|
+
"cron.silent": "静默",
|
|
1366
|
+
"cron.mute": "静音",
|
|
1367
|
+
"cron.last_error": "上次失败:{error}",
|
|
1368
1368
|
"cron.sched_5m": "每 5 分钟",
|
|
1369
1369
|
"cron.sched_hourly": "每小时",
|
|
1370
1370
|
"cron.sched_daily9": "每天 09:00",
|
|
@@ -1406,8 +1406,6 @@ const dictionaries = {
|
|
|
1406
1406
|
"registry.mcp_desc": "管理 MCP 服务器(安装/停用/卸载)",
|
|
1407
1407
|
"registry.plugin_desc": "插件中心,管理插件,含激活、安装、卸载等",
|
|
1408
1408
|
"registry.extension_desc": "代码扩展,激活或停用插件入口",
|
|
1409
|
-
"registry.cc_desc": "操控你的cc(启动/关闭/重启)",
|
|
1410
|
-
"registry.cc_connect_desc": "cc-connect 快速通道配置(需先安装)",
|
|
1411
1409
|
"registry.revoke_desc": "撤回上一次对话(可指定轮数,如 /revoke 3)",
|
|
1412
1410
|
"registry.fork_desc": "复制当前会话并新开分支",
|
|
1413
1411
|
"registry.title_desc": "设置或显示会话标题",
|
|
@@ -1516,7 +1514,15 @@ const dictionaries = {
|
|
|
1516
1514
|
"status.awaiting_approval": "Awaiting approval",
|
|
1517
1515
|
"status.awaiting_answer": "Awaiting answer",
|
|
1518
1516
|
"status.reconnecting_short": "Retrying {attempt}/{max}",
|
|
1519
|
-
"status.
|
|
1517
|
+
"status.collab_request": "🤝 {name} needs help: {issue}",
|
|
1518
|
+
"status.collab_request_bare": "🤝 {name} needs help",
|
|
1519
|
+
"status.collab_handled": "✓ Scream handled the request from {name}",
|
|
1520
|
+
"status.cron_fired": "⏰ Scheduled task fired: {preview}",
|
|
1521
|
+
"status.cron_fired_coalesced": "⏰ Scheduled task fired ({count} runs merged): {preview}",
|
|
1522
|
+
"status.cron_once": "⏰ One-time reminder fired: {preview}",
|
|
1523
|
+
"status.cron_stale": "⚠️ Scheduled task expired, fired anyway: {preview}",
|
|
1524
|
+
"status.cron_empty": "⚠️ Scheduled task finished with no output: {preview}",
|
|
1525
|
+
"status.reconnecting_detail": "⚠️ Reconnecting {attempt}/{max}: {reason} · {delay}s",
|
|
1520
1526
|
"status.reason_rate_limit": "rate limited",
|
|
1521
1527
|
"status.reason_server": "server error",
|
|
1522
1528
|
"status.reason_timeout": "network timeout",
|
|
@@ -1579,23 +1585,12 @@ const dictionaries = {
|
|
|
1579
1585
|
"error.internal": "Internal error",
|
|
1580
1586
|
"error.no_session": "No active session.",
|
|
1581
1587
|
"error.session_header_hint": "Set session_header = \"{name}\" under this provider in config.toml to supply the required session id.",
|
|
1582
|
-
"footer.
|
|
1583
|
-
"footer.
|
|
1584
|
-
"footer.
|
|
1585
|
-
"footer.
|
|
1586
|
-
"footer.
|
|
1587
|
-
"footer.
|
|
1588
|
-
"footer.shift_enter": "shift+enter: New line",
|
|
1589
|
-
"footer.init": "/init: Generate AGENTS.md",
|
|
1590
|
-
"footer.at": "@: Mention files",
|
|
1591
|
-
"footer.ctrl_c": "ctrl+c: Cancel",
|
|
1592
|
-
"footer.skill": "/skill: Skill center",
|
|
1593
|
-
"footer.help": "/help: Show commands",
|
|
1594
|
-
"footer.config": "/config: Configure your model provider",
|
|
1595
|
-
"footer.reminder": "Let Scream schedule tasks, e.g. \"remind me to pick up the package in 2 hours\"",
|
|
1596
|
-
"footer.context": "Context: {bar} ({tokens}/{maxTokens})",
|
|
1597
|
-
"footer.context_short": "Context: {bar}",
|
|
1598
|
-
"footer.hit": "HitR",
|
|
1588
|
+
"footer.context": "📨 Context:{bar} {percent}",
|
|
1589
|
+
"footer.context_plain": "📨 Context:{percent}",
|
|
1590
|
+
"footer.hit": "Hitr",
|
|
1591
|
+
"footer.git_label": "📁 Workspace Git",
|
|
1592
|
+
"footer.line_status": "Line: {status}",
|
|
1593
|
+
"footer.line_disconnected": "Disconnected",
|
|
1599
1594
|
"footer.tasks_running": "bg task x{count}",
|
|
1600
1595
|
"footer.agents_running": "bg agent x{count}",
|
|
1601
1596
|
"footer.subagents_working": "fg agent x{count}",
|
|
@@ -1832,42 +1827,93 @@ const dictionaries = {
|
|
|
1832
1827
|
"mcp.uninstall_failed": "Uninstall failed: {msg}",
|
|
1833
1828
|
"mcp.footer_hint": "Enter install/toggle d uninstall Esc back",
|
|
1834
1829
|
"mcp.macos_only": "macOS only",
|
|
1835
|
-
"
|
|
1836
|
-
"
|
|
1837
|
-
"
|
|
1838
|
-
"
|
|
1839
|
-
"
|
|
1840
|
-
"
|
|
1841
|
-
"
|
|
1842
|
-
"
|
|
1843
|
-
"
|
|
1844
|
-
"
|
|
1845
|
-
"
|
|
1846
|
-
"
|
|
1847
|
-
"
|
|
1848
|
-
"
|
|
1849
|
-
"
|
|
1850
|
-
"
|
|
1851
|
-
"
|
|
1852
|
-
"
|
|
1853
|
-
"
|
|
1854
|
-
"
|
|
1855
|
-
"
|
|
1856
|
-
"
|
|
1857
|
-
"
|
|
1858
|
-
"
|
|
1859
|
-
"
|
|
1860
|
-
"
|
|
1861
|
-
"
|
|
1862
|
-
"
|
|
1863
|
-
"
|
|
1864
|
-
"
|
|
1865
|
-
"
|
|
1866
|
-
"
|
|
1867
|
-
"
|
|
1868
|
-
"
|
|
1869
|
-
"
|
|
1870
|
-
"
|
|
1830
|
+
"line.title": "Native IM Channels",
|
|
1831
|
+
"line.picker_hint": "Wizard / daemon lifecycle / uninstall",
|
|
1832
|
+
"line.state_running": "running (pid {pid})",
|
|
1833
|
+
"line.state_stopped": "not running",
|
|
1834
|
+
"line.opt_wizard": "Configure Feishu (wizard)",
|
|
1835
|
+
"line.opt_wizard_desc": "Guided setup: create app → paste credentials → verify → start",
|
|
1836
|
+
"line.opt_start_desc": "Start the line daemon in the background",
|
|
1837
|
+
"line.opt_stop_desc": "Stop the line daemon",
|
|
1838
|
+
"line.opt_restart_desc": "Restart the line daemon",
|
|
1839
|
+
"line.opt_uninstall": "Uninstall",
|
|
1840
|
+
"line.opt_uninstall_desc": "Stop the daemon and delete ~/.scream-code/line",
|
|
1841
|
+
"line.wizard_title": "Configure Feishu channel",
|
|
1842
|
+
"line.wizard_hint": "Follow the guided setup to create a Feishu app (~3 min), or paste existing credentials",
|
|
1843
|
+
"line.opt_guided": "Guided app creation (recommended)",
|
|
1844
|
+
"line.opt_guided_desc": "Step-by-step: create app → grant scopes → long connection → release → paste credentials",
|
|
1845
|
+
"line.fs_wizard_title": "Feishu app setup wizard",
|
|
1846
|
+
"line.fs_step_title": "Step {n} of {total}",
|
|
1847
|
+
"line.fs_next": "Done — next step",
|
|
1848
|
+
"line.fs_later": "Quit any time; run /line to resume where you left off",
|
|
1849
|
+
"line.fs_goto_credentials": "Paste credentials now",
|
|
1850
|
+
"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",
|
|
1851
|
+
"line.fs_step2": "② Enable the bot\n\nApp details → \"App capability\" in the sidebar → add & enable \"Bot\" (name/description optional)",
|
|
1852
|
+
"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)",
|
|
1853
|
+
"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",
|
|
1854
|
+
"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)",
|
|
1855
|
+
"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.",
|
|
1856
|
+
"line.opt_manual": "Enter credentials manually",
|
|
1857
|
+
"line.opt_manual_desc": "Paste your Feishu app App ID and App Secret",
|
|
1858
|
+
"line.opt_tutorial": "View setup tutorial",
|
|
1859
|
+
"line.opt_tutorial_desc": "Steps to create a Feishu app from scratch",
|
|
1860
|
+
"line.tutorial_title": "Feishu app setup tutorial",
|
|
1861
|
+
"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\".",
|
|
1862
|
+
"line.input_appid": "Enter App ID",
|
|
1863
|
+
"line.input_secret": "Enter App Secret",
|
|
1864
|
+
"line.validating": "Verifying Feishu credentials…",
|
|
1865
|
+
"line.config_saved": "Configuration saved",
|
|
1866
|
+
"line.ask_start": "Configured. Start the daemon now?",
|
|
1867
|
+
"line.opt_start_now": "Start now",
|
|
1868
|
+
"line.opt_start_now_desc": "Launch the daemon in the background; then just message the bot in Feishu",
|
|
1869
|
+
"line.not_configured": "No platform configured yet (Feishu/WeChat). Run the wizard first.",
|
|
1870
|
+
"line.starting": "Starting daemon…",
|
|
1871
|
+
"line.started": "line daemon started (pid {pid})",
|
|
1872
|
+
"line.already_running": "line daemon already running (pid {pid})",
|
|
1873
|
+
"line.start_failed": "Start failed: {error}",
|
|
1874
|
+
"line.stopping": "Stopping daemon…",
|
|
1875
|
+
"line.stopped": "line daemon stopped.",
|
|
1876
|
+
"line.not_running": "line daemon is not running.",
|
|
1877
|
+
"line.restarting": "Restarting daemon…",
|
|
1878
|
+
"line.config_broken": "line configuration file is broken",
|
|
1879
|
+
"line.confirm_uninstall": "Uninstall the line channel?",
|
|
1880
|
+
"line.uninstall_irreversible": "This cannot be undone; only line config and logs are removed",
|
|
1881
|
+
"line.confirm_uninstall_btn": "Uninstall",
|
|
1882
|
+
"line.will_clean": "Stop the daemon and delete ~/.scream-code/line (config & logs)",
|
|
1883
|
+
"line.uninstalling": "Uninstalling the line channel…",
|
|
1884
|
+
"line.uninstalled": "line channel uninstalled",
|
|
1885
|
+
"line.uninstall_note": "Re-run /line any time to set it up again.",
|
|
1886
|
+
"line.uninstall_failed": "Uninstall failed: {error}",
|
|
1887
|
+
"registry.line_desc": "Native Feishu & WeChat channels (wizard / daemon)",
|
|
1888
|
+
"line.opt_wizard_weixin": "Configure WeChat (wizard)",
|
|
1889
|
+
"line.opt_wizard_weixin_desc": "Official ilink bot gateway — just paste a token",
|
|
1890
|
+
"line.weixin_wizard_title": "Configure WeChat channel",
|
|
1891
|
+
"line.weixin_wizard_hint": "Choose how to configure",
|
|
1892
|
+
"line.weixin_opt_qr": "Scan to log in (recommended)",
|
|
1893
|
+
"line.weixin_opt_qr_desc": "The terminal shows a login link — open it in WeChat on your phone. No other tools needed",
|
|
1894
|
+
"line.weixin_qr_begin": "Requesting a WeChat login link…",
|
|
1895
|
+
"line.weixin_qr_title": "WeChat QR login",
|
|
1896
|
+
"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).",
|
|
1897
|
+
"line.weixin_qr_waiting": "Waiting for WeChat confirmation… (up to 8 minutes)",
|
|
1898
|
+
"line.weixin_qr_confirmed": "Login confirmed — token received",
|
|
1899
|
+
"line.weixin_qr_failed": "QR login failed: {error}",
|
|
1900
|
+
"line.weixin_qr_timeout": "Timed out: no confirmation within 8 minutes. Start the QR login again.",
|
|
1901
|
+
"line.weixin_allow_from_note": "Your WeChat id was added to the allow_from list (edit the config file to adjust):",
|
|
1902
|
+
"line.weixin_tutorial_title": "WeChat channel tutorial",
|
|
1903
|
+
"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\".",
|
|
1904
|
+
"line.weixin_opt_manual": "Enter token manually",
|
|
1905
|
+
"line.weixin_opt_manual_desc": "Paste the ilink bot Bearer token",
|
|
1906
|
+
"line.weixin_opt_tutorial": "View WeChat tutorial",
|
|
1907
|
+
"line.weixin_opt_tutorial_desc": "Complete flow (QR login / allow list / activation)",
|
|
1908
|
+
"line.weixin_input_token": "Enter ilink bot token",
|
|
1909
|
+
"line.weixin_validating": "Verifying WeChat token…",
|
|
1910
|
+
"line.weixin_session_expired": "Token valid, session pending activation",
|
|
1911
|
+
"line.weixin_session_expired_hint": "After the daemon starts, message the bot once from an allowed WeChat account to activate the session.",
|
|
1912
|
+
"line.weixin_config_saved": "WeChat configuration saved",
|
|
1913
|
+
"line.platform_taken": "line is a single-channel design",
|
|
1914
|
+
"line.platform_taken_detail": "The {taken} channel is configured. Run /line → Uninstall first, then set up the other platform.",
|
|
1915
|
+
"line.channel_feishu": "Feishu",
|
|
1916
|
+
"line.channel_weixin": "WeChat",
|
|
1871
1917
|
"auth.fetching_models": "Fetching latest model catalog...",
|
|
1872
1918
|
"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.",
|
|
1873
1919
|
"auth.no_providers": "No model providers configured.",
|
|
@@ -1977,7 +2023,7 @@ const dictionaries = {
|
|
|
1977
2023
|
"session.title": "Sessions",
|
|
1978
2024
|
"session.loading": "Loading sessions...",
|
|
1979
2025
|
"session_picker.empty": "No sessions found. Press Escape to close.",
|
|
1980
|
-
"session_picker.cc_restricted": "
|
|
2026
|
+
"session_picker.cc_restricted": "Channel-managed sessions cannot be switched or deleted here — use the file path below to manage manually",
|
|
1981
2027
|
"session_picker.batch_delete_confirm": "Delete {count} selected sessions?",
|
|
1982
2028
|
"session_picker.batch_delete_hint": " Press Enter to confirm batch delete, Esc to cancel",
|
|
1983
2029
|
"session_picker.batch_delete_unavailable": "Batch delete is not available here.",
|
|
@@ -2435,16 +2481,6 @@ const dictionaries = {
|
|
|
2435
2481
|
"transcript.tool_name": "Tool {name}: ",
|
|
2436
2482
|
"transcript.activated_skill": "Activated plugin: {name}",
|
|
2437
2483
|
"transcript.more_history": "↑ {count} more history message(s)",
|
|
2438
|
-
"transcript.child_request": "{name} is asking the parent agent ({type})",
|
|
2439
|
-
"transcript.child_request_anon": "A subagent is asking the parent agent ({type})",
|
|
2440
|
-
"transcript.child_request_type_info": "info",
|
|
2441
|
-
"transcript.child_request_type_handoff": "handoff",
|
|
2442
|
-
"transcript.child_request_type_escalate": "escalate",
|
|
2443
|
-
"transcript.child_request_needs": "needs {value}",
|
|
2444
|
-
"transcript.child_request_expecting": "expecting {value}",
|
|
2445
|
-
"transcript.child_request_artifacts": "artifacts {value}",
|
|
2446
|
-
"transcript.child_request_evidence": "evidence {value}",
|
|
2447
|
-
"transcript.child_request_missing": "missing {value}",
|
|
2448
2484
|
"compaction.done": "Compaction complete",
|
|
2449
2485
|
"compaction.canceled": "Compaction cancelled",
|
|
2450
2486
|
"compaction.in_progress": "Compacting context...",
|
|
@@ -2483,9 +2519,9 @@ const dictionaries = {
|
|
|
2483
2519
|
"tc.rejected": "Rejected",
|
|
2484
2520
|
"tc.cancelled": "Cancelled",
|
|
2485
2521
|
"tc.error_prefix": "Error: ",
|
|
2486
|
-
"dialog.cc_session_connected": "Connected to
|
|
2522
|
+
"dialog.cc_session_connected": "Connected to channel session ({id}).",
|
|
2487
2523
|
"dialog.create_session_failed": "Failed to create session",
|
|
2488
|
-
"dialog.cc_managed": "
|
|
2524
|
+
"dialog.cc_managed": "This session is managed by an IM channel. Operate from the chat app, or stop that channel before deleting.",
|
|
2489
2525
|
"dialog.memo_injected": "Injected memo #{id}",
|
|
2490
2526
|
"dialog.approval_title": "Scream Code requires approval",
|
|
2491
2527
|
"dialog.question_title": "Scream Code needs your answer",
|
|
@@ -2525,46 +2561,6 @@ const dictionaries = {
|
|
|
2525
2561
|
"thinking.more_lines": "... ({count} more lines, ctrl+o to expand)",
|
|
2526
2562
|
"tool.more_lines": "... ({count} more lines)",
|
|
2527
2563
|
"shell.more_lines": "... ({count} more lines, ctrl+o to expand)",
|
|
2528
|
-
"ccconnect.note_botfather": "Create a bot at @BotFather first",
|
|
2529
|
-
"ccconnect.note_napcat": "Requires NapCat/OneBot",
|
|
2530
|
-
"ccconnect.note_wecom": "Requires public IP",
|
|
2531
|
-
"ccconnect.note_matrix": "E2EE encrypted, needs homeserver + access token",
|
|
2532
|
-
"ccconnect.note_webex": "Create a bot at developer.webex.com",
|
|
2533
|
-
"ccconnect.note_max": "Create a bot via @MasterBot",
|
|
2534
|
-
"ccconnect.note_googlechat": "Requires GCP service account JSON",
|
|
2535
|
-
"ccconnect.note_cloud_web": "Self-hosted IM gateway",
|
|
2536
|
-
"ccconnect.note_yuanbao": "Tencent Yuanbao, needs app-key:app-secret",
|
|
2537
|
-
"ccconnect.note_tuitui": "Needs app_id + app_secret",
|
|
2538
|
-
"ccconnect.note_wps_agentspace": "Needs app_id + wps_sid",
|
|
2539
|
-
"ccconnect.new_platform_version_hint": "⚠ This platform requires cc-connect v1.5.0 or newer. Please update cc-connect first.",
|
|
2540
|
-
"ccconnect.config_comment_attachment": "# Global: allow/disallow image & file backhaul to chat (on = enabled, off = disabled)",
|
|
2541
|
-
"ccconnect.reconfigured": "{name} already configured (config preserved)",
|
|
2542
|
-
"ccconnect.config_path": "Config file: {path}",
|
|
2543
|
-
"ccconnect.config_done": "✔ {name} channel configured",
|
|
2544
|
-
"ccconnect.config_written": "Config file written: {path}",
|
|
2545
|
-
"ccconnect.quick_ref": "📋 Common management commands (recommended to save):",
|
|
2546
|
-
"ccconnect.pm2_status": " pm2 status Check status (online = OK)",
|
|
2547
|
-
"ccconnect.pm2_restart": " pm2 restart cc-connect Restart service",
|
|
2548
|
-
"ccconnect.pm2_stop": " pm2 stop cc-connect Stop service",
|
|
2549
|
-
"ccconnect.pm2_logs": " pm2 logs cc-connect View logs",
|
|
2550
|
-
"ccconnect.pm2_delete": " pm2 delete cc-connect Fully delete",
|
|
2551
|
-
"ccconnect.reconfigure_warning": " ⚠ Do not run /cc-connect again with the same platform, or existing config will be overwritten!",
|
|
2552
|
-
"ccconnect.reconfigure_change": " To switch platforms, delete C:\\Users\\<username>\\.cc-connect\\config.toml first",
|
|
2553
|
-
"ccconnect.init_steps": "📋 Initialization steps (first-time setup only, follow in order):",
|
|
2554
|
-
"ccconnect.step_platform_auth": " Step 1: Platform auth{note}",
|
|
2555
|
-
"ccconnect.once_tag": "(one-time)",
|
|
2556
|
-
"ccconnect.step_n": " Step {num}: {label}{once}",
|
|
2557
|
-
"ccconnect.auto_done": " ✅ Auto-completed, no manual action needed ({command})",
|
|
2558
|
-
"ccconnect.more_commands": "More commands ({method}):",
|
|
2559
|
-
"ccconnect.attachment_hint": "💡 Enable attachment backhaul (let Agent send images & files):",
|
|
2560
|
-
"ccconnect.bind_setup": " Send /bind setup in chat",
|
|
2561
|
-
"ccconnect.autostart_hint": "💡 Auto-start on boot via cc-connect-startup.bat in Startup folder.",
|
|
2562
|
-
"ccconnect.manual_restart": " To manually restart service: pm2 resurrect",
|
|
2563
|
-
"ccconnect.not_installed": "cc-connect not installed",
|
|
2564
|
-
"ccconnect.install_guide": "Run in terminal first:\n\n npm install -g cc-connect\n\nAfter installation, run /cc-connect again to configure.",
|
|
2565
|
-
"ccconnect.already_configured": "{name} ✔ Configured",
|
|
2566
|
-
"ccconnect.picker_title": "cc-connect Quick Channel Setup",
|
|
2567
|
-
"ccconnect.picker_hint": "Select a platform to connect; config will be auto-written to ~/.cc-connect/config.toml",
|
|
2568
2564
|
"market.humanizer_name": "Humanizer AI Text De-AI",
|
|
2569
2565
|
"market.humanizer_desc": "Remove AI writing traces: 30 AI pattern detection × 5 categories × voice calibration, output pure human style",
|
|
2570
2566
|
"market.contract_name": "Contract Review Pro",
|
|
@@ -2660,7 +2656,6 @@ const dictionaries = {
|
|
|
2660
2656
|
"knowledge.ingest_summary": "Total: {chunks} chunks, {events} events, {entities} entities",
|
|
2661
2657
|
"knowledge.empty_store": "Knowledge base is empty, please ingest documents with /knowledge first",
|
|
2662
2658
|
"knowledge.web_opened": "Knowledge graph opened: {url}",
|
|
2663
|
-
"cc.clean_config.detail": " ~/.cc-connect (includes session records, config, logs)",
|
|
2664
2659
|
"registry.auto_desc": "Toggle auto permission mode",
|
|
2665
2660
|
"registry.yolo_desc": "Toggle auto-approve mode (yolo)",
|
|
2666
2661
|
"registry.bot_desc": "Toggle unattended bot mode (bot)",
|
|
@@ -2748,6 +2743,9 @@ const dictionaries = {
|
|
|
2748
2743
|
"cron.kind_recurring": "repeats",
|
|
2749
2744
|
"cron.kind_once": "one-shot",
|
|
2750
2745
|
"cron.stale": "expired",
|
|
2746
|
+
"cron.silent": "silent",
|
|
2747
|
+
"cron.mute": "muted",
|
|
2748
|
+
"cron.last_error": "last failed: {error}",
|
|
2751
2749
|
"cron.sched_5m": "Every 5 minutes",
|
|
2752
2750
|
"cron.sched_hourly": "Hourly",
|
|
2753
2751
|
"cron.sched_daily9": "Daily at 09:00",
|
|
@@ -2789,8 +2787,6 @@ const dictionaries = {
|
|
|
2789
2787
|
"registry.mcp_desc": "Manage MCP servers (install/disable/uninstall)",
|
|
2790
2788
|
"registry.plugin_desc": "Plugin center, manage plugins including activate, install, uninstall",
|
|
2791
2789
|
"registry.extension_desc": "Code extensions, activate or deactivate a plugin entry point",
|
|
2792
|
-
"registry.cc_desc": "Control your cc (start/stop/restart)",
|
|
2793
|
-
"registry.cc_connect_desc": "cc-connect quick channel setup (requires installation)",
|
|
2794
2790
|
"registry.revoke_desc": "Undo last conversation round (specify rounds, e.g. /revoke 3)",
|
|
2795
2791
|
"registry.fork_desc": "Copy current session and start a new branch",
|
|
2796
2792
|
"registry.title_desc": "Set or show session title",
|
|
@@ -2870,14 +2866,20 @@ const dictionaries = {
|
|
|
2870
2866
|
};
|
|
2871
2867
|
function detectSystemLocale() {
|
|
2872
2868
|
const env = process.env;
|
|
2873
|
-
const envLang = (
|
|
2869
|
+
const envLang = ([
|
|
2870
|
+
"LC_ALL",
|
|
2871
|
+
"LC_MESSAGES",
|
|
2872
|
+
"LANG",
|
|
2873
|
+
"LANGUAGE"
|
|
2874
|
+
].map((name) => env[name]).find((v) => v !== void 0 && v !== "") ?? "").toLowerCase();
|
|
2874
2875
|
if (envLang.startsWith("zh")) return "zh";
|
|
2875
2876
|
if (envLang.length > 0) return "en";
|
|
2876
2877
|
try {
|
|
2877
2878
|
if (Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase().startsWith("zh")) return "zh";
|
|
2878
2879
|
} catch {}
|
|
2879
2880
|
if (process.platform === "win32") {
|
|
2880
|
-
|
|
2881
|
+
const winRaw = env["LANG"];
|
|
2882
|
+
if ((winRaw !== void 0 && winRaw !== "" ? winRaw : "").toLowerCase().startsWith("zh")) return "zh";
|
|
2881
2883
|
}
|
|
2882
2884
|
return "en";
|
|
2883
2885
|
}
|