@songsid/agend 2.3.4-beta.1 → 2.3.4-beta.11

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.
Files changed (303) hide show
  1. package/THIRD_PARTY_NOTICES.md +37 -0
  2. package/dist/agend-home.d.ts +13 -0
  3. package/dist/agend-home.js +42 -0
  4. package/dist/agend-home.js.map +1 -1
  5. package/dist/agent-cli-instructions.md +1 -1
  6. package/dist/agent-credentials.d.ts +24 -0
  7. package/dist/agent-credentials.js +66 -0
  8. package/dist/agent-credentials.js.map +1 -0
  9. package/dist/agent-endpoint.d.ts +3 -1
  10. package/dist/agent-endpoint.js +13 -0
  11. package/dist/agent-endpoint.js.map +1 -1
  12. package/dist/auth-api.js +10 -2
  13. package/dist/auth-api.js.map +1 -1
  14. package/dist/authority/session-authorizations.d.ts +28 -4
  15. package/dist/authority/session-authorizations.js +63 -17
  16. package/dist/authority/session-authorizations.js.map +1 -1
  17. package/dist/backend/antigravity.js +3 -1
  18. package/dist/backend/antigravity.js.map +1 -1
  19. package/dist/backend/claude-code.d.ts +3 -0
  20. package/dist/backend/claude-code.js +89 -4
  21. package/dist/backend/claude-code.js.map +1 -1
  22. package/dist/backend/codex-footer-hints.d.ts +4 -0
  23. package/dist/backend/codex-footer-hints.js +27 -0
  24. package/dist/backend/codex-footer-hints.js.map +1 -0
  25. package/dist/backend/codex-metadata.d.ts +14 -0
  26. package/dist/backend/codex-metadata.js +45 -0
  27. package/dist/backend/codex-metadata.js.map +1 -1
  28. package/dist/backend/codex-session-lookup.d.ts +35 -0
  29. package/dist/backend/codex-session-lookup.js +93 -0
  30. package/dist/backend/codex-session-lookup.js.map +1 -1
  31. package/dist/backend/codex-speed.d.ts +14 -0
  32. package/dist/backend/codex-speed.js +35 -0
  33. package/dist/backend/codex-speed.js.map +1 -0
  34. package/dist/backend/codex.d.ts +27 -0
  35. package/dist/backend/codex.js +133 -25
  36. package/dist/backend/codex.js.map +1 -1
  37. package/dist/backend/kiro-identity.d.ts +2 -0
  38. package/dist/backend/kiro-identity.js +13 -6
  39. package/dist/backend/kiro-identity.js.map +1 -1
  40. package/dist/backend/kiro.d.ts +3 -0
  41. package/dist/backend/kiro.js +68 -5
  42. package/dist/backend/kiro.js.map +1 -1
  43. package/dist/backend/muse.js +5 -3
  44. package/dist/backend/muse.js.map +1 -1
  45. package/dist/backend/types.d.ts +6 -1
  46. package/dist/backend/types.js +3 -0
  47. package/dist/backend/types.js.map +1 -1
  48. package/dist/backend-availability.d.ts +6 -0
  49. package/dist/backend-availability.js +13 -5
  50. package/dist/backend-availability.js.map +1 -1
  51. package/dist/cache-ledger.d.ts +95 -0
  52. package/dist/cache-ledger.js +276 -4
  53. package/dist/cache-ledger.js.map +1 -1
  54. package/dist/cache-service.d.ts +5 -0
  55. package/dist/cache-service.js +16 -4
  56. package/dist/cache-service.js.map +1 -1
  57. package/dist/channel/adapters/discord.js +27 -4
  58. package/dist/channel/adapters/discord.js.map +1 -1
  59. package/dist/channel/adapters/telegram.d.ts +51 -0
  60. package/dist/channel/adapters/telegram.js +238 -18
  61. package/dist/channel/adapters/telegram.js.map +1 -1
  62. package/dist/channel/inbox-temp-name.d.ts +9 -0
  63. package/dist/channel/inbox-temp-name.js +13 -0
  64. package/dist/channel/inbox-temp-name.js.map +1 -0
  65. package/dist/channel/mcp-tools.js +3 -3
  66. package/dist/channel/mcp-tools.js.map +1 -1
  67. package/dist/channel/types.d.ts +2 -0
  68. package/dist/chat-log-ids.d.ts +48 -0
  69. package/dist/chat-log-ids.js +182 -0
  70. package/dist/chat-log-ids.js.map +1 -0
  71. package/dist/classic-channel-manager.d.ts +8 -1
  72. package/dist/classic-channel-manager.js +24 -2
  73. package/dist/classic-channel-manager.js.map +1 -1
  74. package/dist/cli.js +4 -6
  75. package/dist/cli.js.map +1 -1
  76. package/dist/config-validator.js +5 -0
  77. package/dist/config-validator.js.map +1 -1
  78. package/dist/cross-instance-notice.d.ts +10 -0
  79. package/dist/cross-instance-notice.js +67 -5
  80. package/dist/cross-instance-notice.js.map +1 -1
  81. package/dist/daemon.d.ts +52 -0
  82. package/dist/daemon.js +530 -34
  83. package/dist/daemon.js.map +1 -1
  84. package/dist/delivery-consumed-watch.d.ts +23 -1
  85. package/dist/delivery-consumed-watch.js +30 -3
  86. package/dist/delivery-consumed-watch.js.map +1 -1
  87. package/dist/delivery-reconciliation.d.ts +7 -0
  88. package/dist/delivery-reconciliation.js +9 -1
  89. package/dist/delivery-reconciliation.js.map +1 -1
  90. package/dist/dialog-screen-text.d.ts +16 -0
  91. package/dist/dialog-screen-text.js +51 -0
  92. package/dist/dialog-screen-text.js.map +1 -0
  93. package/dist/export-import.d.ts +7 -0
  94. package/dist/export-import.js +44 -10
  95. package/dist/export-import.js.map +1 -1
  96. package/dist/fleet-context.d.ts +2 -0
  97. package/dist/fleet-manager.d.ts +147 -11
  98. package/dist/fleet-manager.js +747 -118
  99. package/dist/fleet-manager.js.map +1 -1
  100. package/dist/fleet-yaml-patch.d.ts +3 -0
  101. package/dist/fleet-yaml-patch.js +103 -0
  102. package/dist/fleet-yaml-patch.js.map +1 -0
  103. package/dist/general-knowledge/skills/concepts/SKILL.md +393 -0
  104. package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +1 -0
  105. package/dist/general-knowledge/skills/instance-lifecycle/SKILL.md +3 -1
  106. package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +41 -4
  107. package/dist/general-knowledge/skills/model-discovery/SKILL.md +2 -0
  108. package/dist/general-knowledge/skills/web-appearance/SKILL.md +1 -1
  109. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +10 -4
  110. package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +1 -1
  111. package/dist/install-stream.d.ts +53 -0
  112. package/dist/install-stream.js +134 -0
  113. package/dist/install-stream.js.map +1 -0
  114. package/dist/instance-config-impact.js +2 -0
  115. package/dist/instance-config-impact.js.map +1 -1
  116. package/dist/instance-lifecycle.d.ts +20 -2
  117. package/dist/instance-lifecycle.js +80 -12
  118. package/dist/instance-lifecycle.js.map +1 -1
  119. package/dist/instance-topic-delete.d.ts +77 -0
  120. package/dist/instance-topic-delete.js +123 -0
  121. package/dist/instance-topic-delete.js.map +1 -0
  122. package/dist/instructions.d.ts +1 -1
  123. package/dist/instructions.js +1 -1
  124. package/dist/instructions.js.map +1 -1
  125. package/dist/kiro-engine-status.d.ts +11 -0
  126. package/dist/kiro-engine-status.js +6 -0
  127. package/dist/kiro-engine-status.js.map +1 -1
  128. package/dist/kiro-resume-summary.d.ts +37 -0
  129. package/dist/kiro-resume-summary.js +85 -0
  130. package/dist/kiro-resume-summary.js.map +1 -0
  131. package/dist/locale.js +90 -6
  132. package/dist/locale.js.map +1 -1
  133. package/dist/log-service.d.ts +30 -0
  134. package/dist/log-service.js +36 -3
  135. package/dist/log-service.js.map +1 -1
  136. package/dist/log-steps.d.ts +4 -3
  137. package/dist/log-steps.js +32 -7
  138. package/dist/log-steps.js.map +1 -1
  139. package/dist/logger.d.ts +12 -0
  140. package/dist/logger.js +43 -1
  141. package/dist/logger.js.map +1 -1
  142. package/dist/login-controller.js +9 -1
  143. package/dist/login-controller.js.map +1 -1
  144. package/dist/login-flows.d.ts +2 -0
  145. package/dist/login-flows.js +5 -2
  146. package/dist/login-flows.js.map +1 -1
  147. package/dist/login-manager.d.ts +6 -0
  148. package/dist/login-manager.js +10 -1
  149. package/dist/login-manager.js.map +1 -1
  150. package/dist/missed-offline.d.ts +25 -0
  151. package/dist/missed-offline.js +79 -0
  152. package/dist/missed-offline.js.map +1 -0
  153. package/dist/needs-you-hub.d.ts +6 -1
  154. package/dist/needs-you-hub.js +31 -8
  155. package/dist/needs-you-hub.js.map +1 -1
  156. package/dist/needs-you.d.ts +22 -2
  157. package/dist/needs-you.js +17 -3
  158. package/dist/needs-you.js.map +1 -1
  159. package/dist/office-share-page.d.ts +1 -1
  160. package/dist/office-share-page.js +6 -2
  161. package/dist/office-share-page.js.map +1 -1
  162. package/dist/outbound-handlers.js +59 -3
  163. package/dist/outbound-handlers.js.map +1 -1
  164. package/dist/outbound-schemas.d.ts +1 -0
  165. package/dist/outbound-schemas.js +9 -3
  166. package/dist/outbound-schemas.js.map +1 -1
  167. package/dist/package-preimage.js +27 -2
  168. package/dist/package-preimage.js.map +1 -1
  169. package/dist/queued-handoffs.d.ts +33 -0
  170. package/dist/queued-handoffs.js +75 -0
  171. package/dist/queued-handoffs.js.map +1 -0
  172. package/dist/reply-buttons-controller.js +10 -0
  173. package/dist/reply-buttons-controller.js.map +1 -1
  174. package/dist/scheduler/db.d.ts +2 -1
  175. package/dist/scheduler/db.js +23 -9
  176. package/dist/scheduler/db.js.map +1 -1
  177. package/dist/selection-card.d.ts +2 -3
  178. package/dist/selection-card.js +99 -26
  179. package/dist/selection-card.js.map +1 -1
  180. package/dist/settings-api.d.ts +13 -0
  181. package/dist/settings-api.js +22 -1
  182. package/dist/settings-api.js.map +1 -1
  183. package/dist/settings-change.js +16 -1
  184. package/dist/settings-change.js.map +1 -1
  185. package/dist/settings-instance-patch.js +27 -0
  186. package/dist/settings-instance-patch.js.map +1 -1
  187. package/dist/stall-reporter.d.ts +21 -0
  188. package/dist/stall-reporter.js +82 -0
  189. package/dist/stall-reporter.js.map +1 -0
  190. package/dist/tmux-control.d.ts +2 -2
  191. package/dist/tmux-control.js +4 -2
  192. package/dist/tmux-control.js.map +1 -1
  193. package/dist/tmux-exec-helper.d.ts +6 -3
  194. package/dist/tmux-exec-helper.js +115 -53
  195. package/dist/tmux-exec-helper.js.map +1 -1
  196. package/dist/tmux-manager.d.ts +6 -0
  197. package/dist/tmux-manager.js +17 -0
  198. package/dist/tmux-manager.js.map +1 -1
  199. package/dist/tool-permissions.d.ts +5 -2
  200. package/dist/tool-permissions.js +6 -5
  201. package/dist/tool-permissions.js.map +1 -1
  202. package/dist/tool-progress.d.ts +2 -0
  203. package/dist/tool-progress.js +19 -3
  204. package/dist/tool-progress.js.map +1 -1
  205. package/dist/topic-commands.js +4 -0
  206. package/dist/topic-commands.js.map +1 -1
  207. package/dist/tunnel/cloudflared-install.d.ts +4 -0
  208. package/dist/tunnel/cloudflared-install.js +20 -1
  209. package/dist/tunnel/cloudflared-install.js.map +1 -1
  210. package/dist/tunnel/cloudflared.d.ts +8 -1
  211. package/dist/tunnel/cloudflared.js +34 -6
  212. package/dist/tunnel/cloudflared.js.map +1 -1
  213. package/dist/tunnel/lease.d.ts +3 -3
  214. package/dist/tunnel/lease.js +23 -19
  215. package/dist/tunnel/lease.js.map +1 -1
  216. package/dist/tunnel/manager.js +6 -7
  217. package/dist/tunnel/manager.js.map +1 -1
  218. package/dist/ui/chat-md-strings.js +9 -0
  219. package/dist/ui/chat-store.js +20 -3
  220. package/dist/ui/chat-strings.js +4 -4
  221. package/dist/ui/chat-thread.js +105 -13
  222. package/dist/ui/fleet-canvas.js +4 -3
  223. package/dist/ui/fleet-office-model.js +55 -22
  224. package/dist/ui/fleet-office-overview.js +6 -38
  225. package/dist/ui/fleet-office-pack.js +4 -3
  226. package/dist/ui/fleet-office-skin.js +114 -21
  227. package/dist/ui/fleet-office-store.js +5 -0
  228. package/dist/ui/fleet-office-zones.js +2 -2
  229. package/dist/ui/fleet-office.js +41 -9
  230. package/dist/ui/fleet-usage.js +90 -27
  231. package/dist/ui/panel-chat.js +5 -2
  232. package/dist/ui/panel-log.js +7 -1
  233. package/dist/ui/panel-needs.js +17 -8
  234. package/dist/ui/preview-panel.js +78 -2
  235. package/dist/ui/settings-codex-copy.js +19 -0
  236. package/dist/ui/settings-dialogs.js +8 -0
  237. package/dist/ui/settings-model.js +16 -2
  238. package/dist/ui/settings-strings.js +2 -2
  239. package/dist/ui/shared/app-i18n.js +4 -4
  240. package/dist/ui/shared/app-needs.js +1 -1
  241. package/dist/ui/shared/app-shell.js +4 -2
  242. package/dist/ui/shared/app-stream.js +26 -0
  243. package/dist/ui/shared/app.css +55 -3
  244. package/dist/ui/shared/office/guild.png +0 -0
  245. package/dist/ui/shared/office/school.png +0 -0
  246. package/dist/ui/shared/panel-view.js +339 -17
  247. package/dist/ui/shared/usage-dialog.js +18 -1
  248. package/dist/ui/shared/view-history.css +17 -0
  249. package/dist/ui/shared/view-history.js +438 -0
  250. package/dist/ui/shared/view-strings.js +42 -0
  251. package/dist/unattended-install.d.ts +6 -0
  252. package/dist/unattended-install.js +79 -0
  253. package/dist/unattended-install.js.map +1 -0
  254. package/dist/usage/capacity.d.ts +69 -0
  255. package/dist/usage/capacity.js +119 -0
  256. package/dist/usage/capacity.js.map +1 -0
  257. package/dist/usage/i18n-keys.d.ts +1 -1
  258. package/dist/usage/i18n-keys.js +3 -0
  259. package/dist/usage/i18n-keys.js.map +1 -1
  260. package/dist/usage/profile-timeline.d.ts +16 -0
  261. package/dist/usage/profile-timeline.js +58 -0
  262. package/dist/usage/profile-timeline.js.map +1 -0
  263. package/dist/usage/quota-history.d.ts +43 -0
  264. package/dist/usage/quota-history.js +168 -0
  265. package/dist/usage/quota-history.js.map +1 -0
  266. package/dist/usage/usage-api.d.ts +31 -0
  267. package/dist/usage/usage-api.js +80 -1
  268. package/dist/usage/usage-api.js.map +1 -1
  269. package/dist/usage-report.d.ts +25 -1
  270. package/dist/usage-report.js +55 -4
  271. package/dist/usage-report.js.map +1 -1
  272. package/dist/usage-rollup.d.ts +6 -1
  273. package/dist/usage-rollup.js +16 -4
  274. package/dist/usage-rollup.js.map +1 -1
  275. package/dist/view-api.d.ts +31 -0
  276. package/dist/view-api.js +186 -41
  277. package/dist/view-api.js.map +1 -1
  278. package/dist/view-history.d.ts +84 -0
  279. package/dist/view-history.js +116 -0
  280. package/dist/view-history.js.map +1 -0
  281. package/dist/web-api.d.ts +6 -0
  282. package/dist/web-api.js +15 -4
  283. package/dist/web-api.js.map +1 -1
  284. package/dist/web-chat-history.d.ts +20 -0
  285. package/dist/web-chat-history.js +21 -0
  286. package/dist/web-chat-history.js.map +1 -1
  287. package/dist/web-guest-access.js +5 -1
  288. package/dist/web-guest-access.js.map +1 -1
  289. package/dist/web-login.d.ts +4 -3
  290. package/dist/web-login.js +23 -14
  291. package/dist/web-login.js.map +1 -1
  292. package/dist/web-office-pack-tools.d.ts +1 -1
  293. package/dist/web-office-pack-tools.js +1 -1
  294. package/dist/web-office-pack-tools.js.map +1 -1
  295. package/dist/web-session-authorization.d.ts +13 -2
  296. package/dist/web-session-authorization.js +10 -3
  297. package/dist/web-session-authorization.js.map +1 -1
  298. package/dist/web-session.d.ts +5 -0
  299. package/dist/web-session.js +20 -8
  300. package/dist/web-session.js.map +1 -1
  301. package/launcher/agend-install.cjs +16 -2
  302. package/launcher/private-home.cjs +1 -1
  303. package/package.json +1 -1
