charness 0.0.0-stage → 3.0.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 (988) 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 +1024 -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 +1336 -0
  19. package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
  20. package/dist/adapters/claudeCliAdapter.js +4204 -0
  21. package/dist/adapters/claudeCliAdapter.js.map +1 -0
  22. package/dist/adapters/claudeJsonStreamAdapter.d.ts +548 -0
  23. package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
  24. package/dist/adapters/claudeJsonStreamAdapter.js +1810 -0
  25. package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -0
  26. package/dist/adapters/claudePlatformFlags.d.ts +35 -0
  27. package/dist/adapters/claudePlatformFlags.d.ts.map +1 -0
  28. package/dist/adapters/claudePlatformFlags.js +46 -0
  29. package/dist/adapters/claudePlatformFlags.js.map +1 -0
  30. package/dist/adapters/createAdapter.d.ts +252 -0
  31. package/dist/adapters/createAdapter.d.ts.map +1 -0
  32. package/dist/adapters/createAdapter.js +475 -0
  33. package/dist/adapters/createAdapter.js.map +1 -0
  34. package/dist/adapters/openCodeAdapter.d.ts +1446 -0
  35. package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
  36. package/dist/adapters/openCodeAdapter.js +4540 -0
  37. package/dist/adapters/openCodeAdapter.js.map +1 -0
  38. package/dist/adapters/sessionLaunchDefaults.d.ts +28 -0
  39. package/dist/adapters/sessionLaunchDefaults.d.ts.map +1 -0
  40. package/dist/adapters/sessionLaunchDefaults.js +15 -0
  41. package/dist/adapters/sessionLaunchDefaults.js.map +1 -0
  42. package/dist/adapters/terminalAdapter.d.ts +68 -0
  43. package/dist/adapters/terminalAdapter.d.ts.map +1 -0
  44. package/dist/adapters/terminalAdapter.js +371 -0
  45. package/dist/adapters/terminalAdapter.js.map +1 -0
  46. package/dist/agentLogin/agentLogin.d.ts +31 -0
  47. package/dist/agentLogin/agentLogin.d.ts.map +1 -0
  48. package/dist/agentLogin/agentLogin.js +493 -0
  49. package/dist/agentLogin/agentLogin.js.map +1 -0
  50. package/dist/agentTrigger.d.ts +28 -0
  51. package/dist/agentTrigger.d.ts.map +1 -0
  52. package/dist/agentTrigger.js +53 -0
  53. package/dist/agentTrigger.js.map +1 -0
  54. package/dist/apiErrorRetry.d.ts +209 -0
  55. package/dist/apiErrorRetry.d.ts.map +1 -0
  56. package/dist/apiErrorRetry.js +351 -0
  57. package/dist/apiErrorRetry.js.map +1 -0
  58. package/dist/apiRetryKick.d.ts +148 -0
  59. package/dist/apiRetryKick.d.ts.map +1 -0
  60. package/dist/apiRetryKick.js +158 -0
  61. package/dist/apiRetryKick.js.map +1 -0
  62. package/dist/bootClassifier.d.ts +46 -0
  63. package/dist/bootClassifier.d.ts.map +1 -0
  64. package/dist/bootClassifier.js +43 -0
  65. package/dist/bootClassifier.js.map +1 -0
  66. package/dist/bot.d.ts +207 -0
  67. package/dist/bot.d.ts.map +1 -0
  68. package/dist/bot.js +10611 -0
  69. package/dist/bot.js.map +1 -0
  70. package/dist/botFileStorage.d.ts +60 -0
  71. package/dist/botFileStorage.d.ts.map +1 -0
  72. package/dist/botFileStorage.js +205 -0
  73. package/dist/botFileStorage.js.map +1 -0
  74. package/dist/cli/applyDnsFix.d.ts +7 -0
  75. package/dist/cli/applyDnsFix.d.ts.map +1 -0
  76. package/dist/cli/applyDnsFix.js +46 -0
  77. package/dist/cli/applyDnsFix.js.map +1 -0
  78. package/dist/cli/bot.d.ts +27 -0
  79. package/dist/cli/bot.d.ts.map +1 -0
  80. package/dist/cli/bot.js +98 -0
  81. package/dist/cli/bot.js.map +1 -0
  82. package/dist/cli/botEntry.d.ts +3 -0
  83. package/dist/cli/botEntry.d.ts.map +1 -0
  84. package/dist/cli/botEntry.js +11 -0
  85. package/dist/cli/botEntry.js.map +1 -0
  86. package/dist/cli/connectorGuards.d.ts +31 -0
  87. package/dist/cli/connectorGuards.d.ts.map +1 -0
  88. package/dist/cli/connectorGuards.js +159 -0
  89. package/dist/cli/connectorGuards.js.map +1 -0
  90. package/dist/cli/envLoader.d.ts +34 -0
  91. package/dist/cli/envLoader.d.ts.map +1 -0
  92. package/dist/cli/envLoader.js +132 -0
  93. package/dist/cli/envLoader.js.map +1 -0
  94. package/dist/cli/hot.d.ts +82 -0
  95. package/dist/cli/hot.d.ts.map +1 -0
  96. package/dist/cli/hot.js +323 -0
  97. package/dist/cli/hot.js.map +1 -0
  98. package/dist/cli.d.ts +3 -0
  99. package/dist/cli.d.ts.map +1 -0
  100. package/dist/cli.js +130 -0
  101. package/dist/cli.js.map +1 -0
  102. package/dist/connectors/jira/adf.d.ts +72 -0
  103. package/dist/connectors/jira/adf.d.ts.map +1 -0
  104. package/dist/connectors/jira/adf.js +407 -0
  105. package/dist/connectors/jira/adf.js.map +1 -0
  106. package/dist/connectors/jira/agentBinaries.d.ts +14 -0
  107. package/dist/connectors/jira/agentBinaries.d.ts.map +1 -0
  108. package/dist/connectors/jira/agentBinaries.js +75 -0
  109. package/dist/connectors/jira/agentBinaries.js.map +1 -0
  110. package/dist/connectors/jira/answerSink.d.ts +52 -0
  111. package/dist/connectors/jira/answerSink.d.ts.map +1 -0
  112. package/dist/connectors/jira/answerSink.js +220 -0
  113. package/dist/connectors/jira/answerSink.js.map +1 -0
  114. package/dist/connectors/jira/attachmentDownload.d.ts +41 -0
  115. package/dist/connectors/jira/attachmentDownload.d.ts.map +1 -0
  116. package/dist/connectors/jira/attachmentDownload.js +92 -0
  117. package/dist/connectors/jira/attachmentDownload.js.map +1 -0
  118. package/dist/connectors/jira/attachmentTool.d.ts +43 -0
  119. package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
  120. package/dist/connectors/jira/attachmentTool.js +150 -0
  121. package/dist/connectors/jira/attachmentTool.js.map +1 -0
  122. package/dist/connectors/jira/client.d.ts +490 -0
  123. package/dist/connectors/jira/client.d.ts.map +1 -0
  124. package/dist/connectors/jira/client.js +453 -0
  125. package/dist/connectors/jira/client.js.map +1 -0
  126. package/dist/connectors/jira/config.d.ts +117 -0
  127. package/dist/connectors/jira/config.d.ts.map +1 -0
  128. package/dist/connectors/jira/config.js +350 -0
  129. package/dist/connectors/jira/config.js.map +1 -0
  130. package/dist/connectors/jira/configFile.d.ts +10 -0
  131. package/dist/connectors/jira/configFile.d.ts.map +1 -0
  132. package/dist/connectors/jira/configFile.js +50 -0
  133. package/dist/connectors/jira/configFile.js.map +1 -0
  134. package/dist/connectors/jira/connector.d.ts +68 -0
  135. package/dist/connectors/jira/connector.d.ts.map +1 -0
  136. package/dist/connectors/jira/connector.js +257 -0
  137. package/dist/connectors/jira/connector.js.map +1 -0
  138. package/dist/connectors/jira/contextLedger.d.ts +59 -0
  139. package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
  140. package/dist/connectors/jira/contextLedger.js +194 -0
  141. package/dist/connectors/jira/contextLedger.js.map +1 -0
  142. package/dist/connectors/jira/contextPreamble.d.ts +18 -0
  143. package/dist/connectors/jira/contextPreamble.d.ts.map +1 -0
  144. package/dist/connectors/jira/contextPreamble.js +31 -0
  145. package/dist/connectors/jira/contextPreamble.js.map +1 -0
  146. package/dist/connectors/jira/inbound.d.ts +132 -0
  147. package/dist/connectors/jira/inbound.d.ts.map +1 -0
  148. package/dist/connectors/jira/inbound.js +316 -0
  149. package/dist/connectors/jira/inbound.js.map +1 -0
  150. package/dist/connectors/jira/issueBlocks.d.ts +51 -0
  151. package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
  152. package/dist/connectors/jira/issueBlocks.js +182 -0
  153. package/dist/connectors/jira/issueBlocks.js.map +1 -0
  154. package/dist/connectors/jira/issueContext.d.ts +25 -0
  155. package/dist/connectors/jira/issueContext.d.ts.map +1 -0
  156. package/dist/connectors/jira/issueContext.js +53 -0
  157. package/dist/connectors/jira/issueContext.js.map +1 -0
  158. package/dist/connectors/jira/issueDelta.d.ts +35 -0
  159. package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
  160. package/dist/connectors/jira/issueDelta.js +50 -0
  161. package/dist/connectors/jira/issueDelta.js.map +1 -0
  162. package/dist/connectors/jira/mediaPlaceholders.d.ts +20 -0
  163. package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
  164. package/dist/connectors/jira/mediaPlaceholders.js +92 -0
  165. package/dist/connectors/jira/mediaPlaceholders.js.map +1 -0
  166. package/dist/connectors/jira/outbound.d.ts +6 -0
  167. package/dist/connectors/jira/outbound.d.ts.map +1 -0
  168. package/dist/connectors/jira/outbound.js +38 -0
  169. package/dist/connectors/jira/outbound.js.map +1 -0
  170. package/dist/connectors/jira/prompt.d.ts +37 -0
  171. package/dist/connectors/jira/prompt.d.ts.map +1 -0
  172. package/dist/connectors/jira/prompt.js +99 -0
  173. package/dist/connectors/jira/prompt.js.map +1 -0
  174. package/dist/connectors/jira/promptSpill.d.ts +50 -0
  175. package/dist/connectors/jira/promptSpill.d.ts.map +1 -0
  176. package/dist/connectors/jira/promptSpill.js +157 -0
  177. package/dist/connectors/jira/promptSpill.js.map +1 -0
  178. package/dist/connectors/jira/promptText.d.ts +7 -0
  179. package/dist/connectors/jira/promptText.d.ts.map +1 -0
  180. package/dist/connectors/jira/promptText.js +26 -0
  181. package/dist/connectors/jira/promptText.js.map +1 -0
  182. package/dist/connectors/jira/sessionKeyCodec.d.ts +16 -0
  183. package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
  184. package/dist/connectors/jira/sessionKeyCodec.js +101 -0
  185. package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
  186. package/dist/connectors/jira/trigger.d.ts +50 -0
  187. package/dist/connectors/jira/trigger.d.ts.map +1 -0
  188. package/dist/connectors/jira/trigger.js +93 -0
  189. package/dist/connectors/jira/trigger.js.map +1 -0
  190. package/dist/connectors/jira/triggerLog.d.ts +51 -0
  191. package/dist/connectors/jira/triggerLog.d.ts.map +1 -0
  192. package/dist/connectors/jira/triggerLog.js +78 -0
  193. package/dist/connectors/jira/triggerLog.js.map +1 -0
  194. package/dist/connectors/jira/unconfirmedPosts.d.ts +58 -0
  195. package/dist/connectors/jira/unconfirmedPosts.d.ts.map +1 -0
  196. package/dist/connectors/jira/unconfirmedPosts.js +105 -0
  197. package/dist/connectors/jira/unconfirmedPosts.js.map +1 -0
  198. package/dist/connectors/telegram/answerSink.d.ts +46 -0
  199. package/dist/connectors/telegram/answerSink.d.ts.map +1 -0
  200. package/dist/connectors/telegram/answerSink.js +71 -0
  201. package/dist/connectors/telegram/answerSink.js.map +1 -0
  202. package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +31 -0
  203. package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
  204. package/dist/connectors/telegram/commands/autoContinueLimits.js +142 -0
  205. package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -0
  206. package/dist/connectors/telegram/commands/botCore.d.ts +46 -0
  207. package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -0
  208. package/dist/connectors/telegram/commands/botCore.js +3 -0
  209. package/dist/connectors/telegram/commands/botCore.js.map +1 -0
  210. package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
  211. package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -0
  212. package/dist/connectors/telegram/commands/callbackMessage.js +13 -0
  213. package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -0
  214. package/dist/connectors/telegram/commands/compaction.d.ts +47 -0
  215. package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -0
  216. package/dist/connectors/telegram/commands/compaction.js +868 -0
  217. package/dist/connectors/telegram/commands/compaction.js.map +1 -0
  218. package/dist/connectors/telegram/commands/displayModes.d.ts +13 -0
  219. package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -0
  220. package/dist/connectors/telegram/commands/displayModes.js +335 -0
  221. package/dist/connectors/telegram/commands/displayModes.js.map +1 -0
  222. package/dist/connectors/telegram/commands/modelProviders.d.ts +95 -0
  223. package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
  224. package/dist/connectors/telegram/commands/modelProviders.js +841 -0
  225. package/dist/connectors/telegram/commands/modelProviders.js.map +1 -0
  226. package/dist/connectors/telegram/commands/reminders.d.ts +54 -0
  227. package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -0
  228. package/dist/connectors/telegram/commands/reminders.js +624 -0
  229. package/dist/connectors/telegram/commands/reminders.js.map +1 -0
  230. package/dist/connectors/telegram/fileIntake.d.ts +166 -0
  231. package/dist/connectors/telegram/fileIntake.d.ts.map +1 -0
  232. package/dist/connectors/telegram/fileIntake.js +304 -0
  233. package/dist/connectors/telegram/fileIntake.js.map +1 -0
  234. package/dist/connectors/telegram/fileSendGateway.d.ts +57 -0
  235. package/dist/connectors/telegram/fileSendGateway.d.ts.map +1 -0
  236. package/dist/connectors/telegram/fileSendGateway.js +221 -0
  237. package/dist/connectors/telegram/fileSendGateway.js.map +1 -0
  238. package/dist/connectors/telegram/foreignKeyFallbacks.d.ts +52 -0
  239. package/dist/connectors/telegram/foreignKeyFallbacks.d.ts.map +1 -0
  240. package/dist/connectors/telegram/foreignKeyFallbacks.js +71 -0
  241. package/dist/connectors/telegram/foreignKeyFallbacks.js.map +1 -0
  242. package/dist/connectors/telegram/inbound.d.ts +131 -0
  243. package/dist/connectors/telegram/inbound.d.ts.map +1 -0
  244. package/dist/connectors/telegram/inbound.js +278 -0
  245. package/dist/connectors/telegram/inbound.js.map +1 -0
  246. package/dist/connectors/telegram/languagePicker.d.ts +32 -0
  247. package/dist/connectors/telegram/languagePicker.d.ts.map +1 -0
  248. package/dist/connectors/telegram/languagePicker.js +55 -0
  249. package/dist/connectors/telegram/languagePicker.js.map +1 -0
  250. package/dist/connectors/telegram/messageSplit.d.ts +62 -0
  251. package/dist/connectors/telegram/messageSplit.d.ts.map +1 -0
  252. package/dist/connectors/telegram/messageSplit.js +119 -0
  253. package/dist/connectors/telegram/messageSplit.js.map +1 -0
  254. package/dist/connectors/telegram/outbound.d.ts +62 -0
  255. package/dist/connectors/telegram/outbound.d.ts.map +1 -0
  256. package/dist/connectors/telegram/outbound.js +116 -0
  257. package/dist/connectors/telegram/outbound.js.map +1 -0
  258. package/dist/connectors/telegram/output/createOutputTransport.d.ts +34 -0
  259. package/dist/connectors/telegram/output/createOutputTransport.d.ts.map +1 -0
  260. package/dist/connectors/telegram/output/createOutputTransport.js +77 -0
  261. package/dist/connectors/telegram/output/createOutputTransport.js.map +1 -0
  262. package/dist/connectors/telegram/output/dmOutputTransport.d.ts +47 -0
  263. package/dist/connectors/telegram/output/dmOutputTransport.d.ts.map +1 -0
  264. package/dist/connectors/telegram/output/dmOutputTransport.js +412 -0
  265. package/dist/connectors/telegram/output/dmOutputTransport.js.map +1 -0
  266. package/dist/connectors/telegram/outputBacklogGlue.d.ts +38 -0
  267. package/dist/connectors/telegram/outputBacklogGlue.d.ts.map +1 -0
  268. package/dist/connectors/telegram/outputBacklogGlue.js +49 -0
  269. package/dist/connectors/telegram/outputBacklogGlue.js.map +1 -0
  270. package/dist/connectors/telegram/outputFlushPlan.d.ts +93 -0
  271. package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -0
  272. package/dist/connectors/telegram/outputFlushPlan.js +120 -0
  273. package/dist/connectors/telegram/outputFlushPlan.js.map +1 -0
  274. package/dist/connectors/telegram/questionKeyboards.d.ts +30 -0
  275. package/dist/connectors/telegram/questionKeyboards.d.ts.map +1 -0
  276. package/dist/connectors/telegram/questionKeyboards.js +37 -0
  277. package/dist/connectors/telegram/questionKeyboards.js.map +1 -0
  278. package/dist/connectors/telegram/renderAgentHtml.d.ts +27 -0
  279. package/dist/connectors/telegram/renderAgentHtml.d.ts.map +1 -0
  280. package/dist/connectors/telegram/renderAgentHtml.js +97 -0
  281. package/dist/connectors/telegram/renderAgentHtml.js.map +1 -0
  282. package/dist/connectors/telegram/sessionKeyCodec.d.ts +28 -0
  283. package/dist/connectors/telegram/sessionKeyCodec.d.ts.map +1 -0
  284. package/dist/connectors/telegram/sessionKeyCodec.js +107 -0
  285. package/dist/connectors/telegram/sessionKeyCodec.js.map +1 -0
  286. package/dist/connectors/telegram/telegramCallGuard.d.ts +19 -0
  287. package/dist/connectors/telegram/telegramCallGuard.d.ts.map +1 -0
  288. package/dist/connectors/telegram/telegramCallGuard.js +35 -0
  289. package/dist/connectors/telegram/telegramCallGuard.js.map +1 -0
  290. package/dist/connectors/telegram/timezonePicker.d.ts +85 -0
  291. package/dist/connectors/telegram/timezonePicker.d.ts.map +1 -0
  292. package/dist/connectors/telegram/timezonePicker.js +142 -0
  293. package/dist/connectors/telegram/timezonePicker.js.map +1 -0
  294. package/dist/connectors/telegram/updateDispatcher.d.ts +85 -0
  295. package/dist/connectors/telegram/updateDispatcher.d.ts.map +1 -0
  296. package/dist/connectors/telegram/updateDispatcher.js +159 -0
  297. package/dist/connectors/telegram/updateDispatcher.js.map +1 -0
  298. package/dist/connectors/test/connector.d.ts +52 -0
  299. package/dist/connectors/test/connector.d.ts.map +1 -0
  300. package/dist/connectors/test/connector.js +143 -0
  301. package/dist/connectors/test/connector.js.map +1 -0
  302. package/dist/connectors/test/sessionKeyCodec.d.ts +25 -0
  303. package/dist/connectors/test/sessionKeyCodec.d.ts.map +1 -0
  304. package/dist/connectors/test/sessionKeyCodec.js +50 -0
  305. package/dist/connectors/test/sessionKeyCodec.js.map +1 -0
  306. package/dist/diagLog.d.ts +6 -0
  307. package/dist/diagLog.d.ts.map +1 -0
  308. package/dist/diagLog.js +58 -0
  309. package/dist/diagLog.js.map +1 -0
  310. package/dist/effortLevels.d.ts +68 -0
  311. package/dist/effortLevels.d.ts.map +1 -0
  312. package/dist/effortLevels.js +114 -0
  313. package/dist/effortLevels.js.map +1 -0
  314. package/dist/folderName.d.ts +42 -0
  315. package/dist/folderName.d.ts.map +1 -0
  316. package/dist/folderName.js +51 -0
  317. package/dist/folderName.js.map +1 -0
  318. package/dist/i18n/de.d.ts +2 -0
  319. package/dist/i18n/de.d.ts.map +1 -0
  320. package/dist/i18n/de.js +537 -0
  321. package/dist/i18n/de.js.map +1 -0
  322. package/dist/i18n/en.d.ts +7 -0
  323. package/dist/i18n/en.d.ts.map +1 -0
  324. package/dist/i18n/en.js +566 -0
  325. package/dist/i18n/en.js.map +1 -0
  326. package/dist/i18n/es.d.ts +2 -0
  327. package/dist/i18n/es.d.ts.map +1 -0
  328. package/dist/i18n/es.js +537 -0
  329. package/dist/i18n/es.js.map +1 -0
  330. package/dist/i18n/fr.d.ts +2 -0
  331. package/dist/i18n/fr.d.ts.map +1 -0
  332. package/dist/i18n/fr.js +537 -0
  333. package/dist/i18n/fr.js.map +1 -0
  334. package/dist/i18n/hi.d.ts +2 -0
  335. package/dist/i18n/hi.d.ts.map +1 -0
  336. package/dist/i18n/hi.js +537 -0
  337. package/dist/i18n/hi.js.map +1 -0
  338. package/dist/i18n/ja.d.ts +2 -0
  339. package/dist/i18n/ja.d.ts.map +1 -0
  340. package/dist/i18n/ja.js +537 -0
  341. package/dist/i18n/ja.js.map +1 -0
  342. package/dist/i18n/ka.d.ts +2 -0
  343. package/dist/i18n/ka.d.ts.map +1 -0
  344. package/dist/i18n/ka.js +537 -0
  345. package/dist/i18n/ka.js.map +1 -0
  346. package/dist/i18n/pt.d.ts +2 -0
  347. package/dist/i18n/pt.d.ts.map +1 -0
  348. package/dist/i18n/pt.js +537 -0
  349. package/dist/i18n/pt.js.map +1 -0
  350. package/dist/i18n/ru.d.ts +6 -0
  351. package/dist/i18n/ru.d.ts.map +1 -0
  352. package/dist/i18n/ru.js +540 -0
  353. package/dist/i18n/ru.js.map +1 -0
  354. package/dist/i18n/uk.d.ts +8 -0
  355. package/dist/i18n/uk.d.ts.map +1 -0
  356. package/dist/i18n/uk.js +542 -0
  357. package/dist/i18n/uk.js.map +1 -0
  358. package/dist/i18n/uz.d.ts +2 -0
  359. package/dist/i18n/uz.d.ts.map +1 -0
  360. package/dist/i18n/uz.js +537 -0
  361. package/dist/i18n/uz.js.map +1 -0
  362. package/dist/i18n/zh.d.ts +2 -0
  363. package/dist/i18n/zh.d.ts.map +1 -0
  364. package/dist/i18n/zh.js +537 -0
  365. package/dist/i18n/zh.js.map +1 -0
  366. package/dist/i18n.d.ts +115 -0
  367. package/dist/i18n.d.ts.map +1 -0
  368. package/dist/i18n.js +233 -0
  369. package/dist/i18n.js.map +1 -0
  370. package/dist/index.d.ts +3 -0
  371. package/dist/index.d.ts.map +1 -0
  372. package/dist/index.js +10 -0
  373. package/dist/index.js.map +1 -0
  374. package/dist/installManager.d.ts +99 -0
  375. package/dist/installManager.d.ts.map +1 -0
  376. package/dist/installManager.js +943 -0
  377. package/dist/installManager.js.map +1 -0
  378. package/dist/instanceLock.d.ts +161 -0
  379. package/dist/instanceLock.d.ts.map +1 -0
  380. package/dist/instanceLock.js +388 -0
  381. package/dist/instanceLock.js.map +1 -0
  382. package/dist/mcpConfig.d.ts +76 -0
  383. package/dist/mcpConfig.d.ts.map +1 -0
  384. package/dist/mcpConfig.js +270 -0
  385. package/dist/mcpConfig.js.map +1 -0
  386. package/dist/openCodeOpenQuestion.d.ts +44 -0
  387. package/dist/openCodeOpenQuestion.d.ts.map +1 -0
  388. package/dist/openCodeOpenQuestion.js +64 -0
  389. package/dist/openCodeOpenQuestion.js.map +1 -0
  390. package/dist/openCodeQuestionFlow.d.ts +105 -0
  391. package/dist/openCodeQuestionFlow.d.ts.map +1 -0
  392. package/dist/openCodeQuestionFlow.js +143 -0
  393. package/dist/openCodeQuestionFlow.js.map +1 -0
  394. package/dist/openCodeSessionRouting.d.ts +133 -0
  395. package/dist/openCodeSessionRouting.d.ts.map +1 -0
  396. package/dist/openCodeSessionRouting.js +253 -0
  397. package/dist/openCodeSessionRouting.js.map +1 -0
  398. package/dist/openCodeSessionTitle.d.ts +50 -0
  399. package/dist/openCodeSessionTitle.d.ts.map +1 -0
  400. package/dist/openCodeSessionTitle.js +84 -0
  401. package/dist/openCodeSessionTitle.js.map +1 -0
  402. package/dist/outputTrace.d.ts +108 -0
  403. package/dist/outputTrace.d.ts.map +1 -0
  404. package/dist/outputTrace.js +430 -0
  405. package/dist/outputTrace.js.map +1 -0
  406. package/dist/pendingQuestionRepost.d.ts +47 -0
  407. package/dist/pendingQuestionRepost.d.ts.map +1 -0
  408. package/dist/pendingQuestionRepost.js +29 -0
  409. package/dist/pendingQuestionRepost.js.map +1 -0
  410. package/dist/pinnedStatus.d.ts +52 -0
  411. package/dist/pinnedStatus.d.ts.map +1 -0
  412. package/dist/pinnedStatus.js +36 -0
  413. package/dist/pinnedStatus.js.map +1 -0
  414. package/dist/platform/answerSink.d.ts +93 -0
  415. package/dist/platform/answerSink.d.ts.map +1 -0
  416. package/dist/platform/answerSink.js +31 -0
  417. package/dist/platform/answerSink.js.map +1 -0
  418. package/dist/platform/capabilityFallback.d.ts +39 -0
  419. package/dist/platform/capabilityFallback.d.ts.map +1 -0
  420. package/dist/platform/capabilityFallback.js +55 -0
  421. package/dist/platform/capabilityFallback.js.map +1 -0
  422. package/dist/platform/commandRouter.d.ts +51 -0
  423. package/dist/platform/commandRouter.d.ts.map +1 -0
  424. package/dist/platform/commandRouter.js +53 -0
  425. package/dist/platform/commandRouter.js.map +1 -0
  426. package/dist/platform/connectorSet.d.ts +39 -0
  427. package/dist/platform/connectorSet.d.ts.map +1 -0
  428. package/dist/platform/connectorSet.js +55 -0
  429. package/dist/platform/connectorSet.js.map +1 -0
  430. package/dist/platform/inbound.d.ts +147 -0
  431. package/dist/platform/inbound.d.ts.map +1 -0
  432. package/dist/platform/inbound.js +18 -0
  433. package/dist/platform/inbound.js.map +1 -0
  434. package/dist/platform/outbound.d.ts +225 -0
  435. package/dist/platform/outbound.d.ts.map +1 -0
  436. package/dist/platform/outbound.js +30 -0
  437. package/dist/platform/outbound.js.map +1 -0
  438. package/dist/platform/unservedStateGuard.d.ts +27 -0
  439. package/dist/platform/unservedStateGuard.d.ts.map +1 -0
  440. package/dist/platform/unservedStateGuard.js +42 -0
  441. package/dist/platform/unservedStateGuard.js.map +1 -0
  442. package/dist/postToSession.d.ts +94 -0
  443. package/dist/postToSession.d.ts.map +1 -0
  444. package/dist/postToSession.js +56 -0
  445. package/dist/postToSession.js.map +1 -0
  446. package/dist/progressLine.d.ts +180 -0
  447. package/dist/progressLine.d.ts.map +1 -0
  448. package/dist/progressLine.js +293 -0
  449. package/dist/progressLine.js.map +1 -0
  450. package/dist/rateLimiter.d.ts +246 -0
  451. package/dist/rateLimiter.d.ts.map +1 -0
  452. package/dist/rateLimiter.js +555 -0
  453. package/dist/rateLimiter.js.map +1 -0
  454. package/dist/requests/answerRequest.d.ts +57 -0
  455. package/dist/requests/answerRequest.d.ts.map +1 -0
  456. package/dist/requests/answerRequest.js +96 -0
  457. package/dist/requests/answerRequest.js.map +1 -0
  458. package/dist/requests/answerTail.d.ts +83 -0
  459. package/dist/requests/answerTail.d.ts.map +1 -0
  460. package/dist/requests/answerTail.js +102 -0
  461. package/dist/requests/answerTail.js.map +1 -0
  462. package/dist/requests/limitWaitAnswer.d.ts +87 -0
  463. package/dist/requests/limitWaitAnswer.d.ts.map +1 -0
  464. package/dist/requests/limitWaitAnswer.js +83 -0
  465. package/dist/requests/limitWaitAnswer.js.map +1 -0
  466. package/dist/requests/requestGroup.d.ts +44 -0
  467. package/dist/requests/requestGroup.d.ts.map +1 -0
  468. package/dist/requests/requestGroup.js +63 -0
  469. package/dist/requests/requestGroup.js.map +1 -0
  470. package/dist/requests/requestHeader.d.ts +70 -0
  471. package/dist/requests/requestHeader.d.ts.map +1 -0
  472. package/dist/requests/requestHeader.js +83 -0
  473. package/dist/requests/requestHeader.js.map +1 -0
  474. package/dist/requests/requestLedger.d.ts +217 -0
  475. package/dist/requests/requestLedger.d.ts.map +1 -0
  476. package/dist/requests/requestLedger.js +468 -0
  477. package/dist/requests/requestLedger.js.map +1 -0
  478. package/dist/requests/sessionTurnProbe.d.ts +52 -0
  479. package/dist/requests/sessionTurnProbe.d.ts.map +1 -0
  480. package/dist/requests/sessionTurnProbe.js +29 -0
  481. package/dist/requests/sessionTurnProbe.js.map +1 -0
  482. package/dist/requests/types.d.ts +181 -0
  483. package/dist/requests/types.d.ts.map +1 -0
  484. package/dist/requests/types.js +9 -0
  485. package/dist/requests/types.js.map +1 -0
  486. package/dist/requests/wakeUpEngine.d.ts +160 -0
  487. package/dist/requests/wakeUpEngine.d.ts.map +1 -0
  488. package/dist/requests/wakeUpEngine.js +399 -0
  489. package/dist/requests/wakeUpEngine.js.map +1 -0
  490. package/dist/requests/wakeUpRules.d.ts +151 -0
  491. package/dist/requests/wakeUpRules.d.ts.map +1 -0
  492. package/dist/requests/wakeUpRules.js +167 -0
  493. package/dist/requests/wakeUpRules.js.map +1 -0
  494. package/dist/resumeContext.d.ts +87 -0
  495. package/dist/resumeContext.d.ts.map +1 -0
  496. package/dist/resumeContext.js +114 -0
  497. package/dist/resumeContext.js.map +1 -0
  498. package/dist/scheduler/checkRun.d.ts +95 -0
  499. package/dist/scheduler/checkRun.d.ts.map +1 -0
  500. package/dist/scheduler/checkRun.js +172 -0
  501. package/dist/scheduler/checkRun.js.map +1 -0
  502. package/dist/scheduler/delivery.d.ts +99 -0
  503. package/dist/scheduler/delivery.d.ts.map +1 -0
  504. package/dist/scheduler/delivery.js +212 -0
  505. package/dist/scheduler/delivery.js.map +1 -0
  506. package/dist/scheduler/deliveryKind.d.ts +29 -0
  507. package/dist/scheduler/deliveryKind.d.ts.map +1 -0
  508. package/dist/scheduler/deliveryKind.js +39 -0
  509. package/dist/scheduler/deliveryKind.js.map +1 -0
  510. package/dist/scheduler/directoryThreads.d.ts +19 -0
  511. package/dist/scheduler/directoryThreads.d.ts.map +1 -0
  512. package/dist/scheduler/directoryThreads.js +28 -0
  513. package/dist/scheduler/directoryThreads.js.map +1 -0
  514. package/dist/scheduler/engine.d.ts +77 -0
  515. package/dist/scheduler/engine.d.ts.map +1 -0
  516. package/dist/scheduler/engine.js +337 -0
  517. package/dist/scheduler/engine.js.map +1 -0
  518. package/dist/scheduler/injection.d.ts +102 -0
  519. package/dist/scheduler/injection.d.ts.map +1 -0
  520. package/dist/scheduler/injection.js +122 -0
  521. package/dist/scheduler/injection.js.map +1 -0
  522. package/dist/scheduler/mcpBoot.d.ts +65 -0
  523. package/dist/scheduler/mcpBoot.d.ts.map +1 -0
  524. package/dist/scheduler/mcpBoot.js +60 -0
  525. package/dist/scheduler/mcpBoot.js.map +1 -0
  526. package/dist/scheduler/mcpSurface.d.ts +355 -0
  527. package/dist/scheduler/mcpSurface.d.ts.map +1 -0
  528. package/dist/scheduler/mcpSurface.js +1257 -0
  529. package/dist/scheduler/mcpSurface.js.map +1 -0
  530. package/dist/scheduler/rebindResume.d.ts +27 -0
  531. package/dist/scheduler/rebindResume.d.ts.map +1 -0
  532. package/dist/scheduler/rebindResume.js +17 -0
  533. package/dist/scheduler/rebindResume.js.map +1 -0
  534. package/dist/scheduler/recurrence.d.ts +58 -0
  535. package/dist/scheduler/recurrence.d.ts.map +1 -0
  536. package/dist/scheduler/recurrence.js +210 -0
  537. package/dist/scheduler/recurrence.js.map +1 -0
  538. package/dist/scheduler/runLedger.d.ts +59 -0
  539. package/dist/scheduler/runLedger.d.ts.map +1 -0
  540. package/dist/scheduler/runLedger.js +54 -0
  541. package/dist/scheduler/runLedger.js.map +1 -0
  542. package/dist/scheduler/store.d.ts +97 -0
  543. package/dist/scheduler/store.d.ts.map +1 -0
  544. package/dist/scheduler/store.js +124 -0
  545. package/dist/scheduler/store.js.map +1 -0
  546. package/dist/scheduler/timezoneRecompute.d.ts +61 -0
  547. package/dist/scheduler/timezoneRecompute.d.ts.map +1 -0
  548. package/dist/scheduler/timezoneRecompute.js +46 -0
  549. package/dist/scheduler/timezoneRecompute.js.map +1 -0
  550. package/dist/scheduler/types.d.ts +139 -0
  551. package/dist/scheduler/types.d.ts.map +1 -0
  552. package/dist/scheduler/types.js +8 -0
  553. package/dist/scheduler/types.js.map +1 -0
  554. package/dist/sendErrorClassifier.d.ts +45 -0
  555. package/dist/sendErrorClassifier.d.ts.map +1 -0
  556. package/dist/sendErrorClassifier.js +65 -0
  557. package/dist/sendErrorClassifier.js.map +1 -0
  558. package/dist/sessionKey.d.ts +136 -0
  559. package/dist/sessionKey.d.ts.map +1 -0
  560. package/dist/sessionKey.js +153 -0
  561. package/dist/sessionKey.js.map +1 -0
  562. package/dist/sessionPick.d.ts +42 -0
  563. package/dist/sessionPick.d.ts.map +1 -0
  564. package/dist/sessionPick.js +39 -0
  565. package/dist/sessionPick.js.map +1 -0
  566. package/dist/shutdown.d.ts +126 -0
  567. package/dist/shutdown.d.ts.map +1 -0
  568. package/dist/shutdown.js +164 -0
  569. package/dist/shutdown.js.map +1 -0
  570. package/dist/startupPromptBuffer.d.ts +85 -0
  571. package/dist/startupPromptBuffer.d.ts.map +1 -0
  572. package/dist/startupPromptBuffer.js +123 -0
  573. package/dist/startupPromptBuffer.js.map +1 -0
  574. package/dist/state.d.ts +1245 -0
  575. package/dist/state.d.ts.map +1 -0
  576. package/dist/state.js +1830 -0
  577. package/dist/state.js.map +1 -0
  578. package/dist/threadContextPreamble.d.ts +89 -0
  579. package/dist/threadContextPreamble.d.ts.map +1 -0
  580. package/dist/threadContextPreamble.js +102 -0
  581. package/dist/threadContextPreamble.js.map +1 -0
  582. package/dist/threadRouting.d.ts +164 -0
  583. package/dist/threadRouting.d.ts.map +1 -0
  584. package/dist/threadRouting.js +182 -0
  585. package/dist/threadRouting.js.map +1 -0
  586. package/dist/types.d.ts +1015 -0
  587. package/dist/types.d.ts.map +1 -0
  588. package/dist/types.js +3 -0
  589. package/dist/types.js.map +1 -0
  590. package/dist/utils/abortableFifo.d.ts +10 -0
  591. package/dist/utils/abortableFifo.d.ts.map +1 -0
  592. package/dist/utils/abortableFifo.js +55 -0
  593. package/dist/utils/abortableFifo.js.map +1 -0
  594. package/dist/utils/adoptedToolList.d.ts +27 -0
  595. package/dist/utils/adoptedToolList.d.ts.map +1 -0
  596. package/dist/utils/adoptedToolList.js +22 -0
  597. package/dist/utils/adoptedToolList.js.map +1 -0
  598. package/dist/utils/agentEnvironment.d.ts +42 -0
  599. package/dist/utils/agentEnvironment.d.ts.map +1 -0
  600. package/dist/utils/agentEnvironment.js +122 -0
  601. package/dist/utils/agentEnvironment.js.map +1 -0
  602. package/dist/utils/ansiClean.d.ts +11 -0
  603. package/dist/utils/ansiClean.d.ts.map +1 -0
  604. package/dist/utils/ansiClean.js +139 -0
  605. package/dist/utils/ansiClean.js.map +1 -0
  606. package/dist/utils/autoContinueOnLimit.d.ts +49 -0
  607. package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
  608. package/dist/utils/autoContinueOnLimit.js +69 -0
  609. package/dist/utils/autoContinueOnLimit.js.map +1 -0
  610. package/dist/utils/canonicalPathContainment.d.ts +7 -0
  611. package/dist/utils/canonicalPathContainment.d.ts.map +1 -0
  612. package/dist/utils/canonicalPathContainment.js +48 -0
  613. package/dist/utils/canonicalPathContainment.js.map +1 -0
  614. package/dist/utils/claudeAuthLogin.d.ts +71 -0
  615. package/dist/utils/claudeAuthLogin.d.ts.map +1 -0
  616. package/dist/utils/claudeAuthLogin.js +93 -0
  617. package/dist/utils/claudeAuthLogin.js.map +1 -0
  618. package/dist/utils/claudeChunkClassifier.d.ts +97 -0
  619. package/dist/utils/claudeChunkClassifier.d.ts.map +1 -0
  620. package/dist/utils/claudeChunkClassifier.js +254 -0
  621. package/dist/utils/claudeChunkClassifier.js.map +1 -0
  622. package/dist/utils/claudeCodeVersion.d.ts +31 -0
  623. package/dist/utils/claudeCodeVersion.d.ts.map +1 -0
  624. package/dist/utils/claudeCodeVersion.js +62 -0
  625. package/dist/utils/claudeCodeVersion.js.map +1 -0
  626. package/dist/utils/claudeCompactHook.d.ts +64 -0
  627. package/dist/utils/claudeCompactHook.d.ts.map +1 -0
  628. package/dist/utils/claudeCompactHook.js +98 -0
  629. package/dist/utils/claudeCompactHook.js.map +1 -0
  630. package/dist/utils/claudeLivenessAction.d.ts +208 -0
  631. package/dist/utils/claudeLivenessAction.d.ts.map +1 -0
  632. package/dist/utils/claudeLivenessAction.js +135 -0
  633. package/dist/utils/claudeLivenessAction.js.map +1 -0
  634. package/dist/utils/claudeMcpHeal.d.ts +92 -0
  635. package/dist/utils/claudeMcpHeal.d.ts.map +1 -0
  636. package/dist/utils/claudeMcpHeal.js +91 -0
  637. package/dist/utils/claudeMcpHeal.js.map +1 -0
  638. package/dist/utils/claudeRelayRouting.d.ts +86 -0
  639. package/dist/utils/claudeRelayRouting.d.ts.map +1 -0
  640. package/dist/utils/claudeRelayRouting.js +159 -0
  641. package/dist/utils/claudeRelayRouting.js.map +1 -0
  642. package/dist/utils/claudeRuntimeInfo.d.ts +26 -0
  643. package/dist/utils/claudeRuntimeInfo.d.ts.map +1 -0
  644. package/dist/utils/claudeRuntimeInfo.js +151 -0
  645. package/dist/utils/claudeRuntimeInfo.js.map +1 -0
  646. package/dist/utils/claudeScrapeShapes.d.ts +256 -0
  647. package/dist/utils/claudeScrapeShapes.d.ts.map +1 -0
  648. package/dist/utils/claudeScrapeShapes.js +290 -0
  649. package/dist/utils/claudeScrapeShapes.js.map +1 -0
  650. package/dist/utils/claudeSessionTitle.d.ts +27 -0
  651. package/dist/utils/claudeSessionTitle.d.ts.map +1 -0
  652. package/dist/utils/claudeSessionTitle.js +90 -0
  653. package/dist/utils/claudeSessionTitle.js.map +1 -0
  654. package/dist/utils/claudeStreamJson.d.ts +202 -0
  655. package/dist/utils/claudeStreamJson.d.ts.map +1 -0
  656. package/dist/utils/claudeStreamJson.js +351 -0
  657. package/dist/utils/claudeStreamJson.js.map +1 -0
  658. package/dist/utils/claudeSubagentTail.d.ts +93 -0
  659. package/dist/utils/claudeSubagentTail.d.ts.map +1 -0
  660. package/dist/utils/claudeSubagentTail.js +136 -0
  661. package/dist/utils/claudeSubagentTail.js.map +1 -0
  662. package/dist/utils/clearThreadOutputQueues.d.ts +43 -0
  663. package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -0
  664. package/dist/utils/clearThreadOutputQueues.js +39 -0
  665. package/dist/utils/clearThreadOutputQueues.js.map +1 -0
  666. package/dist/utils/compactCommandRoute.d.ts +45 -0
  667. package/dist/utils/compactCommandRoute.d.ts.map +1 -0
  668. package/dist/utils/compactCommandRoute.js +36 -0
  669. package/dist/utils/compactCommandRoute.js.map +1 -0
  670. package/dist/utils/compactOnIdle.d.ts +329 -0
  671. package/dist/utils/compactOnIdle.d.ts.map +1 -0
  672. package/dist/utils/compactOnIdle.js +379 -0
  673. package/dist/utils/compactOnIdle.js.map +1 -0
  674. package/dist/utils/consoleFileTap.d.ts +51 -0
  675. package/dist/utils/consoleFileTap.d.ts.map +1 -0
  676. package/dist/utils/consoleFileTap.js +86 -0
  677. package/dist/utils/consoleFileTap.js.map +1 -0
  678. package/dist/utils/displayVerbosity.d.ts +44 -0
  679. package/dist/utils/displayVerbosity.d.ts.map +1 -0
  680. package/dist/utils/displayVerbosity.js +75 -0
  681. package/dist/utils/displayVerbosity.js.map +1 -0
  682. package/dist/utils/download.d.ts +72 -0
  683. package/dist/utils/download.d.ts.map +1 -0
  684. package/dist/utils/download.js +216 -0
  685. package/dist/utils/download.js.map +1 -0
  686. package/dist/utils/draftFinalize.d.ts +110 -0
  687. package/dist/utils/draftFinalize.d.ts.map +1 -0
  688. package/dist/utils/draftFinalize.js +100 -0
  689. package/dist/utils/draftFinalize.js.map +1 -0
  690. package/dist/utils/draftId.d.ts +36 -0
  691. package/dist/utils/draftId.d.ts.map +1 -0
  692. package/dist/utils/draftId.js +46 -0
  693. package/dist/utils/draftId.js.map +1 -0
  694. package/dist/utils/draftPacer.d.ts +72 -0
  695. package/dist/utils/draftPacer.d.ts.map +1 -0
  696. package/dist/utils/draftPacer.js +53 -0
  697. package/dist/utils/draftPacer.js.map +1 -0
  698. package/dist/utils/effortStartupKeystroke.d.ts +20 -0
  699. package/dist/utils/effortStartupKeystroke.d.ts.map +1 -0
  700. package/dist/utils/effortStartupKeystroke.js +28 -0
  701. package/dist/utils/effortStartupKeystroke.js.map +1 -0
  702. package/dist/utils/ensureSessionPlan.d.ts +70 -0
  703. package/dist/utils/ensureSessionPlan.d.ts.map +1 -0
  704. package/dist/utils/ensureSessionPlan.js +54 -0
  705. package/dist/utils/ensureSessionPlan.js.map +1 -0
  706. package/dist/utils/fileSendPlan.d.ts +217 -0
  707. package/dist/utils/fileSendPlan.d.ts.map +1 -0
  708. package/dist/utils/fileSendPlan.js +291 -0
  709. package/dist/utils/fileSendPlan.js.map +1 -0
  710. package/dist/utils/fileSendService.d.ts +94 -0
  711. package/dist/utils/fileSendService.d.ts.map +1 -0
  712. package/dist/utils/fileSendService.js +387 -0
  713. package/dist/utils/fileSendService.js.map +1 -0
  714. package/dist/utils/groupFinalizePlan.d.ts +38 -0
  715. package/dist/utils/groupFinalizePlan.d.ts.map +1 -0
  716. package/dist/utils/groupFinalizePlan.js +35 -0
  717. package/dist/utils/groupFinalizePlan.js.map +1 -0
  718. package/dist/utils/identicalOutputGuard.d.ts +83 -0
  719. package/dist/utils/identicalOutputGuard.d.ts.map +1 -0
  720. package/dist/utils/identicalOutputGuard.js +99 -0
  721. package/dist/utils/identicalOutputGuard.js.map +1 -0
  722. package/dist/utils/isoTimestamp.d.ts +16 -0
  723. package/dist/utils/isoTimestamp.d.ts.map +1 -0
  724. package/dist/utils/isoTimestamp.js +34 -0
  725. package/dist/utils/isoTimestamp.js.map +1 -0
  726. package/dist/utils/jsonStreamBusyWatchdog.d.ts +130 -0
  727. package/dist/utils/jsonStreamBusyWatchdog.d.ts.map +1 -0
  728. package/dist/utils/jsonStreamBusyWatchdog.js +122 -0
  729. package/dist/utils/jsonStreamBusyWatchdog.js.map +1 -0
  730. package/dist/utils/jsonStreamHost.d.ts +227 -0
  731. package/dist/utils/jsonStreamHost.d.ts.map +1 -0
  732. package/dist/utils/jsonStreamHost.js +417 -0
  733. package/dist/utils/jsonStreamHost.js.map +1 -0
  734. package/dist/utils/keyedTransitionQueue.d.ts +18 -0
  735. package/dist/utils/keyedTransitionQueue.d.ts.map +1 -0
  736. package/dist/utils/keyedTransitionQueue.js +34 -0
  737. package/dist/utils/keyedTransitionQueue.js.map +1 -0
  738. package/dist/utils/limitEpisodeRecovery.d.ts +92 -0
  739. package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -0
  740. package/dist/utils/limitEpisodeRecovery.js +133 -0
  741. package/dist/utils/limitEpisodeRecovery.js.map +1 -0
  742. package/dist/utils/limitHeldPromptQueue.d.ts +48 -0
  743. package/dist/utils/limitHeldPromptQueue.d.ts.map +1 -0
  744. package/dist/utils/limitHeldPromptQueue.js +59 -0
  745. package/dist/utils/limitHeldPromptQueue.js.map +1 -0
  746. package/dist/utils/limitHeldPrompts.d.ts +58 -0
  747. package/dist/utils/limitHeldPrompts.d.ts.map +1 -0
  748. package/dist/utils/limitHeldPrompts.js +65 -0
  749. package/dist/utils/limitHeldPrompts.js.map +1 -0
  750. package/dist/utils/linkPreviewSuppression.d.ts +18 -0
  751. package/dist/utils/linkPreviewSuppression.d.ts.map +1 -0
  752. package/dist/utils/linkPreviewSuppression.js +37 -0
  753. package/dist/utils/linkPreviewSuppression.js.map +1 -0
  754. package/dist/utils/localClock.d.ts +15 -0
  755. package/dist/utils/localClock.d.ts.map +1 -0
  756. package/dist/utils/localClock.js +29 -0
  757. package/dist/utils/localClock.js.map +1 -0
  758. package/dist/utils/markdownTableRender.d.ts +83 -0
  759. package/dist/utils/markdownTableRender.d.ts.map +1 -0
  760. package/dist/utils/markdownTableRender.js +298 -0
  761. package/dist/utils/markdownTableRender.js.map +1 -0
  762. package/dist/utils/mediaGroupCollector.d.ts +51 -0
  763. package/dist/utils/mediaGroupCollector.d.ts.map +1 -0
  764. package/dist/utils/mediaGroupCollector.js +90 -0
  765. package/dist/utils/mediaGroupCollector.js.map +1 -0
  766. package/dist/utils/messageSendService.d.ts +136 -0
  767. package/dist/utils/messageSendService.d.ts.map +1 -0
  768. package/dist/utils/messageSendService.js +165 -0
  769. package/dist/utils/messageSendService.js.map +1 -0
  770. package/dist/utils/minutesOverride.d.ts +7 -0
  771. package/dist/utils/minutesOverride.d.ts.map +1 -0
  772. package/dist/utils/minutesOverride.js +16 -0
  773. package/dist/utils/minutesOverride.js.map +1 -0
  774. package/dist/utils/modelPickerPlan.d.ts +119 -0
  775. package/dist/utils/modelPickerPlan.d.ts.map +1 -0
  776. package/dist/utils/modelPickerPlan.js +171 -0
  777. package/dist/utils/modelPickerPlan.js.map +1 -0
  778. package/dist/utils/modelSetReplyDecision.d.ts +67 -0
  779. package/dist/utils/modelSetReplyDecision.d.ts.map +1 -0
  780. package/dist/utils/modelSetReplyDecision.js +27 -0
  781. package/dist/utils/modelSetReplyDecision.js.map +1 -0
  782. package/dist/utils/openCodeAuthLogin.d.ts +181 -0
  783. package/dist/utils/openCodeAuthLogin.d.ts.map +1 -0
  784. package/dist/utils/openCodeAuthLogin.js +393 -0
  785. package/dist/utils/openCodeAuthLogin.js.map +1 -0
  786. package/dist/utils/openCodeCompactPlugin.d.ts +81 -0
  787. package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -0
  788. package/dist/utils/openCodeCompactPlugin.js +146 -0
  789. package/dist/utils/openCodeCompactPlugin.js.map +1 -0
  790. package/dist/utils/openCodeTurnActivity.d.ts +67 -0
  791. package/dist/utils/openCodeTurnActivity.d.ts.map +1 -0
  792. package/dist/utils/openCodeTurnActivity.js +27 -0
  793. package/dist/utils/openCodeTurnActivity.js.map +1 -0
  794. package/dist/utils/outputDebounce.d.ts +24 -0
  795. package/dist/utils/outputDebounce.d.ts.map +1 -0
  796. package/dist/utils/outputDebounce.js +30 -0
  797. package/dist/utils/outputDebounce.js.map +1 -0
  798. package/dist/utils/outputFlushTiming.d.ts +54 -0
  799. package/dist/utils/outputFlushTiming.d.ts.map +1 -0
  800. package/dist/utils/outputFlushTiming.js +48 -0
  801. package/dist/utils/outputFlushTiming.js.map +1 -0
  802. package/dist/utils/paginateList.d.ts +25 -0
  803. package/dist/utils/paginateList.d.ts.map +1 -0
  804. package/dist/utils/paginateList.js +32 -0
  805. package/dist/utils/paginateList.js.map +1 -0
  806. package/dist/utils/paneDiff.d.ts +55 -0
  807. package/dist/utils/paneDiff.d.ts.map +1 -0
  808. package/dist/utils/paneDiff.js +88 -0
  809. package/dist/utils/paneDiff.js.map +1 -0
  810. package/dist/utils/paneResizeGuard.d.ts +69 -0
  811. package/dist/utils/paneResizeGuard.d.ts.map +1 -0
  812. package/dist/utils/paneResizeGuard.js +91 -0
  813. package/dist/utils/paneResizeGuard.js.map +1 -0
  814. package/dist/utils/persistAdapterSessionIds.d.ts +39 -0
  815. package/dist/utils/persistAdapterSessionIds.d.ts.map +1 -0
  816. package/dist/utils/persistAdapterSessionIds.js +28 -0
  817. package/dist/utils/persistAdapterSessionIds.js.map +1 -0
  818. package/dist/utils/pinnedBannerSkipDecision.d.ts +44 -0
  819. package/dist/utils/pinnedBannerSkipDecision.d.ts.map +1 -0
  820. package/dist/utils/pinnedBannerSkipDecision.js +20 -0
  821. package/dist/utils/pinnedBannerSkipDecision.js.map +1 -0
  822. package/dist/utils/pollBackoff.d.ts +45 -0
  823. package/dist/utils/pollBackoff.d.ts.map +1 -0
  824. package/dist/utils/pollBackoff.js +44 -0
  825. package/dist/utils/pollBackoff.js.map +1 -0
  826. package/dist/utils/promptDelivery.d.ts +46 -0
  827. package/dist/utils/promptDelivery.d.ts.map +1 -0
  828. package/dist/utils/promptDelivery.js +49 -0
  829. package/dist/utils/promptDelivery.js.map +1 -0
  830. package/dist/utils/providerDisconnectPlan.d.ts +82 -0
  831. package/dist/utils/providerDisconnectPlan.d.ts.map +1 -0
  832. package/dist/utils/providerDisconnectPlan.js +110 -0
  833. package/dist/utils/providerDisconnectPlan.js.map +1 -0
  834. package/dist/utils/rateLimitLog.d.ts +48 -0
  835. package/dist/utils/rateLimitLog.d.ts.map +1 -0
  836. package/dist/utils/rateLimitLog.js +43 -0
  837. package/dist/utils/rateLimitLog.js.map +1 -0
  838. package/dist/utils/recentRelayWindow.d.ts +165 -0
  839. package/dist/utils/recentRelayWindow.d.ts.map +1 -0
  840. package/dist/utils/recentRelayWindow.js +284 -0
  841. package/dist/utils/recentRelayWindow.js.map +1 -0
  842. package/dist/utils/recvPreviewRedaction.d.ts +23 -0
  843. package/dist/utils/recvPreviewRedaction.d.ts.map +1 -0
  844. package/dist/utils/recvPreviewRedaction.js +39 -0
  845. package/dist/utils/recvPreviewRedaction.js.map +1 -0
  846. package/dist/utils/reminderFlow.d.ts +148 -0
  847. package/dist/utils/reminderFlow.d.ts.map +1 -0
  848. package/dist/utils/reminderFlow.js +122 -0
  849. package/dist/utils/reminderFlow.js.map +1 -0
  850. package/dist/utils/reminderScheduleText.d.ts +87 -0
  851. package/dist/utils/reminderScheduleText.d.ts.map +1 -0
  852. package/dist/utils/reminderScheduleText.js +135 -0
  853. package/dist/utils/reminderScheduleText.js.map +1 -0
  854. package/dist/utils/reminderWizard.d.ts +710 -0
  855. package/dist/utils/reminderWizard.d.ts.map +1 -0
  856. package/dist/utils/reminderWizard.js +1164 -0
  857. package/dist/utils/reminderWizard.js.map +1 -0
  858. package/dist/utils/replyQuote.d.ts +111 -0
  859. package/dist/utils/replyQuote.d.ts.map +1 -0
  860. package/dist/utils/replyQuote.js +122 -0
  861. package/dist/utils/replyQuote.js.map +1 -0
  862. package/dist/utils/resolveBinary.d.ts +25 -0
  863. package/dist/utils/resolveBinary.d.ts.map +1 -0
  864. package/dist/utils/resolveBinary.js +99 -0
  865. package/dist/utils/resolveBinary.js.map +1 -0
  866. package/dist/utils/retryAfterHeader.d.ts +7 -0
  867. package/dist/utils/retryAfterHeader.d.ts.map +1 -0
  868. package/dist/utils/retryAfterHeader.js +17 -0
  869. package/dist/utils/retryAfterHeader.js.map +1 -0
  870. package/dist/utils/rotatingJsonlFile.d.ts +40 -0
  871. package/dist/utils/rotatingJsonlFile.d.ts.map +1 -0
  872. package/dist/utils/rotatingJsonlFile.js +106 -0
  873. package/dist/utils/rotatingJsonlFile.js.map +1 -0
  874. package/dist/utils/rotatingLogFile.d.ts +25 -0
  875. package/dist/utils/rotatingLogFile.d.ts.map +1 -0
  876. package/dist/utils/rotatingLogFile.js +74 -0
  877. package/dist/utils/rotatingLogFile.js.map +1 -0
  878. package/dist/utils/sendRateTracker.d.ts +59 -0
  879. package/dist/utils/sendRateTracker.d.ts.map +1 -0
  880. package/dist/utils/sendRateTracker.js +144 -0
  881. package/dist/utils/sendRateTracker.js.map +1 -0
  882. package/dist/utils/serialQueue.d.ts +5 -0
  883. package/dist/utils/serialQueue.d.ts.map +1 -0
  884. package/dist/utils/serialQueue.js +14 -0
  885. package/dist/utils/serialQueue.js.map +1 -0
  886. package/dist/utils/sseStreamLifecycle.d.ts +32 -0
  887. package/dist/utils/sseStreamLifecycle.d.ts.map +1 -0
  888. package/dist/utils/sseStreamLifecycle.js +41 -0
  889. package/dist/utils/sseStreamLifecycle.js.map +1 -0
  890. package/dist/utils/startupReadiness.d.ts +119 -0
  891. package/dist/utils/startupReadiness.d.ts.map +1 -0
  892. package/dist/utils/startupReadiness.js +148 -0
  893. package/dist/utils/startupReadiness.js.map +1 -0
  894. package/dist/utils/statusFlushDecision.d.ts +18 -0
  895. package/dist/utils/statusFlushDecision.d.ts.map +1 -0
  896. package/dist/utils/statusFlushDecision.js +53 -0
  897. package/dist/utils/statusFlushDecision.js.map +1 -0
  898. package/dist/utils/subagentRender.d.ts +52 -0
  899. package/dist/utils/subagentRender.d.ts.map +1 -0
  900. package/dist/utils/subagentRender.js +66 -0
  901. package/dist/utils/subagentRender.js.map +1 -0
  902. package/dist/utils/subagentStatusRender.d.ts +90 -0
  903. package/dist/utils/subagentStatusRender.d.ts.map +1 -0
  904. package/dist/utils/subagentStatusRender.js +124 -0
  905. package/dist/utils/subagentStatusRender.js.map +1 -0
  906. package/dist/utils/telegramError.d.ts +2 -0
  907. package/dist/utils/telegramError.d.ts.map +1 -0
  908. package/dist/utils/telegramError.js +16 -0
  909. package/dist/utils/telegramError.js.map +1 -0
  910. package/dist/utils/terminalEmitPlan.d.ts +74 -0
  911. package/dist/utils/terminalEmitPlan.d.ts.map +1 -0
  912. package/dist/utils/terminalEmitPlan.js +86 -0
  913. package/dist/utils/terminalEmitPlan.js.map +1 -0
  914. package/dist/utils/thinkingRender.d.ts +74 -0
  915. package/dist/utils/thinkingRender.d.ts.map +1 -0
  916. package/dist/utils/thinkingRender.js +85 -0
  917. package/dist/utils/thinkingRender.js.map +1 -0
  918. package/dist/utils/threadStatusReport.d.ts +55 -0
  919. package/dist/utils/threadStatusReport.d.ts.map +1 -0
  920. package/dist/utils/threadStatusReport.js +65 -0
  921. package/dist/utils/threadStatusReport.js.map +1 -0
  922. package/dist/utils/threadToggle.d.ts +29 -0
  923. package/dist/utils/threadToggle.d.ts.map +1 -0
  924. package/dist/utils/threadToggle.js +39 -0
  925. package/dist/utils/threadToggle.js.map +1 -0
  926. package/dist/utils/timezone.d.ts +125 -0
  927. package/dist/utils/timezone.d.ts.map +1 -0
  928. package/dist/utils/timezone.js +278 -0
  929. package/dist/utils/timezone.js.map +1 -0
  930. package/dist/utils/tmuxExec.d.ts +61 -0
  931. package/dist/utils/tmuxExec.d.ts.map +1 -0
  932. package/dist/utils/tmuxExec.js +109 -0
  933. package/dist/utils/tmuxExec.js.map +1 -0
  934. package/dist/utils/tmuxSessionName.d.ts +34 -0
  935. package/dist/utils/tmuxSessionName.d.ts.map +1 -0
  936. package/dist/utils/tmuxSessionName.js +51 -0
  937. package/dist/utils/tmuxSessionName.js.map +1 -0
  938. package/dist/utils/toolResultRender.d.ts +61 -0
  939. package/dist/utils/toolResultRender.d.ts.map +1 -0
  940. package/dist/utils/toolResultRender.js +62 -0
  941. package/dist/utils/toolResultRender.js.map +1 -0
  942. package/dist/utils/topicRequest.d.ts +61 -0
  943. package/dist/utils/topicRequest.d.ts.map +1 -0
  944. package/dist/utils/topicRequest.js +68 -0
  945. package/dist/utils/topicRequest.js.map +1 -0
  946. package/dist/utils/topicView.d.ts +55 -0
  947. package/dist/utils/topicView.d.ts.map +1 -0
  948. package/dist/utils/topicView.js +56 -0
  949. package/dist/utils/topicView.js.map +1 -0
  950. package/dist/utils/transcribeAudio.d.ts +89 -0
  951. package/dist/utils/transcribeAudio.d.ts.map +1 -0
  952. package/dist/utils/transcribeAudio.js +249 -0
  953. package/dist/utils/transcribeAudio.js.map +1 -0
  954. package/dist/utils/transientFrames.d.ts +52 -0
  955. package/dist/utils/transientFrames.d.ts.map +1 -0
  956. package/dist/utils/transientFrames.js +41 -0
  957. package/dist/utils/transientFrames.js.map +1 -0
  958. package/dist/utils/typingActive.d.ts +35 -0
  959. package/dist/utils/typingActive.d.ts.map +1 -0
  960. package/dist/utils/typingActive.js +22 -0
  961. package/dist/utils/typingActive.js.map +1 -0
  962. package/dist/utils/typingLoopBackstop.d.ts +64 -0
  963. package/dist/utils/typingLoopBackstop.d.ts.map +1 -0
  964. package/dist/utils/typingLoopBackstop.js +68 -0
  965. package/dist/utils/typingLoopBackstop.js.map +1 -0
  966. package/dist/utils/verbosityRender.d.ts +18 -0
  967. package/dist/utils/verbosityRender.d.ts.map +1 -0
  968. package/dist/utils/verbosityRender.js +17 -0
  969. package/dist/utils/verbosityRender.js.map +1 -0
  970. package/dist/utils/wedgeRecovery.d.ts +57 -0
  971. package/dist/utils/wedgeRecovery.d.ts.map +1 -0
  972. package/dist/utils/wedgeRecovery.js +24 -0
  973. package/dist/utils/wedgeRecovery.js.map +1 -0
  974. package/dist/utils.d.ts +30 -0
  975. package/dist/utils.d.ts.map +1 -0
  976. package/dist/utils.js +61 -0
  977. package/dist/utils.js.map +1 -0
  978. package/dist/validation.d.ts +113 -0
  979. package/dist/validation.d.ts.map +1 -0
  980. package/dist/validation.js +226 -0
  981. package/dist/validation.js.map +1 -0
  982. package/dist/voiceQueue.d.ts +7 -0
  983. package/dist/voiceQueue.d.ts.map +1 -0
  984. package/dist/voiceQueue.js +33 -0
  985. package/dist/voiceQueue.js.map +1 -0
  986. package/examples/.env.example +17 -0
  987. package/examples/docker-compose.yml +36 -0
  988. package/package.json +83 -4
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.maxDiscreteMessages = void 0;
4
+ exports.createSendMessagesToThread = createSendMessagesToThread;
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Upper bound on how many discrete messages one call may deliver. A per-item
8
+ * news digest is ~30–40 messages; 50 leaves headroom while bounding a runaway
9
+ * call (each message is separately rate-paced, so a large batch also floods the
10
+ * topic with notifications).
11
+ */
12
+ exports.maxDiscreteMessages = 50;
13
+ /** Trim a value and report whether anything non-blank remains. */
14
+ function getNonBlank(value) {
15
+ if (value === undefined)
16
+ return undefined;
17
+ return value.trim().length > 0 ? value : undefined;
18
+ }
19
+ /**
20
+ * @description Classify one raw batch item. A plain non-empty string is a text
21
+ * message; a blank string is skipped (a stray separator never posts an empty
22
+ * bubble). An object with a non-blank `path` is an attachment send (its `text`
23
+ * becomes the caption when non-blank); an object with only text is a text
24
+ * message; an object with neither is a fatal validation error (the agent sent
25
+ * an empty item).
26
+ */
27
+ function normalizeDiscreteMessageItem(item) {
28
+ if (typeof item === 'string') {
29
+ return item.trim().length === 0 ? { kind: 'skip' } : { kind: 'text', text: item };
30
+ }
31
+ const path = getNonBlank(item.path);
32
+ const text = getNonBlank(item.text);
33
+ if (path !== undefined) {
34
+ return {
35
+ kind: 'file',
36
+ path,
37
+ ...(text !== undefined ? { caption: text } : {}),
38
+ ...(item.asFile !== undefined ? { asFile: item.asFile } : {}),
39
+ };
40
+ }
41
+ if (text !== undefined)
42
+ return { kind: 'text', text };
43
+ return { kind: 'invalid', error: 'each message item must have a non-empty text or path' };
44
+ }
45
+ /** Pluralised "N message(s)" for the human summary. */
46
+ function formatMessageCount(count) {
47
+ return `${count} message${count === 1 ? '' : 's'}`;
48
+ }
49
+ /**
50
+ * @description The graceful-cancellation result. Naming what ALREADY landed is
51
+ * load-bearing: without it the agent's natural next move is to re-send the whole
52
+ * batch, and the user sees the delivered items twice.
53
+ */
54
+ function buildCancelledResult(landed) {
55
+ return { ok: false, error: `cancelled after delivering ${formatMessageCount(landed)}` };
56
+ }
57
+ /**
58
+ * @description Build the discrete-message sender. Each item is delivered as its
59
+ * OWN message, preserving order: a text item is split (defensively) into
60
+ * Telegram-sized chunks and each chunk sent separately; an attachment item goes
61
+ * through the injected file-send pipeline as a single path (text → caption).
62
+ * Cancellation is checked between items (coarse — a chunk already dispatched to
63
+ * the pacer still lands) and is ALSO caught when it is raised from inside an
64
+ * in-flight attachment send: `sendFiles` rejects on abort rather than returning,
65
+ * and letting that escape hid how many messages had already landed (the agent's
66
+ * natural retry then posted them twice).
67
+ *
68
+ * Items are validated up front (an all-empty object → error, nothing sent) so
69
+ * the service mirrors the MCP schema's all-or-nothing rejection. Failure is NOT
70
+ * swallowed: if every send failed the result is an ERROR (with any attachment
71
+ * errors named), so the agent knows nothing reached the topic instead of reading
72
+ * a false "Delivered 0" success; a partial failure stays `ok` but says how many
73
+ * landed. An attachment whose delivery outcome is unknown terminates the batch
74
+ * with a `deliveryUnknown` result so the agent does not blindly retry (mirrors
75
+ * `send_file_to_user`).
76
+ */
77
+ function createSendMessagesToThread(deps) {
78
+ return async (threadKey, { messages, authorizedWorkDir, signal }) => {
79
+ const normalized = [];
80
+ for (const rawItem of messages) {
81
+ const item = normalizeDiscreteMessageItem(rawItem);
82
+ if (item.kind === 'invalid')
83
+ return { ok: false, error: item.error };
84
+ normalized.push(item);
85
+ }
86
+ const resolved = deps.resolveTarget(threadKey);
87
+ if (!resolved.ok)
88
+ return { ok: false, error: resolved.error };
89
+ const { target } = resolved;
90
+ let attempted = 0;
91
+ let landed = 0;
92
+ const sentMessageIds = [];
93
+ const attachmentErrors = [];
94
+ for (const item of normalized) {
95
+ if (signal?.aborted)
96
+ return buildCancelledResult(landed);
97
+ if (item.kind === 'skip')
98
+ continue;
99
+ if (item.kind === 'file') {
100
+ attempted += 1;
101
+ let fileResult;
102
+ try {
103
+ fileResult = await deps.sendFiles(threadKey, {
104
+ paths: [item.path],
105
+ ...(item.caption !== undefined ? { caption: item.caption } : {}),
106
+ ...(item.asFile !== undefined ? { asFile: item.asFile } : {}),
107
+ ...(authorizedWorkDir !== undefined ? { authorizedWorkDir } : {}),
108
+ signal,
109
+ });
110
+ }
111
+ catch (error) {
112
+ // Unlike the between-items check, `sendFiles` REJECTS on abort (it
113
+ // rethrows `getAbortError`) rather than returning — so a batch
114
+ // cancelled mid-upload used to let the raw abort escape the whole
115
+ // service, hiding how many messages had already landed. Report the
116
+ // SAME structured cancellation instead. A genuine failure still
117
+ // propagates untouched, and an ambiguous delivery is unaffected:
118
+ // `sendFiles` maps that to a RETURNED `deliveryUnknown` result before
119
+ // it ever reaches its abort rethrow, so this catch cannot swallow it.
120
+ if (!(0, utils_1.checkIsAbortError)(error))
121
+ throw error;
122
+ return buildCancelledResult(landed);
123
+ }
124
+ if (fileResult.ok) {
125
+ landed += 1;
126
+ }
127
+ else if ('kind' in fileResult && fileResult.kind === 'deliveryUnknown') {
128
+ return {
129
+ ok: false,
130
+ kind: 'deliveryUnknown',
131
+ error: `Delivered ${formatMessageCount(landed)} before an attachment's delivery ` +
132
+ `outcome became unknown: ${fileResult.error}`,
133
+ };
134
+ }
135
+ else {
136
+ attachmentErrors.push(fileResult.error);
137
+ }
138
+ continue;
139
+ }
140
+ const chunks = deps.splitMessage(item.text, deps.maxMessageLength, deps.measureRendered);
141
+ for (const chunk of chunks) {
142
+ attempted += 1;
143
+ const messageId = await deps.sendChunk(target, chunk, signal);
144
+ if (messageId === null)
145
+ continue;
146
+ landed += 1;
147
+ sentMessageIds.push(messageId);
148
+ }
149
+ }
150
+ const attachmentErrorSuffix = attachmentErrors.length > 0 ? ` Attachment errors: ${attachmentErrors.join('; ')}.` : '';
151
+ if (attempted > 0 && landed === 0) {
152
+ return {
153
+ ok: false,
154
+ error: 'Failed to deliver any message to the topic (Telegram rejected the sends).' +
155
+ attachmentErrorSuffix,
156
+ };
157
+ }
158
+ const summary = (landed === attempted
159
+ ? `Delivered ${formatMessageCount(landed)} to the topic.`
160
+ : `Delivered ${landed} of ${attempted} messages to the topic (${attempted - landed} failed to send).`) +
161
+ attachmentErrorSuffix;
162
+ return { ok: true, summary, undeliveredCount: attempted - landed, sentMessageIds };
163
+ };
164
+ }
165
+ //# sourceMappingURL=messageSendService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageSendService.js","sourceRoot":"","sources":["../../src/utils/messageSendService.ts"],"names":[],"mappings":";;;AA6LA,gEA0FC;AAvRD,oCAA6C;AAwE7C;;;;;GAKG;AACU,QAAA,mBAAmB,GAAG,EAAE,CAAC;AA6CtC,kEAAkE;AAClE,SAAS,WAAW,CAAC,KAAyB;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,4BAA4B,CAAC,IAAyB;IAC7D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpF,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI;YACJ,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACtD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC;AAC5F,CAAC;AAED,uDAAuD;AACvD,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,GAAG,KAAK,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,MAAc;IAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;AAC1F,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,0BAA0B,CACxC,IAAuC;IAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE;QAClE,MAAM,UAAU,GAA6B,EAAE,CAAC;QAChD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YACrE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAE5B,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAS;YAEnC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,SAAS,IAAI,CAAC,CAAC;gBACf,IAAI,UAAmC,CAAC;gBACxC,IAAI,CAAC;oBACH,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;wBAC3C,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;wBAClB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7D,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjE,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,mEAAmE;oBACnE,+DAA+D;oBAC/D,kEAAkE;oBAClE,mEAAmE;oBACnE,gEAAgE;oBAChE,iEAAiE;oBACjE,sEAAsE;oBACtE,sEAAsE;oBACtE,IAAI,CAAC,IAAA,yBAAiB,EAAC,KAAK,CAAC;wBAAE,MAAM,KAAK,CAAC;oBAC3C,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;oBAClB,MAAM,IAAI,CAAC,CAAC;gBACd,CAAC;qBAAM,IAAI,MAAM,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACzE,OAAO;wBACL,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,iBAAiB;wBACvB,KAAK,EACH,aAAa,kBAAkB,CAAC,MAAM,CAAC,mCAAmC;4BAC1E,2BAA2B,UAAU,CAAC,KAAK,EAAE;qBAChD,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC1C,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACzF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,SAAS,IAAI,CAAC,CAAC;gBACf,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC9D,IAAI,SAAS,KAAK,IAAI;oBAAE,SAAS;gBACjC,MAAM,IAAI,CAAC,CAAC;gBACZ,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,MAAM,qBAAqB,GACzB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3F,IAAI,SAAS,GAAG,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EACH,2EAA2E;oBAC3E,qBAAqB;aACxB,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GACX,CAAC,MAAM,KAAK,SAAS;YACnB,CAAC,CAAC,aAAa,kBAAkB,CAAC,MAAM,CAAC,gBAAgB;YACzD,CAAC,CAAC,aAAa,MAAM,OAAO,SAAS,2BAA2B,SAAS,GAAG,MAAM,mBAAmB,CAAC;YACxG,qBAAqB,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,GAAG,MAAM,EAAE,cAAc,EAAE,CAAC;IACrF,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @description A window set in MINUTES through an environment override for a test
3
+ * or live-test instance (`REQUEST_BACKSTOP_MINUTES`, `AGENT_IDLE_MINUTES`). A
4
+ * missing, blank, non-numeric or non-positive value keeps `defaultMs`.
5
+ */
6
+ export declare function getMinutesOverrideMs(overrideMinutes: string | undefined, defaultMs: number): number;
7
+ //# sourceMappingURL=minutesOverride.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minutesOverride.d.ts","sourceRoot":"","sources":["../../src/utils/minutesOverride.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAInG"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMinutesOverrideMs = getMinutesOverrideMs;
4
+ const msPerMinute = 60 * 1000;
5
+ /**
6
+ * @description A window set in MINUTES through an environment override for a test
7
+ * or live-test instance (`REQUEST_BACKSTOP_MINUTES`, `AGENT_IDLE_MINUTES`). A
8
+ * missing, blank, non-numeric or non-positive value keeps `defaultMs`.
9
+ */
10
+ function getMinutesOverrideMs(overrideMinutes, defaultMs) {
11
+ if (overrideMinutes === undefined || overrideMinutes.trim() === '')
12
+ return defaultMs;
13
+ const minutes = Number(overrideMinutes);
14
+ return Number.isFinite(minutes) && minutes > 0 ? minutes * msPerMinute : defaultMs;
15
+ }
16
+ //# sourceMappingURL=minutesOverride.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minutesOverride.js","sourceRoot":"","sources":["../../src/utils/minutesOverride.ts"],"names":[],"mappings":";;AAOA,oDAIC;AAXD,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9B;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,eAAmC,EAAE,SAAiB;IACzF,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACrF,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACrF,CAAC"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @description Pure decision + codec layer behind the two-level `/model`
3
+ * picker (providers → that provider's models, paginated).
4
+ *
5
+ * Why it exists: the old `/model` rendered EVERY model id into one Telegram
6
+ * message. Once the operator's OpenCode gained the `openrouter` provider (367
7
+ * models) that message grew to ~13 000 chars and every `/model` died on
8
+ * Telegram's 4096-char cap ("message is too long") — the topic just went
9
+ * silent. Buttons carry the list now; the message text stays short.
10
+ *
11
+ * Everything here is pure so `bot.ts` stays wiring: grouping, the
12
+ * visible/hidden split, and the callback-id codec are unit-tested without a
13
+ * Telegram surface.
14
+ */
15
+ /**
16
+ * @description Telegram's hard limit on `callback_data` (bytes, not chars).
17
+ * Model ids like `openrouter/anthropic/claude-sonnet-4.5` blow past it, which
18
+ * is why every picker callback carries INDEXES instead of names — the same
19
+ * trick the `connm_<idx>` / `resume_<idx>` callbacks already use.
20
+ */
21
+ export declare const telegramCallbackDataMaxBytes = 64;
22
+ /** Back to the provider level (level 2 → level 1). */
23
+ export declare const modelPickerBackCallback = "mdlback";
24
+ /** Inert label buttons (the "2/5" page pill, the hidden-provider name). */
25
+ export declare const modelPickerNoopCallback = "mdlnoop";
26
+ /** Anchored matchers for `bot.action(...)`, kept beside the builders so the
27
+ * wire format has a single definition. */
28
+ export declare const providerPageCallbackRe: RegExp;
29
+ export declare const modelPickCallbackRe: RegExp;
30
+ export declare const providerHideCallbackRe: RegExp;
31
+ export declare const providerShowCallbackRe: RegExp;
32
+ /** A provider index paired with a page index (level-2 navigation). */
33
+ export interface ProviderPageRef {
34
+ providerIndex: number;
35
+ page: number;
36
+ }
37
+ /** A provider index paired with a model index WITHIN that provider's list. */
38
+ export interface ModelPickRef {
39
+ providerIndex: number;
40
+ modelIndex: number;
41
+ }
42
+ export declare function buildProviderPageCallback(providerIndex: number, page: number): string;
43
+ export declare function buildModelPickCallback(providerIndex: number, modelIndex: number): string;
44
+ export declare function buildProviderHideCallback(providerIndex: number): string;
45
+ export declare function buildProviderShowCallback(providerIndex: number): string;
46
+ export declare function parseProviderPageCallback(callbackData: string): ProviderPageRef | null;
47
+ export declare function parseModelPickCallback(callbackData: string): ModelPickRef | null;
48
+ export declare function parseProviderHideCallback(callbackData: string): number | null;
49
+ export declare function parseProviderShowCallback(callbackData: string): number | null;
50
+ /** Whether a callback id fits Telegram's 64-BYTE `callback_data` budget. */
51
+ export declare function checkIsCallbackDataWithinLimit(callbackData: string): boolean;
52
+ /**
53
+ * @description Group model ids by the provider segment before the first `/`.
54
+ *
55
+ * Ids WITHOUT a `/` land under `fallbackProvider` — the Claude backends report
56
+ * bare aliases (`sonnet`, `opus`, `haiku`), and the old slash-only grouping
57
+ * dropped them entirely, so `/model` on a Claude topic printed a header and an
58
+ * EMPTY list. The fallback is the adapter's own label.
59
+ *
60
+ * Insertion order is preserved for both providers and their models so the
61
+ * indexes the callback ids carry stay stable for a given catalog.
62
+ */
63
+ export declare function groupModelsByProvider(models: readonly string[], fallbackProvider: string): Map<string, string[]>;
64
+ /**
65
+ * @description Label a model carries inside its provider's page — the id with
66
+ * the redundant `<provider>/` prefix stripped. A slash-less id (Claude alias
67
+ * grouped under the adapter label) is shown whole.
68
+ */
69
+ export declare function getModelShortLabel(modelId: string, provider: string): string;
70
+ /**
71
+ * @description Whether the picker needs its provider level at all.
72
+ *
73
+ * A catalog with a single offered provider and nothing hidden (the Claude
74
+ * backends: one fallback group of aliases) would make level 1 a one-button
75
+ * detour, so the picker opens straight on that provider's models. As soon as
76
+ * something is hidden the level is needed again — the unhide buttons live
77
+ * there and are otherwise unreachable.
78
+ */
79
+ export declare function checkHasProviderLevel(visibleProviderCount: number, hiddenProviderCount: number): boolean;
80
+ /**
81
+ * @description A model catalog split the way the picker consumes it: grouped by
82
+ * provider, plus the offered/hidden partition.
83
+ */
84
+ export interface ModelCatalog {
85
+ /** Provider → its model ids, catalog order. */
86
+ byProvider: Map<string, string[]>;
87
+ /** Every provider in catalog order — the index space the callbacks carry. */
88
+ providers: string[];
89
+ visibleProviders: string[];
90
+ hiddenProviders: string[];
91
+ }
92
+ /**
93
+ * @description Assemble the picker's catalog from a raw model list. Pure — the
94
+ * bot's `getModelCatalog` only adds the adapter fetch and the persisted
95
+ * hidden-provider read around it.
96
+ */
97
+ export declare function buildModelCatalog(models: readonly string[], fallbackProvider: string, hiddenProviders: readonly string[]): ModelCatalog;
98
+ export interface ProviderVisibility {
99
+ /** Providers offered in the picker, in catalog order. */
100
+ visible: string[];
101
+ /** Providers the operator hid, in catalog order. */
102
+ hidden: string[];
103
+ }
104
+ /**
105
+ * @description Split the catalog's providers into offered vs hidden.
106
+ *
107
+ * Hiding is bot-side and GLOBAL (persisted in `state.json`): it is the only
108
+ * lever that works for providers OpenCode enables from an environment variable
109
+ * (`openrouter` ← `OPENROUTER_API_KEY`), which `DELETE /auth/:id` cannot remove.
110
+ * A hidden provider is omitted from the pick list only — an explicit
111
+ * `/model <provider/model>` still resolves it, so hiding never breaks a saved
112
+ * model pref.
113
+ *
114
+ * Hidden entries no longer present in the catalog are ignored rather than
115
+ * reported: a stale name from a disconnected provider must not render a
116
+ * button that resolves to nothing.
117
+ */
118
+ export declare function getProviderVisibility(allProviders: readonly string[], hiddenProviders: readonly string[]): ProviderVisibility;
119
+ //# sourceMappingURL=modelPickerPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelPickerPlan.d.ts","sourceRoot":"","sources":["../../src/utils/modelPickerPlan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAO/C,sDAAsD;AACtD,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD;2CAC2C;AAC3C,eAAO,MAAM,sBAAsB,QAAuB,CAAC;AAC3D,eAAO,MAAM,mBAAmB,QAAsB,CAAC;AACvD,eAAO,MAAM,sBAAsB,QAAoB,CAAC;AACxD,eAAO,MAAM,sBAAsB,QAAoB,CAAC;AAExD,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErF;AAED,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAItF;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIhF;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7E;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7E;AAED,4EAA4E;AAC5E,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,gBAAgB,EAAE,MAAM,GACvB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAUvB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,oBAAoB,EAAE,MAAM,EAC5B,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAET;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,YAAY,CAKd;AAED,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oDAAoD;IACpD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,kBAAkB,CASpB"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ /**
3
+ * @description Pure decision + codec layer behind the two-level `/model`
4
+ * picker (providers → that provider's models, paginated).
5
+ *
6
+ * Why it exists: the old `/model` rendered EVERY model id into one Telegram
7
+ * message. Once the operator's OpenCode gained the `openrouter` provider (367
8
+ * models) that message grew to ~13 000 chars and every `/model` died on
9
+ * Telegram's 4096-char cap ("message is too long") — the topic just went
10
+ * silent. Buttons carry the list now; the message text stays short.
11
+ *
12
+ * Everything here is pure so `bot.ts` stays wiring: grouping, the
13
+ * visible/hidden split, and the callback-id codec are unit-tested without a
14
+ * Telegram surface.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.providerShowCallbackRe = exports.providerHideCallbackRe = exports.modelPickCallbackRe = exports.providerPageCallbackRe = exports.modelPickerNoopCallback = exports.modelPickerBackCallback = exports.telegramCallbackDataMaxBytes = void 0;
18
+ exports.buildProviderPageCallback = buildProviderPageCallback;
19
+ exports.buildModelPickCallback = buildModelPickCallback;
20
+ exports.buildProviderHideCallback = buildProviderHideCallback;
21
+ exports.buildProviderShowCallback = buildProviderShowCallback;
22
+ exports.parseProviderPageCallback = parseProviderPageCallback;
23
+ exports.parseModelPickCallback = parseModelPickCallback;
24
+ exports.parseProviderHideCallback = parseProviderHideCallback;
25
+ exports.parseProviderShowCallback = parseProviderShowCallback;
26
+ exports.checkIsCallbackDataWithinLimit = checkIsCallbackDataWithinLimit;
27
+ exports.groupModelsByProvider = groupModelsByProvider;
28
+ exports.getModelShortLabel = getModelShortLabel;
29
+ exports.checkHasProviderLevel = checkHasProviderLevel;
30
+ exports.buildModelCatalog = buildModelCatalog;
31
+ exports.getProviderVisibility = getProviderVisibility;
32
+ /**
33
+ * @description Telegram's hard limit on `callback_data` (bytes, not chars).
34
+ * Model ids like `openrouter/anthropic/claude-sonnet-4.5` blow past it, which
35
+ * is why every picker callback carries INDEXES instead of names — the same
36
+ * trick the `connm_<idx>` / `resume_<idx>` callbacks already use.
37
+ */
38
+ exports.telegramCallbackDataMaxBytes = 64;
39
+ const providerPageCallbackPrefix = 'mdlp_';
40
+ const modelPickCallbackPrefix = 'mdl_';
41
+ const providerHideCallbackPrefix = 'mdlhide_';
42
+ const providerShowCallbackPrefix = 'mdlshow_';
43
+ /** Back to the provider level (level 2 → level 1). */
44
+ exports.modelPickerBackCallback = 'mdlback';
45
+ /** Inert label buttons (the "2/5" page pill, the hidden-provider name). */
46
+ exports.modelPickerNoopCallback = 'mdlnoop';
47
+ /** Anchored matchers for `bot.action(...)`, kept beside the builders so the
48
+ * wire format has a single definition. */
49
+ exports.providerPageCallbackRe = /^mdlp_(\d+)_(\d+)$/;
50
+ exports.modelPickCallbackRe = /^mdl_(\d+)_(\d+)$/;
51
+ exports.providerHideCallbackRe = /^mdlhide_(\d+)$/;
52
+ exports.providerShowCallbackRe = /^mdlshow_(\d+)$/;
53
+ function buildProviderPageCallback(providerIndex, page) {
54
+ return `${providerPageCallbackPrefix}${providerIndex}_${page}`;
55
+ }
56
+ function buildModelPickCallback(providerIndex, modelIndex) {
57
+ return `${modelPickCallbackPrefix}${providerIndex}_${modelIndex}`;
58
+ }
59
+ function buildProviderHideCallback(providerIndex) {
60
+ return `${providerHideCallbackPrefix}${providerIndex}`;
61
+ }
62
+ function buildProviderShowCallback(providerIndex) {
63
+ return `${providerShowCallbackPrefix}${providerIndex}`;
64
+ }
65
+ function parseProviderPageCallback(callbackData) {
66
+ const match = exports.providerPageCallbackRe.exec(callbackData);
67
+ if (!match)
68
+ return null;
69
+ return { providerIndex: Number(match[1]), page: Number(match[2]) };
70
+ }
71
+ function parseModelPickCallback(callbackData) {
72
+ const match = exports.modelPickCallbackRe.exec(callbackData);
73
+ if (!match)
74
+ return null;
75
+ return { providerIndex: Number(match[1]), modelIndex: Number(match[2]) };
76
+ }
77
+ function parseProviderHideCallback(callbackData) {
78
+ const match = exports.providerHideCallbackRe.exec(callbackData);
79
+ return match ? Number(match[1]) : null;
80
+ }
81
+ function parseProviderShowCallback(callbackData) {
82
+ const match = exports.providerShowCallbackRe.exec(callbackData);
83
+ return match ? Number(match[1]) : null;
84
+ }
85
+ /** Whether a callback id fits Telegram's 64-BYTE `callback_data` budget. */
86
+ function checkIsCallbackDataWithinLimit(callbackData) {
87
+ return Buffer.byteLength(callbackData, 'utf8') <= exports.telegramCallbackDataMaxBytes;
88
+ }
89
+ /**
90
+ * @description Group model ids by the provider segment before the first `/`.
91
+ *
92
+ * Ids WITHOUT a `/` land under `fallbackProvider` — the Claude backends report
93
+ * bare aliases (`sonnet`, `opus`, `haiku`), and the old slash-only grouping
94
+ * dropped them entirely, so `/model` on a Claude topic printed a header and an
95
+ * EMPTY list. The fallback is the adapter's own label.
96
+ *
97
+ * Insertion order is preserved for both providers and their models so the
98
+ * indexes the callback ids carry stay stable for a given catalog.
99
+ */
100
+ function groupModelsByProvider(models, fallbackProvider) {
101
+ const byProvider = new Map();
102
+ for (const model of models) {
103
+ const slashIndex = model.indexOf('/');
104
+ const provider = slashIndex > 0 ? model.slice(0, slashIndex) : fallbackProvider;
105
+ const providerModels = byProvider.get(provider);
106
+ if (providerModels)
107
+ providerModels.push(model);
108
+ else
109
+ byProvider.set(provider, [model]);
110
+ }
111
+ return byProvider;
112
+ }
113
+ /**
114
+ * @description Label a model carries inside its provider's page — the id with
115
+ * the redundant `<provider>/` prefix stripped. A slash-less id (Claude alias
116
+ * grouped under the adapter label) is shown whole.
117
+ */
118
+ function getModelShortLabel(modelId, provider) {
119
+ const prefix = `${provider}/`;
120
+ return modelId.startsWith(prefix) ? modelId.slice(prefix.length) : modelId;
121
+ }
122
+ /**
123
+ * @description Whether the picker needs its provider level at all.
124
+ *
125
+ * A catalog with a single offered provider and nothing hidden (the Claude
126
+ * backends: one fallback group of aliases) would make level 1 a one-button
127
+ * detour, so the picker opens straight on that provider's models. As soon as
128
+ * something is hidden the level is needed again — the unhide buttons live
129
+ * there and are otherwise unreachable.
130
+ */
131
+ function checkHasProviderLevel(visibleProviderCount, hiddenProviderCount) {
132
+ return visibleProviderCount > 1 || hiddenProviderCount > 0;
133
+ }
134
+ /**
135
+ * @description Assemble the picker's catalog from a raw model list. Pure — the
136
+ * bot's `getModelCatalog` only adds the adapter fetch and the persisted
137
+ * hidden-provider read around it.
138
+ */
139
+ function buildModelCatalog(models, fallbackProvider, hiddenProviders) {
140
+ const byProvider = groupModelsByProvider(models, fallbackProvider);
141
+ const providers = [...byProvider.keys()];
142
+ const { visible, hidden } = getProviderVisibility(providers, hiddenProviders);
143
+ return { byProvider, providers, visibleProviders: visible, hiddenProviders: hidden };
144
+ }
145
+ /**
146
+ * @description Split the catalog's providers into offered vs hidden.
147
+ *
148
+ * Hiding is bot-side and GLOBAL (persisted in `state.json`): it is the only
149
+ * lever that works for providers OpenCode enables from an environment variable
150
+ * (`openrouter` ← `OPENROUTER_API_KEY`), which `DELETE /auth/:id` cannot remove.
151
+ * A hidden provider is omitted from the pick list only — an explicit
152
+ * `/model <provider/model>` still resolves it, so hiding never breaks a saved
153
+ * model pref.
154
+ *
155
+ * Hidden entries no longer present in the catalog are ignored rather than
156
+ * reported: a stale name from a disconnected provider must not render a
157
+ * button that resolves to nothing.
158
+ */
159
+ function getProviderVisibility(allProviders, hiddenProviders) {
160
+ const hiddenSet = new Set(hiddenProviders);
161
+ const visible = [];
162
+ const hidden = [];
163
+ for (const provider of allProviders) {
164
+ if (hiddenSet.has(provider))
165
+ hidden.push(provider);
166
+ else
167
+ visible.push(provider);
168
+ }
169
+ return { visible, hidden };
170
+ }
171
+ //# sourceMappingURL=modelPickerPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelPickerPlan.js","sourceRoot":"","sources":["../../src/utils/modelPickerPlan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @description Pure reply-decision for the four `/model`-set paths (the
3
+ * `/model <num>` and `/model <name>` commands, the text-handler numeric pick,
4
+ * and the `model_<id>` button callback — all through `applyModelSelection` in
5
+ * `connectors/telegram/commands/modelProviders.ts`). All four asked the adapter to
6
+ * set the model and now must build the SAME user-facing reply — so the branchy
7
+ * decision lives here, unit-testable without the Telegraf machinery (same
8
+ * pattern as `statusFlushDecision.ts`).
9
+ *
10
+ * The no-session decision itself now lives in the adapters (OpenCode persists
11
+ * the pref and returns success; Claude refuses with a notice), so this helper
12
+ * is purely about turning the adapter's outcome into a message — it does NOT
13
+ * gate on session state itself.
14
+ *
15
+ * `isActive` only distinguishes the two SUCCESS copies: a live switch
16
+ * (`model.set_success`) vs a pref saved for the next agent start
17
+ * (`model.saved_for_next_start`). BOTH copies come from i18n, so a `translate`
18
+ * callback is injected (callers pass `t`; tests pass a stub) to keep this module
19
+ * free of the i18n import and trivially testable. The live copy used to be a
20
+ * hardcoded English template literal — once the effort hint below was appended
21
+ * to it, a non-English chat would have read an English headline above a
22
+ * translated hint, so it moved into the catalog too.
23
+ *
24
+ * Both success copies carry the SHARED `effort.current_hint` block (the same key
25
+ * the post-start `agent.ready` notice renders), so the level in force and the
26
+ * "/effort to change it" pointer can never drift between the two messages. The
27
+ * caller must resolve `effort` AFTER `setModel` returned: switching to a model
28
+ * that does not offer the current level clears it (see
29
+ * `effort.cleared_on_model_switch`), so a pre-switch read would name a level
30
+ * that no longer applies.
31
+ *
32
+ * @name ModelSetReplyDecision
33
+ * @description
34
+ * - `unsupported` — the adapter has no `setModel`: nothing was changed.
35
+ * - `error` — `setModel` returned a non-null error string.
36
+ * - success (`isOk: true`) — live switch or deferred-to-next-start save.
37
+ */
38
+ export interface ModelSetReplyDecisionInput {
39
+ /** Does the thread's adapter implement `setModel`? */
40
+ hasSetModel: boolean;
41
+ /** Error string returned by `setModel`, or `null` on success. */
42
+ setModelError: string | null;
43
+ /** Is the thread's agent session live right now? */
44
+ isActive: boolean;
45
+ /** Human-facing agent label (e.g. "Claude Code"), for the unsupported copy. */
46
+ adapterLabel: string;
47
+ /** Resolved model label to show on success (current model or the picked id). */
48
+ displayLabel: string;
49
+ /**
50
+ * Reasoning effort in force AFTER the switch, or `null` when the backend has
51
+ * no effort concept (Claude tmux/terminal) — then no effort block is appended.
52
+ */
53
+ effort: string | null;
54
+ }
55
+ export interface ModelSetReplyDecision {
56
+ isOk: boolean;
57
+ message: string;
58
+ }
59
+ /**
60
+ * @description Build the reply for a `/model`-set attempt.
61
+ *
62
+ * @param translate i18n lookup (`t`) — used for both success copies and the
63
+ * shared effort block. The `unsupported` / `error` branches carry no effort
64
+ * hint: nothing was switched, so naming the level would only add noise.
65
+ */
66
+ export declare function getModelSetReplyDecision(input: ModelSetReplyDecisionInput, translate: (code: string, vars?: Record<string, string | number>) => string): ModelSetReplyDecision;
67
+ //# sourceMappingURL=modelSetReplyDecision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelSetReplyDecision.d.ts","sourceRoot":"","sources":["../../src/utils/modelSetReplyDecision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,0BAA0B,EACjC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,GAC1E,qBAAqB,CAevB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getModelSetReplyDecision = getModelSetReplyDecision;
4
+ /**
5
+ * @description Build the reply for a `/model`-set attempt.
6
+ *
7
+ * @param translate i18n lookup (`t`) — used for both success copies and the
8
+ * shared effort block. The `unsupported` / `error` branches carry no effort
9
+ * hint: nothing was switched, so naming the level would only add noise.
10
+ */
11
+ function getModelSetReplyDecision(input, translate) {
12
+ if (!input.hasSetModel) {
13
+ return { isOk: false, message: `Model switching not supported for ${input.adapterLabel}` };
14
+ }
15
+ if (input.setModelError) {
16
+ return { isOk: false, message: `Error: ${input.setModelError}` };
17
+ }
18
+ const effortSuffix = input.effort === null
19
+ ? ''
20
+ : `\n${translate('effort.current_hint', { effort: input.effort })}`;
21
+ const successKey = input.isActive ? 'model.set_success' : 'model.saved_for_next_start';
22
+ return {
23
+ isOk: true,
24
+ message: translate(successKey, { model: input.displayLabel }) + effortSuffix,
25
+ };
26
+ }
27
+ //# sourceMappingURL=modelSetReplyDecision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelSetReplyDecision.js","sourceRoot":"","sources":["../../src/utils/modelSetReplyDecision.ts"],"names":[],"mappings":";;AAmEA,4DAkBC;AAzBD;;;;;;GAMG;AACH,SAAgB,wBAAwB,CACtC,KAAiC,EACjC,SAA2E;IAE3E,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,qCAAqC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;IAC7F,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;IACnE,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,KAAK,IAAI;QACxC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,KAAK,SAAS,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACtE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,4BAA4B,CAAC;IACvF,OAAO;QACL,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,YAAY;KAC7E,CAAC;AACJ,CAAC"}