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,624 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createReminders = createReminders;
4
+ /**
5
+ * `/reminders` — bot-LOCAL reminders (buttons only, zero agent involvement): the hub, the four-step wizard, the
6
+ * list, the card and delete. See README.md in this folder.
7
+ */
8
+ const telegraf_1 = require("telegraf");
9
+ const sessionKey_1 = require("../../../sessionKey");
10
+ const i18n_1 = require("../../../i18n");
11
+ const sendErrorClassifier_1 = require("../../../sendErrorClassifier");
12
+ const deliveryKind_1 = require("../../../scheduler/deliveryKind");
13
+ const store_1 = require("../../../scheduler/store");
14
+ const reminderWizard_1 = require("../../../utils/reminderWizard");
15
+ const reminderScheduleText_1 = require("../../../utils/reminderScheduleText");
16
+ const reminderFlow_1 = require("../../../utils/reminderFlow");
17
+ const callbackMessage_1 = require("./callbackMessage");
18
+ /** Width of the `HH` field in the minute step's `21:__` header. */
19
+ const reminderHourFieldWidth = 2;
20
+ /** Error code → the line the wizard prints above the step it re-renders. */
21
+ const reminderWizardErrorKeys = {
22
+ pastTime: 'reminders.errorPastTime',
23
+ invalidDate: 'reminders.errorInvalidDate',
24
+ invalidTime: 'reminders.errorInvalidTime',
25
+ textTooLong: 'reminders.errorTextTooLong',
26
+ };
27
+ /**
28
+ * @description Resolve a wizard error into its localized line. One choke point so
29
+ * the `textTooLong` wording names the bound it rejected from the SINGLE constant
30
+ * instead of having the number spelled out in 12 translations; the other codes
31
+ * carry no `{limit}` and simply ignore it.
32
+ */
33
+ function getReminderWizardErrorText(errorCode) {
34
+ return (0, i18n_1.t)(reminderWizardErrorKeys[errorCode], { limit: reminderWizard_1.reminderTextMaxLength });
35
+ }
36
+ /**
37
+ * Resolve one planned button caption: a locale-neutral literal, an i18n key, or a
38
+ * list row — whose caption is composed HERE because its schedule half is itself a
39
+ * localized lookup the pure planner cannot make.
40
+ */
41
+ function renderReminderButtonLabel(label) {
42
+ switch (label.kind) {
43
+ case 'literal':
44
+ return label.text;
45
+ case 'key':
46
+ return (0, i18n_1.t)(label.key, label.vars);
47
+ case 'listRow':
48
+ return (0, reminderScheduleText_1.getReminderRowLabel)(label.name, label.descriptor);
49
+ }
50
+ }
51
+ /** Turn a keyboard PLAN from the pure module into telegraf button rows. */
52
+ function renderReminderButtonRows(plan) {
53
+ return plan.map((row) => row.map((button) => telegraf_1.Markup.button.callback(renderReminderButtonLabel(button.label), button.callbackData)));
54
+ }
55
+ function buildReminderKeyboard(plan) {
56
+ return telegraf_1.Markup.inlineKeyboard(renderReminderButtonRows(plan));
57
+ }
58
+ /**
59
+ * The «close» button. Composed HERE rather than inside `buildReminderHubKeyboard`
60
+ * because that builder owns the rows whose PRESENCE is a decision (add at the
61
+ * cap, list when empty), whereas «close» is an unconditional dismissal that both
62
+ * the hub and the created card carry.
63
+ */
64
+ function buildReminderCloseButton() {
65
+ return telegraf_1.Markup.button.callback((0, i18n_1.t)('reminders.closeButton'), reminderWizard_1.reminderCloseCallback);
66
+ }
67
+ /** Records → the rows the pure list/card plans consume. */
68
+ function toReminderListRows(records) {
69
+ return records.map((record) => ({
70
+ id: record.id,
71
+ name: record.name,
72
+ descriptor: (0, reminderWizard_1.getReminderScheduleDescriptor)(record.spec),
73
+ }));
74
+ }
75
+ /**
76
+ * The three detail lines a reminder is described by. Shared by the card opened
77
+ * from the list and by the created-screen, so the two can never describe the same
78
+ * reminder differently.
79
+ */
80
+ function buildReminderDetailLines(record, descriptor) {
81
+ return [
82
+ (0, i18n_1.t)('reminders.cardWhen', { schedule: (0, reminderScheduleText_1.getReminderScheduleDescriptorText)(descriptor) }),
83
+ (0, i18n_1.t)('reminders.cardText', { text: record.prompt }),
84
+ (0, i18n_1.t)('reminders.cardNext', { next: (0, reminderScheduleText_1.getReminderNextRunText)(record.nextRunAt, Date.now()) }),
85
+ ];
86
+ }
87
+ /** The done screen: what was created, plus delete / list / close. */
88
+ function buildReminderCreatedScreen(record) {
89
+ return {
90
+ text: [
91
+ (0, i18n_1.t)('reminders.createdTitle'),
92
+ ...buildReminderDetailLines(record, (0, reminderWizard_1.getReminderScheduleDescriptor)(record.spec)),
93
+ ].join('\n'),
94
+ keyboard: telegraf_1.Markup.inlineKeyboard([
95
+ [
96
+ telegraf_1.Markup.button.callback((0, i18n_1.t)(reminderWizard_1.reminderLabelKeys.cardDelete), (0, reminderWizard_1.buildReminderDeleteCallback)(record.id)),
97
+ telegraf_1.Markup.button.callback((0, i18n_1.t)('reminders.doneListButton'), (0, reminderWizard_1.buildReminderListPageCallback)(0)),
98
+ buildReminderCloseButton(),
99
+ ],
100
+ ]),
101
+ };
102
+ }
103
+ /** The question the wizard's CURRENT step asks. */
104
+ function getReminderStepQuestion(wizardState) {
105
+ switch (wizardState.step) {
106
+ case 'repeat':
107
+ return (0, i18n_1.t)('reminders.stepRepeatQuestion');
108
+ case 'date':
109
+ return (0, i18n_1.t)('reminders.stepDateQuestion');
110
+ case 'dateGrid':
111
+ return (0, i18n_1.t)('reminders.stepDateGridQuestion');
112
+ case 'weekday':
113
+ return (0, i18n_1.t)('reminders.stepWeekdayQuestion');
114
+ case 'dayOfMonth':
115
+ return (0, i18n_1.t)('reminders.stepDayOfMonthQuestion');
116
+ case 'dayOfMonthGrid':
117
+ return (0, i18n_1.t)('reminders.stepDayOfMonthGridQuestion');
118
+ case 'time':
119
+ return (0, i18n_1.t)('reminders.stepTimeQuestion');
120
+ case 'hour':
121
+ return (0, i18n_1.t)('reminders.stepHourQuestion');
122
+ case 'minute':
123
+ // The hour is committed before this screen renders; `?? 0` only narrows the
124
+ // optional field (a minute step with no hour is refused by the pure module).
125
+ return (0, i18n_1.t)('reminders.stepMinuteQuestion', {
126
+ hour: (wizardState.hour ?? 0).toString().padStart(reminderHourFieldWidth, '0'),
127
+ });
128
+ case 'text':
129
+ return (0, i18n_1.t)('reminders.stepTextQuestion');
130
+ }
131
+ }
132
+ /**
133
+ * @description The wizard screen for a state: the title, the running summary of
134
+ * everything already picked, then the current step's question (preceded by an
135
+ * error line when a pick could not be applied). The summary is what makes a
136
+ * single re-rendered message readable as a flow — each tap appends its value.
137
+ */
138
+ function buildReminderWizardScreen(wizardState, errorCode) {
139
+ const lines = [(0, i18n_1.t)('reminders.wizardTitle')];
140
+ if (wizardState.repeatKind !== null) {
141
+ lines.push((0, i18n_1.t)('reminders.pickRepeat', { value: (0, i18n_1.t)(reminderWizard_1.reminderRepeatLabelKeys[wizardState.repeatKind]) }));
142
+ }
143
+ if (wizardState.dateIso !== null) {
144
+ lines.push((0, i18n_1.t)('reminders.pickDate', { value: wizardState.dateIso }));
145
+ }
146
+ if (wizardState.weekday !== null) {
147
+ lines.push((0, i18n_1.t)('reminders.pickWeekday', { value: (0, i18n_1.t)(reminderWizard_1.reminderWeekdayLabelKeys[wizardState.weekday]) }));
148
+ }
149
+ if (wizardState.dayOfMonth !== null) {
150
+ lines.push((0, i18n_1.t)('reminders.pickDayOfMonth', { value: wizardState.dayOfMonth }));
151
+ }
152
+ if (wizardState.hour !== null && wizardState.minute !== null) {
153
+ lines.push((0, i18n_1.t)('reminders.pickTime', {
154
+ value: (0, reminderWizard_1.formatReminderTime)({ hour: wizardState.hour, minute: wizardState.minute }),
155
+ }));
156
+ }
157
+ if (wizardState.text !== null) {
158
+ // Only a stale-instant retry holds text. The line is what tells the operator it
159
+ // was KEPT — without it they retype the reminder, and a retyped message is no
160
+ // longer captured by the (now disarmed) text wait: it reaches the agent instead.
161
+ lines.push((0, i18n_1.t)('reminders.pickText', {
162
+ value: (0, reminderWizard_1.getShortenedText)(wizardState.text, reminderWizard_1.reminderSummaryTextMaxLength),
163
+ }));
164
+ }
165
+ const question = getReminderStepQuestion(wizardState);
166
+ const body = errorCode === null ? question : `${getReminderWizardErrorText(errorCode)}\n\n${question}`;
167
+ return {
168
+ text: `${lines.join('\n')}\n\n${body}`,
169
+ keyboard: buildReminderKeyboard((0, reminderWizard_1.buildReminderStepKeyboard)({ state: wizardState, nowMs: Date.now() })),
170
+ };
171
+ }
172
+ /** Drop the keyboard of a tapped DEAD screen, swallowing a benign no-op edit. */
173
+ async function stripReminderKeyboard(ctx) {
174
+ try {
175
+ await ctx.editMessageReplyMarkup(undefined);
176
+ }
177
+ catch (e) {
178
+ const desc = (0, sendErrorClassifier_1.checkIsApiError)(e) ? (0, sendErrorClassifier_1.getErrorDescription)(e) : '';
179
+ if (!/message is not modified/i.test(desc)) {
180
+ console.warn('[reminders] keyboard strip failed:', desc || e);
181
+ }
182
+ }
183
+ }
184
+ /**
185
+ * @description Build the `/reminders` flow over its ports. It returns what the bot reaches into from outside
186
+ * the flow — the text-capture hooks of the wizard's last step and its cancel — and the two `register…()` calls.
187
+ */
188
+ function createReminders(ports) {
189
+ const { reminderWizards, getSchedulerEngine, bot, command, getState, replyToThread, editThreadMessage, authoriseContext } = ports;
190
+ /** The thread's reminders — its agent-prompt schedules filtered out. */
191
+ function getThreadReminders(key) {
192
+ return getState().getThreadSchedules(key).filter(deliveryKind_1.checkIsReminderSchedule);
193
+ }
194
+ /** Screen 0: the count (or why «add» is missing) plus the add/list/close rows. */
195
+ function buildReminderHubScreen(key) {
196
+ const records = getThreadReminders(key);
197
+ const plan = (0, reminderFlow_1.getReminderHubPlan)({
198
+ // The reminder cap is the comparison `createScheduleForThread` makes for a
199
+ // reminder, so «add» is never drawn for a create the store would reject four
200
+ // steps later.
201
+ reminderCount: records.length,
202
+ maxReminders: store_1.maxRemindersPerThread,
203
+ });
204
+ const bodyLine = plan.body === 'empty'
205
+ ? (0, i18n_1.t)('reminders.hubEmptyLine')
206
+ : plan.body === 'atLimit'
207
+ ? (0, i18n_1.t)('reminders.hubLimitLine', { count: records.length, limit: store_1.maxRemindersPerThread })
208
+ : (0, i18n_1.t)('reminders.hubActiveLine', { count: records.length });
209
+ const rows = (0, reminderWizard_1.buildReminderHubKeyboard)(records.length, { isAddOffered: plan.isAddOffered });
210
+ return {
211
+ text: `${(0, i18n_1.t)('reminders.hubTitle')}\n${bodyLine}`,
212
+ keyboard: telegraf_1.Markup.inlineKeyboard([...renderReminderButtonRows(rows), [buildReminderCloseButton()]]),
213
+ };
214
+ }
215
+ /**
216
+ * @description One list page, or `null` when the thread has no reminders (the
217
+ * caller falls back to the hub — a list screen with no rows is a dead end).
218
+ *
219
+ * Each row BUTTON carries «🔔 name · localized schedule», so the message text is
220
+ * only a header — printing the same rows in the body as well would show the list
221
+ * twice.
222
+ */
223
+ function buildReminderListScreen(key, page) {
224
+ const rows = toReminderListRows(getThreadReminders(key));
225
+ if (rows.length === 0)
226
+ return null;
227
+ const plan = (0, reminderWizard_1.buildReminderListPlan)(rows, page);
228
+ const lines = [(0, i18n_1.t)('reminders.listTitle', { count: rows.length })];
229
+ if (plan.totalPages > 1) {
230
+ lines.push((0, i18n_1.t)('reminders.listPageLine', { page: plan.currentPage + 1, total: plan.totalPages }));
231
+ }
232
+ return { text: lines.join('\n'), keyboard: buildReminderKeyboard(plan.keyboard) };
233
+ }
234
+ /** One reminder's card, or `null` for a stale row index / a record already gone. */
235
+ function buildReminderCardScreen(key, reminderIndex) {
236
+ const records = getThreadReminders(key);
237
+ const plan = (0, reminderWizard_1.buildReminderCardPlan)(toReminderListRows(records), reminderIndex);
238
+ if (plan === null)
239
+ return null;
240
+ const record = records.find((candidate) => candidate.id === plan.row.id);
241
+ if (record === undefined)
242
+ return null;
243
+ return {
244
+ text: [
245
+ (0, i18n_1.t)('reminders.cardTitle', { name: plan.row.name }),
246
+ ...buildReminderDetailLines(record, plan.row.descriptor),
247
+ ].join('\n'),
248
+ keyboard: buildReminderKeyboard(plan.keyboard),
249
+ };
250
+ }
251
+ /** Replace a reminder screen in place (the flow never creates a second message). */
252
+ async function renderReminderScreen(key, messageId, screen) {
253
+ await editThreadMessage(key, messageId, screen.text, screen.keyboard);
254
+ }
255
+ /**
256
+ * Relabel a reminder screen into a final notice and DROP its keyboard (an edit
257
+ * with no `reply_markup` removes it), so a finished screen can't be acted on.
258
+ */
259
+ async function retireReminderScreen(key, messageId, text) {
260
+ await editThreadMessage(key, messageId, text);
261
+ }
262
+ /**
263
+ * @description Retire the topic's in-flight wizard, if any: drop the session and
264
+ * relabel its message so no dead keyboard is left tappable.
265
+ *
266
+ * Called by EVERY command (a command always wins over the step-4 text wait),
267
+ * which is also what makes a repeat `/reminders` retire the previous wizard
268
+ * before opening a new one — exactly one wizard is live per topic.
269
+ */
270
+ async function cancelReminderWizard(key) {
271
+ const kStr = (0, sessionKey_1.keyToString)(key);
272
+ const session = reminderWizards.get(kStr);
273
+ if (!session)
274
+ return;
275
+ reminderWizards.delete(kStr);
276
+ await retireReminderScreen(key, session.messageId, (0, i18n_1.t)('reminders.cancelledNotice'));
277
+ }
278
+ /**
279
+ * @description Retire a wizard whose step-4 text wait ran out. The triggering
280
+ * message is NOT consumed by the caller — it falls through to normal handling,
281
+ * because swallowing it would lose a prompt the operator meant for the agent.
282
+ */
283
+ async function expireReminderWizard(key) {
284
+ const kStr = (0, sessionKey_1.keyToString)(key);
285
+ const session = reminderWizards.get(kStr);
286
+ if (!session)
287
+ return;
288
+ reminderWizards.delete(kStr);
289
+ await retireReminderScreen(key, session.messageId, (0, i18n_1.t)('reminders.expiredNotice'));
290
+ }
291
+ /**
292
+ * @description Route an inbound message against the topic's step-4 text wait and,
293
+ * when it IS the reminder text, CLAIM that wait — synchronously, before the caller
294
+ * reaches its first `await`.
295
+ *
296
+ * The claim is the mutual exclusion: telegraf handles updates concurrently, so two
297
+ * messages arriving together both pass an unclaimed wait and would each create a
298
+ * reminder from the one wizard. A single-threaded event loop needs nothing heavier
299
+ * than this flag — no lock, no timer — provided it is taken in the same synchronous
300
+ * run as the decision, which is why claiming and routing are one function. Both the
301
+ * typed and the voice path call it, so they cannot claim differently.
302
+ */
303
+ function claimReminderTextCapture(key) {
304
+ const textWait = reminderWizards.get((0, sessionKey_1.keyToString)(key))?.textWait;
305
+ const route = (0, reminderFlow_1.getReminderTextCaptureRoute)({
306
+ armedAtMs: textWait?.armedAtMs ?? null,
307
+ isClaimed: textWait?.isClaimed === true,
308
+ nowMs: Date.now(),
309
+ });
310
+ if (route === 'capture' && textWait)
311
+ textWait.isClaimed = true;
312
+ return route;
313
+ }
314
+ /**
315
+ * @description Persist a finished wizard's reminder, retire the wizard and turn its
316
+ * message into the created card. The SINGLE creation path — shared by the text
317
+ * capture and by the `createNow` retry after a stale instant — so the two can never
318
+ * create reminders differently.
319
+ */
320
+ async function createReminderFromWizard(input) {
321
+ const { key, session, text } = input;
322
+ reminderWizards.delete((0, sessionKey_1.keyToString)(key));
323
+ const created = await (0, store_1.createScheduleForThread)(getState(), {
324
+ threadKey: key,
325
+ // The wizard never ASKS for a name — one less typing step; the list rows and
326
+ // the card show the first words of the reminder itself.
327
+ name: (0, reminderWizard_1.getReminderNameFromText)(text),
328
+ spec: input.spec,
329
+ prompt: text,
330
+ createdBy: 'user',
331
+ nowMs: input.nowMs,
332
+ deliveryKind: 'reminder',
333
+ });
334
+ if (!created.ok) {
335
+ await retireReminderScreen(key, session.messageId, (0, i18n_1.t)('reminders.capReachedNotice', { limit: created.limit }));
336
+ return;
337
+ }
338
+ getSchedulerEngine()?.armJob(created.record);
339
+ await renderReminderScreen(key, session.messageId, buildReminderCreatedScreen(created.record));
340
+ }
341
+ /**
342
+ * @description Turn the wizard's picks plus the operator's text into a reminder —
343
+ * the entry point shared by the typed message and the transcribed voice note.
344
+ *
345
+ * The spec is rebuilt at THIS instant rather than reused from the time step:
346
+ * minutes pass while the operator types, so a `once` reminder for «today» may have
347
+ * gone by. That is reported on the time screen — and the text they just sent is
348
+ * KEPT on the wizard, so the next time pick creates the reminder without asking for
349
+ * it again. Re-typing the reminder is the one thing this all-buttons flow exists to
350
+ * avoid.
351
+ */
352
+ async function finishReminderWizard(key, text) {
353
+ const session = reminderWizards.get((0, sessionKey_1.keyToString)(key));
354
+ const textWait = session?.textWait;
355
+ if (!session || !textWait)
356
+ return;
357
+ // An over-long text is refused outright — it is never truncated, because the
358
+ // words are the operator's own. The wizard therefore STAYS on step 4 (the error
359
+ // rides the same screen) and the claim is released first, so the shorter retry is
360
+ // captured instead of reaching the agent as a prompt.
361
+ if ((0, reminderFlow_1.getReminderTextAcceptance)(text) === 'tooLong') {
362
+ textWait.isClaimed = false;
363
+ await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(session.state, 'textTooLong'));
364
+ return;
365
+ }
366
+ const nowMs = Date.now();
367
+ const built = (0, reminderWizard_1.buildReminderSpec)({ picks: textWait.picks, nowMs });
368
+ if (!built.ok) {
369
+ const retimeStep = (0, reminderWizard_1.getReminderStateForRetime)(session.state, text);
370
+ session.state = retimeStep;
371
+ // Disarmed on purpose: the screen now asks for a TIME, not for text.
372
+ session.textWait = null;
373
+ await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(retimeStep, built.code));
374
+ return;
375
+ }
376
+ await createReminderFromWizard({ key, session, spec: built.spec, text, nowMs });
377
+ }
378
+ function registerReminderCommands() {
379
+ // `/reminders` — the reminder hub. Deliberately NOT gated on a binding or a
380
+ // session: the bot itself posts and pins a reminder, so it needs neither a folder
381
+ // nor an agent and works in every topic, General included.
382
+ command('reminders', async (_ctx, key) => {
383
+ const screen = buildReminderHubScreen(key);
384
+ await replyToThread(key, screen.text, screen.keyboard);
385
+ });
386
+ }
387
+ function registerReminderCallbacks() {
388
+ /**
389
+ * @description `/reminders` callbacks. Every one of them EDITS the tapped message
390
+ * — the hub, the list, a card, the wizard and the created screen are all the same
391
+ * message re-rendered, so a reminder session never litters the topic.
392
+ *
393
+ * The flat ids (`rmadd` / `rmhub` / `rmclose`) are registered before the prefixed
394
+ * matchers, following the ordering rule the `/timezone` and `/model` pickers rely
395
+ * on (Telegraf dispatches action patterns first-match-wins).
396
+ */
397
+ // «➕ Add» → open the wizard IN the hub message.
398
+ bot.action(reminderWizard_1.reminderAddCallback, async (ctx) => {
399
+ const key = await authoriseContext(ctx);
400
+ if (!key) {
401
+ await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
402
+ return;
403
+ }
404
+ const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
405
+ if (messageId === null) {
406
+ await ctx.answerCbQuery((0, i18n_1.t)('reminders.wizardExpiredCbAnswer'));
407
+ return;
408
+ }
409
+ // At the cap the hub draws no «add», so a tap can only come from a keyboard
410
+ // rendered before the cap was reached: say why and refresh the screen.
411
+ const hubPlan = (0, reminderFlow_1.getReminderHubPlan)({
412
+ reminderCount: getThreadReminders(key).length,
413
+ maxReminders: store_1.maxRemindersPerThread,
414
+ });
415
+ if (!hubPlan.isAddOffered) {
416
+ await ctx.answerCbQuery((0, i18n_1.t)('reminders.capReachedNotice', { limit: store_1.maxRemindersPerThread }));
417
+ await renderReminderScreen(key, messageId, buildReminderHubScreen(key));
418
+ return;
419
+ }
420
+ // An older hub message can still open a wizard while one is live; retire that
421
+ // one first so only ever one wizard belongs to the topic.
422
+ await cancelReminderWizard(key);
423
+ const wizardState = (0, reminderWizard_1.createReminderWizardState)((0, reminderWizard_1.createReminderWizardId)(Date.now()));
424
+ reminderWizards.set((0, sessionKey_1.keyToString)(key), { state: wizardState, messageId, textWait: null });
425
+ await ctx.answerCbQuery();
426
+ await renderReminderScreen(key, messageId, buildReminderWizardScreen(wizardState, null));
427
+ });
428
+ // «‹ Back» from the list → the hub.
429
+ bot.action(reminderWizard_1.reminderHubCallback, async (ctx) => {
430
+ const key = await authoriseContext(ctx);
431
+ if (!key) {
432
+ await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
433
+ return;
434
+ }
435
+ const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
436
+ await ctx.answerCbQuery();
437
+ if (messageId !== null)
438
+ await renderReminderScreen(key, messageId, buildReminderHubScreen(key));
439
+ });
440
+ // «✕ Close» → relabel the screen and drop its keyboard.
441
+ bot.action(reminderWizard_1.reminderCloseCallback, async (ctx) => {
442
+ const key = await authoriseContext(ctx);
443
+ if (!key) {
444
+ await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
445
+ return;
446
+ }
447
+ const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
448
+ await ctx.answerCbQuery();
449
+ if (messageId !== null)
450
+ await retireReminderScreen(key, messageId, (0, i18n_1.t)('reminders.closedNotice'));
451
+ });
452
+ // A list page (or a prev/next arrow). A now-empty list falls back to the hub.
453
+ bot.action(reminderWizard_1.reminderListPageCallbackRe, async (ctx) => {
454
+ const key = await authoriseContext(ctx);
455
+ if (!key) {
456
+ await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
457
+ return;
458
+ }
459
+ const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
460
+ const page = (0, reminderWizard_1.parseReminderListPageCallback)(ctx.match[0]);
461
+ await ctx.answerCbQuery();
462
+ if (messageId === null || page === null)
463
+ return;
464
+ await renderReminderScreen(key, messageId, buildReminderListScreen(key, page) ?? buildReminderHubScreen(key));
465
+ });
466
+ // A list row → its card. A stale index (the list shrank since it was rendered)
467
+ // says so and reopens the list rather than opening a NEIGHBOURING reminder.
468
+ bot.action(reminderWizard_1.reminderCardCallbackRe, async (ctx) => {
469
+ const key = await authoriseContext(ctx);
470
+ if (!key) {
471
+ await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
472
+ return;
473
+ }
474
+ const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
475
+ const reminderIndex = (0, reminderWizard_1.parseReminderCardCallback)(ctx.match[0]);
476
+ if (messageId === null || reminderIndex === null) {
477
+ await ctx.answerCbQuery();
478
+ return;
479
+ }
480
+ const screen = buildReminderCardScreen(key, reminderIndex);
481
+ if (screen === null) {
482
+ await ctx.answerCbQuery((0, i18n_1.t)('reminders.cardExpiredCbAnswer'));
483
+ await renderReminderScreen(key, messageId, buildReminderListScreen(key, 0) ?? buildReminderHubScreen(key));
484
+ return;
485
+ }
486
+ await ctx.answerCbQuery();
487
+ await renderReminderScreen(key, messageId, screen);
488
+ });
489
+ // «🗑 Delete» — there is deliberately NO extra confirmation step: the card the
490
+ // button sits on shows exactly what is about to go, so the card IS the
491
+ // confirmation. The reminder's own id is baked into the callback (never a
492
+ // positional index), so an old card can't delete whatever now occupies its row.
493
+ bot.action(reminderWizard_1.reminderDeleteCallbackRe, async (ctx) => {
494
+ const key = await authoriseContext(ctx);
495
+ if (!key) {
496
+ await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
497
+ return;
498
+ }
499
+ const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
500
+ const reminderId = (0, reminderWizard_1.parseReminderDeleteCallback)(ctx.match[0]);
501
+ if (messageId === null || reminderId === null) {
502
+ await ctx.answerCbQuery();
503
+ return;
504
+ }
505
+ const rows = toReminderListRows(getThreadReminders(key));
506
+ const target = (0, reminderWizard_1.getReminderDeleteTarget)(rows, reminderId);
507
+ if (target.kind === 'notFound') {
508
+ await ctx.answerCbQuery((0, i18n_1.t)('reminders.deleteGoneCbAnswer'));
509
+ await renderReminderScreen(key, messageId, buildReminderListScreen(key, 0) ?? buildReminderHubScreen(key));
510
+ return;
511
+ }
512
+ // Return to the page the deleted row was on (a shrunk list clamps the page).
513
+ const listPage = (0, reminderWizard_1.getReminderCardBackPage)(rows.findIndex((row) => row.id === target.row.id));
514
+ await getState().removeSchedule(target.row.id);
515
+ getSchedulerEngine()?.disarmJob(target.row.id);
516
+ await ctx.answerCbQuery((0, i18n_1.t)('reminders.deletedCbAnswer'));
517
+ await renderReminderScreen(key, messageId, buildReminderListScreen(key, listPage) ?? buildReminderHubScreen(key));
518
+ });
519
+ // Every wizard button. The wizard id baked into the callback is what makes an
520
+ // abandoned keyboard inert: a tap from a dead screen changes NO state.
521
+ bot.action(reminderWizard_1.reminderWizardCallbackRe, async (ctx) => {
522
+ const key = await authoriseContext(ctx);
523
+ if (!key) {
524
+ await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
525
+ return;
526
+ }
527
+ const kStr = (0, sessionKey_1.keyToString)(key);
528
+ const session = reminderWizards.get(kStr);
529
+ const callbackData = ctx.match[0];
530
+ // A tap from a DEAD screen (no wizard live, or a different wizard's id): say so
531
+ // and strip THAT message's keyboard, because it can never be finished.
532
+ if (session === undefined ||
533
+ (0, reminderFlow_1.getReminderWizardTapRoute)({ liveWizardId: session.state.wizardId, callbackData }) === 'foreign') {
534
+ await ctx.answerCbQuery((0, i18n_1.t)('reminders.wizardExpiredCbAnswer'));
535
+ await stripReminderKeyboard(ctx);
536
+ return;
537
+ }
538
+ const nowMs = Date.now();
539
+ const transition = (0, reminderWizard_1.applyReminderWizardCallback)({ state: session.state, callbackData, nowMs });
540
+ // ONE choke point for the step-4 wait: any outcome that moves the wizard off the
541
+ // text step disarms it here. «‹ Back» out of step 4 is the reachable case — the
542
+ // screen goes back to asking for a TIME, and a wait left armed would swallow the
543
+ // operator's next ordinary message and create the reminder from the picks they
544
+ // went back to change.
545
+ if (!(0, reminderFlow_1.checkIsReminderTextWaitKept)(transition.kind))
546
+ session.textWait = null;
547
+ switch (transition.kind) {
548
+ case 'expired':
549
+ // The live wizard, but an action from a step it has already left (a tap on a
550
+ // stale VIEW of this same message). Re-render the current step instead of
551
+ // stripping the keyboard — the wizard is alive and must stay finishable.
552
+ await ctx.answerCbQuery((0, i18n_1.t)('reminders.wizardExpiredCbAnswer'));
553
+ await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(session.state, null));
554
+ return;
555
+ case 'cancelled':
556
+ reminderWizards.delete(kStr);
557
+ await ctx.answerCbQuery();
558
+ await retireReminderScreen(key, session.messageId, (0, i18n_1.t)('reminders.cancelledNotice'));
559
+ return;
560
+ case 'backToHub':
561
+ reminderWizards.delete(kStr);
562
+ await ctx.answerCbQuery();
563
+ await renderReminderScreen(key, session.messageId, buildReminderHubScreen(key));
564
+ return;
565
+ case 'error':
566
+ // The time was not committed: the screen re-renders WITH the reason, so
567
+ // «today» plus a time that has gone by is said out loud rather than silently
568
+ // rolled to tomorrow. The returned state is written back because it is not
569
+ // always the one that came in — a DST-skipped time hands back the TIME step,
570
+ // and a screen the session disagreed with would treat the next tap as stale.
571
+ session.state = transition.state;
572
+ await ctx.answerCbQuery(getReminderWizardErrorText(transition.code));
573
+ await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(transition.state, transition.code));
574
+ return;
575
+ case 'render':
576
+ session.state = transition.state;
577
+ await ctx.answerCbQuery();
578
+ await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(session.state, null));
579
+ return;
580
+ case 'awaitText': {
581
+ const picks = (0, reminderWizard_1.getReminderPicksFromState)(transition.state);
582
+ if (picks === null) {
583
+ // Unreachable through the keyboards (`awaitText` is returned only after a
584
+ // spec built cleanly from these very picks). Park the wizard back on the
585
+ // time step rather than arming a wait that could not create anything.
586
+ const timeStep = (0, reminderWizard_1.getReminderStateForStep)(session.state, 'time');
587
+ session.state = timeStep;
588
+ await ctx.answerCbQuery((0, i18n_1.t)('reminders.wizardExpiredCbAnswer'));
589
+ await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(timeStep, null));
590
+ return;
591
+ }
592
+ session.state = transition.state;
593
+ session.textWait = { picks, armedAtMs: nowMs, isClaimed: false };
594
+ await ctx.answerCbQuery();
595
+ await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(session.state, null));
596
+ return;
597
+ }
598
+ case 'createNow':
599
+ // The text is already in hand — it arrived before the picked instant went
600
+ // stale — so this replacement time pick finishes the reminder outright
601
+ // instead of sending the operator back through step 4. The session is
602
+ // retired by the create, so there is no state left to write back.
603
+ await ctx.answerCbQuery();
604
+ await createReminderFromWizard({
605
+ key,
606
+ session,
607
+ spec: transition.spec,
608
+ text: transition.text,
609
+ nowMs,
610
+ });
611
+ return;
612
+ }
613
+ });
614
+ }
615
+ return {
616
+ cancelReminderWizard,
617
+ claimReminderTextCapture,
618
+ expireReminderWizard,
619
+ finishReminderWizard,
620
+ registerReminderCommands,
621
+ registerReminderCallbacks,
622
+ };
623
+ }
624
+ //# sourceMappingURL=reminders.js.map