charness 3.6.1 → 3.8.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 (828) hide show
  1. package/CHANGELOG.md +297 -0
  2. package/DEVELOPMENT.md +35 -5
  3. package/MIGRATION_RENAME_TO_CHARNESS.md +3 -2
  4. package/README.md +84 -782
  5. package/SETUP.md +48 -10
  6. package/agent-plugin/.claude-plugin/plugin.json +7 -0
  7. package/agent-plugin/README.md +35 -0
  8. package/agent-plugin/skills/charness-delegate-claude/SKILL.md +85 -0
  9. package/agent-plugin/skills/charness-delegate-claude/summarize-events.py +90 -0
  10. package/agent-plugin/skills/charness-delegate-opencode/SKILL.md +68 -0
  11. package/agent-plugin/skills/charness-manager/SKILL.md +152 -0
  12. package/dist/adapters/adapterNames.d.ts +6 -0
  13. package/dist/adapters/adapterNames.d.ts.map +1 -1
  14. package/dist/adapters/adapterNames.js +8 -2
  15. package/dist/adapters/adapterNames.js.map +1 -1
  16. package/dist/adapters/claudeCliAdapter.d.ts +8 -0
  17. package/dist/adapters/claudeCliAdapter.d.ts.map +1 -1
  18. package/dist/adapters/claudeCliAdapter.js +42 -5
  19. package/dist/adapters/claudeCliAdapter.js.map +1 -1
  20. package/dist/adapters/claudeJsonStreamAdapter.d.ts +10 -9
  21. package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -1
  22. package/dist/adapters/claudeJsonStreamAdapter.js +53 -55
  23. package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -1
  24. package/dist/adapters/createAdapter.d.ts +8 -0
  25. package/dist/adapters/createAdapter.d.ts.map +1 -1
  26. package/dist/adapters/createAdapter.js +14 -2
  27. package/dist/adapters/createAdapter.js.map +1 -1
  28. package/dist/adapters/openCodeAdapter.d.ts +43 -6
  29. package/dist/adapters/openCodeAdapter.d.ts.map +1 -1
  30. package/dist/adapters/openCodeAdapter.js +97 -7
  31. package/dist/adapters/openCodeAdapter.js.map +1 -1
  32. package/dist/agentLogin/agentLogin.d.ts +1 -1
  33. package/dist/agentLogin/agentLogin.d.ts.map +1 -1
  34. package/dist/apiRetryKick.d.ts +4 -3
  35. package/dist/apiRetryKick.d.ts.map +1 -1
  36. package/dist/apiRetryKick.js +16 -9
  37. package/dist/apiRetryKick.js.map +1 -1
  38. package/dist/bot.d.ts.map +1 -1
  39. package/dist/bot.js +1360 -387
  40. package/dist/bot.js.map +1 -1
  41. package/dist/cli/claudeProfiles.d.ts +11 -6
  42. package/dist/cli/claudeProfiles.d.ts.map +1 -1
  43. package/dist/cli/claudeProfiles.js +50 -22
  44. package/dist/cli/claudeProfiles.js.map +1 -1
  45. package/dist/cli/hot.d.ts +5 -0
  46. package/dist/cli/hot.d.ts.map +1 -1
  47. package/dist/cli/hot.js +71 -25
  48. package/dist/cli/hot.js.map +1 -1
  49. package/dist/cli/tscWatchGuard.d.ts +95 -0
  50. package/dist/cli/tscWatchGuard.d.ts.map +1 -0
  51. package/dist/cli/tscWatchGuard.js +295 -0
  52. package/dist/cli/tscWatchGuard.js.map +1 -0
  53. package/dist/cli.js +55 -1
  54. package/dist/cli.js.map +1 -1
  55. package/dist/configDirFile.d.ts +7 -3
  56. package/dist/configDirFile.d.ts.map +1 -1
  57. package/dist/configDirFile.js +12 -5
  58. package/dist/configDirFile.js.map +1 -1
  59. package/dist/connectors/jira/answerSink.d.ts +10 -0
  60. package/dist/connectors/jira/answerSink.d.ts.map +1 -1
  61. package/dist/connectors/jira/answerSink.js +13 -0
  62. package/dist/connectors/jira/answerSink.js.map +1 -1
  63. package/dist/connectors/jira/config.d.ts +2 -0
  64. package/dist/connectors/jira/config.d.ts.map +1 -1
  65. package/dist/connectors/jira/config.js +9 -1
  66. package/dist/connectors/jira/config.js.map +1 -1
  67. package/dist/connectors/jira/connector.d.ts +11 -1
  68. package/dist/connectors/jira/connector.d.ts.map +1 -1
  69. package/dist/connectors/jira/connector.js +7 -0
  70. package/dist/connectors/jira/connector.js.map +1 -1
  71. package/dist/connectors/jira/inbound.d.ts +27 -4
  72. package/dist/connectors/jira/inbound.d.ts.map +1 -1
  73. package/dist/connectors/jira/inbound.js +69 -8
  74. package/dist/connectors/jira/inbound.js.map +1 -1
  75. package/dist/connectors/jira/issueBlocks.d.ts +5 -0
  76. package/dist/connectors/jira/issueBlocks.d.ts.map +1 -1
  77. package/dist/connectors/jira/issueBlocks.js +11 -0
  78. package/dist/connectors/jira/issueBlocks.js.map +1 -1
  79. package/dist/connectors/telegram/bindPicker.d.ts +5 -0
  80. package/dist/connectors/telegram/bindPicker.d.ts.map +1 -1
  81. package/dist/connectors/telegram/bindPicker.js +18 -1
  82. package/dist/connectors/telegram/bindPicker.js.map +1 -1
  83. package/dist/connectors/telegram/bindPickerClaims.d.ts +46 -0
  84. package/dist/connectors/telegram/bindPickerClaims.d.ts.map +1 -0
  85. package/dist/connectors/telegram/bindPickerClaims.js +83 -0
  86. package/dist/connectors/telegram/bindPickerClaims.js.map +1 -0
  87. package/dist/connectors/telegram/bindSweep.d.ts +32 -0
  88. package/dist/connectors/telegram/bindSweep.d.ts.map +1 -0
  89. package/dist/connectors/telegram/bindSweep.js +47 -0
  90. package/dist/connectors/telegram/bindSweep.js.map +1 -0
  91. package/dist/connectors/telegram/bindingWelcome.d.ts +23 -0
  92. package/dist/connectors/telegram/bindingWelcome.d.ts.map +1 -0
  93. package/dist/connectors/telegram/bindingWelcome.js +26 -0
  94. package/dist/connectors/telegram/bindingWelcome.js.map +1 -0
  95. package/dist/connectors/telegram/botApiConnection.d.ts +74 -0
  96. package/dist/connectors/telegram/botApiConnection.d.ts.map +1 -0
  97. package/dist/connectors/telegram/botApiConnection.js +201 -0
  98. package/dist/connectors/telegram/botApiConnection.js.map +1 -0
  99. package/dist/connectors/telegram/commands/botCore.d.ts +13 -3
  100. package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -1
  101. package/dist/connectors/telegram/commands/botSkills.d.ts +21 -0
  102. package/dist/connectors/telegram/commands/botSkills.d.ts.map +1 -0
  103. package/dist/connectors/telegram/commands/botSkills.js +133 -0
  104. package/dist/connectors/telegram/commands/botSkills.js.map +1 -0
  105. package/dist/connectors/telegram/commands/callbackMessage.d.ts +5 -0
  106. package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -1
  107. package/dist/connectors/telegram/commands/callbackMessage.js +9 -0
  108. package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -1
  109. package/dist/connectors/telegram/commands/compaction.d.ts +65 -3
  110. package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -1
  111. package/dist/connectors/telegram/commands/compaction.js +512 -94
  112. package/dist/connectors/telegram/commands/compaction.js.map +1 -1
  113. package/dist/connectors/telegram/commands/displayModes.d.ts +1 -1
  114. package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -1
  115. package/dist/connectors/telegram/commands/displayModes.js +6 -18
  116. package/dist/connectors/telegram/commands/displayModes.js.map +1 -1
  117. package/dist/connectors/telegram/commands/fallbackChain.js +5 -5
  118. package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -1
  119. package/dist/connectors/telegram/commands/reminders.d.ts +1 -1
  120. package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -1
  121. package/dist/connectors/telegram/commands/reminders.js +4 -15
  122. package/dist/connectors/telegram/commands/reminders.js.map +1 -1
  123. package/dist/connectors/telegram/commands/runners.d.ts +52 -0
  124. package/dist/connectors/telegram/commands/runners.d.ts.map +1 -0
  125. package/dist/connectors/telegram/commands/runners.js +486 -0
  126. package/dist/connectors/telegram/commands/runners.js.map +1 -0
  127. package/dist/connectors/telegram/commands/selfUpdate.d.ts.map +1 -1
  128. package/dist/connectors/telegram/commands/selfUpdate.js +1 -11
  129. package/dist/connectors/telegram/commands/selfUpdate.js.map +1 -1
  130. package/dist/connectors/telegram/commands/taskAgents.d.ts +22 -0
  131. package/dist/connectors/telegram/commands/taskAgents.d.ts.map +1 -0
  132. package/dist/connectors/telegram/commands/taskAgents.js +104 -0
  133. package/dist/connectors/telegram/commands/taskAgents.js.map +1 -0
  134. package/dist/connectors/telegram/commands/todo.d.ts +82 -0
  135. package/dist/connectors/telegram/commands/todo.d.ts.map +1 -0
  136. package/dist/connectors/telegram/commands/todo.js +384 -0
  137. package/dist/connectors/telegram/commands/todo.js.map +1 -0
  138. package/dist/connectors/telegram/commands/topicCommand.d.ts +6 -2
  139. package/dist/connectors/telegram/commands/topicCommand.d.ts.map +1 -1
  140. package/dist/connectors/telegram/commands/topicCommand.js +6 -9
  141. package/dist/connectors/telegram/commands/topicCommand.js.map +1 -1
  142. package/dist/connectors/telegram/openBindMessages.d.ts +45 -0
  143. package/dist/connectors/telegram/openBindMessages.d.ts.map +1 -0
  144. package/dist/connectors/telegram/openBindMessages.js +67 -0
  145. package/dist/connectors/telegram/openBindMessages.js.map +1 -0
  146. package/dist/connectors/telegram/outputFlushPlan.d.ts +49 -0
  147. package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -1
  148. package/dist/connectors/telegram/outputFlushPlan.js +46 -0
  149. package/dist/connectors/telegram/outputFlushPlan.js.map +1 -1
  150. package/dist/connectors/telegram/pendingTopicName.d.ts +26 -0
  151. package/dist/connectors/telegram/pendingTopicName.d.ts.map +1 -0
  152. package/dist/connectors/telegram/pendingTopicName.js +27 -0
  153. package/dist/connectors/telegram/pendingTopicName.js.map +1 -0
  154. package/dist/connectors/telegram/runnerPairingMessages.d.ts +27 -0
  155. package/dist/connectors/telegram/runnerPairingMessages.d.ts.map +1 -0
  156. package/dist/connectors/telegram/runnerPairingMessages.js +105 -0
  157. package/dist/connectors/telegram/runnerPairingMessages.js.map +1 -0
  158. package/dist/connectors/test/connector.d.ts.map +1 -1
  159. package/dist/connectors/test/connector.js +6 -1
  160. package/dist/connectors/test/connector.js.map +1 -1
  161. package/dist/i18n/de.d.ts.map +1 -1
  162. package/dist/i18n/de.js +148 -7
  163. package/dist/i18n/de.js.map +1 -1
  164. package/dist/i18n/en.d.ts.map +1 -1
  165. package/dist/i18n/en.js +148 -7
  166. package/dist/i18n/en.js.map +1 -1
  167. package/dist/i18n/es.d.ts.map +1 -1
  168. package/dist/i18n/es.js +148 -7
  169. package/dist/i18n/es.js.map +1 -1
  170. package/dist/i18n/fr.d.ts.map +1 -1
  171. package/dist/i18n/fr.js +148 -7
  172. package/dist/i18n/fr.js.map +1 -1
  173. package/dist/i18n/hi.d.ts.map +1 -1
  174. package/dist/i18n/hi.js +148 -7
  175. package/dist/i18n/hi.js.map +1 -1
  176. package/dist/i18n/ja.d.ts.map +1 -1
  177. package/dist/i18n/ja.js +148 -7
  178. package/dist/i18n/ja.js.map +1 -1
  179. package/dist/i18n/ka.d.ts.map +1 -1
  180. package/dist/i18n/ka.js +148 -7
  181. package/dist/i18n/ka.js.map +1 -1
  182. package/dist/i18n/pt.d.ts.map +1 -1
  183. package/dist/i18n/pt.js +148 -7
  184. package/dist/i18n/pt.js.map +1 -1
  185. package/dist/i18n/ru.d.ts.map +1 -1
  186. package/dist/i18n/ru.js +148 -7
  187. package/dist/i18n/ru.js.map +1 -1
  188. package/dist/i18n/uk.d.ts.map +1 -1
  189. package/dist/i18n/uk.js +148 -7
  190. package/dist/i18n/uk.js.map +1 -1
  191. package/dist/i18n/uz.d.ts.map +1 -1
  192. package/dist/i18n/uz.js +148 -7
  193. package/dist/i18n/uz.js.map +1 -1
  194. package/dist/i18n/zh.d.ts.map +1 -1
  195. package/dist/i18n/zh.js +148 -7
  196. package/dist/i18n/zh.js.map +1 -1
  197. package/dist/i18n.d.ts +1 -1
  198. package/dist/i18n.js +1 -1
  199. package/dist/installManager.d.ts +70 -1
  200. package/dist/installManager.d.ts.map +1 -1
  201. package/dist/installManager.js +125 -13
  202. package/dist/installManager.js.map +1 -1
  203. package/dist/instanceSettings.d.ts +50 -1
  204. package/dist/instanceSettings.d.ts.map +1 -1
  205. package/dist/instanceSettings.js +119 -26
  206. package/dist/instanceSettings.js.map +1 -1
  207. package/dist/openCodeQuestionFlow.d.ts +30 -0
  208. package/dist/openCodeQuestionFlow.d.ts.map +1 -1
  209. package/dist/openCodeQuestionFlow.js +43 -0
  210. package/dist/openCodeQuestionFlow.js.map +1 -1
  211. package/dist/outputTrace.d.ts +6 -0
  212. package/dist/outputTrace.d.ts.map +1 -1
  213. package/dist/outputTrace.js +24 -1
  214. package/dist/outputTrace.js.map +1 -1
  215. package/dist/postToSession.d.ts +20 -5
  216. package/dist/postToSession.d.ts.map +1 -1
  217. package/dist/postToSession.js +38 -7
  218. package/dist/postToSession.js.map +1 -1
  219. package/dist/remoteRun/cliArgs.d.ts +75 -0
  220. package/dist/remoteRun/cliArgs.d.ts.map +1 -0
  221. package/dist/remoteRun/cliArgs.js +206 -0
  222. package/dist/remoteRun/cliArgs.js.map +1 -0
  223. package/dist/remoteRun/commands.d.ts +77 -0
  224. package/dist/remoteRun/commands.d.ts.map +1 -0
  225. package/dist/remoteRun/commands.js +327 -0
  226. package/dist/remoteRun/commands.js.map +1 -0
  227. package/dist/remoteRun/depsPlan.d.ts +16 -0
  228. package/dist/remoteRun/depsPlan.d.ts.map +1 -0
  229. package/dist/remoteRun/depsPlan.js +82 -0
  230. package/dist/remoteRun/depsPlan.js.map +1 -0
  231. package/dist/remoteRun/exitCodes.d.ts +34 -0
  232. package/dist/remoteRun/exitCodes.d.ts.map +1 -0
  233. package/dist/remoteRun/exitCodes.js +38 -0
  234. package/dist/remoteRun/exitCodes.js.map +1 -0
  235. package/dist/remoteRun/foreground.d.ts +29 -0
  236. package/dist/remoteRun/foreground.d.ts.map +1 -0
  237. package/dist/remoteRun/foreground.js +159 -0
  238. package/dist/remoteRun/foreground.js.map +1 -0
  239. package/dist/remoteRun/interrupts.d.ts +27 -0
  240. package/dist/remoteRun/interrupts.d.ts.map +1 -0
  241. package/dist/remoteRun/interrupts.js +78 -0
  242. package/dist/remoteRun/interrupts.js.map +1 -0
  243. package/dist/remoteRun/jobFiles.d.ts +31 -0
  244. package/dist/remoteRun/jobFiles.d.ts.map +1 -0
  245. package/dist/remoteRun/jobFiles.js +84 -0
  246. package/dist/remoteRun/jobFiles.js.map +1 -0
  247. package/dist/remoteRun/jobFormat.d.ts +16 -0
  248. package/dist/remoteRun/jobFormat.d.ts.map +1 -0
  249. package/dist/remoteRun/jobFormat.js +130 -0
  250. package/dist/remoteRun/jobFormat.js.map +1 -0
  251. package/dist/remoteRun/jobId.d.ts +15 -0
  252. package/dist/remoteRun/jobId.d.ts.map +1 -0
  253. package/dist/remoteRun/jobId.js +85 -0
  254. package/dist/remoteRun/jobId.js.map +1 -0
  255. package/dist/remoteRun/jobMeta.d.ts +18 -0
  256. package/dist/remoteRun/jobMeta.d.ts.map +1 -0
  257. package/dist/remoteRun/jobMeta.js +33 -0
  258. package/dist/remoteRun/jobMeta.js.map +1 -0
  259. package/dist/remoteRun/jobQuery.d.ts +12 -0
  260. package/dist/remoteRun/jobQuery.d.ts.map +1 -0
  261. package/dist/remoteRun/jobQuery.js +22 -0
  262. package/dist/remoteRun/jobQuery.js.map +1 -0
  263. package/dist/remoteRun/jobRecords.d.ts +22 -0
  264. package/dist/remoteRun/jobRecords.d.ts.map +1 -0
  265. package/dist/remoteRun/jobRecords.js +145 -0
  266. package/dist/remoteRun/jobRecords.js.map +1 -0
  267. package/dist/remoteRun/jobState.d.ts +62 -0
  268. package/dist/remoteRun/jobState.d.ts.map +1 -0
  269. package/dist/remoteRun/jobState.js +132 -0
  270. package/dist/remoteRun/jobState.js.map +1 -0
  271. package/dist/remoteRun/leaseTiming.d.ts +18 -0
  272. package/dist/remoteRun/leaseTiming.d.ts.map +1 -0
  273. package/dist/remoteRun/leaseTiming.js +43 -0
  274. package/dist/remoteRun/leaseTiming.js.map +1 -0
  275. package/dist/remoteRun/output.d.ts +37 -0
  276. package/dist/remoteRun/output.d.ts.map +1 -0
  277. package/dist/remoteRun/output.js +127 -0
  278. package/dist/remoteRun/output.js.map +1 -0
  279. package/dist/remoteRun/pairedRunners.d.ts +51 -0
  280. package/dist/remoteRun/pairedRunners.d.ts.map +1 -0
  281. package/dist/remoteRun/pairedRunners.js +165 -0
  282. package/dist/remoteRun/pairedRunners.js.map +1 -0
  283. package/dist/remoteRun/pathPatterns.d.ts +33 -0
  284. package/dist/remoteRun/pathPatterns.d.ts.map +1 -0
  285. package/dist/remoteRun/pathPatterns.js +115 -0
  286. package/dist/remoteRun/pathPatterns.js.map +1 -0
  287. package/dist/remoteRun/probe.d.ts +78 -0
  288. package/dist/remoteRun/probe.d.ts.map +1 -0
  289. package/dist/remoteRun/probe.js +157 -0
  290. package/dist/remoteRun/probe.js.map +1 -0
  291. package/dist/remoteRun/project.d.ts +26 -0
  292. package/dist/remoteRun/project.d.ts.map +1 -0
  293. package/dist/remoteRun/project.js +159 -0
  294. package/dist/remoteRun/project.js.map +1 -0
  295. package/dist/remoteRun/projectConfig.d.ts +38 -0
  296. package/dist/remoteRun/projectConfig.d.ts.map +1 -0
  297. package/dist/remoteRun/projectConfig.js +87 -0
  298. package/dist/remoteRun/projectConfig.js.map +1 -0
  299. package/dist/remoteRun/remoteRunCli.d.ts +22 -0
  300. package/dist/remoteRun/remoteRunCli.d.ts.map +1 -0
  301. package/dist/remoteRun/remoteRunCli.js +119 -0
  302. package/dist/remoteRun/remoteRunCli.js.map +1 -0
  303. package/dist/remoteRun/remoteRunError.d.ts +14 -0
  304. package/dist/remoteRun/remoteRunError.d.ts.map +1 -0
  305. package/dist/remoteRun/remoteRunError.js +28 -0
  306. package/dist/remoteRun/remoteRunError.js.map +1 -0
  307. package/dist/remoteRun/rsync.d.ts +17 -0
  308. package/dist/remoteRun/rsync.d.ts.map +1 -0
  309. package/dist/remoteRun/rsync.js +39 -0
  310. package/dist/remoteRun/rsync.js.map +1 -0
  311. package/dist/remoteRun/runnerClient.d.ts +52 -0
  312. package/dist/remoteRun/runnerClient.d.ts.map +1 -0
  313. package/dist/remoteRun/runnerClient.js +143 -0
  314. package/dist/remoteRun/runnerClient.js.map +1 -0
  315. package/dist/remoteRun/runnerSummary.d.ts +24 -0
  316. package/dist/remoteRun/runnerSummary.d.ts.map +1 -0
  317. package/dist/remoteRun/runnerSummary.js +86 -0
  318. package/dist/remoteRun/runnerSummary.js.map +1 -0
  319. package/dist/remoteRun/runnerWait.d.ts +68 -0
  320. package/dist/remoteRun/runnerWait.d.ts.map +1 -0
  321. package/dist/remoteRun/runnerWait.js +137 -0
  322. package/dist/remoteRun/runnerWait.js.map +1 -0
  323. package/dist/remoteRun/runnerWaitTiming.d.ts +16 -0
  324. package/dist/remoteRun/runnerWaitTiming.d.ts.map +1 -0
  325. package/dist/remoteRun/runnerWaitTiming.js +37 -0
  326. package/dist/remoteRun/runnerWaitTiming.js.map +1 -0
  327. package/dist/remoteRun/runners.d.ts +57 -0
  328. package/dist/remoteRun/runners.d.ts.map +1 -0
  329. package/dist/remoteRun/runners.js +209 -0
  330. package/dist/remoteRun/runners.js.map +1 -0
  331. package/dist/remoteRun/runnersCatalog.d.ts +14 -0
  332. package/dist/remoteRun/runnersCatalog.d.ts.map +1 -0
  333. package/dist/remoteRun/runnersCatalog.js +68 -0
  334. package/dist/remoteRun/runnersCatalog.js.map +1 -0
  335. package/dist/remoteRun/runnersConfig.d.ts +53 -0
  336. package/dist/remoteRun/runnersConfig.d.ts.map +1 -0
  337. package/dist/remoteRun/runnersConfig.js +109 -0
  338. package/dist/remoteRun/runnersConfig.js.map +1 -0
  339. package/dist/remoteRun/safeCopy.d.ts +31 -0
  340. package/dist/remoteRun/safeCopy.d.ts.map +1 -0
  341. package/dist/remoteRun/safeCopy.js +137 -0
  342. package/dist/remoteRun/safeCopy.js.map +1 -0
  343. package/dist/remoteRun/sendPlan.d.ts +67 -0
  344. package/dist/remoteRun/sendPlan.d.ts.map +1 -0
  345. package/dist/remoteRun/sendPlan.js +139 -0
  346. package/dist/remoteRun/sendPlan.js.map +1 -0
  347. package/dist/remoteRun/ssh.d.ts +82 -0
  348. package/dist/remoteRun/ssh.d.ts.map +1 -0
  349. package/dist/remoteRun/ssh.js +236 -0
  350. package/dist/remoteRun/ssh.js.map +1 -0
  351. package/dist/remoteRun/submit.d.ts +29 -0
  352. package/dist/remoteRun/submit.d.ts.map +1 -0
  353. package/dist/remoteRun/submit.js +142 -0
  354. package/dist/remoteRun/submit.js.map +1 -0
  355. package/dist/requests/answerRequest.d.ts +5 -0
  356. package/dist/requests/answerRequest.d.ts.map +1 -1
  357. package/dist/requests/answerRequest.js +16 -1
  358. package/dist/requests/answerRequest.js.map +1 -1
  359. package/dist/requests/requestLedger.d.ts +13 -0
  360. package/dist/requests/requestLedger.d.ts.map +1 -1
  361. package/dist/requests/requestLedger.js +9 -0
  362. package/dist/requests/requestLedger.js.map +1 -1
  363. package/dist/requests/topicRequestSettle.d.ts +30 -0
  364. package/dist/requests/topicRequestSettle.d.ts.map +1 -0
  365. package/dist/requests/topicRequestSettle.js +23 -0
  366. package/dist/requests/topicRequestSettle.js.map +1 -0
  367. package/dist/requests/wakeUpEngine.d.ts +4 -0
  368. package/dist/requests/wakeUpEngine.d.ts.map +1 -1
  369. package/dist/requests/wakeUpEngine.js +5 -1
  370. package/dist/requests/wakeUpEngine.js.map +1 -1
  371. package/dist/runnerUtility/adminCheck.d.ts +11 -0
  372. package/dist/runnerUtility/adminCheck.d.ts.map +1 -0
  373. package/dist/runnerUtility/adminCheck.js +68 -0
  374. package/dist/runnerUtility/adminCheck.js.map +1 -0
  375. package/dist/runnerUtility/appInstall.d.ts +25 -0
  376. package/dist/runnerUtility/appInstall.d.ts.map +1 -0
  377. package/dist/runnerUtility/appInstall.js +147 -0
  378. package/dist/runnerUtility/appInstall.js.map +1 -0
  379. package/dist/runnerUtility/appUpdate.d.ts +39 -0
  380. package/dist/runnerUtility/appUpdate.d.ts.map +1 -0
  381. package/dist/runnerUtility/appUpdate.js +90 -0
  382. package/dist/runnerUtility/appUpdate.js.map +1 -0
  383. package/dist/runnerUtility/execEnv.d.ts +21 -0
  384. package/dist/runnerUtility/execEnv.d.ts.map +1 -0
  385. package/dist/runnerUtility/execEnv.js +109 -0
  386. package/dist/runnerUtility/execEnv.js.map +1 -0
  387. package/dist/runnerUtility/execSession.d.ts +13 -0
  388. package/dist/runnerUtility/execSession.d.ts.map +1 -0
  389. package/dist/runnerUtility/execSession.js +58 -0
  390. package/dist/runnerUtility/execSession.js.map +1 -0
  391. package/dist/runnerUtility/hubClient.d.ts +30 -0
  392. package/dist/runnerUtility/hubClient.d.ts.map +1 -0
  393. package/dist/runnerUtility/hubClient.js +127 -0
  394. package/dist/runnerUtility/hubClient.js.map +1 -0
  395. package/dist/runnerUtility/injectStream.d.ts +9 -0
  396. package/dist/runnerUtility/injectStream.d.ts.map +1 -0
  397. package/dist/runnerUtility/injectStream.js +12 -0
  398. package/dist/runnerUtility/injectStream.js.map +1 -0
  399. package/dist/runnerUtility/iosCheck.d.ts +62 -0
  400. package/dist/runnerUtility/iosCheck.d.ts.map +1 -0
  401. package/dist/runnerUtility/iosCheck.js +200 -0
  402. package/dist/runnerUtility/iosCheck.js.map +1 -0
  403. package/dist/runnerUtility/launcher.d.ts +5 -0
  404. package/dist/runnerUtility/launcher.d.ts.map +1 -0
  405. package/dist/runnerUtility/launcher.js +85 -0
  406. package/dist/runnerUtility/launcher.js.map +1 -0
  407. package/dist/runnerUtility/linkLoop.d.ts +47 -0
  408. package/dist/runnerUtility/linkLoop.d.ts.map +1 -0
  409. package/dist/runnerUtility/linkLoop.js +281 -0
  410. package/dist/runnerUtility/linkLoop.js.map +1 -0
  411. package/dist/runnerUtility/localLinkStop.d.ts +23 -0
  412. package/dist/runnerUtility/localLinkStop.d.ts.map +1 -0
  413. package/dist/runnerUtility/localLinkStop.js +79 -0
  414. package/dist/runnerUtility/localLinkStop.js.map +1 -0
  415. package/dist/runnerUtility/machineReport.d.ts +39 -0
  416. package/dist/runnerUtility/machineReport.d.ts.map +1 -0
  417. package/dist/runnerUtility/machineReport.js +161 -0
  418. package/dist/runnerUtility/machineReport.js.map +1 -0
  419. package/dist/runnerUtility/packageId.d.ts +5 -0
  420. package/dist/runnerUtility/packageId.d.ts.map +1 -0
  421. package/dist/runnerUtility/packageId.js +64 -0
  422. package/dist/runnerUtility/packageId.js.map +1 -0
  423. package/dist/runnerUtility/pairingRecovery.d.ts +31 -0
  424. package/dist/runnerUtility/pairingRecovery.d.ts.map +1 -0
  425. package/dist/runnerUtility/pairingRecovery.js +24 -0
  426. package/dist/runnerUtility/pairingRecovery.js.map +1 -0
  427. package/dist/runnerUtility/pueueDaemon.d.ts +36 -0
  428. package/dist/runnerUtility/pueueDaemon.d.ts.map +1 -0
  429. package/dist/runnerUtility/pueueDaemon.js +165 -0
  430. package/dist/runnerUtility/pueueDaemon.js.map +1 -0
  431. package/dist/runnerUtility/runnerCli.d.ts +18 -0
  432. package/dist/runnerUtility/runnerCli.d.ts.map +1 -0
  433. package/dist/runnerUtility/runnerCli.js +184 -0
  434. package/dist/runnerUtility/runnerCli.js.map +1 -0
  435. package/dist/runnerUtility/runnerCommands.d.ts +67 -0
  436. package/dist/runnerUtility/runnerCommands.d.ts.map +1 -0
  437. package/dist/runnerUtility/runnerCommands.js +418 -0
  438. package/dist/runnerUtility/runnerCommands.js.map +1 -0
  439. package/dist/runnerUtility/runnerConfig.d.ts +63 -0
  440. package/dist/runnerUtility/runnerConfig.d.ts.map +1 -0
  441. package/dist/runnerUtility/runnerConfig.js +153 -0
  442. package/dist/runnerUtility/runnerConfig.js.map +1 -0
  443. package/dist/runnerUtility/runnerFlags.d.ts +9 -0
  444. package/dist/runnerUtility/runnerFlags.d.ts.map +1 -0
  445. package/dist/runnerUtility/runnerFlags.js +53 -0
  446. package/dist/runnerUtility/runnerFlags.js.map +1 -0
  447. package/dist/runnerUtility/runnerHome.d.ts +30 -0
  448. package/dist/runnerUtility/runnerHome.d.ts.map +1 -0
  449. package/dist/runnerUtility/runnerHome.js +82 -0
  450. package/dist/runnerUtility/runnerHome.js.map +1 -0
  451. package/dist/runnerUtility/runnerKeys.d.ts +11 -0
  452. package/dist/runnerUtility/runnerKeys.d.ts.map +1 -0
  453. package/dist/runnerUtility/runnerKeys.js +80 -0
  454. package/dist/runnerUtility/runnerKeys.js.map +1 -0
  455. package/dist/runnerUtility/runnerServers.d.ts +40 -0
  456. package/dist/runnerUtility/runnerServers.d.ts.map +1 -0
  457. package/dist/runnerUtility/runnerServers.js +79 -0
  458. package/dist/runnerUtility/runnerServers.js.map +1 -0
  459. package/dist/runnerUtility/serviceManager.d.ts +54 -0
  460. package/dist/runnerUtility/serviceManager.d.ts.map +1 -0
  461. package/dist/runnerUtility/serviceManager.js +413 -0
  462. package/dist/runnerUtility/serviceManager.js.map +1 -0
  463. package/dist/runnerUtility/serviceUnits.d.ts +36 -0
  464. package/dist/runnerUtility/serviceUnits.d.ts.map +1 -0
  465. package/dist/runnerUtility/serviceUnits.js +169 -0
  466. package/dist/runnerUtility/serviceUnits.js.map +1 -0
  467. package/dist/runnerUtility/toolInstall.d.ts +95 -0
  468. package/dist/runnerUtility/toolInstall.d.ts.map +1 -0
  469. package/dist/runnerUtility/toolInstall.js +232 -0
  470. package/dist/runnerUtility/toolInstall.js.map +1 -0
  471. package/dist/runnerUtility/versionPollTiming.d.ts +16 -0
  472. package/dist/runnerUtility/versionPollTiming.d.ts.map +1 -0
  473. package/dist/runnerUtility/versionPollTiming.js +36 -0
  474. package/dist/runnerUtility/versionPollTiming.js.map +1 -0
  475. package/dist/runners/authorizedKeys.d.ts +52 -0
  476. package/dist/runners/authorizedKeys.d.ts.map +1 -0
  477. package/dist/runners/authorizedKeys.js +153 -0
  478. package/dist/runners/authorizedKeys.js.map +1 -0
  479. package/dist/runners/bootstrapLine.d.ts +4 -0
  480. package/dist/runners/bootstrapLine.d.ts.map +1 -0
  481. package/dist/runners/bootstrapLine.js +69 -0
  482. package/dist/runners/bootstrapLine.js.map +1 -0
  483. package/dist/runners/gate.d.ts +41 -0
  484. package/dist/runners/gate.d.ts.map +1 -0
  485. package/dist/runners/gate.js +216 -0
  486. package/dist/runners/gate.js.map +1 -0
  487. package/dist/runners/gateLink.d.ts +26 -0
  488. package/dist/runners/gateLink.d.ts.map +1 -0
  489. package/dist/runners/gateLink.js +240 -0
  490. package/dist/runners/gateLink.js.map +1 -0
  491. package/dist/runners/gateProtocol.d.ts +98 -0
  492. package/dist/runners/gateProtocol.d.ts.map +1 -0
  493. package/dist/runners/gateProtocol.js +149 -0
  494. package/dist/runners/gateProtocol.js.map +1 -0
  495. package/dist/runners/gateWrapper.d.ts +6 -0
  496. package/dist/runners/gateWrapper.d.ts.map +1 -0
  497. package/dist/runners/gateWrapper.js +70 -0
  498. package/dist/runners/gateWrapper.js.map +1 -0
  499. package/dist/runners/hubAddress.d.ts +33 -0
  500. package/dist/runners/hubAddress.d.ts.map +1 -0
  501. package/dist/runners/hubAddress.js +88 -0
  502. package/dist/runners/hubAddress.js.map +1 -0
  503. package/dist/runners/hubAddressCandidates.d.ts +16 -0
  504. package/dist/runners/hubAddressCandidates.d.ts.map +1 -0
  505. package/dist/runners/hubAddressCandidates.js +96 -0
  506. package/dist/runners/hubAddressCandidates.js.map +1 -0
  507. package/dist/runners/hubIds.d.ts +16 -0
  508. package/dist/runners/hubIds.d.ts.map +1 -0
  509. package/dist/runners/hubIds.js +25 -0
  510. package/dist/runners/hubIds.js.map +1 -0
  511. package/dist/runners/hubKey.d.ts +6 -0
  512. package/dist/runners/hubKey.d.ts.map +1 -0
  513. package/dist/runners/hubKey.js +78 -0
  514. package/dist/runners/hubKey.js.map +1 -0
  515. package/dist/runners/hubLock.d.ts +7 -0
  516. package/dist/runners/hubLock.d.ts.map +1 -0
  517. package/dist/runners/hubLock.js +230 -0
  518. package/dist/runners/hubLock.js.map +1 -0
  519. package/dist/runners/hubPackage.d.ts +23 -0
  520. package/dist/runners/hubPackage.d.ts.map +1 -0
  521. package/dist/runners/hubPackage.js +184 -0
  522. package/dist/runners/hubPackage.js.map +1 -0
  523. package/dist/runners/hubPairing.d.ts +63 -0
  524. package/dist/runners/hubPairing.d.ts.map +1 -0
  525. package/dist/runners/hubPairing.js +261 -0
  526. package/dist/runners/hubPairing.js.map +1 -0
  527. package/dist/runners/hubPaths.d.ts +38 -0
  528. package/dist/runners/hubPaths.d.ts.map +1 -0
  529. package/dist/runners/hubPaths.js +94 -0
  530. package/dist/runners/hubPaths.js.map +1 -0
  531. package/dist/runners/hubRegistry.d.ts +112 -0
  532. package/dist/runners/hubRegistry.d.ts.map +1 -0
  533. package/dist/runners/hubRegistry.js +210 -0
  534. package/dist/runners/hubRegistry.js.map +1 -0
  535. package/dist/runners/linkControl.d.ts +27 -0
  536. package/dist/runners/linkControl.d.ts.map +1 -0
  537. package/dist/runners/linkControl.js +124 -0
  538. package/dist/runners/linkControl.js.map +1 -0
  539. package/dist/runners/pairCode.d.ts +30 -0
  540. package/dist/runners/pairCode.d.ts.map +1 -0
  541. package/dist/runners/pairCode.js +46 -0
  542. package/dist/runners/pairCode.js.map +1 -0
  543. package/dist/runners/pairingTiming.d.ts +18 -0
  544. package/dist/runners/pairingTiming.d.ts.map +1 -0
  545. package/dist/runners/pairingTiming.js +42 -0
  546. package/dist/runners/pairingTiming.js.map +1 -0
  547. package/dist/runners/runnerProxy.d.ts +9 -0
  548. package/dist/runners/runnerProxy.d.ts.map +1 -0
  549. package/dist/runners/runnerProxy.js +67 -0
  550. package/dist/runners/runnerProxy.js.map +1 -0
  551. package/dist/runners/runnerRemoval.d.ts +21 -0
  552. package/dist/runners/runnerRemoval.d.ts.map +1 -0
  553. package/dist/runners/runnerRemoval.js +82 -0
  554. package/dist/runners/runnerRemoval.js.map +1 -0
  555. package/dist/runners/runnersCli.d.ts +16 -0
  556. package/dist/runners/runnersCli.d.ts.map +1 -0
  557. package/dist/runners/runnersCli.js +214 -0
  558. package/dist/runners/runnersCli.js.map +1 -0
  559. package/dist/runners/runnersList.d.ts +17 -0
  560. package/dist/runners/runnersList.d.ts.map +1 -0
  561. package/dist/runners/runnersList.js +49 -0
  562. package/dist/runners/runnersList.js.map +1 -0
  563. package/dist/runners/runnersOverview.d.ts +20 -0
  564. package/dist/runners/runnersOverview.d.ts.map +1 -0
  565. package/dist/runners/runnersOverview.js +55 -0
  566. package/dist/runners/runnersOverview.js.map +1 -0
  567. package/dist/runners/sshKeys.d.ts +26 -0
  568. package/dist/runners/sshKeys.d.ts.map +1 -0
  569. package/dist/runners/sshKeys.js +60 -0
  570. package/dist/runners/sshKeys.js.map +1 -0
  571. package/dist/runners/tarArchive.d.ts +20 -0
  572. package/dist/runners/tarArchive.d.ts.map +1 -0
  573. package/dist/runners/tarArchive.js +70 -0
  574. package/dist/runners/tarArchive.js.map +1 -0
  575. package/dist/scheduler/delivery.d.ts +2 -0
  576. package/dist/scheduler/delivery.d.ts.map +1 -1
  577. package/dist/scheduler/delivery.js +8 -4
  578. package/dist/scheduler/delivery.js.map +1 -1
  579. package/dist/scheduler/mcpSurface.d.ts +65 -10
  580. package/dist/scheduler/mcpSurface.d.ts.map +1 -1
  581. package/dist/scheduler/mcpSurface.js +319 -89
  582. package/dist/scheduler/mcpSurface.js.map +1 -1
  583. package/dist/scheduler/recurrence.d.ts +5 -0
  584. package/dist/scheduler/recurrence.d.ts.map +1 -1
  585. package/dist/scheduler/recurrence.js +12 -2
  586. package/dist/scheduler/recurrence.js.map +1 -1
  587. package/dist/scheduler/strictToolInput.d.ts +45 -0
  588. package/dist/scheduler/strictToolInput.d.ts.map +1 -0
  589. package/dist/scheduler/strictToolInput.js +155 -0
  590. package/dist/scheduler/strictToolInput.js.map +1 -0
  591. package/dist/scheduler/types.d.ts +5 -0
  592. package/dist/scheduler/types.d.ts.map +1 -1
  593. package/dist/scheduler/workerWatch.d.ts +23 -0
  594. package/dist/scheduler/workerWatch.d.ts.map +1 -0
  595. package/dist/scheduler/workerWatch.js +26 -0
  596. package/dist/scheduler/workerWatch.js.map +1 -0
  597. package/dist/selfUpdate/emittedSource.d.ts +11 -0
  598. package/dist/selfUpdate/emittedSource.d.ts.map +1 -0
  599. package/dist/selfUpdate/emittedSource.js +24 -0
  600. package/dist/selfUpdate/emittedSource.js.map +1 -0
  601. package/dist/selfUpdate/gitSource.d.ts +0 -6
  602. package/dist/selfUpdate/gitSource.d.ts.map +1 -1
  603. package/dist/selfUpdate/gitSource.js +2 -18
  604. package/dist/selfUpdate/gitSource.js.map +1 -1
  605. package/dist/selfUpdate/selfCheck.js +2 -2
  606. package/dist/selfUpdate/selfCheck.js.map +1 -1
  607. package/dist/selfUpdate/updatePending.d.ts +1 -1
  608. package/dist/sendErrorClassifier.d.ts +10 -0
  609. package/dist/sendErrorClassifier.d.ts.map +1 -1
  610. package/dist/sendErrorClassifier.js +22 -0
  611. package/dist/sendErrorClassifier.js.map +1 -1
  612. package/dist/state.d.ts +78 -7
  613. package/dist/state.d.ts.map +1 -1
  614. package/dist/state.js +125 -8
  615. package/dist/state.js.map +1 -1
  616. package/dist/stateFile.d.ts +9 -0
  617. package/dist/stateFile.d.ts.map +1 -0
  618. package/dist/stateFile.js +57 -0
  619. package/dist/stateFile.js.map +1 -0
  620. package/dist/stt/sttInstall.d.ts +7 -3
  621. package/dist/stt/sttInstall.d.ts.map +1 -1
  622. package/dist/stt/sttInstall.js +8 -4
  623. package/dist/stt/sttInstall.js.map +1 -1
  624. package/dist/stt/sttSettings.d.ts +2 -1
  625. package/dist/stt/sttSettings.d.ts.map +1 -1
  626. package/dist/stt/sttSettings.js +3 -2
  627. package/dist/stt/sttSettings.js.map +1 -1
  628. package/dist/stt/transcribeChain.js +2 -0
  629. package/dist/stt/transcribeChain.js.map +1 -1
  630. package/dist/testTimings.d.ts +16 -3
  631. package/dist/testTimings.d.ts.map +1 -1
  632. package/dist/testTimings.js +35 -2
  633. package/dist/testTimings.js.map +1 -1
  634. package/dist/todos/board.d.ts +83 -0
  635. package/dist/todos/board.d.ts.map +1 -0
  636. package/dist/todos/board.js +227 -0
  637. package/dist/todos/board.js.map +1 -0
  638. package/dist/todos/format.d.ts +33 -0
  639. package/dist/todos/format.d.ts.map +1 -0
  640. package/dist/todos/format.js +90 -0
  641. package/dist/todos/format.js.map +1 -0
  642. package/dist/todos/merge.d.ts +46 -0
  643. package/dist/todos/merge.d.ts.map +1 -0
  644. package/dist/todos/merge.js +137 -0
  645. package/dist/todos/merge.js.map +1 -0
  646. package/dist/todos/midTurn.d.ts +75 -0
  647. package/dist/todos/midTurn.d.ts.map +1 -0
  648. package/dist/todos/midTurn.js +214 -0
  649. package/dist/todos/midTurn.js.map +1 -0
  650. package/dist/todos/nag.d.ts +85 -0
  651. package/dist/todos/nag.d.ts.map +1 -0
  652. package/dist/todos/nag.js +103 -0
  653. package/dist/todos/nag.js.map +1 -0
  654. package/dist/todos/order.d.ts +25 -0
  655. package/dist/todos/order.d.ts.map +1 -0
  656. package/dist/todos/order.js +61 -0
  657. package/dist/todos/order.js.map +1 -0
  658. package/dist/todos/projects.d.ts +102 -0
  659. package/dist/todos/projects.d.ts.map +1 -0
  660. package/dist/todos/projects.js +342 -0
  661. package/dist/todos/projects.js.map +1 -0
  662. package/dist/todos/registry.d.ts +64 -0
  663. package/dist/todos/registry.d.ts.map +1 -0
  664. package/dist/todos/registry.js +116 -0
  665. package/dist/todos/registry.js.map +1 -0
  666. package/dist/todos/reminderEngine.d.ts +78 -0
  667. package/dist/todos/reminderEngine.d.ts.map +1 -0
  668. package/dist/todos/reminderEngine.js +162 -0
  669. package/dist/todos/reminderEngine.js.map +1 -0
  670. package/dist/todos/store.d.ts +34 -0
  671. package/dist/todos/store.d.ts.map +1 -0
  672. package/dist/todos/store.js +208 -0
  673. package/dist/todos/store.js.map +1 -0
  674. package/dist/todos/tools.d.ts +26 -0
  675. package/dist/todos/tools.d.ts.map +1 -0
  676. package/dist/todos/tools.js +25 -0
  677. package/dist/todos/tools.js.map +1 -0
  678. package/dist/todos/types.d.ts +85 -0
  679. package/dist/todos/types.d.ts.map +1 -0
  680. package/dist/todos/types.js +30 -0
  681. package/dist/todos/types.js.map +1 -0
  682. package/dist/trackers/taskAgentLimit.d.ts +58 -0
  683. package/dist/trackers/taskAgentLimit.d.ts.map +1 -0
  684. package/dist/trackers/taskAgentLimit.js +62 -0
  685. package/dist/trackers/taskAgentLimit.js.map +1 -0
  686. package/dist/trackers/taskAgentSlots.d.ts +109 -0
  687. package/dist/trackers/taskAgentSlots.d.ts.map +1 -0
  688. package/dist/trackers/taskAgentSlots.js +227 -0
  689. package/dist/trackers/taskAgentSlots.js.map +1 -0
  690. package/dist/trackers/types.d.ts +14 -0
  691. package/dist/trackers/types.d.ts.map +1 -0
  692. package/dist/trackers/types.js +3 -0
  693. package/dist/trackers/types.js.map +1 -0
  694. package/dist/types.d.ts +80 -4
  695. package/dist/types.d.ts.map +1 -1
  696. package/dist/utils/adoptReplayGate.d.ts +16 -0
  697. package/dist/utils/adoptReplayGate.d.ts.map +1 -0
  698. package/dist/utils/adoptReplayGate.js +35 -0
  699. package/dist/utils/adoptReplayGate.js.map +1 -0
  700. package/dist/utils/agentEnvironment.d.ts +6 -2
  701. package/dist/utils/agentEnvironment.d.ts.map +1 -1
  702. package/dist/utils/agentEnvironment.js +13 -2
  703. package/dist/utils/agentEnvironment.js.map +1 -1
  704. package/dist/utils/agentPlugin.d.ts +113 -0
  705. package/dist/utils/agentPlugin.d.ts.map +1 -0
  706. package/dist/utils/agentPlugin.js +192 -0
  707. package/dist/utils/agentPlugin.js.map +1 -0
  708. package/dist/utils/autoContinueOnLimit.d.ts +7 -4
  709. package/dist/utils/autoContinueOnLimit.d.ts.map +1 -1
  710. package/dist/utils/autoContinueOnLimit.js +8 -5
  711. package/dist/utils/autoContinueOnLimit.js.map +1 -1
  712. package/dist/utils/botSkills.d.ts +62 -0
  713. package/dist/utils/botSkills.d.ts.map +1 -0
  714. package/dist/utils/botSkills.js +53 -0
  715. package/dist/utils/botSkills.js.map +1 -0
  716. package/dist/utils/botSkillsSetting.d.ts +7 -0
  717. package/dist/utils/botSkillsSetting.d.ts.map +1 -0
  718. package/dist/utils/botSkillsSetting.js +9 -0
  719. package/dist/utils/botSkillsSetting.js.map +1 -0
  720. package/dist/utils/claudeCodeVersion.d.ts +7 -0
  721. package/dist/utils/claudeCodeVersion.d.ts.map +1 -1
  722. package/dist/utils/claudeCodeVersion.js +14 -1
  723. package/dist/utils/claudeCodeVersion.js.map +1 -1
  724. package/dist/utils/claudeCompactHook.d.ts +33 -15
  725. package/dist/utils/claudeCompactHook.d.ts.map +1 -1
  726. package/dist/utils/claudeCompactHook.js +36 -17
  727. package/dist/utils/claudeCompactHook.js.map +1 -1
  728. package/dist/utils/claudeCompactSummary.d.ts +15 -0
  729. package/dist/utils/claudeCompactSummary.d.ts.map +1 -0
  730. package/dist/utils/claudeCompactSummary.js +96 -0
  731. package/dist/utils/claudeCompactSummary.js.map +1 -0
  732. package/dist/utils/claudeLimitSwitch.d.ts +11 -9
  733. package/dist/utils/claudeLimitSwitch.d.ts.map +1 -1
  734. package/dist/utils/claudeLimitSwitch.js +18 -16
  735. package/dist/utils/claudeLimitSwitch.js.map +1 -1
  736. package/dist/utils/claudeProfiles.d.ts +5 -0
  737. package/dist/utils/claudeProfiles.d.ts.map +1 -1
  738. package/dist/utils/claudeProfiles.js +14 -0
  739. package/dist/utils/claudeProfiles.js.map +1 -1
  740. package/dist/utils/claudeSessionTitle.d.ts +2 -1
  741. package/dist/utils/claudeSessionTitle.d.ts.map +1 -1
  742. package/dist/utils/claudeSessionTitle.js +14 -14
  743. package/dist/utils/claudeSessionTitle.js.map +1 -1
  744. package/dist/utils/claudeUsage.d.ts +95 -15
  745. package/dist/utils/claudeUsage.d.ts.map +1 -1
  746. package/dist/utils/claudeUsage.js +241 -41
  747. package/dist/utils/claudeUsage.js.map +1 -1
  748. package/dist/utils/claudeUsageRefresher.d.ts +10 -0
  749. package/dist/utils/claudeUsageRefresher.d.ts.map +1 -1
  750. package/dist/utils/claudeUsageRefresher.js +11 -0
  751. package/dist/utils/claudeUsageRefresher.js.map +1 -1
  752. package/dist/utils/claudeUserEntry.d.ts +50 -0
  753. package/dist/utils/claudeUserEntry.d.ts.map +1 -0
  754. package/dist/utils/claudeUserEntry.js +120 -0
  755. package/dist/utils/claudeUserEntry.js.map +1 -0
  756. package/dist/utils/clearThreadOutputQueues.d.ts +4 -3
  757. package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -1
  758. package/dist/utils/clearThreadOutputQueues.js +1 -1
  759. package/dist/utils/clearThreadOutputQueues.js.map +1 -1
  760. package/dist/utils/compactOnIdle.d.ts +33 -13
  761. package/dist/utils/compactOnIdle.d.ts.map +1 -1
  762. package/dist/utils/compactOnIdle.js +35 -15
  763. package/dist/utils/compactOnIdle.js.map +1 -1
  764. package/dist/utils/fallbackBridge.d.ts +5 -0
  765. package/dist/utils/fallbackBridge.d.ts.map +1 -1
  766. package/dist/utils/fallbackBridge.js +19 -3
  767. package/dist/utils/fallbackBridge.js.map +1 -1
  768. package/dist/utils/fallbackChain.d.ts +9 -3
  769. package/dist/utils/fallbackChain.d.ts.map +1 -1
  770. package/dist/utils/fallbackChain.js +21 -3
  771. package/dist/utils/fallbackChain.js.map +1 -1
  772. package/dist/utils/fileSendPlan.d.ts +6 -0
  773. package/dist/utils/fileSendPlan.d.ts.map +1 -1
  774. package/dist/utils/fileSendPlan.js +11 -0
  775. package/dist/utils/fileSendPlan.js.map +1 -1
  776. package/dist/utils/fileSendService.d.ts +7 -1
  777. package/dist/utils/fileSendService.d.ts.map +1 -1
  778. package/dist/utils/fileSendService.js +6 -2
  779. package/dist/utils/fileSendService.js.map +1 -1
  780. package/dist/utils/groupFinalizePlan.d.ts +8 -10
  781. package/dist/utils/groupFinalizePlan.d.ts.map +1 -1
  782. package/dist/utils/groupFinalizePlan.js +8 -12
  783. package/dist/utils/groupFinalizePlan.js.map +1 -1
  784. package/dist/utils/jsonStreamHost.d.ts +13 -0
  785. package/dist/utils/jsonStreamHost.d.ts.map +1 -1
  786. package/dist/utils/jsonStreamHost.js +13 -0
  787. package/dist/utils/jsonStreamHost.js.map +1 -1
  788. package/dist/utils/messageSendService.d.ts +5 -3
  789. package/dist/utils/messageSendService.d.ts.map +1 -1
  790. package/dist/utils/messageSendService.js +12 -5
  791. package/dist/utils/messageSendService.js.map +1 -1
  792. package/dist/utils/openCodeCompactPlugin.d.ts +39 -14
  793. package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -1
  794. package/dist/utils/openCodeCompactPlugin.js +106 -38
  795. package/dist/utils/openCodeCompactPlugin.js.map +1 -1
  796. package/dist/utils/promptDelivery.d.ts +29 -12
  797. package/dist/utils/promptDelivery.d.ts.map +1 -1
  798. package/dist/utils/promptDelivery.js +13 -5
  799. package/dist/utils/promptDelivery.js.map +1 -1
  800. package/dist/utils/runnersScreenPlan.d.ts +130 -0
  801. package/dist/utils/runnersScreenPlan.d.ts.map +1 -0
  802. package/dist/utils/runnersScreenPlan.js +257 -0
  803. package/dist/utils/runnersScreenPlan.js.map +1 -0
  804. package/dist/utils/sentKindsSummary.d.ts +10 -0
  805. package/dist/utils/sentKindsSummary.d.ts.map +1 -0
  806. package/dist/utils/sentKindsSummary.js +18 -0
  807. package/dist/utils/sentKindsSummary.js.map +1 -0
  808. package/dist/utils/telegramError.d.ts +6 -0
  809. package/dist/utils/telegramError.d.ts.map +1 -1
  810. package/dist/utils/telegramError.js +12 -0
  811. package/dist/utils/telegramError.js.map +1 -1
  812. package/dist/utils/topicView.d.ts +1 -1
  813. package/dist/utils/topicView.js +1 -1
  814. package/dist/utils/transcribeAudio.d.ts +10 -0
  815. package/dist/utils/transcribeAudio.d.ts.map +1 -1
  816. package/dist/utils/transcribeAudio.js +22 -3
  817. package/dist/utils/transcribeAudio.js.map +1 -1
  818. package/dist/utils/transcriptErrorTime.d.ts +8 -0
  819. package/dist/utils/transcriptErrorTime.d.ts.map +1 -0
  820. package/dist/utils/transcriptErrorTime.js +56 -0
  821. package/dist/utils/transcriptErrorTime.js.map +1 -0
  822. package/dist/utils/wedgeRecovery.d.ts +2 -0
  823. package/dist/utils/wedgeRecovery.d.ts.map +1 -1
  824. package/dist/utils/wedgeRecovery.js +1 -1
  825. package/dist/utils/wedgeRecovery.js.map +1 -1
  826. package/package.json +15 -4
  827. package/remoteRun/runner.sh +1317 -0
  828. package/stt/gigaam_sidecar.py +555 -50
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @description The connections the bot keeps pooled to the Bot API, and what happens when the server closed one the bot
3
+ * still held.
4
+ *
5
+ * The bot keeps its connections alive and reuses them. A server closes an idle one after a while; a client that learns
6
+ * of it only when it writes its next request (a process starved of CPU, whose event loop has not yet read the close)
7
+ * gets «socket hang up» / `ECONNRESET` / `EPIPE` for a request the closed connection never delivered. Two layers:
8
+ *
9
+ * 1. The agent closes a connection that sat idle in the pool for {@link botApiFreeSocketTimeoutMs} itself, long before
10
+ * the server's own idle limit (api.telegram.org kept an idle HTTP/1.1 connection for more than 130 s when measured),
11
+ * so an ordinary pause between two sends never meets a connection the server closed. A client stalled past the
12
+ * server's limit cannot be helped that way: its timers do not run either, and the stale connection is still in the
13
+ * pool when the next request starts. What it meets then depends on the Node: since 22.23.4 the http agent looks for
14
+ * what the server already sent on an idle socket before it reuses it («http: ensure agent data guard works without I/O»,
15
+ * CVE-2026-105481) and opens a fresh connection; an older Node (`engines` allows 22.12) writes onto the closed one.
16
+ * 2. {@link wireBotApiClient} makes a client send such a request again ONCE, on a fresh connection — the case of those older
17
+ * agents, and on every Node the one of a server that closes the connection as the request is on its way, which no
18
+ * client sees coming. It does so only when
19
+ * the request rode a REUSED connection (`ClientRequest.reusedSocket`, the signal Node documents for exactly this) and
20
+ * the connection failed at once ({@link staleConnectionFailureWindowMs}) with the socket having read not a single byte
21
+ * since the reuse: no answer began, not even a partial one, and the server did not sit on the request. A timeout, an
22
+ * abort, an answer that began, a failure that came late and a first-time connection are never retried.
23
+ *
24
+ * This is a heuristic, not a guarantee. A server that took the request and dropped the connection at once, before a byte of
25
+ * its answer, looks the same to the client, and there the retry posts the message twice. That case is rare; the alternative
26
+ * is losing the message every time a pooled connection had been closed.
27
+ */
28
+ import * as http from 'http';
29
+ import * as https from 'https';
30
+ import type { CallApiHost } from '../../outputTrace';
31
+ /**
32
+ * @description How long a connection may idle in the pool before the agent closes it. Well under the server's own limit
33
+ * (the real Bot API held an idle HTTP/1.1 connection for more than 130 s when measured, and sends no `Keep-Alive` hint),
34
+ * long enough to span the pauses between a topic's sends and the typing indicator, so a streaming reply keeps its warm
35
+ * connection.
36
+ *
37
+ * It is a socket idle timeout, applied by Node only to FREE sockets (`http.Agent` destroys a socket on `timeout` only if
38
+ * it sits in the free list): a long poll that waits 50 s for an update is not cut.
39
+ */
40
+ export declare const botApiFreeSocketTimeoutMs = 30000;
41
+ /**
42
+ * @description How soon after a pooled connection was handed to a request its failure still counts as "the server had
43
+ * closed it". A closed connection fails within one turn of the event loop of the write — milliseconds, a second on a host
44
+ * that is starved of CPU —, while a server that took the request, worked on it for long and then dropped the connection
45
+ * (a slow send under load, a media group, a middlebox) fails later: that request is not retried.
46
+ */
47
+ export declare const staleConnectionFailureWindowMs = 1000;
48
+ /** The log line of a retry: `<prefix> (<method>): …`. Never carries the bot token. */
49
+ export declare const reusedConnectionRetryLogPrefix = "[telegram] pooled connection was closed by the server, retrying once on a fresh one";
50
+ /**
51
+ * @description The keep-alive, IPv4-pinned `https.Agent` the Bot API client and the file downloads ride: a warm
52
+ * connection avoids the cold-handshake stall.
53
+ */
54
+ export declare function createBotApiHttpsAgent(freeSocketTimeoutMs?: number): https.Agent;
55
+ /**
56
+ * @description The same pooling for an `http://` API root (the process-level tests' fake on loopback): Telegraf drops its
57
+ * agent for such a root and node-fetch then falls back to the global agent, which has other limits.
58
+ */
59
+ export declare function createBotApiHttpAgent(freeSocketTimeoutMs?: number): http.Agent;
60
+ /** A Telegraf `Telegram` client, as far as the wiring needs it. */
61
+ export interface BotApiClient extends CallApiHost {
62
+ readonly options: {
63
+ agent?: http.Agent;
64
+ };
65
+ }
66
+ /**
67
+ * @description Put the bot's pooling on a Telegraf client: its agent (Telegraf drops the agent of an `http://` root, and
68
+ * builds every client from options that already lack it) and the retry of a request that met a closed pooled connection.
69
+ * Telegraf builds a NEW client for every update (`ctx.telegram`, behind `ctx.reply` / `ctx.answerCbQuery` /
70
+ * `ctx.editMessageText`), so this runs once for `bot.telegram` and once per update for `ctx.telegram`. For `bot.telegram`
71
+ * call it AFTER the output trace wrap, so the trace records both attempts of a retried request.
72
+ */
73
+ export declare function wireBotApiClient(telegram: BotApiClient, agent: http.Agent): void;
74
+ //# sourceMappingURL=botApiConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"botApiConnection.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/botApiConnection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAKhD;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,OAAO,CAAC;AAEnD,sFAAsF;AACtF,eAAO,MAAM,8BAA8B,wFAAwF,CAAC;AAkDpI;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,mBAAmB,GAAE,MAAkC,GAAG,KAAK,CAAC,KAAK,CAE3G;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,mBAAmB,GAAE,MAAkC,GAAG,IAAI,CAAC,KAAK,CAEzG;AA0CD,mEAAmE;AACnE,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,QAAQ,CAAC,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAA;KAAE,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAGhF"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ /**
3
+ * @description The connections the bot keeps pooled to the Bot API, and what happens when the server closed one the bot
4
+ * still held.
5
+ *
6
+ * The bot keeps its connections alive and reuses them. A server closes an idle one after a while; a client that learns
7
+ * of it only when it writes its next request (a process starved of CPU, whose event loop has not yet read the close)
8
+ * gets «socket hang up» / `ECONNRESET` / `EPIPE` for a request the closed connection never delivered. Two layers:
9
+ *
10
+ * 1. The agent closes a connection that sat idle in the pool for {@link botApiFreeSocketTimeoutMs} itself, long before
11
+ * the server's own idle limit (api.telegram.org kept an idle HTTP/1.1 connection for more than 130 s when measured),
12
+ * so an ordinary pause between two sends never meets a connection the server closed. A client stalled past the
13
+ * server's limit cannot be helped that way: its timers do not run either, and the stale connection is still in the
14
+ * pool when the next request starts. What it meets then depends on the Node: since 22.23.4 the http agent looks for
15
+ * what the server already sent on an idle socket before it reuses it («http: ensure agent data guard works without I/O»,
16
+ * CVE-2026-105481) and opens a fresh connection; an older Node (`engines` allows 22.12) writes onto the closed one.
17
+ * 2. {@link wireBotApiClient} makes a client send such a request again ONCE, on a fresh connection — the case of those older
18
+ * agents, and on every Node the one of a server that closes the connection as the request is on its way, which no
19
+ * client sees coming. It does so only when
20
+ * the request rode a REUSED connection (`ClientRequest.reusedSocket`, the signal Node documents for exactly this) and
21
+ * the connection failed at once ({@link staleConnectionFailureWindowMs}) with the socket having read not a single byte
22
+ * since the reuse: no answer began, not even a partial one, and the server did not sit on the request. A timeout, an
23
+ * abort, an answer that began, a failure that came late and a first-time connection are never retried.
24
+ *
25
+ * This is a heuristic, not a guarantee. A server that took the request and dropped the connection at once, before a byte of
26
+ * its answer, looks the same to the client, and there the retry posts the message twice. That case is rare; the alternative
27
+ * is losing the message every time a pooled connection had been closed.
28
+ */
29
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ var desc = Object.getOwnPropertyDescriptor(m, k);
32
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
33
+ desc = { enumerable: true, get: function() { return m[k]; } };
34
+ }
35
+ Object.defineProperty(o, k2, desc);
36
+ }) : (function(o, m, k, k2) {
37
+ if (k2 === undefined) k2 = k;
38
+ o[k2] = m[k];
39
+ }));
40
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
41
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
42
+ }) : function(o, v) {
43
+ o["default"] = v;
44
+ });
45
+ var __importStar = (this && this.__importStar) || (function () {
46
+ var ownKeys = function(o) {
47
+ ownKeys = Object.getOwnPropertyNames || function (o) {
48
+ var ar = [];
49
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
50
+ return ar;
51
+ };
52
+ return ownKeys(o);
53
+ };
54
+ return function (mod) {
55
+ if (mod && mod.__esModule) return mod;
56
+ var result = {};
57
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
58
+ __setModuleDefault(result, mod);
59
+ return result;
60
+ };
61
+ })();
62
+ Object.defineProperty(exports, "__esModule", { value: true });
63
+ exports.reusedConnectionRetryLogPrefix = exports.staleConnectionFailureWindowMs = exports.botApiFreeSocketTimeoutMs = void 0;
64
+ exports.createBotApiHttpsAgent = createBotApiHttpsAgent;
65
+ exports.createBotApiHttpAgent = createBotApiHttpAgent;
66
+ exports.wireBotApiClient = wireBotApiClient;
67
+ const http = __importStar(require("http"));
68
+ const https = __importStar(require("https"));
69
+ const async_hooks_1 = require("async_hooks");
70
+ const net_1 = require("net");
71
+ const perf_hooks_1 = require("perf_hooks");
72
+ const stream_1 = require("stream");
73
+ const sendErrorClassifier_1 = require("../../sendErrorClassifier");
74
+ /**
75
+ * @description How long a connection may idle in the pool before the agent closes it. Well under the server's own limit
76
+ * (the real Bot API held an idle HTTP/1.1 connection for more than 130 s when measured, and sends no `Keep-Alive` hint),
77
+ * long enough to span the pauses between a topic's sends and the typing indicator, so a streaming reply keeps its warm
78
+ * connection.
79
+ *
80
+ * It is a socket idle timeout, applied by Node only to FREE sockets (`http.Agent` destroys a socket on `timeout` only if
81
+ * it sits in the free list): a long poll that waits 50 s for an update is not cut.
82
+ */
83
+ exports.botApiFreeSocketTimeoutMs = 30_000;
84
+ /** The initial delay of the TCP keep-alive probes on a pooled connection. */
85
+ const tcpKeepAliveInitialDelayMs = 10_000;
86
+ /**
87
+ * @description How soon after a pooled connection was handed to a request its failure still counts as "the server had
88
+ * closed it". A closed connection fails within one turn of the event loop of the write — milliseconds, a second on a host
89
+ * that is starved of CPU —, while a server that took the request, worked on it for long and then dropped the connection
90
+ * (a slow send under load, a media group, a middlebox) fails later: that request is not retried.
91
+ */
92
+ exports.staleConnectionFailureWindowMs = 1000;
93
+ /** The log line of a retry: `<prefix> (<method>): …`. Never carries the bot token. */
94
+ exports.reusedConnectionRetryLogPrefix = '[telegram] pooled connection was closed by the server, retrying once on a fresh one';
95
+ /** How deep a payload is searched for a one-shot stream (`{ media: [{ media: { source: stream } }] }` is the deepest shape). */
96
+ const maxPayloadDepth = 5;
97
+ /**
98
+ * The probe of the `callApi` that is running, handed to the agent through the async context: node-fetch sits between the
99
+ * two and keeps nothing of the request on the error it throws.
100
+ */
101
+ const reuseProbeStorage = new async_hooks_1.AsyncLocalStorage();
102
+ /**
103
+ * Mark the running `callApi`'s probe when this reused request fails at once ({@link staleConnectionFailureWindowMs}) with the
104
+ * socket having read nothing since the reuse. The socket's byte count, not the request's `response` event, is the test for
105
+ * "nothing": that event fires only once a whole response head is parsed, so a connection that delivered half a head — an
106
+ * answer that began — would pass for a closed one. `bytesRead` is the bytes of the application stream on a TLS socket too (a
107
+ * `close_notify` alert is not counted).
108
+ */
109
+ function watchReusedRequest(socket, request) {
110
+ const probe = reuseProbeStorage.getStore();
111
+ if (!probe || !(socket instanceof net_1.Socket))
112
+ return;
113
+ const bytesReadAtReuse = socket.bytesRead;
114
+ const reusedAtMs = perf_hooks_1.performance.now();
115
+ request.once('error', () => {
116
+ const isAtOnce = perf_hooks_1.performance.now() - reusedAtMs <= exports.staleConnectionFailureWindowMs;
117
+ if (isAtOnce && socket.bytesRead === bytesReadAtReuse)
118
+ probe.isPooledConnectionLost = true;
119
+ });
120
+ }
121
+ /** `agent.reuseSocket` is called by Node, synchronously inside `http.request`, when a pooled socket is handed to a request. */
122
+ function trackReusedConnections(agent) {
123
+ const reuseSocket = agent.reuseSocket.bind(agent);
124
+ agent.reuseSocket = (socket, request) => {
125
+ reuseSocket(socket, request);
126
+ watchReusedRequest(socket, request);
127
+ };
128
+ return agent;
129
+ }
130
+ /** The pooling both agents share. `freeSocketTimeoutMs` is a test seam; production keeps {@link botApiFreeSocketTimeoutMs}. */
131
+ function getBotApiAgentOptions(freeSocketTimeoutMs) {
132
+ return { keepAlive: true, keepAliveMsecs: tcpKeepAliveInitialDelayMs, family: 4, timeout: freeSocketTimeoutMs };
133
+ }
134
+ /**
135
+ * @description The keep-alive, IPv4-pinned `https.Agent` the Bot API client and the file downloads ride: a warm
136
+ * connection avoids the cold-handshake stall.
137
+ */
138
+ function createBotApiHttpsAgent(freeSocketTimeoutMs = exports.botApiFreeSocketTimeoutMs) {
139
+ return trackReusedConnections(new https.Agent(getBotApiAgentOptions(freeSocketTimeoutMs)));
140
+ }
141
+ /**
142
+ * @description The same pooling for an `http://` API root (the process-level tests' fake on loopback): Telegraf drops its
143
+ * agent for such a root and node-fetch then falls back to the global agent, which has other limits.
144
+ */
145
+ function createBotApiHttpAgent(freeSocketTimeoutMs = exports.botApiFreeSocketTimeoutMs) {
146
+ return trackReusedConnections(new http.Agent(getBotApiAgentOptions(freeSocketTimeoutMs)));
147
+ }
148
+ /**
149
+ * A file handed to Telegraf as a stream can be read once: sending the payload again would upload what is left of it. Also
150
+ * skips a Buffer (its bytes are not walked) and bounds the walk.
151
+ */
152
+ function checkIsPayloadReplayable(payload, depth = 0) {
153
+ if (payload instanceof stream_1.Readable)
154
+ return false;
155
+ if (ArrayBuffer.isView(payload) || depth >= maxPayloadDepth)
156
+ return true;
157
+ return Object.values(payload).every((value) => typeof value !== 'object' || value === null || checkIsPayloadReplayable(value, depth + 1));
158
+ }
159
+ /** Close every idle pooled connection: one that went stale was idle just as long as its siblings, so a retry must not meet another. */
160
+ function destroyFreeSockets(agent) {
161
+ for (const sockets of Object.values(agent.freeSockets)) {
162
+ for (const socket of [...(sockets ?? [])])
163
+ socket.destroy();
164
+ }
165
+ }
166
+ /**
167
+ * Wrap `host.callApi` so a request that rode a reused connection and was dropped before any byte of an answer is sent again
168
+ * ONCE on a fresh connection (see the module description for what that does and does not guarantee). A second failure is the
169
+ * caller's, as before. `agent` is the one `host` sends through. Sits BELOW the send queue, the global pacer and the 429
170
+ * retry — the retry takes no permit, the thread's order is kept — and above the output trace, which therefore shows both
171
+ * attempts.
172
+ */
173
+ function installReusedConnectionRetry(host, agent) {
174
+ const originalCallApi = host.callApi.bind(host);
175
+ host.callApi = async (method, payload, options) => {
176
+ const probe = { isPooledConnectionLost: false };
177
+ try {
178
+ return await reuseProbeStorage.run(probe, () => originalCallApi(method, payload, options));
179
+ }
180
+ catch (error) {
181
+ const isRetryable = probe.isPooledConnectionLost && (0, sendErrorClassifier_1.checkIsConnectionResetError)(error) && checkIsPayloadReplayable(payload);
182
+ if (!isRetryable)
183
+ throw error;
184
+ console.warn(`${exports.reusedConnectionRetryLogPrefix} (${method})`);
185
+ destroyFreeSockets(agent);
186
+ return originalCallApi(method, payload, options);
187
+ }
188
+ };
189
+ }
190
+ /**
191
+ * @description Put the bot's pooling on a Telegraf client: its agent (Telegraf drops the agent of an `http://` root, and
192
+ * builds every client from options that already lack it) and the retry of a request that met a closed pooled connection.
193
+ * Telegraf builds a NEW client for every update (`ctx.telegram`, behind `ctx.reply` / `ctx.answerCbQuery` /
194
+ * `ctx.editMessageText`), so this runs once for `bot.telegram` and once per update for `ctx.telegram`. For `bot.telegram`
195
+ * call it AFTER the output trace wrap, so the trace records both attempts of a retried request.
196
+ */
197
+ function wireBotApiClient(telegram, agent) {
198
+ telegram.options.agent = agent;
199
+ installReusedConnectionRetry(telegram, agent);
200
+ }
201
+ //# sourceMappingURL=botApiConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"botApiConnection.js","sourceRoot":"","sources":["../../../src/connectors/telegram/botApiConnection.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * members it uses (`Pick<BotCore, …>`), and `bot.ts` builds the one object that satisfies them all.
5
5
  */
