botmux 2.86.0 → 2.88.0
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.en.md +27 -0
- package/README.md +27 -0
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +12 -1
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/liveness-gate.d.ts +38 -0
- package/dist/adapters/backend/liveness-gate.d.ts.map +1 -0
- package/dist/adapters/backend/liveness-gate.js +53 -0
- package/dist/adapters/backend/liveness-gate.js.map +1 -0
- package/dist/adapters/backend/pty-backend.d.ts.map +1 -1
- package/dist/adapters/backend/pty-backend.js +4 -1
- package/dist/adapters/backend/pty-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts +22 -1
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +124 -36
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +20 -0
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +86 -20
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +9 -0
- package/dist/adapters/backend/types.d.ts.map +1 -1
- package/dist/adapters/backend/types.js.map +1 -1
- package/dist/adapters/backend/zellij-backend.js +1 -1
- package/dist/adapters/backend/zellij-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-observe-backend.d.ts +13 -0
- package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-observe-backend.js +51 -12
- package/dist/adapters/backend/zellij-observe-backend.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +8 -5
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts +2 -1
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +25 -3
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +4 -0
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +6 -0
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +23 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +9 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +368 -16
- package/dist/cli.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +7 -5
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +210 -5
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +3 -0
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +4 -1
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/maintenance.d.ts +18 -0
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +58 -30
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/per-bot-env.d.ts +38 -0
- package/dist/core/per-bot-env.d.ts.map +1 -0
- package/dist/core/per-bot-env.js +79 -0
- package/dist/core/per-bot-env.js.map +1 -0
- package/dist/core/session-activity.d.ts +1 -0
- package/dist/core/session-activity.d.ts.map +1 -1
- package/dist/core/session-activity.js +7 -4
- package/dist/core/session-activity.js.map +1 -1
- package/dist/core/session-create.d.ts +62 -0
- package/dist/core/session-create.d.ts.map +1 -0
- package/dist/core/session-create.js +131 -0
- package/dist/core/session-create.js.map +1 -0
- package/dist/core/session-manager.d.ts +43 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +306 -8
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/skills/discovery.d.ts +7 -0
- package/dist/core/skills/discovery.d.ts.map +1 -1
- package/dist/core/skills/discovery.js +51 -0
- package/dist/core/skills/discovery.js.map +1 -1
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +5 -2
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/update-check.d.ts +67 -0
- package/dist/core/update-check.d.ts.map +1 -0
- package/dist/core/update-check.js +159 -0
- package/dist/core/update-check.js.map +1 -0
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +82 -4
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +40 -11
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +2 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +2 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/session-cleanup.d.ts +30 -0
- package/dist/dashboard/session-cleanup.d.ts.map +1 -0
- package/dist/dashboard/session-cleanup.js +47 -0
- package/dist/dashboard/session-cleanup.js.map +1 -0
- package/dist/dashboard/skill-install-request.d.ts +10 -0
- package/dist/dashboard/skill-install-request.d.ts.map +1 -1
- package/dist/dashboard/skill-install-request.js +17 -0
- package/dist/dashboard/skill-install-request.js.map +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +29 -1
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +82 -6
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +312 -2
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/insights.d.ts.map +1 -1
- package/dist/dashboard/web/insights.js +355 -30
- package/dist/dashboard/web/insights.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts +2 -0
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +457 -30
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings.d.ts.map +1 -1
- package/dist/dashboard/web/settings.js +289 -0
- package/dist/dashboard/web/settings.js.map +1 -1
- package/dist/dashboard/web/skills.d.ts.map +1 -1
- package/dist/dashboard/web/skills.js +183 -10
- package/dist/dashboard/web/skills.js.map +1 -1
- package/dist/dashboard/web/whiteboards.d.ts +2 -0
- package/dist/dashboard/web/whiteboards.d.ts.map +1 -0
- package/dist/dashboard/web/whiteboards.js +267 -0
- package/dist/dashboard/web/whiteboards.js.map +1 -0
- package/dist/dashboard-web/app.js +879 -591
- package/dist/dashboard-web/index.html +1 -0
- package/dist/dashboard-web/style.css +528 -8
- package/dist/dashboard.js +472 -5
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +6 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +12 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +21 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +21 -1
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +4 -5
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +113 -11
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +3 -2
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +174 -14
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +19 -5
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/grant-pending.d.ts.map +1 -1
- package/dist/im/lark/grant-pending.js +9 -2
- package/dist/im/lark/grant-pending.js.map +1 -1
- package/dist/index-daemon.js +5 -0
- package/dist/index-daemon.js.map +1 -1
- package/dist/platform/bind.d.ts +2 -0
- package/dist/platform/bind.d.ts.map +1 -0
- package/dist/platform/bind.js +91 -0
- package/dist/platform/bind.js.map +1 -0
- package/dist/platform/binding.d.ts +22 -0
- package/dist/platform/binding.d.ts.map +1 -0
- package/dist/platform/binding.js +33 -0
- package/dist/platform/binding.js.map +1 -0
- package/dist/platform/tunnel-client.d.ts +15 -0
- package/dist/platform/tunnel-client.d.ts.map +1 -0
- package/dist/platform/tunnel-client.js +193 -0
- package/dist/platform/tunnel-client.js.map +1 -0
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +20 -0
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/git-worktree.d.ts +10 -0
- package/dist/services/git-worktree.d.ts.map +1 -1
- package/dist/services/git-worktree.js +71 -26
- package/dist/services/git-worktree.js.map +1 -1
- package/dist/services/grant-prefs-store.d.ts +3 -0
- package/dist/services/grant-prefs-store.d.ts.map +1 -1
- package/dist/services/grant-prefs-store.js +17 -2
- package/dist/services/grant-prefs-store.js.map +1 -1
- package/dist/services/insight/claude-span-reader.d.ts.map +1 -1
- package/dist/services/insight/claude-span-reader.js +18 -2
- package/dist/services/insight/claude-span-reader.js.map +1 -1
- package/dist/services/insight/codex-span-reader.d.ts.map +1 -1
- package/dist/services/insight/codex-span-reader.js +17 -1
- package/dist/services/insight/codex-span-reader.js.map +1 -1
- package/dist/services/insight/report.d.ts.map +1 -1
- package/dist/services/insight/report.js +48 -6
- package/dist/services/insight/report.js.map +1 -1
- package/dist/services/insight/types.d.ts +9 -0
- package/dist/services/insight/types.d.ts.map +1 -1
- package/dist/services/insight/types.js.map +1 -1
- package/dist/services/resumable-session-discovery.d.ts.map +1 -1
- package/dist/services/resumable-session-discovery.js +21 -4
- package/dist/services/resumable-session-discovery.js.map +1 -1
- package/dist/services/skill-registry-store.d.ts +1 -0
- package/dist/services/skill-registry-store.d.ts.map +1 -1
- package/dist/services/skill-registry-store.js +32 -0
- package/dist/services/skill-registry-store.js.map +1 -1
- package/dist/services/whiteboard-store.d.ts +67 -0
- package/dist/services/whiteboard-store.d.ts.map +1 -0
- package/dist/services/whiteboard-store.js +450 -0
- package/dist/services/whiteboard-store.js.map +1 -0
- package/dist/services/worktree-slug-ai.d.ts.map +1 -1
- package/dist/services/worktree-slug-ai.js +3 -1
- package/dist/services/worktree-slug-ai.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts +8 -0
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +9 -0
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +118 -0
- package/dist/skills/definitions.js.map +1 -1
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/crash-log.d.ts +22 -0
- package/dist/utils/crash-log.d.ts.map +1 -0
- package/dist/utils/crash-log.js +37 -0
- package/dist/utils/crash-log.js.map +1 -0
- package/dist/utils/input-gate.d.ts +10 -0
- package/dist/utils/input-gate.d.ts.map +1 -1
- package/dist/utils/input-gate.js +7 -0
- package/dist/utils/input-gate.js.map +1 -1
- package/dist/utils/install-diagnostics.d.ts +52 -0
- package/dist/utils/install-diagnostics.d.ts.map +1 -0
- package/dist/utils/install-diagnostics.js +155 -0
- package/dist/utils/install-diagnostics.js.map +1 -0
- package/dist/utils/install-info.d.ts +4 -0
- package/dist/utils/install-info.d.ts.map +1 -1
- package/dist/utils/install-info.js +6 -0
- package/dist/utils/install-info.js.map +1 -1
- package/dist/utils/stdio-epipe-guard.d.ts +39 -0
- package/dist/utils/stdio-epipe-guard.d.ts.map +1 -0
- package/dist/utils/stdio-epipe-guard.js +67 -0
- package/dist/utils/stdio-epipe-guard.js.map +1 -0
- package/dist/worker.js +222 -26
- package/dist/worker.js.map +1 -1
- package/dist/workflows/daemon-spawn.d.ts +2 -0
- package/dist/workflows/daemon-spawn.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -117,6 +117,14 @@ const zh = {
|
|
|
117
117
|
'sessions.closeSelected': '关闭选中',
|
|
118
118
|
'sessions.clearSelection': '取消选择',
|
|
119
119
|
'sessions.selectedCount': '已选 {count} 个会话',
|
|
120
|
+
'sessions.idleCleanupOlderThan': '空闲超过',
|
|
121
|
+
'sessions.idleCleanupThreshold': '空闲清理阈值',
|
|
122
|
+
'sessions.idleCleanupRun': '清理空闲',
|
|
123
|
+
'sessions.idleCleanupCount': '可清理 {count} 个',
|
|
124
|
+
'sessions.idleCleanupConfirm': '将关闭 {count} 个空闲超过 {threshold} 的会话,确定继续?',
|
|
125
|
+
'sessions.idleCleanupRunning': '清理中…',
|
|
126
|
+
'sessions.idleCleanupDone': '已关闭 {closed} 个,失败 {failed} 个',
|
|
127
|
+
'sessions.idleCleanupFailed': '清理失败',
|
|
120
128
|
'sessions.bot': 'bot',
|
|
121
129
|
'sessions.cli': 'CLI',
|
|
122
130
|
'sessions.chat': '群聊',
|
|
@@ -141,6 +149,12 @@ const zh = {
|
|
|
141
149
|
'sessions.writeLinkHint': '获取可操作终端链接(带写权限 token,新标签打开)',
|
|
142
150
|
'sessions.writeLinkFail': '获取操作链接失败',
|
|
143
151
|
'sessions.close': '关闭会话',
|
|
152
|
+
'sessions.restart': '重启 CLI',
|
|
153
|
+
'sessions.restartConfirmIntro': '准备重启当前 CLI。',
|
|
154
|
+
'sessions.restartConfirmStatus': '当前状态',
|
|
155
|
+
'sessions.restartConfirmCli': 'CLI',
|
|
156
|
+
'sessions.restartConfirmQuestion': '确认重启这个 CLI?',
|
|
157
|
+
'sessions.restartFailed': '重启失败',
|
|
144
158
|
'sessions.resume': '恢复会话',
|
|
145
159
|
'sessions.dismiss': '关闭',
|
|
146
160
|
'sessions.closeConfirm': '关闭这个会话?',
|
|
@@ -178,7 +192,45 @@ const zh = {
|
|
|
178
192
|
'insights.loaded': '已分析 {count} 个会话',
|
|
179
193
|
'insights.unavailable': '加载失败',
|
|
180
194
|
'insights.listCount': '显示 {shown}/{total}',
|
|
181
|
-
'insights.
|
|
195
|
+
'insights.tabOverview': '总览',
|
|
196
|
+
'insights.tabSessions': '会话',
|
|
197
|
+
'insights.tabDist': '分布',
|
|
198
|
+
'insights.tabHot': '热点',
|
|
199
|
+
'insights.projectAll': '全部项目',
|
|
200
|
+
'insights.timeAll': '全部时间',
|
|
201
|
+
'insights.time1d': '近 1 天',
|
|
202
|
+
'insights.time7d': '近 7 天',
|
|
203
|
+
'insights.time30d': '近 30 天',
|
|
204
|
+
'insights.clear': '清除',
|
|
205
|
+
'insights.emptyAnalyzableHint': '勾选「含未分析」可查看其余会话',
|
|
206
|
+
'insights.showAll': '含未分析',
|
|
207
|
+
'insights.distHint': '当前筛选下各会话的指标分布——看走势、看典型值落在哪。',
|
|
208
|
+
'insights.distSpans': '每会话 span 数',
|
|
209
|
+
'insights.distFailed': '每会话失败数',
|
|
210
|
+
'insights.distSlow': '每会话慢 span',
|
|
211
|
+
'insights.distAgentTime': 'agent 工作时长',
|
|
212
|
+
'insights.distRw': '读改比',
|
|
213
|
+
'insights.distMedian': '中位 {v}',
|
|
214
|
+
'insights.distEmpty': '当前筛选下没有可分析的会话。',
|
|
215
|
+
'insights.hotHint': '跨会话复发信号——最该收敛的地方。',
|
|
216
|
+
'insights.hotToolFailures': '工具报错热点',
|
|
217
|
+
'insights.hotSlowSessions': '最慢的会话',
|
|
218
|
+
'insights.hotProjects': '项目分布',
|
|
219
|
+
'insights.hotComingSoon': '文件 / 命令复发热点即将上线(需给引擎加跨会话聚合)。',
|
|
220
|
+
'insights.hotSessionsCol': '会话',
|
|
221
|
+
'insights.hotFailsCol': '失败',
|
|
222
|
+
'insights.hotSlowCol': '慢',
|
|
223
|
+
'insights.backToList': '返回列表',
|
|
224
|
+
'insights.sortLabel': '排序',
|
|
225
|
+
'insights.sortRecent': '最近',
|
|
226
|
+
'insights.sortReview': '回看分',
|
|
227
|
+
'insights.sortSpans': 'span 数',
|
|
228
|
+
'insights.sortFails': '失败',
|
|
229
|
+
'insights.sortSlow': '慢',
|
|
230
|
+
'insights.sortAgent': '时长',
|
|
231
|
+
'insights.readsShort': '读',
|
|
232
|
+
'insights.editsShort': '改',
|
|
233
|
+
'insights.durShort': '时长',
|
|
182
234
|
'insights.empty': '没有匹配的会话。',
|
|
183
235
|
'insights.selectSession': '从左侧选一个会话,查看动作 span 与建议。',
|
|
184
236
|
'insights.detailLoading': '加载会话详情…',
|
|
@@ -593,6 +645,43 @@ const zh = {
|
|
|
593
645
|
'sessions.kanban.done': '已完成',
|
|
594
646
|
'sessions.kanban.updated': '更新于 {time}',
|
|
595
647
|
'sessions.kanban.moreHidden': '还有 {count} 个未显示',
|
|
648
|
+
'sessions.create.button': '创建会话',
|
|
649
|
+
'sessions.create.title': '创建会话',
|
|
650
|
+
'sessions.create.content': '内容',
|
|
651
|
+
'sessions.create.contentPlaceholder': '描述要做的事;Lead 分配模式下可在这里给各 agent 分配不同的工作',
|
|
652
|
+
'sessions.create.bots': '机器人(拉进新群)',
|
|
653
|
+
'sessions.create.noBots': '没有在线的机器人可选',
|
|
654
|
+
'sessions.create.mode': '协作模式',
|
|
655
|
+
'sessions.create.modeAll': '一起开工',
|
|
656
|
+
'sessions.create.modeLead': 'Lead 分配(推荐)',
|
|
657
|
+
'sessions.create.modeHelp': '一起开工:每个被选机器人各起一条会话、拿同一份内容。Lead 分配:只起 lead,由它在群里 @ 拉起其它机器人干活。',
|
|
658
|
+
'sessions.create.lead': 'Lead 机器人',
|
|
659
|
+
'sessions.create.leadHelp': '内容会发给 lead,由它决定何时拉起哪个 sub bot。',
|
|
660
|
+
'sessions.create.leadPickFirst': '请先在上方勾选机器人',
|
|
661
|
+
'sessions.create.column': '入列',
|
|
662
|
+
'sessions.create.columnInProgress': '直接进行中',
|
|
663
|
+
'sessions.create.columnBacklog': '待办池',
|
|
664
|
+
'sessions.create.columnHelp': '直接进行中:建完群立刻开跑。待办池:先建群+拉机器人但不起 CLI,之后拖到「进行中」或点「开始」再发给机器人。',
|
|
665
|
+
'sessions.create.advanced': '更多选项',
|
|
666
|
+
'sessions.create.groupName': '群名称',
|
|
667
|
+
'sessions.create.groupNamePlaceholder': '留空则取内容首行',
|
|
668
|
+
'sessions.create.workingDir': '工作目录',
|
|
669
|
+
'sessions.create.workingDirHelp': '可选。填了则把新群绑定到该目录(所有机器人都在此目录工作)。留空则机器人在群里弹 /repo 卡片让你选仓库(支持新建 worktree)。',
|
|
670
|
+
'sessions.create.submit': '创建',
|
|
671
|
+
'sessions.create.submitting': '创建中…',
|
|
672
|
+
'sessions.create.cancel': '取消',
|
|
673
|
+
'sessions.create.start': '开始',
|
|
674
|
+
'sessions.create.errContent': '请填写内容',
|
|
675
|
+
'sessions.create.errNoBot': '请至少选择一个机器人',
|
|
676
|
+
'sessions.create.errLead': 'Lead 必须是已勾选的机器人之一',
|
|
677
|
+
'sessions.create.failed': '创建失败',
|
|
678
|
+
'sessions.create.startFailed': '开始失败',
|
|
679
|
+
'sessions.create.doneTitle': '已创建',
|
|
680
|
+
'sessions.create.doneInProgress': '已建群并拉起会话',
|
|
681
|
+
'sessions.create.doneBacklog': '已建群,会话已入待办池',
|
|
682
|
+
'sessions.create.partialFail': '有 {n} 个机器人未能拉起,可稍后在群里 @ 重试',
|
|
683
|
+
'sessions.create.openChat': '打开飞书群',
|
|
684
|
+
'sessions.create.close': '关闭',
|
|
596
685
|
'sessions.kanban.openTab': '新标签页打开',
|
|
597
686
|
'sessions.kanban.openFeishu': '打开飞书',
|
|
598
687
|
'sessions.kanban.terminalLoading': '正在打开终端…',
|
|
@@ -738,6 +827,45 @@ const zh = {
|
|
|
738
827
|
'settings.autoRestartHelp': '默认关闭,需先开启自动更新。自动更新装到新版本后,若没有进行中的会话则自动重启以生效(撞上忙碌会话则跳到次日)。',
|
|
739
828
|
'settings.autoUpdateLocalDev': '当前为本地开发安装(从源码运行),自动更新不可用。',
|
|
740
829
|
'settings.maintenanceTime': '时间',
|
|
830
|
+
'update.section': '版本与更新',
|
|
831
|
+
'update.loginRequired': '登录后可检查版本、执行更新或重启。',
|
|
832
|
+
'update.loading': '检查中…',
|
|
833
|
+
'update.checkFailed': '检查失败',
|
|
834
|
+
'update.current': '当前版本',
|
|
835
|
+
'update.upToDate': '已是最新版本',
|
|
836
|
+
'update.newAvailable': '发现新版本 {version}',
|
|
837
|
+
'update.checkUnavailable': '无法获取最新版本(离线或受网络限制)',
|
|
838
|
+
'update.nodeWarn': '当前 Node 版本 {version} 过低,更新要求 ≥ {required},请先升级 Node。',
|
|
839
|
+
'update.localDev': '当前为本地开发安装(从源码运行),「更新到最新版」不可用;请用 git pull + 构建后重启。',
|
|
840
|
+
'update.multiInstallWarn': '检测到多个 botmux 安装,npm 更新只会更新 npm 全局那个,可能不是当前生效的版本:',
|
|
841
|
+
'update.kindNpm': 'npm 全局',
|
|
842
|
+
'update.kindSource': '源码 checkout',
|
|
843
|
+
'update.kindUnknown': '未知',
|
|
844
|
+
'update.btnCheck': '检查更新',
|
|
845
|
+
'update.btnChangelog': '查看更新内容',
|
|
846
|
+
'update.btnChangelogHide': '收起更新内容',
|
|
847
|
+
'update.btnUpdate': '更新到最新版',
|
|
848
|
+
'update.btnRestart': '重启 botmux',
|
|
849
|
+
'update.changelogLoading': '加载更新内容…',
|
|
850
|
+
'update.changelogEmpty': '没有比当前版本更新的发布说明。',
|
|
851
|
+
'update.changelogFailed': '无法加载更新内容(离线或受网络限制)。',
|
|
852
|
+
'update.changelogRateLimited': 'GitHub 接口请求超限(未登录每小时每 IP 60 次,共享网络易触发),暂时拿不到更新内容。',
|
|
853
|
+
'update.changelogViewOnGitHub': '前往 GitHub Releases 查看',
|
|
854
|
+
'update.navBadgeTitle': '有新版本 {version}',
|
|
855
|
+
'update.confirmMultiInstall': '检测到多个 botmux 安装:\n{paths}\n\nnpm 更新只会更新 npm 全局那个,可能不是当前生效的版本。仍要继续?',
|
|
856
|
+
'update.confirmUpdate': '将运行 npm install -g botmux@latest,更新到 {version}。确认继续?',
|
|
857
|
+
'update.confirmUpdateNoVer': '将运行 npm install -g botmux@latest 更新到最新版。确认继续?',
|
|
858
|
+
'update.nodeTooOldAlert': '当前 Node 版本 {version} 过低(要求 ≥ {required}),请先升级 Node 再更新。',
|
|
859
|
+
'update.updating': '正在更新(npm install -g botmux@latest),请稍候…',
|
|
860
|
+
'update.updatedChanged': '已更新 {old} → {new}。',
|
|
861
|
+
'update.confirmRestart': '需要重启 botmux 以应用新版本。现在重启?(所有会话会冷恢复,仪表盘会短暂断开并自动重连)',
|
|
862
|
+
'update.alreadyLatestRun': '已是最新版本({version}),无需更新。',
|
|
863
|
+
'update.updateFailed': '更新失败:{detail}',
|
|
864
|
+
'update.noRestartHint': '更新完成。稍后请手动重启(botmux restart)以应用新版本。',
|
|
865
|
+
'update.confirmPlainRestart': '重启 botmux?所有会话会冷恢复,仪表盘会短暂断开并自动重连。',
|
|
866
|
+
'update.restarting': '正在重启 botmux,等待重连…',
|
|
867
|
+
'update.restartSlow': '重启耗时较长,请稍后手动刷新页面。',
|
|
868
|
+
'update.restartFailed': '重启失败:{detail}',
|
|
741
869
|
'skills.title': 'Skill 管理',
|
|
742
870
|
'skills.subtitle': '管理 botmux 的 CLI 无关 Skill 资产,并按 bot 选择优先披露。',
|
|
743
871
|
'skills.installed': '已安装 Skills',
|
|
@@ -756,6 +884,26 @@ const zh = {
|
|
|
756
884
|
'skills.sourceHelpRemote': '可粘贴 Skill 目录页面或仓库地址;仓库地址需填写仓库内路径。',
|
|
757
885
|
'skills.sourceHelpLocalLabel': '本机 CLI Skill 目录: ',
|
|
758
886
|
'skills.sourceHelpLocal': '直接引用原地址,不复制到 botmux store。',
|
|
887
|
+
'skills.discover': '发现 Skill',
|
|
888
|
+
'skills.discoverTitle': '发现本机 CLI Skill',
|
|
889
|
+
'skills.discoverHelp': '扫描当前部署中已配置 bot 对应的 CLI Skill 目录;选中后注册为本地引用,不复制文件。',
|
|
890
|
+
'skills.discoverEmpty': '没有在本机 CLI skill 目录中发现可注册的 Skill。',
|
|
891
|
+
'skills.discoverGroupEmpty': '这个 CLI 目录下没有可注册的 Skill。',
|
|
892
|
+
'skills.discoverRegistered': '已注册',
|
|
893
|
+
'skills.discoverSelectAll': '全选未注册',
|
|
894
|
+
'skills.discoverClearSelection': '取消全选',
|
|
895
|
+
'skills.discoverRegister': '注册选中',
|
|
896
|
+
'skills.discoverClose': '关闭',
|
|
897
|
+
'skills.discoverNothingSelected': '请选择至少一个未注册的 Skill。',
|
|
898
|
+
'skills.discoverRegisteringBatch': '正在批量注册 {total} 个 Skill',
|
|
899
|
+
'skills.sourceCodex': '本机 Codex',
|
|
900
|
+
'skills.sourceClaude': '本机 Claude',
|
|
901
|
+
'skills.sourceTrae': '本机 Trae',
|
|
902
|
+
'skills.sourceCursor': '本机 Cursor',
|
|
903
|
+
'skills.sourceGemini': '本机 Gemini',
|
|
904
|
+
'skills.sourceOpenCode': '本机 OpenCode',
|
|
905
|
+
'skills.sourceLocalLink': '本机引用',
|
|
906
|
+
'skills.sourceBotmuxCopy': 'botmux store',
|
|
759
907
|
'skills.path': '仓库内路径(可选)',
|
|
760
908
|
'skills.pathPlaceholder': '留空则使用 GitHub URL 中的路径',
|
|
761
909
|
'skills.ref': 'Ref(可选)',
|
|
@@ -768,6 +916,7 @@ const zh = {
|
|
|
768
916
|
'skills.prevPage': '上一页',
|
|
769
917
|
'skills.nextPage': '下一页',
|
|
770
918
|
'skills.empty': '暂无已安装 skill。可以从本机目录、Git 或 GitHub 安装。',
|
|
919
|
+
'skills.apiUnavailable': '当前 Dashboard 后端不支持 Skill API,通常是前端已更新但 botmux 进程未重启。请重启 botmux 后刷新页面。',
|
|
771
920
|
'skills.globalDefaults': '全局 Skill 注入配置',
|
|
772
921
|
'skills.globalProject': '工作区 Skill',
|
|
773
922
|
'skills.globalProjectOff': '忽略工作区 Skill',
|
|
@@ -885,6 +1034,8 @@ const zh = {
|
|
|
885
1034
|
'botDefaults.docSubscribeModeAll': '所有新评论都触发',
|
|
886
1035
|
'botDefaults.docSubscribeModeHelp': '用 /subscribe-lark-doc 订阅飞书文档后,文档评论会喂进会话、bot 回复发回评论。这里设新订阅的默认触发范围:「仅评论 @ 我」最安全(防刷屏);「所有新评论」适合专用文档。',
|
|
887
1036
|
'botDefaults.sectionGrant': '授权与额度',
|
|
1037
|
+
'botDefaults.autoGrantCard': '未授权 @ 自动弹授权卡',
|
|
1038
|
+
'botDefaults.autoGrantCardHelp': '开启后,群里有人或外部 bot 明确 @ 该 bot 但被对话权限闸挡住时,会自动给 owner 发 /grant 申请卡;关闭后保持权限拦截但静默丢弃。',
|
|
888
1039
|
'botDefaults.restrictGrant': '限制被授权人只能纯对话',
|
|
889
1040
|
'botDefaults.restrictGrantHelp': '开启后,被 /grant 授权的人(owner 自己不受限)只能发普通对话,所有 slash 命令一律拦截:botmux 自带命令、透传命令、/workflow、/introduce、/t 以及 CLI 原生命令(/help 等)。形如 /path/to/file 的内容不会被误判。',
|
|
890
1041
|
'botDefaults.quotaDefault': '默认消息额度',
|
|
@@ -908,6 +1059,10 @@ const zh = {
|
|
|
908
1059
|
'botDefaults.startupCommandsHelp': '开会话后、首条消息之前,自动按顺序发给 CLI 的命令(每条独立回车),如 /effort ultracode。逗号或换行分隔,每行一条,可带参数;留空=不发。下个新会话起效,且每次新会话(含 resume)都重放——所以 /effort ultracode 这类只对当前会话生效的设置不会因 resume 丢失。仅对原生 CLI 会话生效,adopt 接管的会话不发。',
|
|
909
1060
|
'botDefaults.startupCommandsPlaceholder': '每行一条,如 /effort ultracode',
|
|
910
1061
|
'botDefaults.startupCommandsSave': '保存启动命令',
|
|
1062
|
+
'botDefaults.sectionEnv': '环境变量',
|
|
1063
|
+
'botDefaults.envHelp': '注入到本 bot CLI 进程的环境变量(JSON 对象)。典型用途:让某个 bot 走 GLM / 第三方 Anthropic·OpenAI 兼容服务商——填 ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN(GLM 国际站 https://api.z.ai/api/anthropic,国内站 https://open.bigmodel.cn/api/anthropic),或设 HTTPS_PROXY、CLI 专属开关。值仅接受字符串/数字/布尔;BOTMUX_ / LARK_APP_ 等 botmux 保留键会被忽略。下个新会话起效,按会话注入到 CLI 进程(不进共享 tmux server 全局,不会串到别的 bot)。留空=清除。注意:值以明文存于 bots.json,不是密钥保险箱。',
|
|
1064
|
+
'botDefaults.envPlaceholder': '{\n "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",\n "ANTHROPIC_AUTH_TOKEN": "你的 GLM Coding Plan key"\n}',
|
|
1065
|
+
'botDefaults.envSave': '保存环境变量',
|
|
911
1066
|
'nav.roles': '角色管理',
|
|
912
1067
|
'nav.groupRoles': '群角色',
|
|
913
1068
|
'nav.roleProfiles': 'Profiles',
|
|
@@ -1256,6 +1411,14 @@ const en = {
|
|
|
1256
1411
|
'sessions.closeSelected': 'Close selected',
|
|
1257
1412
|
'sessions.clearSelection': 'Clear',
|
|
1258
1413
|
'sessions.selectedCount': '{count} sessions selected',
|
|
1414
|
+
'sessions.idleCleanupOlderThan': 'Idle over',
|
|
1415
|
+
'sessions.idleCleanupThreshold': 'Idle cleanup threshold',
|
|
1416
|
+
'sessions.idleCleanupRun': 'Clean idle',
|
|
1417
|
+
'sessions.idleCleanupCount': '{count} cleanable',
|
|
1418
|
+
'sessions.idleCleanupConfirm': 'Close {count} sessions idle for more than {threshold}?',
|
|
1419
|
+
'sessions.idleCleanupRunning': 'Cleaning…',
|
|
1420
|
+
'sessions.idleCleanupDone': 'Closed {closed}, failed {failed}',
|
|
1421
|
+
'sessions.idleCleanupFailed': 'Cleanup failed',
|
|
1259
1422
|
'sessions.bot': 'Bot',
|
|
1260
1423
|
'sessions.cli': 'CLI',
|
|
1261
1424
|
'sessions.chat': 'Chat',
|
|
@@ -1280,6 +1443,12 @@ const en = {
|
|
|
1280
1443
|
'sessions.writeLinkHint': 'Get a writable terminal link (carries a write-access token; opens in a new tab)',
|
|
1281
1444
|
'sessions.writeLinkFail': 'Failed to get write link',
|
|
1282
1445
|
'sessions.close': 'Close Session',
|
|
1446
|
+
'sessions.restart': 'Restart CLI',
|
|
1447
|
+
'sessions.restartConfirmIntro': 'You are about to restart this CLI.',
|
|
1448
|
+
'sessions.restartConfirmStatus': 'Current status',
|
|
1449
|
+
'sessions.restartConfirmCli': 'CLI',
|
|
1450
|
+
'sessions.restartConfirmQuestion': 'Restart this CLI?',
|
|
1451
|
+
'sessions.restartFailed': 'Restart failed',
|
|
1283
1452
|
'sessions.resume': 'Resume Session',
|
|
1284
1453
|
'sessions.dismiss': 'Close',
|
|
1285
1454
|
'sessions.closeConfirm': 'Close this session?',
|
|
@@ -1317,7 +1486,45 @@ const en = {
|
|
|
1317
1486
|
'insights.loaded': 'Analyzed {count} sessions',
|
|
1318
1487
|
'insights.unavailable': 'Load failed',
|
|
1319
1488
|
'insights.listCount': 'showing {shown}/{total}',
|
|
1320
|
-
'insights.
|
|
1489
|
+
'insights.tabOverview': 'Overview',
|
|
1490
|
+
'insights.tabSessions': 'Sessions',
|
|
1491
|
+
'insights.tabDist': 'Distribution',
|
|
1492
|
+
'insights.tabHot': 'Hotspots',
|
|
1493
|
+
'insights.projectAll': 'All projects',
|
|
1494
|
+
'insights.timeAll': 'All time',
|
|
1495
|
+
'insights.time1d': 'Last 1d',
|
|
1496
|
+
'insights.time7d': 'Last 7d',
|
|
1497
|
+
'insights.time30d': 'Last 30d',
|
|
1498
|
+
'insights.clear': 'Clear',
|
|
1499
|
+
'insights.emptyAnalyzableHint': 'Check “Incl. unanalyzed” to see the remaining sessions.',
|
|
1500
|
+
'insights.showAll': 'Incl. unanalyzed',
|
|
1501
|
+
'insights.distHint': 'Metric distribution across the currently filtered sessions — see the shape and where typical values land.',
|
|
1502
|
+
'insights.distSpans': 'Spans per session',
|
|
1503
|
+
'insights.distFailed': 'Failures per session',
|
|
1504
|
+
'insights.distSlow': 'Slow spans per session',
|
|
1505
|
+
'insights.distAgentTime': 'Agent working time',
|
|
1506
|
+
'insights.distRw': 'Read/write ratio',
|
|
1507
|
+
'insights.distMedian': 'median {v}',
|
|
1508
|
+
'insights.distEmpty': 'No analyzable sessions under the current filter.',
|
|
1509
|
+
'insights.hotHint': 'Cross-session recurrence — where it pays to converge.',
|
|
1510
|
+
'insights.hotToolFailures': 'Tool failure hotspots',
|
|
1511
|
+
'insights.hotSlowSessions': 'Slowest sessions',
|
|
1512
|
+
'insights.hotProjects': 'Projects',
|
|
1513
|
+
'insights.hotComingSoon': 'File / command recurrence hotspots coming soon (needs cross-session engine aggregation).',
|
|
1514
|
+
'insights.hotSessionsCol': 'sessions',
|
|
1515
|
+
'insights.hotFailsCol': 'fails',
|
|
1516
|
+
'insights.hotSlowCol': 'slow',
|
|
1517
|
+
'insights.backToList': 'Back to list',
|
|
1518
|
+
'insights.sortLabel': 'Sort',
|
|
1519
|
+
'insights.sortRecent': 'Recent',
|
|
1520
|
+
'insights.sortReview': 'Review',
|
|
1521
|
+
'insights.sortSpans': 'Spans',
|
|
1522
|
+
'insights.sortFails': 'Failures',
|
|
1523
|
+
'insights.sortSlow': 'Slow',
|
|
1524
|
+
'insights.sortAgent': 'Duration',
|
|
1525
|
+
'insights.readsShort': 'read',
|
|
1526
|
+
'insights.editsShort': 'edit',
|
|
1527
|
+
'insights.durShort': 'dur',
|
|
1321
1528
|
'insights.empty': 'No matching sessions.',
|
|
1322
1529
|
'insights.selectSession': 'Pick a session on the left to see action spans and suggestions.',
|
|
1323
1530
|
'insights.detailLoading': 'Loading session detail…',
|
|
@@ -1732,6 +1939,43 @@ const en = {
|
|
|
1732
1939
|
'sessions.kanban.done': 'Done',
|
|
1733
1940
|
'sessions.kanban.updated': 'Updated {time}',
|
|
1734
1941
|
'sessions.kanban.moreHidden': '{count} more hidden',
|
|
1942
|
+
'sessions.create.button': 'Create session',
|
|
1943
|
+
'sessions.create.title': 'Create session',
|
|
1944
|
+
'sessions.create.content': 'Content',
|
|
1945
|
+
'sessions.create.contentPlaceholder': 'Describe the task; in Lead-dispatch mode you can assign different work to each agent here',
|
|
1946
|
+
'sessions.create.bots': 'Bots (added to the new group)',
|
|
1947
|
+
'sessions.create.noBots': 'No online bots to pick',
|
|
1948
|
+
'sessions.create.mode': 'Collaboration mode',
|
|
1949
|
+
'sessions.create.modeAll': 'Work together',
|
|
1950
|
+
'sessions.create.modeLead': 'Lead dispatch (recommended)',
|
|
1951
|
+
'sessions.create.modeHelp': 'Work together: every selected bot starts its own session with the same content. Lead dispatch: only the lead starts; it @-mentions the other bots in the chat to bring them in.',
|
|
1952
|
+
'sessions.create.lead': 'Lead bot',
|
|
1953
|
+
'sessions.create.leadHelp': 'The content goes to the lead, which decides when to bring up each sub-bot.',
|
|
1954
|
+
'sessions.create.leadPickFirst': 'Pick bots above first',
|
|
1955
|
+
'sessions.create.column': 'Initial column',
|
|
1956
|
+
'sessions.create.columnInProgress': 'In progress now',
|
|
1957
|
+
'sessions.create.columnBacklog': 'Backlog',
|
|
1958
|
+
'sessions.create.columnHelp': 'In progress: start immediately after the group is created. Backlog: create the group and add bots but do not start the CLI; drag to “In Progress” or hit “Start” later to send the content.',
|
|
1959
|
+
'sessions.create.advanced': 'More options',
|
|
1960
|
+
'sessions.create.groupName': 'Group name',
|
|
1961
|
+
'sessions.create.groupNamePlaceholder': 'Defaults to the first line of the content',
|
|
1962
|
+
'sessions.create.workingDir': 'Working directory',
|
|
1963
|
+
'sessions.create.workingDirHelp': 'Optional. If set, binds the new group to this directory (all bots work there). Leave blank to pick a repo via the /repo card in the chat (worktree creation supported).',
|
|
1964
|
+
'sessions.create.submit': 'Create',
|
|
1965
|
+
'sessions.create.submitting': 'Creating…',
|
|
1966
|
+
'sessions.create.cancel': 'Cancel',
|
|
1967
|
+
'sessions.create.start': 'Start',
|
|
1968
|
+
'sessions.create.errContent': 'Please enter the content',
|
|
1969
|
+
'sessions.create.errNoBot': 'Pick at least one bot',
|
|
1970
|
+
'sessions.create.errLead': 'Lead must be one of the selected bots',
|
|
1971
|
+
'sessions.create.failed': 'Create failed',
|
|
1972
|
+
'sessions.create.startFailed': 'Start failed',
|
|
1973
|
+
'sessions.create.doneTitle': 'Created',
|
|
1974
|
+
'sessions.create.doneInProgress': 'Group created and session(s) started',
|
|
1975
|
+
'sessions.create.doneBacklog': 'Group created; session(s) queued in Backlog',
|
|
1976
|
+
'sessions.create.partialFail': '{n} bot(s) could not be started — you can @-mention them in the chat to retry',
|
|
1977
|
+
'sessions.create.openChat': 'Open Feishu chat',
|
|
1978
|
+
'sessions.create.close': 'Close',
|
|
1735
1979
|
'sessions.kanban.openTab': 'Open in new tab',
|
|
1736
1980
|
'sessions.kanban.openFeishu': 'Open in Feishu',
|
|
1737
1981
|
'sessions.kanban.terminalLoading': 'Opening terminal…',
|
|
@@ -1877,6 +2121,45 @@ const en = {
|
|
|
1877
2121
|
'settings.autoRestartHelp': 'Off by default; requires auto-update. After auto-update installs a newer version, restart to apply it if no session is in progress (busy ⇒ slips to the next day).',
|
|
1878
2122
|
'settings.autoUpdateLocalDev': 'This is a local-dev install (running from source); auto-update is unavailable.',
|
|
1879
2123
|
'settings.maintenanceTime': 'Time',
|
|
2124
|
+
'update.section': 'Version & Update',
|
|
2125
|
+
'update.loginRequired': 'Sign in to check the version, update, or restart.',
|
|
2126
|
+
'update.loading': 'Checking…',
|
|
2127
|
+
'update.checkFailed': 'Check failed',
|
|
2128
|
+
'update.current': 'Current version',
|
|
2129
|
+
'update.upToDate': 'Up to date',
|
|
2130
|
+
'update.newAvailable': 'New version {version} available',
|
|
2131
|
+
'update.checkUnavailable': "Couldn't fetch the latest version (offline or network-restricted)",
|
|
2132
|
+
'update.nodeWarn': 'Node {version} is too old; update requires ≥ {required}. Please upgrade Node first.',
|
|
2133
|
+
'update.localDev': 'This is a local-dev install (running from source); "Update to latest" is unavailable — use git pull + build, then restart.',
|
|
2134
|
+
'update.multiInstallWarn': 'Multiple botmux installs detected. npm only updates the npm-global one, which may not be the active version:',
|
|
2135
|
+
'update.kindNpm': 'npm-global',
|
|
2136
|
+
'update.kindSource': 'source checkout',
|
|
2137
|
+
'update.kindUnknown': 'unknown',
|
|
2138
|
+
'update.btnCheck': 'Check for updates',
|
|
2139
|
+
'update.btnChangelog': "View what's new",
|
|
2140
|
+
'update.btnChangelogHide': 'Hide changelog',
|
|
2141
|
+
'update.btnUpdate': 'Update to latest',
|
|
2142
|
+
'update.btnRestart': 'Restart botmux',
|
|
2143
|
+
'update.changelogLoading': 'Loading changelog…',
|
|
2144
|
+
'update.changelogEmpty': 'No release notes newer than the current version.',
|
|
2145
|
+
'update.changelogFailed': "Couldn't load the changelog (offline or network-restricted).",
|
|
2146
|
+
'update.changelogRateLimited': 'GitHub API rate limit hit (60 req/h per IP unauthenticated, easily tripped on shared networks). Try again later.',
|
|
2147
|
+
'update.changelogViewOnGitHub': 'View on GitHub Releases',
|
|
2148
|
+
'update.navBadgeTitle': 'New version {version} available',
|
|
2149
|
+
'update.confirmMultiInstall': 'Multiple botmux installs detected:\n{paths}\n\nnpm only updates the npm-global one, which may not be the active version. Continue anyway?',
|
|
2150
|
+
'update.confirmUpdate': 'This will run npm install -g botmux@latest to update to {version}. Continue?',
|
|
2151
|
+
'update.confirmUpdateNoVer': 'This will run npm install -g botmux@latest to update to the latest version. Continue?',
|
|
2152
|
+
'update.nodeTooOldAlert': 'Node {version} is too old (requires ≥ {required}). Please upgrade Node before updating.',
|
|
2153
|
+
'update.updating': 'Updating (npm install -g botmux@latest)…',
|
|
2154
|
+
'update.updatedChanged': 'Updated {old} → {new}.',
|
|
2155
|
+
'update.confirmRestart': 'A restart is required to apply the new version. Restart now? (Sessions cold-resume; the dashboard briefly disconnects and reconnects.)',
|
|
2156
|
+
'update.alreadyLatestRun': 'Already on the latest version ({version}); nothing to update.',
|
|
2157
|
+
'update.updateFailed': 'Update failed: {detail}',
|
|
2158
|
+
'update.noRestartHint': 'Update installed. Restart later (botmux restart) to apply the new version.',
|
|
2159
|
+
'update.confirmPlainRestart': 'Restart botmux? Sessions cold-resume; the dashboard briefly disconnects and reconnects.',
|
|
2160
|
+
'update.restarting': 'Restarting botmux, waiting to reconnect…',
|
|
2161
|
+
'update.restartSlow': 'Restart is taking a while; please refresh the page manually.',
|
|
2162
|
+
'update.restartFailed': 'Restart failed: {detail}',
|
|
1880
2163
|
'skills.title': 'Skill Management',
|
|
1881
2164
|
'skills.subtitle': 'Manage CLI-neutral botmux Skill assets and choose priority disclosure per bot.',
|
|
1882
2165
|
'skills.installed': 'Installed Skills',
|
|
@@ -1895,6 +2178,26 @@ const en = {
|
|
|
1895
2178
|
'skills.sourceHelpRemote': 'Paste a Skill directory page or repository URL; repository URLs need a repo path.',
|
|
1896
2179
|
'skills.sourceHelpLocalLabel': 'Local CLI Skill directory: ',
|
|
1897
2180
|
'skills.sourceHelpLocal': 'Referenced in place without copying into the botmux store.',
|
|
2181
|
+
'skills.discover': 'Discover Skills',
|
|
2182
|
+
'skills.discoverTitle': 'Discover Local CLI Skills',
|
|
2183
|
+
'skills.discoverHelp': 'Scan CLI Skill directories used by bots configured in this deployment. Selected Skills are registered as local links without copying files.',
|
|
2184
|
+
'skills.discoverEmpty': 'No registerable Skills were found in local CLI skill directories.',
|
|
2185
|
+
'skills.discoverGroupEmpty': 'No registerable Skills were found in this CLI directory.',
|
|
2186
|
+
'skills.discoverRegistered': 'Registered',
|
|
2187
|
+
'skills.discoverSelectAll': 'Select unregistered',
|
|
2188
|
+
'skills.discoverClearSelection': 'Clear selection',
|
|
2189
|
+
'skills.discoverRegister': 'Register selected',
|
|
2190
|
+
'skills.discoverClose': 'Close',
|
|
2191
|
+
'skills.discoverNothingSelected': 'Select at least one unregistered Skill.',
|
|
2192
|
+
'skills.discoverRegisteringBatch': 'Registering {total} Skills',
|
|
2193
|
+
'skills.sourceCodex': 'Local Codex',
|
|
2194
|
+
'skills.sourceClaude': 'Local Claude',
|
|
2195
|
+
'skills.sourceTrae': 'Local Trae',
|
|
2196
|
+
'skills.sourceCursor': 'Local Cursor',
|
|
2197
|
+
'skills.sourceGemini': 'Local Gemini',
|
|
2198
|
+
'skills.sourceOpenCode': 'Local OpenCode',
|
|
2199
|
+
'skills.sourceLocalLink': 'Local link',
|
|
2200
|
+
'skills.sourceBotmuxCopy': 'botmux store',
|
|
1898
2201
|
'skills.path': 'Repo Path (optional)',
|
|
1899
2202
|
'skills.pathPlaceholder': 'Blank uses the path from the GitHub URL',
|
|
1900
2203
|
'skills.ref': 'Ref (optional)',
|
|
@@ -1907,6 +2210,7 @@ const en = {
|
|
|
1907
2210
|
'skills.prevPage': 'Previous page',
|
|
1908
2211
|
'skills.nextPage': 'Next page',
|
|
1909
2212
|
'skills.empty': 'No installed skills yet. Install from a local directory, Git, or GitHub.',
|
|
2213
|
+
'skills.apiUnavailable': 'This Dashboard backend does not expose the Skill API. Usually the frontend was updated before the botmux process restarted. Restart botmux, then refresh this page.',
|
|
1910
2214
|
'skills.globalDefaults': 'Global Skill Delivery',
|
|
1911
2215
|
'skills.globalProject': 'Workspace Skills',
|
|
1912
2216
|
'skills.globalProjectOff': 'Ignore workspace Skills',
|
|
@@ -2024,6 +2328,8 @@ const en = {
|
|
|
2024
2328
|
'botDefaults.docSubscribeModeAll': 'Every new comment',
|
|
2025
2329
|
'botDefaults.docSubscribeModeHelp': 'After subscribing to a Feishu doc with /subscribe-lark-doc, its comments feed into the session and the bot replies back into the comment. This sets the default trigger range for new subscriptions: "only when a comment @s me" is safest (avoids noise); "every new comment" suits dedicated docs.',
|
|
2026
2330
|
'botDefaults.sectionGrant': 'Authorization & Quota',
|
|
2331
|
+
'botDefaults.autoGrantCard': 'Auto grant card for blocked @mentions',
|
|
2332
|
+
'botDefaults.autoGrantCardHelp': 'When enabled, if a person or external bot explicitly @mentions this bot in a group but the talk gate blocks it, BotMux sends a /grant request card to the owner. When disabled, the gate still blocks but stays silent.',
|
|
2027
2333
|
'botDefaults.restrictGrant': 'Restrict grantees to plain conversation',
|
|
2028
2334
|
'botDefaults.restrictGrantHelp': 'When enabled, /grant-authorized users (the owner is exempt) can only send plain messages; every slash command is blocked: botmux built-in commands, passthrough commands, /workflow, /introduce, /t, and CLI-native commands (/help, etc.). Text like /path/to/file is not misclassified.',
|
|
2029
2335
|
'botDefaults.quotaDefault': 'Default message quota',
|
|
@@ -2047,6 +2353,10 @@ const en = {
|
|
|
2047
2353
|
'botDefaults.startupCommandsHelp': 'Commands auto-sent to the CLI in order after launch, before the first message (each its own Enter), e.g. /effort ultracode. Comma- or newline-separated, one per line, arguments allowed; empty = none. Takes effect from the next session, and replays on every new session (incl. resume) — so session-only settings like /effort ultracode survive a resume. Native CLI sessions only; adopted sessions are not driven.',
|
|
2048
2354
|
'botDefaults.startupCommandsPlaceholder': 'One per line, e.g. /effort ultracode',
|
|
2049
2355
|
'botDefaults.startupCommandsSave': 'Save startup commands',
|
|
2356
|
+
'botDefaults.sectionEnv': 'Environment variables',
|
|
2357
|
+
'botDefaults.envHelp': 'Environment variables injected into THIS bot\'s CLI process (a JSON object). Typical use: run a bot on GLM / a third-party Anthropic·OpenAI-compatible provider — set ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN (GLM: https://api.z.ai/api/anthropic, or https://open.bigmodel.cn/api/anthropic in China), or set HTTPS_PROXY / a CLI feature flag. Values accept string/number/boolean only; botmux-reserved keys (BOTMUX_, LARK_APP_, …) are ignored. Takes effect from the next session, injected per-session into the CLI process (never into the shared tmux server env, so it can\'t leak across bots). Empty = clear. Note: values live in bots.json in plaintext — not a secret vault.',
|
|
2358
|
+
'botDefaults.envPlaceholder': '{\n "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",\n "ANTHROPIC_AUTH_TOKEN": "your GLM Coding Plan key"\n}',
|
|
2359
|
+
'botDefaults.envSave': 'Save environment variables',
|
|
2050
2360
|
'nav.roles': 'Role Management',
|
|
2051
2361
|
'nav.groupRoles': 'Group Roles',
|
|
2052
2362
|
'nav.roleProfiles': 'Profiles',
|