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.deDict = void 0;
5
+ exports.deDict = {
6
+ 'access.denied': 'Zugriff verweigert.',
7
+ 'access.group_only': 'Ich arbeite nur in der konfigurierten Forum-Supergroup.',
8
+ 'thread.no_binding': '📁 Dieser Thread ist nicht mit einem Ordner verknüpft. Verwende /bind <subdir> oder wähle aus der Liste.',
9
+ 'thread.bind_required': '📁 Verknüpfe zuerst einen Ordner: /bind <subdir>. Der Agent läuft nur im verknüpften Ordner.',
10
+ 'thread.bound': '📁 Verknüpft mit `{subdir}`.\nStarte /claude oder /opencode.',
11
+ 'thread.unbound': '📁 Verknüpfung aufgehoben.',
12
+ 'thread.general_no_agent': 'General ist nicht mit einem Ordner verknüpft — wechsle in einen thematischen Thread, um mit einem Agent zu sprechen.',
13
+ 'thread.welcome_bound': '👋 Thread erstellt und automatisch mit `{subdir}` verknüpft (Thread-Name passte zu einem Unterordner).\nStarte /claude oder /opencode.',
14
+ 'thread.welcome_pick': '👋 Thread erstellt. Verknüpfe einen Ordner: /bind <subdir>, oder wähle einen aus der Liste.',
15
+ 'thread.bind_collision': '⚠️ Ordner `{subdir}` wird bereits von Threads verwendet: {threads}.\nVerknüpfung hinzugefügt; Sessions bleiben unabhängig (eigene tmux/SSE).',
16
+ 'thread.no_agent_with_binding': '📁 Ordner `{subdir}` ist verknüpft. Starte /claude oder /opencode, um den Dialog zu beginnen.',
17
+ 'bind.usage': 'Verwendung: /bind <subdir>\nBeispiel: /bind overview',
18
+ 'bind.current': '📂 Aktuell verknüpft: `{subdir}`',
19
+ 'bind.current_none': '📂 Noch nicht verknüpft',
20
+ 'bind.in_general': '/bind funktioniert nur in thematischen Threads, nicht in General.',
21
+ 'bind.invalid_chars': '❌ Der Ordnername darf keine Steuerzeichen enthalten.',
22
+ 'bind.not_found': '❌ Ordner `{subdir}` nicht unter `WORK_ROOT` (`{workRoot}`) gefunden.',
23
+ 'bind.outside_root': '❌ Pfad verlässt `WORK_ROOT`.',
24
+ 'bind.not_directory': '❌ `{subdir}` existiert, ist aber kein Ordner.',
25
+ 'bind.leave_button': '⬅️ Aktuellen Ordner verlassen',
26
+ 'bind.create_button': '➕ Neuen Ordner erstellen',
27
+ 'bind.create_prompt': '✏️ Sende den Namen des neuen Ordners (wird unter `WORK_ROOT` erstellt). Jeder Befehl bricht ab.',
28
+ 'bind.create_cb': 'Erstelle neuen Ordner…',
29
+ 'bind.create_empty': '❌ Name ist leer. Sende einen Ordnernamen.',
30
+ 'bind.create_separator': '❌ Name darf kein `/` oder `\\` enthalten. Sende einen einfachen Namen.',
31
+ 'bind.create_dot_segment': '❌ `.` und `..` können nicht als Ordnername verwendet werden.',
32
+ 'bind.create_hidden': '❌ Name darf nicht mit einem Punkt beginnen.',
33
+ 'bind.create_invalid_chars': '❌ Ordnername darf keine Steuerzeichen enthalten.',
34
+ 'bind.create_exists': '📁 Ordner `{subdir}` existiert bereits — verknüpfe damit.',
35
+ 'bind.create_failed': '❌ Ordner konnte nicht erstellt werden: {error}',
36
+ 'ls.header': '📁 Unterordner von `{workRoot}`:',
37
+ 'ls.empty': '📁 Keine verknüpfbaren Unterordner unter `WORK_ROOT`.',
38
+ 'list.header': '🧵 Thread-Verknüpfungen ({count}):',
39
+ 'list.empty': '🧵 Noch keine Verknüpfungen. Erstelle einen Thread und führe /bind aus.',
40
+ 'list.row': '• {threadId}: `{subdir}` · {agent} · {status}',
41
+ 'list.row_closed': '• {threadId}: `{subdir}` · {agent} · 🔒 closed',
42
+ 'new.general_hint': '/new funktioniert innerhalb eines verknüpften Threads — öffne einen Thread und führe /new aus, um die Agent-Session neu zu starten.',
43
+ 'help.general': '*Befehle in General:*\n' +
44
+ '/ls — `WORK_ROOT`-Unterordner auflisten\n' +
45
+ '/list — Threads auflisten\n' +
46
+ '/status — Status aller Threads\n' +
47
+ '/quitall — jeden laufenden Agent beenden\n' +
48
+ '/whoami /version — Debug\n\n' +
49
+ 'Um mit einem Agent zu sprechen — öffne einen thematischen Thread.',
50
+ 'help.thread_unbound': '*Thread ist nicht mit einem Ordner verknüpft.*\n' +
51
+ '/bind <subdir> — verknüpfen (oder aus Liste wählen)\n' +
52
+ '/ls — `WORK_ROOT`-Unterordner (in General)',
53
+ 'help.thread_bound': '*Thread verknüpft mit `{subdir}`.*\n' +
54
+ '/claude /opencode — Agent starten\n' +
55
+ '/terminal — Shell in diesem Ordner öffnen\n' +
56
+ '/new — Session neu starten (alte → /sessions)\n' +
57
+ '/model /sessions — wechseln\n' +
58
+ '/effort — Reasoning-Effort-Stufe\n' +
59
+ '/verbosity — Ausgabedetail und was das Thema zeigt (Stream / Antworten)\n' +
60
+ '/quit /status /output — Steuerung\n' +
61
+ '/compact — Agent-Kontext komprimieren\n' +
62
+ '/compact_on_idle — bei Leerlauf automatisch komprimieren (Umschalter)\n' +
63
+ '/limits — was bei einem Nutzungslimit geschieht (Ersatzmodelle, Wechsel, Warten)\n' +
64
+ '/accounts — Claude-Konten und OpenCode-Provider (wählen, hinzufügen, neu anmelden, entfernen, verbinden, trennen)\n' +
65
+ '/clear — Thread-Nachrichten löschen\n' +
66
+ '/c /y /n /enter /up /down /tab /esc — TUI-Tasten (Claude)\n' +
67
+ '/bind — Verknüpfung verwalten',
68
+ 'doctor.header': '🔍 *Charness Doctor*',
69
+ 'doctor.ok': '✅ {label}',
70
+ 'doctor.warn': '⚠️ {label} — {hint}',
71
+ 'doctor.fail': '❌ {label} — {hint}',
72
+ 'doctor.bot_admin': 'Bot ist Gruppen-Admin',
73
+ 'doctor.can_manage_topics': '`can_manage_topics` gewährt',
74
+ 'doctor.can_delete_messages': '`can_delete_messages` gewährt',
75
+ 'doctor.can_pin_messages': '`can_pin_messages` gewährt',
76
+ 'doctor.privacy_off': 'Privacy-Modus deaktiviert',
77
+ 'doctor.privacy_hint': '@BotFather → /setprivacy → Disable, dann Bot entfernen und neu hinzufügen',
78
+ 'doctor.workroot_subdirs': '`WORK_ROOT`: `{workRoot}` ({count} Unterordner)',
79
+ 'doctor.datadir_path': '`DATA_DIR`: `{dataDir}`',
80
+ 'doctor.claude_installed': 'claude CLI installiert',
81
+ 'doctor.opencode_installed': 'opencode CLI installiert',
82
+ 'doctor.state_valid': 'state.json gültig ({bindings} Verknüpfungen, {active} aktiv)',
83
+ 'doctor.state_archived': 'vorherige state.json war beschädigt, Archiv: {path}',
84
+ 'doctor.cli_missing': 'nicht in PATH gefunden (Auto-Install läuft bei /claude oder /opencode)',
85
+ 'doctor.no_admin_info': 'Bot-Rechte nicht lesbar — getChatMember fehlgeschlagen',
86
+ 'onboarding.welcome': '👋 *Charness 2.0*\n\n' +
87
+ 'Checkliste für den Einsatz:\n' +
88
+ '1️⃣ Mach mich zum Gruppen-Admin mit Rechten:\n' +
89
+ ' • Manage Topics, Delete Messages, Pin Messages\n' +
90
+ '2️⃣ @BotFather → /setprivacy → Disable, dann entferne und füge mich neu hinzu\n' +
91
+ '3️⃣ Führe /doctor aus, um zu sehen, was noch fehlt\n' +
92
+ '4️⃣ In jedem thematischen Thread /bind <subdir> ausführen und Agent starten\n\n' +
93
+ '`WORK_ROOT`: `{workRoot}`',
94
+ 'binding.welcome.header': '📁 Verknüpft mit `{subdir}`',
95
+ 'binding.welcome.claude_md': '• CLAUDE.md: {size}',
96
+ 'binding.welcome.mcp_json': '• `.mcp.json`: {count} Server',
97
+ 'binding.welcome.git': '• git: Branch `{branch}`{detail}',
98
+ 'binding.welcome.git_clean': ', sauber',
99
+ 'binding.welcome.git_dirty': ', unbestätigte Änderungen',
100
+ 'binding.welcome.git_none': '• git: nicht initialisiert',
101
+ 'binding.welcome.start_prompt': 'Beginne eine Unterhaltung:',
102
+ 'mcp.header': '🔌 *MCP-Server für diesen Thread:*',
103
+ 'mcp.row': '• `{name}` — {source}',
104
+ 'mcp.empty': '🔌 Keine MCP-Server konfiguriert.',
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': 'Pinned-Thread-Status (Stage 7) wird nicht verfügbar sein',
110
+ 'whoami.report': '👤 user: `{userId}`\n💬 chat: `{chatId}`\n🧵 thread: `{threadId}`\n' +
111
+ '🔐 allowed: {allowed}\n📁 binding: {binding}',
112
+ 'whoami.binding_unbound': '(keine Verknüpfung)',
113
+ 'pair.success': '✅ Gruppe verknüpft. id: `{groupId}`. Der Bot bedient nun diese Supergroup.',
114
+ 'pair.locked': 'ℹ️ Die Gruppen-ID ist über `ALLOWED_GROUP_ID` gesetzt — Auto-Pairing ist deaktiviert. ' +
115
+ 'Um die Gruppe zu wechseln, ändere die Variable und starte den Bot neu.',
116
+ 'pair.only_forum': '❌ /pair funktioniert nur in einer Forum-Supergroup (Topics aktivieren).',
117
+ 'pair.not_admin': '❌ Nur ein Gruppen-Administrator oder Ersteller kann den Bot verknüpfen.',
118
+ 'pair.not_paired': 'Gruppe noch nicht verknüpft (Pairing-Modus)',
119
+ 'pair.dm': "ℹ️ /pair ist im DM-Modus nicht nötig — der Bot bedient deinen privaten Chat.",
120
+ 'version.report': '*Charness {bot}*\n' +
121
+ 'Node: {node}\n' +
122
+ 'tmux: {tmux}\n' +
123
+ 'claude: {claude}\n' +
124
+ 'opencode: {opencode}',
125
+ 'version.unknown': '(nicht verfügbar)',
126
+ 'status.global_header': '📊 *Alle Threads* ({total}):',
127
+ 'status.global_row': '• `{key}` → `{subdir}` · {agent} · {status}',
128
+ 'status.global_empty': '📊 Noch keine Threads.',
129
+ 'status.thread_report': 'Status:\n\nAgent: {agent}\nOrdner: {subdir}\nSitzung: {session}',
130
+ 'status.thread_view': 'Ansicht: {view}',
131
+ 'status.thread_account': 'Konto: {account}',
132
+ 'status.thread_account_limited': ' · ⛔ am Limit bis {until}',
133
+ 'status.thread_account_pending': 'Wechsel ausstehend: {account} — gilt, sobald der Zug des Agenten endet oder beim nächsten Start',
134
+ 'status.thread_model': 'Modell: {model}',
135
+ 'status.thread_effort': 'Aufwand: {effort}',
136
+ 'status.thread_started': 'Gestartet: {started}',
137
+ 'status.thread_running': 'läuft',
138
+ 'status.thread_stopped': 'gestoppt',
139
+ 'status.thread_sleeping': 'schläft — wird mit der nächsten Nachricht fortgesetzt',
140
+ 'status.thread_no_agent': 'keiner (starte /claude oder /opencode)',
141
+ 'status.thread_no_binding': '(keine Bindung — WORK_ROOT)',
142
+ 'status.thread_workdir': 'Arbeitsverzeichnis: {workDir}',
143
+ 'status.thread_runtime_version': 'Laufzeitversion: {version}',
144
+ 'status.thread_context': 'Kontext: {used} / {limit} Token',
145
+ 'language.status': '🌐 Sprache: {display}',
146
+ 'language.set_success': '✅ Sprache für diesen Chat auf `{locale}` gesetzt.',
147
+ 'language.auto_success': '✅ Sprache auf automatisch zurückgesetzt. Aktuell: {display}.',
148
+ 'language.invalid': '⚠️ Locale `{locale}` wird nicht unterstützt. Verfügbar: {locales}.',
149
+ 'timezone.status': '🌍 Zeitzone: {zone} — jetzt {now}',
150
+ 'timezone.usage': 'Verwendung: /timezone <IANA-Zone> · /timezone +04:00 · /timezone auto\nOder sende /timezone ohne Argument, um aus einer Liste zu wählen.',
151
+ 'timezone.set_success': '✅ Zeitzone: {zone} — jetzt {now}\nNeu berechnete Zeitpläne: {count}',
152
+ 'timezone.auto_success': '✅ Zeitzone auf die Host-Zone zurückgesetzt: {zone} — jetzt {now}\nNeu berechnete Zeitpläne: {count}',
153
+ 'timezone.invalid': '⚠️ Unbekannte Zeitzone `{zone}`. Nutze einen IANA-Namen (z. B. `Europe/Moscow`) oder einen festen Offset (z. B. `+04:00`). Sende /timezone, um aus einer Liste zu wählen.',
154
+ 'timezone.offset_unsupported': '⚠️ Der Offset `{zone}` lässt sich nicht anwenden — nur volle Stunden wirken. Nutze stattdessen den IANA-Namen deiner Zone (z. B. `Asia/Kolkata` für +05:30).',
155
+ 'timezone.fixed_offset_warning': '⚠️ Ein fester Offset folgt der Sommerzeit nicht — er liegt das halbe Jahr über eine Stunde daneben.',
156
+ 'timezone.picker_regions': '🌍 Zeitzone: {zone}\nJetzt: {now}\n\nWähle eine Region:',
157
+ 'timezone.picker_zones': '🌍 {region} — Seite {page}/{total}',
158
+ 'timezone.picker_expired': 'Diese Liste ist veraltet — sende /timezone erneut.',
159
+ 'agent.ready': '{label} bereit in `{subdir}`{argsSuffix}\n{infoBlock}Sende eine Nachricht:',
160
+ 'agent.ready_model': '🧠 Modell: {model}',
161
+ 'agent.no_session': 'Kein Agent läuft. /claude oder /opencode zum Starten.',
162
+ 'agent.session_ended': '{label}: Session beendet',
163
+ 'agent.stopped': '{label} gestoppt',
164
+ 'agent.sleeping_released': 'Die schlafende Sitzung wurde freigegeben — die nächste Nachricht startet eine neue.',
165
+ 'agent.resume_failed_fresh': '⚠️ Das vorherige Gespräch konnte nicht fortgesetzt werden — eine neue Sitzung wurde gestartet.',
166
+ 'agent.exit_signal_sent': 'Doppeltes Ctrl+C gesendet — {label} wird beendet',
167
+ 'agent.already_active': '{label} läuft hier bereits. Sende eine Nachricht oder /quit.',
168
+ 'agent.starting': 'Starte {label} in `{subdir}`…',
169
+ 'agent.queued_starting': '⏳ {label} startet noch — deine Nachricht ist in der Warteschlange und wird gesendet, sobald der Agent bereit ist.',
170
+ 'agent.question_hint': 'ℹ️ Antworte mit der Optionsnummer (z.B. 1) oder y/n. Auch: /up /down zum Bewegen, /enter zum Bestätigen, /c zum Abbrechen.',
171
+ 'agent.start_failed': '{label} konnte nicht gestartet werden: {error}',
172
+ 'agent.no_response': '⚠️ Der Agent hat deine Anfrage angenommen, aber nicht begonnen zu antworten – die Sitzung hängt möglicherweise. Sende sie erneut oder /new für eine neue Sitzung.',
173
+ 'agent.session_restarting': '⚠️ Der Agent hat nicht geantwortet – die Sitzung hängt. Ich starte sie neu und wiederhole deine Anfrage…',
174
+ 'agent.session_recovering': '⚠️ Der Agent hat nicht geantwortet – ich stelle wieder her (dein Verlauf bleibt erhalten) und wiederhole die Anfrage…',
175
+ 'agent.question_cancelled_for_prompt': '⚠️ Vorherige Frage abgebrochen — führe deine neue Anfrage aus.',
176
+ 'agent.question_cancelled_msg_label': '❌ Frage abgebrochen: {header}',
177
+ 'agent.login_code_relayed': '🔐 Login-Code an Claude weitergeleitet — die Token-Nachricht wurde aus dem Verlauf gelöscht.',
178
+ 'agent.login_url': '🔐 Um dich bei Claude anzumelden, öffne diesen Link, schließe die Anmeldung ab und füge den Code hier ein:\n{url}',
179
+ 'agent.login_success': '✅ Bei Claude angemeldet.',
180
+ 'agent.login_failed': '⚠️ Anmeldung bei Claude fehlgeschlagen. Führe /login aus, um es erneut zu versuchen.',
181
+ 'login.esc_hint': '/esc zum Abbrechen',
182
+ 'login.waiting_code': '⏳ Warte auf den Login-Code — füge den Code aus dem Anmeldelink als nächste Nachricht ein.',
183
+ 'login.cancelled': '✖ Anmeldung abgebrochen. Nachrichten gehen wieder an den Agenten.',
184
+ 'agent.workingIndicator': '{glyph} arbeite…',
185
+ 'terminal.ready': '🖥 Terminal bereit in `{subdir}`{argsSuffix}\nJede Nachricht wird als Befehl ausgeführt. /c — Ctrl+C, /up /down — Verlauf, /tab — Vervollständigung, /quit — schließen.',
186
+ 'effort.choose': '⚙️ Aktueller Effort: {current}\nWähle eine Stufe:',
187
+ 'effort.current_none': 'nicht gesetzt',
188
+ 'effort.set_success': '✅ Effort: {level}',
189
+ 'effort.current_hint': '⚙️ Effort: {effort}\nMit /effort änderbar',
190
+ 'effort.invalid_level': '⚠️ Stufe `{level}` ist ungültig. Verfügbar: {valid}.',
191
+ 'effort.not_available': 'ℹ️ Für das aktuelle Modell sind keine Reasoning-Effort-Stufen verfügbar.',
192
+ 'effort.not_supported': 'ℹ️ Modell `{model}` hat keine Reasoning-Effort-Stufen.',
193
+ 'effort.start_agent_first': 'ℹ️ Stufe gespeichert. Kein Agent läuft — wird beim nächsten Start angewendet.',
194
+ 'effort.cleared_on_model_switch': 'ℹ️ Effort `{level}` zurückgesetzt: das neue Modell `{model}` unterstützt ihn nicht.',
195
+ 'effort.unsupported_backend': 'Effort-Steuerung wird für {label} nicht unterstützt.',
196
+ 'effort.no_session': 'Kein Agent läuft. Starte einen mit /claude oder /opencode.',
197
+ 'thinking.live': '•••',
198
+ 'thinking.thoughtForSeconds': '💭 dachte {seconds}s nach',
199
+ 'thinking.choose': '☁️ Aktueller Thinking-Modus: {current}\nWähle einen Modus:',
200
+ 'thinking.set_success': '✅ Thinking-Modus: {mode}',
201
+ 'thinking.invalid_mode': '⚠️ Modus `{mode}` ist ungültig. Verfügbar: {valid}.',
202
+ 'thinking.mode.minimal': 'minimal',
203
+ 'thinking.mode.short': 'kurz',
204
+ 'thinking.mode.full': 'voll',
205
+ 'toolResults.choose': '🔧 Aktueller Tool-Ergebnis-Modus: {current}\nWähle einen Modus:',
206
+ 'toolResults.set_success': '✅ Tool-Ergebnis-Modus: {mode}',
207
+ 'toolResults.invalid_mode': '⚠️ Modus `{mode}` ist ungültig. Verfügbar: {valid}.',
208
+ 'toolResults.mode.minimal': 'minimal',
209
+ 'toolResults.mode.short': 'kurz',
210
+ 'toolResults.mode.full': 'voll',
211
+ 'toolResults.truncated_footer': '… (gekürzt, /tool_results full)',
212
+ 'toolResults.activity_status': '🔧 {tool} …',
213
+ 'toolResults.activity_fallback': 'Tool',
214
+ 'subagent.status_elapsed': '🤖 Sub-Agent: {title} · {elapsed}',
215
+ 'subagent.panel_fold_status': '🤖 Sub-Agent arbeitet …',
216
+ 'subagent.delegating_status': '🤖 Delegiere: {title} …',
217
+ 'subagent.chunk_prefix': '🤖 ⤷',
218
+ 'subagent.fallback_title': 'Sub-Agent',
219
+ 'subagent.choose': '🤖 Aktueller Sub-Agent-Modus: {current}\nWähle einen Modus:',
220
+ 'subagent.set_success': '✅ Sub-Agent-Modus: {mode}',
221
+ 'subagent.invalid_mode': '⚠️ Modus `{mode}` ist ungültig. Verfügbar: {valid}.',
222
+ 'subagent.mode.minimal': 'minimal',
223
+ 'subagent.mode.short': 'kurz',
224
+ 'subagent.mode.full': 'voll',
225
+ 'verbosity.choose': '🔊 Ausgabe — Detail: {current} · Ansicht: {view}\nZeile 1 — Detail des Streams · Zeile 2 — was dieses Thema zeigt:',
226
+ 'verbosity.set_success': '✅ Ausgabedetaillierung: {mode} (Thinking, Tool-Ergebnisse, Sub-Agenten)',
227
+ 'verbosity.invalid_mode': '⚠️ `{mode}` ist ungültig. Detailstufen: {valid}. Ansichten: {views}.',
228
+ 'verbosity.custom': 'benutzerdefiniert (Thinking: {thinking} · Tools: {toolResults} · Sub-Agenten: {subagent})',
229
+ 'verbosity.mode.minimal': 'minimal',
230
+ 'verbosity.mode.short': 'kurz',
231
+ 'verbosity.mode.full': 'voll',
232
+ 'verbosity.view.stream': 'Nur Stream',
233
+ 'verbosity.view.streamAnswers': 'Stream + Antworten',
234
+ 'verbosity.view.answers': 'Nur Antworten',
235
+ 'verbosity.view_set_success': '✅ Dieses Thema zeigt: {view} (gilt ab der nächsten Nachricht)',
236
+ 'model.set_success': '🧠 Modell gesetzt auf: {model}',
237
+ 'model.saved_for_next_start': 'Modell gespeichert: {model} — wird beim nächsten Agent-Start angewendet.',
238
+ 'model.start_agent_first': 'Keine aktive Session. Starte zuerst einen Agent.',
239
+ 'model.current_default': 'Standard',
240
+ 'model.none_available': '🧠 Aktuell: {current}\n\nKeine Modelle verfügbar. Setze eines manuell mit /model <provider/model>.',
241
+ 'model.invalid_number': '❌ Ungültige Nummer. Führe /model aus, um die Liste zu sehen.',
242
+ 'model.pick_provider': '🧠 Aktuell: {current}\n\nWähle einen Anbieter:',
243
+ 'model.all_hidden': '🧠 Aktuell: {current}\n\nAlle Anbieter sind ausgeblendet. Tippe 👁, um einen zurückzuholen.',
244
+ 'model.hidden_header': '🙈 Aus dieser Auswahl ausgeblendet — tippe 👁 zum Wiederherstellen.',
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': '⬅️ Anbieter',
250
+ 'model.recent_button': '🕘 Zuletzt verwendet ({count})',
251
+ 'model.recent_header': '🧠 Zuletzt verwendet — {count} Modelle\nAktuell: {current}',
252
+ 'model.prev_button': '⬅️ Zurück',
253
+ 'model.next_button': 'Weiter ➡️',
254
+ 'model.page_button': '{page}/{totalPages}',
255
+ 'model.page_header': '🧠 {provider} — {count} Modelle · Seite {page}/{totalPages}\nAktuell: {current}',
256
+ 'model.page_hint': 'Antworte mit einer Nummer zur Auswahl oder /model <Name> zum Suchen.',
257
+ 'model.page_hint_buttons_only': 'Tippe ein Modell an, um zu wechseln, oder /model <Name> zum Suchen.',
258
+ 'disconnect.unsupported_backend': 'Das Trennen von OpenCode-Providern ist in diesem Build nicht verfügbar.',
259
+ 'disconnect.invalid_provider': '❌ Ungültige Anbieter-ID {provider}. Beispiel: /disconnect openrouter',
260
+ 'disconnect.no_providers': 'Keine Anbieter zum Trennen.',
261
+ 'disconnect.pick_provider': 'Wähle einen Anbieter zum Trennen — seine gespeicherten Zugangsdaten werden entfernt:',
262
+ 'disconnect.provider_button': '🔌 {provider}',
263
+ 'disconnect.success': '✅ Anbieter {provider} getrennt — gespeicherte Zugangsdaten entfernt.',
264
+ 'disconnect.still_active_env': '⚠️ Die gespeicherten Zugangsdaten für {provider} wurden entfernt, der Anbieter ist aber weiterhin aktiv: OpenCode aktiviert ihn über eine Umgebungsvariable. Entferne diese Variable und starte OpenCode neu, oder blende den Anbieter über /model aus.',
265
+ 'disconnect.failed': '⚠️ {provider} konnte nicht getrennt werden: {reason}',
266
+ 'rename_session.usage': 'Verwendung: /rename_session <neuer Titel>',
267
+ 'rename_session.start_agent_first': 'Keine aktive Session. Starte zuerst einen Agent (/claude oder /opencode).',
268
+ 'rename_session.unsupported_backend': 'Session-Umbenennung wird für {label} nicht unterstützt.',
269
+ 'rename_session.success': '✅ Session umbenannt: {title}',
270
+ 'rename_session.failed': '⚠️ Session konnte nicht umbenannt werden: {reason}',
271
+ 'compact.started': '🧹 Der Session-Kontext wird komprimiert — der Agent macht mit der Zusammenfassung weiter.',
272
+ 'compact.done': '✅ Kontext komprimiert.',
273
+ 'compact.done_tokens': '✅ Kontext komprimiert: {pre} → {post} Tokens.',
274
+ 'compact.summaryHeader': '📄 Zusammenfassung der Komprimierung:',
275
+ 'compact.start_agent_first': 'Keine aktive Session. Starte zuerst einen Agent (/claude oder /opencode).',
276
+ 'compact.unsupported_backend': 'Kontext-Komprimierung wird für {label} nicht unterstützt.',
277
+ 'compact.model_unresolved': '⚠️ Komprimieren nicht möglich: für diese Session ist kein Modell ermittelt. Wähle eines mit /model und versuche es erneut.',
278
+ 'compact.failed': '⚠️ Session-Kontext konnte nicht komprimiert werden: {reason}',
279
+ 'compact.busy': '⚠️ Der Agent ist gerade beschäftigt — führe /compact erneut aus, sobald der aktuelle Vorgang fertig ist.',
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 GERMAN: (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': '🧹 Bei Leerlauf automatisch komprimiert, um Tokens über den Cache zu sparen.\n/compact_on_idle — abschalten oder die Zusammenfassung zeigen.',
282
+ 'compactOnIdle.on': 'AN',
283
+ 'compactOnIdle.off': 'AUS',
284
+ 'compactOnIdle.title': '🧹 Auto-Komprimierung bei Leerlauf für dieses Thema: {state}\n{summaryLine}\n\nWenn die Sitzung ~55 Min. untätig ist, wird ihr Kontext automatisch komprimiert, um Tokens zu sparen (der Prompt-Cache ist noch warm).\n\nUm es für ALLE Themen auf einmal umzuschalten, führe dies im General-Thema aus.',
285
+ 'compactOnIdle.titleGeneral': '🧹 Auto-Komprimierung bei Leerlauf — Standard für ALLE Themen: {state}\n{summaryLine}\n\nWenn eine Sitzung ~55 Min. untätig ist, wird ihr Kontext automatisch komprimiert, um Tokens zu sparen.\n\nJedes Thema kann dies mit seinem eigenen /compact_on_idle überschreiben.',
286
+ 'compactOnIdle.enableButton': 'Aktivieren',
287
+ 'compactOnIdle.disableButton': 'Deaktivieren',
288
+ 'compactOnIdle.summaryLine': '📄 Zusammenfassung nach der Komprimierung: {state}',
289
+ 'compactOnIdle.summaryShowButton': '📄 Zusammenfassung zeigen',
290
+ 'compactOnIdle.summaryHideButton': 'Zusammenfassung ausblenden',
291
+ 'compactOnIdle.setThisTopic': '✅ Auto-Komprimierung bei Leerlauf: {state} für dieses Thema.',
292
+ 'compactOnIdle.setGlobal': '✅ Auto-Komprimierung bei Leerlauf: {state} für ALLE Themen (themenspezifische Überschreibungen gelten weiterhin).',
293
+ 'compactOnIdle.unsupported': 'Auto-Komprimierung bei Leerlauf gilt für eine aktive Agent-Sitzung. Starte zuerst /claude oder /opencode in einem gebundenen Thema.',
294
+ 'compactOnIdle.pendingQuestionReask': '❓ Du hast noch eine offene Frage. Tippe auf eine Option, um sie zu beantworten und fortzufahren:',
295
+ 'compactSummary.on': 'EIN',
296
+ 'compactSummary.off': 'AUS',
297
+ 'compactSummary.title': '📄 Zusammenfassung der Komprimierung in diesem Thema posten: {state}\n\nNach einer Komprimierung wird die vollständige Zusammenfassung des Agents ins Thema geschrieben, damit du siehst, was erhalten blieb.\n\nUm das für ALLE Themen umzustellen, führe dies im Thema „General“ aus.',
298
+ 'compactSummary.titleGeneral': '📄 Zusammenfassung der Komprimierung posten — Standard für ALLE Themen: {state}\n\nNach einer Komprimierung wird die vollständige Zusammenfassung des Agents ins Thema geschrieben, damit du siehst, was erhalten blieb.\n\nJedes Thema kann das mit eigenem /compact_summary überschreiben.',
299
+ 'compactSummary.enableButton': 'Aktivieren',
300
+ 'compactSummary.disableButton': 'Deaktivieren',
301
+ 'compactSummary.setThisTopic': '✅ Zusammenfassung der Komprimierung: {state} für dieses Thema.',
302
+ 'compactSummary.setGlobal': '✅ Zusammenfassung der Komprimierung: {state} für ALLE Themen (themenspezifische Überschreibungen gelten weiter).',
303
+ 'compactSummary.unsupported': 'Eine Shell hat keinen Kontext zum Komprimieren, also gibt es keine Zusammenfassung zu posten.',
304
+ 'autoContinueLimits.on': 'AN',
305
+ 'autoContinueLimits.off': 'AUS',
306
+ 'autoContinueLimits.skipButton': '⏭ Einmal überspringen',
307
+ 'autoContinueLimits.skipDone': 'Diese Fortsetzung wurde übersprungen.',
308
+ 'autoContinueLimits.skipExpired': 'Nichts zu überspringen — dieses Warten ist bereits vorbei.',
309
+ 'autoContinueLimits.skippedNotice': '⏭ Übersprungen: Ich setze diese eine nicht selbst fort. Schreib mir, wann es weitergehen soll — das automatische Fortsetzen bleibt für dieses Thema an.',
310
+ 'autoContinueLimits.noticeHint': 'Mit /limits kannst du diese eine Fortsetzung überspringen oder das Warten für dieses Thema ausschalten.',
311
+ 'autoContinueLimits.setThisTopic': '✅ Automatisches Fortsetzen nach einem Nutzungslimit: {state} für dieses Thema.',
312
+ 'autoContinueLimits.setGlobal': '✅ Automatisches Fortsetzen nach einem Nutzungslimit: {state} für ALLE Themen (themenspezifische Überschreibungen gelten weiterhin).',
313
+ 'autoContinueLimits.limitReachedDisabled': '🚧 Nutzungslimit erreicht. Das Warten auf das Zurücksetzen ist für dieses Thema aus, ich warte also — schreib mir, wann es weitergehen soll (/limits schaltet das Warten ein).',
314
+ 'connect.prompt_key': '🔑 Sende den API-Key für `{provider}` als nächste Nachricht. Ich lösche die Key-Nachricht aus dem Verlauf.',
315
+ 'connect.empty_key': '❌ API-Key ist leer. Sende den Key als nächste Nachricht.',
316
+ 'connect.invalid_key': '❌ Das sieht nicht wie ein API key aus (er enthält Leerzeichen oder nicht-lateinische Zeichen). Sende als nächste Nachricht nur den Key oder starte /connect erneut.',
317
+ 'connect.invalid_provider': '❌ Ungültige Provider-ID `{provider}`. Beispiel: /connect openai',
318
+ 'connect.unsupported_provider': '⚠️ Provider `{provider}` unterstützt keinen einfachen API-Key-Login über diesen Ablauf. Verwende die OpenCode-UI/CLI für diesen Provider.',
319
+ 'connect.unsupported_backend': 'OpenCode-Provider-Auth ist in diesem Build nicht verfügbar.',
320
+ 'connect.failed': '⚠️ Verbinden von `{provider}` fehlgeschlagen: {reason}',
321
+ 'connect.success': '✅ Provider `{provider}` verbunden. OpenCode-Server wurde nicht neu gestartet.',
322
+ 'connect.cancelled': 'API-Key-Eingabe abgebrochen.',
323
+ 'connect.pick_method': '`{provider}` verbinden — wie? Wähle eine Methode:',
324
+ 'connect.no_methods': '⚠️ Keine Auth-Methoden für `{provider}` gefunden.',
325
+ 'connect.oauth_device': '🔓 Um `{provider}` zu verbinden: öffne {url} und gib den Code `{code}` ein, dann bestätige. Auf einem Server die *headless*-Methode nutzen. Ich melde mich hier, wenn es fertig ist.',
326
+ 'connect.oauth_url_only': '🔓 Um `{provider}` zu verbinden: öffne {url} und schließe die Anmeldung ab. Ich melde mich hier, wenn es fertig ist.',
327
+ 'connect.oauth_paste': '🔑 Füge nach der Bestätigung den Code als nächste Nachricht hier ein — ich lösche ihn aus dem Verlauf.',
328
+ 'connect.oauth_waiting': '⏳ Warte auf Autorisierung…',
329
+ 'connect.oauth_loopback': '🔑 Nach der Autorisierung versucht dein Browser, eine `localhost`-Seite zu öffnen, die nicht lädt — das ist hier normal. Kopiere diese URL aus der Adresszeile und sende sie als nächste Nachricht zurück (oder nur den `code`-Wert). Ich lösche sie aus dem Verlauf und schließe die Anmeldung ab.',
330
+ 'connect.oauth_invalid_reply': '❌ Das sieht weder nach einer Callback-URL noch nach einem Auth-Code aus. Füge nach der Autorisierung die `localhost`-Callback-URL aus deinem Browser ein (oder den `code`-Wert).',
331
+ 'connect.oauth_callback_no_flow': '⚠️ Das sieht nach einer OAuth-Callback-URL aus, aber hier läuft gerade keine Anmeldung — ich habe sie gelöscht. Starte /connect, um erneut zu beginnen.',
332
+ 'connect.oauth_success': '✅ `{provider}` per OAuth verbunden. Die Zugangsdaten des OpenCode-Servers wurden aktualisiert.',
333
+ 'connect.oauth_failed': '⚠️ OAuth-Anmeldung für `{provider}` nicht abgeschlossen. Führe /connect erneut aus.',
334
+ 'quit_all.none_active': 'Keine Agenten laufen — nichts zu stoppen.',
335
+ 'quit_all.summary': '🚪 {stopped} von {total} aktiven Agenten beendet.',
336
+ 'quit_all.general_only': '`/quit-all` ist nur im General-Topic verfügbar.',
337
+ 'clearMessages.summary': '🗑 {deleted} von {total} Nachrichten gelöscht. ' +
338
+ 'Telegram weigert sich, Nachrichten älter als 48 h zu löschen — der Rest bleibt im Verlauf.',
339
+ 'clearMessages.no_messages': 'Keine Nachrichten zum Löschen in diesem Thread.',
340
+ 'edited.hint': "✏️ Bearbeitete Nachrichten behandle ich nicht als neue Eingabe — sende die Korrektur als separate Nachricht.",
341
+ 'voice.no_api_key': 'Sprache erfordert `GROQ_API_KEY` (kostenlos) oder `OPENAI_API_KEY`.',
342
+ 'voice.failed': 'Sprachnachricht konnte nicht transkribiert werden.',
343
+ 'voice.retrying': '⚠️ Sprachnachricht konnte nicht transkribiert werden ({error}). Neuer Versuch in {seconds} s…',
344
+ 'voice.transcribed': '🎤 {text}',
345
+ 'file.too_big': '📎 Datei überschreitet das Bot-API-Limit ({cap} MB) — ich kann sie nicht herunterladen. Sende eine kleinere Datei.',
346
+ 'file.download_failed': '📎 Datei konnte nicht heruntergeladen werden. Bitte versuche es erneut.',
347
+ 'error.workdir.gone': '📁 Ordner `{subdir}` ist von der Festplatte verschwunden. Führe /bind <newdir> aus.',
348
+ 'error.tg.thread.deleted': '⚠️ Thread wurde in Telegram gelöscht; Verknüpfung aufgehoben.',
349
+ 'error.tg.thread.closed': '🔒 Thread {key} ist geschlossen — öffne ihn in deinem Telegram-Client erneut oder lösche ihn vollständig.',
350
+ 'error.tg.perm.delete': '🔐 Kann Nachrichten nicht löschen. Gewähre dem Bot `can_delete_messages`.',
351
+ 'error.tg.perm.manage_topics': '🔐 `can_manage_topics` fehlt. Mach mich zum Gruppen-Admin.',
352
+ 'error.state.corrupted': '⚠️ state.json war beschädigt; Verknüpfungen zurückgesetzt. Führe /bind erneut aus, wo nötig.',
353
+ 'error.start_in_general': 'Agent kann in General nicht gestartet werden — das ist ein Service-Topic. Öffne einen thematischen Thread.',
354
+ 'cb.access_denied': 'Zugriff verweigert',
355
+ 'cb.bind_only_topical': '/bind funktioniert nur in thematischen Threads',
356
+ 'cb.binding_to': 'Verknüpfe mit {subdir}…',
357
+ 'cb.no_active_session': 'Keine aktive Session',
358
+ 'cb.model_error': 'Fehler: {error}',
359
+ 'cb.model_set': 'Modell: {model}',
360
+ 'cb.model_provider_gone': 'Dieser Anbieter existiert nicht mehr — /model erneut ausführen',
361
+ 'cb.model_recent_gone': 'Dieses Modell ist nicht mehr in der Liste — /model erneut ausführen',
362
+ 'cb.model_hidden': 'Ausgeblendet: {provider}',
363
+ 'cb.model_shown': 'Eingeblendet: {provider}',
364
+ 'cb.disconnect_expired': 'Dieses Trennen-Menü ist abgelaufen — /disconnect erneut ausführen',
365
+ 'cb.not_supported': 'Nicht unterstützt für {label}',
366
+ 'cb.unknown_agent': 'Unbekannter Agent',
367
+ 'cb.agent_switched': 'Gewechselt zu {label}',
368
+ 'cb.resume_only_topical': 'Resume funktioniert nur in thematischen Threads',
369
+ 'cb.bind_folder_first': 'Verknüpfe zuerst einen Ordner via /bind',
370
+ 'cb.agent_not_running': 'Agent läuft nicht',
371
+ 'cb.no_pending_question': 'Keine ausstehende Frage',
372
+ 'cb.connect_method_expired': 'Dieses Verbinden-Menü ist abgelaufen — /connect erneut ausführen',
373
+ 'cb.invalid_option': 'Ungültige Option',
374
+ 'cb.sent_option': 'Gesendet: {option}',
375
+ 'cb.effort_set': 'Effort: {level}',
376
+ 'cb.effort_error': 'Fehler: {error}',
377
+ 'cb.claudeMode_already': 'Bereits aktiv',
378
+ 'cb.claudeMode_switching': 'Wechsle…',
379
+ 'claudeMode.pick': '⚙️ Claude Code Backend — aktuell: {label}\nWähle ein Backend (Wechsel behält denselben Dialog):',
380
+ 'claudeMode.not_claude': "Dieses Topic ist nicht auf Claude Code — /claude_mode wechselt nur Claude's Backend.",
381
+ 'claudeMode.already': 'Bereits {label}.',
382
+ 'claudeMode.set_idle': '⚙️ Claude-Backend: {label} — wird beim nächsten Start angewendet.',
383
+ 'claudeMode.switched_resumed': '⚙️ Gewechselt zu {label} — derselbe Dialog fortgesetzt.',
384
+ 'claudeMode.switched_fresh': '⚙️ Gewechselt zu {label} — neue Session gestartet.',
385
+ 'claudeMode.perTurn_refused': '⚠️ Per-turn braucht Claude Code {min} oder neuer — dieses Gespräch lief zuletzt mit {version}. Das Backend wurde nicht geändert.',
386
+ 'cb.thinking_set': 'Thinking: {mode}',
387
+ 'cb.thinking_error': 'Fehler: {error}',
388
+ 'cb.toolresults_set': 'Tool-Ergebnisse: {mode}',
389
+ 'cb.toolresults_error': 'Fehler: {error}',
390
+ 'cb.subagent_set': 'Sub-Agenten: {mode}',
391
+ 'cb.subagent_error': 'Fehler: {error}',
392
+ 'cb.verbosity_set': 'Ausgabedetaillierung: {mode}',
393
+ 'cb.verbosity_error': 'Fehler: {error}',
394
+ 'cb.view_set': 'Dieses Thema zeigt: {view}',
395
+ 'session.list_header': 'Sessions zum Fortsetzen ({label}):',
396
+ 'session.list_footer': 'Sende 1–{max} zum Fortsetzen · 0 zum Abbrechen',
397
+ 'session.none': 'Keine fortsetzbaren Sessions in diesem Ordner.',
398
+ 'session.cancelled': 'Abgebrochen. Session-Auswahl geschlossen.',
399
+ 'session.invalid': 'Ungültige Nummer. Gib einen Wert von 1 bis {max} ein.',
400
+ 'session.resumed': 'Session fortgesetzt. Sende deine Nachricht:',
401
+ 'session.resume_failed': 'Session konnte nicht fortgesetzt werden: {error}',
402
+ 'session.expired': 'Session-Liste ist veraltet. Führe /sessions erneut aus.',
403
+ 'session.load_failed': 'Sessions konnten nicht geladen werden.',
404
+ 'resume.context_header': '↩️ Fortgesetzt — letzte {count} Nachrichten:',
405
+ 'resume.context_user_label': '👤',
406
+ 'resume.context_assistant_label': '🤖',
407
+ 'recap.missedCountHeader': '⚠️ {count} Nachricht(en) verpasst, während der Bot offline war. Neueste aus der Session:',
408
+ 'recap.restartedFallbackHeader': '🔄 Bot neu gestartet. Neueste aus der Session:',
409
+ 'recap.stillWorkingLine': '⏳ Der Agent arbeitet noch…',
410
+ 'trace.onThisThreadReply': '🔎 Tracing für diesen Thread aktiviert.',
411
+ 'trace.offThisThreadReply': '🔎 Tracing für diesen Thread deaktiviert.',
412
+ 'trace.onAllThreadsReply': '🔎 Tracing für ALLE Threads aktiviert.',
413
+ 'trace.offAllThreadsReply': '🔎 Tracing überall deaktiviert (das «all»-Flag und die Thread-Liste wurden geleert).',
414
+ 'trace.statusReply': '🔎 Trace — dieser Thread: {thisThread}\nAlle Threads: {allThreads}\nGetracete Threads: {count}',
415
+ 'trace.statusOnLabel': 'an',
416
+ 'trace.statusOffLabel': 'aus',
417
+ 'trace.usageHint': 'Verwendung: /trace on | off | on all | off all | (kein Argument — Status)',
418
+ 'timestamps.onReply': '🕐 Zeitstempel aktiviert: jeder an den Agent weitergeleitete Prompt erhält die Sendezeit als erste Zeile (nie im Topic gepostet).',
419
+ 'timestamps.offReply': '🕐 Zeitstempel für diesen Thread deaktiviert.',
420
+ 'timestamps.statusOnReply': '🕐 Zeitstempel: an für diesen Thread.',
421
+ 'timestamps.statusOffReply': '🕐 Zeitstempel: aus für diesen Thread.',
422
+ 'timestamps.usageHint': 'Verwendung: /timestamps on | off | (kein Argument — Status)',
423
+ 'schedule.fired': '⏰ Zeitplan „{name}« ({schedule}){missedNote}\n\n{prompt}',
424
+ 'schedule.missedNote': ' — verpasst um {time}, hole nach',
425
+ 'schedule.checkFailed': '🚨 Prüfung „{name}« fehlgeschlagen: {failure} ({schedule}){missedNote}\n$ {command}\n\n{output}\n\nDer Agent wird geweckt. Keine weiteren Alarme, bis die Prüfung wieder besteht.',
426
+ 'schedule.checkRecovered': '✅ Prüfung „{name}« besteht wieder.',
427
+ 'schedule.pausedUnbound': '⏸ Zeitpläne pausiert: {count} — das Topic wurde vom Ordner getrennt. /bind bringt sie zurück.',
428
+ 'schedule.resumedRebind': '▶️ Zeitpläne fortgesetzt: {count} (nächster Lauf ab jetzt neu berechnet).',
429
+ 'schedule.noAgent': '⚠️ Nichts geplant — in diesem Thema läuft kein Agent, ein geplanter Lauf hätte also nichts zu starten. Starte zuerst /claude oder /opencode.',
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 GERMAN what you scheduled.\n\n{timeNote}\n\nRequest: {text}',
432
+ 'schedule.interviewPromptTemplate': 'The user invoked /schedule with no details. Ask them IN GERMAN 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 GERMAN 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': 'täglich um {time}',
436
+ 'reminders.scheduleWeekdays': 'werktags um {time}',
437
+ 'reminders.scheduleWeekly': '{weekday} um {time}',
438
+ 'reminders.scheduleMonthly': 'am {dayOfMonth}. um {time}',
439
+ 'reminders.scheduleOnce': '{date} um {time}',
440
+ 'reminders.scheduleRaw': 'cron {text}',
441
+ 'reminders.nextRunToday': 'heute um {time}',
442
+ 'reminders.nextRunTomorrow': 'morgen um {time}',
443
+ 'reminders.nextRunOnDate': '{date} um {time}',
444
+ 'reminders.nextRunNone': '—',
445
+ 'reminders.hubTitle': '🔔 Erinnerungen',
446
+ 'reminders.hubEmptyLine': 'Noch keine Erinnerungen.',
447
+ 'reminders.hubActiveLine': 'Aktiv: {count}',
448
+ 'reminders.hubLimitLine': 'Aktiv: {count} — das Limit von {limit} ist erreicht. Lösche eine, um eine neue anzulegen.',
449
+ 'reminders.addButton': '➕ Hinzufügen',
450
+ 'reminders.listButton': '📋 Liste ({count})',
451
+ 'reminders.closeButton': '✕ Schließen',
452
+ 'reminders.closedNotice': '🔔 Erinnerungen geschlossen.',
453
+ 'reminders.listTitle': '📋 Erinnerungen ({count})',
454
+ 'reminders.listPageLine': 'Seite {page} von {total}',
455
+ 'reminders.listRow': '🔔 {name} · {schedule}',
456
+ 'reminders.listPrevButton': '‹ Vorherige',
457
+ 'reminders.listNextButton': 'Nächste ›',
458
+ 'reminders.listBackToHubButton': '‹ Zurück',
459
+ 'reminders.cardTitle': '🔔 {name}',
460
+ 'reminders.cardWhen': 'Wann: {schedule}',
461
+ 'reminders.cardText': 'Text: „{text}“',
462
+ 'reminders.cardNext': 'Nächste: {next}',
463
+ 'reminders.cardDeleteButton': '🗑 Löschen',
464
+ 'reminders.cardBackToListButton': '‹ Zur Liste',
465
+ 'reminders.createdTitle': '✅ Erinnerung erstellt',
466
+ 'reminders.doneListButton': '📋 Liste',
467
+ 'reminders.wizardTitle': '🔔 Neue Erinnerung',
468
+ 'reminders.pickRepeat': 'Wiederholung: {value}',
469
+ 'reminders.pickDate': 'Datum: {value}',
470
+ 'reminders.pickWeekday': 'Wochentag: {value}',
471
+ 'reminders.pickDayOfMonth': 'Tag im Monat: {value}',
472
+ 'reminders.pickTime': 'Uhrzeit: {value}',
473
+ 'reminders.pickText': 'Text: „{value}“',
474
+ 'reminders.stepRepeatQuestion': 'SCHRITT 1/4 · Wie oft?',
475
+ 'reminders.stepDateQuestion': 'SCHRITT 2/4 · Welcher Tag?',
476
+ 'reminders.stepDateGridQuestion': 'SCHRITT 2/4 · Datum wählen:',
477
+ 'reminders.stepWeekdayQuestion': 'SCHRITT 2/4 · Welcher Wochentag?',
478
+ 'reminders.stepDayOfMonthQuestion': 'SCHRITT 2/4 · Welcher Tag im Monat?',
479
+ 'reminders.stepDayOfMonthGridQuestion': 'SCHRITT 2/4 · Tag im Monat wählen:',
480
+ 'reminders.stepTimeQuestion': 'SCHRITT 3/4 · Um welche Uhrzeit?',
481
+ 'reminders.stepHourQuestion': 'SCHRITT 3/4 · Stunde wählen:',
482
+ 'reminders.stepMinuteQuestion': 'SCHRITT 3/4 · {hour}:__ — Minuten wählen:',
483
+ 'reminders.stepTextQuestion': 'SCHRITT 4/4 · Sende den Erinnerungstext — tippe ihn oder nimm eine Sprachnachricht auf.',
484
+ 'reminders.repeatOnceButton': 'Einmal',
485
+ 'reminders.repeatDailyButton': 'Täglich',
486
+ 'reminders.repeatWeekdaysButton': 'Werktags',
487
+ 'reminders.repeatWeeklyButton': 'Wöchentlich',
488
+ 'reminders.repeatMonthlyButton': 'Monatlich',
489
+ 'reminders.dateTodayButton': 'Heute',
490
+ 'reminders.dateTomorrowButton': 'Morgen',
491
+ 'reminders.dateOtherButton': '✏️ Anderes Datum…',
492
+ 'reminders.dayOfMonthOtherButton': '✏️ Anderer Tag…',
493
+ 'reminders.timeOtherButton': '🕐 Andere Uhrzeit',
494
+ 'reminders.backButton': '‹ Zurück',
495
+ 'reminders.cancelButton': '✕ Abbrechen',
496
+ 'reminders.weekdayMondayButton': 'Mo',
497
+ 'reminders.weekdayTuesdayButton': 'Di',
498
+ 'reminders.weekdayWednesdayButton': 'Mi',
499
+ 'reminders.weekdayThursdayButton': 'Do',
500
+ 'reminders.weekdayFridayButton': 'Fr',
501
+ 'reminders.weekdaySaturdayButton': 'Sa',
502
+ 'reminders.weekdaySundayButton': 'So',
503
+ 'reminders.errorPastTime': '⚠️ Diese Uhrzeit ist schon vorbei. Wähle eine spätere Uhrzeit oder geh zurück und ändere den Tag.',
504
+ 'reminders.errorInvalidDate': '⚠️ Dieses Datum gibt es nicht. Wähle ein anderes.',
505
+ 'reminders.errorInvalidTime': '⚠️ Diese Uhrzeit gibt es an diesem Tag nicht — die Uhren werden umgestellt. Wähle eine andere Uhrzeit.',
506
+ 'reminders.errorTextTooLong': '⚠️ Dieser Text ist zu lang (höchstens {limit} Zeichen) und wurde NICHT gespeichert. Sende einen kürzeren.',
507
+ 'reminders.cancelledNotice': '✕ Abgebrochen',
508
+ 'reminders.expiredNotice': '✕ Abgelaufen — der Erinnerungstext kam nie an.',
509
+ 'reminders.capReachedNotice': '⚠️ Dieses Thema hat bereits {limit} Erinnerungen — lösche eine, bevor du eine neue anlegst.',
510
+ 'reminders.wizardExpiredCbAnswer': 'Dieser Assistent ist veraltet — führe /reminders erneut aus.',
511
+ 'reminders.deletedCbAnswer': '🗑 Gelöscht',
512
+ 'reminders.deleteGoneCbAnswer': 'Schon gelöscht.',
513
+ 'reminders.cardExpiredCbAnswer': 'Diese Erinnerung gibt es nicht mehr.',
514
+ 'apiRetry.transientNotice': '⏳ API rate-limited — automatischer Wiederholungsversuch in {minutes} Min (Versuch {attempt}).',
515
+ 'apiRetry.openCodeRetryNotice': '⏳ Anbieterfehler — OpenCode versucht es in {minutes} Min erneut (Versuch {attempt}){detail}',
516
+ 'apiRetry.usageLimitDelayNotice': '🚧 Nutzungslimit erreicht — Wiederholung in {minutes} Min (Versuch {attempt}).',
517
+ 'apiRetry.usageLimitResetNotice': '🚧 Nutzungslimit erreicht — automatisches Fortsetzen nach Reset (~{time}).',
518
+ 'apiRetry.resuming': '↻ Fortsetzen…',
519
+ 'apiRetry.limitResetResuming': '✅ Das Limit-Fenster wurde zurückgesetzt — ich setze die Arbeit in diesem Thema fort.',
520
+ 'apiRetry.giveUp': '⚠️ Konnte nach {attempts} Versuchen nicht fortsetzen. Schreibe mir, wann ich weitermachen soll.',
521
+ 'apiRetry.continueNudge': 'Fahre von dort fort, wo du aufgehört hast.',
522
+ 'apiRetry.loggedOutClaude': '⚠️ Claude ist abgemeldet — führe /login aus, um fortzufahren.',
523
+ 'apiRetry.loggedOutOpenCode': '⚠️ OpenCode: ungültige Anmeldedaten — starte den opencode-Server neu.',
524
+ // ── startup readiness status (boot-time owner notice) ──
525
+ 'startup.ready': '✅ Bereit — ich kann Nachrichten in Bot-Threads und Gruppenthemen verarbeiten.',
526
+ 'startup.header_not_ready': '⚠️ Einrichtung unvollständig. Um mit mir zu arbeiten, schließe bitte diese Schritte ab:',
527
+ 'startup.item.create_group': 'Erstelle eine Forum-Supergruppe mit aktivierten Themen und schreibe mir dort eine Nachricht, um sie zu koppeln.',
528
+ 'startup.item.grant_admin': 'Mache mich zum Admin mit diesen Rechten: {missing}.',
529
+ 'startup.item.bind_topic': 'Erstelle ein Thema und binde es mit /bind an einen Ordner.',
530
+ 'startup.item.install_agent': 'Installiere ein Agent-CLI — claude oder opencode.',
531
+ 'startup.item.optional_groq': '(optional) Füge GROQ_API_KEY zu deiner .env hinzu und starte neu, um Spracheingabe zu aktivieren.',
532
+ 'startup.item.optional_owner': '(optional) Setze OWNER_USER_ID, um diesen Status in deinem privaten Chat zu erhalten.',
533
+ 'requests.alert.notAnsweringNotice': '⚠️ Anfrage {requestId} blieb unbeantwortet: Der Agent hat seine Züge ohne Antwort beendet, und die Erinnerungen haben aufgegeben. Prüfe die Sitzung in diesem Thema.',
534
+ 'requests.alert.unreachableNotice': '⚠️ Anfrage {requestId} blieb unbeantwortet: Die Sitzung des Agenten war für eine Erinnerung nicht erreichbar. Prüfe die Sitzung in diesem Thema.',
535
+ 'requests.limit.answerAfterResetNotice': '🚧 Nutzungslimit erreicht — die Antwort kommt nach {time}.',
536
+ 'requests.limit.answerNextAttemptNotice': '🚧 Nutzungslimit erreicht — nächster Versuch um {time}.',
537
+ 'requests.limit.answerAutoResumeOffNotice': '🚧 Nutzungslimit erreicht. Die automatische Fortsetzung ist aus — die Arbeit wartet, bis der Betreiber sie fortsetzt.',
538
+ 'account.title': '👤 Claude-Konto für dieses Thema: {name}\n\n{list}\n\nTippe auf ein Profil, um dieses Thema darauf umzustellen. Im Thema General wird die Wahl zum Standard für alle Themen.',
539
+ 'account.titleGeneral': '👤 Claude-Konto — Standard für ALLE Themen: {name}\n\n{list}\n\nTippe auf ein Profil, um es zum Standard zu machen. Themen mit eigener Wahl behalten sie.',
540
+ 'account.row.loggedOut': 'nicht angemeldet',
541
+ 'account.row.topics': ' · {count} Thema/Themen',
542
+ 'account.kind.personal': 'persönlich {plan}',
543
+ 'account.kind.corporate': 'Firma {plan}',
544
+ 'account.kind.unknown': 'Plan {plan}',
545
+ 'account.removeButton': '🗑 Entfernen',
546
+ 'account.backButton': '⬅️ Zurück',
547
+ 'account.followButton': '↩ Dem Standard folgen ({name})',
548
+ 'account.pickLogin': '🔑 Welches Profil soll sich neu anmelden?',
549
+ 'account.pickRemove': '🗑 Welches Profil soll entfernt werden? Seine Anmeldung wird gelöscht; Themen, die es gewählt hatten, kehren zum Standard zurück.',
550
+ 'account.nothingToRemove': 'Es gibt keine hinzugefügten Profile zum Entfernen.',
551
+ 'account.confirmRemove': '🗑 Profil {name} ({email}) entfernen? Seine Anmeldung wird gelöscht und {count} Thema/Themen, die es gewählt hatten, kehren zum Standard zurück.',
552
+ 'account.confirmRemoveButton': '🗑 Ja, {name} entfernen',
553
+ 'account.removed': '✅ Profil {name} entfernt. {count} Thema/Themen folgen jetzt dem Standard.',
554
+ 'account.removeInstanceDefaultRefused': '{name} ist der Standard für alle Themen. Wähle zuerst im Thema General einen anderen Standard.',
555
+ 'account.unknown': '❌ Kein Profil namens {name}. /accounts zeigt die Liste.',
556
+ 'account.notLoggedIn': '⚠️ Profil {name} ist nicht angemeldet. Zuerst /accounts login {name} ausführen.',
557
+ 'account.askName': '➕ Name des neuen Profils — Kleinbuchstaben, Ziffern, - und _, bis zu {max} Zeichen (z. B. work). Sende ihn als nächste Nachricht oder führe /accounts add <name> aus.',
558
+ 'account.invalidName': '❌ Ein Profilname besteht aus Kleinbuchstaben, Ziffern, - und _, höchstens {max} Zeichen, und ist nicht "default".',
559
+ 'account.exists': 'Ein Profil namens {name} existiert bereits.',
560
+ 'account.created': '✅ Profil {name} angelegt. Anmeldung wird gestartet…',
561
+ 'account.createFailed': '⚠️ Das Verzeichnis für Profil {name} konnte nicht angelegt werden. Siehe Bot-Log.',
562
+ 'account.login_url': '🔐 Claude-Anmeldung für Profil {name}. Öffne diesen Link in einem Browser, der als DIESES Konto angemeldet ist — ein Inkognito-Fenster oder ein anderes Browserprofil hält deine aktuelle Anmeldung heraus —, schließe die Anmeldung ab und füge den Code hier ein:\n{url}',
563
+ 'account.login_success': '✅ Profil {name} angemeldet: {email} ({plan}).',
564
+ 'account.login_failed': '⚠️ Anmeldung für Profil {name} fehlgeschlagen. Erneut versuchen mit /accounts login {name}.',
565
+ 'account.setThisTopic': '✅ Claude-Konto für dieses Thema: {name}.{apply}',
566
+ 'account.setGlobal': '✅ Standard-Claude-Konto für ALLE Themen: {name}. Themen mit eigener Wahl behalten sie; die übrigen wechseln jetzt oder beim nächsten Start.',
567
+ 'account.followSet': '✅ Dieses Thema folgt dem Standard-Claude-Konto ({name}).{apply}',
568
+ 'account.usage': 'Verwendung: /accounts — die Auswahl; /accounts add <name>; /accounts use <name>; /accounts login <name>; /accounts remove <name>; /accounts autoswitch on|off.',
569
+ 'account.applied.inactive': ' Gilt beim nächsten Start oder Fortsetzen der Sitzung.',
570
+ 'account.applied.unchanged': '',
571
+ 'account.applied.respawned': ' Die laufende Sitzung wurde darunter neu gestartet — dieselbe Unterhaltung.',
572
+ 'account.applied.deferred': ' Der Agent arbeitet; der Wechsel gilt, sobald sein Zug endet.',
573
+ 'account.applied.restartRequired': ' Der Agent arbeitet; der Wechsel gilt beim nächsten Start oder Fortsetzen.',
574
+ 'account.askNameCancelled': '✖ Konto hinzufügen abgebrochen. Nachrichten gehen wieder an den Agenten.',
575
+ 'account.row.usage': ' ⏱ 5h {session} · Woche {weekly}{fable}',
576
+ 'account.row.usageFable': ' · Fable {fable}',
577
+ 'account.row.usageStale': ' (veraltet)',
578
+ 'account.row.limited': ' ⛔ am Limit bis {until}',
579
+ 'account.usageHint': 'Nutzung: % jedes Fensters verbraucht, dann wann es zurückgesetzt wird (🔄 in 2h = in zwei Stunden).',
580
+ 'account.autoSwitchHint': 'Was bei einem Nutzungslimit geschieht — auf ein Ersatzmodell wechseln oder auf den Reset warten — wird in /limits eingestellt.',
581
+ 'fallback.backendClaude': 'Claude',
582
+ 'fallback.backendOpenCode': 'OpenCode',
583
+ 'fallback.topicModel': 'Modell des Topics',
584
+ 'fallback.topicModelButton': 'Modell des Topics behalten',
585
+ 'fallback.noAgent': 'kein Agent',
586
+ 'fallback.addButton': '➕ Hinzufügen',
587
+ 'fallback.clearButton': '🗑 Leeren',
588
+ 'fallback.backButton': '⬅️ Zurück',
589
+ 'fallback.nothingDetected': 'Nichts hinzuzufügen: weder ein angemeldetes Claude-Konto noch ein OpenCode-Provider wurde erkannt. Melde dich zuerst über /accounts an.',
590
+ 'fallback.pickAccount': '➕ Konto oder Provider wählen:',
591
+ 'fallback.pickModel': '➕ {account} — Modell wählen:',
592
+ 'fallback.full': 'Die Liste fasst höchstens {max} Modelle.',
593
+ 'fallback.alreadyInChain': 'Schon in der Liste: {label}',
594
+ 'fallback.added': '✅ Hinzugefügt: {label}',
595
+ 'fallback.proposeNothing': 'Nichts vorzuschlagen: kein angemeldetes Claude-Konto und kein OpenCode-Provider gefunden.',
596
+ 'fallback.proposed': '🔄 Liste der Ersatzmodelle aus dem Verbundenen gefüllt: {count} Einträge. Mit den Buttons umsortieren oder entfernen.',
597
+ 'fallback.cleared': '🗑 Die Liste der Ersatzmodelle ist jetzt leer.',
598
+ 'fallback.stale': 'Die Liste hat sich seit dieser Tastatur geändert — sie wird neu aufgebaut.',
599
+ 'fallback.moved': 'Verschoben.',
600
+ 'fallback.removed': '🗑 Entfernt: {label}',
601
+ 'fallback.proposeConfirmButton': '✨ Ja, ersetzen',
602
+ 'fallback.switchExpired': 'Dieses Limit ist vorbei — nichts zu wechseln.',
603
+ 'fallback.switchButton': '🔁 Wechseln zu {label}',
604
+ 'fallback.switchOffer': '🪜 Ein Ersatzmodell hat Reserve — tippen, um dieses Thema dorthin zu verschieben und jetzt fortzusetzen.',
605
+ 'fallback.switched': '🔁 Nutzungslimit auf {from} — dieses Topic ist zu {to} gewechselt und macht weiter.{reset}',
606
+ 'fallback.backgroundStopped': 'Noch laufende Hintergrundaufgaben wurden durch den Wechsel beendet.',
607
+ 'fallback.switchedReset': ' {from} wird um {time} zurückgesetzt; das Topic bleibt auf {to}, bis Sie es zurückwechseln (/accounts, /model, /claude, /opencode).',
608
+ 'fallback.switchedDeferred': '🔁 Nutzungslimit auf {from} — der Agent arbeitet noch, daher wechselt dieses Topic zu {to}, wenn sein Zug endet; bis dahin bleibt das Warten aktiv.',
609
+ 'fallback.switchFailed': '⚠️ Wechsel zu {to} fehlgeschlagen: {error}. Das Warten auf das Zurücksetzen bleibt aktiv.',
610
+ 'limits.usageHeading': 'Nutzung (% verbraucht)',
611
+ 'limits.topicRuns': 'Läuft auf: {current}',
612
+ 'limits.settingsGeneral': 'Standard für alle Themen.',
613
+ 'limits.sourceGeneral': 'wie in General',
614
+ 'limits.sourceTopic': 'für dieses Thema gesetzt',
615
+ 'limits.sourceLine': '🔁 {switch} · ⏳ {wait}',
616
+ 'limits.switchButton': '🔁 Auto-Wechsel: {state}',
617
+ 'limits.waitButton': '⏳ Auf Reset warten: {state}',
618
+ 'limits.switchMenuTitle': '🔁 Automatisch auf ein Ersatzmodell wechseln',
619
+ 'limits.waitMenuTitle': '⏳ Auf das Zurücksetzen warten und fortsetzen',
620
+ 'limits.settingSameButton': 'Wie in General ({state})',
621
+ 'limits.rebuildButton': '🔄 Aus Verbundenem füllen',
622
+ 'limits.rebuildConfirm': '🔄 Liste durch eine neue aus dem Verbundenen ersetzen? Mit 🚫 markierte Modelle bleiben ausgenommen.',
623
+ 'limits.entryEnabled': '✅ Im automatischen Wechsel enthalten: {label}',
624
+ 'limits.entryDisabled': '🚫 Vom automatischen Wechsel ausgenommen: {label}',
625
+ 'limits.setThisTopic': '✅ {what}: {state} für dieses Thema.',
626
+ 'limits.setGlobal': '✅ {what}: {state} für ALLE Themen (Überschreibungen einzelner Themen gelten weiter).',
627
+ 'limits.setSame': '✅ {what}: dieses Thema folgt General ({state}).',
628
+ 'limits.whatSwitch': 'Automatisch auf ein Ersatzmodell wechseln',
629
+ 'limits.whatWait': 'Auf das Zurücksetzen warten und fortsetzen',
630
+ 'limits.usage': 'Verwendung: /limits — der Bildschirm; /limits rebuild; /limits clear; /limits switch on|off|same; /limits wait on|off|same («same» = General folgen, in einem Thema).',
631
+ 'accounts.openCodeSection': '🔌 OpenCode-Provider (verbunden):\n{list}',
632
+ 'accounts.openCodeNone': '🔌 OpenCode-Provider: noch keiner verbunden. «➕ OpenCode-Provider» verbindet einen.',
633
+ 'accounts.buttonsHint': 'Tippe auf ein Konto, um dieses Thema darauf umzustellen (in General: Standard für alle). 🔑 meldet ein Konto oder einen Anbieter neu an, 🗑 entfernt ein Konto (das Standardkonto wird abgemeldet), 🔌 trennt einen Anbieter.',
634
+ 'accounts.addClaudeButton': '➕ Claude-Konto',
635
+ 'accounts.addProviderButton': '➕ OpenCode-Provider',
636
+ 'accounts.askProvider': '➕ Welcher OpenCode-Provider? Sende seine ID als nächste Nachricht (zum Beispiel openai oder openrouter).',
637
+ 'accounts.stale': 'Diese Ansicht ist veraltet — sie wird neu aufgebaut.',
638
+ 'accounts.confirmDisconnect': '🔌 {provider} trennen? Die gespeicherten Zugangsdaten werden entfernt.',
639
+ 'accounts.confirmDisconnectButton': '🔌 Ja, {provider} trennen',
640
+ 'limits.listNote': '🪜 Ersatzmodelle, oben zuerst:',
641
+ 'limits.listNoteEmpty': '🪜 Noch keine Ersatzmodelle — es werden nur angemeldete Claude-Konten genutzt. ➕ Hinzufügen oder 🔄 Aus Verbundenem füllen.',
642
+ 'apiRetry.usageLimitResetOnRungNotice': '🚧 Nutzungslimit erreicht — alle Ersatzmodelle sind limitiert. Dieses Thema läuft nach dem Reset (~{time}) auf {model} weiter.',
643
+ 'requests.limit.answerAfterResetOnRungNotice': '🚧 Nutzungslimit erreicht — die Antwort kommt nach {time}, mit {model}.',
644
+ 'usage.resetIn': '🔄 in {time}',
645
+ 'usage.unitDay': 'T',
646
+ 'usage.unitHour': 'Std',
647
+ 'usage.unitMinute': 'Min',
648
+ 'accounts.disconnectButton': '🔌 {provider} trennen',
649
+ 'accounts.defaultRemovedNote': 'Das Standardkonto (~/.claude) ist abgemeldet und ausgeblendet. Wieder anmelden: /accounts login default.',
650
+ 'account.confirmRemoveDefault': '🗑 Das Standardkonto ({email}) entfernen? Die gespeicherte Anmeldung in ~/.claude wird gelöscht: Laufende Sitzungen damit funktionieren nicht mehr, Themen darauf brauchen ein anderes Konto. Verläufe, Einstellungen, Skills und Gedächtnis bleiben. Es bleibt ausgeblendet, bis du dich wieder anmeldest.',
651
+ 'account.removedDefault': '✅ Das Standardkonto ist abgemeldet und ausgeblendet. Sitzungen darauf scheitern, bis du ein anderes Konto wählst oder dich neu anmeldest (/accounts login default).',
652
+ 'account.removeDefaultFailed': '⚠️ Das Standardkonto konnte nicht abgemeldet werden. Siehe Bot-Log.',
653
+ 'limits.rungTitle': '🪜 {n} von {total}: {label}',
654
+ 'limits.rungReady': '✅ Bereit.',
655
+ 'limits.rungLimited': '⛔ Am Limit bis {until}.',
656
+ 'limits.rungSignedOut': '🔒 Nicht angemeldet.',
657
+ 'limits.rungMissing': '❓ Wird nicht mehr angeboten.',
658
+ 'limits.rungDisabled': '🚫 Vom automatischen Wechsel ausgenommen.',
659
+ 'limits.rungHere': '✓ Dieses Thema läuft darauf.',
660
+ 'limits.btnUp': '⬆️ Höher',
661
+ 'limits.btnDown': '⬇️ Tiefer',
662
+ 'limits.btnUse': '✅ Verwenden',
663
+ 'limits.btnDontUse': '🚫 Nicht verwenden',
664
+ };
665
+ //# sourceMappingURL=de.js.map