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,47 @@
1
+ /**
2
+ * @description Pure decision for keeping a pending interactive question at the
3
+ * BOTTOM of its topic (plan `2026-06-09-question-ux.md`, scope S3). While a
4
+ * question waits for an answer it must be the last message in the topic; if any
5
+ * OTHER output reaches the topic (a still-streaming sub-agent, a tool status, an
6
+ * api-retry notice) the question gets pushed up and the user can't see it.
7
+ *
8
+ * The bot owns the I/O (delete the old question message, re-send the current
9
+ * one, the debounce timer); this module only answers "should we re-post now?"
10
+ * so the loop-guard logic is unit-testable without a live Telegram round-trip.
11
+ */
12
+ /**
13
+ * @description Inputs to {@link checkShouldRepostPendingQuestion}.
14
+ */
15
+ export interface RepostDecisionInput {
16
+ /** Whether a question is currently pending for the thread. */
17
+ isQuestionPending: boolean;
18
+ /**
19
+ * Whether the MOST RECENT thing the bot sent to the thread was the question
20
+ * message itself (vs some other output that landed below it). True right
21
+ * after the question is posted; flipped false as soon as anything else is
22
+ * sent. The loop guard: a re-post must never fire in response to its own send.
23
+ */
24
+ wasLastSendTheQuestion: boolean;
25
+ /**
26
+ * Whether a question post (`postPendingQuestionAt`) is currently IN FLIGHT —
27
+ * its send has started but `messageId` has not been stored yet. A re-post
28
+ * must never run concurrently: it would read the PREVIOUS question's
29
+ * `messageId`, delete that (already-answered) message, and leave the
30
+ * in-flight post orphaned as a stale duplicate (live race 2026-06-10 in the
31
+ * test topic: the answered-Q1 "✅" confirmation vanished and Q2 appeared
32
+ * twice — the plan's named "repost must not fight post-next-question" risk).
33
+ * The in-flight post lands at the bottom anyway, so skipping loses nothing.
34
+ */
35
+ isQuestionPostInFlight: boolean;
36
+ }
37
+ /**
38
+ * @description Decide whether the pending question should be re-posted to the
39
+ * bottom. Only when a question is pending AND something other than the question
40
+ * was the last thing sent AND no question post is currently in flight —
41
+ * otherwise re-posting would be pointless (no pending question), loop
42
+ * (re-posting in reaction to its own send), or race the in-flight post over
43
+ * `messageId` (deleting the wrong message; see
44
+ * {@link RepostDecisionInput.isQuestionPostInFlight}).
45
+ */
46
+ export declare function checkShouldRepostPendingQuestion(input: RepostDecisionInput): boolean;
47
+ //# sourceMappingURL=pendingQuestionRepost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pendingQuestionRepost.d.ts","sourceRoot":"","sources":["../src/pendingQuestionRepost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,sBAAsB,EAAE,OAAO,CAAC;IAChC;;;;;;;;;OASG;IACH,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAMpF"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * @description Pure decision for keeping a pending interactive question at the
4
+ * BOTTOM of its topic (plan `2026-06-09-question-ux.md`, scope S3). While a
5
+ * question waits for an answer it must be the last message in the topic; if any
6
+ * OTHER output reaches the topic (a still-streaming sub-agent, a tool status, an
7
+ * api-retry notice) the question gets pushed up and the user can't see it.
8
+ *
9
+ * The bot owns the I/O (delete the old question message, re-send the current
10
+ * one, the debounce timer); this module only answers "should we re-post now?"
11
+ * so the loop-guard logic is unit-testable without a live Telegram round-trip.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.checkShouldRepostPendingQuestion = checkShouldRepostPendingQuestion;
15
+ /**
16
+ * @description Decide whether the pending question should be re-posted to the
17
+ * bottom. Only when a question is pending AND something other than the question
18
+ * was the last thing sent AND no question post is currently in flight —
19
+ * otherwise re-posting would be pointless (no pending question), loop
20
+ * (re-posting in reaction to its own send), or race the in-flight post over
21
+ * `messageId` (deleting the wrong message; see
22
+ * {@link RepostDecisionInput.isQuestionPostInFlight}).
23
+ */
24
+ function checkShouldRepostPendingQuestion(input) {
25
+ return (input.isQuestionPending &&
26
+ !input.wasLastSendTheQuestion &&
27
+ !input.isQuestionPostInFlight);
28
+ }
29
+ //# sourceMappingURL=pendingQuestionRepost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pendingQuestionRepost.js","sourceRoot":"","sources":["../src/pendingQuestionRepost.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAqCH,4EAMC;AAfD;;;;;;;;GAQG;AACH,SAAgB,gCAAgC,CAAC,KAA0B;IACzE,OAAO,CACL,KAAK,CAAC,iBAAiB;QACvB,CAAC,KAAK,CAAC,sBAAsB;QAC7B,CAAC,KAAK,CAAC,sBAAsB,CAC9B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { BindingData } from './state';
2
+ /**
3
+ * @description Inputs for {@link formatPinnedStatus}.
4
+ *
5
+ * Kept as a plain data record (no `SessionKey`, no adapter references) so the
6
+ * formatter is a pure function and can be unit-tested without booting any
7
+ * Telegraf / tmux machinery. The bot's `updatePinnedStatus` helper does the
8
+ * impure plumbing (probing the adapter, reading state, calling Telegram).
9
+ *
10
+ * Plan §11 Этап 7 (polish) / §20.5 — pinned per-thread status banner of
11
+ * the form `📁 <subdir> · <agent> · <state>`.
12
+ */
13
+ export interface PinnedStatusInputs {
14
+ /** The persistent binding row for this thread. */
15
+ binding: BindingData;
16
+ /**
17
+ * Adapter display label (e.g. `"Claude Code"`). `null` means no adapter
18
+ * has been chosen yet for this thread — the banner shows `"no agent"`.
19
+ */
20
+ agentLabel: string | null;
21
+ /**
22
+ * Currently selected model id (e.g. `"sonnet"` or
23
+ * `"anthropic/claude-3-5-sonnet"`). Optional — many threads run on the
24
+ * adapter default and never call `/model`.
25
+ */
26
+ model: string | null;
27
+ /**
28
+ * Currently selected reasoning-effort level (e.g. `"high"`, `"xhigh"`).
29
+ * Optional — shown right after the model when set, omitted otherwise.
30
+ */
31
+ effort?: string | null;
32
+ /** True if the adapter reports an active session right now. */
33
+ isActive: boolean;
34
+ }
35
+ /**
36
+ * @description Compose the one-line pinned status text for a thread.
37
+ *
38
+ * Layout (dot-separated, single line so the Telegram pin stays compact):
39
+ *
40
+ * 📁 <subdir> · <agentLabel|no agent> [· <model>] · <state>
41
+ *
42
+ * The state segment is mutually exclusive: a closed topic always shows
43
+ * `🔒 closed` and suppresses the running/idle dot — once the topic is
44
+ * closed the agent can't run anyway, and the banner is the user's only
45
+ * pointer to that fact.
46
+ *
47
+ * Output is plain text (no Markdown). The pinned banner is permanent UI,
48
+ * not assistant output, so Telegram's MarkdownV2 parsing hazards are not
49
+ * worth the formatting noise.
50
+ */
51
+ export declare function formatPinnedStatus(inputs: PinnedStatusInputs): string;
52
+ //# sourceMappingURL=pinnedStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinnedStatus.d.ts","sourceRoot":"","sources":["../src/pinnedStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,OAAO,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAerE"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatPinnedStatus = formatPinnedStatus;
4
+ /**
5
+ * @description Compose the one-line pinned status text for a thread.
6
+ *
7
+ * Layout (dot-separated, single line so the Telegram pin stays compact):
8
+ *
9
+ * 📁 <subdir> · <agentLabel|no agent> [· <model>] · <state>
10
+ *
11
+ * The state segment is mutually exclusive: a closed topic always shows
12
+ * `🔒 closed` and suppresses the running/idle dot — once the topic is
13
+ * closed the agent can't run anyway, and the banner is the user's only
14
+ * pointer to that fact.
15
+ *
16
+ * Output is plain text (no Markdown). The pinned banner is permanent UI,
17
+ * not assistant output, so Telegram's MarkdownV2 parsing hazards are not
18
+ * worth the formatting noise.
19
+ */
20
+ function formatPinnedStatus(inputs) {
21
+ const parts = [];
22
+ parts.push(`📁 ${inputs.binding.subdir}`);
23
+ parts.push(inputs.agentLabel ?? 'no agent');
24
+ if (inputs.model)
25
+ parts.push(inputs.model);
26
+ if (inputs.effort)
27
+ parts.push(`⚙️ ${inputs.effort}`);
28
+ if (inputs.binding.closed) {
29
+ parts.push('🔒 closed');
30
+ }
31
+ else {
32
+ parts.push(inputs.isActive ? '🟢 running' : '⚪ idle');
33
+ }
34
+ return parts.join(' · ');
35
+ }
36
+ //# sourceMappingURL=pinnedStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinnedStatus.js","sourceRoot":"","sources":["../src/pinnedStatus.ts"],"names":[],"mappings":";;AAoDA,gDAeC;AA/BD;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,kBAAkB,CAAC,MAA0B;IAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAErD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { type PlatformId, type SessionKey } from '../sessionKey';
2
+ import type { RequestAlertReason, RequestAnswerKind, RequestOrigin, UnreleasedRequestAlert } from '../requests/types';
3
+ /**
4
+ * @description The core-side contract for delivering an agent's answer to a
5
+ * request back to the surface the request came from (request/answer core S3).
6
+ * Each platform registers ONE sink; the core picks it by the conversation key's
7
+ * `platform` and never branches on a platform itself. It is separate from
8
+ * `ConnectorOutbound` on purpose: the stream (`deliver`) is fire-and-forget,
9
+ * while an answer must report whether it landed — a failed answer leaves the
10
+ * request untouched so the agent can retry.
11
+ */
12
+ /**
13
+ * @name RequestAnswerDelivery
14
+ * @description One answer to deliver. `origin` is the request's own (its
15
+ * connector-owned attributes say where on the platform to deliver); a request
16
+ * that is no longer open (`isRequestOpen: false`) is still delivered.
17
+ */
18
+ export interface RequestAnswerDelivery {
19
+ requestId: string;
20
+ kind: RequestAnswerKind;
21
+ body: string;
22
+ origin: RequestOrigin;
23
+ isRequestOpen: boolean;
24
+ }
25
+ /**
26
+ * @name AnswerDeliveryResult
27
+ * @description `warning` reports a partial success the agent should know about
28
+ * but must NOT retry (the answer itself landed).
29
+ */
30
+ export type AnswerDeliveryResult = {
31
+ ok: true;
32
+ warning?: string;
33
+ } | {
34
+ ok: false;
35
+ error: string;
36
+ };
37
+ /**
38
+ * @name RequestAlertDelivery
39
+ * @description The alert raised when the wake-up rules give up on an open
40
+ * request: "something went technically wrong", addressed to a person.
41
+ */
42
+ export interface RequestAlertDelivery {
43
+ requestId: string;
44
+ reason: RequestAlertReason;
45
+ origin: RequestOrigin;
46
+ }
47
+ /**
48
+ * @name AlertDeliveryResult
49
+ * @description `alertRef` is the sink's own handle on what it posted, kept with
50
+ * the request and handed back to {@link AnswerSink.releaseAlert} when it closes.
51
+ */
52
+ export type AlertDeliveryResult = {
53
+ ok: true;
54
+ alertRef?: string;
55
+ } | {
56
+ ok: false;
57
+ error: string;
58
+ };
59
+ /** @description A platform's answer and alert delivery. */
60
+ export interface AnswerSink {
61
+ deliverAnswer(key: SessionKey, delivery: RequestAnswerDelivery): Promise<AnswerDeliveryResult>;
62
+ deliverAlert(key: SessionKey, alert: RequestAlertDelivery): Promise<AlertDeliveryResult>;
63
+ /** Undo what keeps an alert prominent (Telegram: unpin it) once its request closed. */
64
+ releaseAlert(key: SessionKey, alertRef: string): Promise<void>;
65
+ }
66
+ /** @description The sinks of the platforms this process serves. */
67
+ export type AnswerSinks = ReadonlyMap<PlatformId, AnswerSink>;
68
+ /**
69
+ * @name AnswerSinkLookup
70
+ * @description The conversation's sink, or why there is none.
71
+ */
72
+ export type AnswerSinkLookup = {
73
+ ok: true;
74
+ sink: AnswerSink;
75
+ } | {
76
+ ok: false;
77
+ error: string;
78
+ };
79
+ /**
80
+ * @description The sink of a conversation's platform — the ONE lookup every
81
+ * answer, alert and alert release goes through, so a platform this process does
82
+ * not serve is reported the same way everywhere.
83
+ */
84
+ export declare function getAnswerSink(answerSinks: AnswerSinks, key: SessionKey): AnswerSinkLookup;
85
+ /**
86
+ * @description Release an alert a closed request held (Telegram: unpin it),
87
+ * through its platform's sink. The request ledger calls it for every close and
88
+ * again at boot for every alert still unreleased. Rejects when this process
89
+ * cannot release it (its platform is not served here), so the ledger keeps the
90
+ * alert for a later start that can.
91
+ */
92
+ export declare function releaseRequestAlert(answerSinks: AnswerSinks, alert: UnreleasedRequestAlert): Promise<void>;
93
+ //# sourceMappingURL=answerSink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerSink.d.ts","sourceRoot":"","sources":["../../src/platform/answerSink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEtH;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/F,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzF,uFAAuF;IACvF,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7F;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAGzF;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhH"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAnswerSink = getAnswerSink;
4
+ exports.releaseRequestAlert = releaseRequestAlert;
5
+ const sessionKey_1 = require("../sessionKey");
6
+ /**
7
+ * @description The sink of a conversation's platform — the ONE lookup every
8
+ * answer, alert and alert release goes through, so a platform this process does
9
+ * not serve is reported the same way everywhere.
10
+ */
11
+ function getAnswerSink(answerSinks, key) {
12
+ const sink = answerSinks.get(key.platform);
13
+ return sink ? { ok: true, sink } : { ok: false, error: `no answer sink serves platform "${key.platform}"` };
14
+ }
15
+ /**
16
+ * @description Release an alert a closed request held (Telegram: unpin it),
17
+ * through its platform's sink. The request ledger calls it for every close and
18
+ * again at boot for every alert still unreleased. Rejects when this process
19
+ * cannot release it (its platform is not served here), so the ledger keeps the
20
+ * alert for a later start that can.
21
+ */
22
+ async function releaseRequestAlert(answerSinks, alert) {
23
+ const key = (0, sessionKey_1.tryKeyFromString)(alert.conversationKey);
24
+ if (!key)
25
+ throw new Error(`no answer sink serves ${alert.conversationKey}`);
26
+ const lookup = getAnswerSink(answerSinks, key);
27
+ if (!lookup.ok)
28
+ throw new Error(lookup.error);
29
+ await lookup.sink.releaseAlert(key, alert.alertRef);
30
+ }
31
+ //# sourceMappingURL=answerSink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerSink.js","sourceRoot":"","sources":["../../src/platform/answerSink.ts"],"names":[],"mappings":";;AA0EA,sCAGC;AASD,kDAMC;AA5FD,8CAAmF;AAqEnF;;;;GAIG;AACH,SAAgB,aAAa,CAAC,WAAwB,EAAE,GAAe;IACrE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC9G,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CAAC,WAAwB,EAAE,KAA6B;IAC/F,MAAM,GAAG,GAAG,IAAA,6BAAgB,EAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @description How outbound content degrades when the surface cannot express
3
+ * all of it.
4
+ *
5
+ * The core writes what it MEANS — "here are three choices, keep this visible" —
6
+ * without knowing whether the far side has tappable buttons or a pin. This
7
+ * module is the single place that reconciles the two, so every connector
8
+ * degrades identically and no connector has to remember to check.
9
+ *
10
+ * The contract that makes degradation lossless: {@link OutboundContent.text}
11
+ * ALWAYS enumerates the options itself, and {@link OutboundContent.options} is
12
+ * purely the "offer these as tappable controls too" request. Dropping the
13
+ * options therefore costs the user the tap, never the information — they answer
14
+ * by typing the index instead, which is exactly the tracker case.
15
+ */
16
+ import type { ConnectorCapabilities, OutboundContent } from './outbound';
17
+ /**
18
+ * @description Reduce `content` to what `capabilities` can actually express.
19
+ *
20
+ * Returns the SAME object when nothing has to change, so the all-capable
21
+ * surface (Telegram) pays nothing and a test asserting identity can prove the
22
+ * rich path was taken untouched.
23
+ *
24
+ * - no `tappableOptions` → the options are dropped; the enumerated list in
25
+ * `text` is what the user reads and answers by index.
26
+ * - no `pinMessages` → `keepVisible` is cleared; the message is still sent, it
27
+ * just does not stay prominent.
28
+ */
29
+ export declare function getDegradedContent(content: OutboundContent, capabilities: ConnectorCapabilities): OutboundContent;
30
+ /**
31
+ * @description Does this content still need a message of its own after
32
+ * degradation?
33
+ *
34
+ * A surface that can neither pin nor offer controls turns a "prominent" message
35
+ * back into ordinary content — there is nothing left that distinguishes it, so
36
+ * forcing a separate message would only fragment the conversation.
37
+ */
38
+ export declare function checkNeedsOwnMessage(content: OutboundContent): boolean;
39
+ //# sourceMappingURL=capabilityFallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilityFallback.d.ts","sourceRoot":"","sources":["../../src/platform/capabilityFallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzE;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,qBAAqB,GAClC,eAAe,CASjB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAEtE"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * @description How outbound content degrades when the surface cannot express
4
+ * all of it.
5
+ *
6
+ * The core writes what it MEANS — "here are three choices, keep this visible" —
7
+ * without knowing whether the far side has tappable buttons or a pin. This
8
+ * module is the single place that reconciles the two, so every connector
9
+ * degrades identically and no connector has to remember to check.
10
+ *
11
+ * The contract that makes degradation lossless: {@link OutboundContent.text}
12
+ * ALWAYS enumerates the options itself, and {@link OutboundContent.options} is
13
+ * purely the "offer these as tappable controls too" request. Dropping the
14
+ * options therefore costs the user the tap, never the information — they answer
15
+ * by typing the index instead, which is exactly the tracker case.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.getDegradedContent = getDegradedContent;
19
+ exports.checkNeedsOwnMessage = checkNeedsOwnMessage;
20
+ /**
21
+ * @description Reduce `content` to what `capabilities` can actually express.
22
+ *
23
+ * Returns the SAME object when nothing has to change, so the all-capable
24
+ * surface (Telegram) pays nothing and a test asserting identity can prove the
25
+ * rich path was taken untouched.
26
+ *
27
+ * - no `tappableOptions` → the options are dropped; the enumerated list in
28
+ * `text` is what the user reads and answers by index.
29
+ * - no `pinMessages` → `keepVisible` is cleared; the message is still sent, it
30
+ * just does not stay prominent.
31
+ */
32
+ function getDegradedContent(content, capabilities) {
33
+ const shouldDropOptions = !capabilities.tappableOptions && content.options !== undefined;
34
+ const shouldDropKeepVisible = !capabilities.pinMessages && content.keepVisible === true;
35
+ if (!shouldDropOptions && !shouldDropKeepVisible)
36
+ return content;
37
+ const degraded = { ...content };
38
+ if (shouldDropOptions)
39
+ delete degraded.options;
40
+ if (shouldDropKeepVisible)
41
+ degraded.keepVisible = false;
42
+ return degraded;
43
+ }
44
+ /**
45
+ * @description Does this content still need a message of its own after
46
+ * degradation?
47
+ *
48
+ * A surface that can neither pin nor offer controls turns a "prominent" message
49
+ * back into ordinary content — there is nothing left that distinguishes it, so
50
+ * forcing a separate message would only fragment the conversation.
51
+ */
52
+ function checkNeedsOwnMessage(content) {
53
+ return content.keepVisible === true || (content.options?.length ?? 0) > 0;
54
+ }
55
+ //# sourceMappingURL=capabilityFallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilityFallback.js","sourceRoot":"","sources":["../../src/platform/capabilityFallback.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAgBH,gDAYC;AAUD,oDAEC;AApCD;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAChC,OAAwB,EACxB,YAAmC;IAEnC,MAAM,iBAAiB,GAAG,CAAC,YAAY,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC;IACzF,MAAM,qBAAqB,GAAG,CAAC,YAAY,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;IACxF,IAAI,CAAC,iBAAiB,IAAI,CAAC,qBAAqB;QAAE,OAAO,OAAO,CAAC;IAEjE,MAAM,QAAQ,GAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;IACjD,IAAI,iBAAiB;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC/C,IAAI,qBAAqB;QAAE,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;IACxD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,OAAwB;IAC3D,OAAO,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @description The platform-neutral command router.
3
+ *
4
+ * Command dispatch used to be fused to Telegram: every handler was registered
5
+ * through `bot.command(...)`, and each one re-parsed its own arguments out of
6
+ * `ctx.message.text` with an ad-hoc `split(' ').slice(1)`. Neither survives a
7
+ * second surface — a tracker comment (`@ai-dev please review`) carries the same
8
+ * intent with none of Telegram's syntax.
9
+ *
10
+ * So the split is: the CONNECTOR recognises its own trigger syntax and produces
11
+ * an {@link InboundCommand}; the CORE owns the name → handler table and the
12
+ * dispatch. Adding a surface adds a recogniser, not a second command table.
13
+ */
14
+ import type { InboundCommand, InboundEvent } from './inbound';
15
+ /**
16
+ * @description A registered command handler. Runs for its own side effects; the
17
+ * router does not interpret a return value, so declining is not a handler's
18
+ * choice — a name is either bound or it is not.
19
+ */
20
+ export type CommandHandler = (event: InboundEvent, command: InboundCommand) => Promise<void> | void;
21
+ export interface CommandRouter {
22
+ /**
23
+ * Bind one or more names to `handler`. Matching is EXACT, including case:
24
+ * Telegram's own command matching is case-sensitive (`/STATUS` is not
25
+ * `/status`), so folding case here would start answering commands that used
26
+ * to fall through to the plain-text path. A surface whose commands really are
27
+ * case-insensitive normalises the name in its own recogniser, where that fact
28
+ * belongs.
29
+ */
30
+ register(names: string | string[], handler: CommandHandler): void;
31
+ /** Is any handler bound to this name? Used to decide fall-through. */
32
+ checkIsRegistered(name: string): boolean;
33
+ /**
34
+ * Run the handler bound to `event.command`. Resolves `false` when the event
35
+ * carries no command or no handler is bound — the caller then treats the
36
+ * message as plain text, exactly as before.
37
+ */
38
+ dispatch(event: InboundEvent): Promise<boolean>;
39
+ }
40
+ export declare function createCommandRouter(): CommandRouter;
41
+ /**
42
+ * @description Split the remainder of a command line into the two argument
43
+ * shapes handlers actually need.
44
+ *
45
+ * Shared by every connector's recogniser so "what counts as an argument" is
46
+ * decided once. `argsText` keeps the user's inner spacing verbatim (a session
47
+ * title or a schedule description must survive intact); `args` is the
48
+ * convenience split for the flag-style commands.
49
+ */
50
+ export declare function splitCommandArgs(remainder: string): Pick<InboundCommand, 'args' | 'argsText'>;
51
+ //# sourceMappingURL=commandRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandRouter.d.ts","sourceRoot":"","sources":["../../src/platform/commandRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEpG,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAClE,sEAAsE;IACtE,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CAuBnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,CAAC,CAG7F"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * @description The platform-neutral command router.
4
+ *
5
+ * Command dispatch used to be fused to Telegram: every handler was registered
6
+ * through `bot.command(...)`, and each one re-parsed its own arguments out of
7
+ * `ctx.message.text` with an ad-hoc `split(' ').slice(1)`. Neither survives a
8
+ * second surface — a tracker comment (`@ai-dev please review`) carries the same
9
+ * intent with none of Telegram's syntax.
10
+ *
11
+ * So the split is: the CONNECTOR recognises its own trigger syntax and produces
12
+ * an {@link InboundCommand}; the CORE owns the name → handler table and the
13
+ * dispatch. Adding a surface adds a recogniser, not a second command table.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.createCommandRouter = createCommandRouter;
17
+ exports.splitCommandArgs = splitCommandArgs;
18
+ function createCommandRouter() {
19
+ const handlers = new Map();
20
+ function register(names, handler) {
21
+ for (const name of Array.isArray(names) ? names : [names]) {
22
+ handlers.set(name, handler);
23
+ }
24
+ }
25
+ function checkIsRegistered(name) {
26
+ return handlers.has(name);
27
+ }
28
+ async function dispatch(event) {
29
+ const command = event.command;
30
+ if (!command)
31
+ return false;
32
+ const handler = handlers.get(command.name);
33
+ if (!handler)
34
+ return false;
35
+ await handler(event, command);
36
+ return true;
37
+ }
38
+ return { register, checkIsRegistered, dispatch };
39
+ }
40
+ /**
41
+ * @description Split the remainder of a command line into the two argument
42
+ * shapes handlers actually need.
43
+ *
44
+ * Shared by every connector's recogniser so "what counts as an argument" is
45
+ * decided once. `argsText` keeps the user's inner spacing verbatim (a session
46
+ * title or a schedule description must survive intact); `args` is the
47
+ * convenience split for the flag-style commands.
48
+ */
49
+ function splitCommandArgs(remainder) {
50
+ const argsText = remainder.trim();
51
+ return { argsText, args: argsText.split(/\s+/).filter(Boolean) };
52
+ }
53
+ //# sourceMappingURL=commandRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandRouter.js","sourceRoot":"","sources":["../../src/platform/commandRouter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AA+BH,kDAuBC;AAWD,4CAGC;AArCD,SAAgB,mBAAmB;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEnD,SAAS,QAAQ,CAAC,KAAwB,EAAE,OAAuB;QACjE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,SAAS,iBAAiB,CAAC,IAAY;QACrC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,KAAmB;QACzC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,MAAM,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAAC,SAAiB;IAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AACnE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { PlatformId, SessionKey } from '../sessionKey';
2
+ /**
3
+ * @description Which surfaces an instance serves (`CONNECTORS`, Jira connector
4
+ * plan J3) and the ONE filter every scan of conversations goes through (J3b,
5
+ * R10). A neutral module: the CLI preflight reads it to guard a start, the bot
6
+ * to branch its boot — neither imports the other.
7
+ */
8
+ export declare const connectorIds: readonly ["telegram", "jira"];
9
+ export type ConnectorId = (typeof connectorIds)[number];
10
+ /** An unset `CONNECTORS` keeps the instance what it always was. */
11
+ export declare const defaultConnectors: readonly ConnectorId[];
12
+ export type ConnectorsParse = {
13
+ ok: true;
14
+ connectors: ConnectorId[];
15
+ } | {
16
+ ok: false;
17
+ error: string;
18
+ };
19
+ /** @description `CONNECTORS` as a comma list (`telegram`, `jira`), unset → Telegram only. */
20
+ export declare function parseConnectors(raw: string | undefined): ConnectorsParse;
21
+ /** @description The platforms whose conversations an instance serving `connectors` owns. */
22
+ export declare function getServedPlatforms(connectors: readonly ConnectorId[]): ReadonlySet<PlatformId>;
23
+ /**
24
+ * @description Does the conversation belong to one of `platforms`? The one rule
25
+ * behind {@link getServedConversations}, for a boot scan that walks a persisted
26
+ * map by serialized key rather than a list of entries.
27
+ */
28
+ export declare function checkIsServedConversation(key: SessionKey, platforms: ReadonlySet<PlatformId>): boolean;
29
+ /**
30
+ * @description Only the entries (tmux sessions found at boot, bindings, …) whose
31
+ * conversation belongs to one of `platforms`. Every boot scan adopts, resumes or
32
+ * KILLS what it is given, so it first keeps what this instance serves: a Telegram
33
+ * instance never touches a Jira conversation's session, nor a Jira instance a
34
+ * Telegram one (the J1 review note).
35
+ */
36
+ export declare function getServedConversations<T extends {
37
+ key: SessionKey;
38
+ }>(entries: readonly T[], platforms: ReadonlySet<PlatformId>): T[];
39
+ //# sourceMappingURL=connectorSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectorSet.d.ts","sourceRoot":"","sources":["../../src/platform/connectorSet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5D;;;;;GAKG;AAEH,eAAO,MAAM,YAAY,+BAAgC,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,EAAE,SAAS,WAAW,EAAiB,CAAC;AAMtE,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,WAAW,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErG,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CASxE;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,CAE9F;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,OAAO,CAEtG;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,EAClE,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,GACjC,CAAC,EAAE,CAEL"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultConnectors = exports.connectorIds = void 0;
4
+ exports.parseConnectors = parseConnectors;
5
+ exports.getServedPlatforms = getServedPlatforms;
6
+ exports.checkIsServedConversation = checkIsServedConversation;
7
+ exports.getServedConversations = getServedConversations;
8
+ /**
9
+ * @description Which surfaces an instance serves (`CONNECTORS`, Jira connector
10
+ * plan J3) and the ONE filter every scan of conversations goes through (J3b,
11
+ * R10). A neutral module: the CLI preflight reads it to guard a start, the bot
12
+ * to branch its boot — neither imports the other.
13
+ */
14
+ exports.connectorIds = ['telegram', 'jira'];
15
+ /** An unset `CONNECTORS` keeps the instance what it always was. */
16
+ exports.defaultConnectors = ['telegram'];
17
+ function checkIsConnectorId(name) {
18
+ return exports.connectorIds.some((id) => id === name);
19
+ }
20
+ /** @description `CONNECTORS` as a comma list (`telegram`, `jira`), unset → Telegram only. */
21
+ function parseConnectors(raw) {
22
+ if (raw === undefined || raw.trim() === '')
23
+ return { ok: true, connectors: [...exports.defaultConnectors] };
24
+ const names = raw.split(',').map((name) => name.trim()).filter((name) => name !== '');
25
+ const unknown = names.filter((name) => !checkIsConnectorId(name));
26
+ if (unknown.length > 0) {
27
+ return { ok: false, error: `CONNECTORS has unknown connector(s) ${unknown.join(', ')} (known: ${exports.connectorIds.join(', ')})` };
28
+ }
29
+ if (names.length === 0)
30
+ return { ok: false, error: 'CONNECTORS names no connector' };
31
+ return { ok: true, connectors: exports.connectorIds.filter((id) => names.includes(id)) };
32
+ }
33
+ /** @description The platforms whose conversations an instance serving `connectors` owns. */
34
+ function getServedPlatforms(connectors) {
35
+ return new Set(connectors);
36
+ }
37
+ /**
38
+ * @description Does the conversation belong to one of `platforms`? The one rule
39
+ * behind {@link getServedConversations}, for a boot scan that walks a persisted
40
+ * map by serialized key rather than a list of entries.
41
+ */
42
+ function checkIsServedConversation(key, platforms) {
43
+ return platforms.has(key.platform);
44
+ }
45
+ /**
46
+ * @description Only the entries (tmux sessions found at boot, bindings, …) whose
47
+ * conversation belongs to one of `platforms`. Every boot scan adopts, resumes or
48
+ * KILLS what it is given, so it first keeps what this instance serves: a Telegram
49
+ * instance never touches a Jira conversation's session, nor a Jira instance a
50
+ * Telegram one (the J1 review note).
51
+ */
52
+ function getServedConversations(entries, platforms) {
53
+ return entries.filter(({ key }) => checkIsServedConversation(key, platforms));
54
+ }
55
+ //# sourceMappingURL=connectorSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectorSet.js","sourceRoot":"","sources":["../../src/platform/connectorSet.ts"],"names":[],"mappings":";;;AAsBA,0CASC;AAGD,gDAEC;AAOD,8DAEC;AASD,wDAKC;AAzDD;;;;;GAKG;AAEU,QAAA,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,CAAU,CAAC;AAG1D,mEAAmE;AACtD,QAAA,iBAAiB,GAA2B,CAAC,UAAU,CAAC,CAAC;AAEtE,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,oBAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;AAChD,CAAC;AAID,6FAA6F;AAC7F,SAAgB,eAAe,CAAC,GAAuB;IACrD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,GAAG,yBAAiB,CAAC,EAAE,CAAC;IACpG,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,oBAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/H,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC;IACrF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,oBAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,4FAA4F;AAC5F,SAAgB,kBAAkB,CAAC,UAAkC;IACnE,OAAO,IAAI,GAAG,CAAa,UAAU,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,GAAe,EAAE,SAAkC;IAC3F,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CACpC,OAAqB,EACrB,SAAkC;IAElC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,yBAAyB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;AAChF,CAAC"}