package/dist/locale.js CHANGED
@@ -106,6 +106,7 @@ const enMessages = {
106
106
  "web_auth.card_expired": "⌛ This request for {0} expired. Ask again from the dashboard if you still want it.",
107
107
  "web_auth.card_refused": "⚠️ Not authorized: {0} — {1}",
108
108
  "web_auth.card_revoked": "🚫 {0} was signed out; its authorization has ended.",
109
+ "web_auth.card_not_saved": "⚠️ {0} is signed out for now, but this couldn't be saved: a fleet restart may bring that browser's session back. Fix the permissions on ~/.agend/web-sessions.json, then run /web revoke.",
109
110
  "web_auth.card_ended": "⌛ The authorization for {0} has ended. Authorize it again from the dashboard if you still want it.",
110
111
  "web_auth.general_hint": "🔐 A web authorization couldn't be sent to you privately. Open your DMs with this bot, then press Authorize again on the dashboard.",
111
112
  "web_auth.confirm": "Confirm",
@@ -246,6 +247,15 @@ const enMessages = {
246
247
  "needs.reason.dangerous_command": "Dangerous command waiting",
247
248
  "needs.reason.login": "Sign-in needed",
248
249
  "needs.reason.dialog": "Waiting at a dialog",
250
+ "needs.reason.kiro_choice": "Kiro needs your decision",
251
+ "kiro3.readiness_classic": "Not ready for Kiro 3.x — migrate on Kiro 2.x first with migrate_kiro_instance.",
252
+ "kiro3.readiness_room": "Not ready for Kiro 3.x — this Classic room can't be migrated by AgEnD; switch the room to another backend in the Classic settings, or stay on Kiro 2.x.",
253
+ "kiro3.readiness_ready": "No Classic migration required.",
254
+ "kiro3.readiness_all": "All Kiro agents have completed Classic migration.",
255
+ "kiro3.readiness_remaining": "{0} Kiro agents still use Classic.",
256
+ "kiro3.readiness_none": "No Kiro agents.",
257
+ "kiro3.classic": "Kiro CLI {0} no longer supports Classic, so this agent was not started. Its saved conversation is unchanged. Use Kiro CLI 2.x to continue, or migrate this agent on 2.x before upgrading to 3.x.",
258
+ "kiro3.running": "Kiro is waiting for a V2/V3 choice. AgEnD has blocked message delivery and will not answer the menu. Open the agent to inspect it. To keep using Classic, use Kiro CLI 2.x.",
249
259
  "needs.reason.terminal_input": "May be waiting for input",
250
260
  "inst.session_oom_proof": "anonymous RSS {0}% of RAM; {1}× the largest other task's RSS",
251
261
  "inst.oom_unclear_stopped": "crashed repeatedly (out of memory, cause unclear)",
@@ -276,6 +286,7 @@ const enMessages = {
276
286
  "needs.reason.crashed": "Crashed",
277
287
  "needs.reason.delivery_uncertain": "Could not confirm delivery",
278
288
  "needs.reason.delivery_failed": "Delivery failed",
289
+ "needs.reason.missed_offline": "Missed while AgEnD was offline",
279
290
  "needs.reason.task_review": "Waiting for your confirmation",
280
291
  "needs.reason.task_blocked": "Blocked: asks you",
281
292
  "needs.task_gap": "not wrapped up: {0}",
@@ -337,7 +348,11 @@ const enMessages = {
337
348
  "codex.package_companion_missing": "Codex install incomplete — `{0}` is missing next to the codex binary ({1}/bin); reinstall Codex with the full official package",
338
349
  "codex.package_companion_not_executable": "Codex install incomplete — `{0}` next to the codex binary ({1}/bin) is not executable; reinstall Codex with the full official package",
339
350
  "codex.resume_db_unreadable_last": "Codex's session database could not be read ({0}). No other Codex instance shares this repository, so this launch fell back to `codex resume --last`.",
340
- "codex.resume_none_but_history": "No resumable Codex conversation was found for {0}, so this launch started a NEW one. This workspace does have an earlier conversation ({1}); it is kept, and `codex resume {1}` continues it.",
351
+ "codex.resume_auto": "Resumed the earlier Codex conversation for {0} ({1}): Codex's own list no longer showed it, but its record was still there.",
352
+ "codex.resume_large": "It is long ({0} MB), so Codex may compact it before it answers.",
353
+ "codex.resume_oneshot": "Resumed the Codex conversation {1} for {0}, as asked.",
354
+ "codex.resume_oneshot_invalid": "The Codex conversation asked for ({1}) cannot be resumed for {0} ({2}), so this launch resumes as usual.",
355
+ "codex.resume_failed": "Codex could not resume the earlier conversation for {0} ({1}), so this launch started a NEW one. The earlier conversation is kept.",
341
356
  "inst.dialog_parked_hold": "⚠️ {0} is parked on a CLI dialog ({1}) that AgEnD does NOT recognise well enough to answer. Open its pane and LOOK before pressing anything: the cursor may already be on a different option than usual. Deliveries to this instance are held until the dialog is gone.",
342
357
  "inst.dialog_parked_hold_claude_resume": "For Claude's session-resume prompt, move the cursor onto \"Resume full session as-is\" and confirm that one — never confirm \"Resume from summary\" unless you want to drop the full context.",
343
358
  "inst.dialog_parked_stuck": "⚠️ {0} is parked on a CLI dialog ({1}) and the automatic answer did not take. Open its pane and finish it by hand. Deliveries to this instance are held until the dialog is gone.",
@@ -458,6 +473,7 @@ const enMessages = {
458
473
  "kiro.compaction_kept_ambiguous": "kiro: resuming {0}: conversation {1} was compacted into more than one conversation ({2}), so which one is this instance's cannot be told.",
459
474
  "kiro.compaction_kept_not_ours": "kiro: resuming {0}: conversation {1} was compacted into {2}, but {2} is claimed by another instance or was given up.",
460
475
  "kiro.claim_lost": "kiro: starting a new conversation, because the recorded conversation {0} is no longer this instance's ({1}). It stays in kiro's store.",
476
+ "kiro.identity_unreadable": "kiro: starting a new conversation that is not recorded, because AgEnD's conversation record {0} cannot be fully read. The file is kept as it is (never overwritten); until it is repaired or removed, each launch starts a new conversation.",
461
477
  "kiro.claim_lost_missing": "its claim file is missing",
462
478
  "kiro.claim_lost_incomplete": "its claim file is incomplete; a complete claim is the instance name followed by a newline",
463
479
  "kiro.claim_lost_other_owner": "another instance claims it",
@@ -543,6 +559,7 @@ const enMessages = {
543
559
  "interactive.kind.dangerous_command": "dangerous command confirmation",
544
560
  "interactive.kind.login": "login",
545
561
  "interactive.kind.dialog": "CLI choice",
562
+ "interactive.kind.kiro_choice": "Kiro needs your decision",
546
563
  "interactive.kind.suspected_terminal_input": "possible terminal input",
547
564
  "interaction.waiting": "Waiting for your input ({0}); seen {1}s ago.",
548
565
  "interaction.candidate": "Checking whether input is needed ({0}); seen {1}s ago.",
@@ -602,6 +619,9 @@ const enMessages = {
602
619
  "exit.restarted": "✅ {0} restarted.",
603
620
  "exit.ignored": "🚫 Restart for {0} ignored.",
604
621
  "exit.expired": "⌛ Restart prompt for {0} expired.",
622
+ "restart.superseded": "⌛ Not restarted: {0} was stopped, restarted or replaced after this was asked.",
623
+ "instance.topic_deleted": "{0}'s topic was deleted too.",
624
+ "instance.topic_kept": "{0}'s topic was kept: {1}",
605
625
  "exit.restart_failed": "❌ Failed to restart {0}: {1}",
606
626
  "hang.detected": "⚠️ {0} may be stuck — pane unchanged for {1}min, ready prompt not recognized",
607
627
  "hang.restart": "🔄 Force restart",
@@ -630,6 +650,7 @@ const enMessages = {
630
650
  "poll.not_ready": "This poll is still being posted — try again in a moment.",
631
651
  "poll.voters_title": "🗳 Who voted:",
632
652
  "menu.click_stale": "⚠️ Nothing was changed: the instance moved to another bot, or you are no longer an admin there. Open the menu again.",
653
+ "menu.instance_replaced": "⚠️ Nothing was changed: {0} was stopped, restarted or replaced since this menu opened. Open the menu again.",
633
654
  "buttons.wrong_place": "⚠️ This button does not match the prompt it belongs to. Run the command again.",
634
655
  "buttons.post_failed": "⚠️ Could not post the buttons: {0}",
635
656
  "tips.label": "Tip",
@@ -732,6 +753,7 @@ const enMessages = {
732
753
  "login.status_install": "Install",
733
754
  "login.status_install_then_auth": "Install + sign in",
734
755
  "login.install_on_host": "not installed, and there is no remote installer for it — install it on the host.",
756
+ "login.host_only": "sign in on the host: run `{0}` there.",
735
757
  "login.none_available": "⚠️ No backend can be installed or signed in to remotely here.",
736
758
  "login.no_remote_flow": "⚠️ Backend \"{0}\" has no remote login flow. Run its CLI login command on the host.",
737
759
  "login.unsupported": "⚠️ No remote login flow for backend \"{0}\". OpenCode credentials are API keys — manage them with `opencode auth` in a trusted terminal.",
@@ -834,9 +856,15 @@ const enMessages = {
834
856
  "install.unsupported": "⚠️ No installer known for backend \"{0}\".",
835
857
  "install.already": "✅ {0} is already installed (`{1}` found). Use /login {0} to sign in.",
836
858
  "install.busy": "⚠️ Another install/login window is active. Use its cancel command first.",
837
- "install.started": "📦 Installing {0}… I will report when it finishes (watch progress in the View page).",
859
+ "install.started": "📦 Installing {0}… The installer's output will show here as it runs, and I will report when it finishes.",
838
860
  "install.failed": "❌ {0} install did not complete: {1}. Retry with `/login {0}`, or install it over SSH.",
839
- "install.verify_failed": "⚠️ The {0} installer finished but `{1}` is still not on PATH. Check the View page or install over SSH.",
861
+ "install.verify_failed": "⚠️ The {0} installer finished but `{1}` is still not on PATH. Its last lines are in the output above; install it over SSH instead.",
862
+ "install.timeout": "⏱ {0} install stopped: no result after {1} minutes. Its last lines are in the output above. Retry with `/login {0}`, or install it over SSH.",
863
+ "install.stream_running": "📦 Installing {0}… (installer output, live)",
864
+ "install.stream_ok": "✅ {0} installer finished.",
865
+ "install.stream_failed": "❌ {0} installer failed.",
866
+ "install.stream_timeout": "⏱ {0} installer stopped after {1} minutes with no result.",
867
+ "install.stream_cancelled": "🛑 {0} install cancelled.",
840
868
  "install.success_no_login": "✅ {0} installed.",
841
869
  "install.success": "✅ {0} installed and verified (`{1}`). Signing in next…",
842
870
  "install.cancelled": "🛑 Install session for {0} cancelled.",
@@ -1068,6 +1096,14 @@ const enMessages = {
1068
1096
  "usage.stale.transient": "not updated · cached at {0}",
1069
1097
  "usage.stale.error": "couldn't read · cached at {0}",
1070
1098
  "usage.metric.reset_since": "reset since {0}",
1099
+ "usage.capacity.line": "100% ≈ {0} ({1}–{2}) · ≈ {3} tokens · from {4} weeks",
1100
+ "usage.capacity.line_tokens": "100% ≈ {0} tokens ({1}–{2}) · from {3} weeks",
1101
+ "usage.capacity.not_enough": "Not enough usage yet to measure 100% (Δ {0}% of 10%)",
1102
+ "usage.capacity.only_agend": "Counts only this fleet's agents; use of the same account elsewhere makes this low.",
1103
+ "usage.capacity.mixed": "Bases disagree — possibly used outside this fleet",
1104
+ "usage.capacity.best_fit_api": "API-equivalent fits best: ±{0}% across {1} weeks",
1105
+ "usage.capacity.best_fit_output": "Output tokens fit best: ±{0}% across {1} weeks",
1106
+ "usage.capacity.best_fit_all": "All tokens fit best: ±{0}% across {1} weeks",
1071
1107
  "usage.error.http": "Usage request failed (HTTP {0}).",
1072
1108
  "usage.error.billing_http": "Billing request failed (HTTP {0}).",
1073
1109
  "usage.error.invalid_response": "Invalid response from usage endpoint.",
@@ -1189,6 +1225,10 @@ const enMessages = {
1189
1225
  "effort.launch_level_not_offered": "it takes {0}",
1190
1226
  "effort.launch_codex_unknown_model": "no catalog entry lists the levels of its model ({0})",
1191
1227
  "effort.launch_codex_model_unproven": "which model it runs could not be proven (a project .codex/config.toml can set another, and none is given on the command line)",
1228
+ "codex.speed_skipped": "speed \"{0}\" was not passed to codex at launch: {1}. It runs at codex's own speed setting.",
1229
+ "codex.speed_not_a_speed": "it is not one of AgEnD's speeds ({0})",
1230
+ "codex.speed_unknown_model": "no catalog entry lists the speed tiers of its model ({0})",
1231
+ "codex.speed_not_offered": "its model ({0}) does not offer Fast",
1192
1232
  "effort.launch_agy_no_catalog": "AgEnD has no model list for this agy binary (not probed yet, or agy changed since the last probe a day ago or more), so the variant of {0} for this level is not known (agy would run another model on a mismatch)",
1193
1233
  "effort.launch_agy_model_not_listed": "agy's model list has no {0} (agy would run another model with --effort)",
1194
1234
  "effort.launch_agy_model_no_levels": "agy's model list has {0} without effort levels",
@@ -1283,6 +1323,8 @@ const enMessages = {
1283
1323
  "delivery.fleet_failed_silent_schedule": "❌ A silent schedule's paste into {0} was not delivered ({3}). It is not listed in Needs you; the next run goes ahead as usual.\noperation_id={1}; target={0}; delivery_id={2}; state=failed",
1284
1324
  "delivery.expired": "{0} cross-instance message(s) reached the 24-hour waiting limit. Delivery is still unconfirmed for {1} of them; they may already have arrived, so do not resend those. Notices to the sending instances have been queued.",
1285
1325
  "delivery.cancelled_unsent": "⏹ Cancelled. {0} message(s) you sent to {1} before the cancel were not delivered (marked ❌). Send them again if you still need them.",
1326
+ "delivery.handoff_not_taken": "⚠️ {0} message(s) you sent to {1} while it was busy were queued in its CLI, but the CLI finished without taking them up (marked ❌). Send them again if you still need them.",
1327
+ "delivery.handoff_unverified_after_restart": "⚠️ {1} restarted while {0} message(s) you sent were still waiting in its CLI's queue, and AgEnD could not check whether they were taken, so they were not sent again (marked ❌). Send them again if you still need them.",
1286
1328
  "delivery.lane_waiting": "⚠️ The message to {0} is still waiting after {1} minutes. We are waiting for its current process to report the result or be replaced before sending another message.\ndelivery_id={2}",
1287
1329
  "delivery.restart_blocked": "{0} is still stopped because we could not confirm that its previous CLI window closed. Check that window before restarting so a message is not sent twice.",
1288
1330
  "delivery.error_expired": "The message reached its waiting time limit.",
@@ -1568,6 +1610,7 @@ const zhTWMessages = {
1568
1610
  "web_auth.card_expired": "⌛ {0} 的這個請求已過期。如果仍需要,請從儀表板再要求一次。",
1569
1611
  "web_auth.card_refused": "⚠️ 未授權:{0} — {1}",
1570
1612
  "web_auth.card_revoked": "🚫 {0} 已被登出,授權已結束。",
1613
+ "web_auth.card_not_saved": "⚠️ {0} 目前已登出,但這個變更無法儲存:Fleet 重新啟動後,那個瀏覽器的登入可能會回來。請修正 ~/.agend/web-sessions.json 的權限,再執行 /web revoke。",
1571
1614
  "web_auth.card_ended": "⌛ {0} 的授權已到期。如果仍需要,請從儀表板再授權一次。",
1572
1615
  "web_auth.general_hint": "🔐 網頁授權無法私訊給你。請先開放與這個 bot 的私訊,再到儀表板按一次「授權」。",
1573
1616
  "web_auth.confirm": "確認",
@@ -1708,6 +1751,15 @@ const zhTWMessages = {
1708
1751
  "needs.reason.dangerous_command": "危險指令待確認",
1709
1752
  "needs.reason.login": "需要登入",
1710
1753
  "needs.reason.dialog": "停在對話框",
1754
+ "needs.reason.kiro_choice": "Kiro 需要你決定",
1755
+ "kiro3.readiness_classic": "尚未準備好使用 Kiro 3.x:請先在 Kiro 2.x 用 migrate_kiro_instance 完成遷移。",
1756
+ "kiro3.readiness_room": "尚未準備好使用 Kiro 3.x:這個 Classic 房間無法由 AgEnD 遷移;請在 Classic 設定把房間換成其他後端,或繼續使用 Kiro 2.x。",
1757
+ "kiro3.readiness_ready": "不需要進行 Classic 遷移。",
1758
+ "kiro3.readiness_all": "所有 Kiro Agent 都已不再使用 Classic。",
1759
+ "kiro3.readiness_remaining": "還有 {0} 個 Kiro Agent 使用 Classic。",
1760
+ "kiro3.readiness_none": "目前沒有 Kiro Agent。",
1761
+ "kiro3.classic": "Kiro CLI {0} 已不支援 Classic,所以這個 Agent 沒有啟動,已存的對話沒有變動。要繼續使用,請改用 Kiro CLI 2.x;或先在 2.x 把這個 Agent 遷移到新介面,再升級到 3.x。",
1762
+ "kiro3.running": "Kiro 正在等你選擇 V2 或 V3。AgEnD 已暫停送訊息給它,也不會替你回答這個選單。請打開 Agent 查看;要繼續用 Classic,請改用 Kiro CLI 2.x。",
1711
1763
  "needs.reason.terminal_input": "可能在等輸入",
1712
1764
  "inst.session_oom_proof": "匿名記憶體佔 RAM 的 {0}%,為其他最大程序 RSS 的 {1} 倍",
1713
1765
  "inst.oom_unclear_stopped": "反覆當機(記憶體不足,原因不明)",
@@ -1738,6 +1790,7 @@ const zhTWMessages = {
1738
1790
  "needs.reason.crashed": "已崩潰",
1739
1791
  "needs.reason.delivery_uncertain": "無法確認是否送達",
1740
1792
  "needs.reason.delivery_failed": "傳送失敗",
1793
+ "needs.reason.missed_offline": "AgEnD 離線時錯過",
1741
1794
  "needs.reason.task_review": "等你確認",
1742
1795
  "needs.reason.task_blocked": "卡住,在問你",
1743
1796
  "needs.task_gap": "還沒補齊:{0}",
@@ -1799,7 +1852,11 @@ const zhTWMessages = {
1799
1852
  "codex.package_companion_missing": "Codex 安裝不完整 — codex 執行檔旁({1}/bin)缺少 `{0}`;請用完整的官方套件重新安裝 Codex",
1800
1853
  "codex.package_companion_not_executable": "Codex 安裝不完整 — codex 執行檔旁({1}/bin)的 `{0}` 無法執行;請用完整的官方套件重新安裝 Codex",
1801
1854
  "codex.resume_db_unreadable_last": "讀不到 Codex 的 session 資料庫({0})。這個 repo 裡沒有其他 Codex instance,所以這次啟動退回用 `codex resume --last`。",
1802
- "codex.resume_none_but_history": "找不到 {0} 可自動接續的 Codex 對話,所以這次啟動開了**新對話**。這個工作目錄其實有之前的對話({1}),它還在,可用 `codex resume {1}` 接回。",
1855
+ "codex.resume_auto": "找到並接回了 {0} 之前的 Codex 對話({1}):Codex 自己的清單已經沒有它,但紀錄還在。",
1856
+ "codex.resume_large": "這段對話很長({0} MB),Codex 可能會先壓縮再回覆。",
1857
+ "codex.resume_oneshot": "已依要求接回 {0} 的 Codex 對話({1})。",
1858
+ "codex.resume_oneshot_invalid": "要求接回的 Codex 對話({1})無法用於 {0}({2}),這次照常啟動。",
1859
+ "codex.resume_failed": "Codex 無法接回 {0} 之前的對話({1}),所以這次啟動開了**新對話**。之前的對話仍保留。",
1803
1860
  "inst.dialog_parked_hold": "⚠️ {0} 停在一個 AgEnD 認不準、因此**不會**自動回答的 CLI 對話框上({1})。請到它的 pane **先看清楚再按鍵**:游標可能已經在不同的選項上。對話框消失前,送給這個 instance 的訊息會先保留。",
1804
1861
  "inst.dialog_parked_hold_claude_resume": "這是 Claude 的 session-resume 提示:請把游標移到「Resume full session as-is」再確認;除非你要丟掉完整 context,否則絕不要確認「Resume from summary」。",
1805
1862
  "inst.dialog_parked_stuck": "⚠️ {0} 停在一個 CLI 對話框上({1}),自動回答沒有生效。請到它的 pane 手動完成。對話框消失前,送給這個 instance 的訊息會先保留。",
@@ -1920,6 +1977,7 @@ const zhTWMessages = {
1920
1977
  "kiro.compaction_kept_ambiguous": "kiro:恢復 {0}:對話 {1} 被壓縮成不只一個對話({2}),無法判斷哪一個屬於這個 instance。",
1921
1978
  "kiro.compaction_kept_not_ours": "kiro:恢復 {0}:對話 {1} 已被壓縮成 {2},但 {2} 已被其他 instance 認領或已被放棄。",
1922
1979
  "kiro.claim_lost": "kiro:開新對話,因為紀錄中的對話 {0} 已不屬於這個 instance({1})。該對話仍保留在 kiro 的儲存區。",
1980
+ "kiro.identity_unreadable": "kiro:開新對話且不記錄,因為 AgEnD 的對話紀錄 {0} 無法完整讀取。該檔案原封保留(不會覆寫);在修復或移除它之前,每次啟動都會開新對話。",
1923
1981
  "kiro.claim_lost_missing": "認領檔不見了",
1924
1982
  "kiro.claim_lost_incomplete": "認領檔不完整;完整的認領檔是 instance 名稱加上一個換行",
1925
1983
  "kiro.claim_lost_other_owner": "已被其他 instance 認領",
@@ -2005,6 +2063,7 @@ const zhTWMessages = {
2005
2063
  "interactive.kind.dangerous_command": "危險命令確認",
2006
2064
  "interactive.kind.login": "登入",
2007
2065
  "interactive.kind.dialog": "CLI 選項",
2066
+ "interactive.kind.kiro_choice": "Kiro 需要你決定",
2008
2067
  "interactive.kind.suspected_terminal_input": "可能需要終端輸入",
2009
2068
  "interaction.waiting": "正在等你輸入({0});{1} 秒前看到。",
2010
2069
  "interaction.candidate": "正在確認是否需要輸入({0});{1} 秒前看到。",
@@ -2064,6 +2123,9 @@ const zhTWMessages = {
2064
2123
  "exit.restarted": "✅ {0} 已重新啟動。",
2065
2124
  "exit.ignored": "🚫 已忽略 {0} 的重啟提示。",
2066
2125
  "exit.expired": "⌛ {0} 的重啟提示已逾時。",
2126
+ "restart.superseded": "⌛ 沒有重啟:這個按鈕出現之後,{0} 已被停止、重啟或替換。",
2127
+ "instance.topic_deleted": "{0} 的 topic 也已一併刪除。",
2128
+ "instance.topic_kept": "{0} 的 topic 已保留:{1}",
2067
2129
  "exit.restart_failed": "❌ 無法重啟 {0}:{1}",
2068
2130
  "hang.detected": "⚠️ {0} 可能卡住了 — 畫面已 {1} 分鐘無變化,也偵測不到就緒提示",
2069
2131
  "hang.restart": "🔄 強制重啟",
@@ -2092,6 +2154,7 @@ const zhTWMessages = {
2092
2154
  "poll.not_ready": "投票還在送出中,請稍後再試。",
2093
2155
  "poll.voters_title": "🗳 投票名單:",
2094
2156
  "menu.click_stale": "⚠️ 沒有變更:這個 instance 已移到另一個 bot,或你已不再是那裡的管理員。請重新開啟選單。",
2157
+ "menu.instance_replaced": "⚠️ 沒有變更:開啟選單後,{0} 已被停止、重啟或替換。請重新開啟選單。",
2095
2158
  "buttons.wrong_place": "⚠️ 這個按鈕和它所屬的提示對不上,請重新執行指令。",
2096
2159
  "buttons.post_failed": "⚠️ 無法送出按鈕:{0}",
2097
2160
  "tips.label": "小提示",
@@ -2194,6 +2257,7 @@ const zhTWMessages = {
2194
2257
  "login.status_install": "安裝",
2195
2258
  "login.status_install_then_auth": "安裝並登入",
2196
2259
  "login.install_on_host": "尚未安裝,且沒有遠端安裝方式——請在主機上安裝。",
2260
+ "login.host_only": "請在主機上登入:在那裡執行 `{0}`。",
2197
2261
  "login.none_available": "⚠️ 這裡沒有可以遠端安裝或登入的 Backend。",
2198
2262
  "login.no_remote_flow": "⚠️ Backend「{0}」沒有遠端登入流程。請在主機上執行它自己的 CLI 登入指令。",
2199
2263
  "login.unsupported": "⚠️ Backend「{0}」沒有遠端登入流程。OpenCode 憑證是 API key——請在可信任的終端用 `opencode auth` 管理。",
@@ -2296,9 +2360,15 @@ const zhTWMessages = {
2296
2360
  "install.unsupported": "⚠️ Backend「{0}」沒有已知的安裝方式。",
2297
2361
  "install.already": "✅ {0} 已安裝(找到 `{1}`)。可用 /login {0} 登入。",
2298
2362
  "install.busy": "⚠️ 另一個安裝/登入視窗進行中,請先取消它。",
2299
- "install.started": "📦 正在安裝 {0}…完成後會回報(可在 View 頁面看進度)。",
2363
+ "install.started": "📦 正在安裝 {0}…安裝程式的輸出會即時顯示在這裡,完成後會回報。",
2300
2364
  "install.failed": "❌ {0} 安裝未完成:{1}。可用 `/login {0}` 重試,或改用 SSH 安裝。",
2301
- "install.verify_failed": "⚠️ {0} 安裝程序結束,但 PATH 上仍找不到 `{1}`。請查看 View 頁面或改用 SSH 安裝。",
2365
+ "install.verify_failed": "⚠️ {0} 安裝程序結束,但 PATH 上仍找不到 `{1}`。最後幾行輸出在上方;請改用 SSH 安裝。",
2366
+ "install.timeout": "⏱ {0} 安裝已停止:{1} 分鐘內沒有結果。最後幾行輸出在上方。可用 `/login {0}` 重試,或改用 SSH 安裝。",
2367
+ "install.stream_running": "📦 正在安裝 {0}…(安裝程式輸出,即時)",
2368
+ "install.stream_ok": "✅ {0} 安裝程式已結束。",
2369
+ "install.stream_failed": "❌ {0} 安裝程式失敗。",
2370
+ "install.stream_timeout": "⏱ {0} 安裝程式 {1} 分鐘內沒有結果,已停止。",
2371
+ "install.stream_cancelled": "🛑 已取消 {0} 的安裝。",
2302
2372
  "install.success_no_login": "✅ {0} 已安裝。",
2303
2373
  "install.success": "✅ {0} 已安裝並驗證(`{1}`)。接著登入…",
2304
2374
  "install.cancelled": "🛑 已取消 {0} 的安裝流程。",
@@ -2530,6 +2600,14 @@ const zhTWMessages = {
2530
2600
  "usage.stale.transient": "暫時無法更新 · 快取於 {0}",
2531
2601
  "usage.stale.error": "讀取失敗 · 快取於 {0}",
2532
2602
  "usage.metric.reset_since": "已於 {0} 重置",
2603
+ "usage.capacity.line": "100% ≈ {0}({1}–{2})· 約 {3} token · 依 {4} 週",
2604
+ "usage.capacity.line_tokens": "100% ≈ {0} token({1}–{2})· 依 {3} 週",
2605
+ "usage.capacity.not_enough": "用量還不夠估算 100%(已用 Δ {0}%,需 10%)",
2606
+ "usage.capacity.only_agend": "只計算這個 fleet 的 agent;同一帳號在別處的使用會讓這個值偏低。",
2607
+ "usage.capacity.mixed": "各換算方式不一致——可能有 fleet 以外的使用",
2608
+ "usage.capacity.best_fit_api": "「API 等值」最吻合:{1} 週內 ±{0}%",
2609
+ "usage.capacity.best_fit_output": "「輸出 token」最吻合:{1} 週內 ±{0}%",
2610
+ "usage.capacity.best_fit_all": "「全部 token」最吻合:{1} 週內 ±{0}%",
2533
2611
  "usage.error.http": "用量請求失敗(HTTP {0})。",
2534
2612
  "usage.error.billing_http": "計費請求失敗(HTTP {0})。",
2535
2613
  "usage.error.invalid_response": "用量端點回傳了無效資料。",
@@ -2651,6 +2729,10 @@ const zhTWMessages = {
2651
2729
  "effort.launch_level_not_offered": "它接受的是 {0}",
2652
2730
  "effort.launch_codex_unknown_model": "模型目錄裡沒有列出它的模型({0})的等級",
2653
2731
  "effort.launch_codex_model_unproven": "無法確定它會用哪個模型(專案的 .codex/config.toml 可能設定了別的模型,而命令列沒有指定)",
2732
+ "codex.speed_skipped": "啟動 codex 時沒有帶上速度「{0}」:{1}。它會沿用 codex 自己的速度設定。",
2733
+ "codex.speed_not_a_speed": "這不是 AgEnD 的速度選項({0})",
2734
+ "codex.speed_unknown_model": "模型目錄裡沒有列出它的模型({0})的速度等級",
2735
+ "codex.speed_not_offered": "它的模型({0})不提供 Fast",
2654
2736
  "effort.launch_agy_no_catalog": "AgEnD 沒有這個 agy 執行檔的模型清單(還沒探測過,或上次探測已超過一天、之後 agy 又換過),不知道 {0} 這個等級對應哪個模型(對不上時 agy 會改用別的模型)",
2655
2737
  "effort.launch_agy_model_not_listed": "agy 的模型清單裡沒有 {0}(加上 --effort 時 agy 會改用別的模型)",
2656
2738
  "effort.launch_agy_model_no_levels": "agy 的模型清單裡 {0} 沒有推理強度等級",
@@ -2745,6 +2827,8 @@ const zhTWMessages = {
2745
2827
  "delivery.fleet_failed_silent_schedule": "❌ 靜默排程貼到 {0} 的內容未送達({3})。不會列入「需要你」;下一次排程照常執行。\noperation_id={1}; target={0}; delivery_id={2}; state=failed",
2746
2828
  "delivery.expired": "有 {0} 筆跨 instance 訊息已等滿 24 小時。其中 {1} 筆仍無法確認是否送達,可能已送達,請不要重送;通知已排入佇列,等待送給寄件的 instance。",
2747
2829
  "delivery.cancelled_unsent": "⏹ 已取消。你在取消前傳給 {1} 的 {0} 則訊息沒有送出(已標 ❌),還需要的話請再傳一次。",
2830
+ "delivery.handoff_not_taken": "⚠️ 你在 {1} 忙碌時傳的 {0} 則訊息排進了它的 CLI,但 CLI 結束這一輪後沒有處理(已標 ❌)。還需要的話請再傳一次。",
2831
+ "delivery.handoff_unverified_after_restart": "⚠️ {1} 重新啟動時,你傳的 {0} 則訊息還在它的 CLI 佇列中;AgEnD 無法確認它們是否已被處理,所以沒有重送(已標 ❌)。還需要的話請再傳一次。",
2748
2832
  "delivery.lane_waiting": "⚠️ 送往 {0} 的訊息已等了 {1} 分鐘。下一筆會等目前的程序回報結果或被替換後再送。\ndelivery_id={2}",
2749
2833
  "delivery.restart_blocked": "{0} 暫時保持停止,因為無法確認先前的 CLI 視窗已關閉。請先檢查該視窗再重啟,以免訊息重複送出。",
2750
2834
  "delivery.error_expired": "這筆訊息已達等待期限。",