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,379 @@
1
+ "use strict";
2
+ /**
3
+ * @description Pure decision + text helpers for the compact-on-idle feature and
4
+ * the shared closing-section instruction (plan
5
+ * `agent/tasks/actual/2026-09-14-self-compact-and-compact-on-idle.md`, F2).
6
+ *
7
+ * Kept out of `bot.ts` (which cannot be imported by tests — its module-scope
8
+ * `parseEnv()` exits without a bot token) so every branch is unit-testable,
9
+ * mirroring `getCompactCommandRoute` in `compactCommandRoute.ts`.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.compactionClosingEndMarker = exports.compactionClosingStartMarker = exports.compactionSkillsGuidance = exports.compactionSummaryGuidance = exports.compactIdleOverdueSpreadMs = exports.compactIdleOverdueMinDelayMs = exports.idleCompactMs = void 0;
13
+ exports.getAgentIdleMs = getAgentIdleMs;
14
+ exports.getIdleCompactionArmDecision = getIdleCompactionArmDecision;
15
+ exports.resolveCompactOnIdleEnabled = resolveCompactOnIdleEnabled;
16
+ exports.resolveCompactSummaryEnabled = resolveCompactSummaryEnabled;
17
+ exports.checkIsBusyForRealTurn = checkIsBusyForRealTurn;
18
+ exports.checkIsWorkingAtIdle = checkIsWorkingAtIdle;
19
+ exports.getIdleFireDecision = getIdleFireDecision;
20
+ exports.buildCompactionInstruction = buildCompactionInstruction;
21
+ exports.formatTokenCount = formatTokenCount;
22
+ exports.stripCompactionClosingMarkers = stripCompactionClosingMarkers;
23
+ exports.checkShouldPostCompactionSummary = checkShouldPostCompactionSummary;
24
+ exports.checkShouldAnnounceCompactionStart = checkShouldAnnounceCompactionStart;
25
+ exports.buildIdleCompactionNoticeParts = buildIdleCompactionNoticeParts;
26
+ const threadToggle_1 = require("./threadToggle");
27
+ const minutesOverride_1 = require("./minutesOverride");
28
+ /**
29
+ * Idle interval before an untouched, idle agent session is auto-compacted (F2)
30
+ * and, on a backend that can be suspended, stopped (lifecycle plan L3). Chosen
31
+ * to fire just inside the ~1h Anthropic extended prompt-cache window, so the
32
+ * compaction reads the still-warm cached prefix cheaply and a resume minutes
33
+ * later still finds the cache. `AGENT_IDLE_MINUTES` overrides it for a test or
34
+ * live-test instance only (L-D9) — see {@link getAgentIdleMs}.
35
+ */
36
+ exports.idleCompactMs = 55 * 60 * 1000;
37
+ /**
38
+ * @description The idle window, honouring the `AGENT_IDLE_MINUTES` override (a
39
+ * test needs minutes, not an hour; same pattern as `REQUEST_BACKSTOP_MINUTES`).
40
+ * A missing, non-numeric or non-positive value keeps {@link idleCompactMs}.
41
+ */
42
+ function getAgentIdleMs(overrideMinutes) {
43
+ return (0, minutesOverride_1.getMinutesOverrideMs)(overrideMinutes, exports.idleCompactMs);
44
+ }
45
+ /**
46
+ * Floor delay for an OVERDUE arm (the thread has been idle longer than
47
+ * {@link idleCompactMs}, across one or more bot restarts). Never fire instantly at
48
+ * boot: the reattach is still adopting sessions and the topic may be about to
49
+ * receive a real prompt, so give it a minute of grace first.
50
+ */
51
+ exports.compactIdleOverdueMinDelayMs = 60_000;
52
+ /**
53
+ * Window the overdue arms are SPREAD over, on top of
54
+ * {@link compactIdleOverdueMinDelayMs}. See {@link getIdleCompactionArmDecision}
55
+ * for why the spread exists.
56
+ */
57
+ exports.compactIdleOverdueSpreadMs = 10 * 60 * 1000;
58
+ /**
59
+ * Deterministic non-negative string hash (FNV-1a over UTF-16 code units). Local
60
+ * and dependency-free on purpose: its only job is to derive a STABLE per-thread
61
+ * offset inside the overdue spread, so "same key ⇒ same delay" is testable and no
62
+ * two topics need to coordinate. Not a security primitive.
63
+ */
64
+ function getStableHash(text) {
65
+ const fnvOffsetBasis = 0x811c9dc5;
66
+ const fnvPrime = 0x01000193;
67
+ let hash = fnvOffsetBasis;
68
+ for (let index = 0; index < text.length; index += 1) {
69
+ hash ^= text.charCodeAt(index);
70
+ hash = Math.imul(hash, fnvPrime);
71
+ }
72
+ // `>>> 0` turns the signed 32-bit result of `Math.imul` into a non-negative int.
73
+ return hash >>> 0;
74
+ }
75
+ /**
76
+ * @description When the idle watchdog should fire for a thread, given when that
77
+ * thread was last ACTIVE (persisted, so it survives a restart) — the delay plus
78
+ * which of the three cases produced it.
79
+ *
80
+ * Three cases (reported back as {@link IdleCompactionArmKind}):
81
+ * - no persisted history (`lastActivityAt === 0`) — a fresh session, or a state
82
+ * file written before the tracking existed ⇒ the full {@link idleCompactMs}
83
+ * window, i.e. exactly the pre-persistence behaviour.
84
+ * - still inside the window ⇒ the REMAINDER, clamped to at most the full window:
85
+ * a backward wall-clock step (an NTP correction on a VPS) puts `lastActivityAt`
86
+ * in the FUTURE, which would otherwise make the thread wait the whole window
87
+ * PLUS the skew — and a skew over ~24.8 days overflows `setTimeout`, which then
88
+ * fires immediately with a `TimeoutOverflowWarning`. "The remainder can never
89
+ * exceed the full window" is true by definition and costs nothing to enforce.
90
+ * The remainder itself is the restart fix: the bot runs in hot-reload mode and
91
+ * restarts on every code change, so re-arming a flat 55 minutes each time meant
92
+ * a busy development day never let any topic reach the threshold.
93
+ * - already past the window (idle across one or more restarts) ⇒ OVERDUE, so
94
+ * fire soon, but staggered: {@link compactIdleOverdueMinDelayMs} plus a
95
+ * per-thread offset inside {@link compactIdleOverdueSpreadMs}. The boot
96
+ * reattach adopts every live session at once; without the stagger every
97
+ * overdue topic would start an LLM compaction turn and post its notice in the
98
+ * same instant. Spreading them over ~1–11 minutes keeps the backlog orderly,
99
+ * and deriving the offset from the thread key keeps it deterministic (hence
100
+ * testable) instead of random.
101
+ *
102
+ * The stagger being DETERMINISTIC was considered and chosen, not overlooked: a
103
+ * thread whose offset lands near the top of the spread never fires while the bot
104
+ * reloads more often than that offset, and a random offset would eventually get
105
+ * lucky. It is still the wrong trade — a random offset makes the fire time
106
+ * unpredictable and untestable, the starvation it would avoid lasts only while the
107
+ * operator is actively rebuilding (a state that ends), and under reloads that
108
+ * frequent a FULL-window arm starves just as surely, so the stagger is not
109
+ * uniquely affected. Do not re-litigate this as an oversight.
110
+ *
111
+ * An overdue thread is compacted even though its prompt cache has long gone
112
+ * cold. The 55-minute interval exists to make the compaction TURN itself cheap
113
+ * against a warm cache, but the payoff of compacting is that every SUBSEQUENT
114
+ * turn in that session reads a small context instead of a huge one — clearly
115
+ * worth one uncached read, whereas skipping it leaves the session permanently
116
+ * bloated.
117
+ */
118
+ function getIdleCompactionArmDecision(input) {
119
+ const idleWindowMs = input.idleWindowMs ?? exports.idleCompactMs;
120
+ if (input.lastActivityAt <= 0)
121
+ return { delayMs: idleWindowMs, kind: 'fullWindow' };
122
+ const remainingMs = idleWindowMs - (input.now - input.lastActivityAt);
123
+ // Clamped: a backward clock step makes `lastActivityAt` future-dated, and the
124
+ // remainder must never exceed the window it is a remainder of.
125
+ if (remainingMs > 0)
126
+ return { delayMs: Math.min(remainingMs, idleWindowMs), kind: 'remainder' };
127
+ return {
128
+ delayMs: exports.compactIdleOverdueMinDelayMs + (getStableHash(input.threadKeyString) % exports.compactIdleOverdueSpreadMs),
129
+ kind: 'overdue',
130
+ };
131
+ }
132
+ /**
133
+ * @description Resolve whether compact-on-idle is enabled for a thread. A
134
+ * per-thread override always wins; otherwise the instance-wide default applies,
135
+ * which is ON when unset (mirrors `traceAllThreads` — the feature ships enabled).
136
+ */
137
+ function resolveCompactOnIdleEnabled(globalDefault, threadOverride) {
138
+ return (0, threadToggle_1.resolveDefaultOnThreadToggle)(globalDefault, threadOverride);
139
+ }
140
+ /**
141
+ * @description Resolve whether the full compaction summary is posted for a thread
142
+ * (`/compact_summary`). A per-thread override always wins; otherwise the
143
+ * instance-wide default applies, which is OFF when unset: the operator asked for a
144
+ * compaction to end in one short line, with the summary there only for a topic
145
+ * (or an instance) that turns it on.
146
+ *
147
+ * Unlike compact-on-idle this is read at COMPACTION time rather than used to arm a
148
+ * timer, so it is meaningful in a topic with no live session and is deliberately
149
+ * not gated on one.
150
+ */
151
+ function resolveCompactSummaryEnabled(globalDefault, threadOverride) {
152
+ return (0, threadToggle_1.resolveThreadToggle)(globalDefault, threadOverride, false);
153
+ }
154
+ /**
155
+ * @description Whether the session is busy for a REAL running turn, as opposed
156
+ * to merely idle-WAITING on an unanswered interactive question. Both states make
157
+ * `checkIsBusy` report `true`, but D1 draws them apart: a pending question at idle
158
+ * is a FIRE condition (reject + compact + re-ask), not a reason to hold off, while
159
+ * a genuinely running turn still blocks the idle compaction. So the fire guard
160
+ * treats "busy" as `checkIsBusy && !hasPendingQuestion`.
161
+ */
162
+ function checkIsBusyForRealTurn(input) {
163
+ return input.isBusy && !input.hasPendingQuestion;
164
+ }
165
+ /**
166
+ * @description Whether the process is WORKING at the idle fire (L-D2): a real
167
+ * running turn ({@link checkIsBusyForRealTurn} — a pending question excuses the
168
+ * turn, D1) OR background work the question never excuses (a background task,
169
+ * input not yet taken in, a compaction in flight). The two are read apart so a
170
+ * question pending over a running background task still reads as working: the
171
+ * D1 reject-compact-re-ask would otherwise end in a stop that kills the task.
172
+ */
173
+ function checkIsWorkingAtIdle(input) {
174
+ return checkIsBusyForRealTurn(input) || input.hasBackgroundWork;
175
+ }
176
+ /**
177
+ * @description The idle-fire decision, taken the moment the idle timer fires
178
+ * (lifecycle plan L3). Nothing happens to a session that is not there or is
179
+ * WORKING (L-D2: a real running turn, a background task, input not yet taken in,
180
+ * a compaction in flight — a pending interactive question is NOT work, see
181
+ * {@link checkIsBusyForRealTurn}; D1); the next activity re-arms the timer.
182
+ *
183
+ * The compaction runs only when the feature is enabled for the thread, the
184
+ * per-thread user-latch is NOT already spent (D2 — after a fire it stays latched
185
+ * until the next genuine USER message re-arms it, so idle compaction runs at most
186
+ * once per user-active period), at least one agent turn has completed since the
187
+ * last compaction (otherwise there is nothing new to compress), and no
188
+ * usage-limit wait is armed (L-D6: a compaction turn would hit the limit).
189
+ *
190
+ * The STOP happens whether or not the compaction runs (L-D1: a resume restores
191
+ * the full history, so a stopped process loses nothing) — on a backend that can
192
+ * be suspended; the tmux TUI and OpenCode stay (L-D8).
193
+ */
194
+ function getIdleFireDecision(input) {
195
+ const notIdleReasons = [
196
+ !input.isSessionActive && 'no active session',
197
+ input.isWorking && 'working',
198
+ ].filter((reason) => typeof reason === 'string');
199
+ if (notIdleReasons.length > 0) {
200
+ return { shouldCompact: false, compactionSkipReasons: notIdleReasons, shouldSuspend: false, suspendSkipReasons: notIdleReasons };
201
+ }
202
+ const compactionSkipReasons = [
203
+ !input.isEnabled && 'disabled',
204
+ input.isLatched && 'latched (D2)',
205
+ !input.hasCompletedTurnSinceCompaction && 'nothing to compress',
206
+ input.isLimitWaitArmed && 'a usage-limit wait is armed (L-D6)',
207
+ ].filter((reason) => typeof reason === 'string');
208
+ return {
209
+ shouldCompact: compactionSkipReasons.length === 0,
210
+ compactionSkipReasons,
211
+ shouldSuspend: input.canSuspend,
212
+ suspendSkipReasons: input.canSuspend ? [] : ['the backend is not suspended'],
213
+ };
214
+ }
215
+ /**
216
+ * @description The maximally-complete-summary guidance (D3) — one canonical text
217
+ * used on EVERY bot-issued compaction, kept BACKEND-CONSISTENT: it is baked into
218
+ * the OpenCode fork's compaction prompt (so it also reaches the auto/overflow
219
+ * compaction the bot can't touch) and, for the Claude backends (which have no
220
+ * prompt the bot controls), appended to the `/compact <instruction>` the bot
221
+ * sends. A code constant (not an i18n key) because it is identical across all
222
+ * locales — it dictates WHAT the summary must contain, never its language — and
223
+ * because it must mirror the fork's baked wording without 12-locale drift.
224
+ */
225
+ exports.compactionSummaryGuidance = 'Make the summary MAXIMALLY COMPLETE: preserve every detail needed to continue the work from a clean session with no memory of this conversation — never drop load-bearing information (decisions, constraints, file paths, commands, error strings, identifiers, active tasks, delegated-work state) for brevity. Capture only SESSION-SPECIFIC working nuances: the user\'s in-session directives and any deviations from the standard process. Do NOT restate the standard instructions that auto-load at session start (for example CLAUDE.md / AGENTS.md / rules files) — they reload automatically on the fresh session, so duplicating them only wastes the summary. Keep the conversational directives, active exceptions, and delegated-work state; drop the static rulebook.';
226
+ /**
227
+ * @description The loaded-skills guidance, on EVERY compaction of both backends:
228
+ * bot-issued ones carry it in their instruction, and each backend's own overflow
229
+ * compaction gets it from a bot-installed hook — Claude's `PreCompact` hook
230
+ * (`claudeCompactHook.ts`, which also matches on this exact text to skip a
231
+ * compaction that already carries it) and OpenCode's compaction plugin
232
+ * (`openCodeCompactPlugin.ts`). A skill is loaded on demand mid-session (a tool call whose
233
+ * result carries its instructions), so — unlike CLAUDE.md / AGENTS.md — nothing
234
+ * reloads it after a compaction: the summary drops its text and the fresh
235
+ * session keeps working without the procedure it was following. Naming the
236
+ * skills and saying in plain words that they must be loaded again is the only
237
+ * way the continuing session learns to re-invoke them.
238
+ */
239
+ exports.compactionSkillsGuidance = 'List every skill that was loaded (invoked) during this session by its exact name, and state explicitly, in plain words, that the continuing session MUST load each of these skills again and follow it before resuming the work: a skill\'s instructions are not carried over by this summary, so without reloading them the fresh session works without them. If no skill was loaded, omit this.';
240
+ /**
241
+ * @description Compose the per-invocation compaction instruction the bot passes
242
+ * to a backend (D3 + loaded skills + F2 closing section). The general summary
243
+ * guidance is appended ONLY when the backend does NOT already bake it into its
244
+ * own prompt — OpenCode bakes it in the fork (`bakesSummaryGuidance: true`) so
245
+ * re-sending it would duplicate the text, whereas the Claude backends have no
246
+ * bot-controlled prompt and must receive it every time. The skills guidance is
247
+ * skipped the same way when the backend's own compaction prompt already gets it
248
+ * (`bakesSkillsGuidance`: an OpenCode server running the bot's compaction plugin,
249
+ * which cannot see this instruction and so cannot skip a duplicate itself). The F2 closing-section directive
250
+ * (per-locale, may carry a language directive) is appended LAST when present,
251
+ * because it tells the model to write nothing after its end marker.
252
+ */
253
+ function buildCompactionInstruction(input) {
254
+ const parts = [];
255
+ if (!input.bakesSummaryGuidance)
256
+ parts.push(input.summaryGuidance);
257
+ const skills = input.bakesSkillsGuidance ? '' : input.skillsGuidance.trim();
258
+ if (skills)
259
+ parts.push(skills);
260
+ const closing = input.closingSectionInstruction?.trim();
261
+ if (closing)
262
+ parts.push(closing);
263
+ return parts.length > 0 ? parts.join('\n\n') : undefined;
264
+ }
265
+ /**
266
+ * Digit-group separator for a rendered context-token count. A NARROW NO-BREAK
267
+ * SPACE (U+202F), not a comma or a period: both of those are DECIMAL separators
268
+ * in some of the bot's 12 locales, so `314,150` reads as one number in an English
269
+ * topic and as `314.15` in a German one. A space is unambiguous everywhere, and
270
+ * no-break keeps the figure from wrapping mid-number in a Telegram bubble.
271
+ */
272
+ const tokenCountGroupSeparator = ' ';
273
+ /**
274
+ * @description Render a context-token count for the compaction completion
275
+ * message ("314 150 → 12 883 tokens"): digits grouped in threes.
276
+ *
277
+ * Deliberately NOT `Number.toLocaleString()` — that formats for the HOST's
278
+ * locale, not the topic's, so the same count would render differently depending
279
+ * on the machine the bot happens to run on. This is fixed and testable instead.
280
+ */
281
+ function formatTokenCount(count) {
282
+ return Math.trunc(count)
283
+ .toString()
284
+ // Insert the separator at every position that has a multiple of three digits
285
+ // left to run, i.e. between groups only — never before the first digit.
286
+ .replace(/\B(?=(\d{3})+(?!\d))/g, tokenCountGroupSeparator);
287
+ }
288
+ /**
289
+ * FIXED (English, locale-independent) sentinel markers the closing section is
290
+ * wrapped in. Sentinels — not a markdown heading — because the two backends
291
+ * generate very different summary formats (OpenCode's `## Goals/…` template vs
292
+ * Claude Code's freeform numbered recap), so a heading match is unreliable while
293
+ * exact markers are backend-agnostic. They are stripped before a summary is
294
+ * posted ({@link stripCompactionClosingMarkers}). The per-locale instruction pins
295
+ * these exact strings, so changing them means changing the instruction wording in
296
+ * lockstep.
297
+ */
298
+ exports.compactionClosingStartMarker = '<<<WHERE_WE_STOPPED>>>';
299
+ exports.compactionClosingEndMarker = '<<<END_WHERE_WE_STOPPED>>>';
300
+ /**
301
+ * @description Remove the sentinel marker LINES from a summary that is about to be
302
+ * posted to the topic, keeping every line of prose — including the closing section
303
+ * the markers wrap, which is genuine content.
304
+ *
305
+ * The markers are machine scaffolding and mean nothing to a reader. A marker sitting ALONE on its
306
+ * line takes the whole line with it (its own newline included), so the summary is
307
+ * not left with a blank gap where it stood; a marker the model happened to put
308
+ * AHEAD of real prose on one line loses only the marker, never the prose. A summary
309
+ * with no markers comes back unchanged apart from trimming.
310
+ */
311
+ function stripCompactionClosingMarkers(summaryText) {
312
+ const markerLine = new RegExp(`^[ \\t]*(?:${escapeRegExpLiteral(exports.compactionClosingStartMarker)}|${escapeRegExpLiteral(exports.compactionClosingEndMarker)})[ \\t]*\\r?\\n?`, 'gm');
313
+ return summaryText.replace(markerLine, '').trim();
314
+ }
315
+ /** Escape every RegExp metacharacter in `literal` so it matches itself. */
316
+ function escapeRegExpLiteral(literal) {
317
+ return literal.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
318
+ }
319
+ /**
320
+ * @description Should the bot post the FULL compaction summary into the topic?
321
+ *
322
+ * Three independent reasons not to, kept in one testable rule rather than spread
323
+ * across the call sites:
324
+ * - the per-topic `/compact_summary` setting is off;
325
+ * - the backend STREAMS its own summary into the topic already
326
+ * (`streamsCompactionSummary` — OpenCode's `summarize` produces a real
327
+ * assistant message), so the bot posting one too would duplicate it;
328
+ * - the route is not a real, awaited compaction: `forwardToAgent` hands
329
+ * `/compact` to a TUI that renders its own result and gives the bot no
330
+ * completion signal, and `notSupported` never compacts at all — in both cases
331
+ * there is no summary of ours to post.
332
+ */
333
+ function checkShouldPostCompactionSummary(input) {
334
+ if (!input.isEnabled)
335
+ return false;
336
+ if (input.streamsOwnSummary)
337
+ return false;
338
+ return input.route === 'adapterCompact';
339
+ }
340
+ /**
341
+ * @description Should the bot announce that a compaction is STARTING (the notice
342
+ * that goes out BEFORE the wait, for the triggers the operator is present for)?
343
+ *
344
+ * Two reasons not to:
345
+ * - the route is not one the bot awaits: `forwardToAgent` hands `/compact` to a TUI
346
+ * that renders its own progress, and `notSupported` never compacts at all;
347
+ * - no session is live. The compaction seam's first guard is exactly that, so
348
+ * announcing here would be a promise the very next message retracts — `/compact`
349
+ * in a bound topic whose agent was never started hits precisely that, and before
350
+ * the notice moved ahead of the wait the operator only ever saw the refusal.
351
+ *
352
+ * Deliberately NOT the same rule as the COMPLETION report, which needs no liveness
353
+ * input: it is reached only after a compaction really succeeded.
354
+ */
355
+ function checkShouldAnnounceCompactionStart(input) {
356
+ return input.route === 'adapterCompact' && input.isSessionActive;
357
+ }
358
+ /**
359
+ * @description Compose an idle-compaction report as SEPARATE parts in the §1.4
360
+ * order: notice → summary → re-asked question.
361
+ *
362
+ * Splitting what used to be one joined message is the point: the re-asked
363
+ * question carries inline option buttons, and gluing it behind a full summary
364
+ * would bury those buttons under a wall of text (and the summary alone can
365
+ * outgrow a single Telegram message).
366
+ *
367
+ * The notice is the one short line on its own. It used to carry the summary's
368
+ * "Where we stopped" block whenever the full summary was off, which still made
369
+ * every idle compaction a paragraph; with the summary off the operator now gets
370
+ * the line alone, and the block reaches the topic only inside the full summary.
371
+ */
372
+ function buildIdleCompactionNoticeParts(input) {
373
+ return {
374
+ notice: input.noticeText && input.noticeText.length > 0 ? input.noticeText : null,
375
+ summary: input.summary && input.summary.length > 0 ? input.summary : null,
376
+ question: input.questionText && input.questionText.length > 0 ? input.questionText : null,
377
+ };
378
+ }
379
+ //# sourceMappingURL=compactOnIdle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compactOnIdle.js","sourceRoot":"","sources":["../../src/utils/compactOnIdle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @description Tee `process.stdout`/`process.stderr` to an hourly bucket file so
3
+ * the bot's console logs ([transcribe], [Bot], errors, …) are readable AFTER the
4
+ * fact, not only on the operator's live terminal. The original `write` still
5
+ * runs (terminal preserved) — this is a TEE, never a redirect-away.
6
+ *
7
+ * Critical constraints:
8
+ * - Best-effort: a tap append failure is swallowed; it must NEVER throw into
9
+ * the hot `write()` path or change the original write's return value.
10
+ * - NO recursion: the tap appends with `fs.appendFileSync` directly and uses
11
+ * NO `console.*` / no `process.std*.write` — logging from inside the tap
12
+ * would re-enter the wrapped write and loop forever.
13
+ * - Idempotent: a second install is a no-op (a hot rebuild re-imports cleanly).
14
+ */
15
+ /** Bucket file base + extension — `bot-console-YYYYMMDDHH.log` per hour. The
16
+ * janitor (bot.ts) imports these to prune the same family it doesn't write. */
17
+ export declare const consoleFileBase = "bot-console";
18
+ export declare const consoleFileExt = "log";
19
+ /** Chunk shapes the wrapped `write` may receive (matches Node's overloads). */
20
+ type WriteChunk = string | Uint8Array;
21
+ /** Minimal view of a writable stream the tap wraps — just its `write`. */
22
+ export interface TappableStream {
23
+ write(...args: unknown[]): boolean;
24
+ }
25
+ /** How the tap appends a chunk — injectable so tests assert without real IO. */
26
+ export type AppendChunkFn = (chunk: WriteChunk) => void;
27
+ /**
28
+ * @description Append one chunk to the current hour's console bucket. The
29
+ * bucket is created owner-only (`0600`) — console logs may quote prompts and
30
+ * agent output, so they must not be world-readable on a shared host. Exported
31
+ * for the mode-bits unit test.
32
+ */
33
+ export declare function appendConsoleBucketChunk(dir: string, chunk: WriteChunk): void;
34
+ /**
35
+ * @description Wrap ONE stream's `write` so every call ALSO feeds the chunk to
36
+ * `appendChunk` (the tap) before forwarding to the original. The original's
37
+ * arguments are forwarded verbatim and its exact return value is returned, so
38
+ * backpressure semantics are untouched; `appendChunk` is a pure side effect that
39
+ * is called FIRST and must itself never throw (the bucket appender swallows IO
40
+ * errors). Pure of `process`/fs — the unit of test for S3.
41
+ */
42
+ export declare function tapStreamWrite(stream: TappableStream, appendChunk: AppendChunkFn): void;
43
+ /**
44
+ * @description Tee `process.stdout`/`process.stderr` to the hourly bucket file
45
+ * `DATA_DIR/bot-console-YYYYMMDDHH.log`. Install as EARLY as possible at the bot
46
+ * entry so boot logs are captured. Idempotent (a second call is a no-op) so a
47
+ * hot rebuild re-import can't double-wrap.
48
+ */
49
+ export declare function installConsoleFileTap(dir: string): void;
50
+ export {};
51
+ //# sourceMappingURL=consoleFileTap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consoleFileTap.d.ts","sourceRoot":"","sources":["../../src/utils/consoleFileTap.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AAEH;+EAC+E;AAC/E,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,cAAc,QAAQ,CAAC;AAIpC,+EAA+E;AAC/E,KAAK,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtC,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;CACpC;AAED,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAQ7E;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAMvF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAkBvD"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.consoleFileExt = exports.consoleFileBase = void 0;
4
+ exports.appendConsoleBucketChunk = appendConsoleBucketChunk;
5
+ exports.tapStreamWrite = tapStreamWrite;
6
+ exports.installConsoleFileTap = installConsoleFileTap;
7
+ const node_fs_1 = require("node:fs");
8
+ const rotatingLogFile_1 = require("./rotatingLogFile");
9
+ /**
10
+ * @description Tee `process.stdout`/`process.stderr` to an hourly bucket file so
11
+ * the bot's console logs ([transcribe], [Bot], errors, …) are readable AFTER the
12
+ * fact, not only on the operator's live terminal. The original `write` still
13
+ * runs (terminal preserved) — this is a TEE, never a redirect-away.
14
+ *
15
+ * Critical constraints:
16
+ * - Best-effort: a tap append failure is swallowed; it must NEVER throw into
17
+ * the hot `write()` path or change the original write's return value.
18
+ * - NO recursion: the tap appends with `fs.appendFileSync` directly and uses
19
+ * NO `console.*` / no `process.std*.write` — logging from inside the tap
20
+ * would re-enter the wrapped write and loop forever.
21
+ * - Idempotent: a second install is a no-op (a hot rebuild re-imports cleanly).
22
+ */
23
+ /** Bucket file base + extension — `bot-console-YYYYMMDDHH.log` per hour. The
24
+ * janitor (bot.ts) imports these to prune the same family it doesn't write. */
25
+ exports.consoleFileBase = 'bot-console';
26
+ exports.consoleFileExt = 'log';
27
+ let isInstalled = false;
28
+ /**
29
+ * @description Append one chunk to the current hour's console bucket. The
30
+ * bucket is created owner-only (`0600`) — console logs may quote prompts and
31
+ * agent output, so they must not be world-readable on a shared host. Exported
32
+ * for the mode-bits unit test.
33
+ */
34
+ function appendConsoleBucketChunk(dir, chunk) {
35
+ try {
36
+ (0, node_fs_1.appendFileSync)((0, rotatingLogFile_1.getHourBucketPath)(dir, exports.consoleFileBase, exports.consoleFileExt, Date.now()), chunk, {
37
+ mode: 0o600,
38
+ });
39
+ }
40
+ catch {
41
+ // Best-effort: a tap write failure must never break the original write.
42
+ }
43
+ }
44
+ /**
45
+ * @description Wrap ONE stream's `write` so every call ALSO feeds the chunk to
46
+ * `appendChunk` (the tap) before forwarding to the original. The original's
47
+ * arguments are forwarded verbatim and its exact return value is returned, so
48
+ * backpressure semantics are untouched; `appendChunk` is a pure side effect that
49
+ * is called FIRST and must itself never throw (the bucket appender swallows IO
50
+ * errors). Pure of `process`/fs — the unit of test for S3.
51
+ */
52
+ function tapStreamWrite(stream, appendChunk) {
53
+ const originalWrite = stream.write.bind(stream);
54
+ stream.write = ((chunk, ...rest) => {
55
+ appendChunk(chunk);
56
+ return originalWrite(chunk, ...rest);
57
+ });
58
+ }
59
+ /**
60
+ * @description Tee `process.stdout`/`process.stderr` to the hourly bucket file
61
+ * `DATA_DIR/bot-console-YYYYMMDDHH.log`. Install as EARLY as possible at the bot
62
+ * entry so boot logs are captured. Idempotent (a second call is a no-op) so a
63
+ * hot rebuild re-import can't double-wrap.
64
+ */
65
+ function installConsoleFileTap(dir) {
66
+ if (isInstalled)
67
+ return;
68
+ isInstalled = true;
69
+ // Ensure DATA_DIR exists ONCE up front. On a fresh install the dir is created
70
+ // later by the state store's load() — but the tap is installed before that, so
71
+ // without this the very boot logs we want to capture would `ENOENT` and be
72
+ // swallowed (the run that matters most). Mirrors outputTrace.ts / diagLog.ts.
73
+ // Owner-only mode: this mkdir WINS on a fresh install (the state store's own
74
+ // 0700 mkdir is a no-op on an existing dir), so it must not leave DATA_DIR
75
+ // with the umask default. The state store additionally chmod-heals at init.
76
+ try {
77
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true, mode: 0o700 });
78
+ }
79
+ catch {
80
+ // Best-effort: if the dir can't be created the per-append swallow still holds.
81
+ }
82
+ for (const stream of [process.stdout, process.stderr]) {
83
+ tapStreamWrite(stream, (chunk) => appendConsoleBucketChunk(dir, chunk));
84
+ }
85
+ }
86
+ //# sourceMappingURL=consoleFileTap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consoleFileTap.js","sourceRoot":"","sources":["../../src/utils/consoleFileTap.ts"],"names":[],"mappings":";;;AA0CA,4DAQC;AAUD,wCAMC;AAQD,sDAkBC;AA5FD,qCAAoD;AACpD,uDAAsD;AAEtD;;;;;;;;;;;;;GAaG;AAEH;+EAC+E;AAClE,QAAA,eAAe,GAAG,aAAa,CAAC;AAChC,QAAA,cAAc,GAAG,KAAK,CAAC;AAEpC,IAAI,WAAW,GAAG,KAAK,CAAC;AAaxB;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAC,GAAW,EAAE,KAAiB;IACrE,IAAI,CAAC;QACH,IAAA,wBAAc,EAAC,IAAA,mCAAiB,EAAC,GAAG,EAAE,uBAAe,EAAE,sBAAc,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE;YACzF,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,MAAsB,EAAE,WAA0B;IAC/E,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAiB,EAAE,GAAG,IAAe,EAAW,EAAE;QACjE,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,aAAa,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACvC,CAAC,CAAwB,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,GAAW;IAC/C,IAAI,WAAW;QAAE,OAAO;IACxB,WAAW,GAAG,IAAI,CAAC;IACnB,8EAA8E;IAC9E,+EAA+E;IAC/E,2EAA2E;IAC3E,8EAA8E;IAC9E,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,CAAC;QACH,IAAA,mBAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,+EAA+E;IACjF,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,cAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @description THE single source of truth for the unified display-verbosity
3
+ * vocabulary (`minimal | short | full`) shared by `/thinking`,
4
+ * `/tool_results` and `/subagent`: the picker option order, the locked
5
+ * default, the type guard, and the legacy-name normalization. Per-command
6
+ * SEMANTICS stay in their own helper modules (`thinkingRender.ts`,
7
+ * `toolResultRender.ts`, `subagentRender.ts`); this module only owns the
8
+ * vocabulary itself, so the three commands can never drift apart again.
9
+ */
10
+ import type { DisplayVerbosityMode, ResolvedThreadDisplayPrefs } from '../types';
11
+ /** Every selectable display-verbosity mode, in picker-button order (quiet →
12
+ * loud). Single source of truth for arg validation and the mode keyboards of
13
+ * all three display commands. */
14
+ export declare const displayVerbosityModeOptions: readonly DisplayVerbosityMode[];
15
+ /**
16
+ * @description Locked default for EVERY display pref (user decision
17
+ * 2026-06-11: "по умолчанию минимум"). `state.ts` resolves absent persisted
18
+ * fields to it, and the adapters fall back to it for reads that happen before
19
+ * the bot injects its mode reader at boot.
20
+ */
21
+ export declare const defaultDisplayVerbosityMode: DisplayVerbosityMode;
22
+ /**
23
+ * @description Every display pref at its locked default — what the adapters
24
+ * resolve for a read that happens before the bot injects its prefs reader at
25
+ * boot, and the baseline `state.ts` fills absent persisted fields from.
26
+ */
27
+ export declare function getDefaultDisplayPrefs(): ResolvedThreadDisplayPrefs;
28
+ /**
29
+ * @description Type guard: is `value` one of the {@link DisplayVerbosityMode}
30
+ * options? Narrows a free-form string to the union WITHOUT a cast. Accepts
31
+ * ONLY the new vocabulary — legacy names go through
32
+ * {@link normalizeDisplayVerbosityMode}.
33
+ */
34
+ export declare function checkIsDisplayVerbosityMode(value: string): value is DisplayVerbosityMode;
35
+ /**
36
+ * @description Normalize a mode string to the unified vocabulary: a new name
37
+ * passes through, a legacy name maps per
38
+ * {@link legacyDisplayVerbosityAliases}, anything else (unknown string,
39
+ * `undefined`) → `null` so the caller decides between "use the default"
40
+ * (read-time normalization of persisted values) and "reject the input"
41
+ * (command arg / callback validation).
42
+ */
43
+ export declare function normalizeDisplayVerbosityMode(value: string | undefined): DisplayVerbosityMode | null;
44
+ //# sourceMappingURL=displayVerbosity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"displayVerbosity.d.ts","sourceRoot":"","sources":["../../src/utils/displayVerbosity.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAGjF;;iCAEiC;AACjC,eAAO,MAAM,2BAA2B,EAAE,SAAS,oBAAoB,EAAiC,CAAC;AAEzG;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,oBAAgC,CAAC;AAE3E;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,0BAA0B,CAOnE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,oBAAoB,CAExF;AAsBD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,oBAAoB,GAAG,IAAI,CAIpG"}