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,84 @@
1
+ "use strict";
2
+ /**
3
+ * Pure helpers for naming bot-created OpenCode sessions.
4
+ *
5
+ * Primary mechanism (R1, verified live 2026-06-04): a session created WITHOUT
6
+ * an explicit `title` lets opencode auto-name it from the first prompt's LLM
7
+ * turn — nicer than any raw snippet, and it ignores the glued thread-context
8
+ * preamble. A session created WITH a title is treated as user-set and never
9
+ * auto-renamed, so the bot only passes a title for the explicit `/opencode
10
+ * <args>` case.
11
+ *
12
+ * Fallback mechanism: if auto-title never lands (the title stays the bare
13
+ * `New session - <ts>` placeholder — e.g. the server failed to generate one),
14
+ * the adapter renames the session itself via `PATCH /session/:id {title}` on
15
+ * the first MEANINGFUL prompt, using {@link buildSessionTitleSnippet}. The
16
+ * snippet always derives from the RAW user text (the caller strips the
17
+ * preamble first), so it can never carry the service header.
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.sessionTitleSnippetMaxLength = exports.meaningfulPromptMinLength = void 0;
21
+ exports.checkIsMeaningfulPrompt = checkIsMeaningfulPrompt;
22
+ exports.buildSessionTitleSnippet = buildSessionTitleSnippet;
23
+ exports.checkIsPlaceholderTitle = checkIsPlaceholderTitle;
24
+ const threadContextPreamble_1 = require("./threadContextPreamble");
25
+ /**
26
+ * Minimum length (chars, after trim) for a prompt to count as "meaningful"
27
+ * enough to name a session after. Short acknowledgements ("да", "go", "ok")
28
+ * sit below it and leave the name to be decided by a later, substantial
29
+ * prompt. 10 is the locked value from the plan's IDEAL.
30
+ */
31
+ exports.meaningfulPromptMinLength = 10;
32
+ /** Max length (chars) of a fallback snippet title; longer text is truncated. */
33
+ exports.sessionTitleSnippetMaxLength = 60;
34
+ /** Marker appended when a snippet is truncated, so the cut is visible. */
35
+ const truncationEllipsis = '…';
36
+ /**
37
+ * Placeholder titles opencode assigns to a session that has no real name yet:
38
+ * the `New session - <ISO timestamp>` form (untitled create) and the legacy
39
+ * `Telegram session <key>` the bot used to set. A title matching either is
40
+ * "not yet meaningfully named", so the fallback rename may overwrite it; any
41
+ * other title is a real name (auto-generated or user-set) and is left alone.
42
+ */
43
+ const untitledPlaceholderPrefix = 'New session - ';
44
+ const legacyBotTitlePrefix = 'Telegram session ';
45
+ /**
46
+ * @description Whether a forwarded prompt is substantial enough to name a
47
+ * session after. A slash command (`/clear`, `/model …`) is a control token,
48
+ * never a name source; anything shorter than {@link meaningfulPromptMinLength}
49
+ * is a throwaway acknowledgement. The argument MUST be the RAW user text —
50
+ * strip the thread-context preamble before calling (see
51
+ * {@link buildSessionTitleSnippet} for the same requirement).
52
+ */
53
+ function checkIsMeaningfulPrompt(rawText) {
54
+ const trimmed = rawText.trim();
55
+ if (trimmed.startsWith('/'))
56
+ return false;
57
+ return trimmed.length >= exports.meaningfulPromptMinLength;
58
+ }
59
+ /**
60
+ * @description Build a fallback session-title snippet from the first
61
+ * meaningful prompt. Collapses all internal whitespace (incl. newlines) to
62
+ * single spaces, trims, and truncates to {@link sessionTitleSnippetMaxLength}
63
+ * with an ellipsis. The thread-context preamble is stripped first so the title
64
+ * reflects what the USER said, never the bot's glue.
65
+ */
66
+ function buildSessionTitleSnippet(rawText) {
67
+ const withoutPreamble = (0, threadContextPreamble_1.stripThreadContextPreamble)(rawText);
68
+ const collapsed = withoutPreamble.replace(/\s+/g, ' ').trim();
69
+ if (collapsed.length <= exports.sessionTitleSnippetMaxLength)
70
+ return collapsed;
71
+ // Reserve one char for the ellipsis so the result never exceeds the cap.
72
+ return collapsed.slice(0, exports.sessionTitleSnippetMaxLength - 1).trimEnd() + truncationEllipsis;
73
+ }
74
+ /**
75
+ * @description Whether `title` is one of opencode's "no real name yet"
76
+ * placeholders, so the fallback rename is allowed to overwrite it. A real
77
+ * auto-generated or user-set title returns `false` and is left untouched.
78
+ */
79
+ function checkIsPlaceholderTitle(title) {
80
+ if (!title)
81
+ return true;
82
+ return title.startsWith(untitledPlaceholderPrefix) || title.startsWith(legacyBotTitlePrefix);
83
+ }
84
+ //# sourceMappingURL=openCodeSessionTitle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openCodeSessionTitle.js","sourceRoot":"","sources":["../src/openCodeSessionTitle.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAoCH,0DAIC;AASD,4DAMC;AAOD,0DAGC;AA/DD,mEAAqE;AAErE;;;;;GAKG;AACU,QAAA,yBAAyB,GAAG,EAAE,CAAC;AAE5C,gFAAgF;AACnE,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AACnD,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,OAAO,CAAC,MAAM,IAAI,iCAAyB,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,OAAe;IACtD,MAAM,eAAe,GAAG,IAAA,kDAA0B,EAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,IAAI,SAAS,CAAC,MAAM,IAAI,oCAA4B;QAAE,OAAO,SAAS,CAAC;IACvE,yEAAyE;IACzE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,oCAA4B,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,kBAAkB,CAAC;AAC7F,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAyB;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,KAAK,CAAC,UAAU,CAAC,yBAAyB,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC/F,CAAC"}
@@ -0,0 +1,108 @@
1
+ import type { SessionKey } from './sessionKey';
2
+ /**
3
+ * @description Snapshot of the persisted trace toggle. Mirrors what is stored
4
+ * in `state.json` so the bot can read the current config back for `/trace`
5
+ * status replies and re-seed this module after a restart.
6
+ */
7
+ export interface TraceConfig {
8
+ allThreads: boolean;
9
+ threadKeys: string[];
10
+ }
11
+ /**
12
+ * @description Replace the in-memory trace toggle from persisted state. Called
13
+ * once at boot (seed from `state.json`) and again on every `/trace` mutation so
14
+ * the writer and the persisted record never drift. Lifecycle-independent: only
15
+ * `/trace` touches it — session stop/new/quit/resume/unbind never do.
16
+ */
17
+ export declare function setTraceConfig(config: TraceConfig): void;
18
+ /** Current trace toggle as a plain snapshot — for `/trace` status + persistence. */
19
+ export declare function getTraceConfig(): TraceConfig;
20
+ /**
21
+ * @description Whether ANY tracing is active (all-flag set OR at least one
22
+ * thread opted in). The single fast-path gate every hook hits first — when it
23
+ * returns false the hook does no work beyond this check.
24
+ */
25
+ export declare function checkIsTracingActive(): boolean;
26
+ /**
27
+ * @description Whether a specific thread's events should be recorded:
28
+ * the all-flag covers everything, otherwise the thread must be opted in.
29
+ */
30
+ export declare function checkIsThreadTraced(key: SessionKey): boolean;
31
+ /**
32
+ * @description Delete trace buckets older than the shared 6h retention window
33
+ * (the hourly `output-trace-*.jsonl` files + their `.1` siblings). Best-effort;
34
+ * called at boot and on the file-sweep interval by the bot's janitor.
35
+ */
36
+ export declare function pruneTraceBuckets(nowMs: number): Promise<void>;
37
+ /**
38
+ * @description Truncate `text` to a greppable one-liner without splitting a
39
+ * UTF-16 surrogate pair. A naive `slice(0, 120)` can cut between the high and
40
+ * low half of an emoji, leaving a lone high surrogate that serialises to an
41
+ * unpaired `\ud83d` and breaks `jq` consumers of the trace file (observed in
42
+ * the real trace). If the slice ends on a high surrogate we drop that trailing
43
+ * half so only whole code points survive.
44
+ */
45
+ export declare function createTracePreview(text: string): string;
46
+ /**
47
+ * @description Filesystem + timer seams the buffered writer depends on. Tests
48
+ * inject fakes so they can assert flush ordering / threshold / rotation /
49
+ * exit-flush deterministically without real IO or wall-clock timers.
50
+ */
51
+ export interface TraceWriterDeps {
52
+ appendFile(filePath: string, data: string): Promise<void>;
53
+ appendFileSync(filePath: string, data: string): void;
54
+ mkdir(dirPath: string): Promise<void>;
55
+ /** File size in bytes, or null if the file does not exist. */
56
+ getFileSize(filePath: string): Promise<number | null>;
57
+ rename(fromPath: string, toPath: string): Promise<void>;
58
+ setTimer(callback: () => void, ms: number): unknown;
59
+ clearTimer(handle: unknown): void;
60
+ }
61
+ /**
62
+ * @description Override the writer's fs/timer seams (tests only). Also resets
63
+ * the buffer + flush state so each test starts clean. Returns a restore fn.
64
+ */
65
+ export declare function configureTraceWriterForTests(deps: Partial<TraceWriterDeps>): () => void;
66
+ /**
67
+ * @description Best-effort SYNCHRONOUS flush of whatever is still buffered.
68
+ * Registered on `process.on('exit')` — exit handlers can only do sync work, so
69
+ * the async writer would otherwise lose the final unflushed window on shutdown.
70
+ */
71
+ export declare function flushTraceBufferSyncOnExit(): void;
72
+ export interface RecvTraceFields {
73
+ updateType: string;
74
+ updateId: number;
75
+ fromId?: number;
76
+ chatId?: number;
77
+ threadId?: number;
78
+ preview?: string;
79
+ /** Telegram-side `message.date` in seconds — lets us compute receive latency. */
80
+ tgDateSec?: number;
81
+ }
82
+ /**
83
+ * @description Record an incoming update the moment the first middleware sees
84
+ * it — only if the update's own thread is traced. The key is built the same way
85
+ * routing does (`{chatId, threadId}`); a missing thread id maps to the General
86
+ * topic's `threadId: 1` so it filters consistently. When `chatId` is absent
87
+ * (rare service updates) we can't derive a key, so it records only under the
88
+ * all-flag.
89
+ */
90
+ export declare function traceRecvUpdate(fields: RecvTraceFields): void;
91
+ /** Record an adapter `output`/`status`/`thinking`/`toolResult` event entering the bot's send path. */
92
+ export declare function traceAgentEmit(event: 'output' | 'status' | 'thinking' | 'toolResult', key: SessionKey, text: string): void;
93
+ /**
94
+ * @description Structural view of `Telegram`/`ApiClient` — just enough to wrap
95
+ * `callApi`. Method syntax keeps `Telegram` assignable (bivariant params), and
96
+ * lets unit tests pass a plain fake instead of booting Telegraf.
97
+ */
98
+ export interface CallApiHost {
99
+ callApi(method: string, payload: object, options?: object): Promise<object | boolean | number | string>;
100
+ }
101
+ /**
102
+ * @description Wrap `telegram.callApi` so every outgoing Bot API call is
103
+ * traced with its outcome. Installed unconditionally at boot — when tracing is
104
+ * off each call costs one boolean check. The wrap sits BELOW `enqueueSend`'s
105
+ * queue/bucket/429-retry layers, so each real HTTP attempt traces separately.
106
+ */
107
+ export declare function installCallApiTrace(host: CallApiHost): void;
108
+ //# sourceMappingURL=outputTrace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputTrace.d.ts","sourceRoot":"","sources":["../src/outputTrace.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA8D/C;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAIxD;AAED,oFAAoF;AACpF,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAE5D;AAcD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQvD;AAMD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,8DAA8D;IAC9D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACpD,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC;AAgCD;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,IAAI,CAavF;AAsDD;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAcjD;AAiBD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAW7D;AAcD,sGAAsG;AACtG,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ1H;AAyED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;CACzG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CA4B3D"}
@@ -0,0 +1,430 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.setTraceConfig = setTraceConfig;
7
+ exports.getTraceConfig = getTraceConfig;
8
+ exports.checkIsTracingActive = checkIsTracingActive;
9
+ exports.checkIsThreadTraced = checkIsThreadTraced;
10
+ exports.pruneTraceBuckets = pruneTraceBuckets;
11
+ exports.createTracePreview = createTracePreview;
12
+ exports.configureTraceWriterForTests = configureTraceWriterForTests;
13
+ exports.flushTraceBufferSyncOnExit = flushTraceBufferSyncOnExit;
14
+ exports.traceRecvUpdate = traceRecvUpdate;
15
+ exports.traceAgentEmit = traceAgentEmit;
16
+ exports.installCallApiTrace = installCallApiTrace;
17
+ const node_fs_1 = require("node:fs");
18
+ const node_fs_2 = require("node:fs");
19
+ const node_path_1 = __importDefault(require("node:path"));
20
+ const state_1 = require("./state");
21
+ const rotatingLogFile_1 = require("./utils/rotatingLogFile");
22
+ const threadRouting_1 = require("./threadRouting");
23
+ const sessionKey_1 = require("./sessionKey");
24
+ const sessionKeyCodec_1 = require("./connectors/telegram/sessionKeyCodec");
25
+ /**
26
+ * @description Output-trace special mode: a JSONL record of what the bot
27
+ * factually did versus what reached Telegram, so live verification can diff
28
+ * `emit → sendTry → sendOk/sendErr` against `get_history` instead of guessing
29
+ * from the controlling terminal (which is not capturable after the fact).
30
+ *
31
+ * Toggled at RUNTIME via the `/trace` command (no boot-time env var anymore):
32
+ * - `/trace on` — trace THIS topic's events
33
+ * - `/trace on all` — trace every thread (cross-thread forensics)
34
+ * - `/trace off` — stop tracing this topic
35
+ * - `/trace off all`— clear the all-threads flag AND the per-thread set
36
+ * The toggle state is persisted in `state.json` and seeded back into this
37
+ * module at boot via {@link setTraceConfig}, so it survives hot rebuilds.
38
+ *
39
+ * ON by default for ALL threads (always-on observability): a fresh state file
40
+ * reads back `allThreads: true`, so every thread is recorded with zero setup.
41
+ * `/trace off all` turns it off DURABLY. When tracing IS off (off-all + no
42
+ * opted-in thread) every hook early-returns after one cheap boolean / `Set`
43
+ * check (zero IO).
44
+ *
45
+ * When ON the writer is async-buffered: {@link appendTraceEntry} builds the
46
+ * JSON line immediately and pushes it to an in-memory buffer; a single-flight
47
+ * background flush (`fsp.appendFile`) drains the whole buffer at once, armed
48
+ * by a {@link traceFlushIntervalMs} timer or a {@link traceFlushMaxEntries}
49
+ * length threshold. A `process.on('exit')` hook does a best-effort SYNC flush
50
+ * of the remainder. Entries land in an hourly bucket file
51
+ * `DATA_DIR/output-trace-YYYYMMDDHH.jsonl` (size-capped per bucket with a single
52
+ * `.1` rollover like `diagLog.ts`); buckets older than 6h are pruned by the
53
+ * bot's janitor via {@link pruneTraceBuckets}.
54
+ *
55
+ * Entry kinds:
56
+ * - `recv` — incoming Telegram update (middleware): type, from, preview,
57
+ * latency vs the update's own timestamp
58
+ * - `emit` — adapter `output`/`status` event entering the bot send path
59
+ * - `sendTry` / `sendOk` / `sendErr` — every outgoing Bot API call, recorded
60
+ * at the `callApi` chokepoint (i.e. AFTER queue/bucket waits;
61
+ * each 429 retry attempt is its own try/err pair)
62
+ */
63
+ const maxTraceBytes = 10 * 1024 * 1024;
64
+ const previewLength = 120;
65
+ /** Bucket file base + extension — `output-trace-YYYYMMDDHH.jsonl` per hour. */
66
+ const traceFileBase = 'output-trace';
67
+ const traceFileExt = 'jsonl';
68
+ /** Flush the buffer at least this often (ms) even if it never fills up. */
69
+ const traceFlushIntervalMs = 500;
70
+ /** Flush early once the buffer reaches this many lines (bounds memory + lag). */
71
+ const traceFlushMaxEntries = 200;
72
+ /** Unicode high-surrogate range — a lone leading half breaks JSON consumers. */
73
+ const highSurrogateMin = 0xd800;
74
+ const highSurrogateMax = 0xdbff;
75
+ // ─── runtime toggle state (seeded from state.json at boot via setTraceConfig) ───
76
+ /** When true every thread is traced (cross-thread forensics). */
77
+ let traceAllThreads = false;
78
+ /** SessionKey strings (`"<chatId>:<threadId>"`) explicitly opted into tracing. */
79
+ const tracedThreadKeys = new Set();
80
+ /**
81
+ * @description Replace the in-memory trace toggle from persisted state. Called
82
+ * once at boot (seed from `state.json`) and again on every `/trace` mutation so
83
+ * the writer and the persisted record never drift. Lifecycle-independent: only
84
+ * `/trace` touches it — session stop/new/quit/resume/unbind never do.
85
+ */
86
+ function setTraceConfig(config) {
87
+ traceAllThreads = config.allThreads;
88
+ tracedThreadKeys.clear();
89
+ for (const keyStr of config.threadKeys)
90
+ tracedThreadKeys.add(keyStr);
91
+ }
92
+ /** Current trace toggle as a plain snapshot — for `/trace` status + persistence. */
93
+ function getTraceConfig() {
94
+ return { allThreads: traceAllThreads, threadKeys: [...tracedThreadKeys] };
95
+ }
96
+ /**
97
+ * @description Whether ANY tracing is active (all-flag set OR at least one
98
+ * thread opted in). The single fast-path gate every hook hits first — when it
99
+ * returns false the hook does no work beyond this check.
100
+ */
101
+ function checkIsTracingActive() {
102
+ return traceAllThreads || tracedThreadKeys.size > 0;
103
+ }
104
+ /**
105
+ * @description Whether a specific thread's events should be recorded:
106
+ * the all-flag covers everything, otherwise the thread must be opted in.
107
+ */
108
+ function checkIsThreadTraced(key) {
109
+ return traceAllThreads || tracedThreadKeys.has((0, sessionKey_1.keyToString)(key));
110
+ }
111
+ /**
112
+ * @description Path of the CURRENT hour's trace bucket
113
+ * (`DATA_DIR/output-trace-YYYYMMDDHH.jsonl`). Recomputed per flush so the writer
114
+ * rolls into a fresh file every hour with no live-file trimming — old buckets
115
+ * are pruned wholesale by {@link pruneTraceBuckets} (a writer never touches a
116
+ * past bucket, so prune races nothing). The per-bucket 10MB `.1` rollover still
117
+ * applies WITHIN an hour.
118
+ */
119
+ function getTraceFilePath() {
120
+ return (0, rotatingLogFile_1.getHourBucketPath)((0, state_1.resolveDataDir)(), traceFileBase, traceFileExt, Date.now());
121
+ }
122
+ /**
123
+ * @description Delete trace buckets older than the shared 6h retention window
124
+ * (the hourly `output-trace-*.jsonl` files + their `.1` siblings). Best-effort;
125
+ * called at boot and on the file-sweep interval by the bot's janitor.
126
+ */
127
+ function pruneTraceBuckets(nowMs) {
128
+ return (0, rotatingLogFile_1.pruneExpiredBuckets)((0, state_1.resolveDataDir)(), traceFileBase, traceFileExt, rotatingLogFile_1.retentionMs, nowMs);
129
+ }
130
+ /**
131
+ * @description Truncate `text` to a greppable one-liner without splitting a
132
+ * UTF-16 surrogate pair. A naive `slice(0, 120)` can cut between the high and
133
+ * low half of an emoji, leaving a lone high surrogate that serialises to an
134
+ * unpaired `\ud83d` and breaks `jq` consumers of the trace file (observed in
135
+ * the real trace). If the slice ends on a high surrogate we drop that trailing
136
+ * half so only whole code points survive.
137
+ */
138
+ function createTracePreview(text) {
139
+ if (text.length <= previewLength)
140
+ return text;
141
+ let cut = previewLength;
142
+ const lastCharCode = text.charCodeAt(cut - 1);
143
+ if (lastCharCode >= highSurrogateMin && lastCharCode <= highSurrogateMax) {
144
+ cut -= 1;
145
+ }
146
+ return `${text.slice(0, cut)}…`;
147
+ }
148
+ const defaultWriterDeps = {
149
+ // Trace lines quote message previews / agent output → files are owner-only
150
+ // (0600; mode applies at creation), and DATA_DIR is created owner-only too.
151
+ appendFile: (filePath, data) => node_fs_1.promises.appendFile(filePath, data, { mode: 0o600 }),
152
+ appendFileSync: (filePath, data) => (0, node_fs_2.appendFileSync)(filePath, data, { mode: 0o600 }),
153
+ mkdir: async (dirPath) => {
154
+ await node_fs_1.promises.mkdir(dirPath, { recursive: true, mode: 0o700 });
155
+ },
156
+ getFileSize: async (filePath) => {
157
+ try {
158
+ return (await node_fs_1.promises.stat(filePath)).size;
159
+ }
160
+ catch {
161
+ return null;
162
+ }
163
+ },
164
+ rename: (fromPath, toPath) => node_fs_1.promises.rename(fromPath, toPath),
165
+ setTimer: (callback, ms) => setTimeout(callback, ms),
166
+ clearTimer: (handle) => clearTimeout(handle),
167
+ };
168
+ let writerDeps = defaultWriterDeps;
169
+ /** Lines waiting to be flushed, in arrival order. */
170
+ let traceBuffer = [];
171
+ /** A flush is currently in flight — defer the next one (single-flight order). */
172
+ let isFlushing = false;
173
+ /** Armed flush timer handle (or null when none is pending). */
174
+ let flushTimerHandle = null;
175
+ /** mkdir is issued once per process, not per entry. */
176
+ let isTraceDirEnsured = false;
177
+ /**
178
+ * @description Override the writer's fs/timer seams (tests only). Also resets
179
+ * the buffer + flush state so each test starts clean. Returns a restore fn.
180
+ */
181
+ function configureTraceWriterForTests(deps) {
182
+ writerDeps = { ...defaultWriterDeps, ...deps };
183
+ traceBuffer = [];
184
+ isFlushing = false;
185
+ flushTimerHandle = null;
186
+ isTraceDirEnsured = false;
187
+ return () => {
188
+ writerDeps = defaultWriterDeps;
189
+ traceBuffer = [];
190
+ isFlushing = false;
191
+ flushTimerHandle = null;
192
+ isTraceDirEnsured = false;
193
+ };
194
+ }
195
+ function armFlushTimer() {
196
+ if (flushTimerHandle !== null)
197
+ return;
198
+ flushTimerHandle = writerDeps.setTimer(() => {
199
+ flushTimerHandle = null;
200
+ void flushTraceBuffer();
201
+ }, traceFlushIntervalMs);
202
+ }
203
+ /**
204
+ * @description Rotate the trace file to `.1` if it has grown past the cap.
205
+ * Checked once per flush (not per entry) to keep the hot path append-only.
206
+ */
207
+ async function rotateIfOversized(filePath) {
208
+ const size = await writerDeps.getFileSize(filePath);
209
+ if (size === null || size <= maxTraceBytes)
210
+ return;
211
+ await writerDeps.rename(filePath, `${filePath}.1`);
212
+ }
213
+ /**
214
+ * @description Drain the whole buffer into one `appendFile`. Single-flight: if
215
+ * a flush is already running, we return and the in-flight flush re-checks the
216
+ * buffer when it finishes, so lines are appended strictly in arrival order with
217
+ * no interleaving. Never throws — tracing must not be able to take the bot down.
218
+ */
219
+ async function flushTraceBuffer() {
220
+ if (isFlushing)
221
+ return;
222
+ if (traceBuffer.length === 0)
223
+ return;
224
+ isFlushing = true;
225
+ try {
226
+ const filePath = getTraceFilePath();
227
+ if (!isTraceDirEnsured) {
228
+ await writerDeps.mkdir(node_path_1.default.dirname(filePath));
229
+ isTraceDirEnsured = true;
230
+ }
231
+ await rotateIfOversized(filePath);
232
+ // Snapshot + clear BEFORE the await so concurrent pushes land in a fresh
233
+ // buffer and are flushed by the re-check below, never lost or reordered.
234
+ const pending = traceBuffer;
235
+ traceBuffer = [];
236
+ await writerDeps.appendFile(filePath, pending.join(''));
237
+ }
238
+ catch {
239
+ // Tracing is best-effort; a logging failure must never break the bot.
240
+ }
241
+ finally {
242
+ isFlushing = false;
243
+ // A push (or another rotation-deferred chunk) may have arrived mid-flush.
244
+ if (traceBuffer.length > 0) {
245
+ if (traceBuffer.length >= traceFlushMaxEntries)
246
+ void flushTraceBuffer();
247
+ else
248
+ armFlushTimer();
249
+ }
250
+ }
251
+ }
252
+ /**
253
+ * @description Best-effort SYNCHRONOUS flush of whatever is still buffered.
254
+ * Registered on `process.on('exit')` — exit handlers can only do sync work, so
255
+ * the async writer would otherwise lose the final unflushed window on shutdown.
256
+ */
257
+ function flushTraceBufferSyncOnExit() {
258
+ if (traceBuffer.length === 0)
259
+ return;
260
+ try {
261
+ const filePath = getTraceFilePath();
262
+ (0, node_fs_2.mkdirSync)(node_path_1.default.dirname(filePath), { recursive: true, mode: 0o700 });
263
+ if ((0, node_fs_2.existsSync)(filePath) && (0, node_fs_2.statSync)(filePath).size > maxTraceBytes) {
264
+ (0, node_fs_2.renameSync)(filePath, `${filePath}.1`);
265
+ }
266
+ const pending = traceBuffer;
267
+ traceBuffer = [];
268
+ writerDeps.appendFileSync(filePath, pending.join(''));
269
+ }
270
+ catch {
271
+ // Best-effort on shutdown; a failure here must not block the exit.
272
+ }
273
+ }
274
+ /**
275
+ * @description Build one trace entry and enqueue it for the buffered writer.
276
+ * The JSON line is materialised immediately (the field object is not retained),
277
+ * then a flush is triggered on the length threshold or armed on the timer.
278
+ * `undefined` fields are dropped by `JSON.stringify`.
279
+ */
280
+ function appendTraceEntry(kind, fields) {
281
+ traceBuffer.push(`${JSON.stringify({ ts: new Date().toISOString(), kind, ...fields })}\n`);
282
+ if (traceBuffer.length >= traceFlushMaxEntries) {
283
+ void flushTraceBuffer();
284
+ }
285
+ else {
286
+ armFlushTimer();
287
+ }
288
+ }
289
+ /**
290
+ * @description Record an incoming update the moment the first middleware sees
291
+ * it — only if the update's own thread is traced. The key is built the same way
292
+ * routing does (`{chatId, threadId}`); a missing thread id maps to the General
293
+ * topic's `threadId: 1` so it filters consistently. When `chatId` is absent
294
+ * (rare service updates) we can't derive a key, so it records only under the
295
+ * all-flag.
296
+ */
297
+ function traceRecvUpdate(fields) {
298
+ if (!checkIsTracingActive())
299
+ return;
300
+ const { tgDateSec, preview, chatId, threadId, ...rest } = fields;
301
+ if (!checkIsRecvThreadTraced(chatId, threadId))
302
+ return;
303
+ appendTraceEntry('recv', {
304
+ ...rest,
305
+ chatId,
306
+ threadId,
307
+ preview: preview === undefined ? undefined : createTracePreview(preview),
308
+ latencyMs: tgDateSec === undefined ? undefined : Date.now() - tgDateSec * 1000,
309
+ });
310
+ }
311
+ /**
312
+ * @description Decide whether a recv update belongs to a traced thread. The
313
+ * all-flag covers everything. Otherwise we need a chat id to build the key;
314
+ * a thread-less message (no `message_thread_id`) is the General topic, which
315
+ * routing keys under `GENERAL_THREAD_ID`.
316
+ */
317
+ function checkIsRecvThreadTraced(chatId, threadId) {
318
+ if (traceAllThreads)
319
+ return true;
320
+ if (chatId === undefined)
321
+ return false;
322
+ return tracedThreadKeys.has((0, sessionKey_1.keyToString)((0, sessionKeyCodec_1.makeTelegramKey)(chatId, threadId ?? threadRouting_1.GENERAL_THREAD_ID)));
323
+ }
324
+ /** Record an adapter `output`/`status`/`thinking`/`toolResult` event entering the bot's send path. */
325
+ function traceAgentEmit(event, key, text) {
326
+ if (!checkIsThreadTraced(key))
327
+ return;
328
+ appendTraceEntry('emit', {
329
+ event,
330
+ key: (0, sessionKey_1.keyToString)(key),
331
+ len: text.length,
332
+ preview: createTracePreview(text),
333
+ });
334
+ }
335
+ function extractTelegramErrorFields(err) {
336
+ if (typeof err !== 'object' || err === null) {
337
+ return { error: JSON.stringify(err) };
338
+ }
339
+ const e = err;
340
+ return {
341
+ errorCode: e.response?.error_code,
342
+ description: e.response?.description,
343
+ retryAfterSec: e.response?.parameters?.retry_after,
344
+ error: typeof e.message === 'string' ? e.message : undefined,
345
+ };
346
+ }
347
+ function getNumberField(source, field) {
348
+ const value = source[field];
349
+ return typeof value === 'number' ? value : undefined;
350
+ }
351
+ function getStringField(source, field) {
352
+ const value = source[field];
353
+ return typeof value === 'string' ? value : undefined;
354
+ }
355
+ function getBooleanField(source, field) {
356
+ const value = source[field];
357
+ return typeof value === 'boolean' ? value : undefined;
358
+ }
359
+ function extractApiCallFields(method, payload) {
360
+ const p = payload;
361
+ const text = getStringField(p, 'text');
362
+ return {
363
+ method,
364
+ chatId: getNumberField(p, 'chat_id'),
365
+ threadId: getNumberField(p, 'message_thread_id'),
366
+ messageId: getNumberField(p, 'message_id'),
367
+ callbackQueryId: getStringField(p, 'callback_query_id'),
368
+ // Whether a (un)pin / send suppresses the member notification — load-bearing
369
+ // for the question-pin "one question = one notification" rule (first pin
370
+ // notifies, repins are silent), so it must be visible in the trace.
371
+ disableNotification: getBooleanField(p, 'disable_notification'),
372
+ len: text?.length,
373
+ preview: text === undefined ? undefined : createTracePreview(text),
374
+ };
375
+ }
376
+ /**
377
+ * @description Decide whether an outgoing Bot API call should be recorded.
378
+ * A call WITH a derivable thread id (chat_id + the General-default thread)
379
+ * filters like recv/emit. A call with NO derivable thread id (e.g.
380
+ * `editMessageText` payloads carry only `message_id`) is recorded whenever ANY
381
+ * tracing is active — over-inclusion beats silently losing edit records
382
+ * (locked decision, plan S3).
383
+ */
384
+ function checkIsApiCallTraced(fields) {
385
+ if (traceAllThreads)
386
+ return true;
387
+ const chatId = typeof fields.chatId === 'number' ? fields.chatId : undefined;
388
+ if (chatId === undefined)
389
+ return true;
390
+ const threadId = typeof fields.threadId === 'number' ? fields.threadId : threadRouting_1.GENERAL_THREAD_ID;
391
+ return tracedThreadKeys.has((0, sessionKey_1.keyToString)((0, sessionKeyCodec_1.makeTelegramKey)(chatId, threadId)));
392
+ }
393
+ /**
394
+ * @description Wrap `telegram.callApi` so every outgoing Bot API call is
395
+ * traced with its outcome. Installed unconditionally at boot — when tracing is
396
+ * off each call costs one boolean check. The wrap sits BELOW `enqueueSend`'s
397
+ * queue/bucket/429-retry layers, so each real HTTP attempt traces separately.
398
+ */
399
+ function installCallApiTrace(host) {
400
+ const originalCallApi = host.callApi.bind(host);
401
+ host.callApi = async (method, payload, options) => {
402
+ if (!checkIsTracingActive())
403
+ return originalCallApi(method, payload, options);
404
+ const callFields = extractApiCallFields(method, payload);
405
+ if (!checkIsApiCallTraced(callFields))
406
+ return originalCallApi(method, payload, options);
407
+ appendTraceEntry('sendTry', callFields);
408
+ const startedAt = Date.now();
409
+ try {
410
+ const result = await originalCallApi(method, payload, options);
411
+ appendTraceEntry('sendOk', {
412
+ ...callFields,
413
+ durMs: Date.now() - startedAt,
414
+ resultMessageId: typeof result === 'object' && result !== null
415
+ ? getNumberField(result, 'message_id')
416
+ : undefined,
417
+ });
418
+ return result;
419
+ }
420
+ catch (err) {
421
+ appendTraceEntry('sendErr', {
422
+ ...callFields,
423
+ durMs: Date.now() - startedAt,
424
+ ...extractTelegramErrorFields(err),
425
+ });
426
+ throw err;
427
+ }
428
+ };
429
+ }
430
+ //# sourceMappingURL=outputTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputTrace.js","sourceRoot":"","sources":["../src/outputTrace.ts"],"names":[],"mappings":"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"}