@songsid/agend 2.3.3-beta.1 → 2.3.3-beta.10

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 (355) hide show
  1. package/dist/agent-cli.js +13 -112
  2. package/dist/agent-cli.js.map +1 -1
  3. package/dist/agent-endpoint.d.ts +0 -1
  4. package/dist/agent-endpoint.js +1 -9
  5. package/dist/agent-endpoint.js.map +1 -1
  6. package/dist/agent-whats-new.d.ts +3 -6
  7. package/dist/agent-whats-new.js +7 -18
  8. package/dist/agent-whats-new.js.map +1 -1
  9. package/dist/auth-api.d.ts +0 -7
  10. package/dist/auth-api.js +1 -15
  11. package/dist/auth-api.js.map +1 -1
  12. package/dist/authority/authority-state.js +1 -1
  13. package/dist/authority/authority-state.js.map +1 -1
  14. package/dist/authority/web-authority.d.ts +9 -4
  15. package/dist/authority/web-authority.js +10 -5
  16. package/dist/authority/web-authority.js.map +1 -1
  17. package/dist/backend/antigravity.js +6 -1
  18. package/dist/backend/antigravity.js.map +1 -1
  19. package/dist/backend/claude-code.d.ts +7 -0
  20. package/dist/backend/claude-code.js +34 -28
  21. package/dist/backend/claude-code.js.map +1 -1
  22. package/dist/backend/claude-transcript-errors.d.ts +18 -0
  23. package/dist/backend/claude-transcript-errors.js +19 -0
  24. package/dist/backend/claude-transcript-errors.js.map +1 -0
  25. package/dist/backend/codex-session-lookup.d.ts +16 -3
  26. package/dist/backend/codex-session-lookup.js +45 -11
  27. package/dist/backend/codex-session-lookup.js.map +1 -1
  28. package/dist/backend/codex.d.ts +16 -0
  29. package/dist/backend/codex.js +184 -35
  30. package/dist/backend/codex.js.map +1 -1
  31. package/dist/backend/grok.js +58 -12
  32. package/dist/backend/grok.js.map +1 -1
  33. package/dist/backend/kiro.js +2 -0
  34. package/dist/backend/kiro.js.map +1 -1
  35. package/dist/backend/muse.js +2 -1
  36. package/dist/backend/muse.js.map +1 -1
  37. package/dist/backend/types.d.ts +46 -0
  38. package/dist/backend/types.js.map +1 -1
  39. package/dist/bundled-skills.d.ts +4 -6
  40. package/dist/bundled-skills.js +10 -14
  41. package/dist/bundled-skills.js.map +1 -1
  42. package/dist/channel/adapters/discord.js +60 -17
  43. package/dist/channel/adapters/discord.js.map +1 -1
  44. package/dist/channel/mcp-server.js +5 -5
  45. package/dist/channel/mcp-server.js.map +1 -1
  46. package/dist/channel/mcp-tools.d.ts +1 -3
  47. package/dist/channel/mcp-tools.js +4 -58
  48. package/dist/channel/mcp-tools.js.map +1 -1
  49. package/dist/classic-channel-manager.d.ts +4 -1
  50. package/dist/classic-channel-manager.js +21 -7
  51. package/dist/classic-channel-manager.js.map +1 -1
  52. package/dist/cli.js +21 -4
  53. package/dist/cli.js.map +1 -1
  54. package/dist/config-history.d.ts +50 -0
  55. package/dist/config-history.js +263 -0
  56. package/dist/config-history.js.map +1 -0
  57. package/dist/config-validator.js +7 -7
  58. package/dist/config-validator.js.map +1 -1
  59. package/dist/config.d.ts +3 -0
  60. package/dist/config.js +11 -4
  61. package/dist/config.js.map +1 -1
  62. package/dist/daemon.d.ts +73 -3
  63. package/dist/daemon.js +334 -121
  64. package/dist/daemon.js.map +1 -1
  65. package/dist/daily-summary.d.ts +8 -1
  66. package/dist/daily-summary.js +8 -5
  67. package/dist/daily-summary.js.map +1 -1
  68. package/dist/dashboard-live.d.ts +1 -1
  69. package/dist/dashboard-live.js +3 -3
  70. package/dist/dashboard-live.js.map +1 -1
  71. package/dist/dashboard-permissions.d.ts +1 -1
  72. package/dist/dashboard-permissions.js +1 -3
  73. package/dist/dashboard-permissions.js.map +1 -1
  74. package/dist/delivery-outbox.d.ts +4 -0
  75. package/dist/delivery-outbox.js +12 -2
  76. package/dist/delivery-outbox.js.map +1 -1
  77. package/dist/doctor.d.ts +4 -0
  78. package/dist/doctor.js +16 -1
  79. package/dist/doctor.js.map +1 -1
  80. package/dist/fleet-level-config.js +1 -1
  81. package/dist/fleet-level-config.js.map +1 -1
  82. package/dist/fleet-manager.d.ts +70 -54
  83. package/dist/fleet-manager.js +257 -322
  84. package/dist/fleet-manager.js.map +1 -1
  85. package/dist/fleet-process-handlers.d.ts +5 -0
  86. package/dist/fleet-process-handlers.js +21 -0
  87. package/dist/fleet-process-handlers.js.map +1 -1
  88. package/dist/fleet-service-owner.d.ts +11 -0
  89. package/dist/fleet-service-owner.js +3 -0
  90. package/dist/fleet-service-owner.js.map +1 -0
  91. package/dist/general-knowledge/skills/credential-profiles/SKILL.md +11 -1
  92. package/dist/general-knowledge/skills/session-management/SKILL.md +6 -0
  93. package/dist/general-knowledge/skills/web-appearance/SKILL.md +13 -204
  94. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +29 -67
  95. package/dist/instance-lifecycle.d.ts +19 -0
  96. package/dist/instance-lifecycle.js +52 -10
  97. package/dist/instance-lifecycle.js.map +1 -1
  98. package/dist/locale.js +92 -42
  99. package/dist/locale.js.map +1 -1
  100. package/dist/needs-you-hub.d.ts +1 -0
  101. package/dist/needs-you-hub.js +6 -3
  102. package/dist/needs-you-hub.js.map +1 -1
  103. package/dist/needs-you-live.d.ts +3 -1
  104. package/dist/needs-you-live.js +24 -2
  105. package/dist/needs-you-live.js.map +1 -1
  106. package/dist/needs-you.d.ts +13 -2
  107. package/dist/needs-you.js +11 -1
  108. package/dist/needs-you.js.map +1 -1
  109. package/dist/notify-socket.d.ts +10 -0
  110. package/dist/notify-socket.js +45 -0
  111. package/dist/notify-socket.js.map +1 -0
  112. package/dist/outbound-handlers.js +19 -7
  113. package/dist/outbound-handlers.js.map +1 -1
  114. package/dist/outbound-schemas.d.ts +0 -62
  115. package/dist/outbound-schemas.js +3 -42
  116. package/dist/outbound-schemas.js.map +1 -1
  117. package/dist/parked-notices.d.ts +87 -0
  118. package/dist/parked-notices.js +194 -0
  119. package/dist/parked-notices.js.map +1 -0
  120. package/dist/public-link-progress.d.ts +5 -2
  121. package/dist/public-link-progress.js +4 -3
  122. package/dist/public-link-progress.js.map +1 -1
  123. package/dist/public-web-gateway.js +0 -9
  124. package/dist/public-web-gateway.js.map +1 -1
  125. package/dist/public-web-link.d.ts +12 -0
  126. package/dist/public-web-link.js +29 -5
  127. package/dist/public-web-link.js.map +1 -1
  128. package/dist/quota-notice.d.ts +23 -0
  129. package/dist/quota-notice.js +22 -0
  130. package/dist/quota-notice.js.map +1 -0
  131. package/dist/scheduler/task-board.d.ts +0 -13
  132. package/dist/scheduler/task-board.js +0 -14
  133. package/dist/scheduler/task-board.js.map +1 -1
  134. package/dist/sd-notify.d.ts +10 -1
  135. package/dist/sd-notify.js +27 -2
  136. package/dist/sd-notify.js.map +1 -1
  137. package/dist/search/search-docs.d.ts +1 -1
  138. package/dist/search/search-docs.js +2 -2
  139. package/dist/search/search-docs.js.map +1 -1
  140. package/dist/settings-api.d.ts +16 -0
  141. package/dist/settings-api.js +55 -2
  142. package/dist/settings-api.js.map +1 -1
  143. package/dist/settings-change.js +3 -1
  144. package/dist/settings-change.js.map +1 -1
  145. package/dist/settings-confirmation.d.ts +17 -3
  146. package/dist/settings-confirmation.js +8 -5
  147. package/dist/settings-confirmation.js.map +1 -1
  148. package/dist/settings-http-confirmation.js +31 -1
  149. package/dist/settings-http-confirmation.js.map +1 -1
  150. package/dist/setup-wizard.d.ts +3 -0
  151. package/dist/setup-wizard.js +4 -2
  152. package/dist/setup-wizard.js.map +1 -1
  153. package/dist/task-board-waker.d.ts +4 -1
  154. package/dist/task-board-waker.js +13 -2
  155. package/dist/task-board-waker.js.map +1 -1
  156. package/dist/tool-permissions.js +3 -10
  157. package/dist/tool-permissions.js.map +1 -1
  158. package/dist/topic-commands.d.ts +27 -7
  159. package/dist/topic-commands.js +95 -36
  160. package/dist/topic-commands.js.map +1 -1
  161. package/dist/transcript-monitor.d.ts +7 -0
  162. package/dist/transcript-monitor.js +48 -3
  163. package/dist/transcript-monitor.js.map +1 -1
  164. package/dist/tunnel/cloudflared.d.ts +5 -0
  165. package/dist/tunnel/cloudflared.js +32 -1
  166. package/dist/tunnel/cloudflared.js.map +1 -1
  167. package/dist/tunnel/named-diagnostics.d.ts +2 -1
  168. package/dist/tunnel/named-diagnostics.js +4 -1
  169. package/dist/tunnel/named-diagnostics.js.map +1 -1
  170. package/dist/tunnel/named-link-test.d.ts +90 -0
  171. package/dist/tunnel/named-link-test.js +270 -0
  172. package/dist/tunnel/named-link-test.js.map +1 -0
  173. package/dist/tunnel/purpose-lane.d.ts +3 -1
  174. package/dist/tunnel/purpose-lane.js +2 -0
  175. package/dist/tunnel/purpose-lane.js.map +1 -1
  176. package/dist/types.d.ts +8 -6
  177. package/dist/ui/chat-ambient.js +4 -4
  178. package/dist/ui/chat-commands.js +3 -2
  179. package/dist/ui/chat-store.js +4 -1
  180. package/dist/ui/chat-strings.js +12 -46
  181. package/dist/ui/chat-thread.js +51 -59
  182. package/dist/ui/fleet-office-skin.js +37 -14
  183. package/dist/ui/fleet-office.js +31 -7
  184. package/dist/ui/html-attachment.js +22 -8
  185. package/dist/ui/panel-chat.js +21 -50
  186. package/dist/ui/panel-needs.js +11 -9
  187. package/dist/ui/panel-settings.js +5 -3
  188. package/dist/ui/preview-panel.js +12 -21
  189. package/dist/ui/preview.js +10 -3
  190. package/dist/ui/search-dialog.js +30 -14
  191. package/dist/ui/settings-appearance.js +1 -3
  192. package/dist/ui/settings-confirm.js +18 -0
  193. package/dist/ui/settings-guests.js +13 -4
  194. package/dist/ui/settings-learn.js +1 -1
  195. package/dist/ui/settings-mods.js +5 -12
  196. package/dist/ui/settings-named-test.js +144 -0
  197. package/dist/ui/settings-registry.js +0 -1
  198. package/dist/ui/settings-strings.js +14 -14
  199. package/dist/ui/settings-web-authority.js +4 -3
  200. package/dist/ui/shared/app-i18n.js +15 -4
  201. package/dist/ui/shared/app-needs.js +5 -1
  202. package/dist/ui/shared/app-prefs.js +17 -17
  203. package/dist/ui/shared/app-shell.js +47 -9
  204. package/dist/ui/shared/app-store.js +6 -2
  205. package/dist/ui/shared/app.css +33 -39
  206. package/dist/ui/shared/app.js +5 -4
  207. package/dist/ui/shared/instance-nav.js +9 -9
  208. package/dist/ui/shared/instance-switch.js +8 -2
  209. package/dist/ui/shared/panel-view.js +22 -8
  210. package/dist/ui/shared/view-strings.js +6 -0
  211. package/dist/ui/shared/web-authorize.js +35 -13
  212. package/dist/usage/usage-api.d.ts +3 -0
  213. package/dist/usage/usage-api.js +5 -1
  214. package/dist/usage/usage-api.js.map +1 -1
  215. package/dist/view-api.d.ts +2 -0
  216. package/dist/view-api.js +64 -0
  217. package/dist/view-api.js.map +1 -1
  218. package/dist/web-api.d.ts +9 -17
  219. package/dist/web-api.js +257 -371
  220. package/dist/web-api.js.map +1 -1
  221. package/dist/web-appearance-tools.d.ts +0 -2
  222. package/dist/web-appearance-tools.js +2 -5
  223. package/dist/web-appearance-tools.js.map +1 -1
  224. package/dist/web-appearance-view.d.ts +0 -6
  225. package/dist/web-appearance-view.js +0 -1
  226. package/dist/web-appearance-view.js.map +1 -1
  227. package/dist/web-appearance.d.ts +14 -7
  228. package/dist/web-appearance.js +5 -6
  229. package/dist/web-appearance.js.map +1 -1
  230. package/dist/web-asset-parts.d.ts +1 -17
  231. package/dist/web-asset-parts.js +1 -15
  232. package/dist/web-asset-parts.js.map +1 -1
  233. package/dist/web-auth.js +1 -7
  234. package/dist/web-auth.js.map +1 -1
  235. package/dist/web-chat-history.d.ts +3 -7
  236. package/dist/web-chat-history.js +10 -17
  237. package/dist/web-chat-history.js.map +1 -1
  238. package/dist/web-commands.d.ts +9 -1
  239. package/dist/web-commands.js +13 -0
  240. package/dist/web-commands.js.map +1 -1
  241. package/dist/web-experimental.d.ts +2 -11
  242. package/dist/web-experimental.js +8 -36
  243. package/dist/web-experimental.js.map +1 -1
  244. package/dist/web-guest-access.d.ts +40 -2
  245. package/dist/web-guest-access.js +50 -14
  246. package/dist/web-guest-access.js.map +1 -1
  247. package/dist/web-mod-bundle.d.ts +2 -45
  248. package/dist/web-mod-bundle.js +15 -63
  249. package/dist/web-mod-bundle.js.map +1 -1
  250. package/dist/web-mod-store.d.ts +3 -48
  251. package/dist/web-mod-store.js +30 -97
  252. package/dist/web-mod-store.js.map +1 -1
  253. package/dist/web-prefs.d.ts +13 -0
  254. package/dist/web-prefs.js +38 -0
  255. package/dist/web-prefs.js.map +1 -1
  256. package/dist/web-preview.d.ts +6 -13
  257. package/dist/web-preview.js +12 -23
  258. package/dist/web-preview.js.map +1 -1
  259. package/dist/web-session.d.ts +11 -3
  260. package/dist/web-session.js +22 -11
  261. package/dist/web-session.js.map +1 -1
  262. package/dist/web-settings-patch.d.ts +1 -0
  263. package/dist/web-settings-patch.js +6 -3
  264. package/dist/web-settings-patch.js.map +1 -1
  265. package/dist/web-settings-tools.d.ts +0 -13
  266. package/dist/web-settings-tools.js +12 -84
  267. package/dist/web-settings-tools.js.map +1 -1
  268. package/launcher/agend-install.cjs +7 -1
  269. package/launcher/fleet-service-owner.cjs +150 -0
  270. package/package.json +1 -1
  271. package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +0 -376
  272. package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +0 -673
  273. package/dist/task-board-summary.d.ts +0 -101
  274. package/dist/task-board-summary.js +0 -177
  275. package/dist/task-board-summary.js.map +0 -1
  276. package/dist/ui/app-effects.js +0 -251
  277. package/dist/ui/chat-effect-posters.js +0 -42
  278. package/dist/ui/chat-effects.js +0 -167
  279. package/dist/ui/effect-trial-controller.js +0 -124
  280. package/dist/ui/effect-trial-offer.js +0 -2
  281. package/dist/ui/effect-trial-panel.js +0 -40
  282. package/dist/ui/effects-waker.js +0 -2
  283. package/dist/ui/settings-effects.js +0 -202
  284. package/dist/ui/settings-owner-effects.js +0 -82
  285. package/dist/ui/shared/effect-app-runtime.js +0 -299
  286. package/dist/ui/shared/effect-baseline.js +0 -64
  287. package/dist/ui/shared/effect-chat-runtime.js +0 -162
  288. package/dist/ui/shared/effect-cursor.js +0 -126
  289. package/dist/ui/shared/effect-display-metadata.js +0 -39
  290. package/dist/ui/shared/effect-frame.js +0 -146
  291. package/dist/ui/shared/effect-geometry.js +0 -137
  292. package/dist/ui/shared/effect-host-style.js +0 -10
  293. package/dist/ui/shared/effect-owner-regions.js +0 -74
  294. package/dist/ui/shared/effect-owner-source.js +0 -122
  295. package/dist/ui/shared/effect-policy.js +0 -151
  296. package/dist/ui/shared/effect-poster-reader.js +0 -98
  297. package/dist/ui/shared/effect-posters.js +0 -117
  298. package/dist/ui/shared/effect-profiler.js +0 -184
  299. package/dist/ui/shared/effect-profiles.js +0 -65
  300. package/dist/ui/shared/effect-registry.js +0 -545
  301. package/dist/ui/shared/effect-runtime-loader.js +0 -236
  302. package/dist/ui/shared/effect-safety.js +0 -153
  303. package/dist/ui/shared/effect-stock-snapshot.js +0 -43
  304. package/dist/ui/shared/effect-stock-trust.js +0 -217
  305. package/dist/ui/shared/effect-trial-shadow.js +0 -62
  306. package/dist/ui/shared/effect-trial-source.js +0 -103
  307. package/dist/ui/shared/effect-trial-stage.js +0 -170
  308. package/dist/ui/shared/effect-trial.css +0 -40
  309. package/dist/ui/shared/feature-flags.js +0 -127
  310. package/dist/ui/shared/owner-effect-prefs.js +0 -117
  311. package/dist/web-effect-bootstrap.d.ts +0 -12
  312. package/dist/web-effect-bootstrap.js +0 -49
  313. package/dist/web-effect-bootstrap.js.map +0 -1
  314. package/dist/web-effect-bundle.d.ts +0 -28
  315. package/dist/web-effect-bundle.js +0 -171
  316. package/dist/web-effect-bundle.js.map +0 -1
  317. package/dist/web-effect-canonical.d.ts +0 -8
  318. package/dist/web-effect-canonical.js +0 -27
  319. package/dist/web-effect-canonical.js.map +0 -1
  320. package/dist/web-effect-library.d.ts +0 -114
  321. package/dist/web-effect-library.js +0 -530
  322. package/dist/web-effect-library.js.map +0 -1
  323. package/dist/web-effect-playback.d.ts +0 -30
  324. package/dist/web-effect-playback.js +0 -71
  325. package/dist/web-effect-playback.js.map +0 -1
  326. package/dist/web-effect-poster.d.ts +0 -8
  327. package/dist/web-effect-poster.js +0 -52
  328. package/dist/web-effect-poster.js.map +0 -1
  329. package/dist/web-effect-profiles.d.ts +0 -118
  330. package/dist/web-effect-profiles.js +0 -181
  331. package/dist/web-effect-profiles.js.map +0 -1
  332. package/dist/web-effect-service.d.ts +0 -93
  333. package/dist/web-effect-service.js +0 -335
  334. package/dist/web-effect-service.js.map +0 -1
  335. package/dist/web-effect-tools.d.ts +0 -48
  336. package/dist/web-effect-tools.js +0 -129
  337. package/dist/web-effect-tools.js.map +0 -1
  338. package/dist/web-effect-trials.d.ts +0 -86
  339. package/dist/web-effect-trials.js +0 -204
  340. package/dist/web-effect-trials.js.map +0 -1
  341. package/dist/web-effect-upload.d.ts +0 -27
  342. package/dist/web-effect-upload.js +0 -185
  343. package/dist/web-effect-upload.js.map +0 -1
  344. package/dist/web-effect-worker.d.ts +0 -8
  345. package/dist/web-effect-worker.js +0 -170
  346. package/dist/web-effect-worker.js.map +0 -1
  347. package/dist/web-effect.d.ts +0 -103
  348. package/dist/web-effect.js +0 -153
  349. package/dist/web-effect.js.map +0 -1
  350. package/dist/web-experimental-http.d.ts +0 -2
  351. package/dist/web-experimental-http.js +0 -12
  352. package/dist/web-experimental-http.js.map +0 -1
  353. package/dist/web-mod-agent.d.ts +0 -50
  354. package/dist/web-mod-agent.js +0 -207
  355. package/dist/web-mod-agent.js.map +0 -1
