@ycodium-ai/plugin-im 0.2.3230 → 0.2.3236

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/locales/en.json CHANGED
@@ -199,6 +199,7 @@
199
199
  }
200
200
  },
201
201
  "reply": {
202
+ "deliveryFailed": "The reply could not be delivered. Check this bot's connection and permissions, then try again.",
202
203
  "wecomDeliveryFailed": "This reply didn't reach {{recipient}} in WeCom: they are outside this app's visible range. Add them to the app's visible range in the WeCom admin console, then ask the agent to send it again.",
203
204
  "conclusionRecovered": "(Finished while restarting; delivered now)",
204
205
  "notAllowed": "You are not on this bot's allow list, so this tap had no effect.",
@@ -206,7 +207,8 @@
206
207
  "projectArchived": "Project \"{{title}}\" is archived. Restore it, or send /repo to pick another project, then message again.",
207
208
  "projectMissing": "The project this chat was working on is no longer on this machine (it may have been deleted), so a thread cannot be started. Send /repo to pick another one.",
208
209
  "threadGone": "The earlier session was deleted or archived, so this chat now starts a new one.",
209
- "turnFailedToStart": "This message couldn't be dispatched. Please send it again later. Reference {{ref}}.",
210
+ "dispatchFailed": "This message couldn't be dispatched. Please send it again later.",
211
+ "turnFailedToStart": "{{message}} Reference {{ref}}.",
210
212
  "turnFailedToStartQuoted": "This message (starting with \"{{excerpt}}\") couldn't be dispatched. Please send it again later. Reference {{ref}}.",
211
213
  "turnFailedToStartAttachment": "This message (with the attachment \"{{excerpt}}\") couldn't be dispatched. Please send it again later. Reference {{ref}}.",
212
214
  "turnRetrying": "Couldn't dispatch this message yet. Retrying automatically in the background, so there's no need to send it again. You'll get another message if it still fails. Reference {{ref}}.",
@@ -322,8 +324,8 @@
322
324
  "team": "· /team — give this project's team a goal with each message; use /repo to pick the project first",
323
325
  "thread": "· /thread — go back to a normal session",
324
326
  "aliases": "Chinese shortcuts (停 / 继续发送 / 状态 / 新对话 / 会话列表 / 切换会话 / 换模型 / 计划模式 / 换项目 / 建群 / 换团队 / 换对话) work when the reply language is Chinese.",
325
- "sessions": "· /sessions — list the sessions this bot opened for this chat's project",
326
- "resume": "· /resume number — switch to one of them (a number from /sessions, or the start of its id)",
327
+ "sessions": "· /sessions — list this project's sessions; add a project number from /repo to list the ones this bot opened in another project",
328
+ "resume": "· /resume number-or-id-prefix — switch sessions; one from another project switches the project too",
327
329
  "model": "· /model — see the model this chat uses; /model number or /model instance/model switches it",
328
330
  "plan": "· /plan — toggle plan mode (the agent proposes a plan instead of acting); /plan on, /plan off set it",
329
331
  "panel": "Send /panel to open the command panel with a button for every command.",
@@ -332,12 +334,18 @@
332
334
  "syncNote": "· After a private chat attaches a session, web user text and final assistant text sync here (groups never sync)."
333
335
  },
