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,148 @@
1
+ "use strict";
2
+ /**
3
+ * @description Pure decision layer for the boot-time readiness status message
4
+ * (plan 2026-07-12-startup-readiness-status). On startup the bot tells the owner
5
+ * whether it can process messages in the topics / group, or — if not — a numbered
6
+ * list of only the setup steps that are still unmet. This module holds the pure,
7
+ * unit-testable core: which items are unmet, whether the bot is ready, the
8
+ * cadence gate, and the full message composition (via an injected translate so
9
+ * the numbering / header logic is testable without the i18n runtime). `bot.ts`
10
+ * gathers the live facts and does the actual Telegram send.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.botRightLabels = void 0;
14
+ exports.getMissingBotRights = getMissingBotRights;
15
+ exports.formatMissingRights = formatMissingRights;
16
+ exports.buildReadinessReport = buildReadinessReport;
17
+ exports.checkShouldSendStartupStatus = checkShouldSendStartupStatus;
18
+ exports.resolveStartupTargets = resolveStartupTargets;
19
+ exports.buildStartupStatusText = buildStartupStatusText;
20
+ /** The order every checklist item renders in — matches the IDEAL list. */
21
+ const readinessItemOrder = [
22
+ 'create_group',
23
+ 'grant_admin',
24
+ 'bind_topic',
25
+ 'install_agent',
26
+ 'optional_groq',
27
+ 'optional_owner',
28
+ ];
29
+ /** The REQUIRED items — an unmet one makes the bot not-ready. */
30
+ const requiredItemKeys = [
31
+ 'create_group',
32
+ 'grant_admin',
33
+ 'bind_topic',
34
+ 'install_agent',
35
+ ];
36
+ /**
37
+ * @description Telegram's canonical permission names for the three rights the
38
+ * bot needs — proper nouns shown verbatim in the `grant_admin` item so the
39
+ * operator can find the exact toggles in Telegram's admin UI. Kept here (not in
40
+ * i18n) because they are feature identifiers, not translated prose.
41
+ */
42
+ exports.botRightLabels = {
43
+ manageTopics: 'Manage Topics',
44
+ pin: 'Pin Messages',
45
+ delete: 'Delete Messages',
46
+ };
47
+ /**
48
+ * @description The admin rights the bot is missing. A `null` rights object (not
49
+ * an admin / unreadable) counts as ALL three missing.
50
+ */
51
+ function getMissingBotRights(rights) {
52
+ if (!rights)
53
+ return ['manageTopics', 'pin', 'delete'];
54
+ const missing = [];
55
+ if (!rights.manageTopics)
56
+ missing.push('manageTopics');
57
+ if (!rights.pin)
58
+ missing.push('pin');
59
+ if (!rights.delete)
60
+ missing.push('delete');
61
+ return missing;
62
+ }
63
+ /** Join the missing rights into the human list for the `grant_admin` item copy. */
64
+ function formatMissingRights(keys) {
65
+ return keys.map((key) => exports.botRightLabels[key]).join(', ');
66
+ }
67
+ /**
68
+ * @description Turn the live facts into the readiness verdict.
69
+ *
70
+ * `isReady` is true iff NONE of the required items are unmet:
71
+ * groupPaired && all admin rights held && a binding exists && an agent CLI installed.
72
+ * The optional groq / owner items are informational — they populate `unmetKeys`
73
+ * (so they render inside a not-ready checklist) but never flip `isReady`.
74
+ *
75
+ * `grant_admin` is only unmet while a group IS paired (you cannot grant admin
76
+ * before the group exists — an unpaired bot shows `create_group` instead).
77
+ */
78
+ function buildReadinessReport(facts) {
79
+ const missingRights = facts.groupPaired ? getMissingBotRights(facts.botRights) : [];
80
+ const unmet = new Set();
81
+ if (!facts.groupPaired)
82
+ unmet.add('create_group');
83
+ if (facts.groupPaired && missingRights.length > 0)
84
+ unmet.add('grant_admin');
85
+ if (!facts.hasBinding)
86
+ unmet.add('bind_topic');
87
+ if (facts.availableAgents.length === 0)
88
+ unmet.add('install_agent');
89
+ if (!facts.hasGroq)
90
+ unmet.add('optional_groq');
91
+ if (!facts.ownerSet && facts.usedGeneralFallback)
92
+ unmet.add('optional_owner');
93
+ const isReady = requiredItemKeys.every((key) => !unmet.has(key));
94
+ const unmetKeys = readinessItemOrder.filter((key) => unmet.has(key));
95
+ return { isReady, unmetKeys, missingRights };
96
+ }
97
+ /**
98
+ * @description Cadence gate. A COLD start always sends (ready or not). A HOT
99
+ * reload stays silent when fully ready (no spam on frequent rebuilds) and sends
100
+ * only when something is missing.
101
+ */
102
+ function checkShouldSendStartupStatus(input) {
103
+ return !(input.isHotReload && input.isReady);
104
+ }
105
+ /**
106
+ * @description Resolve the ordered delivery targets for the boot-time status.
107
+ *
108
+ * The READY status is only meaningful in the owner's private DM, so it is
109
+ * DM-ONLY and NEVER falls back to the group's General topic (a "✅ Ready" in the
110
+ * shared group is pure noise). If there is no owner DM, a ready status resolves
111
+ * to an empty list — nothing is delivered (the caller logs it).
112
+ *
113
+ * The NOT-READY checklist is actionable, so it uses the owner DM when available
114
+ * and falls back to General otherwise (owner first):
115
+ *
116
+ * ready → hasOwnerTarget ? ['owner'] : [] (private-only, never 'general')
117
+ * not-ready → ['owner', 'general'] filtered to the available surfaces (owner first)
118
+ */
119
+ function resolveStartupTargets(isReady, hasOwnerTarget, hasGeneralTarget) {
120
+ if (isReady) {
121
+ return hasOwnerTarget ? ['owner'] : [];
122
+ }
123
+ const targets = [];
124
+ if (hasOwnerTarget)
125
+ targets.push('owner');
126
+ if (hasGeneralTarget)
127
+ targets.push('general');
128
+ return targets;
129
+ }
130
+ /**
131
+ * @description Compose the full status message. Ready ⇒ the short ready line.
132
+ * Not ready ⇒ a header followed by the unmet items renumbered 1..N (the
133
+ * `grant_admin` line interpolates the missing-rights list).
134
+ */
135
+ function buildStartupStatusText(report, translate) {
136
+ if (report.isReady) {
137
+ return translate('startup.ready');
138
+ }
139
+ const header = translate('startup.header_not_ready');
140
+ const lines = report.unmetKeys.map((key, index) => {
141
+ const itemText = key === 'grant_admin'
142
+ ? translate('startup.item.grant_admin', { missing: formatMissingRights(report.missingRights) })
143
+ : translate(`startup.item.${key}`);
144
+ return `${index + 1}. ${itemText}`;
145
+ });
146
+ return `${header}\n\n${lines.join('\n')}`;
147
+ }
148
+ //# sourceMappingURL=startupReadiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startupReadiness.js","sourceRoot":"","sources":["../../src/utils/startupReadiness.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AA+FH,kDAOC;AAGD,kDAEC;AAaD,oDAeC;AAOD,oEAKC;AAmBD,sDAYC;AAUD,wDAgBC;AA/ID,0EAA0E;AAC1E,MAAM,kBAAkB,GAAuB;IAC7C,cAAc;IACd,aAAa;IACb,YAAY;IACZ,eAAe;IACf,eAAe;IACf,gBAAgB;CACjB,CAAC;AAEF,iEAAiE;AACjE,MAAM,gBAAgB,GAAuB;IAC3C,cAAc;IACd,aAAa;IACb,YAAY;IACZ,eAAe;CAChB,CAAC;AAEF;;;;;GAKG;AACU,QAAA,cAAc,GAAgC;IACzD,YAAY,EAAE,eAAe;IAC7B,GAAG,EAAE,cAAc;IACnB,MAAM,EAAE,iBAAiB;CAC1B,CAAC;AAEF;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,MAA6B;IAC/D,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,YAAY;QAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mFAAmF;AACnF,SAAgB,mBAAmB,CAAC,IAAmB;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,oBAAoB,CAAC,KAAqB;IACxD,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,WAAW;QAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,WAAW,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5E,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,mBAAmB;QAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE9E,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAErE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,SAAgB,4BAA4B,CAAC,KAG5C;IACC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAKD;;;;;;;;;;;;;GAaG;AACH,SAAgB,qBAAqB,CACnC,OAAgB,EAChB,cAAuB,EACvB,gBAAyB;IAEzB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,IAAI,cAAc;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,gBAAgB;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC;AACjB,CAAC;AAKD;;;;GAIG;AACH,SAAgB,sBAAsB,CACpC,MAAuB,EACvB,SAAiC;IAEjC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,QAAQ,GACZ,GAAG,KAAK,aAAa;YACnB,CAAC,CAAC,SAAS,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/F,CAAC,CAAC,SAAS,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QACvC,OAAO,GAAG,KAAK,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,18 @@
1
+ export type StatusFlushAction = 'send' | 'skip' | 'defer';
2
+ export interface StatusFlushDecisionInput {
3
+ /** Frame the loop is about to send. */
4
+ nextText: string;
5
+ /** Last frame that successfully reached Telegram for this thread, or null. */
6
+ lastSentText: string | null;
7
+ /** Is the chat currently inside a Telegram 429 cooldown? */
8
+ isRateLimited: boolean;
9
+ }
10
+ /**
11
+ * @description Decide what the status-flush loop should do with `nextText`.
12
+ *
13
+ * Cooldown wins over dedup: while rate-limited we always `defer` (even an
14
+ * identical frame) so the loop exits leaving the latest `pendingText` for the
15
+ * post-cooldown flush, instead of spinning and re-checking the clock.
16
+ */
17
+ export declare function getStatusFlushAction(input: StatusFlushDecisionInput): StatusFlushAction;
18
+ //# sourceMappingURL=statusFlushDecision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statusFlushDecision.d.ts","sourceRoot":"","sources":["../../src/utils/statusFlushDecision.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,wBAAwB;IACvC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4DAA4D;IAC5D,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,wBAAwB,GAAG,iBAAiB,CAWvF"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getStatusFlushAction = getStatusFlushAction;
4
+ /**
5
+ * @description Pure decision for the per-thread status-coalescer flush loop:
6
+ * given the frame about to be sent, the last frame that actually reached
7
+ * Telegram, and whether the chat is in a 429 cooldown, decide what the loop
8
+ * should do with this frame.
9
+ *
10
+ * Extracted from `bot.ts`'s `flushStatusCoalescer` so the rule is unit-testable
11
+ * without the Telegraf / bucket machinery (same pattern as
12
+ * `clearThreadOutputQueues.ts`). Status frames are disposable spinner ticks:
13
+ * during congestion it is correct to drop or defer them rather than burn the
14
+ * chat-wide send budget that interactive command replies and agent output need.
15
+ *
16
+ * @name StatusFlushAction
17
+ * @description
18
+ * - `send` — text differs from the last sent frame and the chat is not in a
19
+ * cooldown: send it now.
20
+ * - `skip` — text equals the last sent frame after stripping the leading
21
+ * spinner glyph: sending it would either earn a `400 "message is not
22
+ * modified"` (truly identical) or an `editMessageText` that changed ONLY the
23
+ * rotating liveness glyph — a per-second edit purely for animation. Either
24
+ * way it wastes a token, so consume `pendingText` and move on. The native
25
+ * typing indicator already carries alive-ness; the visible status frame's
26
+ * glyph effectively freezes until the activity text actually changes.
27
+ * - `defer` — the chat is rate-limited: do NOT send (a stale spinner frame is
28
+ * not worth a token while a 429 cooldown is starving real traffic). Leave
29
+ * `pendingText` in place so the newest frame is sent once the cooldown lifts.
30
+ */
31
+ const claudeScrapeShapes_1 = require("./claudeScrapeShapes");
32
+ /**
33
+ * @description Decide what the status-flush loop should do with `nextText`.
34
+ *
35
+ * Cooldown wins over dedup: while rate-limited we always `defer` (even an
36
+ * identical frame) so the loop exits leaving the latest `pendingText` for the
37
+ * post-cooldown flush, instead of spinning and re-checking the clock.
38
+ */
39
+ function getStatusFlushAction(input) {
40
+ if (input.isRateLimited)
41
+ return 'defer';
42
+ if (input.lastSentText === null)
43
+ return 'send';
44
+ // Compare on a glyph-stripped signature: the liveness frame rotates its
45
+ // leading spinner glyph every tick, so an exact-string compare treated each
46
+ // cosmetic-only tick as new → one editMessageText per second. Equal after
47
+ // stripping the lead glyph ⇒ skip (no edit); a real activity-text change ⇒ send.
48
+ if ((0, claudeScrapeShapes_1.stripLeadingSpinnerGlyph)(input.nextText) === (0, claudeScrapeShapes_1.stripLeadingSpinnerGlyph)(input.lastSentText)) {
49
+ return 'skip';
50
+ }
51
+ return 'send';
52
+ }
53
+ //# sourceMappingURL=statusFlushDecision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statusFlushDecision.js","sourceRoot":"","sources":["../../src/utils/statusFlushDecision.ts"],"names":[],"mappings":";;AA+CA,oDAWC;AA1DD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,6DAAgE;AAahE;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,KAA+B;IAClE,IAAI,KAAK,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC;IACxC,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAC/C,wEAAwE;IACxE,4EAA4E;IAC5E,0EAA0E;IAC1E,iFAAiF;IACjF,IAAI,IAAA,6CAAwB,EAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAA,6CAAwB,EAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9F,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { DisplayVerbosityMode } from '../types';
2
+ /** Part kinds a sub-agent (child session) event can carry that the adapter
3
+ * must decide on. `step-start`/`step-finish`/unknown parts are skipped before
4
+ * the matrix is consulted (same as for the parent's own parts). */
5
+ export type SubagentPartKind = 'text' | 'tool' | 'reasoning';
6
+ /**
7
+ * @name SubagentPartAction
8
+ * @description What the adapter does with one sub-agent part event.
9
+ *
10
+ * - `status` — emit/refresh a transient status only (for `text` that is the
11
+ * rolling "🤖 sub-agent: <title> …" line; for `tool` the generic 🔧 line).
12
+ * - `stream` — accumulate into the SEPARATE child accumulator and emit as
13
+ * marked `output` (`meta.isSubagent`). Never the parent accumulator.
14
+ * - `ignore` — drop entirely (no status, no output, no toolResult).
15
+ */
16
+ export type SubagentPartAction = 'status' | 'stream' | 'ignore';
17
+ /**
18
+ * @description The sub-agent mode×part-kind matrix:
19
+ * ```
20
+ * minimal/short full
21
+ * text status stream
22
+ * tool ignore status
23
+ * reasoning ignore ignore
24
+ * ```
25
+ * `minimal` and `short` are EQUIVALENT here (the v1 contract on the unified
26
+ * vocabulary): both are status-only, because the "working" indicator is never
27
+ * hidden (locked decision — see {@link DisplayVerbosityMode}). Reasoning is
28
+ * `ignore` in EVERY mode — child chain-of-thought is never rendered (locked
29
+ * decision). Non-`full` ignores child tool parts because their generic 🔧
30
+ * statuses would overwrite the single sub-agent status line. Child toolResult
31
+ * bodies are suppressed in ALL modes (handled by the adapter outside this
32
+ * matrix): the parent's `task` tool output already carries the child's final
33
+ * result.
34
+ */
35
+ export declare function getSubagentPartAction(mode: DisplayVerbosityMode, partKind: SubagentPartKind): SubagentPartAction;
36
+ /**
37
+ * @description Build the parent-side "Delegating" activity status
38
+ * ("🤖 Delegating: <title> …") rendered while the parent's delegation (`task`)
39
+ * tool part is pending/running (S5) — in `full` mode only (in `minimal`/`short`
40
+ * the dedicated self-updating sub-agent status message owns this indicator; see
41
+ * `utils/subagentStatusRender.ts`). `title` is the part's `state.title` falling
42
+ * back to its `input.description`; `null` (neither present) falls back to the
43
+ * same localized generic label.
44
+ */
45
+ export declare function buildDelegatingStatusText(title: string | null): string;
46
+ /**
47
+ * @description The marker prepended to every full-mode sub-agent chunk
48
+ * ("🤖 ⤷") so a streamed child transcript is visually separated from the main
49
+ * agent's reply.
50
+ */
51
+ export declare function buildSubagentOutputPrefix(): string;
52
+ //# sourceMappingURL=subagentRender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagentRender.d.ts","sourceRoot":"","sources":["../../src/utils/subagentRender.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErD;;mEAEmE;AACnE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,gBAAgB,GAAG,kBAAkB,CAIhH;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSubagentPartAction = getSubagentPartAction;
4
+ exports.buildDelegatingStatusText = buildDelegatingStatusText;
5
+ exports.buildSubagentOutputPrefix = buildSubagentOutputPrefix;
6
+ /**
7
+ * @description Decision + formatting helpers for sub-agent rendering behind
8
+ * `/subagent` (S4). Claude's transcript-tail path lives in
9
+ * `claudeSubagentTail.ts`; the mode×part-kind matrix
10
+ * ({@link getSubagentPartAction}) and the status builders are OpenCode's
11
+ * child-session SSE concerns. The matrix is consulted by the ADAPTER — unlike
12
+ * the thinking / tool-result modes the sub-agent mode decides what is
13
+ * ACCUMULATED (status vs a separate streamed accumulator), which cannot be
14
+ * deferred to the bot's render time. Extracted from the adapter so the matrix
15
+ * is unit-testable without an SSE stream (same pattern as
16
+ * `toolResultRender.ts`). The string builders are pure-ish (they only read
17
+ * i18n), mirroring `buildThinkingFrameText`. Mode options / type guard /
18
+ * default live in the shared `utils/displayVerbosity.ts`.
19
+ */
20
+ const i18n_1 = require("../i18n");
21
+ /**
22
+ * @description The sub-agent mode×part-kind matrix:
23
+ * ```
24
+ * minimal/short full
25
+ * text status stream
26
+ * tool ignore status
27
+ * reasoning ignore ignore
28
+ * ```
29
+ * `minimal` and `short` are EQUIVALENT here (the v1 contract on the unified
30
+ * vocabulary): both are status-only, because the "working" indicator is never
31
+ * hidden (locked decision — see {@link DisplayVerbosityMode}). Reasoning is
32
+ * `ignore` in EVERY mode — child chain-of-thought is never rendered (locked
33
+ * decision). Non-`full` ignores child tool parts because their generic 🔧
34
+ * statuses would overwrite the single sub-agent status line. Child toolResult
35
+ * bodies are suppressed in ALL modes (handled by the adapter outside this
36
+ * matrix): the parent's `task` tool output already carries the child's final
37
+ * result.
38
+ */
39
+ function getSubagentPartAction(mode, partKind) {
40
+ if (partKind === 'reasoning')
41
+ return 'ignore';
42
+ if (partKind === 'text')
43
+ return mode === 'full' ? 'stream' : 'status';
44
+ return mode === 'full' ? 'status' : 'ignore';
45
+ }
46
+ /**
47
+ * @description Build the parent-side "Delegating" activity status
48
+ * ("🤖 Delegating: <title> …") rendered while the parent's delegation (`task`)
49
+ * tool part is pending/running (S5) — in `full` mode only (in `minimal`/`short`
50
+ * the dedicated self-updating sub-agent status message owns this indicator; see
51
+ * `utils/subagentStatusRender.ts`). `title` is the part's `state.title` falling
52
+ * back to its `input.description`; `null` (neither present) falls back to the
53
+ * same localized generic label.
54
+ */
55
+ function buildDelegatingStatusText(title) {
56
+ return (0, i18n_1.t)('subagent.delegating_status', { title: title ?? (0, i18n_1.t)('subagent.fallback_title') });
57
+ }
58
+ /**
59
+ * @description The marker prepended to every full-mode sub-agent chunk
60
+ * ("🤖 ⤷") so a streamed child transcript is visually separated from the main
61
+ * agent's reply.
62
+ */
63
+ function buildSubagentOutputPrefix() {
64
+ return (0, i18n_1.t)('subagent.chunk_prefix');
65
+ }
66
+ //# sourceMappingURL=subagentRender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagentRender.js","sourceRoot":"","sources":["../../src/utils/subagentRender.ts"],"names":[],"mappings":";;AAoDA,sDAIC;AAWD,8DAEC;AAOD,8DAEC;AA9ED;;;;;;;;;;;;;GAaG;AACH,kCAA4B;AAoB5B;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,qBAAqB,CAAC,IAA0B,EAAE,QAA0B;IAC1F,IAAI,QAAQ,KAAK,WAAW;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtE,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,yBAAyB,CAAC,KAAoB;IAC5D,OAAO,IAAA,QAAC,EAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,IAAA,QAAC,EAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED;;;;GAIG;AACH,SAAgB,yBAAyB;IACvC,OAAO,IAAA,QAAC,EAAC,uBAAuB,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @description Format an elapsed duration (ms) as `m:ss` — minutes unpadded,
3
+ * seconds zero-padded to two digits. Floored to whole seconds (the timer ticks
4
+ * coarsely, sub-second precision is noise). Examples: `0 → "0:00"`,
5
+ * `7000 → "0:07"`, `60000 → "1:00"`, `843000 → "14:03"`.
6
+ */
7
+ export declare function formatElapsed(ms: number): string;
8
+ /**
9
+ * @description Build the dedicated sub-agent status line
10
+ * ("🤖 sub-agent: <title> · m:ss") from the sticky title and the elapsed ms.
11
+ * `null` title falls back to the same localized generic label the other
12
+ * sub-agent status builders use.
13
+ */
14
+ export declare function buildSubagentElapsedText(title: string | null, elapsedMs: number): string;
15
+ /**
16
+ * @name SubagentStatusAction
17
+ * @description The bot's next move for the dedicated sub-agent status message,
18
+ * decided purely from whether a message currently exists and whether the
19
+ * incoming event says a delegation is active.
20
+ *
21
+ * - `open` — a delegation started and no message exists yet → create one + arm the timer.
22
+ * - `refresh` — a delegation is in flight and a message exists → re-edit it (title/elapsed).
23
+ * - `close` — the delegation ended and a message exists → delete it + stop the timer.
24
+ * - `noop` — the delegation ended and no message exists → nothing to do (idempotent close).
25
+ */
26
+ export type SubagentStatusAction = 'open' | 'refresh' | 'close' | 'noop';
27
+ /**
28
+ * @description Map "(does a message exist?) × (is the event active?)" to the
29
+ * bot's next move. Keeping it a named pure helper makes the lifecycle a truth
30
+ * table the bot handler reads declaratively (same shape as
31
+ * `getToolResultRenderAction`), and lets a defensive `active:false` close
32
+ * no-op safely when nothing is open.
33
+ */
34
+ export declare function getSubagentStatusAction(input: {
35
+ hasMessage: boolean;
36
+ eventActive: boolean;
37
+ }): SubagentStatusAction;
38
+ /**
39
+ * @description S1 dedup gate for the dedicated sub-agent status edit: should the
40
+ * freshly rendered line actually be re-sent, given the last text that reached
41
+ * Telegram? `false` when the text is unchanged — re-editing identical text only
42
+ * earns a `400 "message is not modified"`, and a stuck/frozen elapsed counter
43
+ * would otherwise churn that 400 on every refresh until the per-group 429 flood
44
+ * limit starves the whole topic (live incident 2026-08-03). A `null` last text
45
+ * (fresh open / post-clear) always sends.
46
+ */
47
+ export declare function checkShouldSendSubagentStatus(nextText: string, lastText: string | null): boolean;
48
+ /**
49
+ * @description S1' COALESCING gate for the dedicated sub-agent status edit:
50
+ * should a fresh refresh actually ENQUEUE an edit right now? Combines the text
51
+ * dedup ({@link checkShouldSendSubagentStatus}) with an in-flight guard so that,
52
+ * under a per-thread send backlog (the global pacer drains ~1 send / 2s), a
53
+ * burst of same-second refreshes can enqueue AT MOST ONE edit instead of
54
+ * stacking hundreds of identical closures.
55
+ *
56
+ * The bug this closes (live 2026-08-07): OpenCode streams frequent
57
+ * `message.part.updated` events for a live parent `task` part, so the bot got a
58
+ * high-frequency run of `subagentStatus{active:true}` refreshes. The plain S1
59
+ * dedup compared against the last text that REACHED Telegram, which only updates
60
+ * after the pacer-delayed send resolves — so during that window every same-text
61
+ * refresh passed the gate and enqueued another identical `editMessageText`.
62
+ * Hundreds piled into the thread's FIFO, drained one every 2s, and
63
+ * head-of-line-blocked the agent's OWN answer behind them — the topic looked
64
+ * hung. Fix: dedup against the last text we DECIDED to enqueue (recorded
65
+ * synchronously at decision time) AND never enqueue while one edit is still in
66
+ * flight.
67
+ */
68
+ export declare function checkShouldEnqueueSubagentStatus(input: {
69
+ nextText: string;
70
+ lastEnqueuedText: string | null;
71
+ isEditInFlight: boolean;
72
+ }): boolean;
73
+ /**
74
+ * @description S2 hard safety net for the dedicated sub-agent status tick:
75
+ * should the frame be CLOSED (instead of re-arming the elapsed-tick timer)?
76
+ * `true` when the owning session is no longer active, OR the frame has outlived
77
+ * any realistic delegation (`maxAgeMs`). A session that dies server-side emits
78
+ * no clean idle/finish, so the adapter's defensive close never fires and the
79
+ * self-re-arming timer would otherwise live forever churning the topic (live
80
+ * 2026-08-03). A `null` `startedAtMs` (should never happen while a message is
81
+ * open) is treated as "just started", so a transient race can never force-close
82
+ * an otherwise healthy frame on the age branch.
83
+ */
84
+ export declare function checkShouldExpireSubagentStatus(input: {
85
+ startedAtMs: number | null;
86
+ nowMs: number;
87
+ maxAgeMs: number;
88
+ isOwningSessionActive: boolean;
89
+ }): boolean;
90
+ //# sourceMappingURL=subagentStatusRender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagentStatusRender.d.ts","sourceRoot":"","sources":["../../src/utils/subagentStatusRender.ts"],"names":[],"mappings":"AA6BA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKxF;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,oBAAoB,CAGvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAEhG;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAGV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,OAAO,CAAC;CAChC,GAAG,OAAO,CAIV"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatElapsed = formatElapsed;
4
+ exports.buildSubagentElapsedText = buildSubagentElapsedText;
5
+ exports.getSubagentStatusAction = getSubagentStatusAction;
6
+ exports.checkShouldSendSubagentStatus = checkShouldSendSubagentStatus;
7
+ exports.checkShouldEnqueueSubagentStatus = checkShouldEnqueueSubagentStatus;
8
+ exports.checkShouldExpireSubagentStatus = checkShouldExpireSubagentStatus;
9
+ /**
10
+ * @description Pure decision + formatting helpers behind the dedicated OpenCode
11
+ * sub-agent status message (the `subagentStatus` adapter event, for the
12
+ * `minimal`/`short` `/subagent` modes). The adapter emits a mode-AGNOSTIC
13
+ * {@link SubagentStatusEvent}; the bot's `handleSubagentStatus` owns the
14
+ * message lifecycle and a ticking elapsed timer, and consults
15
+ * {@link getSubagentStatusAction} (open / refresh / close / noop) +
16
+ * {@link buildSubagentElapsedText} here. Extracted from `bot.ts` so the
17
+ * elapsed formatting and the lifecycle decision are unit-testable without the
18
+ * Telegraf machinery (same pattern as `toolResultRender.ts` /
19
+ * `subagentRender.ts`).
20
+ *
21
+ * Why a DEDICATED message instead of the shared transient status: the old
22
+ * status-only sub-agent line rode `statusMessageId`, whose single-message
23
+ * identity was lost between sparse child-text bursts, so every burst posted a
24
+ * NEW message (flood). This module backs the fix — one explicitly-managed
25
+ * message edited in place with a live elapsed counter.
26
+ */
27
+ const i18n_1 = require("../i18n");
28
+ /** Seconds in one minute — for the `m:ss` split in {@link formatElapsed}. */
29
+ const secondsPerMinute = 60;
30
+ /** Milliseconds in one second — for flooring elapsed ms to whole seconds. */
31
+ const millisPerSecond = 1000;
32
+ /** Zero-pad target width for the seconds field in `m:ss` (always two digits). */
33
+ const secondsPadWidth = 2;
34
+ /**
35
+ * @description Format an elapsed duration (ms) as `m:ss` — minutes unpadded,
36
+ * seconds zero-padded to two digits. Floored to whole seconds (the timer ticks
37
+ * coarsely, sub-second precision is noise). Examples: `0 → "0:00"`,
38
+ * `7000 → "0:07"`, `60000 → "1:00"`, `843000 → "14:03"`.
39
+ */
40
+ function formatElapsed(ms) {
41
+ const totalSeconds = Math.floor(ms / millisPerSecond);
42
+ const minutes = Math.floor(totalSeconds / secondsPerMinute);
43
+ const seconds = totalSeconds % secondsPerMinute;
44
+ return `${minutes}:${seconds.toString().padStart(secondsPadWidth, '0')}`;
45
+ }
46
+ /**
47
+ * @description Build the dedicated sub-agent status line
48
+ * ("🤖 sub-agent: <title> · m:ss") from the sticky title and the elapsed ms.
49
+ * `null` title falls back to the same localized generic label the other
50
+ * sub-agent status builders use.
51
+ */
52
+ function buildSubagentElapsedText(title, elapsedMs) {
53
+ return (0, i18n_1.t)('subagent.status_elapsed', {
54
+ title: title ?? (0, i18n_1.t)('subagent.fallback_title'),
55
+ elapsed: formatElapsed(elapsedMs),
56
+ });
57
+ }
58
+ /**
59
+ * @description Map "(does a message exist?) × (is the event active?)" to the
60
+ * bot's next move. Keeping it a named pure helper makes the lifecycle a truth
61
+ * table the bot handler reads declaratively (same shape as
62
+ * `getToolResultRenderAction`), and lets a defensive `active:false` close
63
+ * no-op safely when nothing is open.
64
+ */
65
+ function getSubagentStatusAction(input) {
66
+ if (input.eventActive)
67
+ return input.hasMessage ? 'refresh' : 'open';
68
+ return input.hasMessage ? 'close' : 'noop';
69
+ }
70
+ /**
71
+ * @description S1 dedup gate for the dedicated sub-agent status edit: should the
72
+ * freshly rendered line actually be re-sent, given the last text that reached
73
+ * Telegram? `false` when the text is unchanged — re-editing identical text only
74
+ * earns a `400 "message is not modified"`, and a stuck/frozen elapsed counter
75
+ * would otherwise churn that 400 on every refresh until the per-group 429 flood
76
+ * limit starves the whole topic (live incident 2026-08-03). A `null` last text
77
+ * (fresh open / post-clear) always sends.
78
+ */
79
+ function checkShouldSendSubagentStatus(nextText, lastText) {
80
+ return nextText !== lastText;
81
+ }
82
+ /**
83
+ * @description S1' COALESCING gate for the dedicated sub-agent status edit:
84
+ * should a fresh refresh actually ENQUEUE an edit right now? Combines the text
85
+ * dedup ({@link checkShouldSendSubagentStatus}) with an in-flight guard so that,
86
+ * under a per-thread send backlog (the global pacer drains ~1 send / 2s), a
87
+ * burst of same-second refreshes can enqueue AT MOST ONE edit instead of
88
+ * stacking hundreds of identical closures.
89
+ *
90
+ * The bug this closes (live 2026-08-07): OpenCode streams frequent
91
+ * `message.part.updated` events for a live parent `task` part, so the bot got a
92
+ * high-frequency run of `subagentStatus{active:true}` refreshes. The plain S1
93
+ * dedup compared against the last text that REACHED Telegram, which only updates
94
+ * after the pacer-delayed send resolves — so during that window every same-text
95
+ * refresh passed the gate and enqueued another identical `editMessageText`.
96
+ * Hundreds piled into the thread's FIFO, drained one every 2s, and
97
+ * head-of-line-blocked the agent's OWN answer behind them — the topic looked
98
+ * hung. Fix: dedup against the last text we DECIDED to enqueue (recorded
99
+ * synchronously at decision time) AND never enqueue while one edit is still in
100
+ * flight.
101
+ */
102
+ function checkShouldEnqueueSubagentStatus(input) {
103
+ if (input.isEditInFlight)
104
+ return false;
105
+ return checkShouldSendSubagentStatus(input.nextText, input.lastEnqueuedText);
106
+ }
107
+ /**
108
+ * @description S2 hard safety net for the dedicated sub-agent status tick:
109
+ * should the frame be CLOSED (instead of re-arming the elapsed-tick timer)?
110
+ * `true` when the owning session is no longer active, OR the frame has outlived
111
+ * any realistic delegation (`maxAgeMs`). A session that dies server-side emits
112
+ * no clean idle/finish, so the adapter's defensive close never fires and the
113
+ * self-re-arming timer would otherwise live forever churning the topic (live
114
+ * 2026-08-03). A `null` `startedAtMs` (should never happen while a message is
115
+ * open) is treated as "just started", so a transient race can never force-close
116
+ * an otherwise healthy frame on the age branch.
117
+ */
118
+ function checkShouldExpireSubagentStatus(input) {
119
+ if (!input.isOwningSessionActive)
120
+ return true;
121
+ const startedAt = input.startedAtMs ?? input.nowMs;
122
+ return input.nowMs - startedAt > input.maxAgeMs;
123
+ }
124
+ //# sourceMappingURL=subagentStatusRender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagentStatusRender.js","sourceRoot":"","sources":["../../src/utils/subagentStatusRender.ts"],"names":[],"mappings":";;AAmCA,sCAKC;AAQD,4DAKC;AAsBD,0DAMC;AAWD,sEAEC;AAsBD,4EAOC;AAaD,0EASC;AAjJD;;;;;;;;;;;;;;;;;GAiBG;AACH,kCAA4B;AAE5B,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,6EAA6E;AAC7E,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,iFAAiF;AACjF,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,EAAU;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,gBAAgB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,YAAY,GAAG,gBAAgB,CAAC;IAChD,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAC,KAAoB,EAAE,SAAiB;IAC9E,OAAO,IAAA,QAAC,EAAC,yBAAyB,EAAE;QAClC,KAAK,EAAE,KAAK,IAAI,IAAA,QAAC,EAAC,yBAAyB,CAAC;QAC5C,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC;KAClC,CAAC,CAAC;AACL,CAAC;AAeD;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,KAGvC;IACC,IAAI,KAAK,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACpE,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,6BAA6B,CAAC,QAAgB,EAAE,QAAuB;IACrF,OAAO,QAAQ,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,gCAAgC,CAAC,KAIhD;IACC,IAAI,KAAK,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,6BAA6B,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,+BAA+B,CAAC,KAK/C;IACC,IAAI,CAAC,KAAK,CAAC,qBAAqB;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC;IACnD,OAAO,KAAK,CAAC,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;AAClD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function checkIsStaleAnswerCallbackQueryError(err: unknown): boolean;
2
+ //# sourceMappingURL=telegramError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegramError.d.ts","sourceRoot":"","sources":["../../src/utils/telegramError.ts"],"names":[],"mappings":"AAcA,wBAAgB,oCAAoC,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAS1E"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkIsStaleAnswerCallbackQueryError = checkIsStaleAnswerCallbackQueryError;
4
+ function checkIsRecord(value) {
5
+ return typeof value === 'object' && value !== null;
6
+ }
7
+ function checkIsStaleAnswerCallbackQueryError(err) {
8
+ if (!checkIsRecord(err))
9
+ return false;
10
+ const e = err;
11
+ const description = e.response?.description ?? '';
12
+ return (e.response?.error_code === 400 &&
13
+ e.on?.method === 'answerCallbackQuery' &&
14
+ /query is too old|query ID is invalid/i.test(description));
15
+ }
16
+ //# sourceMappingURL=telegramError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegramError.js","sourceRoot":"","sources":["../../src/utils/telegramError.ts"],"names":[],"mappings":";;AAcA,oFASC;AAbD,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAgB,oCAAoC,CAAC,GAAY;IAC/D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,CAAC,GAAG,GAAwB,CAAC;IACnC,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC;IAClD,OAAO,CACL,CAAC,CAAC,QAAQ,EAAE,UAAU,KAAK,GAAG;QAC9B,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,qBAAqB;QACtC,uCAAuC,CAAC,IAAI,CAAC,WAAW,CAAC,CAC1D,CAAC;AACJ,CAAC"}