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,46 @@
1
+ "use strict";
2
+ /**
3
+ * @description Draft-id allocator for the DM-mode live-streaming draft channel
4
+ * (P3). Telegram's `sendMessageDraft` animates updates that share the SAME
5
+ * `draft_id` as one in-progress draft; a NEW id starts a fresh draft. So one
6
+ * streamed response must keep ONE stable id across all its updates, and each new
7
+ * response (a fresh, non-continuation turn) must get a DISTINCT id so it animates
8
+ * separately from the previous turn.
9
+ *
10
+ * A pure module-scoped monotonic counter gives both: {@link nextDraftId} is
11
+ * called ONCE per response (at `startDraftTurn`), and the returned id is then
12
+ * stored on the per-thread draft state and reused for every update of that
13
+ * response. Two DM topics streaming at once get distinct ids because each pulls
14
+ * its own value off the shared counter.
15
+ *
16
+ * The id is folded into a NON-ZERO 31-bit positive int: Telegram requires a
17
+ * non-zero draft id, and a small positive int avoids any signedness surprises in
18
+ * the Bot API. The counter wraps at {@link DRAFT_ID_MODULO} without ever
19
+ * yielding 0.
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.DRAFT_ID_MODULO = void 0;
23
+ exports.nextDraftId = nextDraftId;
24
+ /**
25
+ * Wrap point for the draft-id counter. Kept well inside the 31-bit positive
26
+ * range (2_147_483_647) so the `+1` fold can never reach a 32-bit boundary.
27
+ */
28
+ exports.DRAFT_ID_MODULO = 2_000_000_000;
29
+ let draftIdCounter = 0;
30
+ /**
31
+ * @description Allocate the next draft id. Monotonic per process, folded into a
32
+ * non-zero positive 31-bit int via `(counter % MODULO) + 1`, so the value is
33
+ * always in `[1, DRAFT_ID_MODULO]` and never 0 even at the wrap boundary.
34
+ *
35
+ * `prevId` is accepted for symmetry with the per-thread state (and to make a
36
+ * future "derive from previous" tweak local to this module) but is intentionally
37
+ * unused: uniqueness comes from the shared monotonic counter, not the caller's
38
+ * last id, so two interleaved per-thread turns can never collide.
39
+ */
40
+ function nextDraftId(prevId) {
41
+ void prevId;
42
+ const id = (draftIdCounter % exports.DRAFT_ID_MODULO) + 1;
43
+ draftIdCounter += 1;
44
+ return id;
45
+ }
46
+ //# sourceMappingURL=draftId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draftId.js","sourceRoot":"","sources":["../../src/utils/draftId.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAoBH,kCAKC;AAvBD;;;GAGG;AACU,QAAA,eAAe,GAAG,aAAa,CAAC;AAE7C,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB;;;;;;;;;GASG;AACH,SAAgB,WAAW,CAAC,MAAqB;IAC/C,KAAK,MAAM,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC,cAAc,GAAG,uBAAe,CAAC,GAAG,CAAC,CAAC;IAClD,cAAc,IAAI,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @description Pure pacing decision for the DM-mode live-draft channel (P3),
3
+ * mirroring {@link ../utils/statusFlushDecision.ts} in shape: given the latest
4
+ * accumulated draft text, the last text actually drafted, the clock, and the
5
+ * draft-channel 429 cooldown, decide what the draft loop should do with this
6
+ * update.
7
+ *
8
+ * The draft channel is SEPARATE from the message channel: it never touches the
9
+ * rateLimiter TokenBucket / per-chat 429 cooldown, so its own backoff
10
+ * (`backoffUntilMs`) can never starve real `sendMessage`/`editMessageText`
11
+ * traffic. Drafts are disposable previews — under congestion it is correct to
12
+ * defer them rather than spend a draft call on a frame the next one will replace.
13
+ *
14
+ * @name DraftPaceAction
15
+ * @description
16
+ * - `send` — text changed, not too soon since the last send, no draft-channel
17
+ * cooldown: fire the draft now.
18
+ * - `skip` — text is identical to the last drafted text: a draft update would
19
+ * only re-send the same preview; don't spend a draft call.
20
+ * - `defer` — either a draft-channel 429 cooldown is active, or the min interval
21
+ * since the last send hasn't elapsed: hold the newest text and re-arm a timer
22
+ * for the remainder.
23
+ */
24
+ export type DraftPaceAction = 'send' | 'skip' | 'defer';
25
+ /**
26
+ * Min gap between two draft updates of the same in-flight response. ~700ms →
27
+ * ~1.4 updates/sec — fast enough to read as a live "typing" animation, slow
28
+ * enough to stay well under the draft budget the P0.5 probe measured.
29
+ */
30
+ export declare const DRAFT_MIN_INTERVAL_MS = 700;
31
+ /**
32
+ * Fallback draft-channel backoff when a draft 429 omits `retry_after`. The P0.5
33
+ * live probe saw ~20s draft cooldowns; the runtime prefers the error's
34
+ * `retry_after` when present and uses this only as the floor/fallback.
35
+ */
36
+ export declare const DRAFT_DEFAULT_BACKOFF_MS = 20000;
37
+ export interface DraftPaceInput {
38
+ /** Latest accumulated draft text the loop wants to show. */
39
+ nextText: string;
40
+ /** Last text actually drafted for this thread, or null (nothing sent yet). */
41
+ lastSentText: string | null;
42
+ /** Current time, ms. */
43
+ nowMs: number;
44
+ /** When the last draft actually went out, ms, or null (nothing sent yet). */
45
+ lastSentAtMs: number | null;
46
+ /** Min gap between two draft sends, ms (= {@link DRAFT_MIN_INTERVAL_MS}). */
47
+ minIntervalMs: number;
48
+ /** Draft-channel 429 cooldown end, ms. `0` = no cooldown. */
49
+ backoffUntilMs: number;
50
+ }
51
+ /**
52
+ * @description Decide what the draft pacer should do with `nextText`.
53
+ *
54
+ * Order matters: the 429 cooldown wins over everything (defer even an identical
55
+ * frame so the loop exits leaving the newest text for the post-cooldown re-arm);
56
+ * then an unchanged frame is a `skip` (no draft call); then the min-interval
57
+ * gate `defer`s a too-soon update; otherwise `send`.
58
+ */
59
+ export declare function getDraftPaceAction(input: DraftPaceInput): DraftPaceAction;
60
+ /**
61
+ * @description Whether an `output` event should be streamed via the native DM
62
+ * draft channel. Drafts are for genuinely INCREMENTAL streaming; a COMPLETE
63
+ * one-shot output (`meta.isComplete`, e.g. the resume context block) is already
64
+ * whole at emit time — drafting it would make Telegram's native draft "typing"
65
+ * animation draw static text progressively, so it must post directly. Sub-agent
66
+ * chunks are never drafted either. Group mode never drafts.
67
+ */
68
+ export declare function checkShouldStreamAsDraft(isDmMode: boolean, meta?: {
69
+ isComplete?: boolean;
70
+ isSubagent?: boolean;
71
+ }): boolean;
72
+ //# sourceMappingURL=draftPacer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draftPacer.d.ts","sourceRoot":"","sources":["../../src/utils/draftPacer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAOzE;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,EACjB,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAKT"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DRAFT_DEFAULT_BACKOFF_MS = exports.DRAFT_MIN_INTERVAL_MS = void 0;
4
+ exports.getDraftPaceAction = getDraftPaceAction;
5
+ exports.checkShouldStreamAsDraft = checkShouldStreamAsDraft;
6
+ /**
7
+ * Min gap between two draft updates of the same in-flight response. ~700ms →
8
+ * ~1.4 updates/sec — fast enough to read as a live "typing" animation, slow
9
+ * enough to stay well under the draft budget the P0.5 probe measured.
10
+ */
11
+ exports.DRAFT_MIN_INTERVAL_MS = 700;
12
+ /**
13
+ * Fallback draft-channel backoff when a draft 429 omits `retry_after`. The P0.5
14
+ * live probe saw ~20s draft cooldowns; the runtime prefers the error's
15
+ * `retry_after` when present and uses this only as the floor/fallback.
16
+ */
17
+ exports.DRAFT_DEFAULT_BACKOFF_MS = 20_000;
18
+ /**
19
+ * @description Decide what the draft pacer should do with `nextText`.
20
+ *
21
+ * Order matters: the 429 cooldown wins over everything (defer even an identical
22
+ * frame so the loop exits leaving the newest text for the post-cooldown re-arm);
23
+ * then an unchanged frame is a `skip` (no draft call); then the min-interval
24
+ * gate `defer`s a too-soon update; otherwise `send`.
25
+ */
26
+ function getDraftPaceAction(input) {
27
+ if (input.nowMs < input.backoffUntilMs)
28
+ return 'defer';
29
+ if (input.nextText === input.lastSentText)
30
+ return 'skip';
31
+ if (input.lastSentAtMs !== null && input.nowMs - input.lastSentAtMs < input.minIntervalMs) {
32
+ return 'defer';
33
+ }
34
+ return 'send';
35
+ }
36
+ /**
37
+ * @description Whether an `output` event should be streamed via the native DM
38
+ * draft channel. Drafts are for genuinely INCREMENTAL streaming; a COMPLETE
39
+ * one-shot output (`meta.isComplete`, e.g. the resume context block) is already
40
+ * whole at emit time — drafting it would make Telegram's native draft "typing"
41
+ * animation draw static text progressively, so it must post directly. Sub-agent
42
+ * chunks are never drafted either. Group mode never drafts.
43
+ */
44
+ function checkShouldStreamAsDraft(isDmMode, meta) {
45
+ if (!isDmMode)
46
+ return false;
47
+ if (meta?.isComplete === true)
48
+ return false;
49
+ if (meta?.isSubagent === true)
50
+ return false;
51
+ return true;
52
+ }
53
+ //# sourceMappingURL=draftPacer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draftPacer.js","sourceRoot":"","sources":["../../src/utils/draftPacer.ts"],"names":[],"mappings":";;;AA8DA,gDAOC;AAUD,4DAQC;AA9DD;;;;GAIG;AACU,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;;;GAIG;AACU,QAAA,wBAAwB,GAAG,MAAM,CAAC;AAiB/C;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,KAAqB;IACtD,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc;QAAE,OAAO,OAAO,CAAC;IACvD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,YAAY;QAAE,OAAO,MAAM,CAAC;IACzD,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAC1F,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,wBAAwB,CACtC,QAAiB,EACjB,IAAqD;IAErD,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,IAAI,EAAE,UAAU,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,IAAI,EAAE,UAAU,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @description Decide the `/effort` slash-command keystroke to replay into a
3
+ * freshly spawned Claude TUI, given the thread's stored effort pref.
4
+ *
5
+ * WHY: claude persists effort GLOBALLY in its own settings.json, so a fresh
6
+ * TUI (start / `/new` / resume) comes up with the LAST globally-set level —
7
+ * possibly chosen in another topic. The bot keeps the real per-thread choice
8
+ * in `.claude-effort-prefs.json`; on every fresh spawn it must re-apply that
9
+ * choice by typing claude's native `/effort <level>` once the TUI is ready,
10
+ * BEFORE any buffered user prompt is replayed. This pure helper owns the tiny
11
+ * decision (which keystroke, or none) so it is unit-testable without driving
12
+ * a real tmux pane.
13
+ *
14
+ * No stored pref → `null` → type nothing (claude's own default stands). A
15
+ * stored level claude can't honour for the current model is returned as-is:
16
+ * claude clamps unsupported levels per model (documented behavior), so the
17
+ * adapter does NOT validate here — same contract as a manual `/effort`.
18
+ */
19
+ export declare function getEffortStartupKeystroke(storedLevel: string | null): string | null;
20
+ //# sourceMappingURL=effortStartupKeystroke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effortStartupKeystroke.d.ts","sourceRoot":"","sources":["../../src/utils/effortStartupKeystroke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAInF"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEffortStartupKeystroke = getEffortStartupKeystroke;
4
+ /**
5
+ * @description Decide the `/effort` slash-command keystroke to replay into a
6
+ * freshly spawned Claude TUI, given the thread's stored effort pref.
7
+ *
8
+ * WHY: claude persists effort GLOBALLY in its own settings.json, so a fresh
9
+ * TUI (start / `/new` / resume) comes up with the LAST globally-set level —
10
+ * possibly chosen in another topic. The bot keeps the real per-thread choice
11
+ * in `.claude-effort-prefs.json`; on every fresh spawn it must re-apply that
12
+ * choice by typing claude's native `/effort <level>` once the TUI is ready,
13
+ * BEFORE any buffered user prompt is replayed. This pure helper owns the tiny
14
+ * decision (which keystroke, or none) so it is unit-testable without driving
15
+ * a real tmux pane.
16
+ *
17
+ * No stored pref → `null` → type nothing (claude's own default stands). A
18
+ * stored level claude can't honour for the current model is returned as-is:
19
+ * claude clamps unsupported levels per model (documented behavior), so the
20
+ * adapter does NOT validate here — same contract as a manual `/effort`.
21
+ */
22
+ function getEffortStartupKeystroke(storedLevel) {
23
+ const level = storedLevel?.trim();
24
+ if (!level)
25
+ return null;
26
+ return `/effort ${level}`;
27
+ }
28
+ //# sourceMappingURL=effortStartupKeystroke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effortStartupKeystroke.js","sourceRoot":"","sources":["../../src/utils/effortStartupKeystroke.ts"],"names":[],"mappings":";;AAkBA,8DAIC;AAtBD;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,yBAAyB,CAAC,WAA0B;IAClE,MAAM,KAAK,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,WAAW,KAAK,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @description The pure decision behind `ensureAgentSession` (plan
3
+ * 2026-10-04-claude-process-lifecycle, L-D4): what to do so a conversation has a
4
+ * live agent session. A conversation whose process is gone but whose session id
5
+ * is still persisted is SLEEPING — it is resumed, never replaced by a fresh
6
+ * session; only `/quit`, `/new` and leaving the folder release the id. Every
7
+ * trigger (a message, a Jira request, a limit resume, a wake-up, a schedule) and
8
+ * every command that needs a live agent goes through the one choke point that
9
+ * acts on this plan, so no path can start a fresh conversation over a sleeping one.
10
+ */
11
+ /** The persisted ids a conversation's agent row carries (one per backend family). */
12
+ export interface PersistedSessionIds {
13
+ claudeSessionId?: string;
14
+ opencodeSessionId?: string;
15
+ }
16
+ export type EnsureSessionPlan =
17
+ /** A live session, or a start already under way (prompts buffer and replay). */
18
+ {
19
+ kind: 'ready';
20
+ }
21
+ /** No folder bound — nothing can start. */
22
+ | {
23
+ kind: 'unbound';
24
+ }
25
+ /** Bound, but no adapter resolves and the caller gave no fallback — refuse. */
26
+ | {
27
+ kind: 'noAdapter';
28
+ }
29
+ /** A sleeping conversation: resume `sessionId` on `adapterName` (silently). */
30
+ | {
31
+ kind: 'resume';
32
+ adapterName: string;
33
+ sessionId: string;
34
+ }
35
+ /** Nothing to resume and the caller allows a fresh start. */
36
+ | {
37
+ kind: 'start';
38
+ adapterName: string;
39
+ }
40
+ /** Nothing to resume and the caller allows NO fresh start (a reminder, a topic's wake-up). */
41
+ | {
42
+ kind: 'nothingToResume';
43
+ };
44
+ export interface EnsureSessionPlanInput {
45
+ isActive: boolean;
46
+ isStarting: boolean;
47
+ hasBinding: boolean;
48
+ /** The adapter the session would run on, already resolved (explicit pick → in-memory → persisted → fallback). */
49
+ adapterName: string | null;
50
+ /** Whether `adapterName` is one of the two Claude backends (they share the on-disk transcript and its id). */
51
+ isClaudeBackend: boolean;
52
+ persistedIds: PersistedSessionIds | null;
53
+ /** Resume a sleeping session but never start a fresh one. */
54
+ isResumeOnly: boolean;
55
+ }
56
+ /**
57
+ * @description The persisted session id that belongs to `adapterName`: the Claude
58
+ * id for either Claude backend, the OpenCode id for OpenCode, none for a shell or
59
+ * an unknown adapter. Mirrors the id-wiping rule of the adapter switch, so an id
60
+ * of another family is never resumed on the wrong backend.
61
+ */
62
+ export declare function getPersistedSessionIdForAdapter(persistedIds: PersistedSessionIds | null, adapterName: string, isClaudeBackend: boolean): string | null;
63
+ export declare function getEnsureSessionPlan(input: EnsureSessionPlanInput): EnsureSessionPlan;
64
+ /**
65
+ * @description What follows a resume that FAILED (the CLI refused the id, the
66
+ * process did not come up): a caller that may start fresh does — the conversation
67
+ * is told its previous one could not be resumed; a resume-only caller stops.
68
+ */
69
+ export declare function getResumeFailureAction(isResumeOnly: boolean): 'startFresh' | 'fail';
70
+ //# sourceMappingURL=ensureSessionPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureSessionPlan.d.ts","sourceRoot":"","sources":["../../src/utils/ensureSessionPlan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,iBAAiB;AAC3B,gFAAgF;AAC9E;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE;AACnB,2CAA2C;GACzC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB,+EAA+E;GAC7E;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE;AACvB,+EAA+E;GAC7E;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC5D,6DAA6D;GAC3D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AACxC,8FAA8F;GAC5F;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEhC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,iHAAiH;IACjH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8GAA8G;IAC9G,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACzC,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,OAAO,GACvB,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,GAAG,iBAAiB,CAQrF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,CAEnF"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /**
3
+ * @description The pure decision behind `ensureAgentSession` (plan
4
+ * 2026-10-04-claude-process-lifecycle, L-D4): what to do so a conversation has a
5
+ * live agent session. A conversation whose process is gone but whose session id
6
+ * is still persisted is SLEEPING — it is resumed, never replaced by a fresh
7
+ * session; only `/quit`, `/new` and leaving the folder release the id. Every
8
+ * trigger (a message, a Jira request, a limit resume, a wake-up, a schedule) and
9
+ * every command that needs a live agent goes through the one choke point that
10
+ * acts on this plan, so no path can start a fresh conversation over a sleeping one.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.getPersistedSessionIdForAdapter = getPersistedSessionIdForAdapter;
14
+ exports.getEnsureSessionPlan = getEnsureSessionPlan;
15
+ exports.getResumeFailureAction = getResumeFailureAction;
16
+ const adapterNames_1 = require("../adapters/adapterNames");
17
+ /**
18
+ * @description The persisted session id that belongs to `adapterName`: the Claude
19
+ * id for either Claude backend, the OpenCode id for OpenCode, none for a shell or
20
+ * an unknown adapter. Mirrors the id-wiping rule of the adapter switch, so an id
21
+ * of another family is never resumed on the wrong backend.
22
+ */
23
+ function getPersistedSessionIdForAdapter(persistedIds, adapterName, isClaudeBackend) {
24
+ if (!persistedIds)
25
+ return null;
26
+ if (isClaudeBackend)
27
+ return persistedIds.claudeSessionId ?? null;
28
+ if (adapterName === adapterNames_1.openCodeAdapterName)
29
+ return persistedIds.opencodeSessionId ?? null;
30
+ return null;
31
+ }
32
+ function getEnsureSessionPlan(input) {
33
+ if (input.isActive || input.isStarting)
34
+ return { kind: 'ready' };
35
+ if (!input.hasBinding)
36
+ return { kind: 'unbound' };
37
+ if (!input.adapterName)
38
+ return { kind: 'noAdapter' };
39
+ const sessionId = getPersistedSessionIdForAdapter(input.persistedIds, input.adapterName, input.isClaudeBackend);
40
+ if (sessionId)
41
+ return { kind: 'resume', adapterName: input.adapterName, sessionId };
42
+ if (input.isResumeOnly)
43
+ return { kind: 'nothingToResume' };
44
+ return { kind: 'start', adapterName: input.adapterName };
45
+ }
46
+ /**
47
+ * @description What follows a resume that FAILED (the CLI refused the id, the
48
+ * process did not come up): a caller that may start fresh does — the conversation
49
+ * is told its previous one could not be resumed; a resume-only caller stops.
50
+ */
51
+ function getResumeFailureAction(isResumeOnly) {
52
+ return isResumeOnly ? 'fail' : 'startFresh';
53
+ }
54
+ //# sourceMappingURL=ensureSessionPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureSessionPlan.js","sourceRoot":"","sources":["../../src/utils/ensureSessionPlan.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AA2CH,0EASC;AAED,oDAQC;AAOD,wDAEC;AArED,2DAA+D;AAmC/D;;;;;GAKG;AACH,SAAgB,+BAA+B,CAC7C,YAAwC,EACxC,WAAmB,EACnB,eAAwB;IAExB,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,eAAe;QAAE,OAAO,YAAY,CAAC,eAAe,IAAI,IAAI,CAAC;IACjE,IAAI,WAAW,KAAK,kCAAmB;QAAE,OAAO,YAAY,CAAC,iBAAiB,IAAI,IAAI,CAAC;IACvF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAA6B;IAChE,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACjE,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,+BAA+B,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAChH,IAAI,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;IACpF,IAAI,KAAK,CAAC,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,YAAqB;IAC1D,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * @description Pure decision layer for the agent→Telegram file/image send
3
+ * (`send_file_to_user` MCP tool). Four concerns, all side-effect-free enough to
4
+ * unit-test without booting Telegraf:
5
+ * 1. {@link resolveSendFileWithinDir} — path-safety: resolve a caller-supplied
6
+ * path against the topic's bound folder and confirm (realpath + containment)
7
+ * it points at a REGULAR FILE inside it. Modeled on
8
+ * `validation.ts:validateSubdir`, but for a file (not a directory) and
9
+ * returning a discriminated result instead of throwing (the caller surfaces
10
+ * the error to the agent as an MCP tool error).
11
+ * 2. {@link classifyFileSendKind} — map an extension to how Telegram should
12
+ * render it (inline photo / autoplay animation / inline video / plain document).
13
+ * 3. {@link planFileSend} — decide the single Telegram send method (or album
14
+ * shape) for 1..10 items, applying the `as_file` override, the photo size
15
+ * downgrade, and the album photo/video-vs-document rule. Returns the
16
+ * over-cap / count violations as an error variant rather than throwing.
17
+ * 4. {@link buildTelegramFileSendRequest} — turn a non-error plan into the
18
+ * exact typed Bot API request shape, including caption placement.
19
+ *
20
+ * The only fs touch is the bigint `statSync` inside
21
+ * {@link resolveSendFileWithinDir} (unavoidable for the regular-file and
22
+ * identity gates). The caller supplies owned descriptor snapshots, so planning
23
+ * and request construction never carry workspace paths into Telegraf.
24
+ */
25
+ /** Telegram's inline-photo size cap; a photo-eligible file over this downgrades to a document. */
26
+ export declare const telegramPhotoMaxBytes: number;
27
+ /** Bot API hard send cap per file; anything over this is rejected, never sent. */
28
+ export declare const telegramSendMaxBytes: number;
29
+ /** Minimum item count that forms a media-group album (below ⇒ single send). */
30
+ export declare const mediaGroupMin = 2;
31
+ /** Maximum item count Telegram accepts in one media-group album. */
32
+ export declare const mediaGroupMax = 10;
33
+ /** Telegram caption length cap (characters); longer captions are trimmed. */
34
+ export declare const captionMaxLength = 1024;
35
+ /** Extensions rendered as inline photos (lowercased, leading dot). */
36
+ export declare const photoExtensions: readonly string[];
37
+ /** Extensions rendered as looping animations (lowercased, leading dot). */
38
+ export declare const animationExtensions: readonly string[];
39
+ /** Extensions rendered with Telegram's native streaming video player. */
40
+ export declare const videoExtensions: readonly string[];
41
+ /**
42
+ * @name FileSendKind
43
+ * @description How Telegram should render a file: inline `photo`, autoplay
44
+ * `animation` (gif), native `video`, or plain `document`.
45
+ */
46
+ export type FileSendKind = 'photo' | 'animation' | 'video' | 'document';
47
+ /**
48
+ * @name ResolveSendFileCode
49
+ * @description Stable failure code for {@link resolveSendFileWithinDir}, so the
50
+ * caller can build a readable, path-naming tool error per case.
51
+ */
52
+ export type ResolveSendFileCode = 'INVALID_CHARS' | 'OUTSIDE_FOLDER' | 'NOT_FOUND' | 'NOT_A_FILE';
53
+ /** Device/inode identity captured during canonical-path validation. */
54
+ export interface FileIdentity {
55
+ dev: bigint;
56
+ ino: bigint;
57
+ }
58
+ /**
59
+ * @name ResolveSendFileResult
60
+ * @description Discriminated outcome of resolving a single send path. `ok` carries
61
+ * the safe absolute path, its canonical root, and file identity; the failure
62
+ * carries a readable message + a stable code.
63
+ */
64
+ export type ResolveSendFileResult = {
65
+ ok: true;
66
+ absPath: string;
67
+ rootPath: string;
68
+ identity: FileIdentity;
69
+ } | {
70
+ ok: false;
71
+ error: string;
72
+ code: ResolveSendFileCode;
73
+ };
74
+ /**
75
+ * @description Resolve `rawPath` against the topic's bound `workDir` and confirm
76
+ * it points at a regular file living inside it. A multi-file caller supplies
77
+ * `pinnedRootPath` after the first item so a replaced binding cannot become a
78
+ * new trusted root between album items. Defence-in-depth mirrors
79
+ * `validateSubdir`: reject control chars, NFC-normalise, canonicalize the root,
80
+ * then use the shared canonical candidate containment gate. The final gate differs: this is for a
81
+ * FILE, so `statSync` must report a regular file (a directory or socket is
82
+ * rejected, not accepted).
83
+ */
84
+ export declare function resolveSendFileWithinDir(workDir: string, rawPath: string, pinnedRootPath?: string): ResolveSendFileResult;
85
+ /**
86
+ * @description Classify a path by its lowercased extension into the Telegram
87
+ * render kind. `.png/.jpg/.jpeg/.webp` → photo; `.gif` → animation; `.mp4` →
88
+ * video; anything else → document.
89
+ */
90
+ export declare function classifyFileSendKind(filePath: string): FileSendKind;
91
+ /** Derive a multipart-safe filename from a canonical file path. */
92
+ export declare function getTelegramUploadFilename(filePath: string): string;
93
+ /**
94
+ * @description Trim a caption to Telegram's {@link captionMaxLength} cap. Returns
95
+ * `undefined` for an absent/blank caption so callers can omit the field entirely.
96
+ */
97
+ export declare function trimCaption(caption: string | undefined): string | undefined;
98
+ /**
99
+ * @name FileSendItem
100
+ * @description One resolved file the planner reasons about: its safe absolute
101
+ * path, pinned descriptor snapshot, and render kind.
102
+ */
103
+ export interface FileSendItem {
104
+ absPath: string;
105
+ source: FileDescriptorSnapshot;
106
+ kind: FileSendKind;
107
+ }
108
+ /**
109
+ * @name FileSendPlan
110
+ * @description Discriminated send plan:
111
+ * - `kind: 'send'` — one file via a single Telegram method (`mode`).
112
+ * - `kind: 'album'` — 2..10 files via `sendMediaGroup`, either native photos /
113
+ * videos or all documents (`mode`).
114
+ * - `kind: 'error'` — a count/size violation; `error` names the offending file.
115
+ */
116
+ export type FileSendPlan = {
117
+ kind: 'send';
118
+ mode: FileSendKind;
119
+ item: FileSendItem;
120
+ } | {
121
+ kind: 'album';
122
+ mode: 'albumPhotoVideo' | 'albumDocument';
123
+ items: FileSendItem[];
124
+ } | {
125
+ kind: 'error';
126
+ error: string;
127
+ };
128
+ /** A validated plan that can be converted into a Telegram request. */
129
+ export type NonErrorFileSendPlan = Exclude<FileSendPlan, {
130
+ kind: 'error';
131
+ error: string;
132
+ }>;
133
+ /** Exact Bot API methods used for one-file sends. */
134
+ export type TelegramSingleFileSendMethod = 'sendPhoto' | 'sendAnimation' | 'sendVideo' | 'sendDocument';
135
+ /** Owned descriptor snapshot transferred from the reader to the send service. */
136
+ export interface FileDescriptorSnapshot {
137
+ fd: number;
138
+ filename: string;
139
+ sizeBytes: number;
140
+ }
141
+ export interface FileSendPhotoMedia {
142
+ type: 'photo';
143
+ media: FileDescriptorSnapshot;
144
+ caption?: string;
145
+ }
146
+ export interface FileSendVideoMedia {
147
+ type: 'video';
148
+ media: FileDescriptorSnapshot;
149
+ caption?: string;
150
+ }
151
+ export interface FileSendDocumentMedia {
152
+ type: 'document';
153
+ media: FileDescriptorSnapshot;
154
+ caption?: string;
155
+ }
156
+ /** Native photo/video group accepted by the file-send gateway. */
157
+ export interface FileSendPhotoVideoMediaGroup {
158
+ kind: 'photoVideo';
159
+ media: Array<FileSendPhotoMedia | FileSendVideoMedia>;
160
+ }
161
+ /** Homogeneous document group accepted by the file-send gateway. */
162
+ export interface FileSendDocumentMediaGroup {
163
+ kind: 'document';
164
+ media: FileSendDocumentMedia[];
165
+ }
166
+ /** Project-owned media group; the discriminant preserves Bot API homogeneity. */
167
+ export type FileSendMediaGroup = FileSendPhotoVideoMediaGroup | FileSendDocumentMediaGroup;
168
+ /** One-file request ready for `bot.telegram[method]`, apart from thread routing. */
169
+ export interface TelegramSingleFileSendRequest {
170
+ method: TelegramSingleFileSendMethod;
171
+ source: FileDescriptorSnapshot;
172
+ caption?: string;
173
+ }
174
+ /** Photo/video media-group request preserving each eligible item's native type. */
175
+ export interface TelegramPhotoVideoAlbumRequest {
176
+ method: 'sendMediaGroup';
177
+ mediaGroup: FileSendPhotoVideoMediaGroup;
178
+ }
179
+ /** Document media-group request used for every whole-album fallback. */
180
+ export interface TelegramDocumentAlbumRequest {
181
+ method: 'sendMediaGroup';
182
+ mediaGroup: FileSendDocumentMediaGroup;
183
+ }
184
+ /** Exact Telegram request built from a non-error file-send plan. */
185
+ export type TelegramFileSendRequest = TelegramSingleFileSendRequest | TelegramPhotoVideoAlbumRequest | TelegramDocumentAlbumRequest;
186
+ /**
187
+ * @description Convert a non-error plan into the exact Telegram request the bot
188
+ * executes. Captions are trimmed here and included on a single request or only
189
+ * the first media-group entry. `albumPhotoVideo` accepts only photo/video items;
190
+ * an impossible hand-built plan throws a path-naming error instead of silently
191
+ * sending another kind as a photo.
192
+ */
193
+ export declare function buildTelegramFileSendRequest(plan: NonErrorFileSendPlan, caption?: string): TelegramFileSendRequest;
194
+ /** Existing user-facing hard-cap error shared by planning and snapshot reads. */
195
+ export declare function getTelegramFileOversizeError(absPath: string): string;
196
+ /** Existing user-facing item-count validation shared by planning and the reader. */
197
+ export declare function getFileSendCountError(itemCount: number): string | null;
198
+ /**
199
+ * @description Decide how to deliver 1..10 resolved files.
200
+ *
201
+ * Single file: the method is the item's kind, with two overrides —
202
+ * - `asFile` forces `document` for every kind, and
203
+ * - a photo over {@link telegramPhotoMaxBytes} downgrades to `document` so it
204
+ * still goes through (just not inline).
205
+ *
206
+ * Album (2..10): `albumPhotoVideo` when `!asFile` and EVERY item is either a
207
+ * video or a photo within the photo cap, preserving each item's native media
208
+ * type in all-photo, all-video, and mixed photo/video groups. Otherwise use
209
+ * `albumDocument` (animations/documents and over-cap photos included — a media
210
+ * group cannot carry animation items, so a gif rides as a document in an album
211
+ * and only autoplays when sent alone).
212
+ *
213
+ * Returns an `error` plan for 0 items, >{@link mediaGroupMax}, or any item over
214
+ * {@link telegramSendMaxBytes}.
215
+ */
216
+ export declare function planFileSend(items: FileSendItem[], asFile: boolean): FileSendPlan;
217
+ //# sourceMappingURL=fileSendPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileSendPlan.d.ts","sourceRoot":"","sources":["../../src/utils/fileSendPlan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,kGAAkG;AAClG,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AAEtD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,QAAmB,CAAC;AAErD,+EAA+E;AAC/E,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,oEAAoE;AACpE,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,sEAAsE;AACtE,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAuC,CAAC;AAErF,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAa,CAAC;AAE/D,yEAAyE;AACzE,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAa,CAAC;AAK3D;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC;AAExE;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,gBAAgB,GAChB,WAAW,GACX,YAAY,CAAC;AAEjB,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE5D;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GACtB,qBAAqB,CAiDvB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAMnE;AAED,mEAAmE;AACnE,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAI3E;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,sEAAsE;AACtE,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3F,qDAAqD;AACrD,MAAM,MAAM,4BAA4B,GACpC,WAAW,GACX,eAAe,GACf,WAAW,GACX,cAAc,CAAC;AAEnB,iFAAiF;AACjF,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,kEAAkE;AAClE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;CACvD;AAED,oEAAoE;AACpE,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,qBAAqB,EAAE,CAAC;CAChC;AAED,iFAAiF;AACjF,MAAM,MAAM,kBAAkB,GAAG,4BAA4B,GAAG,0BAA0B,CAAC;AAE3F,oFAAoF;AACpF,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,4BAA4B,CAAC;IACrC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,mFAAmF;AACnF,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,4BAA4B,CAAC;CAC1C;AAED,wEAAwE;AACxE,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,0BAA0B,CAAC;CACxC;AAED,oEAAoE;AACpE,MAAM,MAAM,uBAAuB,GAC/B,6BAA6B,GAC7B,8BAA8B,GAC9B,4BAA4B,CAAC;AA0BjC;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,oBAAoB,EAC1B,OAAO,CAAC,EAAE,MAAM,GACf,uBAAuB,CA0BzB;AAUD,iFAAiF;AACjF,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMtE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,YAAY,CAiCjF"}