334
336
  "sessions": {
335
- "title": "Sessions this bot opened for this chat's project ({{count}}):",
336
- "empty": "This bot has not opened any session for this chat's project yet. Send a message to start one.",
337
+ "title": "This project's sessions ({{count}}):",
338
+ "empty": "This bot has not opened any session in this project yet. Send a message to start one.",
337
339
  "more": "{{count}} more not shown — reach them with /resume and the start of an id.",
338
340
  "footer": "Switch with /resume number, or /resume and the start of an id.",
339
341
  "untitled": "Untitled",
340
342
  "unavailable": "Could not read the session list right now. Try again in a moment.",
343
+ "projectNotFound": "That project number does not exist. Send /repo to see the numbers.",
344
+ "projectNumberExpected": "Put a project number after /sessions (a number from /repo), for example /sessions 2.",
345
+ "project": "Project: \"{{title}}\"",
346
+ "otherProjectTitle": "Sessions this bot opened in project \"{{project}}\" ({{count}}):",
347
+ "otherProjectFooter": "You are still in this chat's current project. /resume number, or /resume with the start of an id (also an unlisted one this bot opened), switches there and switches the chat's project too.",
348
+ "projectEmpty": "This bot has not opened any session in that project yet. To start one there, send /repo with that project number to move this chat there, then send a message.",
341
349
  "badge": {
342
350
  "current": "★ current",
343
351
  "running": "● running",
@@ -353,11 +361,14 @@
353
361
  },
354
362
  "resume": {
355
363
  "notFound": "No session matches \"{{query}}\". Use /sessions to see the list.",
364
+ "ambiguous": "More than one session starts with \"{{query}}\". Give a few more characters of the id.",
356
365
  "busy": "A turn is running in this chat — send /stop first, then switch.",
357
366
  "already": "This chat is already on that session.",
358
367
  "gone": "That session was deleted or archived, so it cannot be resumed.",
359
368
  "runningElsewhere": "That session is running a turn in another chat — stop it there first.",
360
369
  "done": "Switched to \"{{title}}\". Send a message to keep going from there.",
370
+ "doneInProject": "Switched to project \"{{project}}\", session \"{{title}}\". Send a message to keep going from there.",
371
+ "switchFailed": "Could not switch to that session. The chat's project and session have not changed; send that /resume again in a moment.",
361
372
  "confirmWeb": "\"{{title}}\" was opened on the web. Send /resume with the same number again (or /resume confirm) to attach; /resume cancel to abort.",
362
373
  "cancelled": "Attach cancelled.",
363
374
  "nothingPending": "No web session is waiting for confirm. Use /sessions to see the list."
@@ -390,6 +401,8 @@
390
401
  "interrupted": "Interrupted",
391
402
  "continued": "Continues in the card below"
392
403
  },
404
+ "thinking": "Thinking…",
405
+ "usingTool": "Using {{name}}…",
393
406
  "step": {
394
407
  "think": "think",
395
408
  "command": "command",
@@ -453,12 +466,29 @@
453
466
  "picked": "{{title}}\nSend /repo to change it."
454
467
  }
455
468
  },
