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,412 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDmOutputTransport = createDmOutputTransport;
4
+ const sessionKey_1 = require("../../../sessionKey");
5
+ const sessionKeyCodec_1 = require("../sessionKeyCodec");
6
+ const draftId_1 = require("../../../utils/draftId");
7
+ const outputFlushPlan_1 = require("../outputFlushPlan");
8
+ const draftPacer_1 = require("../../../utils/draftPacer");
9
+ const draftFinalize_1 = require("../../../utils/draftFinalize");
10
+ const sendErrorClassifier_1 = require("../../../sendErrorClassifier");
11
+ /**
12
+ * @description The DM live-draft output transport — the relocated draft-cursor
13
+ * manager. In DM mode the LIVE phase of a streamed reply is shown as a native
14
+ * Telegram draft (the "bot is typing this message" animation) and FINALIZED to a
15
+ * permanent message at boundaries (idle / overflow / isFinal / new-response /
16
+ * teardown). The draft channel runs OFF the message rate-limiter so a draft 429
17
+ * can never delay a real send; every draft call is best-effort. Both streaming
18
+ * backends use the cursor ({@link DmOutputTransportDeps.checkSupportsDraft}
19
+ * gate): OpenCode marks its continuations, while the Claude scrape adapter emits
20
+ * each poll's prose delta with no meta, so the transport synthesises the
21
+ * continuation flag ({@link getDmDraftContinuation}) — the answer accumulates
22
+ * into ONE draft re-rendered as the full snapshot, with the same boundary set.
23
+ */
24
+ function createDmOutputTransport(deps) {
25
+ const draftStreams = new Map();
26
+ function getDraftStreamState(key) {
27
+ const k = (0, sessionKey_1.keyToString)(key);
28
+ let s = draftStreams.get(k);
29
+ if (!s) {
30
+ s = {
31
+ draftId: 0,
32
+ accumulatedText: '',
33
+ lastSentText: null,
34
+ lastSentAtMs: null,
35
+ backoffUntilMs: 0,
36
+ pacerTimer: null,
37
+ idleFinalizeTimer: null,
38
+ lastFedAtMs: null,
39
+ active: false,
40
+ };
41
+ draftStreams.set(k, s);
42
+ }
43
+ return s;
44
+ }
45
+ /**
46
+ * @description Render the FULL accumulated draft text to HTML. The draft is the
47
+ * live "cursor" holding the entire current reply, so it renders the WHOLE
48
+ * `accumulatedText` — never a tail window. The overflow boundary keeps
49
+ * `accumulatedText` short enough that its render stays under the Telegram cap.
50
+ */
51
+ function renderDraftBody(accumulatedText) {
52
+ return deps.renderAgentHtml(accumulatedText);
53
+ }
54
+ /**
55
+ * @description Rendered-HTML length of `text` — the measure the overflow
56
+ * boundary compares against the cap. A body is sized by its RENDERED length
57
+ * (HTML escaping + tags inflate the source), so the overflow decision must
58
+ * measure the same way `renderDraftBody` / the persist splitter do.
59
+ */
60
+ function measureDraftRenderedLength(text) {
61
+ return deps.renderAgentHtml(text).length;
62
+ }
63
+ /** Clear both per-draft timers (pacer + idle-finalize) without touching state. */
64
+ function clearDraftTimers(draft) {
65
+ if (draft.pacerTimer) {
66
+ clearTimeout(draft.pacerTimer);
67
+ draft.pacerTimer = null;
68
+ }
69
+ if (draft.idleFinalizeTimer) {
70
+ clearTimeout(draft.idleFinalizeTimer);
71
+ draft.idleFinalizeTimer = null;
72
+ }
73
+ }
74
+ /**
75
+ * @description Fire ONE draft update for the thread's current accumulated text,
76
+ * reusing the turn's stable draft id. Best-effort: a 429 arms the draft-channel
77
+ * backoff (read from `retry_after` when present, else {@link
78
+ * DRAFT_DEFAULT_BACKOFF_MS}) and re-arms the pacer; any other failure is logged
79
+ * and dropped. Never throws, never touches the message rate-limiter.
80
+ */
81
+ async function sendDraftNow(key, draft) {
82
+ const text = renderDraftBody(draft.accumulatedText);
83
+ // The cursor invariant keeps `accumulatedText` under the cap; an over-cap
84
+ // render is the TRANSIENT pre-spill state at an overflow feed (the overflow
85
+ // boundary splits it into permanent messages on the same tick). Sending it
86
+ // would only earn `MESSAGE_TOO_LONG`, so skip — the spill carries the content.
87
+ if (text.length > deps.maxMessageLength)
88
+ return;
89
+ const payload = {
90
+ chat_id: (0, sessionKeyCodec_1.getTelegramChatId)(key),
91
+ draft_id: draft.draftId,
92
+ text,
93
+ parse_mode: 'HTML',
94
+ };
95
+ // Mirror `buildSendExtra`'s General handling: omit `message_thread_id` for the
96
+ // DM General thread (`DM_GENERAL_THREAD_ID = 0`).
97
+ if (!deps.checkIsGeneral(key))
98
+ payload.message_thread_id = (0, sessionKeyCodec_1.getTelegramThreadId)(key);
99
+ // Record what we are ABOUT to show + when, before the await, so a concurrent
100
+ // feed paces against this attempt (and a failure below only adjusts backoff).
101
+ draft.lastSentText = draft.accumulatedText;
102
+ draft.lastSentAtMs = Date.now();
103
+ try {
104
+ await deps.callSendMessageDraft('sendMessageDraft', payload);
105
+ }
106
+ catch (e) {
107
+ const code = (0, sendErrorClassifier_1.checkIsApiError)(e) ? (0, sendErrorClassifier_1.getErrorCode)(e) : undefined;
108
+ if (code === 429) {
109
+ const retryAfterSec = (0, sendErrorClassifier_1.checkIsApiError)(e) ? (0, sendErrorClassifier_1.getErrorRetryAfterSeconds)(e) : undefined;
110
+ const backoffMs = retryAfterSec ? retryAfterSec * 1000 : draftPacer_1.DRAFT_DEFAULT_BACKOFF_MS;
111
+ draft.backoffUntilMs = Date.now() + backoffMs;
112
+ console.warn(`[draft] ${(0, sessionKey_1.keyToString)(key)} draft 429 — backing off ${backoffMs}ms`);
113
+ armDraftPacerTimer(key, draft);
114
+ return;
115
+ }
116
+ console.warn(`[draft] ${(0, sessionKey_1.keyToString)(key)} draft update failed (best-effort, ignored):`, e instanceof Error ? e.message : e);
117
+ }
118
+ }
119
+ /**
120
+ * @description Arm (replacing any existing) the draft pacer timer. It fires
121
+ * after the soonest the pacer could next `send`: the later of the draft-channel
122
+ * backoff remainder and the min-interval remainder since the last send, then
123
+ * re-runs the pacer. The draft keepalive is gone (DM streaming v2): a draft is
124
+ * either updated within the idle window or FINALIZED at the idle boundary, so it
125
+ * never needs to survive the ~30s native ephemerality.
126
+ */
127
+ function armDraftPacerTimer(key, draft) {
128
+ if (draft.pacerTimer)
129
+ clearTimeout(draft.pacerTimer);
130
+ const now = Date.now();
131
+ const backoffRemainder = Math.max(0, draft.backoffUntilMs - now);
132
+ const intervalRemainder = draft.lastSentAtMs === null
133
+ ? 0
134
+ : Math.max(0, draft.lastSentAtMs + draftPacer_1.DRAFT_MIN_INTERVAL_MS - now);
135
+ // The pacer can only `send` once both the backoff and the interval clear.
136
+ const delay = Math.max(backoffRemainder, intervalRemainder);
137
+ draft.pacerTimer = setTimeout(() => {
138
+ draft.pacerTimer = null;
139
+ void runDraftPacer(key);
140
+ }, Math.max(delay, 0));
141
+ draft.pacerTimer.unref?.();
142
+ }
143
+ /**
144
+ * @description Re-evaluate the pacer for the thread's current accumulated text
145
+ * and act: `send` fires a draft now; `skip`/`defer` re-arm the timer. No-op once
146
+ * the turn is inactive (a teardown / finalize cleared it).
147
+ */
148
+ async function runDraftPacer(key) {
149
+ const draft = draftStreams.get((0, sessionKey_1.keyToString)(key));
150
+ if (!draft || !draft.active)
151
+ return;
152
+ const now = Date.now();
153
+ const action = (0, draftPacer_1.getDraftPaceAction)({
154
+ nextText: draft.accumulatedText,
155
+ lastSentText: draft.lastSentText,
156
+ nowMs: now,
157
+ lastSentAtMs: draft.lastSentAtMs,
158
+ minIntervalMs: draftPacer_1.DRAFT_MIN_INTERVAL_MS,
159
+ backoffUntilMs: draft.backoffUntilMs,
160
+ });
161
+ if (action === 'send') {
162
+ await sendDraftNow(key, draft);
163
+ return;
164
+ }
165
+ // `skip` / `defer` → re-arm for the remaining interval / backoff.
166
+ armDraftPacerTimer(key, draft);
167
+ }
168
+ /**
169
+ * @description Begin a fresh draft turn: allocate a new stable draft id (so this
170
+ * response animates separately from the previous one), reset the accumulator and
171
+ * pacing/idle state, and mark active. Called when a new response begins (a
172
+ * non-continuation output, or a forced new-message break) — the previous turn,
173
+ * if any, was finalized to a permanent message first.
174
+ *
175
+ * Opening the turn CONSUMES the `needsNewMessage` signal: the fresh draft IS the
176
+ * new message, so subsequent continuation tails extend it instead of being
177
+ * mis-read as another new response (in DM the draft path replaces the persist
178
+ * path that used to clear this flag on send).
179
+ */
180
+ function startDraftTurn(key) {
181
+ const draft = getDraftStreamState(key);
182
+ clearDraftTimers(draft);
183
+ draft.draftId = (0, draftId_1.nextDraftId)(draft.draftId);
184
+ draft.accumulatedText = '';
185
+ draft.lastSentText = null;
186
+ draft.lastSentAtMs = null;
187
+ draft.lastFedAtMs = null;
188
+ draft.backoffUntilMs = 0;
189
+ draft.active = true;
190
+ deps.getThreadMessageState(key).needsNewMessage = false;
191
+ }
192
+ /**
193
+ * @description Reset a draft turn to fully idle: clear timers + accumulator +
194
+ * pacing state and mark inactive. The shared tail of `finalizeDraft` (after the
195
+ * permanent message is sent) and of a defensive teardown.
196
+ */
197
+ function resetDraftState(draft) {
198
+ clearDraftTimers(draft);
199
+ draft.active = false;
200
+ draft.accumulatedText = '';
201
+ draft.lastSentText = null;
202
+ draft.lastSentAtMs = null;
203
+ draft.lastFedAtMs = null;
204
+ draft.backoffUntilMs = 0;
205
+ }
206
+ /**
207
+ * @description Arm (replacing any existing) the idle-finalize timer. It fires
208
+ * {@link FINALIZE_IDLE_MS} after this feed; if no newer output arrived in that
209
+ * window the accumulated draft is FINALIZED into a permanent message (a pause is
210
+ * a natural message boundary). Re-armed on every feed, so a steadily streaming
211
+ * reply never trips it.
212
+ */
213
+ function armIdleFinalizeTimer(key, draft) {
214
+ if (draft.idleFinalizeTimer)
215
+ clearTimeout(draft.idleFinalizeTimer);
216
+ draft.idleFinalizeTimer = setTimeout(() => {
217
+ draft.idleFinalizeTimer = null;
218
+ const live = draftStreams.get((0, sessionKey_1.keyToString)(key));
219
+ if (!live)
220
+ return;
221
+ if (!(0, draftFinalize_1.checkShouldFinalizeOnIdle)(Date.now(), live.lastFedAtMs, live.active, draftFinalize_1.FINALIZE_IDLE_MS)) {
222
+ return;
223
+ }
224
+ void finalizeDraft(key);
225
+ }, draftFinalize_1.FINALIZE_IDLE_MS);
226
+ draft.idleFinalizeTimer.unref?.();
227
+ }
228
+ /**
229
+ * @description Append `output` to the live draft's accumulator (S5 concat rule —
230
+ * mirroring what the eventual message holds), then pace the draft update and
231
+ * (re)arm the idle-finalize timer. The boundary router (`feedDraft`) calls this
232
+ * for the `append`/`overflow`-remainder/post-`finalizeThenStart` cases.
233
+ * `startsNewParagraph` (Claude only) upgrades a non-continuation join to a
234
+ * blank line so the live preview keeps the pane's paragraph structure.
235
+ */
236
+ function appendToDraft(key, output, isContinuation, startsNewParagraph = false) {
237
+ const draft = getDraftStreamState(key);
238
+ draft.accumulatedText = (0, outputFlushPlan_1.appendPendingOutput)(draft.accumulatedText === '' ? null : draft.accumulatedText, output, isContinuation, startsNewParagraph);
239
+ draft.lastFedAtMs = Date.now();
240
+ void runDraftPacer(key);
241
+ armIdleFinalizeTimer(key, draft);
242
+ }
243
+ /**
244
+ * @description Finalize the active draft into a PERMANENT message and reset the
245
+ * turn. The accumulated text is the live cursor's full body; by construction
246
+ * (overflow boundary) it renders within one Telegram message, but the
247
+ * render-aware splitter is reused defensively so an edge over the cap still
248
+ * lands every chunk. After the message(s) are sent the draft state is fully
249
+ * reset (inactive, empty, timers cleared) so the NEXT output opens a fresh
250
+ * draft → a new message. Best-effort + idempotent: nothing accumulated, or no
251
+ * draft at all, is a no-op.
252
+ */
253
+ async function finalizeDraft(key) {
254
+ const draft = draftStreams.get((0, sessionKey_1.keyToString)(key));
255
+ if (!draft)
256
+ return;
257
+ const text = draft.accumulatedText;
258
+ // Reset BEFORE the await so a concurrent feed opens a clean fresh turn rather
259
+ // than appending onto text we are about to ship as a permanent message.
260
+ resetDraftState(draft);
261
+ if (!text.trim())
262
+ return;
263
+ await deps.sendAgentChunks(key, deps.splitMessage(text, deps.maxMessageLength, measureDraftRenderedLength));
264
+ }
265
+ /**
266
+ * @description Spill an over-cap draft: split the accumulated text, finalize the
267
+ * leading chunk(s) as permanent message(s), and carry the LAST chunk (the
268
+ * remainder still under the cap) into a fresh draft so the live cursor continues
269
+ * below the finalized content. Called by `feedDraft` on the `overflow` boundary.
270
+ */
271
+ async function spillDraftOverflow(key) {
272
+ const draft = getDraftStreamState(key);
273
+ const chunks = deps.splitMessage(draft.accumulatedText, deps.maxMessageLength, measureDraftRenderedLength);
274
+ // A single chunk means the render fit after all (e.g. an un-splittable token
275
+ // the splitter emitted whole) — nothing to spill, just keep streaming it.
276
+ if (chunks.length <= 1) {
277
+ void runDraftPacer(key);
278
+ armIdleFinalizeTimer(key, draft);
279
+ return;
280
+ }
281
+ // Move the cursor to the remainder SYNCHRONOUSLY before shipping the leading
282
+ // chunk(s): `leadingChunks` is captured in a local and a fresh draft holds only
283
+ // the remainder, so a concurrently-dispatched continuation appends onto the
284
+ // remainder draft (never onto text already being shipped). Without this, a feed
285
+ // arriving during the send below would re-read the un-reset accumulator and
286
+ // re-spill the same leading chunk (duplicate send) or be wiped (lost text).
287
+ // Same invariant as feedDraft: no draft-state mutation AFTER the await.
288
+ const leadingChunks = chunks.slice(0, -1);
289
+ const remainder = chunks[chunks.length - 1];
290
+ startDraftTurn(key);
291
+ appendToDraft(key, remainder, /* isContinuation */ true);
292
+ await deps.sendAgentChunks(key, leadingChunks);
293
+ }
294
+ /**
295
+ * @description Feed the live draft with one `output` event and route it through
296
+ * the boundary decision ({@link getDraftFeedAction}):
297
+ *
298
+ * - `finalizeThenStart` — a new response began while a draft was active:
299
+ * finalize the previous draft to a permanent message, then open a fresh turn
300
+ * for this output;
301
+ * - `finalize` — the turn's last frame (`isFinal`): append, then finalize and do
302
+ * NOT reopen a draft;
303
+ * - `overflow` — appending makes the render cross the cap: append, then spill
304
+ * the full chunk(s) to permanent message(s) and continue in a new draft;
305
+ * - `append` — ordinary streaming tail: grow the draft, pace it, re-arm idle.
306
+ *
307
+ * Async because a boundary may send a permanent message; the caller calls it
308
+ * fire-and-forget. Lazily opens a turn if none is active.
309
+ */
310
+ async function feedDraft(key, output, isContinuation, isFinal, startsNewParagraph = false) {
311
+ const draft = getDraftStreamState(key);
312
+ const needsNewMessage = deps.getThreadMessageState(key).needsNewMessage;
313
+ // The text the draft WOULD hold after this output: for a continuation into a
314
+ // live draft it extends the accumulator (so the overflow check measures the
315
+ // real combined length); otherwise the new turn starts from just this output.
316
+ const isAppendingContinuation = draft.active && isContinuation && !needsNewMessage;
317
+ const prospective = isAppendingContinuation
318
+ ? (0, outputFlushPlan_1.appendPendingOutput)(draft.accumulatedText || null, output, true)
319
+ : output;
320
+ const action = (0, draftFinalize_1.getDraftFeedAction)({
321
+ isDraftActive: draft.active,
322
+ isContinuation,
323
+ needsNewMessage,
324
+ isFinal,
325
+ prospectiveRenderedLength: measureDraftRenderedLength(prospective),
326
+ renderedCap: deps.maxMessageLength,
327
+ });
328
+ if (action === 'finalizeThenStart') {
329
+ // SYNCHRONOUS reset→restart, no await between: finalizeDraft snapshots the old
330
+ // text and resets state synchronously BEFORE its network send (which then ships
331
+ // fire-and-forget, ordered by the per-thread send FIFO), so opening the new turn
332
+ // immediately runs in one stack. A concurrently-dispatched output event therefore
333
+ // cannot interleave at an await and be wiped by this startDraftTurn. Invariant for
334
+ // this whole family of functions: no draft-state mutation AFTER an await.
335
+ void finalizeDraft(key);
336
+ startDraftTurn(key);
337
+ appendToDraft(key, output, /* isContinuation */ false);
338
+ return;
339
+ }
340
+ if (!draft.active)
341
+ startDraftTurn(key);
342
+ if (action === 'finalize') {
343
+ appendToDraft(key, output, isContinuation, startsNewParagraph);
344
+ await finalizeDraft(key);
345
+ return;
346
+ }
347
+ appendToDraft(key, output, isContinuation, startsNewParagraph);
348
+ if (action === 'overflow')
349
+ await spillDraftOverflow(key);
350
+ }
351
+ /**
352
+ * @description Route one DM `output` event to its message path:
353
+ * • streaming tail (not a one-shot, not a sub-agent) on a draft-capable
354
+ * adapter → the draft manager is the SOLE output→message path;
355
+ * • complete one-shot (`isComplete`) → finalize any live draft first (keeps
356
+ * order), then post it straight as a permanent message (no draft animation);
357
+ * • otherwise (e.g. Claude DM baseline) → the original `queueOutput` path.
358
+ */
359
+ function deliverOutput(key, output, meta) {
360
+ const isFinal = meta?.isFinal === true;
361
+ const isComplete = meta?.isComplete === true;
362
+ // Claude reports out-of-band that the pane had a paragraph break before this
363
+ // chunk; the draft / baseline join rebuilds the `\n\n` separator so the live
364
+ // preview matches the persisted message (ignored when starting a new turn).
365
+ const startsNewParagraph = meta?.startsNewParagraph === true;
366
+ // For a delta-emitting backend (Claude scrape) the meta carries no
367
+ // continuation, but each poll's prose delta continues the same answer — so
368
+ // accumulate it into the live draft. The real turn boundaries come from
369
+ // `needsNewMessage` / idle / overflow / isFinal, which `feedDraft` honours.
370
+ const isContinuation = (0, draftFinalize_1.getDmDraftContinuation)(meta?.isContinuation === true, deps.checkOutputsDeltas(key));
371
+ if ((0, draftPacer_1.checkShouldStreamAsDraft)(true, meta) && deps.checkSupportsDraft(key)) {
372
+ void feedDraft(key, output, isContinuation, isFinal, startsNewParagraph);
373
+ }
374
+ else if (isComplete) {
375
+ void (async () => {
376
+ await finalizeDraft(key);
377
+ await deps.sendAgentChunks(key, deps.splitMessage(output, deps.maxMessageLength, measureDraftRenderedLength));
378
+ })();
379
+ }
380
+ else {
381
+ deps.queueOutput(key, output, isContinuation, isFinal, isComplete, startsNewParagraph);
382
+ }
383
+ }
384
+ return {
385
+ deliverOutput,
386
+ finalizeInFlight: (key) => finalizeDraft(key),
387
+ disposeThread(key) {
388
+ // `finalizeInFlight` (the teardown convergence point) already finalized any
389
+ // accumulated draft text (synchronously capturing it + clearing the timers);
390
+ // drop the now-reset map entry so it doesn't leak across a rebind.
391
+ draftStreams.delete((0, sessionKey_1.keyToString)(key));
392
+ },
393
+ // Peek WITHOUT creating state: a thread with no draft is trivially not
394
+ // streaming. While `active`, the Claude liveness loop must stay noop so its
395
+ // heartbeat can't insert a status frame between prose deltas (which would
396
+ // trip `needsNewMessage` and finalize the draft mid-answer).
397
+ checkIsStreaming(key) {
398
+ return draftStreams.get((0, sessionKey_1.keyToString)(key))?.active === true;
399
+ },
400
+ // Threads with an active draft turn — the shutdown flush finalizes each so
401
+ // the live draft's accumulated text lands as a permanent message before exit.
402
+ getInFlightThreadKeys() {
403
+ const keys = [];
404
+ for (const [keyStr, draft] of draftStreams) {
405
+ if (draft.active)
406
+ keys.push((0, sessionKey_1.keyFromString)(keyStr));
407
+ }
408
+ return keys;
409
+ },
410
+ };
411
+ }
412
+ //# sourceMappingURL=dmOutputTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dmOutputTransport.js","sourceRoot":"","sources":["../../../../src/connectors/telegram/output/dmOutputTransport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @description Pure backlog-glue for the per-topic send queue (S2b).
3
+ *
4
+ * When a topic BACKS UP — the global 1/2s send pacer (S1) leaves ≥3 messages
5
+ * waiting to send for one topic — a per-2s trickle reads badly. This collapses
6
+ * that backlog into ONE message (frames joined by a blank line, `\n\n`) so the
7
+ * burst drains in a single send. 1–2 pending frames stay separate (snappy).
8
+ *
9
+ * The join+threshold is a pure, Telegraf-free helper (mirrors
10
+ * `utils/outputFlushPlan.ts` / `utils/groupFinalizePlan.ts`): input = ordered
11
+ * pending frames, output = the fewest messages that fit, each ≤ the cap, frames
12
+ * joined by `\n\n`. Per-topic only — cross-topic messages carry distinct
13
+ * `message_thread_id`s and can never merge, so "in one chat" ⇒ "in one topic's
14
+ * queue".
15
+ *
16
+ * Splitting reuses {@link splitMessage}: it already emits the fewest chunks that
17
+ * fit, preferring newline boundaries (so a glued block breaks on the `\n\n`
18
+ * frame boundaries, never mid-line) and honouring the rendered-length cap when a
19
+ * measure is supplied.
20
+ */
21
+ /**
22
+ * @description Glue threshold: a topic's pending-send backlog collapses only at
23
+ * this many frames or more. Below it, frames stay separate for snappiness.
24
+ */
25
+ export declare const backlogGlueThreshold = 3;
26
+ /**
27
+ * @description Collapse a topic's ordered pending frames into the fewest
28
+ * `\n\n`-joined messages when the backlog is ≥ {@link backlogGlueThreshold};
29
+ * otherwise return the frames unchanged (1–2 stay separate).
30
+ *
31
+ * @param frames Ordered pending frames (each already a would-be single message).
32
+ * @param maxLen Per-message source-length cap (default {@link MAX_MESSAGE_LEN}).
33
+ * @param measureRendered Optional rendered-length measure; when supplied the
34
+ * split also keeps each message's RENDERED length within Telegram's cap (same
35
+ * contract as {@link splitMessage}). Omit for plain source-length splitting.
36
+ */
37
+ export declare function glueBacklogFrames(frames: string[], maxLen?: number, measureRendered?: (chunk: string) => number): string[];
38
+ //# sourceMappingURL=outputBacklogGlue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputBacklogGlue.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/outputBacklogGlue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAKtC;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,GAAE,MAAwB,EAChC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAC1C,MAAM,EAAE,CAGV"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * @description Pure backlog-glue for the per-topic send queue (S2b).
4
+ *
5
+ * When a topic BACKS UP — the global 1/2s send pacer (S1) leaves ≥3 messages
6
+ * waiting to send for one topic — a per-2s trickle reads badly. This collapses
7
+ * that backlog into ONE message (frames joined by a blank line, `\n\n`) so the
8
+ * burst drains in a single send. 1–2 pending frames stay separate (snappy).
9
+ *
10
+ * The join+threshold is a pure, Telegraf-free helper (mirrors
11
+ * `utils/outputFlushPlan.ts` / `utils/groupFinalizePlan.ts`): input = ordered
12
+ * pending frames, output = the fewest messages that fit, each ≤ the cap, frames
13
+ * joined by `\n\n`. Per-topic only — cross-topic messages carry distinct
14
+ * `message_thread_id`s and can never merge, so "in one chat" ⇒ "in one topic's
15
+ * queue".
16
+ *
17
+ * Splitting reuses {@link splitMessage}: it already emits the fewest chunks that
18
+ * fit, preferring newline boundaries (so a glued block breaks on the `\n\n`
19
+ * frame boundaries, never mid-line) and honouring the rendered-length cap when a
20
+ * measure is supplied.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.backlogGlueThreshold = void 0;
24
+ exports.glueBacklogFrames = glueBacklogFrames;
25
+ const messageSplit_1 = require("./messageSplit");
26
+ /**
27
+ * @description Glue threshold: a topic's pending-send backlog collapses only at
28
+ * this many frames or more. Below it, frames stay separate for snappiness.
29
+ */
30
+ exports.backlogGlueThreshold = 3;
31
+ /** Blank-line separator between glued frames. */
32
+ const frameSeparator = '\n\n';
33
+ /**
34
+ * @description Collapse a topic's ordered pending frames into the fewest
35
+ * `\n\n`-joined messages when the backlog is ≥ {@link backlogGlueThreshold};
36
+ * otherwise return the frames unchanged (1–2 stay separate).
37
+ *
38
+ * @param frames Ordered pending frames (each already a would-be single message).
39
+ * @param maxLen Per-message source-length cap (default {@link MAX_MESSAGE_LEN}).
40
+ * @param measureRendered Optional rendered-length measure; when supplied the
41
+ * split also keeps each message's RENDERED length within Telegram's cap (same
42
+ * contract as {@link splitMessage}). Omit for plain source-length splitting.
43
+ */
44
+ function glueBacklogFrames(frames, maxLen = messageSplit_1.MAX_MESSAGE_LEN, measureRendered) {
45
+ if (frames.length < exports.backlogGlueThreshold)
46
+ return frames;
47
+ return (0, messageSplit_1.splitMessage)(frames.join(frameSeparator), maxLen, measureRendered);
48
+ }
49
+ //# sourceMappingURL=outputBacklogGlue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputBacklogGlue.js","sourceRoot":"","sources":["../../../src/connectors/telegram/outputBacklogGlue.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAwBH,8CAOC;AA7BD,iDAA+D;AAE/D;;;GAGG;AACU,QAAA,oBAAoB,GAAG,CAAC,CAAC;AAEtC,iDAAiD;AACjD,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAC/B,MAAgB,EAChB,SAAiB,8BAAe,EAChC,eAA2C;IAE3C,IAAI,MAAM,CAAC,MAAM,GAAG,4BAAoB;QAAE,OAAO,MAAM,CAAC;IACxD,OAAO,IAAA,2BAAY,EAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * @description Pure planning logic for flushing agent `output` to Telegram —
3
+ * extracted from `bot.ts` so the streaming-append decision is unit-testable
4
+ * without booting Telegraf.
5
+ *
6
+ * Live repro 2026-06-05: OpenCode emits a long reply
7
+ * as incremental tails, and the bot edited the SAME message with only the
8
+ * newest batch each flush — every edit replaced everything before it, so the
9
+ * user could read only the last tail. The fix: a continuation tail is
10
+ * appended to the text already rendered into the last message and the FULL
11
+ * combined text is re-rendered (also re-pairing markdown tokens that straddle
12
+ * two flushes), spilling into new messages when it outgrows the Telegram cap.
13
+ */
14
+ export interface OutputFlushInput {
15
+ /** The batch of output text to flush (already debounce-coalesced). */
16
+ output: string;
17
+ /** True when `output` continues the text already sent to `lastMessageId`. */
18
+ isContinuation: boolean;
19
+ /** Thread flag: next output must start a new message (user prompt, etc.). */
20
+ needsNewMessage: boolean;
21
+ /** Id of the last agent message in the thread, if editable. */
22
+ lastMessageId: number | null;
23
+ /** Source (pre-render) text currently shown in `lastMessageId`. */
24
+ lastMessageText: string | null;
25
+ }
26
+ export interface OutputFlushPlan {
27
+ /** Telegram-sized chunks covering the full (possibly combined) text. */
28
+ chunks: string[];
29
+ /**
30
+ * True → `chunks[0]` re-edits `lastMessageId` in place (append semantics);
31
+ * remaining chunks send as new messages. False → every chunk sends new.
32
+ */
33
+ shouldEditFirstChunk: boolean;
34
+ }
35
+ /**
36
+ * @description Decide how a flush lands in Telegram. Append-edit is possible
37
+ * only when the batch is a continuation AND the last message is still
38
+ * editable (id + source text known, no forced break since).
39
+ */
40
+ export declare function getOutputFlushPlan(input: OutputFlushInput): OutputFlushPlan;
41
+ /**
42
+ * @description The effective continuation flag the GROUP output path should use
43
+ * for an incoming `output`, accounting for adapters that stream WITHOUT marking
44
+ * continuations (the Claude scrape adapter).
45
+ *
46
+ * OpenCode marks every tail except a response's first with `meta.isContinuation`,
47
+ * so the group edit-in-place path already knows which outputs extend the last
48
+ * message; for it (`outputsDeltas === false`) the meta flag passes through
49
+ * unchanged. The Claude scrape adapter emits each poll's prose delta with NO
50
+ * meta even though every delta CONTINUES the same block — treating those as
51
+ * non-continuations made `getOutputFlushPlan` start a new message per poll flush
52
+ * (the one-message-per-scrape flood, and every re-flowed table width its own
53
+ * message).
54
+ *
55
+ * For a delta-emitting adapter a poll delta is therefore a CONTINUATION (it
56
+ * edits the growing message in place) UNLESS the pane had a real block boundary
57
+ * before it — a blank-line paragraph break or a distinct block (a settled
58
+ * table), both surfaced out-of-band as `startsNewParagraph`. At such a boundary
59
+ * the delta starts a NEW message (the locked boundary rule: a new message begins
60
+ * only at a paragraph/section, a distinct block, or a fresh turn — the last via
61
+ * `needsNewMessage`, which `getOutputFlushPlan` already honours). Unlike the DM
62
+ * cursor (one accumulating draft → everything is a continuation,
63
+ * {@link getDmDraftContinuation}), group renders discrete messages, so a
64
+ * paragraph/block boundary must break the message, not glue onto it.
65
+ */
66
+ export declare function getGroupDeltaContinuation(metaIsContinuation: boolean, outputsDeltas: boolean, startsNewParagraph: boolean): boolean;
67
+ /**
68
+ * @description Coalesce a new output batch into the pending (not yet flushed)
69
+ * buffer. Continuation tails concatenate as-is — they may be cut mid-word, a
70
+ * `\n` would split the word across lines. DISTINCT standalone outputs join with
71
+ * a single `\n` by default, UPGRADED to a BLANK LINE (`\n\n`) only when
72
+ * `startsNewParagraph` is set — the Claude scrape adapter reports out-of-band
73
+ * (`OutboundHints.startsNewParagraph`) when the pane had a real paragraph
74
+ * break before the chunk, so multi-paragraph answers keep their structure while
75
+ * a single wrapped paragraph spanning two polls is NOT split by a blank.
76
+ */
77
+ export declare function appendPendingOutput(pending: string | null, output: string, isContinuation: boolean, startsNewParagraph?: boolean): string;
78
+ /**
79
+ * @description Compute the text that must be RE-ENQUEUED after a flush where one
80
+ * or more chunks failed to send (live incident 2026-06-11, plan
81
+ * `2026-06-11-claude-wide-table-content-loss` S2: `replyChunkWithFallback`
82
+ * returns `null` when a chunk is dropped on a 429 after the rate-limit queue
83
+ * gives up; the buffer was already cleared, so the chunk was permanently lost).
84
+ *
85
+ * `sentCount` is the number of chunks that landed, counting from the FRONT of
86
+ * `chunks` (sends are in order, so a failure stops the run and everything from
87
+ * the first failure onward is un-sent). Returns the rejoined un-sent remainder,
88
+ * or `null` when everything landed. Idempotent: re-flushing the remainder never
89
+ * re-sends a landed chunk because those are excluded here. Pure + exported for
90
+ * unit tests.
91
+ */
92
+ export declare function getUnsentRemainder(chunks: string[], sentCount: number): string | null;
93
+ //# sourceMappingURL=outputFlushPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputFlushPlan.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/outputFlushPlan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,cAAc,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,eAAe,EAAE,OAAO,CAAC;IACzB,+DAA+D;IAC/D,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mEAAmE;IACnE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;OAGG;IACH,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe,CAgB3E;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,yBAAyB,CACvC,kBAAkB,EAAE,OAAO,EAC3B,aAAa,EAAE,OAAO,EACtB,kBAAkB,EAAE,OAAO,GAC1B,OAAO,CAGT;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,OAAO,EACvB,kBAAkB,UAAQ,GACzB,MAAM,CAIR;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKrF"}