package/dist/locale.js CHANGED
@@ -82,6 +82,7 @@ const enMessages = {
82
82
  "usage.chat": "Usage: `/chat <message>`",
83
83
  "dashboard.local_signin": "💻 AgEnD computer: get a code",
84
84
  "dashboard.public_open": "🌐 Other device (temporary public)",
85
+ "dashboard.public_open_named": "🌐 Other device (your permanent link)",
85
86
  "dashboard.public_close": "Close public link",
86
87
  "dashboard.public_close_confirm": "Close link (signs public browsers out)",
87
88
  "dashboard.public_close_keep": "Cancel",
@@ -130,6 +131,7 @@ const enMessages = {
130
131
  "web_auth.refusal_authorization_expired": "its authorization ran out.",
131
132
  "web_auth.refusal_session_changed": "the browser changed session.",
132
133
  "dashboard.progress.title": "🌐 Opening a temporary public link · {0} s",
134
+ "dashboard.progress.title_named": "🌐 Opening your permanent link · {0} s",
133
135
  "dashboard.progress.seconds": "{0} s",
134
136
  "dashboard.progress.check": "Check cloudflared",
135
137
  "dashboard.progress.check_download": "cloudflared is not installed: fetching the pinned {0}",
@@ -156,7 +158,8 @@ const enMessages = {
156
158
  "dashboard.progress.fail.named-route-missing": "the named hostname did not reach a published application — check this tunnel’s hostname, DNS and published application route",
157
159
  "dashboard.progress.fail.named-hostname-mismatch": "the named hostname served a different page — point its published application to AgEnD’s origin URL",
158
160
  "dashboard.progress.fail.named-origin-unreachable": "Cloudflare could not reach the local origin — check the published application’s origin URL and port",
159
- "dashboard.progress.fail.named-connection-failed": "the named tunnel could not connect to Cloudflare — check network, DNS and firewall access, then retry",
161
+ "dashboard.progress.fail.named-connection-failed": "the tunnel could not connect to Cloudflare from this machine — ask the network administrator to allow outbound connections to Cloudflare, or set the protocol to http2 in Settings → Access & security",
162
+ "dashboard.progress.fail.named-self-unreachable": "the tunnel is connected to Cloudflare, but this machine can't open its own address — this machine's network may block the domain or its DNS; from another network (a phone on mobile data) it may still work. Ask the network administrator to allow the domain, or press Test connection in Settings → Access & security",
160
163
  "dashboard.progress.fail.origin-port-in-use": "the named tunnel’s local origin port is already in use — close the conflicting program or choose another origin port and update the Cloudflare route",
161
164
  "dashboard.progress.fail.process-exited": "cloudflared stopped before it gave a public address",
162
165
  "dashboard.progress.fail.bad-address": "Cloudflare gave an address AgEnD could not use",
@@ -251,7 +254,18 @@ const enMessages = {
251
254
  "inst.session_oom_retry_busy": "This instance is finishing another restart. Wait for it to finish, then explicitly retry the stopped session.",
252
255
  "inst.session_oom_save_failed": "The stop could not be saved: fix storage before restarting the fleet.",
253
256
  "needs.reason.auth_paused": "Paused: sign-in needed",
257
+ "needs.reason.usage_limit": "Usage limit reached · {0} · reset time unknown",
254
258
  "needs.reason.backend_signin": "Backend sign-in needed",
259
+ "needs.reason.config_invalid": "Configuration file needs attention",
260
+ "needs.reason.config_fallback": "Running on stored configuration",
261
+ "config_history.edit": "{0}, line {1}, column {2}: {3}. AgEnD is still running on the previous settings. The next restart would use the stored valid copy from {4}. Correct the YAML error; the file has not been changed by AgEnD.",
262
+ "config_history.no_history": "{0}, line {1}, column {2}: {3}. AgEnD is still running on the previous settings. No stored valid copy is available, so the next restart cannot recover automatically. Correct the YAML error before restarting; the file has not been changed by AgEnD.",
263
+ "config_history.fallback": "{0}, line {1}, column {2}: {3}. AgEnD started using the stored valid copy from {4}. Correct the YAML error and reload the settings. The file on disk has not been changed by AgEnD.",
264
+ "config_history.startup_failed": "Cannot start: {0}, line {1}, column {2}: {3}. No usable stored valid copy is available ({4}). Correct the YAML error and start AgEnD again. No configuration file was changed.",
265
+ "config_history.history_absent": "no stored copy",
266
+ "config_history.history_unreadable": "history DB unreadable",
267
+ "config_history.history_checksum": "stored checksum mismatch",
268
+ "config_history.history_invalid": "stored copy no longer valid",
255
269
  "login.browser_cleanup_failed": "Sign-in cleanup could not be confirmed. Close the AgEnD-owned login process and restart AgEnD before retrying.",
256
270
  "needs.reason.crashed": "Crashed",
257
271
  "needs.reason.delivery_uncertain": "Could not confirm delivery",
@@ -277,24 +291,6 @@ const enMessages = {
277
291
  "needs.task_answered": "💬 Answered {0}: it is in progress again.",
278
292
  "needs.task_changed": "{0} changed meanwhile: the list will update — use the new one.",
279
293
  "needs.task_refused": "{0}: {1}",
280
- // #2246 step 3: the task board's daily summary (task-board-summary.ts)
281
- "board_summary.title": "📋 Task board — daily summary, {0} – {1}",
282
- "board_summary.card": "{0} \"{1}\"",
283
- "board_summary.review": "Waiting for your confirmation ({0})",
284
- "board_summary.blocked": "Blocked ({0})",
285
- "board_summary.done": "Done ({0})",
286
- "board_summary.created": "New ({0})",
287
- "board_summary.projects": "Projects",
288
- "board_summary.more": "…and {0} more",
289
- "board_summary.subs": "{0} sub task(s): {1}",
290
- "board_summary.subs_more": "{0} sub tasks: {1} and more",
291
- "board_summary.reason": ": {0}",
292
- "board_summary.join": ", ",
293
- "board_summary.project": "{0} {1}% ({2}/{3})",
294
- "board_summary.project_extra": ", {0}",
295
- "board_summary.project_waiting": "{0} waiting for you",
296
- "board_summary.project_blocked": "{0} blocked",
297
- "board_summary.footer": "The board: Fleet › Tasks on the dashboard.",
298
294
  "dashboard.remote_hint": "📱 These links open on the fleet's own machine only. To use web chat from a phone or another computer: {0}",
299
295
  "fleet.starting_retry": "The fleet is still starting. Try again when startup finishes.",
300
296
  "fleet.ready": "Fleet ready. {0}/{1} instances running. v{2}",
@@ -336,9 +332,12 @@ const enMessages = {
336
332
  "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",
337
333
  "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`.",
338
334
  "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.",
339
- "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. 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. Deliveries to this instance are held until the dialog is gone.",
340
- "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 (for Claude's session-resume prompt: select \"Resume full session as-is\"). Deliveries to this instance are held until the dialog is gone.",
335
+ "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.",
336
+ "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.",
337
+ "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.",
338
+ "inst.dialog_parked_stuck_claude_resume": "For Claude's session-resume prompt: select \"Resume full session as-is\".",
341
339
  "fleet.dialog_parked": "⚠️ {0} has been parked on a CLI dialog for over a minute ({1}) — not auto-answered. Someone needs to choose in its pane; queued messages are held meanwhile.",
340
+ "fleet.dialog_parked_resolved": "✓ resolved",
342
341
  "inst.dialog_answer_ignored": "⚠️ {0} is showing a CLI dialog ({1}) and it is not taking AgEnD's answer — {2} tries in a row, still on screen. Open its pane and answer it by hand.",
343
342
  "inst.dialog_answer_ignored_held": "⚠️ {0} is showing a CLI dialog ({1}) and it is not taking AgEnD's answer — {2} tries in a row, still on screen. Open its pane and answer it by hand. Deliveries to this instance are held until the dialog is gone.",
344
343
  "fleet.dialog_answer_ignored": "⚠️ {0}: a CLI dialog ({1}) is not taking AgEnD's answer ({2} tries). Someone needs to answer it in its pane.",
@@ -486,8 +485,30 @@ const enMessages = {
486
485
  "inst.notification": "{0} {1}: {2} (action: {3})",
487
486
  "inst.claude_model_fallback": "The selected Claude model is unavailable. Claude Code is currently using {0}; use /model to choose a supported model.",
488
487
  "inst.claude_model_unavailable": "The selected Claude model is unavailable or unrecognized. Claude Code may be using a fallback; use /model to choose a supported model.",
488
+ "inst.model_usage_limit": "Claude has reached its {0} usage limit — reset time unknown. Messages reach it but fail until the limit clears or the model is switched (/model).",
489
+ "inst.quota_line": "⚠️ {0} {1} used up",
490
+ "inst.quota_line_paused": "⚠️ {0} {1} used up — paused",
491
+ "inst.quota_reset_at": "{0} (resets at {1})",
492
+ "inst.quota_reset_in": "{0} (resets in {1})",
493
+ "inst.quota_what.usage": "usage limit",
494
+ "inst.quota_what.api_credits": "API credits",
495
+ "inst.quota_what.api_quota": "API quota",
496
+ "inst.quota_what.workspace_credits": "workspace credits",
497
+ "inst.quota_what.workspace_usage": "workspace usage limit",
498
+ "inst.quota_what.quota": "quota",
499
+ "inst.quota_what.quota_credits": "quota/credits",
500
+ "inst.quota_what.requests": "request limit",
501
+ "inst.quota_what.weekly": "weekly limit",
502
+ "inst.quota_model_hold": "⚠️ Claude {0} usage limit used up (reset time unknown; /model to switch)",
503
+ "inst.quota_spend_cap": "⚠️ Codex workspace spend cap reached — paused",
504
+ "inst.quota_low": "⚠️ Codex {0}: under {1}% left",
505
+ "inst.quota_period.hourly": "hourly limit",
506
+ "inst.quota_period.daily": "daily limit",
507
+ "inst.quota_period.weekly": "weekly limit",
508
+ "inst.quota_period.monthly": "monthly limit",
489
509
  "inst.codex_model_capacity": "The selected Codex model is currently at capacity. Retry the message manually later, or use /model to switch to another model before continuing.",
490
510
  "inst.codex_usage_limit_luna_reserve": "⚡ {0}: Codex usage limit reached — automatically selected Continue with Luna Reserve. You can override with /model.",
511
+ "inst.notice_named": "{0} {1}: {2}",
491
512
  "inst.codex_capacity_backoff_retry": "⏳ {0}: model at capacity (attempt {1}/{2}) — retrying in {3}s.",
492
513
  "inst.codex_capacity_backoff_exhausted": "⚠️ {0}: model still at capacity after {1} retries — pausing. Use /model to switch to another model.",
493
514
  "inst.codex_capacity_nudge_scheduled": "⏳ {0}: the Codex model is at capacity (attempt {1}/{2}) — telling it to keep going in {3}s. If it stays at capacity, use /model to switch to another model.",
@@ -509,6 +530,7 @@ const enMessages = {
509
530
  "web.reply_gone": "The message you replied to is no longer in this chat.",
510
531
  "web.raw_public_refused": "/raw is not available over the public link: it would reach the CLI without the [user:] envelope. Send it as a normal message, or use it from Discord or a local session.",
511
532
  "web.command_public_refused": "{0} is not available over the public link.",
533
+ "web.command_guest_refused": "{0} isn't available to guests. Only this channel's admins can run it; ask the host if you need it.",
512
534
  "web.command_unknown": "{0} is not a command the web chat runs. Send it as a message instead.",
513
535
  "web.command_no_choices": "{0} has nothing to choose from for this instance.",
514
536
  "interactive.kind.permission": "permission confirmation",
@@ -916,6 +938,9 @@ const enMessages = {
916
938
  "doctor.dbus_unset": "DBUS_SESSION_BUS_ADDRESS is not set — systemd --user may not work",
917
939
  "doctor.loaded_unit": "Loaded unit",
918
940
  "doctor.notify_refused": "systemd refuses the fleet's ready signal and restarts it every time the start times out (15 minutes); `agend restart` repairs it (#2331)",
941
+ "doctor.notify_socket": "Notify socket",
942
+ "doctor.notify_socket_ok": "{0} exists",
943
+ "doctor.notify_socket_missing": "{0} is missing (its runtime dir was removed or replaced), so systemd never hears the fleet's ready signal and restarts it every 15 minutes. Run from a host shell, not from an agent: {3}systemctl restart user@{2}.service (recreates {0}; it also restarts the fleet and everything else {1} runs); if `loginctl show-user {1} -p Linger` says no, also {3}loginctl enable-linger {1}",
919
944
  "doctor.unit_files": "Unit files",
920
945
  "doctor.leftover": "Leftover",
921
946
  "doctor.fleet_process": "fleet process",
@@ -1495,6 +1520,7 @@ const zhTWMessages = {
1495
1520
  "usage.chat": "用法:`/chat <訊息>`",
1496
1521
  "dashboard.local_signin": "💻 AgEnD 電腦登入(取碼)",
1497
1522
  "dashboard.public_open": "🌐 其他裝置登入(臨時公開)",
1523
+ "dashboard.public_open_named": "🌐 其他裝置登入(固定網域)",
1498
1524
  "dashboard.public_close": "關閉公開連結",
1499
1525
  "dashboard.public_close_confirm": "確定關閉(公開連結的登入都會登出)",
1500
1526
  "dashboard.public_close_keep": "取消",
@@ -1543,6 +1569,7 @@ const zhTWMessages = {
1543
1569
  "web_auth.refusal_authorization_expired": "它的授權已過期。",
1544
1570
  "web_auth.refusal_session_changed": "瀏覽器換了 session。",
1545
1571
  "dashboard.progress.title": "🌐 正在開啟臨時公開連結 · {0} 秒",
1572
+ "dashboard.progress.title_named": "🌐 正在開啟固定網域 · {0} 秒",
1546
1573
  "dashboard.progress.seconds": "{0} 秒",
1547
1574
  "dashboard.progress.check": "檢查 cloudflared",
1548
1575
  "dashboard.progress.check_download": "尚未安裝 cloudflared:下載固定版本 {0}",
@@ -1569,7 +1596,8 @@ const zhTWMessages = {
1569
1596
  "dashboard.progress.fail.named-route-missing": "固定網域沒有連到公開應用程式 — 請檢查這個 tunnel 的網域、DNS 與公開應用程式路由",
1570
1597
  "dashboard.progress.fail.named-hostname-mismatch": "固定網域傳回了其他頁面 — 請把公開應用程式指向 AgEnD 的來源網址",
1571
1598
  "dashboard.progress.fail.named-origin-unreachable": "Cloudflare 無法連到本機來源 — 請檢查公開應用程式的來源網址與連接埠",
1572
- "dashboard.progress.fail.named-connection-failed": "固定 tunnel 無法連上 Cloudflare — 請檢查網路、DNS 與防火牆後重試",
1599
+ "dashboard.progress.fail.named-connection-failed": "這台主機連不上 Cloudflare,tunnel 沒有連線 — 請網路管理員允許對 Cloudflare 的對外連線,或到 設定 → 存取與安全 把通訊協定改成 http2",
1600
+ "dashboard.progress.fail.named-self-unreachable": "tunnel 已連上 Cloudflare,但這台主機打不開自己的網址 — 這台主機所在的網路可能擋了這個網域或它的 DNS;從其他網路(例如手機行動網路)可能可以正常使用。請網路管理員允許這個網域,或到 設定 → 存取與安全 按「測試連線」檢查",
1573
1601
  "dashboard.progress.fail.origin-port-in-use": "固定 tunnel 的本機來源連接埠已被占用 — 請關閉衝突的程式,或選擇其他來源連接埠並更新 Cloudflare 路由",
1574
1602
  "dashboard.progress.fail.process-exited": "cloudflared 在給出公開網址前就停止了",
1575
1603
  "dashboard.progress.fail.bad-address": "Cloudflare 給出的網址 AgEnD 無法使用",
@@ -1664,7 +1692,18 @@ const zhTWMessages = {
1664
1692
  "inst.session_oom_retry_busy": "這個 Agent 正在完成另一次重啟。請等它結束後,再明確重試已停止的工作階段。",
1665
1693
  "inst.session_oom_save_failed": "無法儲存停止紀錄:請先修復儲存空間或權限,再重啟 fleet。",
1666
1694
  "needs.reason.auth_paused": "已暫停:需要登入",
1695
+ "needs.reason.usage_limit": "用量已達上限 · {0} · 恢復時間未知",
1667
1696
  "needs.reason.backend_signin": "後端需要登入",
1697
+ "needs.reason.config_invalid": "設定檔需要處理",
1698
+ "needs.reason.config_fallback": "正在使用儲存的設定副本",
1699
+ "config_history.edit": "{0} 第 {1} 行、第 {2} 欄:{3}。AgEnD 仍使用先前的設定執行。下次重新啟動會改用 {4} 儲存的有效副本。請修正 YAML 錯誤;AgEnD 未更動此檔案。",
1700
+ "config_history.no_history": "{0} 第 {1} 行、第 {2} 欄:{3}。AgEnD 仍使用先前的設定執行。沒有可用的有效副本,下次重新啟動將無法自動恢復。請在重新啟動前修正 YAML 錯誤;AgEnD 未更動此檔案。",
1701
+ "config_history.fallback": "{0} 第 {1} 行、第 {2} 欄:{3}。AgEnD 已使用 {4} 儲存的有效副本啟動。請修正 YAML 錯誤並重新載入設定。AgEnD 未更動磁碟上的檔案。",
1702
+ "config_history.startup_failed": "無法啟動:{0} 第 {1} 行、第 {2} 欄:{3}。沒有可用的有效副本({4})。請修正 YAML 錯誤,再啟動 AgEnD。未更動任何設定檔。",
1703
+ "config_history.history_absent": "沒有儲存的副本",
1704
+ "config_history.history_unreadable": "無法讀取歷史資料庫",
1705
+ "config_history.history_checksum": "儲存副本的校驗碼不符",
1706
+ "config_history.history_invalid": "儲存的副本已不再有效",
1668
1707
  "login.browser_cleanup_failed": "無法確認登入程序已關閉。請先關閉 AgEnD 的登入程序,重新啟動 AgEnD 後再試。",
1669
1708
  "needs.reason.crashed": "已崩潰",
1670
1709
  "needs.reason.delivery_uncertain": "無法確認是否送達",
@@ -1690,24 +1729,6 @@ const zhTWMessages = {
1690
1729
  "needs.task_answered": "💬 已回覆 {0},卡片改回進行中。",
1691
1730
  "needs.task_changed": "{0} 在這之間被改過了:清單會更新,請用新的那則。",
1692
1731
  "needs.task_refused": "{0}:{1}",
1693
- // #2246 step 3:任務看板的每日摘要(task-board-summary.ts)
1694
- "board_summary.title": "📋 任務看板每日摘要 {0} – {1}",
1695
- "board_summary.card": "{0}「{1}」",
1696
- "board_summary.review": "等你確認({0})",
1697
- "board_summary.blocked": "卡住({0})",
1698
- "board_summary.done": "完成({0})",
1699
- "board_summary.created": "新開({0})",
1700
- "board_summary.projects": "專案進度",
1701
- "board_summary.more": "…還有 {0} 張",
1702
- "board_summary.subs": "子任務 {0} 張:{1}",
1703
- "board_summary.subs_more": "子任務 {0} 張:{1} 等",
1704
- "board_summary.reason": ":{0}",
1705
- "board_summary.join": "、",
1706
- "board_summary.project": "{0} {1}%({2}/{3})",
1707
- "board_summary.project_extra": ",{0}",
1708
- "board_summary.project_waiting": "等你確認 {0}",
1709
- "board_summary.project_blocked": "卡住 {0}",
1710
- "board_summary.footer": "看板:網頁的 Fleet › Tasks。",
1711
1732
  "dashboard.remote_hint": "📱 這些連結只能在 Fleet 所在的那台電腦上開。要用手機或其他電腦開網頁聊天:{0}",
1712
1733
  "fleet.starting_retry": "Fleet 還在啟動,請等啟動完成後再試。",
1713
1734
  "fleet.ready": "Fleet 就緒。{0}/{1} 個 Agent 運行中。v{2}",
@@ -1749,9 +1770,12 @@ const zhTWMessages = {
1749
1770
  "codex.package_companion_not_executable": "Codex 安裝不完整 — codex 執行檔旁({1}/bin)的 `{0}` 無法執行;請用完整的官方套件重新安裝 Codex",
1750
1771
  "codex.resume_db_unreadable_last": "讀不到 Codex 的 session 資料庫({0})。這個 repo 裡沒有其他 Codex instance,所以這次啟動退回用 `codex resume --last`。",
1751
1772
  "codex.resume_none_but_history": "找不到 {0} 可自動接續的 Codex 對話,所以這次啟動開了**新對話**。這個工作目錄其實有之前的對話({1}),它還在,可用 `codex resume {1}` 接回。",
1752
- "inst.dialog_parked_hold": "⚠️ {0} 停在一個 AgEnD 認不準、因此**不會**自動回答的 CLI 對話框上({1})。請到它的 pane **先看清楚再按鍵**:游標可能已經在不同的選項上。若是 Claude 的 session-resume 提示,請把游標移到「Resume full session as-is」再確認;除非你要丟掉完整 context,否則絕不要確認「Resume from summary」。對話框消失前,送給這個 instance 的訊息會先保留。",
1753
- "inst.dialog_parked_stuck": "⚠️ {0} 停在一個 CLI 對話框上({1}),自動回答沒有生效。請到它的 pane 手動完成(Claude 的 session-resume 提示:選「Resume full session as-is」)。對話框消失前,送給這個 instance 的訊息會先保留。",
1773
+ "inst.dialog_parked_hold": "⚠️ {0} 停在一個 AgEnD 認不準、因此**不會**自動回答的 CLI 對話框上({1})。請到它的 pane **先看清楚再按鍵**:游標可能已經在不同的選項上。對話框消失前,送給這個 instance 的訊息會先保留。",
1774
+ "inst.dialog_parked_hold_claude_resume": "這是 Claude 的 session-resume 提示:請把游標移到「Resume full session as-is」再確認;除非你要丟掉完整 context,否則絕不要確認「Resume from summary」。",
1775
+ "inst.dialog_parked_stuck": "⚠️ {0} 停在一個 CLI 對話框上({1}),自動回答沒有生效。請到它的 pane 手動完成。對話框消失前,送給這個 instance 的訊息會先保留。",
1776
+ "inst.dialog_parked_stuck_claude_resume": "這是 Claude 的 session-resume 提示:請選「Resume full session as-is」。",
1754
1777
  "fleet.dialog_parked": "⚠️ {0} 已在 CLI 對話框上停超過一分鐘({1}),未自動回答。需要有人到它的 pane 選擇;期間排隊訊息會保留。",
1778
+ "fleet.dialog_parked_resolved": "✓ 已處理",
1755
1779
  "inst.dialog_answer_ignored": "⚠️ {0} 畫面上有個 CLI 對話框({1}),AgEnD 的自動回答沒有生效——連續 {2} 次回答後它仍然在畫面上。請到它的 pane 手動回答。",
1756
1780
  "inst.dialog_answer_ignored_held": "⚠️ {0} 畫面上有個 CLI 對話框({1}),AgEnD 的自動回答沒有生效——連續 {2} 次回答後它仍然在畫面上。請到它的 pane 手動回答。對話框消失前,送給這個 instance 的訊息會先保留。",
1757
1781
  "fleet.dialog_answer_ignored": "⚠️ {0}:CLI 對話框({1})不接受 AgEnD 的自動回答(試了 {2} 次)。需要有人到它的 pane 回答。",
@@ -1899,8 +1923,30 @@ const zhTWMessages = {
1899
1923
  "inst.notification": "{0} {1}:{2}(動作:{3})",
1900
1924
  "inst.claude_model_fallback": "選擇的 Claude Model 無法使用。Claude Code 目前實際使用 {0};請用 /model 選擇支援的 Model。",
1901
1925
  "inst.claude_model_unavailable": "選擇的 Claude Model 無法使用或無法辨識。Claude Code 可能已改用 fallback;請用 /model 選擇支援的 Model。",
1926
+ "inst.model_usage_limit": "Claude 的 {0} 用量已達上限,恢復時間未知。訊息仍會送到,但在額度恢復或切換模型(/model)前都會失敗。",
1927
+ "inst.quota_line": "⚠️ {0} {1}用完",
1928
+ "inst.quota_line_paused": "⚠️ {0} {1}用完,已暫停",
1929
+ "inst.quota_reset_at": "{0}({1} 重置)",
1930
+ "inst.quota_reset_in": "{0}({1} 後重置)",
1931
+ "inst.quota_what.usage": "用量",
1932
+ "inst.quota_what.api_credits": "API 額度",
1933
+ "inst.quota_what.api_quota": "API 額度",
1934
+ "inst.quota_what.workspace_credits": "工作區額度",
1935
+ "inst.quota_what.workspace_usage": "工作區用量",
1936
+ "inst.quota_what.quota": "額度",
1937
+ "inst.quota_what.quota_credits": "額度",
1938
+ "inst.quota_what.requests": "請求次數",
1939
+ "inst.quota_what.weekly": "週用量",
1940
+ "inst.quota_model_hold": "⚠️ Claude {0} 用量用完(重置時間未知,可用 /model 換模型)",
1941
+ "inst.quota_spend_cap": "⚠️ Codex 工作區花費上限已到,已暫停",
1942
+ "inst.quota_low": "⚠️ Codex {0}剩不到 {1}%",
1943
+ "inst.quota_period.hourly": "每小時用量",
1944
+ "inst.quota_period.daily": "每日用量",
1945
+ "inst.quota_period.weekly": "週用量",
1946
+ "inst.quota_period.monthly": "月用量",
1902
1947
  "inst.codex_model_capacity": "選擇的 Codex 模型目前服務擁擠。請稍後手動重送訊息,或用 /model 切換其他模型後再繼續。",
1903
1948
  "inst.codex_usage_limit_luna_reserve": "⚡ {0}:Codex 使用額度達上限——已自動選擇「Continue with Luna Reserve」。可用 /model 切換覆蓋。",
1949
+ "inst.notice_named": "{0} {1}:{2}",
1904
1950
  "inst.codex_capacity_backoff_retry": "⏳ {0}:模型服務擁擠(第 {1}/{2} 次)— {3}s 後重試。",
1905
1951
  "inst.codex_capacity_backoff_exhausted": "⚠️ {0}:模型服務擁擠(已重試 {1} 次)— 暫停中。請用 /model 切換其他模型。",
1906
1952
  "inst.codex_capacity_nudge_scheduled": "⏳ {0}:Codex 模型目前服務擁擠(第 {1}/{2} 次)——{3} 秒後會叫它繼續。若持續擁擠,請用 /model 切換其他模型。",
@@ -1922,6 +1968,7 @@ const zhTWMessages = {
1922
1968
  "web.reply_gone": "你回覆的訊息已不在這個聊天裡。",
1923
1969
  "web.raw_public_refused": "公開連結無法使用 /raw:它會繞過 [user:] 包裝直接送進 CLI。請當成一般訊息送出,或改在 Discord 或本機登入的工作階段使用。",
1924
1970
  "web.command_public_refused": "公開連結無法使用 {0}。",
1971
+ "web.command_guest_refused": "訪客不能使用 {0},只有這個頻道的管理員可以執行;需要的話請洽主機管理員。",
1925
1972
  "web.command_unknown": "{0} 不是 web chat 可執行的指令,請改成一般訊息送出。",
1926
1973
  "web.command_no_choices": "這個 instance 的 {0} 沒有可選的項目。",
1927
1974
  "interactive.kind.permission": "權限確認",
@@ -2329,6 +2376,9 @@ const zhTWMessages = {
2329
2376
  "doctor.dbus_unset": "未設定 DBUS_SESSION_BUS_ADDRESS — systemd --user 可能無法運作",
2330
2377
  "doctor.loaded_unit": "已載入的 unit",
2331
2378
  "doctor.notify_refused": "systemd 會拒收 fleet 的就緒訊號,每次啟動逾時(15 分鐘)就重啟它;執行 `agend restart` 會修好(#2331)",
2379
+ "doctor.notify_socket": "通知 socket",
2380
+ "doctor.notify_socket_ok": "{0} 存在",
2381
+ "doctor.notify_socket_missing": "{0} 不存在(它的 runtime 目錄被移除或換掉了),systemd 收不到 fleet 的就緒訊號,每 15 分鐘就重啟它。請在主機的 shell 執行,不要從 agent 執行:{3}systemctl restart user@{2}.service(會重建 {0};fleet 與 {1} 的其他程序也會一併重啟);若 `loginctl show-user {1} -p Linger` 顯示 no,再執行 {3}loginctl enable-linger {1}",
2332
2382
  "doctor.unit_files": "Unit 檔案",
2333
2383
  "doctor.leftover": "殘留設定",
2334
2384
  "doctor.fleet_process": "Fleet process",