469
+ "wecomSetup": {
470
+ "action": {
471
+ "label": "Scan to create a WeCom smart bot",
472
+ "description": "Scan with WeCom to create a smart bot. Ycodium saves its Bot ID and Secret in the bot list on this machine."
473
+ },
474
+ "status": {
475
+ "waiting": "Scan the QR code with WeCom, then confirm in WeCom to create the smart bot."
476
+ },
477
+ "done": "The WeCom smart bot was created and saved. Message it in WeCom to try it, then pick a project in the chat.",
478
+ "doneNeedsAllowList": "The WeCom smart bot was created and saved. Three steps to start using it:",
479
+ "nextSteps": "1. Message it in WeCom; it replies with your WeCom user id (the QR result doesn't include it).\n2. Put that id in “Allowed people” on the bot's row and save.\n3. Pick a project in the chat.",
480
+ "failure": {
481
+ "expired": "This QR code expired before the bot was created. Click “Try again” to get a new one.",
482
+ "failed": "Could not create the WeCom smart bot. Click “Try again” to start over.",
483
+ "saveFailed": "The smart bot was created, but it could not be saved on this machine. Find the bot in WeCom, copy its Bot ID and Secret, and add it with “Add a bot”. If WeCom doesn't show the Secret, click “Try again” to create a new bot instead; the bot from this attempt stays in WeCom, and you can delete it there."
484
+ }
485
+ },
456
486
  "setup": {
457
487
  "action": {
458
488
  "label": "Connect a Lark bot",
459
489
  "description": "Scan once with the Lark app. Ycodium creates a bot app under your account, publishes it for you only, and adds the bot to the list with its credentials saved. Nothing to fill in.",
460
490
  "badge": "Beta",
461
- "warning": "This relies on Lark developer console interfaces that are not public, so it may stop working. If it does, set the app up by hand in the developer console."
491
+ "warning": "Lark QR setup relies on Lark developer console interfaces that are not public, so it may stop working. If it does, set the app up by hand in the developer console."
462
492
  },
463
493
  "manual": {
464
494
  "createApp": {
@@ -634,6 +664,32 @@
634
664
  "diagnostic": {
635
665
  "ref": "Reference: {{ref}}\n{{detail}}"
636
666
  },
667
+ "larkCallbackProbe": {
668
+ "label": "Verify card buttons",
669
+ "description": "Send a private test card to the first person in this bot's allowlist (usually you) and wait up to {{seconds}} seconds for your click.",
670
+ "step": "Send a private test card and wait for the click",
671
+ "waiting": "Test card sent privately to the first person in the allowlist ({{id}}, usually you). Click its button in Lark within {{seconds}} seconds.",
672
+ "notConnected": "Skipped: this bot is not connected on this machine. Use “Reconnect” on this row to connect it, then verify again.",
673
+ "noRecipient": "Skipped: nobody to send the test card to. Set this bot up with “Connect a Lark bot” (the QR scan) first; it adds you to the allowlist for you.",
674
+ "sendFailed": "Could not send the test card. Use “Repair scopes” on this row to check the messaging permissions, make sure the bot is connected, then verify again.",
675
+ "timeout": "No test-card callback arrived within {{seconds}} seconds. If you didn't click the card in time, just click “Verify card buttons” again. If you did, open Events & Callbacks in the developer console, set callback subscriptions to Long connection, and add {{callbacks}}, then verify again.\nDeveloper console URL:\n{{url}}",
676
+ "toast": "Click received. Card buttons are working.",
677
+ "staleToast": "This test card's check has ended; the result is in the settings panel and your private message. To check again, click “Verify card buttons” in settings.",
678
+ "notYoursToast": "This test card was sent to the first person in the bot's allowlist; your click doesn't count toward the check. You can ignore it.",
679
+ "verified": "Received card.action.trigger from the test card. Card buttons are working.",
680
+ "aborted": "Verification was interrupted because the bot disconnected. Wait for it to reconnect, or use “Reconnect” on this row, then verify again.",
681
+ "card": {
682
+ "title": "🧪 Verify card buttons",
683
+ "body": "Click the button below within {{seconds}} seconds. Verification passes only after the machine running this bot confirms it received your click.",
684
+ "button": "Complete verification"
685
+ },
686
+ "notice": {
687
+ "verified": "✅ Verification passed: your click on the test card arrived as card.action.trigger. Card buttons are working.",
688
+ "timeout": "⚠️ Verification timed out: no card.action.trigger arrived from the test card, so buttons are still unverified. If you didn't click in time, click “Verify card buttons” again. If you did, open Events & Callbacks in the developer console, set callback subscriptions to Long connection, add card.action.trigger, then click “Verify card buttons” again.\nDeveloper console URL:\n{{url}}",
689
+ "sendFailed": "⚠️ Verification failed: the test card could not be sent, so card.action.trigger is still unverified. Use “Repair scopes” on the bot's row in settings to check messaging permissions, then click “Verify card buttons” again.",
690
+ "aborted": "⚠️ Verification interrupted: the bot disconnected before card.action.trigger was confirmed. Wait for the bot to reconnect, or use “Reconnect” on its row in settings, then click “Verify card buttons” again."
691
+ }
692
+ },
637
693
  "larkRepair": {
638
694
  "label": "Repair scopes",
639
695
  "description": "List missing required scopes and a link to request them on the Feishu open platform; an app administrator then publishes the app version manually.",
@@ -672,12 +728,21 @@
672
728
  "help": "Show all commands"
673
729
  },
674
730
  "settingsSection": {
731
+ "lastMessageError": {
732
+ "title": "Last message failed",
733
+ "separator": ": ",
734
+ "code": "Error code {{code}}",
735
+ "reference": "Reference {{referenceId}}"
736
+ },
675
737
  "empty": "No bots yet",
738
+ "emptyGuide": "Use \"{{larkLabel}}\" or \"{{wecomLabel}}\" to scan and create a bot in one step. For other platforms, choose \"{{addBotLabel}}\" and enter the credentials from that platform's developer console.",
676
739
  "unavailable": "This machine doesn't have the chat bridge right now.",
677
740
  "loadFailed": "Couldn't load the chat-bridge settings.",
678
741
  "retry": "Try again",
679
742
  "general": "General",
680
743
  "addBot": "Add a bot",
744
+ "moreSettings": "More settings",
745
+ "moreSettingsIssues": "More settings ({{count}} to fix)",
681
746
  "save": "Save",
682
747
  "revert": "Undo changes",
683
748
  "saveFailed": "Couldn't save.",
@@ -696,7 +761,10 @@
696
761
  "connected": "Connected",
697
762
  "notConnected": "Not connected"
698
763
  },
764
+ "online": "{{connected}} / {{configured}} online",
765
+ "onlineLabel": "{{configured}} configured bots, {{connected}} online",
699
766
  "connection": {
767
+ "since": "Since {{time}}",
700
768
  "failed": "The last connection attempt failed.",
701
769
  "details": "Details: {{error}}",
702
770
  "reconnect": "You can try again with Reconnect below.",
@@ -199,6 +199,7 @@
199
199
  }
200
200
  },
201
201
  "reply": {
202
+ "deliveryFailed": "回复未能送达。请检查这个机器人的连接与权限,然后重试。",
202
203
  "wecomDeliveryFailed": "这条回复没送到企业微信里的 {{recipient}}:对方不在这个应用的可见范围。到企业微信管理后台把他们加进应用的可见范围,再让 agent 重发一次。",
203
204
  "conclusionRecovered": "(重启期间完成,现在补发)",
204
205
  "notAllowed": "你不在这个机器人的允许名单里,这次点击没有生效。",
@@ -206,7 +207,8 @@
206
207
  "projectArchived": "项目「{{title}}」已归档。恢复它,或发 /repo 换个项目,再发消息。",
207
208
  "projectMissing": "这个聊天原来做的项目已经不在这台机器上了(可能被删了),开不了会话。发 /repo 重新选一个。",
208
209
  "threadGone": "之前那条会话已被删除或归档,这个聊天改为开一条新会话。",
209
- "turnFailedToStart": "这条消息没能派出去,请稍后重发。参考号 {{ref}}。",
210
+ "dispatchFailed": "这条消息没能派出去,请稍后重发。",
211
+ "turnFailedToStart": "{{message}}参考号 {{ref}}。",
210
212
  "turnFailedToStartQuoted": "这条消息(开头是「{{excerpt}}」)没能派出去,请稍后重发。参考号 {{ref}}。",
211
213
  "turnFailedToStartAttachment": "这条消息(带附件「{{excerpt}}」)没能派出去,请稍后重发。参考号 {{ref}}。",
212
214
  "turnRetrying": "这条消息暂时没能派出去,会在后台自动重试,不用再发一次;还是不行会再告诉你。参考号 {{ref}}。",
@@ -322,8 +324,8 @@
322
324
  "team": "· /team —— 每条消息都给这个项目的团队开一个目标;先用 /repo 选项目",
323
325
  "thread": "· /thread —— 切回普通会话",
324
326
  "aliases": "中文也行:停 / 继续发送 / 状态 / 新对话 / 会话列表 / 切换会话 / 换模型 / 计划模式 / 换项目 / 建群 / 换团队 / 换对话。",
325
- "sessions": "· /sessions —— 列出本机器人为这个聊天的项目开过的会话",
326
- "resume": "· /resume 编号 —— 切到其中一条(/sessions 里的编号,或会话 id 的开头)",
327
+ "sessions": "· /sessions —— 列出本项目的会话;加 /repo 里的项目编号,列出本机器人在别的项目开过的",
328
+ "resume": "· /resume 编号或 id 开头 —— 切会话;别的项目的会话会连同项目一起切",
327
329
  "model": "· /model —— 看这个聊天用的模型;/model 编号 或 /model 实例/模型 切换",
328
330
  "plan": "· /plan —— 开关计划模式(agent 先出计划、不动手);/plan on、/plan off 明确设定",
329
331
  "panel": "发 /panel 打开可点的命令面板。",
@@ -332,12 +334,18 @@
332
334
  "syncNote": "· 私聊附着会话后,网页上的用户文字与终态助手文字会同步到此(群聊不同步)。"
333
335
  },
334
336
  "sessions": {
335
- "title": "本机器人为这个聊天的项目开过的会话({{count}} 条):",
336
- "empty": "本机器人还没有为这个聊天的项目开过会话,发一句话就会开一条。",
337
+ "title": "本项目的会话({{count}} 条):",
338
+ "empty": "本机器人还没在本项目开过会话,发一句话就会开一条。",
337
339
  "more": "还有 {{count}} 条没列出——用 /resume 加会话 id 的开头也能切到。",
338
340
  "footer": "用 /resume 编号 切换,或 /resume 加会话 id 的开头。",
339
341
  "untitled": "(无标题)",
340
342
  "unavailable": "现在读不出会话列表,稍后再试。",
343
+ "projectNotFound": "项目编号不存在。发 /repo 看有哪些编号。",
344
+ "projectNumberExpected": "/sessions 后面跟项目编号(/repo 列出的数字),例如 /sessions 2。",
345
+ "project": "项目:「{{title}}」",
346
+ "otherProjectTitle": "本机器人在项目「{{project}}」里开过的会话({{count}} 条):",
347
+ "otherProjectFooter": "你仍在这个聊天当前的项目里。发 /resume 编号,或 /resume 加会话 id 的开头(本机器人开过但没列出的也行),就能切过去,聊天的项目会一起切。",
348
+ "projectEmpty": "本机器人还没在那个项目里开过会话。想在那里开,发 /repo 加那个项目编号换过去,再发一句话。",
341
349
  "badge": {
342
350
  "current": "★ 当前",
343
351
  "running": "● 在跑",
@@ -353,11 +361,14 @@
353
361
  },
354
362
  "resume": {
355
363
  "notFound": "没有哪条会话对得上「{{query}}」。用 /sessions 看看有哪些。",
364
+ "ambiguous": "对得上「{{query}}」的会话不止一条,id 开头再多给几位。",
356
365
  "busy": "这个聊天有一轮正在跑——先 /stop,再切换。",
357
366
  "already": "这个聊天已经在那条会话里了。",
358
367
  "gone": "那条会话已被删除或归档,接不上了。",
359
368
  "runningElsewhere": "那条会话正在别的聊天里跑着一轮——先到那边停掉它。",
360
369
  "done": "已切到「{{title}}」。发一句话就从那里接着聊。",
370
+ "doneInProject": "已切到项目「{{project}}」的会话「{{title}}」。发一句话就从那里接着聊。",
371
+ "switchFailed": "没能切到那条会话,聊天的项目和会话都没变,稍后重发刚才那条 /resume。",
361
372
  "confirmWeb": "「{{title}}」是网页开的会话。再发一次 /resume 同一编号(或 /resume confirm)确认附着;/resume cancel 取消。",
362
373
  "cancelled": "已取消附着。",
363
374
  "nothingPending": "没有待确认的网页会话。用 /sessions 看看有哪些。"
@@ -390,6 +401,8 @@
390
401
  "interrupted": "已中断",
391
402
  "continued": "后续见下方卡片"
392
403
  },
404
+ "thinking": "正在思考中…",
405
+ "usingTool": "正在使用 {{name}}…",
393
406
  "step": {
394
407
  "think": "思考",
395
408
  "command": "命令",
@@ -453,12 +466,29 @@
453
466
  "picked": "{{title}}\n发 /repo 可以更换。"
454
467
  }
455
468
  },
469
+ "wecomSetup": {
470
+ "action": {
471
+ "label": "扫码创建企业微信智能机器人",
472
+ "description": "用企业微信扫码创建智能机器人。Ycodium 会把 Bot ID 和 Secret 存进这台机器的机器人列表。"
473
+ },
474
+ "status": {
475
+ "waiting": "用企业微信扫描二维码,再在企业微信里确认创建智能机器人。"
476
+ },
477
+ "done": "企业微信智能机器人已创建并保存。去企业微信给它发一条消息试试,再在聊天里选项目。",
478
+ "doneNeedsAllowList": "企业微信智能机器人已创建并保存。按下面三步就能开始用:",
479
+ "nextSteps": "1. 去企业微信给它发一条消息,它会回你的企业微信用户 id(扫码结果里没有这个 id)。\n2. 把 id 填进这个机器人那一行的「允许的人」,保存。\n3. 在聊天里选项目。",
480
+ "failure": {
481
+ "expired": "二维码在创建完成前过期了。点「再试一次」换一个新二维码。",
482
+ "failed": "没能创建企业微信智能机器人。点「再试一次」重新来一遍。",
483
+ "saveFailed": "智能机器人已创建,但没能存到这台机器上。请到企业微信里找到这个智能机器人,复制它的 Bot ID 和 Secret,点「添加机器人」手动补上。企业微信里看不到 Secret 的话,点「再试一次」重新创建一个;这次建出的机器人会留在企业微信里,可以到企业微信里删掉。"
484
+ }
485
+ },
456
486
  "setup": {
457
487
  "action": {
458
488
  "label": "连接飞书机器人",
459
489
  "description": "用飞书 App 扫一次码。Ycodium 会在你的账号下建好机器人应用,发布为仅自己可见,并把这个机器人连同凭据直接存进机器人列表,不用手填。",
460
490
  "badge": "测试版",
461
- "warning": "这个功能依赖飞书开发者后台的非公开接口,可能会失效。失效时请到开发者后台手动配置应用。"
491
+ "warning": "飞书扫码依赖飞书开发者后台的非公开接口,可能会失效。失效时请到开发者后台手动配置应用。"
462
492
  },
463
493
  "manual": {
464
494
  "createApp": {
@@ -634,6 +664,32 @@
634
664
  "diagnostic": {
635
665
  "ref": "参考号:{{ref}}\n{{detail}}"
636
666
  },
667
+ "larkCallbackProbe": {
668
+ "label": "验证卡片按钮",
669
+ "description": "私发测试卡给这一行允许名单里的第一个人(通常就是你),等你在 {{seconds}} 秒内点击卡上的按钮。",
670
+ "step": "私发测试卡并等待点击",
671
+ "waiting": "测试卡已私发给允许名单里的第一个人({{id}},通常就是你)。请在 {{seconds}} 秒内到飞书里点卡上的按钮。",
672
+ "notConnected": "跳过:这个机器人还没在这台机器上连上。请先用这一行的「重新连接」连上,再验证。",
673
+ "noRecipient": "跳过:没有可接收测试卡的人。请先用「连接飞书机器人」扫码配置,扫码会自动把你加进这一行的允许名单。",
674
+ "sendFailed": "发不出测试卡。请用这一行的「补全权限」核对消息权限,确认机器人连着,再验证。",
675
+ "timeout": "{{seconds}} 秒内没收到测试卡的按钮回调。要是没来得及点,直接再点「验证卡片按钮」;要是点了还超时,请到开发者后台的「事件与回调」,把回调订阅设为「使用长连接」,添加 {{callbacks}} 后再验证。\n开发者后台地址:\n{{url}}",
676
+ "toast": "已收到点击,卡片按钮可用。",
677
+ "staleToast": "这张测试卡的验证已经结束,结果以设置面板和私信为准。要再验证,请在设置里点「验证卡片按钮」。",
678
+ "notYoursToast": "这张测试卡是发给允许名单里第一个人的,你的点击不算在验证里,忽略就好。",
679
+ "verified": "已收到测试卡的 card.action.trigger,卡片按钮可用。",
680
+ "aborted": "机器人断开,验证中断。请等它恢复连接,或用这一行的「重新连接」,再验证。",
681
+ "card": {
682
+ "title": "🧪 验证卡片按钮",
683
+ "body": "请在 {{seconds}} 秒内点击下方按钮;机器人所在的机器确认收到这次点击后,验证才算通过。",
684
+ "button": "完成验证"
685
+ },
686
+ "notice": {
687
+ "verified": "✅ 验证通过:已收到你点击测试卡发来的 card.action.trigger,卡片按钮可用。",
688
+ "timeout": "⚠️ 验证超时:没收到测试卡的 card.action.trigger,还不能确认按钮可用。要是没来得及点,再点一次「验证卡片按钮」就行;要是点了还超时,请先到开发者后台的「事件与回调」,把回调订阅设为「使用长连接」并添加 card.action.trigger,再点一次「验证卡片按钮」。\n开发者后台地址:\n{{url}}",
689
+ "sendFailed": "⚠️ 验证失败:发不出测试卡,还不能确认 card.action.trigger 可用。请在设置里用这个机器人那一行的「补全权限」核对消息权限,再点「验证卡片按钮」。",
690
+ "aborted": "⚠️ 验证中断:机器人在确认 card.action.trigger 之前断开了。请等它恢复连接,或在设置里用这个机器人那一行的「重新连接」,再点「验证卡片按钮」。"
691
+ }
692
+ },
637
693
  "larkRepair": {
638
694
  "label": "补全权限",
639
695
  "description": "列出缺少的必需权限和飞书开放平台申请链接,再由管理员手动发布应用版本。",
@@ -672,12 +728,21 @@
672
728
  "help": "列出全部命令"
673
729
  },
674
730
  "settingsSection": {
731
+ "lastMessageError": {
732
+ "title": "最近一条消息处理失败",
733
+ "separator": ":",
734
+ "code": "错误码 {{code}}",
735
+ "reference": "参考号 {{referenceId}}"
736
+ },
675
737
  "empty": "还没有机器人",
738
+ "emptyGuide": "用「{{larkLabel}}」或「{{wecomLabel}}」扫一下就能建好机器人。其他平台点「{{addBotLabel}}」,填入在该平台开发者后台拿到的凭据。",
676
739
  "unavailable": "这台机器现在没有聊天桥。",
677
740
  "loadFailed": "聊天桥的设置没能读出来。",
678
741
  "retry": "再试一次",
679
742
  "general": "通用设置",
680
743
  "addBot": "添加机器人",
744
+ "moreSettings": "更多设置",
745
+ "moreSettingsIssues": "更多设置({{count}} 项待修正)",
681
746
  "save": "保存",
682
747
  "revert": "撤销改动",
683
748
  "saveFailed": "没能存上。",
@@ -696,7 +761,10 @@
696
761
  "connected": "已连接",
697
762
  "notConnected": "未连接"
698
763
  },
764
+ "online": "{{connected}} / {{configured}} 在线",
765
+ "onlineLabel": "已配齐 {{configured}} 个机器人,其中 {{connected}} 个在线",
699
766
  "connection": {
767
+ "since": "状态自 {{time}} 起",
700
768
  "failed": "上次连接没有成功。",
701
769
  "details": "详情:{{error}}",
702
770
  "reconnect": "可以点下方的「重新连接」再试。",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ycodium-ai/plugin-im",
3
- "version": "0.2.3230",
3
+ "version": "0.2.3236",
4
4
  "description": "Talk to your agents from Telegram, WeCom, Lark, or WeChat (experimental).",
5
5
  "keywords": [
6
6
  "im",
@@ -32,7 +32,7 @@
32
32
  "markdown-it": "^15.0.2",
33
33
  "react": "19.2.6",
34
34
  "vite-plus": "0.2.2",
35
- "@ycodium-ai/plugin-api": "0.2.3230",
35
+ "@ycodium-ai/plugin-api": "0.2.3236",
36
36
  "ycodium-react-test-harness": "0.0.0"
37
37
  },
38
38
  "ycodium": {