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,555 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForeignKeySendRefusedError = exports.RateLimitedError = exports.formatRateSummaryLine = exports.rateLimiterConstants = exports.GlobalSendPacer = exports.shutdownDrainMaxMs = exports.globalSendIntervalMs = void 0;
4
+ exports.__setGlobalPacerForTest = __setGlobalPacerForTest;
5
+ exports.getActiveChatRateSummaries = getActiveChatRateSummaries;
6
+ exports.enterShutdownDrain = enterShutdownDrain;
7
+ exports.drainPendingSends = drainPendingSends;
8
+ exports.checkIsRateLimited = checkIsRateLimited;
9
+ exports.getRateLimitRemainingMs = getRateLimitRemainingMs;
10
+ exports.checkIsRateLimitedError = checkIsRateLimitedError;
11
+ exports.withRateLimitRetry = withRateLimitRetry;
12
+ exports.sendUnpaced = sendUnpaced;
13
+ exports.enqueueSend = enqueueSend;
14
+ const utils_1 = require("./utils");
15
+ const sessionKey_1 = require("./sessionKey");
16
+ const sessionKeyCodec_1 = require("./connectors/telegram/sessionKeyCodec");
17
+ const foreignKeyFallbacks_1 = require("./connectors/telegram/foreignKeyFallbacks");
18
+ const sendRateTracker_1 = require("./utils/sendRateTracker");
19
+ const rateLimitLog_1 = require("./utils/rateLimitLog");
20
+ Object.defineProperty(exports, "formatRateSummaryLine", { enumerable: true, get: function () { return rateLimitLog_1.formatRateSummaryLine; } });
21
+ const abortableFifo_1 = require("./utils/abortableFifo");
22
+ /**
23
+ * @description Telegram-side rate limiting for the multi-thread bot.
24
+ *
25
+ * Three layers, with different responsibilities:
26
+ *
27
+ * 1. **Per-thread FIFO queue** (`enqueueSend`). Keyed by **SessionKey**
28
+ * (`chatId+threadId`). Its only job is to preserve ordering between
29
+ * *dependent* operations on the same Telegram thread — e.g. an
30
+ * `editMessageText` that depends on a preceding `sendMessage`. Two
31
+ * forum topics interleave freely; only within one thread is ordering
32
+ * guaranteed.
33
+ *
34
+ * 2. **Global send pacer** ({@link GlobalSendPacer}). ONE process-wide
35
+ * frequency gate: it releases at most one send every
36
+ * {@link globalSendIntervalMs} across ALL chats (supergroup + owner DM),
37
+ * FCFS among waiters. It is CLOCK-BASED and NON-BLOCKING: a permit is
38
+ * granted on a timer, decoupled from whether the previous send's `fn`
39
+ * finished, so a slow/stuck send never head-of-line-blocks the others.
40
+ * This replaced the old per-chat priority token bucket: at ~1 send / 2 s
41
+ * Telegram never 429s under normal multi-topic use, and pure temporal
42
+ * FCFS (no priority classes) keeps cross-topic output in the order it
43
+ * was produced.
44
+ *
45
+ * 3. **`withRateLimitRetry`.** Keyed by **chatId**. Reactive: if Telegram
46
+ * still returns 429, sleep `retry_after + jitter` and retry once. A
47
+ * second 429 marks the chat blocked for the cooldown and surfaces a
48
+ * typed {@link RateLimitedError}. 429-state is per-chat because that's
49
+ * how Telegram returns it.
50
+ *
51
+ * The layers compose: `enqueueSend(key, fn)` chains behind the previous send
52
+ * for the *same thread*, then waits the global pacer, then runs `fn` through
53
+ * `withRateLimitRetry`. `withRateLimitRetry` stays exported for callers that
54
+ * need the retry without the proactive pacer (e.g. boot admin / health-check
55
+ * operations).
56
+ */
57
+ /**
58
+ * @description The global frequency gate: at most one send is released every
59
+ * {@link globalSendIntervalMs} across ALL chats. Steady state ≈ 1 send / 2 s,
60
+ * so Telegram's per-chat budget is never overrun under multi-topic streaming.
61
+ */
62
+ exports.globalSendIntervalMs = 2000;
63
+ /**
64
+ * @description Default bound (ms) for {@link drainPendingSends}: how long the
65
+ * graceful-shutdown flush waits for the per-thread send FIFOs to empty before
66
+ * giving up. Sized well under the 10s shutdown watchdog so the later steps
67
+ * (transient-frame sweep, update drain, `state.flush()`) keep their budgets.
68
+ */
69
+ exports.shutdownDrainMaxMs = 6000;
70
+ const realPacerClock = {
71
+ now: () => Date.now(),
72
+ setTimeout: (fn, ms) => { setTimeout(fn, ms); },
73
+ };
74
+ /**
75
+ * @description Process-wide FCFS frequency gate. `acquire()` resolves when a
76
+ * send permit is granted; permits are released one per {@link intervalMs},
77
+ * granted to waiters in strict arrival order (FCFS).
78
+ *
79
+ * CLOCK-BASED + NON-BLOCKING by design: the "next permit" time advances on a
80
+ * timer, never on the completion of a previous caller's send. A caller whose
81
+ * `fn` hangs after `acquire()` therefore cannot delay any other waiter — there
82
+ * is no head-of-line blocking through this gate.
83
+ */
84
+ class GlobalSendPacer {
85
+ intervalMs;
86
+ clock;
87
+ /** Waiters parked for a permit, resolved in FIFO (arrival) order. */
88
+ waiters = new abortableFifo_1.AbortableFifo();
89
+ /** Earliest clock time the next permit may be granted. */
90
+ nextAllowedAt = 0;
91
+ /** A drain timer is already armed for the current waiter set. */
92
+ timerArmed = false;
93
+ /** Generation token that makes overdue, logically replaced timers inert. */
94
+ timerGeneration = 0;
95
+ /** Shutdown-drain mode: permits are granted immediately, no spacing. */
96
+ isShutdownDraining = false;
97
+ constructor(intervalMs, clock = realPacerClock) {
98
+ this.intervalMs = intervalMs;
99
+ this.clock = clock;
100
+ }
101
+ /** How many sends are currently parked waiting for a permit. */
102
+ getPendingCount() {
103
+ return this.waiters.size;
104
+ }
105
+ /**
106
+ * Flip the pacer into shutdown-drain mode: every parked waiter is released
107
+ * NOW (in FIFO order) and every subsequent `acquire()` resolves immediately.
108
+ * ONLY for the graceful-shutdown flush — during live operation the spacing is
109
+ * what keeps Telegram from 429ing; `withRateLimitRetry` stays on every send
110
+ * either way, so the small shutdown burst remains 429-safe. One-way: the
111
+ * process is exiting, so there is no leave-drain path.
112
+ */
113
+ enterShutdownDrain() {
114
+ this.isShutdownDraining = true;
115
+ this.invalidateDrainTimer();
116
+ this.waiters.resolveAll();
117
+ }
118
+ /**
119
+ * Resolve when a send permit is granted. Fast path: when nobody is waiting
120
+ * and the window is already open, grant immediately (so a send after a ≥
121
+ * interval-long idle never eats a needless delay). Otherwise queue FIFO and
122
+ * let the clock-driven drain grant it in turn.
123
+ */
124
+ acquire(signal) {
125
+ if (signal?.aborted)
126
+ return Promise.reject((0, utils_1.getAbortError)(signal));
127
+ if (this.isShutdownDraining)
128
+ return Promise.resolve();
129
+ const now = this.clock.now();
130
+ if (this.waiters.size === 0 && now >= this.nextAllowedAt) {
131
+ this.invalidateDrainTimer();
132
+ this.nextAllowedAt = now + this.intervalMs;
133
+ return Promise.resolve();
134
+ }
135
+ const waiter = this.waiters.wait(signal);
136
+ this.armDrain();
137
+ return waiter;
138
+ }
139
+ /** Arm a single timer to grant the head waiter when the window next opens. */
140
+ armDrain() {
141
+ if (this.timerArmed || this.waiters.size === 0)
142
+ return;
143
+ const waitMs = Math.max(this.nextAllowedAt - this.clock.now(), 0);
144
+ this.timerArmed = true;
145
+ const timerGeneration = ++this.timerGeneration;
146
+ this.clock.setTimeout(() => {
147
+ if (timerGeneration !== this.timerGeneration)
148
+ return;
149
+ this.timerArmed = false;
150
+ this.drainOne();
151
+ }, Math.max(waitMs, 1));
152
+ }
153
+ /** Logically cancel an armed timer when the pacing window is replaced. */
154
+ invalidateDrainTimer() {
155
+ if (!this.timerArmed)
156
+ return;
157
+ this.timerArmed = false;
158
+ this.timerGeneration += 1;
159
+ }
160
+ /** Grant exactly one permit (the head waiter), advance the clock, re-arm. */
161
+ drainOne() {
162
+ if (!this.waiters.resolveNext())
163
+ return;
164
+ // Advance from whichever is later — the scheduled slot or NOW — so a late
165
+ // timer never bunches two grants closer than the interval.
166
+ this.nextAllowedAt = Math.max(this.nextAllowedAt, this.clock.now()) + this.intervalMs;
167
+ if (this.waiters.size > 0)
168
+ this.armDrain();
169
+ }
170
+ }
171
+ exports.GlobalSendPacer = GlobalSendPacer;
172
+ /** The process-wide pacer. Swappable in tests via {@link __setGlobalPacerForTest}. */
173
+ let globalPacer = new GlobalSendPacer(exports.globalSendIntervalMs, realPacerClock);
174
+ /**
175
+ * @description Test-only seam: replace the process pacer with one on a
176
+ * deterministic clock so `enqueueSend` integration tests run instantly instead
177
+ * of waiting real 2 s windows. Never called in production.
178
+ */
179
+ function __setGlobalPacerForTest(pacer) {
180
+ globalPacer = pacer;
181
+ }
182
+ exports.rateLimiterConstants = {
183
+ globalSendIntervalMs: exports.globalSendIntervalMs,
184
+ };
185
+ /**
186
+ * @description Always-on per-chat outbound send-rate instrumentation
187
+ * (plan 2026-06-24-rate-limit-429-metrics). Records every outbound send at the
188
+ * single chokepoint ({@link enqueueSend}), so the rich 429 log line and the
189
+ * periodic rate summary can characterise how hard each chat's channel is being
190
+ * pushed. Bounded + best-effort — it never throws into the send hot path.
191
+ */
192
+ const sendRateTracker = new sendRateTracker_1.SendRateTracker();
193
+ /**
194
+ * @description Per-chat outbound-rate snapshots for every chat with activity in
195
+ * the rolling minute (silent chats omitted). The `bot.ts` periodic janitor logs
196
+ * these as `[RateLimit] rate …` lines — see {@link formatRateSummaryLine}.
197
+ */
198
+ function getActiveChatRateSummaries(nowMs = Date.now()) {
199
+ return sendRateTracker.getActiveChats(nowMs).map((chatId) => ({
200
+ chatId,
201
+ sentPerMin: sendRateTracker.getSendsPerMin(chatId, nowMs),
202
+ peak10s: sendRateTracker.getPeakInSubWindow(chatId, undefined, nowMs),
203
+ }));
204
+ }
205
+ /**
206
+ * @description Per-thread FIFO of in-flight sends, keyed by serialised
207
+ * `SessionKey` (`"<chatId>:<threadId>"`).
208
+ *
209
+ * The global pacer already spaces sends across the whole process; we
210
+ * additionally chain sends within a single Telegram thread so
211
+ * `bot.telegram.sendMessage` returns to callers in the order they were queued.
212
+ * This preserves sequencing for operations that *do* depend on order (an
213
+ * `editMessageText` after the `sendMessage` whose id it edits, a
214
+ * `pinChatMessage` after the banner-send that produced the id) — but only
215
+ * within one thread, where those dependencies actually live. Different threads
216
+ * stay independent, so a slow send / 429 sleep in one thread never freezes the
217
+ * others.
218
+ */
219
+ const queues = new Map();
220
+ /**
221
+ * @description Flip the process pacer into shutdown-drain mode (immediate
222
+ * release, no 2s spacing). ONLY called from the graceful-shutdown output flush
223
+ * — never during live operation, where the spacing is the 429 protection.
224
+ * Sends drained in this mode still run through {@link withRateLimitRetry}.
225
+ */
226
+ function enterShutdownDrain() {
227
+ globalPacer.enterShutdownDrain();
228
+ }
229
+ /**
230
+ * @description Resolve once every per-thread send FIFO is empty, or after
231
+ * `maxWaitMs` — whichever comes first — reporting which. Pure bookkeeping over
232
+ * the existing {@link queues} map: it awaits the current queue tails (which
233
+ * never reject — `enqueueSend` tracks them settled-only) and loops, because a
234
+ * send finishing may have chained a successor onto the same thread's queue.
235
+ * Used by the graceful-shutdown flush after {@link enterShutdownDrain} so
236
+ * already-enqueued output lands before the process exits.
237
+ */
238
+ async function drainPendingSends(maxWaitMs = exports.shutdownDrainMaxMs) {
239
+ const deadline = Date.now() + maxWaitMs;
240
+ while (queues.size > 0) {
241
+ const remainingMs = deadline - Date.now();
242
+ if (remainingMs <= 0)
243
+ return 'timeout';
244
+ const tails = [...queues.values()];
245
+ const isTimedOut = await Promise.race([
246
+ Promise.all(tails).then(() => false),
247
+ new Promise((resolve) => {
248
+ const timer = setTimeout(() => resolve(true), remainingMs);
249
+ timer.unref?.();
250
+ }),
251
+ ]);
252
+ if (isTimedOut)
253
+ return 'timeout';
254
+ // The settled tails delete their map entries in `enqueueSend`'s `finally`,
255
+ // which runs a microtask after the tracked promise resolves — yield one
256
+ // macrotask so those deletes land before the emptiness re-check.
257
+ await new Promise((resolve) => setImmediate(resolve));
258
+ }
259
+ return 'drained';
260
+ }
261
+ const rateLimitStates = new Map();
262
+ function getRateLimitState(chatId) {
263
+ let state = rateLimitStates.get(chatId);
264
+ if (!state) {
265
+ state = { blockedUntil: 0 };
266
+ rateLimitStates.set(chatId, state);
267
+ }
268
+ return state;
269
+ }
270
+ /**
271
+ * @description Check if a chat is currently rate-limited by Telegram.
272
+ * Used by the output debounce to lengthen delays during cooldown.
273
+ */
274
+ function checkIsRateLimited(chatId) {
275
+ const state = getRateLimitState(chatId);
276
+ return Date.now() < state.blockedUntil;
277
+ }
278
+ /** Get remaining cooldown time in ms, 0 if not limited. */
279
+ function getRateLimitRemainingMs(chatId) {
280
+ const state = getRateLimitState(chatId);
281
+ return Math.max(0, state.blockedUntil - Date.now());
282
+ }
283
+ /**
284
+ * @name RateLimitedError
285
+ * @description Thrown by {@link withRateLimitRetry} when a send still gets a
286
+ * 429 *after* the single retry. Carries the chat id and the remaining cooldown
287
+ * as a typed signal. The global pacer makes a sustained 429 essentially
288
+ * impossible, so this no longer drives any redelivery re-arm — it stays a typed
289
+ * error so a caller can recognise the 429 class if it ever surfaces.
290
+ *
291
+ * The original Telegram error payload is preserved on `response` so the
292
+ * existing classifier helpers (`checkIsApiError`, `getErrorCode`,
293
+ * `getErrorDescription`) keep working unchanged on this error.
294
+ */
295
+ class RateLimitedError extends Error {
296
+ chatId;
297
+ retryAfterMs;
298
+ response;
299
+ constructor(chatId, retryAfterMs, original) {
300
+ super(`Telegram rate limit on chat ${chatId}, cooldown ${Math.ceil(retryAfterMs / 1000)}s`);
301
+ this.chatId = chatId;
302
+ this.retryAfterMs = retryAfterMs;
303
+ this.name = 'RateLimitedError';
304
+ this.response = original?.response;
305
+ }
306
+ }
307
+ exports.RateLimitedError = RateLimitedError;
308
+ function checkIsRateLimitedError(err) {
309
+ return err instanceof RateLimitedError;
310
+ }
311
+ function checkIsTelegramRateLimitError(err) {
312
+ if (typeof err !== 'object' || err === null)
313
+ return false;
314
+ const e = err;
315
+ return e.response?.error_code === 429;
316
+ }
317
+ /** Default cooldown when Telegram omits `retry_after` (mirrors {@link getRetryAfterMs}). */
318
+ const defaultRetryAfterSec = 30;
319
+ function getRetryAfterMs(err) {
320
+ const retryAfterSec = err.response?.parameters?.retry_after ?? defaultRetryAfterSec;
321
+ // Add jitter: multiply by random factor 1.0–1.3 to avoid thundering herd
322
+ const jitter = 1 + Math.random() * 0.3;
323
+ return Math.ceil(retryAfterSec * 1000 * jitter);
324
+ }
325
+ /** The raw `retry_after` Telegram returned (seconds) — the value we log. */
326
+ function getRawRetryAfterSec(err) {
327
+ return err.response?.parameters?.retry_after ?? defaultRetryAfterSec;
328
+ }
329
+ /**
330
+ * @description Emit the rich, greppable `[RateLimit] 429` instrumentation line
331
+ * for one 429, gathering the measured send-rate (from the tracker) and the
332
+ * global pacer's current queue depth. Best-effort: a failure to build the line
333
+ * must never mask the 429 handling itself.
334
+ */
335
+ function logRateLimit429(chatId, err, isAfterRetry) {
336
+ try {
337
+ const line = (0, rateLimitLog_1.formatRateLimit429Line)({
338
+ chatId,
339
+ retryAfterSec: getRawRetryAfterSec(err),
340
+ sentPerMin: sendRateTracker.getSendsPerMin(chatId),
341
+ peak10s: sendRateTracker.getPeakInSubWindow(chatId),
342
+ queuedSends: globalPacer.getPendingCount(),
343
+ isAfterRetry,
344
+ });
345
+ if (isAfterRetry)
346
+ console.error(line);
347
+ else
348
+ console.log(line);
349
+ }
350
+ catch { /* instrumentation must never break 429 handling */ }
351
+ }
352
+ /**
353
+ * @description Wraps a Telegram API call with 429 retry-after handling.
354
+ * On 429: waits the specified retry_after + jitter, retries once.
355
+ * If second attempt also fails with 429: marks chat as rate-limited, throws.
356
+ *
357
+ * Most call sites should prefer {@link enqueueSend}, which runs `fn` through
358
+ * the global pacer *and* `withRateLimitRetry`. Use this function directly only
359
+ * when you must bypass the proactive pacer (e.g. admin / health-check
360
+ * operations during boot).
361
+ */
362
+ async function withRateLimitRetry(chatId, operation, signal) {
363
+ if (signal?.aborted)
364
+ throw (0, utils_1.getAbortError)(signal);
365
+ const state = getRateLimitState(chatId);
366
+ // If currently rate-limited, wait for cooldown
367
+ const remainingMs = state.blockedUntil - Date.now();
368
+ if (remainingMs > 0) {
369
+ console.log(`[RateLimit] chat ${chatId} blocked for ${Math.ceil(remainingMs / 1000)}s, waiting...`);
370
+ await (0, utils_1.sleep)(remainingMs, signal);
371
+ }
372
+ try {
373
+ if (signal?.aborted)
374
+ throw (0, utils_1.getAbortError)(signal);
375
+ return await operation();
376
+ }
377
+ catch (err) {
378
+ if (!checkIsTelegramRateLimitError(err))
379
+ throw err;
380
+ const waitMs = getRetryAfterMs(err);
381
+ state.blockedUntil = Date.now() + waitMs;
382
+ logRateLimit429(chatId, err, /* isAfterRetry */ false);
383
+ await (0, utils_1.sleep)(waitMs, signal);
384
+ // Single retry
385
+ try {
386
+ if (signal?.aborted)
387
+ throw (0, utils_1.getAbortError)(signal);
388
+ const result = await operation();
389
+ state.blockedUntil = 0;
390
+ return result;
391
+ }
392
+ catch (retryErr) {
393
+ if (checkIsTelegramRateLimitError(retryErr)) {
394
+ const secondWaitMs = getRetryAfterMs(retryErr);
395
+ state.blockedUntil = Date.now() + secondWaitMs;
396
+ logRateLimit429(chatId, retryErr, /* isAfterRetry */ true);
397
+ // Surface a typed error so a caller can recognise the 429 class. The
398
+ // global pacer makes a sustained double-429 essentially impossible, so
399
+ // this no longer re-arms any redelivery.
400
+ throw new RateLimitedError(chatId, secondWaitMs, retryErr);
401
+ }
402
+ throw retryErr;
403
+ }
404
+ }
405
+ }
406
+ /**
407
+ * @description A send for a conversation of another platform (Jira connector
408
+ * plan J2b, R2): its operation never runs. Like a failed Telegram call it
409
+ * rejects, so an awaiting caller takes its error path.
410
+ */
411
+ class ForeignKeySendRefusedError extends Error {
412
+ constructor(key) {
413
+ super(`Telegram send refused: ${key.platform} conversation ${key.space}/${key.thread} ${foreignKeyFallbacks_1.notTelegramChatPhrase}`);
414
+ this.name = 'ForeignKeySendRefusedError';
415
+ }
416
+ }
417
+ exports.ForeignKeySendRefusedError = ForeignKeySendRefusedError;
418
+ /** The second line behind the bot's per-primitive guards; logs once per entry point and conversation. */
419
+ const checkIsTelegramSendKey = (0, foreignKeyFallbacks_1.createTelegramPrimitiveGuard)();
420
+ /**
421
+ * The refusal of a foreign key's send. A handler is attached before it is
422
+ * returned, so a caller that fires and forgets it never raises an unhandled
423
+ * rejection — which would end the whole process.
424
+ */
425
+ function getForeignKeySendRefusal(key) {
426
+ const refusal = Promise.reject(new ForeignKeySendRefusedError(key));
427
+ refusal.catch(() => { });
428
+ return refusal;
429
+ }
430
+ /**
431
+ * @description The shared send tail both the paced and unpaced paths end in:
432
+ * record the outbound send for the per-chat rate summary (best-effort — never
433
+ * throws into the send path), then run `fn` through the reactive 429 retry.
434
+ * Keeping it in one place stops {@link enqueueSend} and {@link sendUnpaced} from
435
+ * drifting on 429-safety or instrumentation.
436
+ */
437
+ function recordAndRetry(key, fn, signal) {
438
+ // Record exactly one outbound send per logical send (best-effort
439
+ // instrumentation — never let it break a send).
440
+ const chatId = (0, sessionKeyCodec_1.getTelegramChatId)(key);
441
+ try {
442
+ sendRateTracker.recordSend(chatId);
443
+ }
444
+ catch { /* never throw into the send path */ }
445
+ return withRateLimitRetry(chatId, fn, signal);
446
+ }
447
+ /**
448
+ * @description Send a Telegram operation OUTSIDE the global message pacer and
449
+ * the per-thread FIFO — still 429-safe ({@link withRateLimitRetry}) and still
450
+ * counted by {@link sendRateTracker}, but WITHOUT taking a
451
+ * {@link globalSendIntervalMs} permit and WITHOUT chaining behind the thread's
452
+ * other sends. Runs immediately.
453
+ *
454
+ * Reserved for the rare, non-output sends that must not consume the paced
455
+ * message budget nor queue behind streaming agent output:
456
+ * - the typing indicator (`sendChatAction` — not a Telegram message, not
457
+ * subject to the flood limit, so pacing it just wastes ~60% of the budget);
458
+ * - the voice-transcript echo (the user's own input being acknowledged, which
459
+ * should surface ahead of queued agent output).
460
+ *
461
+ * Do NOT route ordinary agent-output `sendMessage`s through this — that would
462
+ * break the FCFS ordering the pacer guarantees.
463
+ */
464
+ function sendUnpaced(key, fn, signal) {
465
+ // Not `async`, for the same reason as {@link enqueueSend}.
466
+ if (!checkIsTelegramSendKey(key, 'sendUnpaced'))
467
+ return getForeignKeySendRefusal(key);
468
+ return sendTelegramUnpaced(key, fn, signal);
469
+ }
470
+ /** Async, so a synchronous throw on the way to the send still arrives as a rejection. */
471
+ async function sendTelegramUnpaced(key, fn, signal) {
472
+ return recordAndRetry(key, fn, signal);
473
+ }
474
+ /** Reject while queued, but never race a started operation's cleanup/result. */
475
+ function waitForQueuedExecution(execution, checkOperationStarted, signal) {
476
+ if (!signal)
477
+ return execution;
478
+ if (signal.aborted)
479
+ return Promise.reject((0, utils_1.getAbortError)(signal));
480
+ return new Promise((resolve, reject) => {
481
+ const handleAbort = () => {
482
+ if (!checkOperationStarted())
483
+ reject((0, utils_1.getAbortError)(signal));
484
+ };
485
+ signal.addEventListener('abort', handleAbort, { once: true });
486
+ execution.then((result) => {
487
+ signal.removeEventListener('abort', handleAbort);
488
+ resolve(result);
489
+ }, (error) => {
490
+ signal.removeEventListener('abort', handleAbort);
491
+ reject(error);
492
+ });
493
+ });
494
+ }
495
+ /**
496
+ * @description Send a Telegram operation through the per-thread FIFO queue, the
497
+ * global send pacer, and per-chat 429 retry.
498
+ *
499
+ * - **Serialised per thread**: the next send for the same `SessionKey` only runs
500
+ * after this one settles (success or failure). Sends for *different* threads
501
+ * run concurrently, gated only by the global pacer.
502
+ * - **Paced globally**: {@link GlobalSendPacer} releases ≤1 send /
503
+ * {@link globalSendIntervalMs} across all chats, FCFS. Permits are granted on
504
+ * a clock, so a slow send never blocks another thread's permit.
505
+ * - **Retry on 429**: reactive backoff via {@link withRateLimitRetry}.
506
+ *
507
+ * Errors from the operation are returned to the caller (we don't swallow
508
+ * them — only the queue tail is swallowed so a single failure doesn't poison
509
+ * every subsequent send on that thread).
510
+ *
511
+ * @example
512
+ * await enqueueSend(key, () =>
513
+ * bot.telegram.sendMessage(key.chatId, text, { message_thread_id: key.threadId }));
514
+ */
515
+ function enqueueSend(key, fn, signal) {
516
+ // Not `async`: an async function would wrap the handled refusal in a NEW, unhandled promise.
517
+ if (!checkIsTelegramSendKey(key, 'enqueueSend'))
518
+ return getForeignKeySendRefusal(key);
519
+ return enqueueTelegramSend(key, fn, signal);
520
+ }
521
+ async function enqueueTelegramSend(key, fn, signal) {
522
+ if (signal?.aborted)
523
+ throw (0, utils_1.getAbortError)(signal);
524
+ const queueKey = (0, sessionKey_1.keyToString)(key);
525
+ const prev = queues.get(queueKey);
526
+ let isOperationStarted = false;
527
+ const exec = async () => {
528
+ await globalPacer.acquire(signal);
529
+ return recordAndRetry(key, () => {
530
+ isOperationStarted = true;
531
+ return fn();
532
+ }, signal);
533
+ };
534
+ // Chain: wait for prev (ignore its errors), then run our exec.
535
+ const execution = (async () => {
536
+ if (prev) {
537
+ try {
538
+ await prev;
539
+ }
540
+ catch { /* swallow predecessor errors */ }
541
+ }
542
+ if (signal?.aborted)
543
+ throw (0, utils_1.getAbortError)(signal);
544
+ return exec();
545
+ })();
546
+ const tracked = execution.then(() => undefined, () => undefined);
547
+ queues.set(queueKey, tracked);
548
+ void tracked.then(() => {
549
+ if (queues.get(queueKey) === tracked) {
550
+ queues.delete(queueKey);
551
+ }
552
+ });
553
+ return waitForQueuedExecution(execution, () => isOperationStarted, signal);
554
+ }
555
+ //# sourceMappingURL=rateLimiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimiter.js","sourceRoot":"","sources":["../src/rateLimiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { type SessionKey } from '../sessionKey';
2
+ import { type AnswerSinks } from '../platform/answerSink';
3
+ import type { RequestLedger } from './requestLedger';
4
+ import type { RequestAnswerKind } from './types';
5
+ /**
6
+ * @description The `answer_request` contract (request/answer core S3), kept out
7
+ * of the MCP surface so the rules are testable without HTTP:
8
+ *
9
+ * unknown id, or an id outside the caller's scope → refused, nothing sent
10
+ * (the two read the same, so a session cannot probe other topics' ids)
11
+ * delivery through the request platform's answer sink fails → refused, the
12
+ * request is unchanged and the agent may retry
13
+ * delivered, request open: progress → counted, stays open
14
+ * question / final → closes the request
15
+ * delivered, request closed: nothing changes (a late answer from a turn that
16
+ * outlived its request is still delivered — content is never dropped); a
17
+ * superseded request's result names the request that replaced it and says
18
+ * its prompt follows — the agent answers only what that one adds, never the
19
+ * same work twice (Claude Code delivers a message written mid-turn only
20
+ * after the turn ends, so this is the normal order there)
21
+ */
22
+ /** The longest answer body accepted; the sinks split it to their surface's limits. */
23
+ export declare const answerBodyMaxLength = 100000;
24
+ /**
25
+ * @name AnswerRequestDeps
26
+ * @description The ledger (awaited until loaded — the bot MCP server serves
27
+ * before the boot finished) and the answer sinks by platform.
28
+ * `onAnswerDelivered` hears every answer that reached the requester, to an open
29
+ * request or a closed one (the wake-up engine follows what comes after a final).
30
+ */
31
+ export interface AnswerRequestDeps {
32
+ ledger: Pick<RequestLedger, 'whenLoaded' | 'getRequest' | 'updateOpenRequest' | 'closeRequest'>;
33
+ answerSinks: AnswerSinks;
34
+ onAnswerDelivered?: (key: SessionKey, requestId: string, kind: RequestAnswerKind) => void;
35
+ }
36
+ /**
37
+ * @name AnswerRequestArgs
38
+ * @description One `answer_request` call. `checkIsConversationInScope` answers
39
+ * whether the calling session's token covers a conversation (serialized key).
40
+ */
41
+ export interface AnswerRequestArgs {
42
+ requestId: string;
43
+ kind: RequestAnswerKind;
44
+ body: string;
45
+ checkIsConversationInScope: (conversationKey: string) => boolean;
46
+ }
47
+ /** @description What the tool reports back to the agent. */
48
+ export type AnswerRequestOutcome = {
49
+ ok: true;
50
+ message: string;
51
+ } | {
52
+ ok: false;
53
+ error: string;
54
+ };
55
+ /** @description Deliver one answer and apply the close rules. */
56
+ export declare function answerRequest(deps: AnswerRequestDeps, args: AnswerRequestArgs): Promise<AnswerRequestOutcome>;
57
+ //# sourceMappingURL=answerRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerRequest.d.ts","sourceRoot":"","sources":["../../src/requests/answerRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAuB,iBAAiB,EAAsB,MAAM,SAAS,CAAC;AAE1F;;;;;;;;;;;;;;;;GAgBG;AAEH,sFAAsF;AACtF,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAS3C;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,YAAY,GAAG,mBAAmB,GAAG,cAAc,CAAC,CAAC;IAChG,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC3F;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC;CAClE;AAED,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAyBhG,iEAAiE;AACjE,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4CnH"}