6
6
  import type { Context, NarrowedContext, Telegraf } from 'telegraf';
7
- import type { Message, Update } from 'telegraf/typings/core/types/typegram';
7
+ import type { InlineKeyboardMarkup, Message, Update } from 'telegraf/typings/core/types/typegram';
8
8
  import type { InboundCommand } from '../../../platform/inbound';
9
9
  import type { SessionKey } from '../../../sessionKey';
10
10
  import type { StateStore } from '../../../state';
@@ -20,13 +20,23 @@ export interface BotCore {
20
20
  * getter each time a handler RUNS; a copy taken at registration would be `undefined`.
21
21
  */
22
22
  getState: () => StateStore;
23
- /** Send into the topic (paced, tracked for `/clear_messages`); the sent message id, or `null` when the send failed. */
23
+ /**
24
+ * Send into the topic (paced, tracked for `/clear_messages`); the sent message id, or `null` when the send failed.
25
+ * `isSecret`: the text is a credential, the output trace records its length and nothing else.
26
+ */
24
27
  replyToThread: (key: SessionKey, text: string, extra?: object, options?: {
25
28
  unpaced?: boolean;
29
+ isSecret?: boolean;
26
30
  }) => Promise<number | null>;
27
31
  /** Edit a message of the topic in place; `false` when the edit failed. */
28
32
  editThreadMessage: (key: SessionKey, messageId: number, text: string, extra?: object) => Promise<boolean>;
29
- deleteThreadMessage: (key: SessionKey, messageId: number) => Promise<void>;
33
+ /**
34
+ * Replace the inline keyboard of a message of the topic through the paced send queue (`null` removes it). A no-change
35
+ * edit is no failure; any other failure is logged under `logTag` and answered with `false`.
36
+ */
37
+ editThreadKeyboard: (key: SessionKey, messageId: number, keyboard: InlineKeyboardMarkup | null, logTag: string) => Promise<boolean>;
38
+ /** Delete a message of the topic; `false` when it stayed (older than 48 hours, already gone, not a topic of Telegram). */
39
+ deleteThreadMessage: (key: SessionKey, messageId: number) => Promise<boolean>;
30
40
  /** Gate a callback or message to an admin of the served group; the topic's key, or `null` when it is refused. */
31
41
  authoriseContext: (ctx: Context) => Promise<SessionKey | null>;
32
42
  /** Run `fn` with the topic's resolved locale for `t(…)`. */
@@ -1 +1 @@
1
- {"version":3,"file":"botCore.d.ts","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/botCore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,gFAAgF;AAChF,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AAEjG,wDAAwD;AACxD,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAC5F,IAAI,CAAC;AAEV,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB;;;OAGG;IACH,QAAQ,EAAE,MAAM,UAAU,CAAC;IAC3B,uHAAuH;IACvH,aAAa,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1H,0EAA0E;IAC1E,iBAAiB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1G,mBAAmB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,iHAAiH;IACjH,gBAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC/D,4DAA4D;IAC5D,gBAAgB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,OAAO,KAAK,OAAO,CAAC;IAC3E,cAAc,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC;IAC7C,4DAA4D;IAC5D,kBAAkB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,6FAA6F;IAC7F,yBAAyB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAClE"}
1
+ {"version":3,"file":"botCore.d.ts","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/botCore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAClG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,gFAAgF;AAChF,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AAEjG,wDAAwD;AACxD,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAC5F,IAAI,CAAC;AAEV,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB;;;OAGG;IACH,QAAQ,EAAE,MAAM,UAAU,CAAC;IAC3B;;;OAGG;IACH,aAAa,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9I,0EAA0E;IAC1E,iBAAiB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1G;;;OAGG;IACH,kBAAkB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpI,0HAA0H;IAC1H,mBAAmB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9E,iHAAiH;IACjH,gBAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC/D,4DAA4D;IAC5D,gBAAgB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,OAAO,KAAK,OAAO,CAAC;IAC3E,cAAc,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC;IAC7C,4DAA4D;IAC5D,kBAAkB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,6FAA6F;IAC7F,yBAAyB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAClE"}
@@ -0,0 +1,21 @@
1
+ import type { SessionKey } from '../../../sessionKey';
2
+ import type { BotSkillsInstanceValue, BotSkillsReader } from '../../../utils/botSkills';
3
+ import type { BotCore } from './botCore';
4
+ /** What the module needs from the bot: the shared core and the two things only the composition root knows. */
5
+ export interface BotSkillsPorts extends Pick<BotCore, 'bot' | 'command' | 'getState' | 'replyToThread' | 'editThreadMessage' | 'authoriseContext' | 'withThreadLocale' | 'checkIsGeneral'> {
6
+ /** Whether the switch is on for a conversation; `null` asks for the instance value (General's, else `settings.json`'s, else ON). */
7
+ readBotSkills: BotSkillsReader;
8
+ /** The instance value with the layer it comes from (General's own choice, the settings file, the built-in default). */
9
+ readBotSkillsInstanceValue: () => BotSkillsInstanceValue;
10
+ /** Whether the topic's backend is OpenCode, whose one server serves every topic and so cannot hide the skills from one. */
11
+ checkIsOpenCodeTopic: (key: SessionKey) => boolean;
12
+ }
13
+ /**
14
+ * @description Build the «Bot skills» screen over its ports: `/bot_skills` and its three buttons. A tap writes the choice
15
+ * and edits the picker into its confirmation (a one-shot picker, like `/language`): the menu is gone once a choice is made.
16
+ */
17
+ export declare function createBotSkills(ports: BotSkillsPorts): {
18
+ registerBotSkillsCommands: () => void;
19
+ registerBotSkillsCallbacks: () => void;
20
+ };
21
+ //# sourceMappingURL=botSkills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"botSkills.d.ts","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/botSkills.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAA2B,sBAAsB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACjH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,8GAA8G;AAC9G,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;IAC1J,oIAAoI;IACpI,aAAa,EAAE,eAAe,CAAC;IAC/B,uHAAuH;IACvH,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;IACzD,2HAA2H;IAC3H,oBAAoB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC;CACpD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc;qCA0Fb,IAAI;sCAeH,IAAI;EAO5C"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBotSkills = createBotSkills;
4
+ /**
5
+ * The «Bot skills» switch — whether the skills Charness ships with its agents (`agent-plugin/`) and the hint to load the
6
+ * manager reach them, per topic or (in General) for the instance. See `utils/botSkills.ts` for the precedence and what OFF
7
+ * does, and README.md in this folder.
8
+ */
9
+ const telegraf_1 = require("telegraf");
10
+ const i18n_1 = require("../../../i18n");
11
+ const callbackMessage_1 = require("./callbackMessage");
12
+ /** The picker's buttons. */
13
+ const botSkillsOnCallback = 'bsk_on';
14
+ const botSkillsOffCallback = 'bsk_off';
15
+ const botSkillsSameAsGeneralCallback = 'bsk_same';
16
+ /** The word of `/bot_skills <word>` that hands a topic back to General's value. */
17
+ const sameAsGeneralArgument = 'general';
18
+ /**
19
+ * @description Build the «Bot skills» screen over its ports: `/bot_skills` and its three buttons. A tap writes the choice
20
+ * and edits the picker into its confirmation (a one-shot picker, like `/language`): the menu is gone once a choice is made.
21
+ */
22
+ function createBotSkills(ports) {
23
+ const { bot, command, getState, replyToThread, editThreadMessage, authoriseContext, withThreadLocale, checkIsGeneral, readBotSkills, readBotSkillsInstanceValue, checkIsOpenCodeTopic } = ports;
24
+ const formatState = (isEnabled) => (isEnabled ? (0, i18n_1.t)('botSkills.on') : (0, i18n_1.t)('botSkills.off'));
25
+ /**
26
+ * What the topic is told about the agent it has: a Claude agent keeps its skills until its next start; an OpenCode topic's
27
+ * skills stay listed (one server serves every topic) and only the hint changes, when that server next restarts — and it is
28
+ * shared with the OpenCode topics of the same folder.
29
+ */
30
+ const getAgentNote = (key) => (checkIsOpenCodeTopic(key) ? (0, i18n_1.t)('botSkills.openCodeTopicNote') : (0, i18n_1.t)('botSkills.runningAgentNote'));
31
+ const instanceSourceKeys = {
32
+ general: 'botSkills.instanceSourceGeneral',
33
+ settingsFile: 'botSkills.instanceSourceSettingsFile',
34
+ builtInDefault: 'botSkills.instanceSourceBuiltIn',
35
+ };
36
+ /**
37
+ * @description Write a choice and RETURN the confirmation — the one write path behind the typed form and the buttons.
38
+ * General: the instance value (`null` — «as in General» — is not offered there and changes nothing). A topic: its own
39
+ * choice, `null` drops it.
40
+ */
41
+ async function applyBotSkills(key, isGeneral, choice) {
42
+ if (isGeneral) {
43
+ if (choice !== null)
44
+ await getState().setBotSkillsGlobalValue(choice);
45
+ return (0, i18n_1.t)('botSkills.setGeneralConfirmation', { state: formatState(readBotSkills(null)) });
46
+ }
47
+ await getState().setBotSkillsOverride(key, choice);
48
+ const state = formatState(readBotSkills(key));
49
+ const confirmation = choice === null ? (0, i18n_1.t)('botSkills.followGeneralConfirmation', { state }) : (0, i18n_1.t)('botSkills.setTopicConfirmation', { state });
50
+ // A Claude topic's note continues the confirmation's line; the OpenCode one is a paragraph of its own.
51
+ return checkIsOpenCodeTopic(key) ? `${confirmation}\n\n${getAgentNote(key)}` : `${confirmation} ${getAgentNote(key)}`;
52
+ }
53
+ /** The screen's text: the value in force and where it comes from, what the switch is, and what it means for the agent. */
54
+ function buildScreenText(key, isGeneral) {
55
+ if (isGeneral) {
56
+ const instance = readBotSkillsInstanceValue();
57
+ const title = (0, i18n_1.t)('botSkills.titleGeneral', { state: formatState(instance.isEnabled), source: (0, i18n_1.t)(instanceSourceKeys[instance.source]) });
58
+ return [title, (0, i18n_1.t)('botSkills.explanationText'), (0, i18n_1.t)('botSkills.runningAgentNote'), (0, i18n_1.t)('botSkills.generalScopeNote')].join('\n\n');
59
+ }
60
+ const source = getState().getBotSkillsOverride(key) === undefined ? (0, i18n_1.t)('botSkills.sourceGeneral') : (0, i18n_1.t)('botSkills.sourceTopic');
61
+ return [(0, i18n_1.t)('botSkills.titleTopic', { state: formatState(readBotSkills(key)), source }), (0, i18n_1.t)('botSkills.explanationText'), getAgentNote(key)].join('\n\n');
62
+ }
63
+ /**
64
+ * The screen's buttons, the current choice marked ✓. General: On / Off on the instance value in force. A topic: On / Off
65
+ * and «As in General» (with the value it would give); its mark is the topic's own choice, or «As in General» when it has none.
66
+ */
67
+ function buildKeyboard(key, isGeneral) {
68
+ const mark = (isCurrent) => (isCurrent ? ' ✓' : '');
69
+ if (isGeneral) {
70
+ const isEnabled = readBotSkills(null);
71
+ return telegraf_1.Markup.inlineKeyboard([[
72
+ telegraf_1.Markup.button.callback(`${(0, i18n_1.t)('botSkills.onButton')}${mark(isEnabled)}`, botSkillsOnCallback),
73
+ telegraf_1.Markup.button.callback(`${(0, i18n_1.t)('botSkills.offButton')}${mark(!isEnabled)}`, botSkillsOffCallback),
74
+ ]]);
75
+ }
76
+ const own = getState().getBotSkillsOverride(key);
77
+ return telegraf_1.Markup.inlineKeyboard([
78
+ [
79
+ telegraf_1.Markup.button.callback(`${(0, i18n_1.t)('botSkills.onButton')}${mark(own === true)}`, botSkillsOnCallback),
80
+ telegraf_1.Markup.button.callback(`${(0, i18n_1.t)('botSkills.offButton')}${mark(own === false)}`, botSkillsOffCallback),
81
+ ],
82
+ [telegraf_1.Markup.button.callback(`${(0, i18n_1.t)('botSkills.sameAsGeneralButton', { state: formatState(readBotSkills(null)) })}${mark(own === undefined)}`, botSkillsSameAsGeneralCallback)],
83
+ ]);
84
+ }
85
+ /** The choice a typed argument names; `undefined` for none (the screen opens), and `general` means nothing in General. */
86
+ function parseChoice(argument, isGeneral) {
87
+ if (argument === 'on')
88
+ return true;
89
+ if (argument === 'off')
90
+ return false;
91
+ if (argument === sameAsGeneralArgument && !isGeneral)
92
+ return null;
93
+ return undefined;
94
+ }
95
+ /** A tap: apply the choice to the tapped topic (or General), then turn the picker into the confirmation. */
96
+ async function handleBotSkillsCallback(ctx, choice) {
97
+ const key = await authoriseContext(ctx);
98
+ if (!key) {
99
+ await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
100
+ return;
101
+ }
102
+ await ctx.answerCbQuery();
103
+ await withThreadLocale(key, async () => {
104
+ const confirmation = await applyBotSkills(key, checkIsGeneral(key), choice);
105
+ const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
106
+ if (messageId === null)
107
+ await replyToThread(key, confirmation);
108
+ else if (!(await editThreadMessage(key, messageId, confirmation)))
109
+ console.warn('[bsk_cb] picker relabel failed');
110
+ });
111
+ }
112
+ function registerBotSkillsCommands() {
113
+ // `/bot_skills` — in General the instance value, in a topic that topic's own choice. Not gated on an adapter or a
114
+ // session: a topic may choose before its agent starts, and the choice is read at the agent's next start. `on` / `off`
115
+ // (and `general` in a topic) apply at once; bare opens the one-shot picker.
116
+ command('bot_skills', async (_ctx, key, parsed) => {
117
+ const isGeneral = checkIsGeneral(key);
118
+ const choice = parseChoice(parsed.args.join(' ').trim().toLowerCase(), isGeneral);
119
+ if (choice !== undefined) {
120
+ await replyToThread(key, await applyBotSkills(key, isGeneral, choice));
121
+ return;
122
+ }
123
+ await replyToThread(key, buildScreenText(key, isGeneral), buildKeyboard(key, isGeneral));
124
+ });
125
+ }
126
+ function registerBotSkillsCallbacks() {
127
+ bot.action(botSkillsOnCallback, (ctx) => handleBotSkillsCallback(ctx, true));
128
+ bot.action(botSkillsOffCallback, (ctx) => handleBotSkillsCallback(ctx, false));
129
+ bot.action(botSkillsSameAsGeneralCallback, (ctx) => handleBotSkillsCallback(ctx, null));
130
+ }
131
+ return { registerBotSkillsCommands, registerBotSkillsCallbacks };
132
+ }
133
+ //# sourceMappingURL=botSkills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"botSkills.js","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/botSkills.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,11 @@ import type { SessionKey } from '../../../sessionKey';
10
10
  * rather than resolve against another message's list.
11
11
  */
12
12
  export declare function getCallbackMessageId(ctx: Context): number | null;
13
+ /**
14
+ * @description The text of the message a callback button sits on, as Telegram shows it (formatting marks resolved away), or
15
+ * `null` when the message carries none (a photo, a very old message). What a handler needs to rewrite a message it holds no record of.
16
+ */
17
+ export declare function getCallbackMessageText(ctx: Context): string | null;
13
18
  /**
14
19
  * @description The map key of a per-MESSAGE snapshot (the list a keyboard's indexes resolve against, the rung a
15
20
  * question waits to add). A Telegram message id is unique only within ONE chat, so the chat (`key.space`) is part of
@@ -1 +1 @@
1
- {"version":3,"file":"callbackMessage.d.ts","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/callbackMessage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQnJ"}
1
+ {"version":3,"file":"callbackMessage.d.ts","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/callbackMessage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEhE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGlE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQnJ"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCallbackMessageId = getCallbackMessageId;
4
+ exports.getCallbackMessageText = getCallbackMessageText;
4
5
  exports.buildMessageSnapshotKey = buildMessageSnapshotKey;
5
6
  exports.rememberBoundedSnapshot = rememberBoundedSnapshot;
6
7
  /**
@@ -12,6 +13,14 @@ exports.rememberBoundedSnapshot = rememberBoundedSnapshot;
12
13
  function getCallbackMessageId(ctx) {
13
14
  return ctx.callbackQuery?.message?.message_id ?? null;
14
15
  }
16
+ /**
17
+ * @description The text of the message a callback button sits on, as Telegram shows it (formatting marks resolved away), or
18
+ * `null` when the message carries none (a photo, a very old message). What a handler needs to rewrite a message it holds no record of.
19
+ */
20
+ function getCallbackMessageText(ctx) {
21
+ const message = ctx.callbackQuery?.message;
22
+ return message !== undefined && 'text' in message ? message.text : null;
23
+ }
15
24
  /**
16
25
  * @description The map key of a per-MESSAGE snapshot (the list a keyboard's indexes resolve against, the rung a
17
26
  * question waits to add). A Telegram message id is unique only within ONE chat, so the chat (`key.space`) is part of
@@ -1 +1 @@
1
- {"version":3,"file":"callbackMessage.js","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/callbackMessage.ts"],"names":[],"mappings":";;AAYA,oDAEC;AAOD,0DAEC;AAMD,0DAQC;AA/BD;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,GAAY;IAC/C,OAAO,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,GAAe,EAAE,SAAiB;IACxE,OAAO,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAY,SAAiC,EAAE,WAAmB,EAAE,QAAmB,EAAE,KAAa;IAC3I,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9B,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrC,OAAO,SAAS,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC7C,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM;QAChC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"callbackMessage.js","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/callbackMessage.ts"],"names":[],"mappings":";;AAYA,oDAEC;AAMD,wDAGC;AAOD,0DAEC;AAMD,0DAQC;AAxCD;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,GAAY;IAC/C,OAAO,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,GAAY;IACjD,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC;IAC3C,OAAO,OAAO,KAAK,SAAS,IAAI,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,GAAe,EAAE,SAAiB;IACxE,OAAO,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAY,SAAiC,EAAE,WAAmB,EAAE,QAAmB,EAAE,KAAa;IAC3I,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9B,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrC,OAAO,SAAS,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC7C,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM;QAChC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}