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,278 @@
1
+ "use strict";
2
+ /**
3
+ * @description The Telegram connector's inbound half — everything that turns a
4
+ * raw Telegram update into the core's platform-neutral {@link InboundEvent},
5
+ * plus the membership vocabulary the access policy used to import from telegraf
6
+ * directly.
7
+ *
8
+ * Nothing here decides policy. It translates: Telegram's nine `ChatMember`
9
+ * statuses become one `hasElevatedRights` boolean, its six media fields become
10
+ * five {@link AttachmentKind}s, and its `/name@bot args` syntax becomes an
11
+ * {@link InboundCommand} the neutral router can dispatch.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.getPlatformMembers = getPlatformMembers;
15
+ exports.checkShouldInvalidateAdminCache = checkShouldInvalidateAdminCache;
16
+ exports.getNormalizedAttachments = getNormalizedAttachments;
17
+ exports.getTelegramCommand = getTelegramCommand;
18
+ exports.getTelegramReplyQuoteBlock = getTelegramReplyQuoteBlock;
19
+ exports.getInboundEvent = getInboundEvent;
20
+ exports.createTelegramConnectorInbound = createTelegramConnectorInbound;
21
+ const commandRouter_1 = require("../../platform/commandRouter");
22
+ const accessControl_1 = require("../../accessControl");
23
+ const fileIntake_1 = require("./fileIntake");
24
+ const replyQuote_1 = require("../../utils/replyQuote");
25
+ /**
26
+ * @description The two Telegram membership statuses that grant elevated rights
27
+ * in a group. The core never sees these literals — that is the point of the
28
+ * mapping below.
29
+ */
30
+ const elevatedTelegramStatuses = ['creator', 'administrator'];
31
+ /**
32
+ * @description A Telegram chat id as it appears in a {@link SessionKey}'s
33
+ * `space`: an integer, negative for supergroups. Deliberately the same shape the
34
+ * key codec recognises, so a `space` minted by another platform is refused here
35
+ * rather than silently coerced.
36
+ */
37
+ const telegramChatIdPattern = /^-?\d+$/;
38
+ function checkHasElevatedRights(status) {
39
+ return elevatedTelegramStatuses.includes(status);
40
+ }
41
+ /** A Telegram user's best available human-readable name. */
42
+ function getDisplayName(user) {
43
+ const full = [user.first_name, user.last_name].filter(Boolean).join(' ').trim();
44
+ return full || user.username || user.id.toString();
45
+ }
46
+ /**
47
+ * @description Reduce a `getChatAdministrators` response to the core's neutral
48
+ * member shape. Bots are kept but flagged, so the policy's "real person" rule
49
+ * stays in the policy instead of being silently pre-applied here.
50
+ */
51
+ function getPlatformMembers(members) {
52
+ return members.map((member) => ({
53
+ id: member.user.id.toString(),
54
+ displayName: getDisplayName(member.user),
55
+ isBot: member.user.is_bot,
56
+ hasElevatedRights: checkHasElevatedRights(member.status),
57
+ }));
58
+ }
59
+ /**
60
+ * @description Should a `chat_member` status transition invalidate the cached
61
+ * admin set? Only transitions that TOUCH elevated status matter — someone was
62
+ * or becomes creator/administrator (promotion, demotion, an admin leaving).
63
+ * Joins/leaves of regular members can't change the admin set, so they must not
64
+ * trigger a `getChatAdministrators` refetch.
65
+ *
66
+ * Lives in the connector because the decision is expressed entirely in
67
+ * Telegram's status vocabulary.
68
+ */
69
+ function checkShouldInvalidateAdminCache(oldStatus, newStatus) {
70
+ return checkHasElevatedRights(oldStatus) || checkHasElevatedRights(newStatus);
71
+ }
72
+ /**
73
+ * @description Telegram's six ingestible media kinds collapsed onto the core's
74
+ * five. `video_note` (a round video) and `animation` (a GIF) are Telegram UI
75
+ * distinctions with no bearing on how the core treats the bytes.
76
+ */
77
+ const attachmentKindByTelegramKind = {
78
+ photo: 'photo',
79
+ document: 'document',
80
+ video: 'video',
81
+ video_note: 'video',
82
+ animation: 'video',
83
+ audio: 'audio',
84
+ };
85
+ /**
86
+ * @description Normalize a message's media into the core's attachment shape.
87
+ *
88
+ * Voice is handled separately from {@link getTelegramFileMeta} because the bot
89
+ * routes it to transcription rather than file intake — but the core still needs
90
+ * to see that the message CARRIED something, so it is normalized here.
91
+ */
92
+ function getNormalizedAttachments(message) {
93
+ if ('voice' in message && message.voice) {
94
+ return [
95
+ {
96
+ kind: 'voice',
97
+ handle: message.voice.file_id,
98
+ uniqueId: message.voice.file_unique_id,
99
+ fileName: null,
100
+ sizeBytes: message.voice.file_size ?? null,
101
+ caption: 'caption' in message ? (message.caption ?? null) : null,
102
+ },
103
+ ];
104
+ }
105
+ const meta = (0, fileIntake_1.getTelegramFileMeta)(message);
106
+ if (!meta)
107
+ return [];
108
+ return [
109
+ {
110
+ kind: attachmentKindByTelegramKind[meta.kind],
111
+ handle: meta.fileId,
112
+ uniqueId: meta.fileUniqueId,
113
+ fileName: meta.fileName ?? null,
114
+ sizeBytes: meta.fileSize ?? null,
115
+ caption: meta.caption ?? null,
116
+ },
117
+ ];
118
+ }
119
+ /**
120
+ * @description Recognise Telegram's command syntax in a text message.
121
+ *
122
+ * Deliberately mirrors telegraf's own `Composer.command` matching rule so
123
+ * routing commands through the neutral router cannot change which messages
124
+ * count as commands:
125
+ *
126
+ * - the message's FIRST entity must be a `bot_command` at offset 0;
127
+ * - `/name@someone` only counts when `someone` is this bot (case-insensitive),
128
+ * so a command addressed to another bot in the same group falls through;
129
+ * - everything after the command token is the argument remainder.
130
+ *
131
+ * Returns `null` when the message is not a command — the caller then treats it
132
+ * as plain text.
133
+ */
134
+ function getTelegramCommand(message, identity) {
135
+ const commandEntity = message.entities?.[0];
136
+ if (commandEntity?.type !== 'bot_command' || commandEntity.offset > 0)
137
+ return null;
138
+ const [commandPart, addressee] = message.text.slice(0, commandEntity.length).split('@');
139
+ if (!commandPart)
140
+ return null;
141
+ if (addressee && addressee.toLowerCase() !== identity.username?.toLowerCase())
142
+ return null;
143
+ const name = commandPart.slice(1);
144
+ if (!name)
145
+ return null;
146
+ return { name, ...(0, commandRouter_1.splitCommandArgs)(message.text.slice(commandEntity.length)) };
147
+ }
148
+ function getInboundAuthor(user) {
149
+ if (!user)
150
+ return { id: '', displayName: '' };
151
+ return { id: user.id.toString(), displayName: getDisplayName(user) };
152
+ }
153
+ /**
154
+ * @description The file a replied-to message carries, for the quote to name: a
155
+ * voice note (never saved, its transcript went to the agent) or one of the six
156
+ * intake kinds, with the bot's saved copy when `findSavedFile` has one.
157
+ */
158
+ function getReplyQuoteAttachment(replied, findSavedFile) {
159
+ if ('voice' in replied && replied.voice)
160
+ return { kind: 'voice' };
161
+ const meta = (0, fileIntake_1.getTelegramFileMeta)(replied);
162
+ if (!meta)
163
+ return undefined;
164
+ return { kind: meta.kind, fileName: meta.fileName, savedPath: findSavedFile?.(meta) };
165
+ }
166
+ /**
167
+ * @description A message's Telegram REPLY reduced to the structural input of
168
+ * {@link extractReplyQuote}, or `undefined` when the message replies to nothing.
169
+ * Read off the message itself, so a typed text and a voice note reply the same
170
+ * way — the reply is a property of the message, not of its content.
171
+ */
172
+ function getReplyQuoteSource(message, identity, findSavedFile) {
173
+ const replied = 'reply_to_message' in message ? message.reply_to_message : undefined;
174
+ if (!replied)
175
+ return undefined;
176
+ return {
177
+ manualQuoteText: 'quote' in message ? message.quote?.text : undefined,
178
+ replyText: 'text' in replied ? replied.text : undefined,
179
+ replyCaption: 'caption' in replied ? replied.caption : undefined,
180
+ replyAttachment: getReplyQuoteAttachment(replied, findSavedFile),
181
+ replyMessageId: replied.message_id,
182
+ topicRootId: 'message_thread_id' in message ? message.message_thread_id : undefined,
183
+ isServiceMessage: 'forum_topic_created' in replied,
184
+ fromBot: identity.userId !== undefined && replied.from?.id === identity.userId,
185
+ };
186
+ }
187
+ /**
188
+ * @description The replied-to message reduced to what the core renders into the
189
+ * agent prompt.
190
+ *
191
+ * The candidate order and the exclusions (service message, forum topic-root
192
+ * "post in this topic" reply, nothing quotable) are NOT restated here — they are
193
+ * {@link extractReplyQuote}, the same pure helper the reply-quote prompt block
194
+ * already uses. A second, subtly weaker copy is exactly how the highlighted
195
+ * partial quote (`message.quote`) would silently stop winning.
196
+ */
197
+ function getInboundReplyTo(message, identity) {
198
+ const replied = 'reply_to_message' in message ? message.reply_to_message : undefined;
199
+ const quote = (0, replyQuote_1.extractReplyQuote)(getReplyQuoteSource(message, identity));
200
+ if (!replied || !quote)
201
+ return undefined;
202
+ return {
203
+ text: quote.quotedText,
204
+ author: 'from' in replied ? getInboundAuthor(replied.from) : null,
205
+ isFromAssistant: quote.fromBot,
206
+ };
207
+ }
208
+ /**
209
+ * @description The agent-facing reply-quote block for a message the bot forwards
210
+ * as a prompt — a typed text, a voice note whose transcript becomes one, or a
211
+ * file whose announcement does — or `undefined` when there is nothing to fold in
212
+ * (no reply, the topic root, a service message, nothing quotable). One reader for
213
+ * all of them, so a spoken reply or a file sent as a reply carries exactly the
214
+ * block a typed reply to the same message does. A reply TO a file names that
215
+ * file, with the path `findSavedFile` returns for it.
216
+ */
217
+ function getTelegramReplyQuoteBlock(message, identity, findSavedFile) {
218
+ return (0, replyQuote_1.buildReplyQuoteBlock)((0, replyQuote_1.extractReplyQuote)(getReplyQuoteSource(message, identity, findSavedFile))) ?? undefined;
219
+ }
220
+ /**
221
+ * @description Turn one Telegram message into the core's {@link InboundEvent}.
222
+ *
223
+ * `key` is passed in rather than derived here because resolving it needs the
224
+ * surface configuration (owner id, served group, chat mode) that lives in the
225
+ * bot's routing layer, not in this translation step.
226
+ *
227
+ * `raw` overrides what lands on the event's connector-private escape hatch. It
228
+ * exists because the not-yet-relocated command handlers still read Telegram
229
+ * fields off the telegraf CONTEXT rather than off the bare message; once they
230
+ * move into this directory the override goes away and `raw` is the message.
231
+ */
232
+ function getInboundEvent(message, key, identity, raw = message) {
233
+ const text = ('text' in message ? message.text : undefined) ?? '';
234
+ const caption = ('caption' in message ? message.caption : undefined) ?? '';
235
+ const command = 'text' in message ? (getTelegramCommand(message, identity) ?? undefined) : undefined;
236
+ return {
237
+ key,
238
+ author: getInboundAuthor('from' in message ? message.from : undefined),
239
+ text: text || caption,
240
+ attachments: getNormalizedAttachments(message),
241
+ replyTo: getInboundReplyTo(message, identity),
242
+ command,
243
+ raw,
244
+ };
245
+ }
246
+ function createTelegramConnectorInbound(deps) {
247
+ let onEvent = null;
248
+ return {
249
+ async start(handler) {
250
+ onEvent = handler;
251
+ },
252
+ async stop() {
253
+ onEvent = null;
254
+ },
255
+ async listMembersWithElevatedRights(space) {
256
+ // REJECT rather than resolve `[]`: an empty resolve is a SUCCESSFUL fetch
257
+ // to `AdminCache`, which would stamp it fresh and lock every admin out for
258
+ // the whole TTL with no retry and nothing logged. A rejection is the only
259
+ // answer that keeps the last-known set and re-tries on the failure backoff.
260
+ // Matched syntactically, not via `Number`, which turns `""` into a
261
+ // perfectly finite `0` and would hand `getChatAdministrators` a bogus id.
262
+ if (!telegramChatIdPattern.test(space)) {
263
+ throw new Error(`telegram: "${space}" is not a chat id, cannot list its members`);
264
+ }
265
+ const members = getPlatformMembers(await deps.listAdministrators(Number(space)));
266
+ return (0, accessControl_1.getElevatedMemberIds)(members);
267
+ },
268
+ async deliver(message, key, raw) {
269
+ // Dropped rather than queued when inbound is not armed: an event that
270
+ // arrives before `start` (or after `stop`) has no core to route to, and
271
+ // buffering it would replay stale work at an arbitrary later moment.
272
+ if (!onEvent)
273
+ return;
274
+ await onEvent(getInboundEvent(message, key, deps.getIdentity(), raw ?? message));
275
+ },
276
+ };
277
+ }
278
+ //# sourceMappingURL=inbound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../../src/connectors/telegram/inbound.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @description Pure builder for the `/language` inline picker keyboard — the
3
+ * endonym-button replacement for the old plain comma-separated code list. One
4
+ * button per LOCALE labelled with its endonym, two per row, plus a full-width
5
+ * `🌐 Auto` reset row. All 12 locales fit in ONE message (Telegram allows ~100
6
+ * buttons per inline keyboard), so there is no pagination / nav row.
7
+ *
8
+ * Kept pure (no `t()`, no bot state) so the layout — `✓` placement, endonym
9
+ * labels, Auto row — is unit-testable without booting Telegraf. The `🌐 Auto`
10
+ * label is a fixed glyph+word (recognisable across locales), not a translated
11
+ * string, so no per-locale dict key is needed.
12
+ *
13
+ * Wire ids (matched by the `bot.action(...)` handlers — keep in lockstep):
14
+ * `lang_<code>` · `lang_auto`.
15
+ * All are ≤ 64 bytes (`lang_` + a 2-letter code), well inside Telegram's cap.
16
+ */
17
+ import { Markup } from 'telegraf';
18
+ import { type Locale } from '../../i18n';
19
+ /** «Reset to auto» button — clears the chat's explicit locale override. */
20
+ export declare const languageAutoCallback = "lang_auto";
21
+ /**
22
+ * @description Build the single-page `/language` picker (all 12 locales),
23
+ * ordered A→Z by the language's ENGLISH NAME (the buttons themselves stay
24
+ * endonym-labelled). Only the DISPLAY order is sorted here — the global
25
+ * `localeCodes` array stays `en`-first canonical for fallback/parity.
26
+ *
27
+ * @param current the chat's explicit override locale, or `null` for auto (drives
28
+ * which button carries the `✓` — a locale button when set, the `🌐 Auto` row
29
+ * when `null`).
30
+ */
31
+ export declare function buildLanguagePicker(current: Locale | null): Markup.Markup<import("@telegraf/types").InlineKeyboardMarkup>;
32
+ //# sourceMappingURL=languagePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languagePicker.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/languagePicker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAuD,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAE9F,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAQhD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,iEAiBzD"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.languageAutoCallback = void 0;
4
+ exports.buildLanguagePicker = buildLanguagePicker;
5
+ /**
6
+ * @description Pure builder for the `/language` inline picker keyboard — the
7
+ * endonym-button replacement for the old plain comma-separated code list. One
8
+ * button per LOCALE labelled with its endonym, two per row, plus a full-width
9
+ * `🌐 Auto` reset row. All 12 locales fit in ONE message (Telegram allows ~100
10
+ * buttons per inline keyboard), so there is no pagination / nav row.
11
+ *
12
+ * Kept pure (no `t()`, no bot state) so the layout — `✓` placement, endonym
13
+ * labels, Auto row — is unit-testable without booting Telegraf. The `🌐 Auto`
14
+ * label is a fixed glyph+word (recognisable across locales), not a translated
15
+ * string, so no per-locale dict key is needed.
16
+ *
17
+ * Wire ids (matched by the `bot.action(...)` handlers — keep in lockstep):
18
+ * `lang_<code>` · `lang_auto`.
19
+ * All are ≤ 64 bytes (`lang_` + a 2-letter code), well inside Telegram's cap.
20
+ */
21
+ const telegraf_1 = require("telegraf");
22
+ const i18n_1 = require("../../i18n");
23
+ /** «Reset to auto» button — clears the chat's explicit locale override. */
24
+ exports.languageAutoCallback = 'lang_auto';
25
+ function buildLocaleButton(locale, current) {
26
+ const endonym = (0, i18n_1.getLocaleEndonym)(locale);
27
+ const label = locale === current ? `✓ ${endonym}` : endonym;
28
+ return telegraf_1.Markup.button.callback(label, `lang_${locale}`);
29
+ }
30
+ /**
31
+ * @description Build the single-page `/language` picker (all 12 locales),
32
+ * ordered A→Z by the language's ENGLISH NAME (the buttons themselves stay
33
+ * endonym-labelled). Only the DISPLAY order is sorted here — the global
34
+ * `localeCodes` array stays `en`-first canonical for fallback/parity.
35
+ *
36
+ * @param current the chat's explicit override locale, or `null` for auto (drives
37
+ * which button carries the `✓` — a locale button when set, the `🌐 Auto` row
38
+ * when `null`).
39
+ */
40
+ function buildLanguagePicker(current) {
41
+ const orderedCodes = [...i18n_1.localeCodes].sort((a, b) => (0, i18n_1.getLocaleEnglishName)(a).localeCompare((0, i18n_1.getLocaleEnglishName)(b)));
42
+ const rows = [];
43
+ for (let i = 0; i < orderedCodes.length; i += 2) {
44
+ const row = [buildLocaleButton(orderedCodes[i], current)];
45
+ if (orderedCodes[i + 1])
46
+ row.push(buildLocaleButton(orderedCodes[i + 1], current));
47
+ rows.push(row);
48
+ }
49
+ // Full-width 🌐 Auto row; `✓` when the chat has no explicit override.
50
+ rows.push([
51
+ telegraf_1.Markup.button.callback(current === null ? '✓ 🌐 Auto' : '🌐 Auto', exports.languageAutoCallback),
52
+ ]);
53
+ return telegraf_1.Markup.inlineKeyboard(rows);
54
+ }
55
+ //# sourceMappingURL=languagePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languagePicker.js","sourceRoot":"","sources":["../../../src/connectors/telegram/languagePicker.ts"],"names":[],"mappings":";;;AAuCA,kDAiBC;AAxDD;;;;;;;;;;;;;;;GAeG;AACH,uCAAkC;AAElC,qCAA8F;AAE9F,2EAA2E;AAC9D,QAAA,oBAAoB,GAAG,WAAW,CAAC;AAEhD,SAAS,iBAAiB,CAAC,MAAc,EAAE,OAAsB;IAC/D,MAAM,OAAO,GAAG,IAAA,uBAAgB,EAAC,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5D,OAAO,iBAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,MAAM,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CAAC,OAAsB;IACxD,MAAM,YAAY,GAAG,CAAC,GAAG,kBAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClD,IAAA,2BAAoB,EAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAA,2BAAoB,EAAC,CAAC,CAAC,CAAC,CAC/D,CAAC;IACF,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,sEAAsE;IACtE,IAAI,CAAC,IAAI,CAAC;QACR,iBAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,4BAAoB,CAAC;KACzF,CAAC,CAAC;IAEH,OAAO,iBAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @description Split agent output into Telegram-sized chunks, keeping
3
+ * ```` ``` ```` code fences valid across chunk boundaries.
4
+ *
5
+ * Pure + dependency-free so it stays unit-testable without booting Telegraf
6
+ * (importing `bot.ts` constructs a `Telegraf` instance at module load, which
7
+ * needs a real token). Both the durable-output and status paths in `bot.ts`
8
+ * route through {@link splitMessage}.
9
+ */
10
+ /** Telegram caps a message at 4096 chars; we leave headroom for markdown noise. */
11
+ export declare const MAX_MESSAGE_LEN = 4000;
12
+ /** Telegram's hard per-message limit. A rendered chunk that crosses this is
13
+ * rejected with a 400 "message is too long". */
14
+ export declare const TELEGRAM_HARD_LIMIT = 4096;
15
+ /**
16
+ * Margin reserved below {@link TELEGRAM_HARD_LIMIT} when splitting by rendered
17
+ * length. The render-aware check runs on a candidate chunk BEFORE
18
+ * {@link rebalanceFences}, which can still GROW the rendered output: closing an
19
+ * open fence at the cut and reopening one at the next chunk's start wraps bare
20
+ * text into an extra `<pre><code>…</code></pre>`. That wrapper adds
21
+ * `<pre><code>` (11) + `</code></pre>` (13) = 24 rendered chars; we round up to
22
+ * leave slack so a post-rebalance chunk can never cross the hard limit.
23
+ */
24
+ export declare const RENDERED_REBALANCE_MARGIN = 32;
25
+ /** Effective rendered cap a candidate chunk must fit under so it still fits the
26
+ * hard limit after {@link rebalanceFences} may add fence wrappers. */
27
+ export declare const RENDERED_CHUNK_CAP: number;
28
+ /**
29
+ * Smallest source slice the render-aware back-off may shrink a chunk to. Guards
30
+ * against an infinite loop / empty chunk when a single un-splittable token
31
+ * renders huge (e.g. one very long word full of escapable `< & >`): once the
32
+ * candidate is this short we stop backing off and emit it even if it still
33
+ * measures over the cap, so the split always makes forward progress.
34
+ */
35
+ export declare const MIN_RENDER_AWARE_CHUNK_LEN = 1;
36
+ /**
37
+ * @description Re-balance ```` ``` ```` fences across chunk boundaries. A tool
38
+ * diff / output (fenced by the Claude adapter) can exceed the chunk size; cut
39
+ * mid-fence, the first chunk has an unclosed fence and the next an orphan
40
+ * closer, so `renderAgentHtml` renders literal ```` ``` ```` instead of a
41
+ * `<pre>`. Closing an open fence at the cut and reopening it at the start of
42
+ * the next chunk keeps every chunk independently valid. No-op for text with
43
+ * balanced (or no) fences. Counts only line-start fences (block fences).
44
+ */
45
+ export declare function rebalanceFences(chunks: string[]): string[];
46
+ /**
47
+ * @description Split agent text into Telegram-sized chunks.
48
+ *
49
+ * Without `measureRendered` the cut is purely SOURCE-length based (newline
50
+ * preferred) — exactly the legacy behaviour. With `measureRendered` the split
51
+ * is RENDER-AWARE: `renderAgentHtml` inflates the source (HTML-escaping
52
+ * `& < >`, adding `<b>`/`<pre>` tags), so a 4000-char source chunk can render
53
+ * past Telegram's 4096 cap. The caller injects the measure (keeping this module
54
+ * dependency-free); each candidate chunk is shrunk until its rendered length
55
+ * fits {@link RENDERED_CHUNK_CAP}, which leaves margin for the fence wrappers
56
+ * {@link rebalanceFences} may still add afterwards.
57
+ *
58
+ * @param measureRendered Maps a candidate source chunk to its rendered length.
59
+ * Omitted → source-length splitting, byte-identical to the legacy output.
60
+ */
61
+ export declare function splitMessage(text: string, maxLen?: number, measureRendered?: (chunk: string) => number): string[];
62
+ //# sourceMappingURL=messageSplit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageSplit.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/messageSplit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mFAAmF;AACnF,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;iDACiD;AACjD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C;uEACuE;AACvE,eAAO,MAAM,kBAAkB,QAAkD,CAAC;AAElF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAU1D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAwB,EAChC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAC1C,MAAM,EAAE,CAmBV"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /**
3
+ * @description Split agent output into Telegram-sized chunks, keeping
4
+ * ```` ``` ```` code fences valid across chunk boundaries.
5
+ *
6
+ * Pure + dependency-free so it stays unit-testable without booting Telegraf
7
+ * (importing `bot.ts` constructs a `Telegraf` instance at module load, which
8
+ * needs a real token). Both the durable-output and status paths in `bot.ts`
9
+ * route through {@link splitMessage}.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MIN_RENDER_AWARE_CHUNK_LEN = exports.RENDERED_CHUNK_CAP = exports.RENDERED_REBALANCE_MARGIN = exports.TELEGRAM_HARD_LIMIT = exports.MAX_MESSAGE_LEN = void 0;
13
+ exports.rebalanceFences = rebalanceFences;
14
+ exports.splitMessage = splitMessage;
15
+ /** Telegram caps a message at 4096 chars; we leave headroom for markdown noise. */
16
+ exports.MAX_MESSAGE_LEN = 4000;
17
+ /** Telegram's hard per-message limit. A rendered chunk that crosses this is
18
+ * rejected with a 400 "message is too long". */
19
+ exports.TELEGRAM_HARD_LIMIT = 4096;
20
+ /**
21
+ * Margin reserved below {@link TELEGRAM_HARD_LIMIT} when splitting by rendered
22
+ * length. The render-aware check runs on a candidate chunk BEFORE
23
+ * {@link rebalanceFences}, which can still GROW the rendered output: closing an
24
+ * open fence at the cut and reopening one at the next chunk's start wraps bare
25
+ * text into an extra `<pre><code>…</code></pre>`. That wrapper adds
26
+ * `<pre><code>` (11) + `</code></pre>` (13) = 24 rendered chars; we round up to
27
+ * leave slack so a post-rebalance chunk can never cross the hard limit.
28
+ */
29
+ exports.RENDERED_REBALANCE_MARGIN = 32;
30
+ /** Effective rendered cap a candidate chunk must fit under so it still fits the
31
+ * hard limit after {@link rebalanceFences} may add fence wrappers. */
32
+ exports.RENDERED_CHUNK_CAP = exports.TELEGRAM_HARD_LIMIT - exports.RENDERED_REBALANCE_MARGIN;
33
+ /**
34
+ * Smallest source slice the render-aware back-off may shrink a chunk to. Guards
35
+ * against an infinite loop / empty chunk when a single un-splittable token
36
+ * renders huge (e.g. one very long word full of escapable `< & >`): once the
37
+ * candidate is this short we stop backing off and emit it even if it still
38
+ * measures over the cap, so the split always makes forward progress.
39
+ */
40
+ exports.MIN_RENDER_AWARE_CHUNK_LEN = 1;
41
+ /**
42
+ * @description Re-balance ```` ``` ```` fences across chunk boundaries. A tool
43
+ * diff / output (fenced by the Claude adapter) can exceed the chunk size; cut
44
+ * mid-fence, the first chunk has an unclosed fence and the next an orphan
45
+ * closer, so `renderAgentHtml` renders literal ```` ``` ```` instead of a
46
+ * `<pre>`. Closing an open fence at the cut and reopening it at the start of
47
+ * the next chunk keeps every chunk independently valid. No-op for text with
48
+ * balanced (or no) fences. Counts only line-start fences (block fences).
49
+ */
50
+ function rebalanceFences(chunks) {
51
+ let carryOpen = false;
52
+ return chunks.map(chunk => {
53
+ let text = carryOpen ? '```\n' + chunk : chunk;
54
+ const fenceCount = (text.match(/^\s*```/gm) ?? []).length;
55
+ const endsOpen = fenceCount % 2 === 1;
56
+ if (endsOpen)
57
+ text = text + '\n```';
58
+ carryOpen = endsOpen;
59
+ return text;
60
+ });
61
+ }
62
+ /**
63
+ * @description Split agent text into Telegram-sized chunks.
64
+ *
65
+ * Without `measureRendered` the cut is purely SOURCE-length based (newline
66
+ * preferred) — exactly the legacy behaviour. With `measureRendered` the split
67
+ * is RENDER-AWARE: `renderAgentHtml` inflates the source (HTML-escaping
68
+ * `& < >`, adding `<b>`/`<pre>` tags), so a 4000-char source chunk can render
69
+ * past Telegram's 4096 cap. The caller injects the measure (keeping this module
70
+ * dependency-free); each candidate chunk is shrunk until its rendered length
71
+ * fits {@link RENDERED_CHUNK_CAP}, which leaves margin for the fence wrappers
72
+ * {@link rebalanceFences} may still add afterwards.
73
+ *
74
+ * @param measureRendered Maps a candidate source chunk to its rendered length.
75
+ * Omitted → source-length splitting, byte-identical to the legacy output.
76
+ */
77
+ function splitMessage(text, maxLen = exports.MAX_MESSAGE_LEN, measureRendered) {
78
+ if (text.length <= maxLen && (!measureRendered || measureRendered(text) <= exports.RENDERED_CHUNK_CAP)) {
79
+ return [text];
80
+ }
81
+ const parts = [];
82
+ let remaining = text;
83
+ while (remaining.length > 0) {
84
+ if (remaining.length <= maxLen &&
85
+ (!measureRendered || measureRendered(remaining) <= exports.RENDERED_CHUNK_CAP)) {
86
+ parts.push(remaining);
87
+ break;
88
+ }
89
+ const cutAt = getChunkCutAt(remaining, maxLen, measureRendered);
90
+ parts.push(remaining.slice(0, cutAt));
91
+ remaining = remaining.slice(cutAt).replace(/^\n/, '');
92
+ }
93
+ return rebalanceFences(parts);
94
+ }
95
+ /**
96
+ * @description Choose the source index to cut `remaining` at for the next
97
+ * chunk. Starts from the newline-preferred SOURCE boundary (legacy behaviour),
98
+ * then — only when a render measure is supplied — retreats while the rendered
99
+ * candidate exceeds {@link RENDERED_CHUNK_CAP}: first to the previous newline,
100
+ * then shrinking progressively. A floor of {@link MIN_RENDER_AWARE_CHUNK_LEN}
101
+ * guarantees forward progress (never an empty chunk, never an infinite loop)
102
+ * even for a single un-splittable escapable-heavy token.
103
+ */
104
+ function getChunkCutAt(remaining, maxLen, measureRendered) {
105
+ let cutAt = maxLen;
106
+ const lastNewline = remaining.lastIndexOf('\n', maxLen);
107
+ if (lastNewline > maxLen * 0.5)
108
+ cutAt = lastNewline;
109
+ if (!measureRendered)
110
+ return cutAt;
111
+ while (cutAt > exports.MIN_RENDER_AWARE_CHUNK_LEN && measureRendered(remaining.slice(0, cutAt)) > exports.RENDERED_CHUNK_CAP) {
112
+ // Prefer retreating to the previous newline (keeps lines intact); if there
113
+ // is none within the candidate, halve the slice to shrink it geometrically.
114
+ const previousNewline = remaining.lastIndexOf('\n', cutAt - 1);
115
+ cutAt = previousNewline > exports.MIN_RENDER_AWARE_CHUNK_LEN ? previousNewline : Math.floor(cutAt / 2);
116
+ }
117
+ return Math.max(cutAt, exports.MIN_RENDER_AWARE_CHUNK_LEN);
118
+ }
119
+ //# sourceMappingURL=messageSplit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageSplit.js","sourceRoot":"","sources":["../../../src/connectors/telegram/messageSplit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @description The Telegram connector's outbound half — everything that turns
3
+ * the core's semantic {@link OutboundContent} into Telegram messages.
4
+ *
5
+ * It owns the surface's UI idioms (inline keyboards, pins, the typing action)
6
+ * and delegates the streaming mechanics to the existing `OutputTransport`,
7
+ * which is a TELEGRAM CHAT-MODE seam (group edit-in-place vs DM draft cursor),
8
+ * NOT a platform seam. That distinction is why the transport is composed here
9
+ * as an internal detail instead of being promoted to the platform boundary.
10
+ */
11
+ import type { InlineKeyboardMarkup } from 'telegraf/typings/core/types/typegram';
12
+ import type { SessionKey } from '../../sessionKey';
13
+ import type { OutputTransport } from '../../types';
14
+ import type { SendFilesToThread } from '../../utils/fileSendService';
15
+ import type { ConnectorCapabilities, ConnectorOutbound, OutboundOption } from '../../platform/outbound';
16
+ /**
17
+ * @description Telegram's self-declared surface. Every flag is `true` because
18
+ * Telegram is the surface the core was originally written against — which is
19
+ * exactly why the degraded paths need the S5 test double to be exercised at
20
+ * all.
21
+ *
22
+ * `maxMessageChars` is the splitter's working cap (4000), deliberately under
23
+ * Telegram's hard 4096 so an HTML render that inflates the source still fits.
24
+ */
25
+ export declare const telegramCapabilities: ConnectorCapabilities;
26
+ /**
27
+ * @description Render the core's options as a one-button-per-row inline
28
+ * keyboard. Labels are elided to Telegram's practical button width — the full
29
+ * text is still readable in the message body, which always enumerates the
30
+ * options.
31
+ */
32
+ export declare function buildOptionsKeyboard(options: OutboundOption[]): InlineKeyboardMarkup | undefined;
33
+ /**
34
+ * @description Bot primitives the Telegram outbound routes through, injected as
35
+ * closures so this module never imports `bot.ts` (a cycle) and stays testable
36
+ * without a live Telegraf instance.
37
+ */
38
+ export interface TelegramOutboundDeps {
39
+ /**
40
+ * The boot-selected chat-mode transport. Read lazily (not captured) because
41
+ * it is registered later in the boot sequence than this connector.
42
+ */
43
+ getOutputTransport: () => OutputTransport;
44
+ /**
45
+ * Send `text` as its OWN message — HTML-rendered with a plain-text retry, with
46
+ * an optional inline keyboard. Resolves the message id, or `null` when both
47
+ * attempts failed.
48
+ */
49
+ sendStandaloneMessage: (key: SessionKey, text: string, replyMarkup?: InlineKeyboardMarkup) => Promise<number | null>;
50
+ /** Pin a message so a muted topic still fires a notification. */
51
+ pinMessage: (key: SessionKey, messageId: number) => Promise<void>;
52
+ /** Start (`true`) or stop (`false`) the repeating `sendChatAction('typing')` loop. */
53
+ setTypingLoader: (key: SessionKey, isActive: boolean) => void;
54
+ /** One `sendChatAction('typing')`, no loop — a booting session that has nothing to stream. */
55
+ sendTypingPing: (key: SessionKey) => void;
56
+ /** The reusable file-send service, already composed with the Telegram gateway. */
57
+ sendFiles: SendFilesToThread;
58
+ /** Serialize a key for the string-keyed file-send service. */
59
+ encodeKey: (key: SessionKey) => string;
60
+ }
61
+ export declare function createTelegramConnectorOutbound(deps: TelegramOutboundDeps): ConnectorOutbound;
62
+ //# sourceMappingURL=outbound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbound.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/outbound.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,OAAO,KAAK,EAEV,qBAAqB,EACrB,iBAAiB,EAKjB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,qBASlC,CAAC;AAKF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,oBAAoB,GAAG,SAAS,CAahG;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,kBAAkB,EAAE,MAAM,eAAe,CAAC;IAC1C;;;;OAIG;IACH,qBAAqB,EAAE,CACrB,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,oBAAoB,KAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,iEAAiE;IACjE,UAAU,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,sFAAsF;IACtF,eAAe,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D,8FAA8F;IAC9F,cAAc,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,kFAAkF;IAClF,SAAS,EAAE,iBAAiB,CAAC;IAC7B,8DAA8D;IAC9D,SAAS,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,CAAC;CACxC;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,CA8D7F"}