charness 0.0.0-stage → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1044) hide show
  1. package/.env.example +88 -0
  2. package/DEVELOPMENT.md +110 -0
  3. package/LICENSE +21 -0
  4. package/MIGRATION_1_TO_2.md +24 -0
  5. package/README.md +1196 -2
  6. package/dist/accessControl.d.ts +71 -0
  7. package/dist/accessControl.d.ts.map +1 -0
  8. package/dist/accessControl.js +108 -0
  9. package/dist/accessControl.js.map +1 -0
  10. package/dist/adapters/adapterEventRouting.d.ts +51 -0
  11. package/dist/adapters/adapterEventRouting.d.ts.map +1 -0
  12. package/dist/adapters/adapterEventRouting.js +74 -0
  13. package/dist/adapters/adapterEventRouting.js.map +1 -0
  14. package/dist/adapters/adapterNames.d.ts +19 -0
  15. package/dist/adapters/adapterNames.d.ts.map +1 -0
  16. package/dist/adapters/adapterNames.js +25 -0
  17. package/dist/adapters/adapterNames.js.map +1 -0
  18. package/dist/adapters/claudeCliAdapter.d.ts +1351 -0
  19. package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
  20. package/dist/adapters/claudeCliAdapter.js +4239 -0
  21. package/dist/adapters/claudeCliAdapter.js.map +1 -0
  22. package/dist/adapters/claudeConfigDir.d.ts +40 -0
  23. package/dist/adapters/claudeConfigDir.d.ts.map +1 -0
  24. package/dist/adapters/claudeConfigDir.js +3 -0
  25. package/dist/adapters/claudeConfigDir.js.map +1 -0
  26. package/dist/adapters/claudeJsonStreamAdapter.d.ts +580 -0
  27. package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
  28. package/dist/adapters/claudeJsonStreamAdapter.js +1891 -0
  29. package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -0
  30. package/dist/adapters/claudePlatformFlags.d.ts +35 -0
  31. package/dist/adapters/claudePlatformFlags.d.ts.map +1 -0
  32. package/dist/adapters/claudePlatformFlags.js +46 -0
  33. package/dist/adapters/claudePlatformFlags.js.map +1 -0
  34. package/dist/adapters/createAdapter.d.ts +260 -0
  35. package/dist/adapters/createAdapter.d.ts.map +1 -0
  36. package/dist/adapters/createAdapter.js +512 -0
  37. package/dist/adapters/createAdapter.js.map +1 -0
  38. package/dist/adapters/openCodeAdapter.d.ts +1469 -0
  39. package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
  40. package/dist/adapters/openCodeAdapter.js +4623 -0
  41. package/dist/adapters/openCodeAdapter.js.map +1 -0
  42. package/dist/adapters/sessionLaunchDefaults.d.ts +28 -0
  43. package/dist/adapters/sessionLaunchDefaults.d.ts.map +1 -0
  44. package/dist/adapters/sessionLaunchDefaults.js +15 -0
  45. package/dist/adapters/sessionLaunchDefaults.js.map +1 -0
  46. package/dist/adapters/terminalAdapter.d.ts +68 -0
  47. package/dist/adapters/terminalAdapter.d.ts.map +1 -0
  48. package/dist/adapters/terminalAdapter.js +371 -0
  49. package/dist/adapters/terminalAdapter.js.map +1 -0
  50. package/dist/agentLogin/agentLogin.d.ts +44 -0
  51. package/dist/agentLogin/agentLogin.d.ts.map +1 -0
  52. package/dist/agentLogin/agentLogin.js +530 -0
  53. package/dist/agentLogin/agentLogin.js.map +1 -0
  54. package/dist/agentTrigger.d.ts +28 -0
  55. package/dist/agentTrigger.d.ts.map +1 -0
  56. package/dist/agentTrigger.js +53 -0
  57. package/dist/agentTrigger.js.map +1 -0
  58. package/dist/apiErrorRetry.d.ts +214 -0
  59. package/dist/apiErrorRetry.d.ts.map +1 -0
  60. package/dist/apiErrorRetry.js +382 -0
  61. package/dist/apiErrorRetry.js.map +1 -0
  62. package/dist/apiRetryKick.d.ts +157 -0
  63. package/dist/apiRetryKick.d.ts.map +1 -0
  64. package/dist/apiRetryKick.js +174 -0
  65. package/dist/apiRetryKick.js.map +1 -0
  66. package/dist/bootClassifier.d.ts +46 -0
  67. package/dist/bootClassifier.d.ts.map +1 -0
  68. package/dist/bootClassifier.js +43 -0
  69. package/dist/bootClassifier.js.map +1 -0
  70. package/dist/bot.d.ts +207 -0
  71. package/dist/bot.d.ts.map +1 -0
  72. package/dist/bot.js +11226 -0
  73. package/dist/bot.js.map +1 -0
  74. package/dist/botFileStorage.d.ts +60 -0
  75. package/dist/botFileStorage.d.ts.map +1 -0
  76. package/dist/botFileStorage.js +205 -0
  77. package/dist/botFileStorage.js.map +1 -0
  78. package/dist/cli/applyDnsFix.d.ts +7 -0
  79. package/dist/cli/applyDnsFix.d.ts.map +1 -0
  80. package/dist/cli/applyDnsFix.js +46 -0
  81. package/dist/cli/applyDnsFix.js.map +1 -0
  82. package/dist/cli/bot.d.ts +27 -0
  83. package/dist/cli/bot.d.ts.map +1 -0
  84. package/dist/cli/bot.js +98 -0
  85. package/dist/cli/bot.js.map +1 -0
  86. package/dist/cli/botEntry.d.ts +3 -0
  87. package/dist/cli/botEntry.d.ts.map +1 -0
  88. package/dist/cli/botEntry.js +11 -0
  89. package/dist/cli/botEntry.js.map +1 -0
  90. package/dist/cli/claudeProfiles.d.ts +42 -0
  91. package/dist/cli/claudeProfiles.d.ts.map +1 -0
  92. package/dist/cli/claudeProfiles.js +106 -0
  93. package/dist/cli/claudeProfiles.js.map +1 -0
  94. package/dist/cli/connectorGuards.d.ts +31 -0
  95. package/dist/cli/connectorGuards.d.ts.map +1 -0
  96. package/dist/cli/connectorGuards.js +159 -0
  97. package/dist/cli/connectorGuards.js.map +1 -0
  98. package/dist/cli/envLoader.d.ts +34 -0
  99. package/dist/cli/envLoader.d.ts.map +1 -0
  100. package/dist/cli/envLoader.js +132 -0
  101. package/dist/cli/envLoader.js.map +1 -0
  102. package/dist/cli/hot.d.ts +82 -0
  103. package/dist/cli/hot.d.ts.map +1 -0
  104. package/dist/cli/hot.js +323 -0
  105. package/dist/cli/hot.js.map +1 -0
  106. package/dist/cli.d.ts +3 -0
  107. package/dist/cli.d.ts.map +1 -0
  108. package/dist/cli.js +140 -0
  109. package/dist/cli.js.map +1 -0
  110. package/dist/connectors/jira/adf.d.ts +74 -0
  111. package/dist/connectors/jira/adf.d.ts.map +1 -0
  112. package/dist/connectors/jira/adf.js +412 -0
  113. package/dist/connectors/jira/adf.js.map +1 -0
  114. package/dist/connectors/jira/agentBinaries.d.ts +14 -0
  115. package/dist/connectors/jira/agentBinaries.d.ts.map +1 -0
  116. package/dist/connectors/jira/agentBinaries.js +75 -0
  117. package/dist/connectors/jira/agentBinaries.js.map +1 -0
  118. package/dist/connectors/jira/answerSink.d.ts +59 -0
  119. package/dist/connectors/jira/answerSink.d.ts.map +1 -0
  120. package/dist/connectors/jira/answerSink.js +234 -0
  121. package/dist/connectors/jira/answerSink.js.map +1 -0
  122. package/dist/connectors/jira/attachmentDownload.d.ts +41 -0
  123. package/dist/connectors/jira/attachmentDownload.d.ts.map +1 -0
  124. package/dist/connectors/jira/attachmentDownload.js +92 -0
  125. package/dist/connectors/jira/attachmentDownload.js.map +1 -0
  126. package/dist/connectors/jira/attachmentTool.d.ts +50 -0
  127. package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
  128. package/dist/connectors/jira/attachmentTool.js +166 -0
  129. package/dist/connectors/jira/attachmentTool.js.map +1 -0
  130. package/dist/connectors/jira/client.d.ts +522 -0
  131. package/dist/connectors/jira/client.d.ts.map +1 -0
  132. package/dist/connectors/jira/client.js +491 -0
  133. package/dist/connectors/jira/client.js.map +1 -0
  134. package/dist/connectors/jira/config.d.ts +104 -0
  135. package/dist/connectors/jira/config.d.ts.map +1 -0
  136. package/dist/connectors/jira/config.js +323 -0
  137. package/dist/connectors/jira/config.js.map +1 -0
  138. package/dist/connectors/jira/configFile.d.ts +10 -0
  139. package/dist/connectors/jira/configFile.d.ts.map +1 -0
  140. package/dist/connectors/jira/configFile.js +50 -0
  141. package/dist/connectors/jira/configFile.js.map +1 -0
  142. package/dist/connectors/jira/connector.d.ts +71 -0
  143. package/dist/connectors/jira/connector.d.ts.map +1 -0
  144. package/dist/connectors/jira/connector.js +312 -0
  145. package/dist/connectors/jira/connector.js.map +1 -0
  146. package/dist/connectors/jira/contextLedger.d.ts +60 -0
  147. package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
  148. package/dist/connectors/jira/contextLedger.js +196 -0
  149. package/dist/connectors/jira/contextLedger.js.map +1 -0
  150. package/dist/connectors/jira/contextPreamble.d.ts +18 -0
  151. package/dist/connectors/jira/contextPreamble.d.ts.map +1 -0
  152. package/dist/connectors/jira/contextPreamble.js +31 -0
  153. package/dist/connectors/jira/contextPreamble.js.map +1 -0
  154. package/dist/connectors/jira/inbound.d.ts +141 -0
  155. package/dist/connectors/jira/inbound.d.ts.map +1 -0
  156. package/dist/connectors/jira/inbound.js +331 -0
  157. package/dist/connectors/jira/inbound.js.map +1 -0
  158. package/dist/connectors/jira/issueBlocks.d.ts +74 -0
  159. package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
  160. package/dist/connectors/jira/issueBlocks.js +257 -0
  161. package/dist/connectors/jira/issueBlocks.js.map +1 -0
  162. package/dist/connectors/jira/issueContext.d.ts +31 -0
  163. package/dist/connectors/jira/issueContext.d.ts.map +1 -0
  164. package/dist/connectors/jira/issueContext.js +70 -0
  165. package/dist/connectors/jira/issueContext.js.map +1 -0
  166. package/dist/connectors/jira/issueDelta.d.ts +38 -0
  167. package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
  168. package/dist/connectors/jira/issueDelta.js +59 -0
  169. package/dist/connectors/jira/issueDelta.js.map +1 -0
  170. package/dist/connectors/jira/mediaPlaceholders.d.ts +22 -0
  171. package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
  172. package/dist/connectors/jira/mediaPlaceholders.js +105 -0
  173. package/dist/connectors/jira/mediaPlaceholders.js.map +1 -0
  174. package/dist/connectors/jira/outbound.d.ts +6 -0
  175. package/dist/connectors/jira/outbound.d.ts.map +1 -0
  176. package/dist/connectors/jira/outbound.js +38 -0
  177. package/dist/connectors/jira/outbound.js.map +1 -0
  178. package/dist/connectors/jira/prompt.d.ts +39 -0
  179. package/dist/connectors/jira/prompt.d.ts.map +1 -0
  180. package/dist/connectors/jira/prompt.js +102 -0
  181. package/dist/connectors/jira/prompt.js.map +1 -0
  182. package/dist/connectors/jira/promptSpill.d.ts +50 -0
  183. package/dist/connectors/jira/promptSpill.d.ts.map +1 -0
  184. package/dist/connectors/jira/promptSpill.js +157 -0
  185. package/dist/connectors/jira/promptSpill.js.map +1 -0
  186. package/dist/connectors/jira/promptText.d.ts +7 -0
  187. package/dist/connectors/jira/promptText.d.ts.map +1 -0
  188. package/dist/connectors/jira/promptText.js +26 -0
  189. package/dist/connectors/jira/promptText.js.map +1 -0
  190. package/dist/connectors/jira/sessionKeyCodec.d.ts +18 -0
  191. package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
  192. package/dist/connectors/jira/sessionKeyCodec.js +106 -0
  193. package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
  194. package/dist/connectors/jira/trigger.d.ts +54 -0
  195. package/dist/connectors/jira/trigger.d.ts.map +1 -0
  196. package/dist/connectors/jira/trigger.js +101 -0
  197. package/dist/connectors/jira/trigger.js.map +1 -0
  198. package/dist/connectors/jira/triggerLog.d.ts +53 -0
  199. package/dist/connectors/jira/triggerLog.d.ts.map +1 -0
  200. package/dist/connectors/jira/triggerLog.js +78 -0
  201. package/dist/connectors/jira/triggerLog.js.map +1 -0
  202. package/dist/connectors/jira/trustedGroup.d.ts +54 -0
  203. package/dist/connectors/jira/trustedGroup.d.ts.map +1 -0
  204. package/dist/connectors/jira/trustedGroup.js +98 -0
  205. package/dist/connectors/jira/trustedGroup.js.map +1 -0
  206. package/dist/connectors/jira/unconfirmedPosts.d.ts +58 -0
  207. package/dist/connectors/jira/unconfirmedPosts.d.ts.map +1 -0
  208. package/dist/connectors/jira/unconfirmedPosts.js +105 -0
  209. package/dist/connectors/jira/unconfirmedPosts.js.map +1 -0
  210. package/dist/connectors/telegram/answerSink.d.ts +46 -0
  211. package/dist/connectors/telegram/answerSink.d.ts.map +1 -0
  212. package/dist/connectors/telegram/answerSink.js +71 -0
  213. package/dist/connectors/telegram/answerSink.js.map +1 -0
  214. package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +34 -0
  215. package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
  216. package/dist/connectors/telegram/commands/autoContinueLimits.js +112 -0
  217. package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -0
  218. package/dist/connectors/telegram/commands/botCore.d.ts +46 -0
  219. package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -0
  220. package/dist/connectors/telegram/commands/botCore.js +3 -0
  221. package/dist/connectors/telegram/commands/botCore.js.map +1 -0
  222. package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
  223. package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -0
  224. package/dist/connectors/telegram/commands/callbackMessage.js +13 -0
  225. package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -0
  226. package/dist/connectors/telegram/commands/claudeAccounts.d.ts +58 -0
  227. package/dist/connectors/telegram/commands/claudeAccounts.d.ts.map +1 -0
  228. package/dist/connectors/telegram/commands/claudeAccounts.js +591 -0
  229. package/dist/connectors/telegram/commands/claudeAccounts.js.map +1 -0
  230. package/dist/connectors/telegram/commands/compaction.d.ts +47 -0
  231. package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -0
  232. package/dist/connectors/telegram/commands/compaction.js +868 -0
  233. package/dist/connectors/telegram/commands/compaction.js.map +1 -0
  234. package/dist/connectors/telegram/commands/displayModes.d.ts +13 -0
  235. package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -0
  236. package/dist/connectors/telegram/commands/displayModes.js +335 -0
  237. package/dist/connectors/telegram/commands/displayModes.js.map +1 -0
  238. package/dist/connectors/telegram/commands/fallbackChain.d.ts +49 -0
  239. package/dist/connectors/telegram/commands/fallbackChain.d.ts.map +1 -0
  240. package/dist/connectors/telegram/commands/fallbackChain.js +624 -0
  241. package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -0
  242. package/dist/connectors/telegram/commands/modelProviders.d.ts +117 -0
  243. package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
  244. package/dist/connectors/telegram/commands/modelProviders.js +966 -0
  245. package/dist/connectors/telegram/commands/modelProviders.js.map +1 -0
  246. package/dist/connectors/telegram/commands/reminders.d.ts +54 -0
  247. package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -0
  248. package/dist/connectors/telegram/commands/reminders.js +624 -0
  249. package/dist/connectors/telegram/commands/reminders.js.map +1 -0
  250. package/dist/connectors/telegram/fileIntake.d.ts +166 -0
  251. package/dist/connectors/telegram/fileIntake.d.ts.map +1 -0
  252. package/dist/connectors/telegram/fileIntake.js +304 -0
  253. package/dist/connectors/telegram/fileIntake.js.map +1 -0
  254. package/dist/connectors/telegram/fileSendGateway.d.ts +57 -0
  255. package/dist/connectors/telegram/fileSendGateway.d.ts.map +1 -0
  256. package/dist/connectors/telegram/fileSendGateway.js +221 -0
  257. package/dist/connectors/telegram/fileSendGateway.js.map +1 -0
  258. package/dist/connectors/telegram/foreignKeyFallbacks.d.ts +52 -0
  259. package/dist/connectors/telegram/foreignKeyFallbacks.d.ts.map +1 -0
  260. package/dist/connectors/telegram/foreignKeyFallbacks.js +71 -0
  261. package/dist/connectors/telegram/foreignKeyFallbacks.js.map +1 -0
  262. package/dist/connectors/telegram/inbound.d.ts +131 -0
  263. package/dist/connectors/telegram/inbound.d.ts.map +1 -0
  264. package/dist/connectors/telegram/inbound.js +278 -0
  265. package/dist/connectors/telegram/inbound.js.map +1 -0
  266. package/dist/connectors/telegram/languagePicker.d.ts +32 -0
  267. package/dist/connectors/telegram/languagePicker.d.ts.map +1 -0
  268. package/dist/connectors/telegram/languagePicker.js +55 -0
  269. package/dist/connectors/telegram/languagePicker.js.map +1 -0
  270. package/dist/connectors/telegram/messageSplit.d.ts +62 -0
  271. package/dist/connectors/telegram/messageSplit.d.ts.map +1 -0
  272. package/dist/connectors/telegram/messageSplit.js +119 -0
  273. package/dist/connectors/telegram/messageSplit.js.map +1 -0
  274. package/dist/connectors/telegram/outbound.d.ts +62 -0
  275. package/dist/connectors/telegram/outbound.d.ts.map +1 -0
  276. package/dist/connectors/telegram/outbound.js +116 -0
  277. package/dist/connectors/telegram/outbound.js.map +1 -0
  278. package/dist/connectors/telegram/output/createOutputTransport.d.ts +34 -0
  279. package/dist/connectors/telegram/output/createOutputTransport.d.ts.map +1 -0
  280. package/dist/connectors/telegram/output/createOutputTransport.js +77 -0
  281. package/dist/connectors/telegram/output/createOutputTransport.js.map +1 -0
  282. package/dist/connectors/telegram/output/dmOutputTransport.d.ts +47 -0
  283. package/dist/connectors/telegram/output/dmOutputTransport.d.ts.map +1 -0
  284. package/dist/connectors/telegram/output/dmOutputTransport.js +412 -0
  285. package/dist/connectors/telegram/output/dmOutputTransport.js.map +1 -0
  286. package/dist/connectors/telegram/outputBacklogGlue.d.ts +38 -0
  287. package/dist/connectors/telegram/outputBacklogGlue.d.ts.map +1 -0
  288. package/dist/connectors/telegram/outputBacklogGlue.js +49 -0
  289. package/dist/connectors/telegram/outputBacklogGlue.js.map +1 -0
  290. package/dist/connectors/telegram/outputFlushPlan.d.ts +93 -0
  291. package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -0
  292. package/dist/connectors/telegram/outputFlushPlan.js +120 -0
  293. package/dist/connectors/telegram/outputFlushPlan.js.map +1 -0
  294. package/dist/connectors/telegram/questionKeyboards.d.ts +30 -0
  295. package/dist/connectors/telegram/questionKeyboards.d.ts.map +1 -0
  296. package/dist/connectors/telegram/questionKeyboards.js +37 -0
  297. package/dist/connectors/telegram/questionKeyboards.js.map +1 -0
  298. package/dist/connectors/telegram/renderAgentHtml.d.ts +27 -0
  299. package/dist/connectors/telegram/renderAgentHtml.d.ts.map +1 -0
  300. package/dist/connectors/telegram/renderAgentHtml.js +97 -0
  301. package/dist/connectors/telegram/renderAgentHtml.js.map +1 -0
  302. package/dist/connectors/telegram/sessionKeyCodec.d.ts +28 -0
  303. package/dist/connectors/telegram/sessionKeyCodec.d.ts.map +1 -0
  304. package/dist/connectors/telegram/sessionKeyCodec.js +107 -0
  305. package/dist/connectors/telegram/sessionKeyCodec.js.map +1 -0
  306. package/dist/connectors/telegram/telegramCallGuard.d.ts +19 -0
  307. package/dist/connectors/telegram/telegramCallGuard.d.ts.map +1 -0
  308. package/dist/connectors/telegram/telegramCallGuard.js +35 -0
  309. package/dist/connectors/telegram/telegramCallGuard.js.map +1 -0
  310. package/dist/connectors/telegram/timezonePicker.d.ts +85 -0
  311. package/dist/connectors/telegram/timezonePicker.d.ts.map +1 -0
  312. package/dist/connectors/telegram/timezonePicker.js +142 -0
  313. package/dist/connectors/telegram/timezonePicker.js.map +1 -0
  314. package/dist/connectors/telegram/updateDispatcher.d.ts +85 -0
  315. package/dist/connectors/telegram/updateDispatcher.d.ts.map +1 -0
  316. package/dist/connectors/telegram/updateDispatcher.js +159 -0
  317. package/dist/connectors/telegram/updateDispatcher.js.map +1 -0
  318. package/dist/connectors/test/connector.d.ts +52 -0
  319. package/dist/connectors/test/connector.d.ts.map +1 -0
  320. package/dist/connectors/test/connector.js +143 -0
  321. package/dist/connectors/test/connector.js.map +1 -0
  322. package/dist/connectors/test/sessionKeyCodec.d.ts +25 -0
  323. package/dist/connectors/test/sessionKeyCodec.d.ts.map +1 -0
  324. package/dist/connectors/test/sessionKeyCodec.js +50 -0
  325. package/dist/connectors/test/sessionKeyCodec.js.map +1 -0
  326. package/dist/diagLog.d.ts +6 -0
  327. package/dist/diagLog.d.ts.map +1 -0
  328. package/dist/diagLog.js +58 -0
  329. package/dist/diagLog.js.map +1 -0
  330. package/dist/effortLevels.d.ts +68 -0
  331. package/dist/effortLevels.d.ts.map +1 -0
  332. package/dist/effortLevels.js +114 -0
  333. package/dist/effortLevels.js.map +1 -0
  334. package/dist/folderName.d.ts +42 -0
  335. package/dist/folderName.d.ts.map +1 -0
  336. package/dist/folderName.js +51 -0
  337. package/dist/folderName.js.map +1 -0
  338. package/dist/i18n/de.d.ts +2 -0
  339. package/dist/i18n/de.d.ts.map +1 -0
  340. package/dist/i18n/de.js +665 -0
  341. package/dist/i18n/de.js.map +1 -0
  342. package/dist/i18n/en.d.ts +7 -0
  343. package/dist/i18n/en.d.ts.map +1 -0
  344. package/dist/i18n/en.js +694 -0
  345. package/dist/i18n/en.js.map +1 -0
  346. package/dist/i18n/es.d.ts +2 -0
  347. package/dist/i18n/es.d.ts.map +1 -0
  348. package/dist/i18n/es.js +665 -0
  349. package/dist/i18n/es.js.map +1 -0
  350. package/dist/i18n/fr.d.ts +2 -0
  351. package/dist/i18n/fr.d.ts.map +1 -0
  352. package/dist/i18n/fr.js +665 -0
  353. package/dist/i18n/fr.js.map +1 -0
  354. package/dist/i18n/hi.d.ts +2 -0
  355. package/dist/i18n/hi.d.ts.map +1 -0
  356. package/dist/i18n/hi.js +665 -0
  357. package/dist/i18n/hi.js.map +1 -0
  358. package/dist/i18n/ja.d.ts +2 -0
  359. package/dist/i18n/ja.d.ts.map +1 -0
  360. package/dist/i18n/ja.js +665 -0
  361. package/dist/i18n/ja.js.map +1 -0
  362. package/dist/i18n/ka.d.ts +2 -0
  363. package/dist/i18n/ka.d.ts.map +1 -0
  364. package/dist/i18n/ka.js +665 -0
  365. package/dist/i18n/ka.js.map +1 -0
  366. package/dist/i18n/pt.d.ts +2 -0
  367. package/dist/i18n/pt.d.ts.map +1 -0
  368. package/dist/i18n/pt.js +665 -0
  369. package/dist/i18n/pt.js.map +1 -0
  370. package/dist/i18n/ru.d.ts +6 -0
  371. package/dist/i18n/ru.d.ts.map +1 -0
  372. package/dist/i18n/ru.js +668 -0
  373. package/dist/i18n/ru.js.map +1 -0
  374. package/dist/i18n/uk.d.ts +8 -0
  375. package/dist/i18n/uk.d.ts.map +1 -0
  376. package/dist/i18n/uk.js +670 -0
  377. package/dist/i18n/uk.js.map +1 -0
  378. package/dist/i18n/uz.d.ts +2 -0
  379. package/dist/i18n/uz.d.ts.map +1 -0
  380. package/dist/i18n/uz.js +665 -0
  381. package/dist/i18n/uz.js.map +1 -0
  382. package/dist/i18n/zh.d.ts +2 -0
  383. package/dist/i18n/zh.d.ts.map +1 -0
  384. package/dist/i18n/zh.js +665 -0
  385. package/dist/i18n/zh.js.map +1 -0
  386. package/dist/i18n.d.ts +115 -0
  387. package/dist/i18n.d.ts.map +1 -0
  388. package/dist/i18n.js +233 -0
  389. package/dist/i18n.js.map +1 -0
  390. package/dist/index.d.ts +3 -0
  391. package/dist/index.d.ts.map +1 -0
  392. package/dist/index.js +10 -0
  393. package/dist/index.js.map +1 -0
  394. package/dist/installManager.d.ts +99 -0
  395. package/dist/installManager.d.ts.map +1 -0
  396. package/dist/installManager.js +943 -0
  397. package/dist/installManager.js.map +1 -0
  398. package/dist/instanceLock.d.ts +161 -0
  399. package/dist/instanceLock.d.ts.map +1 -0
  400. package/dist/instanceLock.js +388 -0
  401. package/dist/instanceLock.js.map +1 -0
  402. package/dist/mcpConfig.d.ts +76 -0
  403. package/dist/mcpConfig.d.ts.map +1 -0
  404. package/dist/mcpConfig.js +270 -0
  405. package/dist/mcpConfig.js.map +1 -0
  406. package/dist/openCodeOpenQuestion.d.ts +44 -0
  407. package/dist/openCodeOpenQuestion.d.ts.map +1 -0
  408. package/dist/openCodeOpenQuestion.js +64 -0
  409. package/dist/openCodeOpenQuestion.js.map +1 -0
  410. package/dist/openCodeQuestionFlow.d.ts +105 -0
  411. package/dist/openCodeQuestionFlow.d.ts.map +1 -0
  412. package/dist/openCodeQuestionFlow.js +143 -0
  413. package/dist/openCodeQuestionFlow.js.map +1 -0
  414. package/dist/openCodeSessionRouting.d.ts +133 -0
  415. package/dist/openCodeSessionRouting.d.ts.map +1 -0
  416. package/dist/openCodeSessionRouting.js +253 -0
  417. package/dist/openCodeSessionRouting.js.map +1 -0
  418. package/dist/openCodeSessionTitle.d.ts +50 -0
  419. package/dist/openCodeSessionTitle.d.ts.map +1 -0
  420. package/dist/openCodeSessionTitle.js +84 -0
  421. package/dist/openCodeSessionTitle.js.map +1 -0
  422. package/dist/outputTrace.d.ts +108 -0
  423. package/dist/outputTrace.d.ts.map +1 -0
  424. package/dist/outputTrace.js +430 -0
  425. package/dist/outputTrace.js.map +1 -0
  426. package/dist/pendingQuestionRepost.d.ts +47 -0
  427. package/dist/pendingQuestionRepost.d.ts.map +1 -0
  428. package/dist/pendingQuestionRepost.js +29 -0
  429. package/dist/pendingQuestionRepost.js.map +1 -0
  430. package/dist/pinnedStatus.d.ts +52 -0
  431. package/dist/pinnedStatus.d.ts.map +1 -0
  432. package/dist/pinnedStatus.js +36 -0
  433. package/dist/pinnedStatus.js.map +1 -0
  434. package/dist/platform/answerSink.d.ts +93 -0
  435. package/dist/platform/answerSink.d.ts.map +1 -0
  436. package/dist/platform/answerSink.js +31 -0
  437. package/dist/platform/answerSink.js.map +1 -0
  438. package/dist/platform/capabilityFallback.d.ts +39 -0
  439. package/dist/platform/capabilityFallback.d.ts.map +1 -0
  440. package/dist/platform/capabilityFallback.js +55 -0
  441. package/dist/platform/capabilityFallback.js.map +1 -0
  442. package/dist/platform/commandRouter.d.ts +51 -0
  443. package/dist/platform/commandRouter.d.ts.map +1 -0
  444. package/dist/platform/commandRouter.js +53 -0
  445. package/dist/platform/commandRouter.js.map +1 -0
  446. package/dist/platform/connectorSet.d.ts +39 -0
  447. package/dist/platform/connectorSet.d.ts.map +1 -0
  448. package/dist/platform/connectorSet.js +55 -0
  449. package/dist/platform/connectorSet.js.map +1 -0
  450. package/dist/platform/inbound.d.ts +147 -0
  451. package/dist/platform/inbound.d.ts.map +1 -0
  452. package/dist/platform/inbound.js +18 -0
  453. package/dist/platform/inbound.js.map +1 -0
  454. package/dist/platform/outbound.d.ts +225 -0
  455. package/dist/platform/outbound.d.ts.map +1 -0
  456. package/dist/platform/outbound.js +30 -0
  457. package/dist/platform/outbound.js.map +1 -0
  458. package/dist/platform/unservedStateGuard.d.ts +27 -0
  459. package/dist/platform/unservedStateGuard.d.ts.map +1 -0
  460. package/dist/platform/unservedStateGuard.js +42 -0
  461. package/dist/platform/unservedStateGuard.js.map +1 -0
  462. package/dist/postToSession.d.ts +94 -0
  463. package/dist/postToSession.d.ts.map +1 -0
  464. package/dist/postToSession.js +56 -0
  465. package/dist/postToSession.js.map +1 -0
  466. package/dist/progressLine.d.ts +180 -0
  467. package/dist/progressLine.d.ts.map +1 -0
  468. package/dist/progressLine.js +293 -0
  469. package/dist/progressLine.js.map +1 -0
  470. package/dist/rateLimiter.d.ts +246 -0
  471. package/dist/rateLimiter.d.ts.map +1 -0
  472. package/dist/rateLimiter.js +555 -0
  473. package/dist/rateLimiter.js.map +1 -0
  474. package/dist/requests/answerRequest.d.ts +57 -0
  475. package/dist/requests/answerRequest.d.ts.map +1 -0
  476. package/dist/requests/answerRequest.js +96 -0
  477. package/dist/requests/answerRequest.js.map +1 -0
  478. package/dist/requests/answerTail.d.ts +83 -0
  479. package/dist/requests/answerTail.d.ts.map +1 -0
  480. package/dist/requests/answerTail.js +102 -0
  481. package/dist/requests/answerTail.js.map +1 -0
  482. package/dist/requests/limitWaitAnswer.d.ts +87 -0
  483. package/dist/requests/limitWaitAnswer.d.ts.map +1 -0
  484. package/dist/requests/limitWaitAnswer.js +83 -0
  485. package/dist/requests/limitWaitAnswer.js.map +1 -0
  486. package/dist/requests/requestGroup.d.ts +44 -0
  487. package/dist/requests/requestGroup.d.ts.map +1 -0
  488. package/dist/requests/requestGroup.js +63 -0
  489. package/dist/requests/requestGroup.js.map +1 -0
  490. package/dist/requests/requestHeader.d.ts +70 -0
  491. package/dist/requests/requestHeader.d.ts.map +1 -0
  492. package/dist/requests/requestHeader.js +83 -0
  493. package/dist/requests/requestHeader.js.map +1 -0
  494. package/dist/requests/requestLedger.d.ts +217 -0
  495. package/dist/requests/requestLedger.d.ts.map +1 -0
  496. package/dist/requests/requestLedger.js +468 -0
  497. package/dist/requests/requestLedger.js.map +1 -0
  498. package/dist/requests/sessionTurnProbe.d.ts +52 -0
  499. package/dist/requests/sessionTurnProbe.d.ts.map +1 -0
  500. package/dist/requests/sessionTurnProbe.js +29 -0
  501. package/dist/requests/sessionTurnProbe.js.map +1 -0
  502. package/dist/requests/types.d.ts +181 -0
  503. package/dist/requests/types.d.ts.map +1 -0
  504. package/dist/requests/types.js +9 -0
  505. package/dist/requests/types.js.map +1 -0
  506. package/dist/requests/wakeUpEngine.d.ts +160 -0
  507. package/dist/requests/wakeUpEngine.d.ts.map +1 -0
  508. package/dist/requests/wakeUpEngine.js +399 -0
  509. package/dist/requests/wakeUpEngine.js.map +1 -0
  510. package/dist/requests/wakeUpRules.d.ts +151 -0
  511. package/dist/requests/wakeUpRules.d.ts.map +1 -0
  512. package/dist/requests/wakeUpRules.js +167 -0
  513. package/dist/requests/wakeUpRules.js.map +1 -0
  514. package/dist/resumeContext.d.ts +87 -0
  515. package/dist/resumeContext.d.ts.map +1 -0
  516. package/dist/resumeContext.js +114 -0
  517. package/dist/resumeContext.js.map +1 -0
  518. package/dist/scheduler/checkRun.d.ts +95 -0
  519. package/dist/scheduler/checkRun.d.ts.map +1 -0
  520. package/dist/scheduler/checkRun.js +172 -0
  521. package/dist/scheduler/checkRun.js.map +1 -0
  522. package/dist/scheduler/delivery.d.ts +99 -0
  523. package/dist/scheduler/delivery.d.ts.map +1 -0
  524. package/dist/scheduler/delivery.js +212 -0
  525. package/dist/scheduler/delivery.js.map +1 -0
  526. package/dist/scheduler/deliveryKind.d.ts +29 -0
  527. package/dist/scheduler/deliveryKind.d.ts.map +1 -0
  528. package/dist/scheduler/deliveryKind.js +39 -0
  529. package/dist/scheduler/deliveryKind.js.map +1 -0
  530. package/dist/scheduler/directoryThreads.d.ts +19 -0
  531. package/dist/scheduler/directoryThreads.d.ts.map +1 -0
  532. package/dist/scheduler/directoryThreads.js +28 -0
  533. package/dist/scheduler/directoryThreads.js.map +1 -0
  534. package/dist/scheduler/engine.d.ts +77 -0
  535. package/dist/scheduler/engine.d.ts.map +1 -0
  536. package/dist/scheduler/engine.js +337 -0
  537. package/dist/scheduler/engine.js.map +1 -0
  538. package/dist/scheduler/injection.d.ts +102 -0
  539. package/dist/scheduler/injection.d.ts.map +1 -0
  540. package/dist/scheduler/injection.js +122 -0
  541. package/dist/scheduler/injection.js.map +1 -0
  542. package/dist/scheduler/mcpBoot.d.ts +65 -0
  543. package/dist/scheduler/mcpBoot.d.ts.map +1 -0
  544. package/dist/scheduler/mcpBoot.js +60 -0
  545. package/dist/scheduler/mcpBoot.js.map +1 -0
  546. package/dist/scheduler/mcpSurface.d.ts +363 -0
  547. package/dist/scheduler/mcpSurface.d.ts.map +1 -0
  548. package/dist/scheduler/mcpSurface.js +1297 -0
  549. package/dist/scheduler/mcpSurface.js.map +1 -0
  550. package/dist/scheduler/rebindResume.d.ts +27 -0
  551. package/dist/scheduler/rebindResume.d.ts.map +1 -0
  552. package/dist/scheduler/rebindResume.js +17 -0
  553. package/dist/scheduler/rebindResume.js.map +1 -0
  554. package/dist/scheduler/recurrence.d.ts +58 -0
  555. package/dist/scheduler/recurrence.d.ts.map +1 -0
  556. package/dist/scheduler/recurrence.js +210 -0
  557. package/dist/scheduler/recurrence.js.map +1 -0
  558. package/dist/scheduler/runLedger.d.ts +59 -0
  559. package/dist/scheduler/runLedger.d.ts.map +1 -0
  560. package/dist/scheduler/runLedger.js +54 -0
  561. package/dist/scheduler/runLedger.js.map +1 -0
  562. package/dist/scheduler/store.d.ts +97 -0
  563. package/dist/scheduler/store.d.ts.map +1 -0
  564. package/dist/scheduler/store.js +124 -0
  565. package/dist/scheduler/store.js.map +1 -0
  566. package/dist/scheduler/timezoneRecompute.d.ts +61 -0
  567. package/dist/scheduler/timezoneRecompute.d.ts.map +1 -0
  568. package/dist/scheduler/timezoneRecompute.js +46 -0
  569. package/dist/scheduler/timezoneRecompute.js.map +1 -0
  570. package/dist/scheduler/types.d.ts +139 -0
  571. package/dist/scheduler/types.d.ts.map +1 -0
  572. package/dist/scheduler/types.js +8 -0
  573. package/dist/scheduler/types.js.map +1 -0
  574. package/dist/sendErrorClassifier.d.ts +45 -0
  575. package/dist/sendErrorClassifier.d.ts.map +1 -0
  576. package/dist/sendErrorClassifier.js +65 -0
  577. package/dist/sendErrorClassifier.js.map +1 -0
  578. package/dist/sessionKey.d.ts +136 -0
  579. package/dist/sessionKey.d.ts.map +1 -0
  580. package/dist/sessionKey.js +153 -0
  581. package/dist/sessionKey.js.map +1 -0
  582. package/dist/sessionPick.d.ts +42 -0
  583. package/dist/sessionPick.d.ts.map +1 -0
  584. package/dist/sessionPick.js +39 -0
  585. package/dist/sessionPick.js.map +1 -0
  586. package/dist/shutdown.d.ts +126 -0
  587. package/dist/shutdown.d.ts.map +1 -0
  588. package/dist/shutdown.js +164 -0
  589. package/dist/shutdown.js.map +1 -0
  590. package/dist/startupPromptBuffer.d.ts +85 -0
  591. package/dist/startupPromptBuffer.d.ts.map +1 -0
  592. package/dist/startupPromptBuffer.js +123 -0
  593. package/dist/startupPromptBuffer.js.map +1 -0
  594. package/dist/state.d.ts +1416 -0
  595. package/dist/state.d.ts.map +1 -0
  596. package/dist/state.js +2128 -0
  597. package/dist/state.js.map +1 -0
  598. package/dist/threadContextPreamble.d.ts +89 -0
  599. package/dist/threadContextPreamble.d.ts.map +1 -0
  600. package/dist/threadContextPreamble.js +102 -0
  601. package/dist/threadContextPreamble.js.map +1 -0
  602. package/dist/threadRouting.d.ts +164 -0
  603. package/dist/threadRouting.d.ts.map +1 -0
  604. package/dist/threadRouting.js +182 -0
  605. package/dist/threadRouting.js.map +1 -0
  606. package/dist/types.d.ts +1022 -0
  607. package/dist/types.d.ts.map +1 -0
  608. package/dist/types.js +3 -0
  609. package/dist/types.js.map +1 -0
  610. package/dist/utils/abortableFifo.d.ts +10 -0
  611. package/dist/utils/abortableFifo.d.ts.map +1 -0
  612. package/dist/utils/abortableFifo.js +55 -0
  613. package/dist/utils/abortableFifo.js.map +1 -0
  614. package/dist/utils/adoptedToolList.d.ts +27 -0
  615. package/dist/utils/adoptedToolList.d.ts.map +1 -0
  616. package/dist/utils/adoptedToolList.js +22 -0
  617. package/dist/utils/adoptedToolList.js.map +1 -0
  618. package/dist/utils/agentEnvironment.d.ts +42 -0
  619. package/dist/utils/agentEnvironment.d.ts.map +1 -0
  620. package/dist/utils/agentEnvironment.js +122 -0
  621. package/dist/utils/agentEnvironment.js.map +1 -0
  622. package/dist/utils/ansiClean.d.ts +11 -0
  623. package/dist/utils/ansiClean.d.ts.map +1 -0
  624. package/dist/utils/ansiClean.js +139 -0
  625. package/dist/utils/ansiClean.js.map +1 -0
  626. package/dist/utils/autoContinueOnLimit.d.ts +56 -0
  627. package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
  628. package/dist/utils/autoContinueOnLimit.js +79 -0
  629. package/dist/utils/autoContinueOnLimit.js.map +1 -0
  630. package/dist/utils/canonicalPathContainment.d.ts +7 -0
  631. package/dist/utils/canonicalPathContainment.d.ts.map +1 -0
  632. package/dist/utils/canonicalPathContainment.js +48 -0
  633. package/dist/utils/canonicalPathContainment.js.map +1 -0
  634. package/dist/utils/claudeAccountPickerPlan.d.ts +85 -0
  635. package/dist/utils/claudeAccountPickerPlan.d.ts.map +1 -0
  636. package/dist/utils/claudeAccountPickerPlan.js +123 -0
  637. package/dist/utils/claudeAccountPickerPlan.js.map +1 -0
  638. package/dist/utils/claudeAuthLogin.d.ts +71 -0
  639. package/dist/utils/claudeAuthLogin.d.ts.map +1 -0
  640. package/dist/utils/claudeAuthLogin.js +93 -0
  641. package/dist/utils/claudeAuthLogin.js.map +1 -0
  642. package/dist/utils/claudeChunkClassifier.d.ts +97 -0
  643. package/dist/utils/claudeChunkClassifier.d.ts.map +1 -0
  644. package/dist/utils/claudeChunkClassifier.js +254 -0
  645. package/dist/utils/claudeChunkClassifier.js.map +1 -0
  646. package/dist/utils/claudeCodeVersion.d.ts +31 -0
  647. package/dist/utils/claudeCodeVersion.d.ts.map +1 -0
  648. package/dist/utils/claudeCodeVersion.js +62 -0
  649. package/dist/utils/claudeCodeVersion.js.map +1 -0
  650. package/dist/utils/claudeCompactHook.d.ts +64 -0
  651. package/dist/utils/claudeCompactHook.d.ts.map +1 -0
  652. package/dist/utils/claudeCompactHook.js +98 -0
  653. package/dist/utils/claudeCompactHook.js.map +1 -0
  654. package/dist/utils/claudeLimitSwitch.d.ts +40 -0
  655. package/dist/utils/claudeLimitSwitch.d.ts.map +1 -0
  656. package/dist/utils/claudeLimitSwitch.js +54 -0
  657. package/dist/utils/claudeLimitSwitch.js.map +1 -0
  658. package/dist/utils/claudeLivenessAction.d.ts +208 -0
  659. package/dist/utils/claudeLivenessAction.d.ts.map +1 -0
  660. package/dist/utils/claudeLivenessAction.js +135 -0
  661. package/dist/utils/claudeLivenessAction.js.map +1 -0
  662. package/dist/utils/claudeMcpHeal.d.ts +92 -0
  663. package/dist/utils/claudeMcpHeal.d.ts.map +1 -0
  664. package/dist/utils/claudeMcpHeal.js +91 -0
  665. package/dist/utils/claudeMcpHeal.js.map +1 -0
  666. package/dist/utils/claudeProfileUsageLines.d.ts +15 -0
  667. package/dist/utils/claudeProfileUsageLines.d.ts.map +1 -0
  668. package/dist/utils/claudeProfileUsageLines.js +42 -0
  669. package/dist/utils/claudeProfileUsageLines.js.map +1 -0
  670. package/dist/utils/claudeProfiles.d.ts +117 -0
  671. package/dist/utils/claudeProfiles.d.ts.map +1 -0
  672. package/dist/utils/claudeProfiles.js +285 -0
  673. package/dist/utils/claudeProfiles.js.map +1 -0
  674. package/dist/utils/claudeRelayRouting.d.ts +86 -0
  675. package/dist/utils/claudeRelayRouting.d.ts.map +1 -0
  676. package/dist/utils/claudeRelayRouting.js +159 -0
  677. package/dist/utils/claudeRelayRouting.js.map +1 -0
  678. package/dist/utils/claudeRuntimeInfo.d.ts +26 -0
  679. package/dist/utils/claudeRuntimeInfo.d.ts.map +1 -0
  680. package/dist/utils/claudeRuntimeInfo.js +151 -0
  681. package/dist/utils/claudeRuntimeInfo.js.map +1 -0
  682. package/dist/utils/claudeScrapeShapes.d.ts +256 -0
  683. package/dist/utils/claudeScrapeShapes.d.ts.map +1 -0
  684. package/dist/utils/claudeScrapeShapes.js +290 -0
  685. package/dist/utils/claudeScrapeShapes.js.map +1 -0
  686. package/dist/utils/claudeSessionTitle.d.ts +27 -0
  687. package/dist/utils/claudeSessionTitle.d.ts.map +1 -0
  688. package/dist/utils/claudeSessionTitle.js +90 -0
  689. package/dist/utils/claudeSessionTitle.js.map +1 -0
  690. package/dist/utils/claudeStreamJson.d.ts +214 -0
  691. package/dist/utils/claudeStreamJson.d.ts.map +1 -0
  692. package/dist/utils/claudeStreamJson.js +364 -0
  693. package/dist/utils/claudeStreamJson.js.map +1 -0
  694. package/dist/utils/claudeSubagentTail.d.ts +93 -0
  695. package/dist/utils/claudeSubagentTail.d.ts.map +1 -0
  696. package/dist/utils/claudeSubagentTail.js +136 -0
  697. package/dist/utils/claudeSubagentTail.js.map +1 -0
  698. package/dist/utils/claudeUsage.d.ts +209 -0
  699. package/dist/utils/claudeUsage.d.ts.map +1 -0
  700. package/dist/utils/claudeUsage.js +413 -0
  701. package/dist/utils/claudeUsage.js.map +1 -0
  702. package/dist/utils/claudeUsageRefresher.d.ts +44 -0
  703. package/dist/utils/claudeUsageRefresher.d.ts.map +1 -0
  704. package/dist/utils/claudeUsageRefresher.js +95 -0
  705. package/dist/utils/claudeUsageRefresher.js.map +1 -0
  706. package/dist/utils/clearThreadOutputQueues.d.ts +43 -0
  707. package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -0
  708. package/dist/utils/clearThreadOutputQueues.js +39 -0
  709. package/dist/utils/clearThreadOutputQueues.js.map +1 -0
  710. package/dist/utils/compactCommandRoute.d.ts +45 -0
  711. package/dist/utils/compactCommandRoute.d.ts.map +1 -0
  712. package/dist/utils/compactCommandRoute.js +36 -0
  713. package/dist/utils/compactCommandRoute.js.map +1 -0
  714. package/dist/utils/compactOnIdle.d.ts +329 -0
  715. package/dist/utils/compactOnIdle.d.ts.map +1 -0
  716. package/dist/utils/compactOnIdle.js +379 -0
  717. package/dist/utils/compactOnIdle.js.map +1 -0
  718. package/dist/utils/consoleFileTap.d.ts +51 -0
  719. package/dist/utils/consoleFileTap.d.ts.map +1 -0
  720. package/dist/utils/consoleFileTap.js +86 -0
  721. package/dist/utils/consoleFileTap.js.map +1 -0
  722. package/dist/utils/displayVerbosity.d.ts +44 -0
  723. package/dist/utils/displayVerbosity.d.ts.map +1 -0
  724. package/dist/utils/displayVerbosity.js +75 -0
  725. package/dist/utils/displayVerbosity.js.map +1 -0
  726. package/dist/utils/download.d.ts +72 -0
  727. package/dist/utils/download.d.ts.map +1 -0
  728. package/dist/utils/download.js +216 -0
  729. package/dist/utils/download.js.map +1 -0
  730. package/dist/utils/draftFinalize.d.ts +110 -0
  731. package/dist/utils/draftFinalize.d.ts.map +1 -0
  732. package/dist/utils/draftFinalize.js +100 -0
  733. package/dist/utils/draftFinalize.js.map +1 -0
  734. package/dist/utils/draftId.d.ts +36 -0
  735. package/dist/utils/draftId.d.ts.map +1 -0
  736. package/dist/utils/draftId.js +46 -0
  737. package/dist/utils/draftId.js.map +1 -0
  738. package/dist/utils/draftPacer.d.ts +72 -0
  739. package/dist/utils/draftPacer.d.ts.map +1 -0
  740. package/dist/utils/draftPacer.js +53 -0
  741. package/dist/utils/draftPacer.js.map +1 -0
  742. package/dist/utils/effortStartupKeystroke.d.ts +20 -0
  743. package/dist/utils/effortStartupKeystroke.d.ts.map +1 -0
  744. package/dist/utils/effortStartupKeystroke.js +28 -0
  745. package/dist/utils/effortStartupKeystroke.js.map +1 -0
  746. package/dist/utils/ensureSessionPlan.d.ts +70 -0
  747. package/dist/utils/ensureSessionPlan.d.ts.map +1 -0
  748. package/dist/utils/ensureSessionPlan.js +54 -0
  749. package/dist/utils/ensureSessionPlan.js.map +1 -0
  750. package/dist/utils/fallbackBridge.d.ts +32 -0
  751. package/dist/utils/fallbackBridge.d.ts.map +1 -0
  752. package/dist/utils/fallbackBridge.js +62 -0
  753. package/dist/utils/fallbackBridge.js.map +1 -0
  754. package/dist/utils/fallbackChain.d.ts +299 -0
  755. package/dist/utils/fallbackChain.d.ts.map +1 -0
  756. package/dist/utils/fallbackChain.js +542 -0
  757. package/dist/utils/fallbackChain.js.map +1 -0
  758. package/dist/utils/fileSendPlan.d.ts +217 -0
  759. package/dist/utils/fileSendPlan.d.ts.map +1 -0
  760. package/dist/utils/fileSendPlan.js +291 -0
  761. package/dist/utils/fileSendPlan.js.map +1 -0
  762. package/dist/utils/fileSendService.d.ts +94 -0
  763. package/dist/utils/fileSendService.d.ts.map +1 -0
  764. package/dist/utils/fileSendService.js +387 -0
  765. package/dist/utils/fileSendService.js.map +1 -0
  766. package/dist/utils/groupFinalizePlan.d.ts +38 -0
  767. package/dist/utils/groupFinalizePlan.d.ts.map +1 -0
  768. package/dist/utils/groupFinalizePlan.js +35 -0
  769. package/dist/utils/groupFinalizePlan.js.map +1 -0
  770. package/dist/utils/identicalOutputGuard.d.ts +83 -0
  771. package/dist/utils/identicalOutputGuard.d.ts.map +1 -0
  772. package/dist/utils/identicalOutputGuard.js +99 -0
  773. package/dist/utils/identicalOutputGuard.js.map +1 -0
  774. package/dist/utils/isoTimestamp.d.ts +16 -0
  775. package/dist/utils/isoTimestamp.d.ts.map +1 -0
  776. package/dist/utils/isoTimestamp.js +34 -0
  777. package/dist/utils/isoTimestamp.js.map +1 -0
  778. package/dist/utils/jsonStreamBusyWatchdog.d.ts +130 -0
  779. package/dist/utils/jsonStreamBusyWatchdog.d.ts.map +1 -0
  780. package/dist/utils/jsonStreamBusyWatchdog.js +122 -0
  781. package/dist/utils/jsonStreamBusyWatchdog.js.map +1 -0
  782. package/dist/utils/jsonStreamHost.d.ts +238 -0
  783. package/dist/utils/jsonStreamHost.d.ts.map +1 -0
  784. package/dist/utils/jsonStreamHost.js +438 -0
  785. package/dist/utils/jsonStreamHost.js.map +1 -0
  786. package/dist/utils/keyedTransitionQueue.d.ts +18 -0
  787. package/dist/utils/keyedTransitionQueue.d.ts.map +1 -0
  788. package/dist/utils/keyedTransitionQueue.js +34 -0
  789. package/dist/utils/keyedTransitionQueue.js.map +1 -0
  790. package/dist/utils/limitEpisodeRecovery.d.ts +92 -0
  791. package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -0
  792. package/dist/utils/limitEpisodeRecovery.js +133 -0
  793. package/dist/utils/limitEpisodeRecovery.js.map +1 -0
  794. package/dist/utils/limitHeldPromptQueue.d.ts +48 -0
  795. package/dist/utils/limitHeldPromptQueue.d.ts.map +1 -0
  796. package/dist/utils/limitHeldPromptQueue.js +59 -0
  797. package/dist/utils/limitHeldPromptQueue.js.map +1 -0
  798. package/dist/utils/limitHeldPrompts.d.ts +58 -0
  799. package/dist/utils/limitHeldPrompts.d.ts.map +1 -0
  800. package/dist/utils/limitHeldPrompts.js +65 -0
  801. package/dist/utils/limitHeldPrompts.js.map +1 -0
  802. package/dist/utils/linkPreviewSuppression.d.ts +18 -0
  803. package/dist/utils/linkPreviewSuppression.d.ts.map +1 -0
  804. package/dist/utils/linkPreviewSuppression.js +37 -0
  805. package/dist/utils/linkPreviewSuppression.js.map +1 -0
  806. package/dist/utils/localClock.d.ts +15 -0
  807. package/dist/utils/localClock.d.ts.map +1 -0
  808. package/dist/utils/localClock.js +29 -0
  809. package/dist/utils/localClock.js.map +1 -0
  810. package/dist/utils/markdownTableRender.d.ts +83 -0
  811. package/dist/utils/markdownTableRender.d.ts.map +1 -0
  812. package/dist/utils/markdownTableRender.js +298 -0
  813. package/dist/utils/markdownTableRender.js.map +1 -0
  814. package/dist/utils/mediaGroupCollector.d.ts +51 -0
  815. package/dist/utils/mediaGroupCollector.d.ts.map +1 -0
  816. package/dist/utils/mediaGroupCollector.js +90 -0
  817. package/dist/utils/mediaGroupCollector.js.map +1 -0
  818. package/dist/utils/messageSendService.d.ts +136 -0
  819. package/dist/utils/messageSendService.d.ts.map +1 -0
  820. package/dist/utils/messageSendService.js +165 -0
  821. package/dist/utils/messageSendService.js.map +1 -0
  822. package/dist/utils/minutesOverride.d.ts +7 -0
  823. package/dist/utils/minutesOverride.d.ts.map +1 -0
  824. package/dist/utils/minutesOverride.js +16 -0
  825. package/dist/utils/minutesOverride.js.map +1 -0
  826. package/dist/utils/modelPickerPlan.d.ts +119 -0
  827. package/dist/utils/modelPickerPlan.d.ts.map +1 -0
  828. package/dist/utils/modelPickerPlan.js +171 -0
  829. package/dist/utils/modelPickerPlan.js.map +1 -0
  830. package/dist/utils/modelRecentPlan.d.ts +56 -0
  831. package/dist/utils/modelRecentPlan.d.ts.map +1 -0
  832. package/dist/utils/modelRecentPlan.js +107 -0
  833. package/dist/utils/modelRecentPlan.js.map +1 -0
  834. package/dist/utils/modelSetReplyDecision.d.ts +67 -0
  835. package/dist/utils/modelSetReplyDecision.d.ts.map +1 -0
  836. package/dist/utils/modelSetReplyDecision.js +27 -0
  837. package/dist/utils/modelSetReplyDecision.js.map +1 -0
  838. package/dist/utils/openCodeAuthLogin.d.ts +181 -0
  839. package/dist/utils/openCodeAuthLogin.d.ts.map +1 -0
  840. package/dist/utils/openCodeAuthLogin.js +393 -0
  841. package/dist/utils/openCodeAuthLogin.js.map +1 -0
  842. package/dist/utils/openCodeCompactPlugin.d.ts +81 -0
  843. package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -0
  844. package/dist/utils/openCodeCompactPlugin.js +146 -0
  845. package/dist/utils/openCodeCompactPlugin.js.map +1 -0
  846. package/dist/utils/openCodeTurnActivity.d.ts +67 -0
  847. package/dist/utils/openCodeTurnActivity.d.ts.map +1 -0
  848. package/dist/utils/openCodeTurnActivity.js +27 -0
  849. package/dist/utils/openCodeTurnActivity.js.map +1 -0
  850. package/dist/utils/outputDebounce.d.ts +24 -0
  851. package/dist/utils/outputDebounce.d.ts.map +1 -0
  852. package/dist/utils/outputDebounce.js +30 -0
  853. package/dist/utils/outputDebounce.js.map +1 -0
  854. package/dist/utils/outputFlushTiming.d.ts +54 -0
  855. package/dist/utils/outputFlushTiming.d.ts.map +1 -0
  856. package/dist/utils/outputFlushTiming.js +48 -0
  857. package/dist/utils/outputFlushTiming.js.map +1 -0
  858. package/dist/utils/paginateList.d.ts +25 -0
  859. package/dist/utils/paginateList.d.ts.map +1 -0
  860. package/dist/utils/paginateList.js +32 -0
  861. package/dist/utils/paginateList.js.map +1 -0
  862. package/dist/utils/paneDiff.d.ts +55 -0
  863. package/dist/utils/paneDiff.d.ts.map +1 -0
  864. package/dist/utils/paneDiff.js +88 -0
  865. package/dist/utils/paneDiff.js.map +1 -0
  866. package/dist/utils/paneResizeGuard.d.ts +69 -0
  867. package/dist/utils/paneResizeGuard.d.ts.map +1 -0
  868. package/dist/utils/paneResizeGuard.js +91 -0
  869. package/dist/utils/paneResizeGuard.js.map +1 -0
  870. package/dist/utils/persistAdapterSessionIds.d.ts +39 -0
  871. package/dist/utils/persistAdapterSessionIds.d.ts.map +1 -0
  872. package/dist/utils/persistAdapterSessionIds.js +28 -0
  873. package/dist/utils/persistAdapterSessionIds.js.map +1 -0
  874. package/dist/utils/pinnedBannerSkipDecision.d.ts +44 -0
  875. package/dist/utils/pinnedBannerSkipDecision.d.ts.map +1 -0
  876. package/dist/utils/pinnedBannerSkipDecision.js +20 -0
  877. package/dist/utils/pinnedBannerSkipDecision.js.map +1 -0
  878. package/dist/utils/pollBackoff.d.ts +45 -0
  879. package/dist/utils/pollBackoff.d.ts.map +1 -0
  880. package/dist/utils/pollBackoff.js +44 -0
  881. package/dist/utils/pollBackoff.js.map +1 -0
  882. package/dist/utils/promptDelivery.d.ts +46 -0
  883. package/dist/utils/promptDelivery.d.ts.map +1 -0
  884. package/dist/utils/promptDelivery.js +49 -0
  885. package/dist/utils/promptDelivery.js.map +1 -0
  886. package/dist/utils/providerDisconnectPlan.d.ts +82 -0
  887. package/dist/utils/providerDisconnectPlan.d.ts.map +1 -0
  888. package/dist/utils/providerDisconnectPlan.js +110 -0
  889. package/dist/utils/providerDisconnectPlan.js.map +1 -0
  890. package/dist/utils/rateLimitLog.d.ts +48 -0
  891. package/dist/utils/rateLimitLog.d.ts.map +1 -0
  892. package/dist/utils/rateLimitLog.js +43 -0
  893. package/dist/utils/rateLimitLog.js.map +1 -0
  894. package/dist/utils/recentRelayWindow.d.ts +165 -0
  895. package/dist/utils/recentRelayWindow.d.ts.map +1 -0
  896. package/dist/utils/recentRelayWindow.js +284 -0
  897. package/dist/utils/recentRelayWindow.js.map +1 -0
  898. package/dist/utils/recvPreviewRedaction.d.ts +23 -0
  899. package/dist/utils/recvPreviewRedaction.d.ts.map +1 -0
  900. package/dist/utils/recvPreviewRedaction.js +39 -0
  901. package/dist/utils/recvPreviewRedaction.js.map +1 -0
  902. package/dist/utils/reminderFlow.d.ts +148 -0
  903. package/dist/utils/reminderFlow.d.ts.map +1 -0
  904. package/dist/utils/reminderFlow.js +122 -0
  905. package/dist/utils/reminderFlow.js.map +1 -0
  906. package/dist/utils/reminderScheduleText.d.ts +87 -0
  907. package/dist/utils/reminderScheduleText.d.ts.map +1 -0
  908. package/dist/utils/reminderScheduleText.js +135 -0
  909. package/dist/utils/reminderScheduleText.js.map +1 -0
  910. package/dist/utils/reminderWizard.d.ts +710 -0
  911. package/dist/utils/reminderWizard.d.ts.map +1 -0
  912. package/dist/utils/reminderWizard.js +1164 -0
  913. package/dist/utils/reminderWizard.js.map +1 -0
  914. package/dist/utils/replyQuote.d.ts +111 -0
  915. package/dist/utils/replyQuote.d.ts.map +1 -0
  916. package/dist/utils/replyQuote.js +122 -0
  917. package/dist/utils/replyQuote.js.map +1 -0
  918. package/dist/utils/resolveBinary.d.ts +25 -0
  919. package/dist/utils/resolveBinary.d.ts.map +1 -0
  920. package/dist/utils/resolveBinary.js +99 -0
  921. package/dist/utils/resolveBinary.js.map +1 -0
  922. package/dist/utils/retryAfterHeader.d.ts +7 -0
  923. package/dist/utils/retryAfterHeader.d.ts.map +1 -0
  924. package/dist/utils/retryAfterHeader.js +17 -0
  925. package/dist/utils/retryAfterHeader.js.map +1 -0
  926. package/dist/utils/rotatingJsonlFile.d.ts +40 -0
  927. package/dist/utils/rotatingJsonlFile.d.ts.map +1 -0
  928. package/dist/utils/rotatingJsonlFile.js +106 -0
  929. package/dist/utils/rotatingJsonlFile.js.map +1 -0
  930. package/dist/utils/rotatingLogFile.d.ts +25 -0
  931. package/dist/utils/rotatingLogFile.d.ts.map +1 -0
  932. package/dist/utils/rotatingLogFile.js +74 -0
  933. package/dist/utils/rotatingLogFile.js.map +1 -0
  934. package/dist/utils/sendRateTracker.d.ts +59 -0
  935. package/dist/utils/sendRateTracker.d.ts.map +1 -0
  936. package/dist/utils/sendRateTracker.js +144 -0
  937. package/dist/utils/sendRateTracker.js.map +1 -0
  938. package/dist/utils/serialQueue.d.ts +5 -0
  939. package/dist/utils/serialQueue.d.ts.map +1 -0
  940. package/dist/utils/serialQueue.js +14 -0
  941. package/dist/utils/serialQueue.js.map +1 -0
  942. package/dist/utils/sseStreamLifecycle.d.ts +32 -0
  943. package/dist/utils/sseStreamLifecycle.d.ts.map +1 -0
  944. package/dist/utils/sseStreamLifecycle.js +41 -0
  945. package/dist/utils/sseStreamLifecycle.js.map +1 -0
  946. package/dist/utils/startupReadiness.d.ts +119 -0
  947. package/dist/utils/startupReadiness.d.ts.map +1 -0
  948. package/dist/utils/startupReadiness.js +148 -0
  949. package/dist/utils/startupReadiness.js.map +1 -0
  950. package/dist/utils/statusFlushDecision.d.ts +18 -0
  951. package/dist/utils/statusFlushDecision.d.ts.map +1 -0
  952. package/dist/utils/statusFlushDecision.js +53 -0
  953. package/dist/utils/statusFlushDecision.js.map +1 -0
  954. package/dist/utils/subagentRender.d.ts +52 -0
  955. package/dist/utils/subagentRender.d.ts.map +1 -0
  956. package/dist/utils/subagentRender.js +66 -0
  957. package/dist/utils/subagentRender.js.map +1 -0
  958. package/dist/utils/subagentStatusRender.d.ts +90 -0
  959. package/dist/utils/subagentStatusRender.d.ts.map +1 -0
  960. package/dist/utils/subagentStatusRender.js +124 -0
  961. package/dist/utils/subagentStatusRender.js.map +1 -0
  962. package/dist/utils/telegramError.d.ts +2 -0
  963. package/dist/utils/telegramError.d.ts.map +1 -0
  964. package/dist/utils/telegramError.js +16 -0
  965. package/dist/utils/telegramError.js.map +1 -0
  966. package/dist/utils/terminalEmitPlan.d.ts +74 -0
  967. package/dist/utils/terminalEmitPlan.d.ts.map +1 -0
  968. package/dist/utils/terminalEmitPlan.js +86 -0
  969. package/dist/utils/terminalEmitPlan.js.map +1 -0
  970. package/dist/utils/thinkingRender.d.ts +74 -0
  971. package/dist/utils/thinkingRender.d.ts.map +1 -0
  972. package/dist/utils/thinkingRender.js +85 -0
  973. package/dist/utils/thinkingRender.js.map +1 -0
  974. package/dist/utils/threadStatusReport.d.ts +79 -0
  975. package/dist/utils/threadStatusReport.d.ts.map +1 -0
  976. package/dist/utils/threadStatusReport.js +88 -0
  977. package/dist/utils/threadStatusReport.js.map +1 -0
  978. package/dist/utils/threadToggle.d.ts +29 -0
  979. package/dist/utils/threadToggle.d.ts.map +1 -0
  980. package/dist/utils/threadToggle.js +39 -0
  981. package/dist/utils/threadToggle.js.map +1 -0
  982. package/dist/utils/timezone.d.ts +125 -0
  983. package/dist/utils/timezone.d.ts.map +1 -0
  984. package/dist/utils/timezone.js +278 -0
  985. package/dist/utils/timezone.js.map +1 -0
  986. package/dist/utils/tmuxExec.d.ts +61 -0
  987. package/dist/utils/tmuxExec.d.ts.map +1 -0
  988. package/dist/utils/tmuxExec.js +109 -0
  989. package/dist/utils/tmuxExec.js.map +1 -0
  990. package/dist/utils/tmuxSessionName.d.ts +34 -0
  991. package/dist/utils/tmuxSessionName.d.ts.map +1 -0
  992. package/dist/utils/tmuxSessionName.js +51 -0
  993. package/dist/utils/tmuxSessionName.js.map +1 -0
  994. package/dist/utils/toolResultRender.d.ts +61 -0
  995. package/dist/utils/toolResultRender.d.ts.map +1 -0
  996. package/dist/utils/toolResultRender.js +62 -0
  997. package/dist/utils/toolResultRender.js.map +1 -0
  998. package/dist/utils/topicRequest.d.ts +61 -0
  999. package/dist/utils/topicRequest.d.ts.map +1 -0
  1000. package/dist/utils/topicRequest.js +68 -0
  1001. package/dist/utils/topicRequest.js.map +1 -0
  1002. package/dist/utils/topicView.d.ts +55 -0
  1003. package/dist/utils/topicView.d.ts.map +1 -0
  1004. package/dist/utils/topicView.js +56 -0
  1005. package/dist/utils/topicView.js.map +1 -0
  1006. package/dist/utils/transcribeAudio.d.ts +89 -0
  1007. package/dist/utils/transcribeAudio.d.ts.map +1 -0
  1008. package/dist/utils/transcribeAudio.js +249 -0
  1009. package/dist/utils/transcribeAudio.js.map +1 -0
  1010. package/dist/utils/transientFrames.d.ts +52 -0
  1011. package/dist/utils/transientFrames.d.ts.map +1 -0
  1012. package/dist/utils/transientFrames.js +41 -0
  1013. package/dist/utils/transientFrames.js.map +1 -0
  1014. package/dist/utils/typingActive.d.ts +35 -0
  1015. package/dist/utils/typingActive.d.ts.map +1 -0
  1016. package/dist/utils/typingActive.js +22 -0
  1017. package/dist/utils/typingActive.js.map +1 -0
  1018. package/dist/utils/typingLoopBackstop.d.ts +64 -0
  1019. package/dist/utils/typingLoopBackstop.d.ts.map +1 -0
  1020. package/dist/utils/typingLoopBackstop.js +68 -0
  1021. package/dist/utils/typingLoopBackstop.js.map +1 -0
  1022. package/dist/utils/verbosityRender.d.ts +18 -0
  1023. package/dist/utils/verbosityRender.d.ts.map +1 -0
  1024. package/dist/utils/verbosityRender.js +17 -0
  1025. package/dist/utils/verbosityRender.js.map +1 -0
  1026. package/dist/utils/wedgeRecovery.d.ts +57 -0
  1027. package/dist/utils/wedgeRecovery.d.ts.map +1 -0
  1028. package/dist/utils/wedgeRecovery.js +24 -0
  1029. package/dist/utils/wedgeRecovery.js.map +1 -0
  1030. package/dist/utils.d.ts +30 -0
  1031. package/dist/utils.d.ts.map +1 -0
  1032. package/dist/utils.js +61 -0
  1033. package/dist/utils.js.map +1 -0
  1034. package/dist/validation.d.ts +113 -0
  1035. package/dist/validation.d.ts.map +1 -0
  1036. package/dist/validation.js +226 -0
  1037. package/dist/validation.js.map +1 -0
  1038. package/dist/voiceQueue.d.ts +7 -0
  1039. package/dist/voiceQueue.d.ts.map +1 -0
  1040. package/dist/voiceQueue.js +33 -0
  1041. package/dist/voiceQueue.js.map +1 -0
  1042. package/examples/.env.example +17 -0
  1043. package/examples/docker-compose.yml +36 -0
  1044. package/package.json +83 -4
@@ -0,0 +1,665 @@
1
+ "use strict";
2
+ // Machine-translated from en. Native review welcome.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ptDict = void 0;
5
+ exports.ptDict = {
6
+ 'access.denied': 'Acesso negado.',
7
+ 'access.group_only': 'Só funciono no supergrupo fórum configurado.',
8
+ 'thread.no_binding': '📁 Este tópico não está vinculado a uma pasta. Usa /bind <subdir> ou escolhe da lista.',
9
+ 'thread.bind_required': '📁 Vincula primeiro uma pasta: /bind <subdir>. O agente só funciona na pasta vinculada.',
10
+ 'thread.bound': '📁 Vinculado a `{subdir}`.\nInicia /claude ou /opencode.',
11
+ 'thread.unbound': '📁 Vínculo removido.',
12
+ 'thread.general_no_agent': 'General não está vinculado a uma pasta — muda para um tópico temático para falar com um agente.',
13
+ 'thread.welcome_bound': '👋 Tópico criado e vinculado automaticamente a `{subdir}` (nome do tópico correspondeu a uma subpasta).\nInicia /claude ou /opencode.',
14
+ 'thread.welcome_pick': '👋 Tópico criado. Vincula uma pasta: /bind <subdir>, ou escolhe uma da lista.',
15
+ 'thread.bind_collision': '⚠️ A pasta `{subdir}` já é usada pelos tópicos: {threads}.\nVínculo adicionado; as sessões mantêm-se independentes (tmux/SSE próprios).',
16
+ 'thread.no_agent_with_binding': '📁 A pasta `{subdir}` está vinculada. Inicia /claude ou /opencode para começar o diálogo.',
17
+ 'bind.usage': 'Uso: /bind <subdir>\nExemplo: /bind overview',
18
+ 'bind.current': '📂 Vinculado atualmente: `{subdir}`',
19
+ 'bind.current_none': '📂 Ainda não vinculado',
20
+ 'bind.in_general': '/bind só funciona em tópicos temáticos, não no General.',
21
+ 'bind.invalid_chars': '❌ O nome da pasta não deve conter caracteres de controlo.',
22
+ 'bind.not_found': '❌ Pasta `{subdir}` não encontrada sob `WORK_ROOT` (`{workRoot}`).',
23
+ 'bind.outside_root': '❌ O caminho sai de `WORK_ROOT`.',
24
+ 'bind.not_directory': '❌ `{subdir}` existe mas não é uma pasta.',
25
+ 'bind.leave_button': '⬅️ Sair da pasta atual',
26
+ 'bind.create_button': '➕ Criar nova pasta',
27
+ 'bind.create_prompt': '✏️ Envia o nome da nova pasta (será criada sob `WORK_ROOT`). Qualquer comando cancela.',
28
+ 'bind.create_cb': 'A criar nova pasta…',
29
+ 'bind.create_empty': '❌ Nome vazio. Envia um nome de pasta.',
30
+ 'bind.create_separator': '❌ O nome não deve conter `/` ou `\\`. Envia um nome simples.',
31
+ 'bind.create_dot_segment': '❌ `.` e `..` não podem ser usados como nome de pasta.',
32
+ 'bind.create_hidden': '❌ O nome não deve começar com um ponto.',
33
+ 'bind.create_invalid_chars': '❌ O nome da pasta não deve conter caracteres de controlo.',
34
+ 'bind.create_exists': '📁 A pasta `{subdir}` já existe — a vincular.',
35
+ 'bind.create_failed': '❌ Falha ao criar a pasta: {error}',
36
+ 'ls.header': '📁 Subpastas de `{workRoot}`:',
37
+ 'ls.empty': '📁 Sem subpastas vinculáveis sob `WORK_ROOT`.',
38
+ 'list.header': '🧵 Vínculos de tópicos ({count}):',
39
+ 'list.empty': '🧵 Ainda sem vínculos. Cria um tópico e executa /bind.',
40
+ 'list.row': '• {threadId}: `{subdir}` · {agent} · {status}',
41
+ 'list.row_closed': '• {threadId}: `{subdir}` · {agent} · 🔒 closed',
42
+ 'new.general_hint': '/new funciona dentro de um tópico vinculado — abre um tópico e executa /new para reiniciar a sessão do agente.',
43
+ 'help.general': '*Comandos no General:*\n' +
44
+ '/ls — listar subpastas `WORK_ROOT`\n' +
45
+ '/list — listar tópicos\n' +
46
+ '/status — estado de todos os tópicos\n' +
47
+ '/quitall — parar todos os agentes em execução\n' +
48
+ '/whoami /version — depuração\n\n' +
49
+ 'Para falar com um agente — abre um tópico temático.',
50
+ 'help.thread_unbound': '*O tópico não está vinculado a uma pasta.*\n' +
51
+ '/bind <subdir> — vincular (ou escolher da lista)\n' +
52
+ '/ls — subpastas `WORK_ROOT` (no General)',
53
+ 'help.thread_bound': '*Tópico vinculado a `{subdir}`.*\n' +
54
+ '/claude /opencode — iniciar um agente\n' +
55
+ '/terminal — abrir um shell nesta pasta\n' +
56
+ '/new — reiniciar a sessão (a antiga → /sessions)\n' +
57
+ '/model /sessions — trocar\n' +
58
+ '/effort — nível de reasoning effort\n' +
59
+ '/verbosity — detalhe da saída e o que o tópico mostra (stream / respostas)\n' +
60
+ '/quit /status /output — controlo\n' +
61
+ '/compact — compactar o contexto do agente\n' +
62
+ '/compact_on_idle — compactar automaticamente após inatividade (alternar)\n' +
63
+ '/limits — o que acontece num limite de uso (modelos de reserva, mudança, espera)\n' +
64
+ '/accounts — contas Claude e providers OpenCode (escolher, adicionar, entrar de novo, remover, ligar, desligar)\n' +
65
+ '/clear — apagar mensagens do tópico\n' +
66
+ '/c /y /n /enter /up /down /tab /esc — teclas TUI (Claude)\n' +
67
+ '/bind — gerir vínculo',
68
+ 'doctor.header': '🔍 *Charness Doctor*',
69
+ 'doctor.ok': '✅ {label}',
70
+ 'doctor.warn': '⚠️ {label} — {hint}',
71
+ 'doctor.fail': '❌ {label} — {hint}',
72
+ 'doctor.bot_admin': 'O bot é admin do grupo',
73
+ 'doctor.can_manage_topics': '`can_manage_topics` concedido',
74
+ 'doctor.can_delete_messages': '`can_delete_messages` concedido',
75
+ 'doctor.can_pin_messages': '`can_pin_messages` concedido',
76
+ 'doctor.privacy_off': 'Privacy mode desativado',
77
+ 'doctor.privacy_hint': '@BotFather → /setprivacy → Disable, depois remove e volta a adicionar o bot',
78
+ 'doctor.workroot_subdirs': '`WORK_ROOT`: `{workRoot}` ({count} subpastas)',
79
+ 'doctor.datadir_path': '`DATA_DIR`: `{dataDir}`',
80
+ 'doctor.claude_installed': 'claude CLI instalado',
81
+ 'doctor.opencode_installed': 'opencode CLI instalado',
82
+ 'doctor.state_valid': 'state.json válido ({bindings} vínculos, {active} ativos)',
83
+ 'doctor.state_archived': 'o state.json anterior estava corrompido, arquivo: {path}',
84
+ 'doctor.cli_missing': 'não encontrado no PATH (auto-instala ao executar /claude ou /opencode)',
85
+ 'doctor.no_admin_info': 'não é possível ler os direitos do bot — getChatMember falhou',
86
+ 'onboarding.welcome': '👋 *Charness 2.0*\n\n' +
87
+ 'Checklist de configuração:\n' +
88
+ '1️⃣ Torna-me admin do grupo com direitos:\n' +
89
+ ' • Manage Topics, Delete Messages, Pin Messages\n' +
90
+ '2️⃣ @BotFather → /setprivacy → Disable, depois remove e volta a adicionar-me\n' +
91
+ '3️⃣ Executa /doctor para ver o que falta\n' +
92
+ '4️⃣ Em cada tópico temático executa /bind <subdir> e inicia um agente\n\n' +
93
+ '`WORK_ROOT`: `{workRoot}`',
94
+ 'binding.welcome.header': '📁 Vinculado a `{subdir}`',
95
+ 'binding.welcome.claude_md': '• CLAUDE.md: {size}',
96
+ 'binding.welcome.mcp_json': '• `.mcp.json`: {count} servidores',
97
+ 'binding.welcome.git': '• git: ramo `{branch}`{detail}',
98
+ 'binding.welcome.git_clean': ', limpo',
99
+ 'binding.welcome.git_dirty': ', alterações não confirmadas',
100
+ 'binding.welcome.git_none': '• git: não inicializado',
101
+ 'binding.welcome.start_prompt': 'Inicia uma conversa:',
102
+ 'mcp.header': '🔌 *Servidores MCP para este tópico:*',
103
+ 'mcp.row': '• `{name}` — {source}',
104
+ 'mcp.empty': '🔌 Sem servidores MCP configurados.',
105
+ 'mcp.source_user': 'user (~/.claude/settings.json)',
106
+ 'mcp.source_group': 'group (`DATA_DIR`/mcp.json)',
107
+ 'mcp.source_project': 'project (`{workDir}/.mcp.json`)',
108
+ 'mcp.source_thread': 'thread (`DATA_DIR`/threads/...)',
109
+ 'doctor.pin_hint': 'O estado fixado do tópico (Stage 7) não estará disponível',
110
+ 'whoami.report': '👤 user: `{userId}`\n💬 chat: `{chatId}`\n🧵 thread: `{threadId}`\n' +
111
+ '🔐 allowed: {allowed}\n📁 binding: {binding}',
112
+ 'whoami.binding_unbound': '(sem vínculo)',
113
+ 'pair.success': '✅ Grupo emparelhado. id: `{groupId}`. O bot agora serve este supergrupo.',
114
+ 'pair.locked': 'ℹ️ O id do grupo está definido via `ALLOWED_GROUP_ID` — o auto-emparelhamento está desativado. ' +
115
+ 'Para mudar de grupo, altera a variável e reinicia o bot.',
116
+ 'pair.only_forum': '❌ /pair só funciona num supergrupo fórum (ativa Topics).',
117
+ 'pair.not_admin': '❌ Apenas um administrador ou criador do grupo pode emparelhar o bot.',
118
+ 'pair.not_paired': 'grupo ainda não emparelhado (modo pairing)',
119
+ 'pair.dm': "ℹ️ /pair não é necessário no modo DM — o bot serve o teu chat privado.",
120
+ 'version.report': '*Charness {bot}*\n' +
121
+ 'Node: {node}\n' +
122
+ 'tmux: {tmux}\n' +
123
+ 'claude: {claude}\n' +
124
+ 'opencode: {opencode}',
125
+ 'version.unknown': '(indisponível)',
126
+ 'status.global_header': '📊 *Todos os tópicos* ({total}):',
127
+ 'status.global_row': '• `{key}` → `{subdir}` · {agent} · {status}',
128
+ 'status.global_empty': '📊 Ainda sem tópicos.',
129
+ 'status.thread_report': 'Status:\n\nAgente: {agent}\nPasta: {subdir}\nSessão: {session}',
130
+ 'status.thread_view': 'Vista: {view}',
131
+ 'status.thread_account': 'Conta: {account}',
132
+ 'status.thread_account_limited': ' · ⛔ no limite até {until}',
133
+ 'status.thread_account_pending': 'Troca pendente: {account} — aplica-se ao fim do turno do agente ou no próximo início',
134
+ 'status.thread_model': 'Modelo: {model}',
135
+ 'status.thread_effort': 'Esforço: {effort}',
136
+ 'status.thread_started': 'Iniciado: {started}',
137
+ 'status.thread_running': 'em execução',
138
+ 'status.thread_stopped': 'parado',
139
+ 'status.thread_sleeping': 'adormecida — retoma na próxima mensagem',
140
+ 'status.thread_no_agent': 'nenhum (inicie /claude ou /opencode)',
141
+ 'status.thread_no_binding': '(sem vínculo — WORK_ROOT)',
142
+ 'status.thread_workdir': 'Diretório de trabalho: {workDir}',
143
+ 'status.thread_runtime_version': 'Versão em execução: {version}',
144
+ 'status.thread_context': 'Contexto: {used} / {limit} tokens',
145
+ 'language.status': '🌐 Idioma: {display}',
146
+ 'language.set_success': '✅ Idioma definido para `{locale}` neste chat.',
147
+ 'language.auto_success': '✅ Idioma reposto para automático. Atual: {display}.',
148
+ 'language.invalid': '⚠️ A locale `{locale}` não é suportada. Disponíveis: {locales}.',
149
+ 'timezone.status': '🌍 Fuso horário: {zone} — agora {now}',
150
+ 'timezone.usage': 'Utilização: /timezone <zona IANA> · /timezone +04:00 · /timezone auto\nOu envia /timezone sem argumento para escolher de uma lista.',
151
+ 'timezone.set_success': '✅ Fuso horário: {zone} — agora {now}\nAgendamentos recalculados: {count}',
152
+ 'timezone.auto_success': '✅ Fuso horário reposto para o do host: {zone} — agora {now}\nAgendamentos recalculados: {count}',
153
+ 'timezone.invalid': '⚠️ Fuso horário `{zone}` desconhecido. Usa um nome IANA (p. ex. `Europe/Moscow`) ou um desvio fixo (p. ex. `+04:00`). Envia /timezone para escolher de uma lista.',
154
+ 'timezone.offset_unsupported': '⚠️ O desvio `{zone}` não pode ser aplicado — só funcionam desvios de horas inteiras. Usa antes o nome IANA do teu fuso (por exemplo, `Asia/Kolkata` para +05:30).',
155
+ 'timezone.fixed_offset_warning': '⚠️ Um desvio fixo não acompanha a hora de verão — fica uma hora errado metade do ano.',
156
+ 'timezone.picker_regions': '🌍 Fuso horário: {zone}\nAgora: {now}\n\nEscolhe uma região:',
157
+ 'timezone.picker_zones': '🌍 {region} — página {page}/{total}',
158
+ 'timezone.picker_expired': 'Essa lista está desatualizada — envia /timezone outra vez.',
159
+ 'agent.ready': '{label} pronto em `{subdir}`{argsSuffix}\n{infoBlock}Envia uma mensagem:',
160
+ 'agent.ready_model': '🧠 Modelo: {model}',
161
+ 'agent.no_session': 'Sem agente em execução. /claude ou /opencode para iniciar.',
162
+ 'agent.session_ended': '{label}: sessão terminada',
163
+ 'agent.stopped': '{label} parado',
164
+ 'agent.sleeping_released': 'A sessão adormecida foi liberada — a próxima mensagem inicia uma nova.',
165
+ 'agent.resume_failed_fresh': '⚠️ Não foi possível retomar a conversa anterior — uma nova sessão foi iniciada.',
166
+ 'agent.exit_signal_sent': 'Duplo Ctrl+C enviado — {label} a sair',
167
+ 'agent.already_active': '{label} já está em execução aqui. Envia uma mensagem ou /quit.',
168
+ 'agent.starting': 'A iniciar {label} em `{subdir}`…',
169
+ 'agent.queued_starting': '⏳ {label} ainda está a iniciar — a tua mensagem está na fila e será enviada quando estiver pronto.',
170
+ 'agent.question_hint': 'ℹ️ Responde com o número da opção (ex. 1) ou y/n. Também: /up /down para mover, /enter para confirmar, /c para cancelar.',
171
+ 'agent.start_failed': 'Falha ao iniciar {label}: {error}',
172
+ 'agent.no_response': '⚠️ O agente aceitou seu pedido mas não começou a responder — a sessão pode estar travada. Envie novamente ou use /new para uma sessão nova.',
173
+ 'agent.session_restarting': '⚠️ O agente não respondeu — a sessão parece travada. Reiniciando e repetindo seu pedido…',
174
+ 'agent.session_recovering': '⚠️ O agente não respondeu — recuperando (sua conversa é mantida) e repetindo seu pedido…',
175
+ 'agent.question_cancelled_for_prompt': '⚠️ Pergunta anterior cancelada — a executar o teu novo pedido.',
176
+ 'agent.question_cancelled_msg_label': '❌ Pergunta cancelada: {header}',
177
+ 'agent.login_code_relayed': '🔐 Código de login retransmitido para o Claude — a mensagem com o token foi apagada do histórico.',
178
+ 'agent.login_url': '🔐 Para entrar no Claude, abra este link, conclua o login e cole o código aqui:\n{url}',
179
+ 'agent.login_success': '✅ Login no Claude concluído.',
180
+ 'agent.login_failed': '⚠️ Falha no login do Claude. Execute /login para tentar novamente.',
181
+ 'login.esc_hint': '/esc para cancelar',
182
+ 'login.waiting_code': '⏳ Aguardando o código de login — cole o código do link de login como sua próxima mensagem.',
183
+ 'login.cancelled': '✖ Login cancelado. As mensagens voltam a ir para o agente.',
184
+ 'agent.workingIndicator': '{glyph} a trabalhar…',
185
+ 'terminal.ready': '🖥 Terminal pronto em `{subdir}`{argsSuffix}\nCada mensagem executa como um comando. /c — Ctrl+C, /up /down — histórico, /tab — autocompletar, /quit — fechar.',
186
+ 'effort.choose': '⚙️ Effort atual: {current}\nEscolhe um nível:',
187
+ 'effort.current_none': 'não definido',
188
+ 'effort.set_success': '✅ Effort: {level}',
189
+ 'effort.current_hint': '⚙️ Effort: {effort}\nUsa /effort para alterar',
190
+ 'effort.invalid_level': '⚠️ Nível `{level}` inválido. Disponíveis: {valid}.',
191
+ 'effort.not_available': 'ℹ️ Sem níveis de reasoning effort disponíveis para o modelo atual.',
192
+ 'effort.not_supported': 'ℹ️ O modelo `{model}` não tem níveis de reasoning effort.',
193
+ 'effort.start_agent_first': 'ℹ️ Nível guardado. Sem agente em execução — será aplicado no próximo início.',
194
+ 'effort.cleared_on_model_switch': 'ℹ️ Effort `{level}` removido: o novo modelo `{model}` não o suporta.',
195
+ 'effort.unsupported_backend': 'O controlo de effort não é suportado para {label}.',
196
+ 'effort.no_session': 'Sem agente em execução. Inicia um com /claude ou /opencode.',
197
+ 'thinking.live': '•••',
198
+ 'thinking.thoughtForSeconds': '💭 pensou durante {seconds}s',
199
+ 'thinking.choose': '☁️ Modo de thinking atual: {current}\nEscolhe um modo:',
200
+ 'thinking.set_success': '✅ Modo de thinking: {mode}',
201
+ 'thinking.invalid_mode': '⚠️ Modo `{mode}` inválido. Disponíveis: {valid}.',
202
+ 'thinking.mode.minimal': 'mínimo',
203
+ 'thinking.mode.short': 'curto',
204
+ 'thinking.mode.full': 'completo',
205
+ 'toolResults.choose': '🔧 Modo de resultados de ferramentas atual: {current}\nEscolhe um modo:',
206
+ 'toolResults.set_success': '✅ Modo de resultados de ferramentas: {mode}',
207
+ 'toolResults.invalid_mode': '⚠️ Modo `{mode}` inválido. Disponíveis: {valid}.',
208
+ 'toolResults.mode.minimal': 'mínimo',
209
+ 'toolResults.mode.short': 'curto',
210
+ 'toolResults.mode.full': 'completo',
211
+ 'toolResults.truncated_footer': '… (truncado, /tool_results full)',
212
+ 'toolResults.activity_status': '🔧 {tool} …',
213
+ 'toolResults.activity_fallback': 'ferramenta',
214
+ 'subagent.status_elapsed': '🤖 sub-agente: {title} · {elapsed}',
215
+ 'subagent.panel_fold_status': '🤖 sub-agente a trabalhar …',
216
+ 'subagent.delegating_status': '🤖 A delegar: {title} …',
217
+ 'subagent.chunk_prefix': '🤖 ⤷',
218
+ 'subagent.fallback_title': 'sub-agente',
219
+ 'subagent.choose': '🤖 Modo de sub-agente atual: {current}\nEscolhe um modo:',
220
+ 'subagent.set_success': '✅ Modo de sub-agente: {mode}',
221
+ 'subagent.invalid_mode': '⚠️ Modo `{mode}` inválido. Disponíveis: {valid}.',
222
+ 'subagent.mode.minimal': 'mínimo',
223
+ 'subagent.mode.short': 'curto',
224
+ 'subagent.mode.full': 'completo',
225
+ 'verbosity.choose': '🔊 Saída — detalhe: {current} · vista: {view}\nLinha 1 — detalhe do stream · Linha 2 — o que este tópico mostra:',
226
+ 'verbosity.set_success': '✅ Verbosidade de saída: {mode} (thinking, resultados de ferramentas, sub-agentes)',
227
+ 'verbosity.invalid_mode': '⚠️ `{mode}` não é válido. Níveis de detalhe: {valid}. Vistas: {views}.',
228
+ 'verbosity.custom': 'personalizado (thinking: {thinking} · ferramentas: {toolResults} · sub-agentes: {subagent})',
229
+ 'verbosity.mode.minimal': 'mínimo',
230
+ 'verbosity.mode.short': 'curto',
231
+ 'verbosity.mode.full': 'completo',
232
+ 'verbosity.view.stream': 'Só stream',
233
+ 'verbosity.view.streamAnswers': 'Stream + respostas',
234
+ 'verbosity.view.answers': 'Só respostas',
235
+ 'verbosity.view_set_success': '✅ Este tópico mostra: {view} (a partir da próxima mensagem)',
236
+ 'model.set_success': '🧠 Modelo definido: {model}',
237
+ 'model.saved_for_next_start': 'Modelo guardado: {model} — aplica-se no próximo início de agente.',
238
+ 'model.start_agent_first': 'Sem sessão ativa. Inicia um agente primeiro.',
239
+ 'model.current_default': 'padrão',
240
+ 'model.none_available': '🧠 Atual: {current}\n\nNenhum modelo disponível. Defina um manualmente com /model <provider/model>.',
241
+ 'model.invalid_number': '❌ Número inválido. Execute /model para ver a lista.',
242
+ 'model.pick_provider': '🧠 Atual: {current}\n\nEscolha um provedor:',
243
+ 'model.all_hidden': '🧠 Atual: {current}\n\nTodos os provedores estão ocultos. Toque em 👁 para trazer um de volta.',
244
+ 'model.hidden_header': '🙈 Oculto neste seletor — toque em 👁 para restaurar.',
245
+ 'model.provider_button': '📦 {provider} ({count})',
246
+ 'model.hidden_provider_button': '🙈 {provider} ({count})',
247
+ 'model.hide_button': '🙈',
248
+ 'model.show_button': '👁',
249
+ 'model.back_button': '⬅️ provedores',
250
+ 'model.recent_button': '🕘 Recentes ({count})',
251
+ 'model.recent_header': '🧠 Recentes — {count} modelos\nAtual: {current}',
252
+ 'model.prev_button': '⬅️ Ant.',
253
+ 'model.next_button': 'Próx. ➡️',
254
+ 'model.page_button': '{page}/{totalPages}',
255
+ 'model.page_header': '🧠 {provider} — {count} modelos · página {page}/{totalPages}\nAtual: {current}',
256
+ 'model.page_hint': 'Responda com um número para escolher, ou /model <nome> para buscar.',
257
+ 'model.page_hint_buttons_only': 'Toca num modelo para trocar, ou /model <nome> para buscar.',
258
+ 'disconnect.unsupported_backend': 'A desconexão de providers OpenCode não está disponível nesta build.',
259
+ 'disconnect.invalid_provider': '❌ Id de provedor inválido {provider}. Exemplo: /disconnect openrouter',
260
+ 'disconnect.no_providers': 'Nenhum provedor para desconectar.',
261
+ 'disconnect.pick_provider': 'Escolha um provedor para desconectar — as credenciais salvas serão removidas:',
262
+ 'disconnect.provider_button': '🔌 {provider}',
263
+ 'disconnect.success': '✅ Provedor {provider} desconectado — credenciais salvas removidas.',
264
+ 'disconnect.still_active_env': '⚠️ As credenciais salvas de {provider} foram removidas, mas ele continua ativo: o OpenCode o habilita por uma variável de ambiente. Remova essa variável e reinicie o OpenCode, ou oculte-o do seletor via /model.',
265
+ 'disconnect.failed': '⚠️ Falha ao desconectar {provider}: {reason}',
266
+ 'rename_session.usage': 'Uso: /rename_session <novo título>',
267
+ 'rename_session.start_agent_first': 'Sem sessão ativa. Inicia um agente primeiro (/claude ou /opencode).',
268
+ 'rename_session.unsupported_backend': 'O renomear de sessão não é suportado para {label}.',
269
+ 'rename_session.success': '✅ Sessão renomeada: {title}',
270
+ 'rename_session.failed': '⚠️ Falha ao renomear a sessão: {reason}',
271
+ 'compact.started': '🧹 A compactar o contexto da sessão — o agente continua a partir do resumo.',
272
+ 'compact.done': '✅ Contexto compactado.',
273
+ 'compact.done_tokens': '✅ Contexto compactado: {pre} → {post} tokens.',
274
+ 'compact.summaryHeader': '📄 Resumo da compactação:',
275
+ 'compact.start_agent_first': 'Sem sessão ativa. Inicia um agente primeiro (/claude ou /opencode).',
276
+ 'compact.unsupported_backend': 'A compactação de contexto não é suportada para {label}.',
277
+ 'compact.model_unresolved': '⚠️ Não é possível compactar: nenhum modelo está resolvido para esta sessão. Escolhe um com /model e tenta novamente.',
278
+ 'compact.failed': '⚠️ Falha ao compactar o contexto da sessão: {reason}',
279
+ 'compact.busy': '⚠️ O agente está ocupado agora — execute /compact de novo quando o turno atual terminar.',
280
+ 'compact.closingSectionInstruction': 'After the summary, append a final section wrapped EXACTLY between a line containing only {startMarker} and a line containing only {endMarker}. Inside that section, write IN PORTUGUESE: (1) one or two terse sentences on what we were doing and the immediate next step; (2) if you asked the user a question that is still unanswered, restate that question and list its answer options. Write nothing after {endMarker}.',
281
+ 'compactOnIdle.notice': '🧹 Compactado automaticamente por inatividade para economizar tokens via cache.\n/compact_on_idle — desativar ou mostrar o resumo.',
282
+ 'compactOnIdle.on': 'LIGADO',
283
+ 'compactOnIdle.off': 'DESLIGADO',
284
+ 'compactOnIdle.title': '🧹 Compactação automática por inatividade para este tópico: {state}\n{summaryLine}\n\nQuando a sessão fica inativa ~55 min, seu contexto é compactado automaticamente para economizar tokens (o cache de prompt ainda está quente).\n\nPara mudar para TODOS os tópicos de uma vez, execute isto no tópico General.',
285
+ 'compactOnIdle.titleGeneral': '🧹 Compactação automática por inatividade — padrão para TODOS os tópicos: {state}\n{summaryLine}\n\nQuando uma sessão fica inativa ~55 min, seu contexto é compactado automaticamente para economizar tokens.\n\nCada tópico ainda pode substituir isso com seu próprio /compact_on_idle.',
286
+ 'compactOnIdle.enableButton': 'Ativar',
287
+ 'compactOnIdle.disableButton': 'Desativar',
288
+ 'compactOnIdle.summaryLine': '📄 Resumo após a compactação: {state}',
289
+ 'compactOnIdle.summaryShowButton': '📄 Mostrar resumo',
290
+ 'compactOnIdle.summaryHideButton': 'Ocultar resumo',
291
+ 'compactOnIdle.setThisTopic': '✅ Compactação automática por inatividade: {state} para este tópico.',
292
+ 'compactOnIdle.setGlobal': '✅ Compactação automática por inatividade: {state} para TODOS os tópicos (substituições por tópico ainda se aplicam).',
293
+ 'compactOnIdle.unsupported': 'A compactação automática por inatividade aplica-se a uma sessão de agente ativa. Inicie /claude ou /opencode em um tópico vinculado primeiro.',
294
+ 'compactOnIdle.pendingQuestionReask': '❓ Você ainda tem uma pergunta pendente. Toque em uma opção para respondê-la e continuar:',
295
+ 'compactSummary.on': 'LIGADO',
296
+ 'compactSummary.off': 'DESLIGADO',
297
+ 'compactSummary.title': '📄 Publicar o resumo da compactação neste tópico: {state}\n\nApós uma compactação, o resumo completo do agente é escrito no tópico, para vires o que foi mantido.\n\nPara mudar isto em TODOS os tópicos de uma vez, executa no tópico General.',
298
+ 'compactSummary.titleGeneral': '📄 Publicar o resumo da compactação — predefinição para TODOS os tópicos: {state}\n\nApós uma compactação, o resumo completo do agente é escrito no tópico, para vires o que foi mantido.\n\nCada tópico pode sobrepor isto com o seu próprio /compact_summary.',
299
+ 'compactSummary.enableButton': 'Ativar',
300
+ 'compactSummary.disableButton': 'Desativar',
301
+ 'compactSummary.setThisTopic': '✅ Resumo da compactação: {state} para este tópico.',
302
+ 'compactSummary.setGlobal': '✅ Resumo da compactação: {state} para TODOS os tópicos (as sobreposições por tópico continuam a aplicar-se).',
303
+ 'compactSummary.unsupported': 'Uma shell não tem contexto para compactar, portanto não há resumo para publicar.',
304
+ 'autoContinueLimits.on': 'LIGADO',
305
+ 'autoContinueLimits.off': 'DESLIGADO',
306
+ 'autoContinueLimits.skipButton': '⏭ Pular uma vez',
307
+ 'autoContinueLimits.skipDone': 'Esta retomada foi pulada.',
308
+ 'autoContinueLimits.skipExpired': 'Nada para pular — esta espera já terminou.',
309
+ 'autoContinueLimits.skippedNotice': '⏭ Pulado: não vou retomar esta por conta própria. Escreve-me quando continuar — a retomada automática continua ligada para este tópico.',
310
+ 'autoContinueLimits.noticeHint': 'Executa /limits para saltar esta retoma ou desativar a espera neste tópico.',
311
+ 'autoContinueLimits.setThisTopic': '✅ Retomada automática após um limite de uso: {state} para este tópico.',
312
+ 'autoContinueLimits.setGlobal': '✅ Retomada automática após um limite de uso: {state} para TODOS os tópicos (substituições por tópico ainda se aplicam).',
313
+ 'autoContinueLimits.limitReachedDisabled': '🚧 Limite de uso atingido. A espera do reinício está desativada neste tópico, por isso fico a aguardar — escreve-me quando continuar (/limits para ativar a espera).',
314
+ 'connect.prompt_key': '🔑 Envia a API key para `{provider}` como próxima mensagem. Vou apagar a mensagem com a chave do histórico.',
315
+ 'connect.empty_key': '❌ A API key está vazia. Envia a chave como próxima mensagem.',
316
+ 'connect.invalid_key': '❌ Isto não parece uma API key (tem espaços ou caracteres não latinos). Envia apenas a key como próxima mensagem, ou executa /connect novamente.',
317
+ 'connect.invalid_provider': '❌ ID de provider inválido `{provider}`. Exemplo: /connect openai',
318
+ 'connect.unsupported_provider': '⚠️ O provider `{provider}` não suporta um login por API key simples neste fluxo. Usa a UI/CLI do OpenCode para este provider.',
319
+ 'connect.unsupported_backend': 'A auth de provider OpenCode não está disponível neste build.',
320
+ 'connect.failed': '⚠️ Falha ao ligar `{provider}`: {reason}',
321
+ 'connect.success': '✅ Provider `{provider}` ligado. O servidor OpenCode não foi reiniciado.',
322
+ 'connect.cancelled': 'Introdução de API key cancelada.',
323
+ 'connect.pick_method': 'Como queres ligar `{provider}`? Escolhe um método:',
324
+ 'connect.no_methods': '⚠️ Nenhum método de autenticação encontrado para `{provider}`.',
325
+ 'connect.oauth_device': '🔓 Para ligar `{provider}`: abre {url} e introduz o código `{code}`, depois autoriza. Num servidor, usa o método *headless*. Confirmo aqui quando terminar.',
326
+ 'connect.oauth_url_only': '🔓 Para ligar `{provider}`: abre {url} e conclui o início de sessão. Confirmo aqui quando terminar.',
327
+ 'connect.oauth_paste': '🔑 Após autorizar, cola o código aqui como próxima mensagem — vou apagá-lo do histórico.',
328
+ 'connect.oauth_waiting': '⏳ A aguardar autorização…',
329
+ 'connect.oauth_loopback': '🔑 Após autorizares, o teu navegador tentará abrir uma página `localhost` que não carrega — é o esperado aqui. Copia esse URL da barra de endereço e cola-o como próxima mensagem (ou apenas o valor `code`). Vou apagá-lo do histórico e concluir o início de sessão.',
330
+ 'connect.oauth_invalid_reply': '❌ Isto não parece um URL de callback nem um código de autorização. Após autorizares, cola o URL de callback `localhost` do teu navegador (ou o valor `code`).',
331
+ 'connect.oauth_callback_no_flow': '⚠️ Isto parece um URL de callback OAuth, mas não há nenhum início de sessão em curso aqui — apaguei-o. Executa /connect para começar de novo.',
332
+ 'connect.oauth_success': '✅ `{provider}` ligado via OAuth. As credenciais do servidor OpenCode foram atualizadas.',
333
+ 'connect.oauth_failed': '⚠️ O início de sessão OAuth para `{provider}` não foi concluído. Executa /connect novamente.',
334
+ 'quit_all.none_active': 'Sem agentes em execução — nada a parar.',
335
+ 'quit_all.summary': '🚪 Parados {stopped} de {total} agentes ativos.',
336
+ 'quit_all.general_only': '`/quit-all` só está disponível no tópico General.',
337
+ 'clearMessages.summary': '🗑 Apagadas {deleted} de {total} mensagens. ' +
338
+ 'O Telegram recusa apagar o que tem mais de 48 h — o resto fica no histórico.',
339
+ 'clearMessages.no_messages': 'Sem mensagens para apagar neste tópico.',
340
+ 'edited.hint': '✏️ Não trato mensagens editadas como nova entrada — envia a correção como uma mensagem separada.',
341
+ 'voice.no_api_key': 'A voz requer `GROQ_API_KEY` (grátis) ou `OPENAI_API_KEY`.',
342
+ 'voice.failed': 'Falha ao transcrever a mensagem de voz.',
343
+ 'voice.retrying': '⚠️ Falha ao transcrever a mensagem de voz ({error}). Nova tentativa em {seconds} s…',
344
+ 'voice.transcribed': '🎤 {text}',
345
+ 'file.too_big': '📎 O ficheiro excede o limite da Bot API ({cap} MB) — não o consigo descarregar. Envia um ficheiro mais pequeno.',
346
+ 'file.download_failed': '📎 Falha ao descarregar o ficheiro. Tenta novamente.',
347
+ 'error.workdir.gone': '📁 A pasta `{subdir}` desapareceu do disco. Executa /bind <newdir>.',
348
+ 'error.tg.thread.deleted': '⚠️ O tópico foi apagado no Telegram; vínculo removido.',
349
+ 'error.tg.thread.closed': '🔒 O tópico {key} está fechado — reabre-o no teu cliente do Telegram, ou apaga-o por completo.',
350
+ 'error.tg.perm.delete': '🔐 Não consigo apagar mensagens. Concede ao bot `can_delete_messages`.',
351
+ 'error.tg.perm.manage_topics': '🔐 Falta `can_manage_topics`. Torna-me admin do grupo.',
352
+ 'error.state.corrupted': '⚠️ O state.json estava corrompido; vínculos reiniciados. Executa /bind onde for necessário.',
353
+ 'error.start_in_general': 'Não é possível iniciar um agente no General — é um tópico de serviço. Abre um tópico temático.',
354
+ 'cb.access_denied': 'Acesso negado',
355
+ 'cb.bind_only_topical': '/bind só funciona em tópicos temáticos',
356
+ 'cb.binding_to': 'A vincular a {subdir}…',
357
+ 'cb.no_active_session': 'Sem sessão ativa',
358
+ 'cb.model_error': 'Erro: {error}',
359
+ 'cb.model_set': 'Modelo: {model}',
360
+ 'cb.model_provider_gone': 'Esse provedor não existe mais — execute /model de novo',
361
+ 'cb.model_recent_gone': 'Esse modelo não está mais entre os recentes — execute /model de novo',
362
+ 'cb.model_hidden': 'Oculto: {provider}',
363
+ 'cb.model_shown': 'Exibido: {provider}',
364
+ 'cb.disconnect_expired': 'Este menu de desconexão expirou — execute /disconnect de novo',
365
+ 'cb.not_supported': 'Não suportado para {label}',
366
+ 'cb.unknown_agent': 'Agente desconhecido',
367
+ 'cb.agent_switched': 'Trocado para {label}',
368
+ 'cb.resume_only_topical': 'Resume só funciona em tópicos temáticos',
369
+ 'cb.bind_folder_first': 'Vincula primeiro uma pasta via /bind',
370
+ 'cb.agent_not_running': 'Agente não em execução',
371
+ 'cb.no_pending_question': 'Sem pergunta pendente',
372
+ 'cb.connect_method_expired': 'Este menu de ligação expirou — executa /connect novamente',
373
+ 'cb.invalid_option': 'Opção inválida',
374
+ 'cb.sent_option': 'Enviado: {option}',
375
+ 'cb.effort_set': 'Effort: {level}',
376
+ 'cb.effort_error': 'Erro: {error}',
377
+ 'cb.claudeMode_already': 'Já ativo',
378
+ 'cb.claudeMode_switching': 'A trocar…',
379
+ 'claudeMode.pick': '⚙️ Backend do Claude Code — atual: {label}\nEscolhe um backend (a troca mantém a mesma conversa):',
380
+ 'claudeMode.not_claude': "Este tópico não está no Claude Code — /claude_mode só troca o backend do Claude.",
381
+ 'claudeMode.already': 'Já {label}.',
382
+ 'claudeMode.set_idle': '⚙️ Backend do Claude: {label} — aplica-se no próximo início.',
383
+ 'claudeMode.switched_resumed': '⚙️ Trocado para {label} — mesma conversa retomada.',
384
+ 'claudeMode.switched_fresh': '⚙️ Trocado para {label} — nova sessão iniciada.',
385
+ 'claudeMode.perTurn_refused': '⚠️ Per-turn precisa do Claude Code {min} ou mais novo — esta conversa rodou por último em {version}. O backend não foi alterado.',
386
+ 'cb.thinking_set': 'Thinking: {mode}',
387
+ 'cb.thinking_error': 'Erro: {error}',
388
+ 'cb.toolresults_set': 'Resultados de ferramentas: {mode}',
389
+ 'cb.toolresults_error': 'Erro: {error}',
390
+ 'cb.subagent_set': 'Sub-agentes: {mode}',
391
+ 'cb.subagent_error': 'Erro: {error}',
392
+ 'cb.verbosity_set': 'Verbosidade de saída: {mode}',
393
+ 'cb.verbosity_error': 'Erro: {error}',
394
+ 'cb.view_set': 'Este tópico mostra: {view}',
395
+ 'session.list_header': 'Sessões para retomar ({label}):',
396
+ 'session.list_footer': 'Envia 1–{max} para retomar · 0 para sair',
397
+ 'session.none': 'Sem sessões retomáveis nesta pasta.',
398
+ 'session.cancelled': 'Cancelado. Seletor de sessão fechado.',
399
+ 'session.invalid': 'Número inválido. Introduz um valor de 1 a {max}.',
400
+ 'session.resumed': 'Sessão retomada. Envia a tua mensagem:',
401
+ 'session.resume_failed': 'Falha ao retomar a sessão: {error}',
402
+ 'session.expired': 'A lista de sessões está desatualizada. Executa /sessions novamente.',
403
+ 'session.load_failed': 'Falha ao carregar as sessões.',
404
+ 'resume.context_header': '↩️ Retomado — últimas {count} mensagens:',
405
+ 'resume.context_user_label': '👤',
406
+ 'resume.context_assistant_label': '🤖',
407
+ 'recap.missedCountHeader': '⚠️ {count} mensagem(ns) perdida(s) enquanto o bot esteve offline. Última da sessão:',
408
+ 'recap.restartedFallbackHeader': '🔄 Bot reiniciado. Última da sessão:',
409
+ 'recap.stillWorkingLine': '⏳ O agente ainda está a trabalhar…',
410
+ 'trace.onThisThreadReply': '🔎 Rastreio ativado para este tópico.',
411
+ 'trace.offThisThreadReply': '🔎 Rastreio desativado para este tópico.',
412
+ 'trace.onAllThreadsReply': '🔎 Rastreio ativado para TODOS os tópicos.',
413
+ 'trace.offAllThreadsReply': '🔎 Rastreio desativado em todo o lado (o flag «all» e a lista de tópicos foram limpos).',
414
+ 'trace.statusReply': '🔎 Trace — este tópico: {thisThread}\nTodos os tópicos: {allThreads}\nTópicos rastreados: {count}',
415
+ 'trace.statusOnLabel': 'ligado',
416
+ 'trace.statusOffLabel': 'desligado',
417
+ 'trace.usageHint': 'Uso: /trace on | off | on all | off all | (sem argumento — estado)',
418
+ 'timestamps.onReply': '🕐 Marcas de tempo ativadas: cada prompt enviado ao agente recebe a hora de envio como primeira linha (nunca publicada no tópico).',
419
+ 'timestamps.offReply': '🕐 Marcas de tempo desativadas para este tópico.',
420
+ 'timestamps.statusOnReply': '🕐 Marcas de tempo: ligadas para este tópico.',
421
+ 'timestamps.statusOffReply': '🕐 Marcas de tempo: desligadas para este tópico.',
422
+ 'timestamps.usageHint': 'Uso: /timestamps on | off | (sem argumento — estado)',
423
+ 'schedule.fired': '⏰ Agendamento «{name}» ({schedule}){missedNote}\n\n{prompt}',
424
+ 'schedule.missedNote': ' — perdido às {time}, a recuperar',
425
+ 'schedule.checkFailed': '🚨 A verificação «{name}» falhou: {failure} ({schedule}){missedNote}\n$ {command}\n\n{output}\n\nA acordar o agente. Sem mais alertas até a verificação voltar a passar.',
426
+ 'schedule.checkRecovered': '✅ A verificação «{name}» voltou a passar.',
427
+ 'schedule.pausedUnbound': '⏸ Agendamentos em pausa: {count} — o tópico foi desvinculado da sua pasta. /bind irá restaurá-los.',
428
+ 'schedule.resumedRebind': '▶️ Agendamentos retomados: {count} (próximo recalculado a partir de agora).',
429
+ 'schedule.noAgent': '⚠️ Nada agendado — nenhum agente está ativo neste tópico, então uma execução agendada não teria nada para iniciar. Inicie /claude ou /opencode primeiro.',
430
+ 'schedule.currentTimeNote': 'Current time is {now} in timezone {zone}. Resolve every relative time phrasing ("tomorrow", "in 2 hours", "9am") against THAT clock — the schedule fires in the same timezone.',
431
+ 'schedule.forwardPromptTemplate': 'The user wants to schedule the following. Use the schedule_create / schedule_list / schedule_cancel MCP tools (cron for repeats, one-shot for a single run), translating any time phrasing into the right schedule, then confirm to the user IN PORTUGUESE what you scheduled.\n\n{timeNote}\n\nRequest: {text}',
432
+ 'schedule.interviewPromptTemplate': 'The user invoked /schedule with no details. Ask them IN PORTUGUESE what prompt they want scheduled and WHEN (one-time or repeating). Once you have both, create it with the schedule_create MCP tool and confirm IN PORTUGUESE what you scheduled.\n\n{timeNote}',
433
+ // ── /reminders (bot-local reminders: buttons only, no agent involved) ──
434
+ 'reminders.fired': '🔔 {text}\n\n📅 {schedule}{missedNote}',
435
+ 'reminders.scheduleDaily': 'todos os dias às {time}',
436
+ 'reminders.scheduleWeekdays': 'dias úteis às {time}',
437
+ 'reminders.scheduleWeekly': '{weekday} às {time}',
438
+ 'reminders.scheduleMonthly': 'dia {dayOfMonth} às {time}',
439
+ 'reminders.scheduleOnce': '{date} às {time}',
440
+ 'reminders.scheduleRaw': 'cron {text}',
441
+ 'reminders.nextRunToday': 'hoje às {time}',
442
+ 'reminders.nextRunTomorrow': 'amanhã às {time}',
443
+ 'reminders.nextRunOnDate': '{date} às {time}',
444
+ 'reminders.nextRunNone': '—',
445
+ 'reminders.hubTitle': '🔔 Lembretes',
446
+ 'reminders.hubEmptyLine': 'Ainda não há lembretes.',
447
+ 'reminders.hubActiveLine': 'Ativos: {count}',
448
+ 'reminders.hubLimitLine': 'Ativos: {count} — o limite de {limit} foi atingido. Elimina um para adicionar outro.',
449
+ 'reminders.addButton': '➕ Adicionar',
450
+ 'reminders.listButton': '📋 Lista ({count})',
451
+ 'reminders.closeButton': '✕ Fechar',
452
+ 'reminders.closedNotice': '🔔 Lembretes fechados.',
453
+ 'reminders.listTitle': '📋 Lembretes ({count})',
454
+ 'reminders.listPageLine': 'Página {page} de {total}',
455
+ 'reminders.listRow': '🔔 {name} · {schedule}',
456
+ 'reminders.listPrevButton': '‹ Anterior',
457
+ 'reminders.listNextButton': 'Seguinte ›',
458
+ 'reminders.listBackToHubButton': '‹ Voltar',
459
+ 'reminders.cardTitle': '🔔 {name}',
460
+ 'reminders.cardWhen': 'Quando: {schedule}',
461
+ 'reminders.cardText': 'Texto: «{text}»',
462
+ 'reminders.cardNext': 'Próximo: {next}',
463
+ 'reminders.cardDeleteButton': '🗑 Eliminar',
464
+ 'reminders.cardBackToListButton': '‹ Para a lista',
465
+ 'reminders.createdTitle': '✅ Lembrete criado',
466
+ 'reminders.doneListButton': '📋 Lista',
467
+ 'reminders.wizardTitle': '🔔 Novo lembrete',
468
+ 'reminders.pickRepeat': 'Repetição: {value}',
469
+ 'reminders.pickDate': 'Data: {value}',
470
+ 'reminders.pickWeekday': 'Dia da semana: {value}',
471
+ 'reminders.pickDayOfMonth': 'Dia do mês: {value}',
472
+ 'reminders.pickTime': 'Hora: {value}',
473
+ 'reminders.pickText': 'Texto: «{value}»',
474
+ 'reminders.stepRepeatQuestion': 'PASSO 1/4 · Com que frequência?',
475
+ 'reminders.stepDateQuestion': 'PASSO 2/4 · Que dia?',
476
+ 'reminders.stepDateGridQuestion': 'PASSO 2/4 · Escolhe uma data:',
477
+ 'reminders.stepWeekdayQuestion': 'PASSO 2/4 · Que dia da semana?',
478
+ 'reminders.stepDayOfMonthQuestion': 'PASSO 2/4 · Que dia do mês?',
479
+ 'reminders.stepDayOfMonthGridQuestion': 'PASSO 2/4 · Escolhe um dia do mês:',
480
+ 'reminders.stepTimeQuestion': 'PASSO 3/4 · A que horas?',
481
+ 'reminders.stepHourQuestion': 'PASSO 3/4 · Escolhe a hora:',
482
+ 'reminders.stepMinuteQuestion': 'PASSO 3/4 · {hour}:__ — escolhe os minutos:',
483
+ 'reminders.stepTextQuestion': 'PASSO 4/4 · Envia o texto do lembrete — escreve-o ou grava uma nota de voz.',
484
+ 'reminders.repeatOnceButton': 'Uma vez',
485
+ 'reminders.repeatDailyButton': 'Diariamente',
486
+ 'reminders.repeatWeekdaysButton': 'Dias úteis',
487
+ 'reminders.repeatWeeklyButton': 'Semanal',
488
+ 'reminders.repeatMonthlyButton': 'Mensal',
489
+ 'reminders.dateTodayButton': 'Hoje',
490
+ 'reminders.dateTomorrowButton': 'Amanhã',
491
+ 'reminders.dateOtherButton': '✏️ Outra data…',
492
+ 'reminders.dayOfMonthOtherButton': '✏️ Outro dia…',
493
+ 'reminders.timeOtherButton': '🕐 Outra hora',
494
+ 'reminders.backButton': '‹ Voltar',
495
+ 'reminders.cancelButton': '✕ Cancelar',
496
+ 'reminders.weekdayMondayButton': 'seg',
497
+ 'reminders.weekdayTuesdayButton': 'ter',
498
+ 'reminders.weekdayWednesdayButton': 'qua',
499
+ 'reminders.weekdayThursdayButton': 'qui',
500
+ 'reminders.weekdayFridayButton': 'sex',
501
+ 'reminders.weekdaySaturdayButton': 'sáb',
502
+ 'reminders.weekdaySundayButton': 'dom',
503
+ 'reminders.errorPastTime': '⚠️ Essa hora já passou. Escolhe uma hora mais tarde, ou volta atrás e muda o dia.',
504
+ 'reminders.errorInvalidDate': '⚠️ Essa data não existe. Escolhe outra.',
505
+ 'reminders.errorInvalidTime': '⚠️ Essa hora não existe nesse dia — mudança da hora. Escolhe outra hora.',
506
+ 'reminders.errorTextTooLong': '⚠️ Esse texto é demasiado longo (máximo {limit} caracteres) e NÃO foi guardado. Envia um mais curto.',
507
+ 'reminders.cancelledNotice': '✕ Cancelado',
508
+ 'reminders.expiredNotice': '✕ Expirado — o texto do lembrete nunca chegou.',
509
+ 'reminders.capReachedNotice': '⚠️ Este tópico já tem {limit} lembretes — elimina um antes de adicionar outro.',
510
+ 'reminders.wizardExpiredCbAnswer': 'Este assistente está desatualizado — executa /reminders outra vez.',
511
+ 'reminders.deletedCbAnswer': '🗑 Eliminado',
512
+ 'reminders.deleteGoneCbAnswer': 'Já foi eliminado.',
513
+ 'reminders.cardExpiredCbAnswer': 'Esse lembrete já não existe.',
514
+ 'apiRetry.transientNotice': '⏳ API limitada por taxa — nova tentativa automática em {minutes} min (tentativa {attempt}).',
515
+ 'apiRetry.openCodeRetryNotice': '⏳ Erro do provedor — o OpenCode tenta de novo em {minutes} min (tentativa {attempt}){detail}',
516
+ 'apiRetry.usageLimitDelayNotice': '🚧 Limite de uso atingido — nova tentativa em {minutes} min (tentativa {attempt}).',
517
+ 'apiRetry.usageLimitResetNotice': '🚧 Limite de uso atingido — retoma automática após reset (~{time}).',
518
+ 'apiRetry.resuming': '↻ A retomar…',
519
+ 'apiRetry.limitResetResuming': '✅ A janela do limite foi reiniciada — retomo o trabalho neste tópico.',
520
+ 'apiRetry.giveUp': '⚠️ Não foi possível retomar após {attempts} tentativas. Escreve-me quando continuar.',
521
+ 'apiRetry.continueNudge': 'Continua de onde paraste.',
522
+ 'apiRetry.loggedOutClaude': '⚠️ Claude está desconectado — executa /login para continuar.',
523
+ 'apiRetry.loggedOutOpenCode': '⚠️ OpenCode: credenciais inválidas — reinicia o servidor opencode.',
524
+ // ── startup readiness status (boot-time owner notice) ──
525
+ 'startup.ready': '✅ Pronto — posso processar mensagens nas conversas do bot e nos tópicos de grupo.',
526
+ 'startup.header_not_ready': '⚠️ Configuração incompleta. Para começar a trabalhar comigo, conclua estas etapas:',
527
+ 'startup.item.create_group': 'Crie um supergrupo de fórum com os Tópicos ativados e envie-me uma mensagem lá para emparelhá-lo.',
528
+ 'startup.item.grant_admin': 'Torne-me administrador com estes direitos: {missing}.',
529
+ 'startup.item.bind_topic': 'Crie um tópico e vincule-o a uma pasta com /bind.',
530
+ 'startup.item.install_agent': 'Instale uma CLI de agente — claude ou opencode.',
531
+ 'startup.item.optional_groq': '(opcional) Adicione GROQ_API_KEY ao seu .env e reinicie para ativar a entrada de voz.',
532
+ 'startup.item.optional_owner': '(opcional) Defina OWNER_USER_ID para receber este status no seu chat privado.',
533
+ 'requests.alert.notAnsweringNotice': '⚠️ A solicitação {requestId} ficou sem resposta: o agente terminou seus turnos sem responder e os lembretes desistiram. Verifique a sessão neste tópico.',
534
+ 'requests.alert.unreachableNotice': '⚠️ A solicitação {requestId} ficou sem resposta: não foi possível alcançar a sessão do agente para lembrá-lo. Verifique a sessão neste tópico.',
535
+ 'requests.limit.answerAfterResetNotice': '🚧 Limite de uso atingido — a resposta virá depois das {time}.',
536
+ 'requests.limit.answerNextAttemptNotice': '🚧 Limite de uso atingido — próxima tentativa às {time}.',
537
+ 'requests.limit.answerAutoResumeOffNotice': '🚧 Limite de uso atingido. A retomada automática está desligada, então o trabalho espera até o operador retomá-lo.',
538
+ 'account.title': '👤 Conta Claude deste tópico: {name}\n\n{list}\n\nToque num perfil para mudar este tópico para ele. No tópico General a escolha passa a ser a padrão de todos os tópicos.',
539
+ 'account.titleGeneral': '👤 Conta Claude — padrão para TODOS os tópicos: {name}\n\n{list}\n\nToque num perfil para torná-lo o padrão. Tópicos com escolha própria mantêm-na.',
540
+ 'account.row.loggedOut': 'sem sessão iniciada',
541
+ 'account.row.topics': ' · {count} tópico(s)',
542
+ 'account.kind.personal': 'pessoal {plan}',
543
+ 'account.kind.corporate': 'corporativo {plan}',
544
+ 'account.kind.unknown': 'plano {plan}',
545
+ 'account.removeButton': '🗑 Remover',
546
+ 'account.backButton': '⬅️ Voltar',
547
+ 'account.followButton': '↩ Seguir o padrão ({name})',
548
+ 'account.pickLogin': '🔑 Qual perfil deve entrar de novo?',
549
+ 'account.pickRemove': '🗑 Qual perfil remover? O login dele é apagado; tópicos que o escolheram voltam ao padrão.',
550
+ 'account.nothingToRemove': 'Não há perfis adicionados para remover.',
551
+ 'account.confirmRemove': '🗑 Remover o perfil {name} ({email})? O login dele é apagado e {count} tópico(s) que o escolheram voltam ao padrão.',
552
+ 'account.confirmRemoveButton': '🗑 Sim, remover {name}',
553
+ 'account.removed': '✅ Perfil {name} removido. {count} tópico(s) agora seguem o padrão.',
554
+ 'account.removeInstanceDefaultRefused': '{name} é o padrão de todos os tópicos. Escolha outro padrão no tópico General primeiro.',
555
+ 'account.unknown': '❌ Não há perfil chamado {name}. /accounts mostra a lista.',
556
+ 'account.notLoggedIn': '⚠️ O perfil {name} não tem sessão iniciada. Execute antes /accounts login {name}.',
557
+ 'account.askName': '➕ Nome do novo perfil — minúsculas, dígitos, - e _, até {max} caracteres (ex.: work). Envie-o como próxima mensagem ou execute /accounts add <nome>.',
558
+ 'account.invalidName': '❌ Um nome de perfil: minúsculas, dígitos, - e _, até {max} caracteres, e não "default".',
559
+ 'account.exists': 'Já existe um perfil chamado {name}.',
560
+ 'account.created': '✅ Perfil {name} criado. Iniciando o login…',
561
+ 'account.createFailed': '⚠️ Não foi possível criar o diretório do perfil {name}. Veja o log do bot.',
562
+ 'account.login_url': '🔐 Login no Claude para o perfil {name}. Abra este link num navegador com sessão iniciada NESSA conta — uma janela anónima ou outro perfil do navegador evita arrastar o seu login atual —, conclua o login e cole o código aqui:\n{url}',
563
+ 'account.login_success': '✅ Perfil {name} com sessão iniciada: {email} ({plan}).',
564
+ 'account.login_failed': '⚠️ O login do perfil {name} falhou. Tente de novo com /accounts login {name}.',
565
+ 'account.setThisTopic': '✅ Conta Claude deste tópico: {name}.{apply}',
566
+ 'account.setGlobal': '✅ Conta Claude padrão para TODOS os tópicos: {name}. Tópicos com escolha própria mantêm-na; os outros mudam agora ou no próximo início.',
567
+ 'account.followSet': '✅ Este tópico segue a conta Claude padrão ({name}).{apply}',
568
+ 'account.usage': 'Uso: /accounts — o seletor; /accounts add <nome>; /accounts use <nome>; /accounts login <nome>; /accounts remove <nome>; /accounts autoswitch on|off.',
569
+ 'account.applied.inactive': ' Aplica-se quando a sessão iniciar ou for retomada.',
570
+ 'account.applied.unchanged': '',
571
+ 'account.applied.respawned': ' A sessão em curso foi reiniciada com ela — mesma conversa.',
572
+ 'account.applied.deferred': ' O agente está a trabalhar; a troca aplica-se ao fim do turno.',
573
+ 'account.applied.restartRequired': ' O agente está a trabalhar; a troca aplica-se no próximo início ou retoma.',
574
+ 'account.askNameCancelled': '✖ Adição de conta cancelada. As mensagens voltam a ir para o agente.',
575
+ 'account.row.usage': ' ⏱ 5h {session} · semana {weekly}{fable}',
576
+ 'account.row.usageFable': ' · Fable {fable}',
577
+ 'account.row.usageStale': ' (desatualizado)',
578
+ 'account.row.limited': ' ⛔ no limite até {until}',
579
+ 'account.usageHint': 'Uso: % de cada janela consumido, depois quando reinicia (🔄 em 2h = daqui a duas horas).',
580
+ 'account.autoSwitchHint': 'O que acontece num limite de uso — mudar para um modelo de reserva ou esperar o reinício — define-se em /limits.',
581
+ 'fallback.backendClaude': 'Claude',
582
+ 'fallback.backendOpenCode': 'OpenCode',
583
+ 'fallback.topicModel': 'modelo do tópico',
584
+ 'fallback.topicModelButton': 'manter o modelo do tópico',
585
+ 'fallback.noAgent': 'sem agente',
586
+ 'fallback.addButton': '➕ Adicionar',
587
+ 'fallback.clearButton': '🗑 Limpar',
588
+ 'fallback.backButton': '⬅️ Voltar',
589
+ 'fallback.nothingDetected': 'Nada a adicionar: não foi detetada nenhuma conta Claude com sessão iniciada nem provider OpenCode. Inicia sessão primeiro com /accounts.',
590
+ 'fallback.pickAccount': '➕ Escolha uma conta ou um provedor:',
591
+ 'fallback.pickModel': '➕ {account} — escolha o modelo:',
592
+ 'fallback.full': 'A lista aceita no máximo {max} modelos.',
593
+ 'fallback.alreadyInChain': 'Já está na lista: {label}',
594
+ 'fallback.added': '✅ Adicionado: {label}',
595
+ 'fallback.proposeNothing': 'Nada a propor: nenhuma conta Claude autenticada nem provedor OpenCode detectado.',
596
+ 'fallback.proposed': '🔄 Lista de modelos de reserva preenchida com o ligado: {count} entradas. Reordene ou remova com os botões.',
597
+ 'fallback.cleared': '🗑 A lista de modelos de reserva está vazia.',
598
+ 'fallback.stale': 'A lista mudou desde que este teclado foi publicado — é redesenhado.',
599
+ 'fallback.moved': 'Movido.',
600
+ 'fallback.removed': '🗑 Removido: {label}',
601
+ 'fallback.proposeConfirmButton': '✨ Sim, substituir',
602
+ 'fallback.switchExpired': 'Este limite já passou — nada a trocar.',
603
+ 'fallback.switchButton': '🔁 Trocar para {label}',
604
+ 'fallback.switchOffer': '🪜 Um modelo de reserva tem folga — toque para passar este tópico para ele e continuar agora.',
605
+ 'fallback.switched': '🔁 Limite de uso em {from} — este tópico trocou para {to} e continua.{reset}',
606
+ 'fallback.backgroundStopped': 'As tarefas em segundo plano que ainda estavam a correr foram paradas pela troca.',
607
+ 'fallback.switchedReset': ' {from} reinicia às {time}; o tópico fica em {to} até você trocar de volta (/accounts, /model, /claude, /opencode).',
608
+ 'fallback.switchedDeferred': '🔁 Limite de uso em {from} — o agente ainda está trabalhando, então este tópico troca para {to} quando o turno terminar; a espera continua armada até lá.',
609
+ 'fallback.switchFailed': '⚠️ A troca para {to} falhou: {error}. A espera pelo reinício continua armada.',
610
+ 'limits.usageHeading': 'Uso (% consumido)',
611
+ 'limits.topicRuns': 'Corre em: {current}',
612
+ 'limits.settingsGeneral': 'Predefinições para todos os tópicos.',
613
+ 'limits.sourceGeneral': 'como em General',
614
+ 'limits.sourceTopic': 'definido para este tópico',
615
+ 'limits.sourceLine': '🔁 {switch} · ⏳ {wait}',
616
+ 'limits.switchButton': '🔁 Mudança auto: {state}',
617
+ 'limits.waitButton': '⏳ Esperar reinício: {state}',
618
+ 'limits.switchMenuTitle': '🔁 Mudança automática para um modelo de reserva',
619
+ 'limits.waitMenuTitle': '⏳ Esperar o reinício e continuar',
620
+ 'limits.settingSameButton': 'Como em General ({state})',
621
+ 'limits.rebuildButton': '🔄 Preencher com o ligado',
622
+ 'limits.rebuildConfirm': '🔄 Substituir a lista por uma nova com o que está ligado? Os modelos com 🚫 continuam excluídos.',
623
+ 'limits.entryEnabled': '✅ Incluída na mudança automática: {label}',
624
+ 'limits.entryDisabled': '🚫 Excluída da mudança automática: {label}',
625
+ 'limits.setThisTopic': '✅ {what}: {state} para este tópico.',
626
+ 'limits.setGlobal': '✅ {what}: {state} para TODOS os tópicos (as substituições por tópico continuam a valer).',
627
+ 'limits.setSame': '✅ {what}: este tópico segue o General ({state}).',
628
+ 'limits.whatSwitch': 'Mudança automática para um modelo de reserva',
629
+ 'limits.whatWait': 'Esperar o reinício e continuar',
630
+ 'limits.usage': 'Uso: /limits — o ecrã; /limits rebuild; /limits clear; /limits switch on|off|same; /limits wait on|off|same («same» = seguir o General, num tópico).',
631
+ 'accounts.openCodeSection': '🔌 Providers OpenCode (ligados):\n{list}',
632
+ 'accounts.openCodeNone': '🔌 Providers OpenCode: ainda nenhum ligado. «➕ Provider OpenCode» liga um.',
633
+ 'accounts.buttonsHint': 'Toque numa conta para passar este tópico para ela (em General: predefinição para todos). 🔑 volta a iniciar sessão numa conta ou fornecedor, 🗑 remove uma conta (a default é desligada), 🔌 desliga um fornecedor.',
634
+ 'accounts.addClaudeButton': '➕ Conta Claude',
635
+ 'accounts.addProviderButton': '➕ Provider OpenCode',
636
+ 'accounts.askProvider': '➕ Que provider OpenCode? Envia o seu id na mensagem seguinte (por exemplo openai ou openrouter).',
637
+ 'accounts.stale': 'Este ecrã está desatualizado — é redesenhado.',
638
+ 'accounts.confirmDisconnect': '🔌 Desligar {provider}? As credenciais guardadas são removidas.',
639
+ 'accounts.confirmDisconnectButton': '🔌 Sim, desligar {provider}',
640
+ 'limits.listNote': '🪜 Modelos de reserva, o primeiro em cima:',
641
+ 'limits.listNoteEmpty': '🪜 Ainda sem modelos de reserva — só se tentam as contas Claude com sessão. ➕ Adicionar ou 🔄 Preencher com o ligado.',
642
+ 'apiRetry.usageLimitResetOnRungNotice': '🚧 Limite de uso atingido — todos os modelos de reserva estão limitados. Este tópico continuará em {model} após o seu reinício (~{time}).',
643
+ 'requests.limit.answerAfterResetOnRungNotice': '🚧 Limite de uso atingido — a resposta chegará depois das {time}, com {model}.',
644
+ 'usage.resetIn': '🔄 em {time}',
645
+ 'usage.unitDay': 'd',
646
+ 'usage.unitHour': 'h',
647
+ 'usage.unitMinute': 'min',
648
+ 'accounts.disconnectButton': '🔌 Desligar {provider}',
649
+ 'accounts.defaultRemovedNote': 'A conta default (~/.claude) está desligada e oculta. Inicie sessão de novo com /accounts login default.',
650
+ 'account.confirmRemoveDefault': '🗑 Remover a conta default ({email})? A sessão guardada em ~/.claude é apagada: as sessões que correm nela deixam de funcionar e os tópicos nela precisam de outra conta. Transcrições, definições, skills e memória ficam. Fica oculta até iniciar sessão de novo.',
651
+ 'account.removedDefault': '✅ A conta default está desligada e oculta. As sessões nela falharão até escolher outra conta ou iniciar sessão de novo (/accounts login default).',
652
+ 'account.removeDefaultFailed': '⚠️ Não foi possível desligar a conta default. Veja o registo do bot.',
653
+ 'limits.rungTitle': '🪜 {n} de {total}: {label}',
654
+ 'limits.rungReady': '✅ Pronto.',
655
+ 'limits.rungLimited': '⛔ No limite até {until}.',
656
+ 'limits.rungSignedOut': '🔒 Sem sessão iniciada.',
657
+ 'limits.rungMissing': '❓ Já não é oferecido.',
658
+ 'limits.rungDisabled': '🚫 Excluída da mudança automática.',
659
+ 'limits.rungHere': '✓ Este tópico corre aqui.',
660
+ 'limits.btnUp': '⬆️ Subir',
661
+ 'limits.btnDown': '⬇️ Descer',
662
+ 'limits.btnUse': '✅ Usar',
663
+ 'limits.btnDontUse': '🚫 Não usar',
664
+ };
665
+ //# sourceMappingURL=pt.js.map