charness 0.0.0-stage → 3.1.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 (1044) 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 +1196 -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 +1351 -0
  19. package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
  20. package/dist/adapters/claudeCliAdapter.js +4239 -0
  21. package/dist/adapters/claudeCliAdapter.js.map +1 -0
  22. package/dist/adapters/claudeConfigDir.d.ts +40 -0
  23. package/dist/adapters/claudeConfigDir.d.ts.map +1 -0
  24. package/dist/adapters/claudeConfigDir.js +3 -0
  25. package/dist/adapters/claudeConfigDir.js.map +1 -0
  26. package/dist/adapters/claudeJsonStreamAdapter.d.ts +580 -0
  27. package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
  28. package/dist/adapters/claudeJsonStreamAdapter.js +1891 -0
  29. package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -0
  30. package/dist/adapters/claudePlatformFlags.d.ts +35 -0
  31. package/dist/adapters/claudePlatformFlags.d.ts.map +1 -0
  32. package/dist/adapters/claudePlatformFlags.js +46 -0
  33. package/dist/adapters/claudePlatformFlags.js.map +1 -0
  34. package/dist/adapters/createAdapter.d.ts +260 -0
  35. package/dist/adapters/createAdapter.d.ts.map +1 -0
  36. package/dist/adapters/createAdapter.js +512 -0
  37. package/dist/adapters/createAdapter.js.map +1 -0
  38. package/dist/adapters/openCodeAdapter.d.ts +1469 -0
  39. package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
  40. package/dist/adapters/openCodeAdapter.js +4623 -0
  41. package/dist/adapters/openCodeAdapter.js.map +1 -0
  42. package/dist/adapters/sessionLaunchDefaults.d.ts +28 -0
  43. package/dist/adapters/sessionLaunchDefaults.d.ts.map +1 -0
  44. package/dist/adapters/sessionLaunchDefaults.js +15 -0
  45. package/dist/adapters/sessionLaunchDefaults.js.map +1 -0
  46. package/dist/adapters/terminalAdapter.d.ts +68 -0
  47. package/dist/adapters/terminalAdapter.d.ts.map +1 -0
  48. package/dist/adapters/terminalAdapter.js +371 -0
  49. package/dist/adapters/terminalAdapter.js.map +1 -0
  50. package/dist/agentLogin/agentLogin.d.ts +44 -0
  51. package/dist/agentLogin/agentLogin.d.ts.map +1 -0
  52. package/dist/agentLogin/agentLogin.js +530 -0
  53. package/dist/agentLogin/agentLogin.js.map +1 -0
  54. package/dist/agentTrigger.d.ts +28 -0
  55. package/dist/agentTrigger.d.ts.map +1 -0
  56. package/dist/agentTrigger.js +53 -0
  57. package/dist/agentTrigger.js.map +1 -0
  58. package/dist/apiErrorRetry.d.ts +214 -0
  59. package/dist/apiErrorRetry.d.ts.map +1 -0
  60. package/dist/apiErrorRetry.js +382 -0
  61. package/dist/apiErrorRetry.js.map +1 -0
  62. package/dist/apiRetryKick.d.ts +157 -0
  63. package/dist/apiRetryKick.d.ts.map +1 -0
  64. package/dist/apiRetryKick.js +174 -0
  65. package/dist/apiRetryKick.js.map +1 -0
  66. package/dist/bootClassifier.d.ts +46 -0
  67. package/dist/bootClassifier.d.ts.map +1 -0
  68. package/dist/bootClassifier.js +43 -0
  69. package/dist/bootClassifier.js.map +1 -0
  70. package/dist/bot.d.ts +207 -0
  71. package/dist/bot.d.ts.map +1 -0
  72. package/dist/bot.js +11226 -0
  73. package/dist/bot.js.map +1 -0
  74. package/dist/botFileStorage.d.ts +60 -0
  75. package/dist/botFileStorage.d.ts.map +1 -0
  76. package/dist/botFileStorage.js +205 -0
  77. package/dist/botFileStorage.js.map +1 -0
  78. package/dist/cli/applyDnsFix.d.ts +7 -0
  79. package/dist/cli/applyDnsFix.d.ts.map +1 -0
  80. package/dist/cli/applyDnsFix.js +46 -0
  81. package/dist/cli/applyDnsFix.js.map +1 -0
  82. package/dist/cli/bot.d.ts +27 -0
  83. package/dist/cli/bot.d.ts.map +1 -0
  84. package/dist/cli/bot.js +98 -0
  85. package/dist/cli/bot.js.map +1 -0
  86. package/dist/cli/botEntry.d.ts +3 -0
  87. package/dist/cli/botEntry.d.ts.map +1 -0
  88. package/dist/cli/botEntry.js +11 -0
  89. package/dist/cli/botEntry.js.map +1 -0
  90. package/dist/cli/claudeProfiles.d.ts +42 -0
  91. package/dist/cli/claudeProfiles.d.ts.map +1 -0
  92. package/dist/cli/claudeProfiles.js +106 -0
  93. package/dist/cli/claudeProfiles.js.map +1 -0
  94. package/dist/cli/connectorGuards.d.ts +31 -0
  95. package/dist/cli/connectorGuards.d.ts.map +1 -0
  96. package/dist/cli/connectorGuards.js +159 -0
  97. package/dist/cli/connectorGuards.js.map +1 -0
  98. package/dist/cli/envLoader.d.ts +34 -0
  99. package/dist/cli/envLoader.d.ts.map +1 -0
  100. package/dist/cli/envLoader.js +132 -0
  101. package/dist/cli/envLoader.js.map +1 -0
  102. package/dist/cli/hot.d.ts +82 -0
  103. package/dist/cli/hot.d.ts.map +1 -0
  104. package/dist/cli/hot.js +323 -0
  105. package/dist/cli/hot.js.map +1 -0
  106. package/dist/cli.d.ts +3 -0
  107. package/dist/cli.d.ts.map +1 -0
  108. package/dist/cli.js +140 -0
  109. package/dist/cli.js.map +1 -0
  110. package/dist/connectors/jira/adf.d.ts +74 -0
  111. package/dist/connectors/jira/adf.d.ts.map +1 -0
  112. package/dist/connectors/jira/adf.js +412 -0
  113. package/dist/connectors/jira/adf.js.map +1 -0
  114. package/dist/connectors/jira/agentBinaries.d.ts +14 -0
  115. package/dist/connectors/jira/agentBinaries.d.ts.map +1 -0
  116. package/dist/connectors/jira/agentBinaries.js +75 -0
  117. package/dist/connectors/jira/agentBinaries.js.map +1 -0
  118. package/dist/connectors/jira/answerSink.d.ts +59 -0
  119. package/dist/connectors/jira/answerSink.d.ts.map +1 -0
  120. package/dist/connectors/jira/answerSink.js +234 -0
  121. package/dist/connectors/jira/answerSink.js.map +1 -0
  122. package/dist/connectors/jira/attachmentDownload.d.ts +41 -0
  123. package/dist/connectors/jira/attachmentDownload.d.ts.map +1 -0
  124. package/dist/connectors/jira/attachmentDownload.js +92 -0
  125. package/dist/connectors/jira/attachmentDownload.js.map +1 -0
  126. package/dist/connectors/jira/attachmentTool.d.ts +50 -0
  127. package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
  128. package/dist/connectors/jira/attachmentTool.js +166 -0
  129. package/dist/connectors/jira/attachmentTool.js.map +1 -0
  130. package/dist/connectors/jira/client.d.ts +522 -0
  131. package/dist/connectors/jira/client.d.ts.map +1 -0
  132. package/dist/connectors/jira/client.js +491 -0
  133. package/dist/connectors/jira/client.js.map +1 -0
  134. package/dist/connectors/jira/config.d.ts +104 -0
  135. package/dist/connectors/jira/config.d.ts.map +1 -0
  136. package/dist/connectors/jira/config.js +323 -0
  137. package/dist/connectors/jira/config.js.map +1 -0
  138. package/dist/connectors/jira/configFile.d.ts +10 -0
  139. package/dist/connectors/jira/configFile.d.ts.map +1 -0
  140. package/dist/connectors/jira/configFile.js +50 -0
  141. package/dist/connectors/jira/configFile.js.map +1 -0
  142. package/dist/connectors/jira/connector.d.ts +71 -0
  143. package/dist/connectors/jira/connector.d.ts.map +1 -0
  144. package/dist/connectors/jira/connector.js +312 -0
  145. package/dist/connectors/jira/connector.js.map +1 -0
  146. package/dist/connectors/jira/contextLedger.d.ts +60 -0
  147. package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
  148. package/dist/connectors/jira/contextLedger.js +196 -0
  149. package/dist/connectors/jira/contextLedger.js.map +1 -0
  150. package/dist/connectors/jira/contextPreamble.d.ts +18 -0
  151. package/dist/connectors/jira/contextPreamble.d.ts.map +1 -0
  152. package/dist/connectors/jira/contextPreamble.js +31 -0
  153. package/dist/connectors/jira/contextPreamble.js.map +1 -0
  154. package/dist/connectors/jira/inbound.d.ts +141 -0
  155. package/dist/connectors/jira/inbound.d.ts.map +1 -0
  156. package/dist/connectors/jira/inbound.js +331 -0
  157. package/dist/connectors/jira/inbound.js.map +1 -0
  158. package/dist/connectors/jira/issueBlocks.d.ts +74 -0
  159. package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
  160. package/dist/connectors/jira/issueBlocks.js +257 -0
  161. package/dist/connectors/jira/issueBlocks.js.map +1 -0
  162. package/dist/connectors/jira/issueContext.d.ts +31 -0
  163. package/dist/connectors/jira/issueContext.d.ts.map +1 -0
  164. package/dist/connectors/jira/issueContext.js +70 -0
  165. package/dist/connectors/jira/issueContext.js.map +1 -0
  166. package/dist/connectors/jira/issueDelta.d.ts +38 -0
  167. package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
  168. package/dist/connectors/jira/issueDelta.js +59 -0
  169. package/dist/connectors/jira/issueDelta.js.map +1 -0
  170. package/dist/connectors/jira/mediaPlaceholders.d.ts +22 -0
  171. package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
  172. package/dist/connectors/jira/mediaPlaceholders.js +105 -0
  173. package/dist/connectors/jira/mediaPlaceholders.js.map +1 -0
  174. package/dist/connectors/jira/outbound.d.ts +6 -0
  175. package/dist/connectors/jira/outbound.d.ts.map +1 -0
  176. package/dist/connectors/jira/outbound.js +38 -0
  177. package/dist/connectors/jira/outbound.js.map +1 -0
  178. package/dist/connectors/jira/prompt.d.ts +39 -0
  179. package/dist/connectors/jira/prompt.d.ts.map +1 -0
  180. package/dist/connectors/jira/prompt.js +102 -0
  181. package/dist/connectors/jira/prompt.js.map +1 -0
  182. package/dist/connectors/jira/promptSpill.d.ts +50 -0
  183. package/dist/connectors/jira/promptSpill.d.ts.map +1 -0
  184. package/dist/connectors/jira/promptSpill.js +157 -0
  185. package/dist/connectors/jira/promptSpill.js.map +1 -0
  186. package/dist/connectors/jira/promptText.d.ts +7 -0
  187. package/dist/connectors/jira/promptText.d.ts.map +1 -0
  188. package/dist/connectors/jira/promptText.js +26 -0
  189. package/dist/connectors/jira/promptText.js.map +1 -0
  190. package/dist/connectors/jira/sessionKeyCodec.d.ts +18 -0
  191. package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
  192. package/dist/connectors/jira/sessionKeyCodec.js +106 -0
  193. package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
  194. package/dist/connectors/jira/trigger.d.ts +54 -0
  195. package/dist/connectors/jira/trigger.d.ts.map +1 -0
  196. package/dist/connectors/jira/trigger.js +101 -0
  197. package/dist/connectors/jira/trigger.js.map +1 -0
  198. package/dist/connectors/jira/triggerLog.d.ts +53 -0
  199. package/dist/connectors/jira/triggerLog.d.ts.map +1 -0
  200. package/dist/connectors/jira/triggerLog.js +78 -0
  201. package/dist/connectors/jira/triggerLog.js.map +1 -0
  202. package/dist/connectors/jira/trustedGroup.d.ts +54 -0
  203. package/dist/connectors/jira/trustedGroup.d.ts.map +1 -0
  204. package/dist/connectors/jira/trustedGroup.js +98 -0
  205. package/dist/connectors/jira/trustedGroup.js.map +1 -0
  206. package/dist/connectors/jira/unconfirmedPosts.d.ts +58 -0
  207. package/dist/connectors/jira/unconfirmedPosts.d.ts.map +1 -0
  208. package/dist/connectors/jira/unconfirmedPosts.js +105 -0
  209. package/dist/connectors/jira/unconfirmedPosts.js.map +1 -0
  210. package/dist/connectors/telegram/answerSink.d.ts +46 -0
  211. package/dist/connectors/telegram/answerSink.d.ts.map +1 -0
  212. package/dist/connectors/telegram/answerSink.js +71 -0
  213. package/dist/connectors/telegram/answerSink.js.map +1 -0
  214. package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +34 -0
  215. package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
  216. package/dist/connectors/telegram/commands/autoContinueLimits.js +112 -0
  217. package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -0
  218. package/dist/connectors/telegram/commands/botCore.d.ts +46 -0
  219. package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -0
  220. package/dist/connectors/telegram/commands/botCore.js +3 -0
  221. package/dist/connectors/telegram/commands/botCore.js.map +1 -0
  222. package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
  223. package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -0
  224. package/dist/connectors/telegram/commands/callbackMessage.js +13 -0
  225. package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -0
  226. package/dist/connectors/telegram/commands/claudeAccounts.d.ts +58 -0
  227. package/dist/connectors/telegram/commands/claudeAccounts.d.ts.map +1 -0
  228. package/dist/connectors/telegram/commands/claudeAccounts.js +591 -0
  229. package/dist/connectors/telegram/commands/claudeAccounts.js.map +1 -0
  230. package/dist/connectors/telegram/commands/compaction.d.ts +47 -0
  231. package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -0
  232. package/dist/connectors/telegram/commands/compaction.js +868 -0
  233. package/dist/connectors/telegram/commands/compaction.js.map +1 -0
  234. package/dist/connectors/telegram/commands/displayModes.d.ts +13 -0
  235. package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -0
  236. package/dist/connectors/telegram/commands/displayModes.js +335 -0
  237. package/dist/connectors/telegram/commands/displayModes.js.map +1 -0
  238. package/dist/connectors/telegram/commands/fallbackChain.d.ts +49 -0
  239. package/dist/connectors/telegram/commands/fallbackChain.d.ts.map +1 -0
  240. package/dist/connectors/telegram/commands/fallbackChain.js +624 -0
  241. package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -0
  242. package/dist/connectors/telegram/commands/modelProviders.d.ts +117 -0
  243. package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
  244. package/dist/connectors/telegram/commands/modelProviders.js +966 -0
  245. package/dist/connectors/telegram/commands/modelProviders.js.map +1 -0
  246. package/dist/connectors/telegram/commands/reminders.d.ts +54 -0
  247. package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -0
  248. package/dist/connectors/telegram/commands/reminders.js +624 -0
  249. package/dist/connectors/telegram/commands/reminders.js.map +1 -0
  250. package/dist/connectors/telegram/fileIntake.d.ts +166 -0
  251. package/dist/connectors/telegram/fileIntake.d.ts.map +1 -0
  252. package/dist/connectors/telegram/fileIntake.js +304 -0
  253. package/dist/connectors/telegram/fileIntake.js.map +1 -0
  254. package/dist/connectors/telegram/fileSendGateway.d.ts +57 -0
  255. package/dist/connectors/telegram/fileSendGateway.d.ts.map +1 -0
  256. package/dist/connectors/telegram/fileSendGateway.js +221 -0
  257. package/dist/connectors/telegram/fileSendGateway.js.map +1 -0
  258. package/dist/connectors/telegram/foreignKeyFallbacks.d.ts +52 -0
  259. package/dist/connectors/telegram/foreignKeyFallbacks.d.ts.map +1 -0
  260. package/dist/connectors/telegram/foreignKeyFallbacks.js +71 -0
  261. package/dist/connectors/telegram/foreignKeyFallbacks.js.map +1 -0
  262. package/dist/connectors/telegram/inbound.d.ts +131 -0
  263. package/dist/connectors/telegram/inbound.d.ts.map +1 -0
  264. package/dist/connectors/telegram/inbound.js +278 -0
  265. package/dist/connectors/telegram/inbound.js.map +1 -0
  266. package/dist/connectors/telegram/languagePicker.d.ts +32 -0
  267. package/dist/connectors/telegram/languagePicker.d.ts.map +1 -0
  268. package/dist/connectors/telegram/languagePicker.js +55 -0
  269. package/dist/connectors/telegram/languagePicker.js.map +1 -0
  270. package/dist/connectors/telegram/messageSplit.d.ts +62 -0
  271. package/dist/connectors/telegram/messageSplit.d.ts.map +1 -0
  272. package/dist/connectors/telegram/messageSplit.js +119 -0
  273. package/dist/connectors/telegram/messageSplit.js.map +1 -0
  274. package/dist/connectors/telegram/outbound.d.ts +62 -0
  275. package/dist/connectors/telegram/outbound.d.ts.map +1 -0
  276. package/dist/connectors/telegram/outbound.js +116 -0
  277. package/dist/connectors/telegram/outbound.js.map +1 -0
  278. package/dist/connectors/telegram/output/createOutputTransport.d.ts +34 -0
  279. package/dist/connectors/telegram/output/createOutputTransport.d.ts.map +1 -0
  280. package/dist/connectors/telegram/output/createOutputTransport.js +77 -0
  281. package/dist/connectors/telegram/output/createOutputTransport.js.map +1 -0
  282. package/dist/connectors/telegram/output/dmOutputTransport.d.ts +47 -0
  283. package/dist/connectors/telegram/output/dmOutputTransport.d.ts.map +1 -0
  284. package/dist/connectors/telegram/output/dmOutputTransport.js +412 -0
  285. package/dist/connectors/telegram/output/dmOutputTransport.js.map +1 -0
  286. package/dist/connectors/telegram/outputBacklogGlue.d.ts +38 -0
  287. package/dist/connectors/telegram/outputBacklogGlue.d.ts.map +1 -0
  288. package/dist/connectors/telegram/outputBacklogGlue.js +49 -0
  289. package/dist/connectors/telegram/outputBacklogGlue.js.map +1 -0
  290. package/dist/connectors/telegram/outputFlushPlan.d.ts +93 -0
  291. package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -0
  292. package/dist/connectors/telegram/outputFlushPlan.js +120 -0
  293. package/dist/connectors/telegram/outputFlushPlan.js.map +1 -0
  294. package/dist/connectors/telegram/questionKeyboards.d.ts +30 -0
  295. package/dist/connectors/telegram/questionKeyboards.d.ts.map +1 -0
  296. package/dist/connectors/telegram/questionKeyboards.js +37 -0
  297. package/dist/connectors/telegram/questionKeyboards.js.map +1 -0
  298. package/dist/connectors/telegram/renderAgentHtml.d.ts +27 -0
  299. package/dist/connectors/telegram/renderAgentHtml.d.ts.map +1 -0
  300. package/dist/connectors/telegram/renderAgentHtml.js +97 -0
  301. package/dist/connectors/telegram/renderAgentHtml.js.map +1 -0
  302. package/dist/connectors/telegram/sessionKeyCodec.d.ts +28 -0
  303. package/dist/connectors/telegram/sessionKeyCodec.d.ts.map +1 -0
  304. package/dist/connectors/telegram/sessionKeyCodec.js +107 -0
  305. package/dist/connectors/telegram/sessionKeyCodec.js.map +1 -0
  306. package/dist/connectors/telegram/telegramCallGuard.d.ts +19 -0
  307. package/dist/connectors/telegram/telegramCallGuard.d.ts.map +1 -0
  308. package/dist/connectors/telegram/telegramCallGuard.js +35 -0
  309. package/dist/connectors/telegram/telegramCallGuard.js.map +1 -0
  310. package/dist/connectors/telegram/timezonePicker.d.ts +85 -0
  311. package/dist/connectors/telegram/timezonePicker.d.ts.map +1 -0
  312. package/dist/connectors/telegram/timezonePicker.js +142 -0
  313. package/dist/connectors/telegram/timezonePicker.js.map +1 -0
  314. package/dist/connectors/telegram/updateDispatcher.d.ts +85 -0
  315. package/dist/connectors/telegram/updateDispatcher.d.ts.map +1 -0
  316. package/dist/connectors/telegram/updateDispatcher.js +159 -0
  317. package/dist/connectors/telegram/updateDispatcher.js.map +1 -0
  318. package/dist/connectors/test/connector.d.ts +52 -0
  319. package/dist/connectors/test/connector.d.ts.map +1 -0
  320. package/dist/connectors/test/connector.js +143 -0
  321. package/dist/connectors/test/connector.js.map +1 -0
  322. package/dist/connectors/test/sessionKeyCodec.d.ts +25 -0
  323. package/dist/connectors/test/sessionKeyCodec.d.ts.map +1 -0
  324. package/dist/connectors/test/sessionKeyCodec.js +50 -0
  325. package/dist/connectors/test/sessionKeyCodec.js.map +1 -0
  326. package/dist/diagLog.d.ts +6 -0
  327. package/dist/diagLog.d.ts.map +1 -0
  328. package/dist/diagLog.js +58 -0
  329. package/dist/diagLog.js.map +1 -0
  330. package/dist/effortLevels.d.ts +68 -0
  331. package/dist/effortLevels.d.ts.map +1 -0
  332. package/dist/effortLevels.js +114 -0
  333. package/dist/effortLevels.js.map +1 -0
  334. package/dist/folderName.d.ts +42 -0
  335. package/dist/folderName.d.ts.map +1 -0
  336. package/dist/folderName.js +51 -0
  337. package/dist/folderName.js.map +1 -0
  338. package/dist/i18n/de.d.ts +2 -0
  339. package/dist/i18n/de.d.ts.map +1 -0
  340. package/dist/i18n/de.js +665 -0
  341. package/dist/i18n/de.js.map +1 -0
  342. package/dist/i18n/en.d.ts +7 -0
  343. package/dist/i18n/en.d.ts.map +1 -0
  344. package/dist/i18n/en.js +694 -0
  345. package/dist/i18n/en.js.map +1 -0
  346. package/dist/i18n/es.d.ts +2 -0
  347. package/dist/i18n/es.d.ts.map +1 -0
  348. package/dist/i18n/es.js +665 -0
  349. package/dist/i18n/es.js.map +1 -0
  350. package/dist/i18n/fr.d.ts +2 -0
  351. package/dist/i18n/fr.d.ts.map +1 -0
  352. package/dist/i18n/fr.js +665 -0
  353. package/dist/i18n/fr.js.map +1 -0
  354. package/dist/i18n/hi.d.ts +2 -0
  355. package/dist/i18n/hi.d.ts.map +1 -0
  356. package/dist/i18n/hi.js +665 -0
  357. package/dist/i18n/hi.js.map +1 -0
  358. package/dist/i18n/ja.d.ts +2 -0
  359. package/dist/i18n/ja.d.ts.map +1 -0
  360. package/dist/i18n/ja.js +665 -0
  361. package/dist/i18n/ja.js.map +1 -0
  362. package/dist/i18n/ka.d.ts +2 -0
  363. package/dist/i18n/ka.d.ts.map +1 -0
  364. package/dist/i18n/ka.js +665 -0
  365. package/dist/i18n/ka.js.map +1 -0
  366. package/dist/i18n/pt.d.ts +2 -0
  367. package/dist/i18n/pt.d.ts.map +1 -0
  368. package/dist/i18n/pt.js +665 -0
  369. package/dist/i18n/pt.js.map +1 -0
  370. package/dist/i18n/ru.d.ts +6 -0
  371. package/dist/i18n/ru.d.ts.map +1 -0
  372. package/dist/i18n/ru.js +668 -0
  373. package/dist/i18n/ru.js.map +1 -0
  374. package/dist/i18n/uk.d.ts +8 -0
  375. package/dist/i18n/uk.d.ts.map +1 -0
  376. package/dist/i18n/uk.js +670 -0
  377. package/dist/i18n/uk.js.map +1 -0
  378. package/dist/i18n/uz.d.ts +2 -0
  379. package/dist/i18n/uz.d.ts.map +1 -0
  380. package/dist/i18n/uz.js +665 -0
  381. package/dist/i18n/uz.js.map +1 -0
  382. package/dist/i18n/zh.d.ts +2 -0
  383. package/dist/i18n/zh.d.ts.map +1 -0
  384. package/dist/i18n/zh.js +665 -0
  385. package/dist/i18n/zh.js.map +1 -0
  386. package/dist/i18n.d.ts +115 -0
  387. package/dist/i18n.d.ts.map +1 -0
  388. package/dist/i18n.js +233 -0
  389. package/dist/i18n.js.map +1 -0
  390. package/dist/index.d.ts +3 -0
  391. package/dist/index.d.ts.map +1 -0
  392. package/dist/index.js +10 -0
  393. package/dist/index.js.map +1 -0
  394. package/dist/installManager.d.ts +99 -0
  395. package/dist/installManager.d.ts.map +1 -0
  396. package/dist/installManager.js +943 -0
  397. package/dist/installManager.js.map +1 -0
  398. package/dist/instanceLock.d.ts +161 -0
  399. package/dist/instanceLock.d.ts.map +1 -0
  400. package/dist/instanceLock.js +388 -0
  401. package/dist/instanceLock.js.map +1 -0
  402. package/dist/mcpConfig.d.ts +76 -0
  403. package/dist/mcpConfig.d.ts.map +1 -0
  404. package/dist/mcpConfig.js +270 -0
  405. package/dist/mcpConfig.js.map +1 -0
  406. package/dist/openCodeOpenQuestion.d.ts +44 -0
  407. package/dist/openCodeOpenQuestion.d.ts.map +1 -0
  408. package/dist/openCodeOpenQuestion.js +64 -0
  409. package/dist/openCodeOpenQuestion.js.map +1 -0
  410. package/dist/openCodeQuestionFlow.d.ts +105 -0
  411. package/dist/openCodeQuestionFlow.d.ts.map +1 -0
  412. package/dist/openCodeQuestionFlow.js +143 -0
  413. package/dist/openCodeQuestionFlow.js.map +1 -0
  414. package/dist/openCodeSessionRouting.d.ts +133 -0
  415. package/dist/openCodeSessionRouting.d.ts.map +1 -0
  416. package/dist/openCodeSessionRouting.js +253 -0
  417. package/dist/openCodeSessionRouting.js.map +1 -0
  418. package/dist/openCodeSessionTitle.d.ts +50 -0
  419. package/dist/openCodeSessionTitle.d.ts.map +1 -0
  420. package/dist/openCodeSessionTitle.js +84 -0
  421. package/dist/openCodeSessionTitle.js.map +1 -0
  422. package/dist/outputTrace.d.ts +108 -0
  423. package/dist/outputTrace.d.ts.map +1 -0
  424. package/dist/outputTrace.js +430 -0
  425. package/dist/outputTrace.js.map +1 -0
  426. package/dist/pendingQuestionRepost.d.ts +47 -0
  427. package/dist/pendingQuestionRepost.d.ts.map +1 -0
  428. package/dist/pendingQuestionRepost.js +29 -0
  429. package/dist/pendingQuestionRepost.js.map +1 -0
  430. package/dist/pinnedStatus.d.ts +52 -0
  431. package/dist/pinnedStatus.d.ts.map +1 -0
  432. package/dist/pinnedStatus.js +36 -0
  433. package/dist/pinnedStatus.js.map +1 -0
  434. package/dist/platform/answerSink.d.ts +93 -0
  435. package/dist/platform/answerSink.d.ts.map +1 -0
  436. package/dist/platform/answerSink.js +31 -0
  437. package/dist/platform/answerSink.js.map +1 -0
  438. package/dist/platform/capabilityFallback.d.ts +39 -0
  439. package/dist/platform/capabilityFallback.d.ts.map +1 -0
  440. package/dist/platform/capabilityFallback.js +55 -0
  441. package/dist/platform/capabilityFallback.js.map +1 -0
  442. package/dist/platform/commandRouter.d.ts +51 -0
  443. package/dist/platform/commandRouter.d.ts.map +1 -0
  444. package/dist/platform/commandRouter.js +53 -0
  445. package/dist/platform/commandRouter.js.map +1 -0
  446. package/dist/platform/connectorSet.d.ts +39 -0
  447. package/dist/platform/connectorSet.d.ts.map +1 -0
  448. package/dist/platform/connectorSet.js +55 -0
  449. package/dist/platform/connectorSet.js.map +1 -0
  450. package/dist/platform/inbound.d.ts +147 -0
  451. package/dist/platform/inbound.d.ts.map +1 -0
  452. package/dist/platform/inbound.js +18 -0
  453. package/dist/platform/inbound.js.map +1 -0
  454. package/dist/platform/outbound.d.ts +225 -0
  455. package/dist/platform/outbound.d.ts.map +1 -0
  456. package/dist/platform/outbound.js +30 -0
  457. package/dist/platform/outbound.js.map +1 -0
  458. package/dist/platform/unservedStateGuard.d.ts +27 -0
  459. package/dist/platform/unservedStateGuard.d.ts.map +1 -0
  460. package/dist/platform/unservedStateGuard.js +42 -0
  461. package/dist/platform/unservedStateGuard.js.map +1 -0
  462. package/dist/postToSession.d.ts +94 -0
  463. package/dist/postToSession.d.ts.map +1 -0
  464. package/dist/postToSession.js +56 -0
  465. package/dist/postToSession.js.map +1 -0
  466. package/dist/progressLine.d.ts +180 -0
  467. package/dist/progressLine.d.ts.map +1 -0
  468. package/dist/progressLine.js +293 -0
  469. package/dist/progressLine.js.map +1 -0
  470. package/dist/rateLimiter.d.ts +246 -0
  471. package/dist/rateLimiter.d.ts.map +1 -0
  472. package/dist/rateLimiter.js +555 -0
  473. package/dist/rateLimiter.js.map +1 -0
  474. package/dist/requests/answerRequest.d.ts +57 -0
  475. package/dist/requests/answerRequest.d.ts.map +1 -0
  476. package/dist/requests/answerRequest.js +96 -0
  477. package/dist/requests/answerRequest.js.map +1 -0
  478. package/dist/requests/answerTail.d.ts +83 -0
  479. package/dist/requests/answerTail.d.ts.map +1 -0
  480. package/dist/requests/answerTail.js +102 -0
  481. package/dist/requests/answerTail.js.map +1 -0
  482. package/dist/requests/limitWaitAnswer.d.ts +87 -0
  483. package/dist/requests/limitWaitAnswer.d.ts.map +1 -0
  484. package/dist/requests/limitWaitAnswer.js +83 -0
  485. package/dist/requests/limitWaitAnswer.js.map +1 -0
  486. package/dist/requests/requestGroup.d.ts +44 -0
  487. package/dist/requests/requestGroup.d.ts.map +1 -0
  488. package/dist/requests/requestGroup.js +63 -0
  489. package/dist/requests/requestGroup.js.map +1 -0
  490. package/dist/requests/requestHeader.d.ts +70 -0
  491. package/dist/requests/requestHeader.d.ts.map +1 -0
  492. package/dist/requests/requestHeader.js +83 -0
  493. package/dist/requests/requestHeader.js.map +1 -0
  494. package/dist/requests/requestLedger.d.ts +217 -0
  495. package/dist/requests/requestLedger.d.ts.map +1 -0
  496. package/dist/requests/requestLedger.js +468 -0
  497. package/dist/requests/requestLedger.js.map +1 -0
  498. package/dist/requests/sessionTurnProbe.d.ts +52 -0
  499. package/dist/requests/sessionTurnProbe.d.ts.map +1 -0
  500. package/dist/requests/sessionTurnProbe.js +29 -0
  501. package/dist/requests/sessionTurnProbe.js.map +1 -0
  502. package/dist/requests/types.d.ts +181 -0
  503. package/dist/requests/types.d.ts.map +1 -0
  504. package/dist/requests/types.js +9 -0
  505. package/dist/requests/types.js.map +1 -0
  506. package/dist/requests/wakeUpEngine.d.ts +160 -0
  507. package/dist/requests/wakeUpEngine.d.ts.map +1 -0
  508. package/dist/requests/wakeUpEngine.js +399 -0
  509. package/dist/requests/wakeUpEngine.js.map +1 -0
  510. package/dist/requests/wakeUpRules.d.ts +151 -0
  511. package/dist/requests/wakeUpRules.d.ts.map +1 -0
  512. package/dist/requests/wakeUpRules.js +167 -0
  513. package/dist/requests/wakeUpRules.js.map +1 -0
  514. package/dist/resumeContext.d.ts +87 -0
  515. package/dist/resumeContext.d.ts.map +1 -0
  516. package/dist/resumeContext.js +114 -0
  517. package/dist/resumeContext.js.map +1 -0
  518. package/dist/scheduler/checkRun.d.ts +95 -0
  519. package/dist/scheduler/checkRun.d.ts.map +1 -0
  520. package/dist/scheduler/checkRun.js +172 -0
  521. package/dist/scheduler/checkRun.js.map +1 -0
  522. package/dist/scheduler/delivery.d.ts +99 -0
  523. package/dist/scheduler/delivery.d.ts.map +1 -0
  524. package/dist/scheduler/delivery.js +212 -0
  525. package/dist/scheduler/delivery.js.map +1 -0
  526. package/dist/scheduler/deliveryKind.d.ts +29 -0
  527. package/dist/scheduler/deliveryKind.d.ts.map +1 -0
  528. package/dist/scheduler/deliveryKind.js +39 -0
  529. package/dist/scheduler/deliveryKind.js.map +1 -0
  530. package/dist/scheduler/directoryThreads.d.ts +19 -0
  531. package/dist/scheduler/directoryThreads.d.ts.map +1 -0
  532. package/dist/scheduler/directoryThreads.js +28 -0
  533. package/dist/scheduler/directoryThreads.js.map +1 -0
  534. package/dist/scheduler/engine.d.ts +77 -0
  535. package/dist/scheduler/engine.d.ts.map +1 -0
  536. package/dist/scheduler/engine.js +337 -0
  537. package/dist/scheduler/engine.js.map +1 -0
  538. package/dist/scheduler/injection.d.ts +102 -0
  539. package/dist/scheduler/injection.d.ts.map +1 -0
  540. package/dist/scheduler/injection.js +122 -0
  541. package/dist/scheduler/injection.js.map +1 -0
  542. package/dist/scheduler/mcpBoot.d.ts +65 -0
  543. package/dist/scheduler/mcpBoot.d.ts.map +1 -0
  544. package/dist/scheduler/mcpBoot.js +60 -0
  545. package/dist/scheduler/mcpBoot.js.map +1 -0
  546. package/dist/scheduler/mcpSurface.d.ts +363 -0
  547. package/dist/scheduler/mcpSurface.d.ts.map +1 -0
  548. package/dist/scheduler/mcpSurface.js +1297 -0
  549. package/dist/scheduler/mcpSurface.js.map +1 -0
  550. package/dist/scheduler/rebindResume.d.ts +27 -0
  551. package/dist/scheduler/rebindResume.d.ts.map +1 -0
  552. package/dist/scheduler/rebindResume.js +17 -0
  553. package/dist/scheduler/rebindResume.js.map +1 -0
  554. package/dist/scheduler/recurrence.d.ts +58 -0
  555. package/dist/scheduler/recurrence.d.ts.map +1 -0
  556. package/dist/scheduler/recurrence.js +210 -0
  557. package/dist/scheduler/recurrence.js.map +1 -0
  558. package/dist/scheduler/runLedger.d.ts +59 -0
  559. package/dist/scheduler/runLedger.d.ts.map +1 -0
  560. package/dist/scheduler/runLedger.js +54 -0
  561. package/dist/scheduler/runLedger.js.map +1 -0
  562. package/dist/scheduler/store.d.ts +97 -0
  563. package/dist/scheduler/store.d.ts.map +1 -0
  564. package/dist/scheduler/store.js +124 -0
  565. package/dist/scheduler/store.js.map +1 -0
  566. package/dist/scheduler/timezoneRecompute.d.ts +61 -0
  567. package/dist/scheduler/timezoneRecompute.d.ts.map +1 -0
  568. package/dist/scheduler/timezoneRecompute.js +46 -0
  569. package/dist/scheduler/timezoneRecompute.js.map +1 -0
  570. package/dist/scheduler/types.d.ts +139 -0
  571. package/dist/scheduler/types.d.ts.map +1 -0
  572. package/dist/scheduler/types.js +8 -0
  573. package/dist/scheduler/types.js.map +1 -0
  574. package/dist/sendErrorClassifier.d.ts +45 -0
  575. package/dist/sendErrorClassifier.d.ts.map +1 -0
  576. package/dist/sendErrorClassifier.js +65 -0
  577. package/dist/sendErrorClassifier.js.map +1 -0
  578. package/dist/sessionKey.d.ts +136 -0
  579. package/dist/sessionKey.d.ts.map +1 -0
  580. package/dist/sessionKey.js +153 -0
  581. package/dist/sessionKey.js.map +1 -0
  582. package/dist/sessionPick.d.ts +42 -0
  583. package/dist/sessionPick.d.ts.map +1 -0
  584. package/dist/sessionPick.js +39 -0
  585. package/dist/sessionPick.js.map +1 -0
  586. package/dist/shutdown.d.ts +126 -0
  587. package/dist/shutdown.d.ts.map +1 -0
  588. package/dist/shutdown.js +164 -0
  589. package/dist/shutdown.js.map +1 -0
  590. package/dist/startupPromptBuffer.d.ts +85 -0
  591. package/dist/startupPromptBuffer.d.ts.map +1 -0
  592. package/dist/startupPromptBuffer.js +123 -0
  593. package/dist/startupPromptBuffer.js.map +1 -0
  594. package/dist/state.d.ts +1416 -0
  595. package/dist/state.d.ts.map +1 -0
  596. package/dist/state.js +2128 -0
  597. package/dist/state.js.map +1 -0
  598. package/dist/threadContextPreamble.d.ts +89 -0
  599. package/dist/threadContextPreamble.d.ts.map +1 -0
  600. package/dist/threadContextPreamble.js +102 -0
  601. package/dist/threadContextPreamble.js.map +1 -0
  602. package/dist/threadRouting.d.ts +164 -0
  603. package/dist/threadRouting.d.ts.map +1 -0
  604. package/dist/threadRouting.js +182 -0
  605. package/dist/threadRouting.js.map +1 -0
  606. package/dist/types.d.ts +1022 -0
  607. package/dist/types.d.ts.map +1 -0
  608. package/dist/types.js +3 -0
  609. package/dist/types.js.map +1 -0
  610. package/dist/utils/abortableFifo.d.ts +10 -0
  611. package/dist/utils/abortableFifo.d.ts.map +1 -0
  612. package/dist/utils/abortableFifo.js +55 -0
  613. package/dist/utils/abortableFifo.js.map +1 -0
  614. package/dist/utils/adoptedToolList.d.ts +27 -0
  615. package/dist/utils/adoptedToolList.d.ts.map +1 -0
  616. package/dist/utils/adoptedToolList.js +22 -0
  617. package/dist/utils/adoptedToolList.js.map +1 -0
  618. package/dist/utils/agentEnvironment.d.ts +42 -0
  619. package/dist/utils/agentEnvironment.d.ts.map +1 -0
  620. package/dist/utils/agentEnvironment.js +122 -0
  621. package/dist/utils/agentEnvironment.js.map +1 -0
  622. package/dist/utils/ansiClean.d.ts +11 -0
  623. package/dist/utils/ansiClean.d.ts.map +1 -0
  624. package/dist/utils/ansiClean.js +139 -0
  625. package/dist/utils/ansiClean.js.map +1 -0
  626. package/dist/utils/autoContinueOnLimit.d.ts +56 -0
  627. package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
  628. package/dist/utils/autoContinueOnLimit.js +79 -0
  629. package/dist/utils/autoContinueOnLimit.js.map +1 -0
  630. package/dist/utils/canonicalPathContainment.d.ts +7 -0
  631. package/dist/utils/canonicalPathContainment.d.ts.map +1 -0
  632. package/dist/utils/canonicalPathContainment.js +48 -0
  633. package/dist/utils/canonicalPathContainment.js.map +1 -0
  634. package/dist/utils/claudeAccountPickerPlan.d.ts +85 -0
  635. package/dist/utils/claudeAccountPickerPlan.d.ts.map +1 -0
  636. package/dist/utils/claudeAccountPickerPlan.js +123 -0
  637. package/dist/utils/claudeAccountPickerPlan.js.map +1 -0
  638. package/dist/utils/claudeAuthLogin.d.ts +71 -0
  639. package/dist/utils/claudeAuthLogin.d.ts.map +1 -0
  640. package/dist/utils/claudeAuthLogin.js +93 -0
  641. package/dist/utils/claudeAuthLogin.js.map +1 -0
  642. package/dist/utils/claudeChunkClassifier.d.ts +97 -0
  643. package/dist/utils/claudeChunkClassifier.d.ts.map +1 -0
  644. package/dist/utils/claudeChunkClassifier.js +254 -0
  645. package/dist/utils/claudeChunkClassifier.js.map +1 -0
  646. package/dist/utils/claudeCodeVersion.d.ts +31 -0
  647. package/dist/utils/claudeCodeVersion.d.ts.map +1 -0
  648. package/dist/utils/claudeCodeVersion.js +62 -0
  649. package/dist/utils/claudeCodeVersion.js.map +1 -0
  650. package/dist/utils/claudeCompactHook.d.ts +64 -0
  651. package/dist/utils/claudeCompactHook.d.ts.map +1 -0
  652. package/dist/utils/claudeCompactHook.js +98 -0
  653. package/dist/utils/claudeCompactHook.js.map +1 -0
  654. package/dist/utils/claudeLimitSwitch.d.ts +40 -0
  655. package/dist/utils/claudeLimitSwitch.d.ts.map +1 -0
  656. package/dist/utils/claudeLimitSwitch.js +54 -0
  657. package/dist/utils/claudeLimitSwitch.js.map +1 -0
  658. package/dist/utils/claudeLivenessAction.d.ts +208 -0
  659. package/dist/utils/claudeLivenessAction.d.ts.map +1 -0
  660. package/dist/utils/claudeLivenessAction.js +135 -0
  661. package/dist/utils/claudeLivenessAction.js.map +1 -0
  662. package/dist/utils/claudeMcpHeal.d.ts +92 -0
  663. package/dist/utils/claudeMcpHeal.d.ts.map +1 -0
  664. package/dist/utils/claudeMcpHeal.js +91 -0
  665. package/dist/utils/claudeMcpHeal.js.map +1 -0
  666. package/dist/utils/claudeProfileUsageLines.d.ts +15 -0
  667. package/dist/utils/claudeProfileUsageLines.d.ts.map +1 -0
  668. package/dist/utils/claudeProfileUsageLines.js +42 -0
  669. package/dist/utils/claudeProfileUsageLines.js.map +1 -0
  670. package/dist/utils/claudeProfiles.d.ts +117 -0
  671. package/dist/utils/claudeProfiles.d.ts.map +1 -0
  672. package/dist/utils/claudeProfiles.js +285 -0
  673. package/dist/utils/claudeProfiles.js.map +1 -0
  674. package/dist/utils/claudeRelayRouting.d.ts +86 -0
  675. package/dist/utils/claudeRelayRouting.d.ts.map +1 -0
  676. package/dist/utils/claudeRelayRouting.js +159 -0
  677. package/dist/utils/claudeRelayRouting.js.map +1 -0
  678. package/dist/utils/claudeRuntimeInfo.d.ts +26 -0
  679. package/dist/utils/claudeRuntimeInfo.d.ts.map +1 -0
  680. package/dist/utils/claudeRuntimeInfo.js +151 -0
  681. package/dist/utils/claudeRuntimeInfo.js.map +1 -0
  682. package/dist/utils/claudeScrapeShapes.d.ts +256 -0
  683. package/dist/utils/claudeScrapeShapes.d.ts.map +1 -0
  684. package/dist/utils/claudeScrapeShapes.js +290 -0
  685. package/dist/utils/claudeScrapeShapes.js.map +1 -0
  686. package/dist/utils/claudeSessionTitle.d.ts +27 -0
  687. package/dist/utils/claudeSessionTitle.d.ts.map +1 -0
  688. package/dist/utils/claudeSessionTitle.js +90 -0
  689. package/dist/utils/claudeSessionTitle.js.map +1 -0
  690. package/dist/utils/claudeStreamJson.d.ts +214 -0
  691. package/dist/utils/claudeStreamJson.d.ts.map +1 -0
  692. package/dist/utils/claudeStreamJson.js +364 -0
  693. package/dist/utils/claudeStreamJson.js.map +1 -0
  694. package/dist/utils/claudeSubagentTail.d.ts +93 -0
  695. package/dist/utils/claudeSubagentTail.d.ts.map +1 -0
  696. package/dist/utils/claudeSubagentTail.js +136 -0
  697. package/dist/utils/claudeSubagentTail.js.map +1 -0
  698. package/dist/utils/claudeUsage.d.ts +209 -0
  699. package/dist/utils/claudeUsage.d.ts.map +1 -0
  700. package/dist/utils/claudeUsage.js +413 -0
  701. package/dist/utils/claudeUsage.js.map +1 -0
  702. package/dist/utils/claudeUsageRefresher.d.ts +44 -0
  703. package/dist/utils/claudeUsageRefresher.d.ts.map +1 -0
  704. package/dist/utils/claudeUsageRefresher.js +95 -0
  705. package/dist/utils/claudeUsageRefresher.js.map +1 -0
  706. package/dist/utils/clearThreadOutputQueues.d.ts +43 -0
  707. package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -0
  708. package/dist/utils/clearThreadOutputQueues.js +39 -0
  709. package/dist/utils/clearThreadOutputQueues.js.map +1 -0
  710. package/dist/utils/compactCommandRoute.d.ts +45 -0
  711. package/dist/utils/compactCommandRoute.d.ts.map +1 -0
  712. package/dist/utils/compactCommandRoute.js +36 -0
  713. package/dist/utils/compactCommandRoute.js.map +1 -0
  714. package/dist/utils/compactOnIdle.d.ts +329 -0
  715. package/dist/utils/compactOnIdle.d.ts.map +1 -0
  716. package/dist/utils/compactOnIdle.js +379 -0
  717. package/dist/utils/compactOnIdle.js.map +1 -0
  718. package/dist/utils/consoleFileTap.d.ts +51 -0
  719. package/dist/utils/consoleFileTap.d.ts.map +1 -0
  720. package/dist/utils/consoleFileTap.js +86 -0
  721. package/dist/utils/consoleFileTap.js.map +1 -0
  722. package/dist/utils/displayVerbosity.d.ts +44 -0
  723. package/dist/utils/displayVerbosity.d.ts.map +1 -0
  724. package/dist/utils/displayVerbosity.js +75 -0
  725. package/dist/utils/displayVerbosity.js.map +1 -0
  726. package/dist/utils/download.d.ts +72 -0
  727. package/dist/utils/download.d.ts.map +1 -0
  728. package/dist/utils/download.js +216 -0
  729. package/dist/utils/download.js.map +1 -0
  730. package/dist/utils/draftFinalize.d.ts +110 -0
  731. package/dist/utils/draftFinalize.d.ts.map +1 -0
  732. package/dist/utils/draftFinalize.js +100 -0
  733. package/dist/utils/draftFinalize.js.map +1 -0
  734. package/dist/utils/draftId.d.ts +36 -0
  735. package/dist/utils/draftId.d.ts.map +1 -0
  736. package/dist/utils/draftId.js +46 -0
  737. package/dist/utils/draftId.js.map +1 -0
  738. package/dist/utils/draftPacer.d.ts +72 -0
  739. package/dist/utils/draftPacer.d.ts.map +1 -0
  740. package/dist/utils/draftPacer.js +53 -0
  741. package/dist/utils/draftPacer.js.map +1 -0
  742. package/dist/utils/effortStartupKeystroke.d.ts +20 -0
  743. package/dist/utils/effortStartupKeystroke.d.ts.map +1 -0
  744. package/dist/utils/effortStartupKeystroke.js +28 -0
  745. package/dist/utils/effortStartupKeystroke.js.map +1 -0
  746. package/dist/utils/ensureSessionPlan.d.ts +70 -0
  747. package/dist/utils/ensureSessionPlan.d.ts.map +1 -0
  748. package/dist/utils/ensureSessionPlan.js +54 -0
  749. package/dist/utils/ensureSessionPlan.js.map +1 -0
  750. package/dist/utils/fallbackBridge.d.ts +32 -0
  751. package/dist/utils/fallbackBridge.d.ts.map +1 -0
  752. package/dist/utils/fallbackBridge.js +62 -0
  753. package/dist/utils/fallbackBridge.js.map +1 -0
  754. package/dist/utils/fallbackChain.d.ts +299 -0
  755. package/dist/utils/fallbackChain.d.ts.map +1 -0
  756. package/dist/utils/fallbackChain.js +542 -0
  757. package/dist/utils/fallbackChain.js.map +1 -0
  758. package/dist/utils/fileSendPlan.d.ts +217 -0
  759. package/dist/utils/fileSendPlan.d.ts.map +1 -0
  760. package/dist/utils/fileSendPlan.js +291 -0
  761. package/dist/utils/fileSendPlan.js.map +1 -0
  762. package/dist/utils/fileSendService.d.ts +94 -0
  763. package/dist/utils/fileSendService.d.ts.map +1 -0
  764. package/dist/utils/fileSendService.js +387 -0
  765. package/dist/utils/fileSendService.js.map +1 -0
  766. package/dist/utils/groupFinalizePlan.d.ts +38 -0
  767. package/dist/utils/groupFinalizePlan.d.ts.map +1 -0
  768. package/dist/utils/groupFinalizePlan.js +35 -0
  769. package/dist/utils/groupFinalizePlan.js.map +1 -0
  770. package/dist/utils/identicalOutputGuard.d.ts +83 -0
  771. package/dist/utils/identicalOutputGuard.d.ts.map +1 -0
  772. package/dist/utils/identicalOutputGuard.js +99 -0
  773. package/dist/utils/identicalOutputGuard.js.map +1 -0
  774. package/dist/utils/isoTimestamp.d.ts +16 -0
  775. package/dist/utils/isoTimestamp.d.ts.map +1 -0
  776. package/dist/utils/isoTimestamp.js +34 -0
  777. package/dist/utils/isoTimestamp.js.map +1 -0
  778. package/dist/utils/jsonStreamBusyWatchdog.d.ts +130 -0
  779. package/dist/utils/jsonStreamBusyWatchdog.d.ts.map +1 -0
  780. package/dist/utils/jsonStreamBusyWatchdog.js +122 -0
  781. package/dist/utils/jsonStreamBusyWatchdog.js.map +1 -0
  782. package/dist/utils/jsonStreamHost.d.ts +238 -0
  783. package/dist/utils/jsonStreamHost.d.ts.map +1 -0
  784. package/dist/utils/jsonStreamHost.js +438 -0
  785. package/dist/utils/jsonStreamHost.js.map +1 -0
  786. package/dist/utils/keyedTransitionQueue.d.ts +18 -0
  787. package/dist/utils/keyedTransitionQueue.d.ts.map +1 -0
  788. package/dist/utils/keyedTransitionQueue.js +34 -0
  789. package/dist/utils/keyedTransitionQueue.js.map +1 -0
  790. package/dist/utils/limitEpisodeRecovery.d.ts +92 -0
  791. package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -0
  792. package/dist/utils/limitEpisodeRecovery.js +133 -0
  793. package/dist/utils/limitEpisodeRecovery.js.map +1 -0
  794. package/dist/utils/limitHeldPromptQueue.d.ts +48 -0
  795. package/dist/utils/limitHeldPromptQueue.d.ts.map +1 -0
  796. package/dist/utils/limitHeldPromptQueue.js +59 -0
  797. package/dist/utils/limitHeldPromptQueue.js.map +1 -0
  798. package/dist/utils/limitHeldPrompts.d.ts +58 -0
  799. package/dist/utils/limitHeldPrompts.d.ts.map +1 -0
  800. package/dist/utils/limitHeldPrompts.js +65 -0
  801. package/dist/utils/limitHeldPrompts.js.map +1 -0
  802. package/dist/utils/linkPreviewSuppression.d.ts +18 -0
  803. package/dist/utils/linkPreviewSuppression.d.ts.map +1 -0
  804. package/dist/utils/linkPreviewSuppression.js +37 -0
  805. package/dist/utils/linkPreviewSuppression.js.map +1 -0
  806. package/dist/utils/localClock.d.ts +15 -0
  807. package/dist/utils/localClock.d.ts.map +1 -0
  808. package/dist/utils/localClock.js +29 -0
  809. package/dist/utils/localClock.js.map +1 -0
  810. package/dist/utils/markdownTableRender.d.ts +83 -0
  811. package/dist/utils/markdownTableRender.d.ts.map +1 -0
  812. package/dist/utils/markdownTableRender.js +298 -0
  813. package/dist/utils/markdownTableRender.js.map +1 -0
  814. package/dist/utils/mediaGroupCollector.d.ts +51 -0
  815. package/dist/utils/mediaGroupCollector.d.ts.map +1 -0
  816. package/dist/utils/mediaGroupCollector.js +90 -0
  817. package/dist/utils/mediaGroupCollector.js.map +1 -0
  818. package/dist/utils/messageSendService.d.ts +136 -0
  819. package/dist/utils/messageSendService.d.ts.map +1 -0
  820. package/dist/utils/messageSendService.js +165 -0
  821. package/dist/utils/messageSendService.js.map +1 -0
  822. package/dist/utils/minutesOverride.d.ts +7 -0
  823. package/dist/utils/minutesOverride.d.ts.map +1 -0
  824. package/dist/utils/minutesOverride.js +16 -0
  825. package/dist/utils/minutesOverride.js.map +1 -0
  826. package/dist/utils/modelPickerPlan.d.ts +119 -0
  827. package/dist/utils/modelPickerPlan.d.ts.map +1 -0
  828. package/dist/utils/modelPickerPlan.js +171 -0
  829. package/dist/utils/modelPickerPlan.js.map +1 -0
  830. package/dist/utils/modelRecentPlan.d.ts +56 -0
  831. package/dist/utils/modelRecentPlan.d.ts.map +1 -0
  832. package/dist/utils/modelRecentPlan.js +107 -0
  833. package/dist/utils/modelRecentPlan.js.map +1 -0
  834. package/dist/utils/modelSetReplyDecision.d.ts +67 -0
  835. package/dist/utils/modelSetReplyDecision.d.ts.map +1 -0
  836. package/dist/utils/modelSetReplyDecision.js +27 -0
  837. package/dist/utils/modelSetReplyDecision.js.map +1 -0
  838. package/dist/utils/openCodeAuthLogin.d.ts +181 -0
  839. package/dist/utils/openCodeAuthLogin.d.ts.map +1 -0
  840. package/dist/utils/openCodeAuthLogin.js +393 -0
  841. package/dist/utils/openCodeAuthLogin.js.map +1 -0
  842. package/dist/utils/openCodeCompactPlugin.d.ts +81 -0
  843. package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -0
  844. package/dist/utils/openCodeCompactPlugin.js +146 -0
  845. package/dist/utils/openCodeCompactPlugin.js.map +1 -0
  846. package/dist/utils/openCodeTurnActivity.d.ts +67 -0
  847. package/dist/utils/openCodeTurnActivity.d.ts.map +1 -0
  848. package/dist/utils/openCodeTurnActivity.js +27 -0
  849. package/dist/utils/openCodeTurnActivity.js.map +1 -0
  850. package/dist/utils/outputDebounce.d.ts +24 -0
  851. package/dist/utils/outputDebounce.d.ts.map +1 -0
  852. package/dist/utils/outputDebounce.js +30 -0
  853. package/dist/utils/outputDebounce.js.map +1 -0
  854. package/dist/utils/outputFlushTiming.d.ts +54 -0
  855. package/dist/utils/outputFlushTiming.d.ts.map +1 -0
  856. package/dist/utils/outputFlushTiming.js +48 -0
  857. package/dist/utils/outputFlushTiming.js.map +1 -0
  858. package/dist/utils/paginateList.d.ts +25 -0
  859. package/dist/utils/paginateList.d.ts.map +1 -0
  860. package/dist/utils/paginateList.js +32 -0
  861. package/dist/utils/paginateList.js.map +1 -0
  862. package/dist/utils/paneDiff.d.ts +55 -0
  863. package/dist/utils/paneDiff.d.ts.map +1 -0
  864. package/dist/utils/paneDiff.js +88 -0
  865. package/dist/utils/paneDiff.js.map +1 -0
  866. package/dist/utils/paneResizeGuard.d.ts +69 -0
  867. package/dist/utils/paneResizeGuard.d.ts.map +1 -0
  868. package/dist/utils/paneResizeGuard.js +91 -0
  869. package/dist/utils/paneResizeGuard.js.map +1 -0
  870. package/dist/utils/persistAdapterSessionIds.d.ts +39 -0
  871. package/dist/utils/persistAdapterSessionIds.d.ts.map +1 -0
  872. package/dist/utils/persistAdapterSessionIds.js +28 -0
  873. package/dist/utils/persistAdapterSessionIds.js.map +1 -0
  874. package/dist/utils/pinnedBannerSkipDecision.d.ts +44 -0
  875. package/dist/utils/pinnedBannerSkipDecision.d.ts.map +1 -0
  876. package/dist/utils/pinnedBannerSkipDecision.js +20 -0
  877. package/dist/utils/pinnedBannerSkipDecision.js.map +1 -0
  878. package/dist/utils/pollBackoff.d.ts +45 -0
  879. package/dist/utils/pollBackoff.d.ts.map +1 -0
  880. package/dist/utils/pollBackoff.js +44 -0
  881. package/dist/utils/pollBackoff.js.map +1 -0
  882. package/dist/utils/promptDelivery.d.ts +46 -0
  883. package/dist/utils/promptDelivery.d.ts.map +1 -0
  884. package/dist/utils/promptDelivery.js +49 -0
  885. package/dist/utils/promptDelivery.js.map +1 -0
  886. package/dist/utils/providerDisconnectPlan.d.ts +82 -0
  887. package/dist/utils/providerDisconnectPlan.d.ts.map +1 -0
  888. package/dist/utils/providerDisconnectPlan.js +110 -0
  889. package/dist/utils/providerDisconnectPlan.js.map +1 -0
  890. package/dist/utils/rateLimitLog.d.ts +48 -0
  891. package/dist/utils/rateLimitLog.d.ts.map +1 -0
  892. package/dist/utils/rateLimitLog.js +43 -0
  893. package/dist/utils/rateLimitLog.js.map +1 -0
  894. package/dist/utils/recentRelayWindow.d.ts +165 -0
  895. package/dist/utils/recentRelayWindow.d.ts.map +1 -0
  896. package/dist/utils/recentRelayWindow.js +284 -0
  897. package/dist/utils/recentRelayWindow.js.map +1 -0
  898. package/dist/utils/recvPreviewRedaction.d.ts +23 -0
  899. package/dist/utils/recvPreviewRedaction.d.ts.map +1 -0
  900. package/dist/utils/recvPreviewRedaction.js +39 -0
  901. package/dist/utils/recvPreviewRedaction.js.map +1 -0
  902. package/dist/utils/reminderFlow.d.ts +148 -0
  903. package/dist/utils/reminderFlow.d.ts.map +1 -0
  904. package/dist/utils/reminderFlow.js +122 -0
  905. package/dist/utils/reminderFlow.js.map +1 -0
  906. package/dist/utils/reminderScheduleText.d.ts +87 -0
  907. package/dist/utils/reminderScheduleText.d.ts.map +1 -0
  908. package/dist/utils/reminderScheduleText.js +135 -0
  909. package/dist/utils/reminderScheduleText.js.map +1 -0
  910. package/dist/utils/reminderWizard.d.ts +710 -0
  911. package/dist/utils/reminderWizard.d.ts.map +1 -0
  912. package/dist/utils/reminderWizard.js +1164 -0
  913. package/dist/utils/reminderWizard.js.map +1 -0
  914. package/dist/utils/replyQuote.d.ts +111 -0
  915. package/dist/utils/replyQuote.d.ts.map +1 -0
  916. package/dist/utils/replyQuote.js +122 -0
  917. package/dist/utils/replyQuote.js.map +1 -0
  918. package/dist/utils/resolveBinary.d.ts +25 -0
  919. package/dist/utils/resolveBinary.d.ts.map +1 -0
  920. package/dist/utils/resolveBinary.js +99 -0
  921. package/dist/utils/resolveBinary.js.map +1 -0
  922. package/dist/utils/retryAfterHeader.d.ts +7 -0
  923. package/dist/utils/retryAfterHeader.d.ts.map +1 -0
  924. package/dist/utils/retryAfterHeader.js +17 -0
  925. package/dist/utils/retryAfterHeader.js.map +1 -0
  926. package/dist/utils/rotatingJsonlFile.d.ts +40 -0
  927. package/dist/utils/rotatingJsonlFile.d.ts.map +1 -0
  928. package/dist/utils/rotatingJsonlFile.js +106 -0
  929. package/dist/utils/rotatingJsonlFile.js.map +1 -0
  930. package/dist/utils/rotatingLogFile.d.ts +25 -0
  931. package/dist/utils/rotatingLogFile.d.ts.map +1 -0
  932. package/dist/utils/rotatingLogFile.js +74 -0
  933. package/dist/utils/rotatingLogFile.js.map +1 -0
  934. package/dist/utils/sendRateTracker.d.ts +59 -0
  935. package/dist/utils/sendRateTracker.d.ts.map +1 -0
  936. package/dist/utils/sendRateTracker.js +144 -0
  937. package/dist/utils/sendRateTracker.js.map +1 -0
  938. package/dist/utils/serialQueue.d.ts +5 -0
  939. package/dist/utils/serialQueue.d.ts.map +1 -0
  940. package/dist/utils/serialQueue.js +14 -0
  941. package/dist/utils/serialQueue.js.map +1 -0
  942. package/dist/utils/sseStreamLifecycle.d.ts +32 -0
  943. package/dist/utils/sseStreamLifecycle.d.ts.map +1 -0
  944. package/dist/utils/sseStreamLifecycle.js +41 -0
  945. package/dist/utils/sseStreamLifecycle.js.map +1 -0
  946. package/dist/utils/startupReadiness.d.ts +119 -0
  947. package/dist/utils/startupReadiness.d.ts.map +1 -0
  948. package/dist/utils/startupReadiness.js +148 -0
  949. package/dist/utils/startupReadiness.js.map +1 -0
  950. package/dist/utils/statusFlushDecision.d.ts +18 -0
  951. package/dist/utils/statusFlushDecision.d.ts.map +1 -0
  952. package/dist/utils/statusFlushDecision.js +53 -0
  953. package/dist/utils/statusFlushDecision.js.map +1 -0
  954. package/dist/utils/subagentRender.d.ts +52 -0
  955. package/dist/utils/subagentRender.d.ts.map +1 -0
  956. package/dist/utils/subagentRender.js +66 -0
  957. package/dist/utils/subagentRender.js.map +1 -0
  958. package/dist/utils/subagentStatusRender.d.ts +90 -0
  959. package/dist/utils/subagentStatusRender.d.ts.map +1 -0
  960. package/dist/utils/subagentStatusRender.js +124 -0
  961. package/dist/utils/subagentStatusRender.js.map +1 -0
  962. package/dist/utils/telegramError.d.ts +2 -0
  963. package/dist/utils/telegramError.d.ts.map +1 -0
  964. package/dist/utils/telegramError.js +16 -0
  965. package/dist/utils/telegramError.js.map +1 -0
  966. package/dist/utils/terminalEmitPlan.d.ts +74 -0
  967. package/dist/utils/terminalEmitPlan.d.ts.map +1 -0
  968. package/dist/utils/terminalEmitPlan.js +86 -0
  969. package/dist/utils/terminalEmitPlan.js.map +1 -0
  970. package/dist/utils/thinkingRender.d.ts +74 -0
  971. package/dist/utils/thinkingRender.d.ts.map +1 -0
  972. package/dist/utils/thinkingRender.js +85 -0
  973. package/dist/utils/thinkingRender.js.map +1 -0
  974. package/dist/utils/threadStatusReport.d.ts +79 -0
  975. package/dist/utils/threadStatusReport.d.ts.map +1 -0
  976. package/dist/utils/threadStatusReport.js +88 -0
  977. package/dist/utils/threadStatusReport.js.map +1 -0
  978. package/dist/utils/threadToggle.d.ts +29 -0
  979. package/dist/utils/threadToggle.d.ts.map +1 -0
  980. package/dist/utils/threadToggle.js +39 -0
  981. package/dist/utils/threadToggle.js.map +1 -0
  982. package/dist/utils/timezone.d.ts +125 -0
  983. package/dist/utils/timezone.d.ts.map +1 -0
  984. package/dist/utils/timezone.js +278 -0
  985. package/dist/utils/timezone.js.map +1 -0
  986. package/dist/utils/tmuxExec.d.ts +61 -0
  987. package/dist/utils/tmuxExec.d.ts.map +1 -0
  988. package/dist/utils/tmuxExec.js +109 -0
  989. package/dist/utils/tmuxExec.js.map +1 -0
  990. package/dist/utils/tmuxSessionName.d.ts +34 -0
  991. package/dist/utils/tmuxSessionName.d.ts.map +1 -0
  992. package/dist/utils/tmuxSessionName.js +51 -0
  993. package/dist/utils/tmuxSessionName.js.map +1 -0
  994. package/dist/utils/toolResultRender.d.ts +61 -0
  995. package/dist/utils/toolResultRender.d.ts.map +1 -0
  996. package/dist/utils/toolResultRender.js +62 -0
  997. package/dist/utils/toolResultRender.js.map +1 -0
  998. package/dist/utils/topicRequest.d.ts +61 -0
  999. package/dist/utils/topicRequest.d.ts.map +1 -0
  1000. package/dist/utils/topicRequest.js +68 -0
  1001. package/dist/utils/topicRequest.js.map +1 -0
  1002. package/dist/utils/topicView.d.ts +55 -0
  1003. package/dist/utils/topicView.d.ts.map +1 -0
  1004. package/dist/utils/topicView.js +56 -0
  1005. package/dist/utils/topicView.js.map +1 -0
  1006. package/dist/utils/transcribeAudio.d.ts +89 -0
  1007. package/dist/utils/transcribeAudio.d.ts.map +1 -0
  1008. package/dist/utils/transcribeAudio.js +249 -0
  1009. package/dist/utils/transcribeAudio.js.map +1 -0
  1010. package/dist/utils/transientFrames.d.ts +52 -0
  1011. package/dist/utils/transientFrames.d.ts.map +1 -0
  1012. package/dist/utils/transientFrames.js +41 -0
  1013. package/dist/utils/transientFrames.js.map +1 -0
  1014. package/dist/utils/typingActive.d.ts +35 -0
  1015. package/dist/utils/typingActive.d.ts.map +1 -0
  1016. package/dist/utils/typingActive.js +22 -0
  1017. package/dist/utils/typingActive.js.map +1 -0
  1018. package/dist/utils/typingLoopBackstop.d.ts +64 -0
  1019. package/dist/utils/typingLoopBackstop.d.ts.map +1 -0
  1020. package/dist/utils/typingLoopBackstop.js +68 -0
  1021. package/dist/utils/typingLoopBackstop.js.map +1 -0
  1022. package/dist/utils/verbosityRender.d.ts +18 -0
  1023. package/dist/utils/verbosityRender.d.ts.map +1 -0
  1024. package/dist/utils/verbosityRender.js +17 -0
  1025. package/dist/utils/verbosityRender.js.map +1 -0
  1026. package/dist/utils/wedgeRecovery.d.ts +57 -0
  1027. package/dist/utils/wedgeRecovery.d.ts.map +1 -0
  1028. package/dist/utils/wedgeRecovery.js +24 -0
  1029. package/dist/utils/wedgeRecovery.js.map +1 -0
  1030. package/dist/utils.d.ts +30 -0
  1031. package/dist/utils.d.ts.map +1 -0
  1032. package/dist/utils.js +61 -0
  1033. package/dist/utils.js.map +1 -0
  1034. package/dist/validation.d.ts +113 -0
  1035. package/dist/validation.d.ts.map +1 -0
  1036. package/dist/validation.js +226 -0
  1037. package/dist/validation.js.map +1 -0
  1038. package/dist/voiceQueue.d.ts +7 -0
  1039. package/dist/voiceQueue.d.ts.map +1 -0
  1040. package/dist/voiceQueue.js +33 -0
  1041. package/dist/voiceQueue.js.map +1 -0
  1042. package/examples/.env.example +17 -0
  1043. package/examples/docker-compose.yml +36 -0
  1044. package/package.json +83 -4
@@ -0,0 +1,214 @@
1
+ /**
2
+ * @description Pure decision layer for the auto-retry-after-API-error feature
3
+ * (plan `agent/tasks/actual/2026-06-09-api-error-auto-retry.md`, S1). No I/O and
4
+ * no `Date.now()` inside: every caller passes `now` so the module is fully
5
+ * deterministic and unit-testable on a fixed clock.
6
+ *
7
+ * Two responsibilities:
8
+ * - {@link classifyAgentApiError} — read a terminal error string and decide
9
+ * whether (and how) it should be auto-retried. ORDER MATTERS (see the fn doc).
10
+ * - {@link getRetryPlan} — given a class + the current attempt, decide the next
11
+ * backoff delay or that we should give up.
12
+ *
13
+ * The same classifier serves BOTH backends: Claude surfaces the provider's
14
+ * "API Error" line in its TUI pane; OpenCode surfaces the same provider text
15
+ * through `session.error`.
16
+ */
17
+ import type { AgentApiErrorClass } from './types';
18
+ /**
19
+ * Transient backoff schedule (one entry per attempt): attempt 1 → 5m,
20
+ * 2 → 10m, 3 → 20m. After the last entry the retry gives up.
21
+ */
22
+ export declare const transientBackoffMinutes: readonly [5, 10, 20];
23
+ /** Max transient attempts before giving up (= `transientBackoffMinutes.length`). */
24
+ export declare const transientMaxAttempts: 3;
25
+ /**
26
+ * Fixed delay for a usage-limit error whose text exposed no reset time (the
27
+ * common case for Claude's "blocked" message): 60 minutes, re-armed on each
28
+ * repeat until {@link usageLimitMaxAttempts}.
29
+ */
30
+ export declare const usageLimitDefaultMs: number;
31
+ /** Max usage-limit attempts before giving up (~6h with the default delay). */
32
+ export declare const usageLimitMaxAttempts = 6;
33
+ /**
34
+ * Grace window after a retry fires: another API error within this window counts
35
+ * as the SAME error episode (escalate to attempt+1, longer backoff); an error
36
+ * later than this is a FRESH episode (reset to attempt 1). Decouples the
37
+ * decision from session-end events — a recovered turn just leaves a stale record
38
+ * that the next, much-later error resets to attempt 1.
39
+ */
40
+ export declare const retryRecurrenceGraceMs: number;
41
+ /**
42
+ * Padding added to a parsed reset time so the retry fires just AFTER the window
43
+ * actually rolls over, never a hair before it (which would re-error instantly).
44
+ */
45
+ export declare const resetBufferMs = 60000;
46
+ /**
47
+ * @description The auth / logged-out phrases (`please run /login`, `not logged
48
+ * in`, `invalid authentication credentials`). Shared with the Claude scrape
49
+ * detector (`getClaudeAgentErrorLine`) so the two never drift. NOT global — used
50
+ * with `.test()`, so lastIndex never carries between calls.
51
+ */
52
+ export declare const authErrorPhrasesRe: RegExp;
53
+ /**
54
+ * @description Alternation SOURCE (no anchors, no flags) of the explicit
55
+ * usage/session-limit wordings — {@link usageWindowPhrases} plus a bare
56
+ * `limit reached`. Exported as a source string — not just a compiled
57
+ * regex — because the Claude scrape detector (`getClaudeAgentErrorLine`) has to
58
+ * ANCHOR the same phrases at the start of a pane row, and a single source keeps
59
+ * the two from drifting (the `authErrorPhrasesRe` precedent).
60
+ */
61
+ export declare const usageLimitPhraseSource: string;
62
+ /** {@link usageLimitPhraseSource} compiled for a whole-text `.test()`. */
63
+ export declare const usageLimitPhrasesRe: RegExp;
64
+ /**
65
+ * @description Whether an error text is a usage / session / window limit.
66
+ *
67
+ * Two tiers, and the second one is the point: the explicit
68
+ * {@link usageLimitPhraseSource} list catches every wording we have actually
69
+ * seen, and the GENERIC fallback (a limit mention PLUS a reset/retry hint) still
70
+ * catches a wording the provider invents later — a rephrased limit message must
71
+ * not silently fall back to "relay the raw text and look hung", which is exactly
72
+ * what happened to `You've hit your session limit · resets 10:50pm (UTC)`.
73
+ *
74
+ * Ahead of both tiers sits {@link nonUsageLimitRe}: a context/token overflow is a
75
+ * limit no wait can clear, so it must never arm one.
76
+ */
77
+ export declare function checkIsUsageLimitText(text: string): boolean;
78
+ /**
79
+ * @description Classify a backend error string into an error class, or `null`
80
+ * when it is not a recognised provider error.
81
+ *
82
+ * ORDER IS LOAD-BEARING — branches are evaluated top to bottom and return on
83
+ * first match:
84
+ * 1. auth / logged out (login, bad credentials) → `{ kind: 'auth' }`. Must win:
85
+ * a wait never fixes these (they need a re-login or server restart), so they
86
+ * are SURFACED (a pinned notice), never auto-retried. Used to return `null`.
87
+ * 2. an exhausted-quota provider CODE ({@link exhaustedQuotaCodesRe}) or the observed
88
+ * subscription wording ({@link subscriptionLimitMessageRe}) → `usageLimit`.
89
+ * Ahead of transient because these ride a 429 (OpenAI `insufficient_quota`,
90
+ * Google `RESOURCE_EXHAUSTED`), which the next branch would read as a hiccup.
91
+ * 3. transient (rate-limited, overloaded, 429/503/529, or a bare "rate limit" without an explicit
92
+ * usage-window wording) → `{ kind: 'transient' }`.
93
+ * Tested BEFORE the usage wordings on purpose: the live transient string literally reads
94
+ * "...(not your usage limit)...", so a naive usage check would false-match it.
95
+ * Because transient returns here, the usage branch never sees that substring.
96
+ * 4. usage / session / window limit → `{ kind: 'usageLimit', resetAt? }`, decided
97
+ * by {@link checkIsUsageLimitText} (explicit wordings + a generic fallback).
98
+ * Anything else (normal prose, unrelated text) → `null`.
99
+ *
100
+ * @param now Current epoch ms — only consulted to resolve a relative/absolute
101
+ * reset time for the usage class; the transient/auth branches ignore it.
102
+ */
103
+ export declare function classifyAgentApiError(text: string, now: number): AgentApiErrorClass | null;
104
+ /**
105
+ * @description Best-effort parse of a "reset time" out of a usage-limit message.
106
+ * Never throws: any unparseable / absent time yields `undefined`, which the
107
+ * caller treats as "use the fixed delay". Handles three shapes, in order:
108
+ * - relative: "resets in 2h" / "in 45m" → `now + duration`.
109
+ * - absolute clock: "resets at 3pm" / "at 15:00" / "resets 10:50pm (UTC)" → the
110
+ * NEXT occurrence of that clock time at or after `now`. An EXPLICIT zone
111
+ * suffix is load-bearing: the clock is then resolved IN THAT ZONE, not in the
112
+ * instance/host zone. Without it a `10:50pm (UTC)` reset on a `+04:00` box
113
+ * resolved four hours EARLY — the retry fires while the limit still holds,
114
+ * re-errors, and burns one of the six attempts for nothing.
115
+ * - ISO timestamp anywhere in the text → `Date.parse`.
116
+ *
117
+ * A clock shape that fails to resolve (out-of-range hour) falls THROUGH to the
118
+ * ISO branch rather than giving up, so a message carrying both still parses.
119
+ *
120
+ * @param now Current epoch ms, used to resolve relative durations and to pick
121
+ * the next occurrence of an absolute clock time.
122
+ */
123
+ export declare function parseResetAt(text: string, now: number): number | undefined;
124
+ export interface RetryPlanArgs {
125
+ kind: AgentApiErrorClass['kind'];
126
+ /** 1-based attempt number for the delay we are about to schedule. */
127
+ attempt: number;
128
+ /** Parsed reset time (usage class only); absent → the fixed default delay. */
129
+ resetAt?: number;
130
+ /** Current epoch ms (to size a reset-time-relative delay). */
131
+ now: number;
132
+ }
133
+ export type RetryPlan = {
134
+ delayMs: number;
135
+ } | {
136
+ giveUp: true;
137
+ };
138
+ /**
139
+ * @description Decide the next backoff for an attempt, or that the retry loop
140
+ * should give up. Every returned `delayMs` is clamped to `[0, maxTimeoutMs]`
141
+ * (the same `setTimeout` cap the scheduler engine uses) so a far-future reset
142
+ * time never overflows the timer.
143
+ * - transient: {@link transientBackoffMinutes}[attempt-1]; giveUp once attempt
144
+ * exceeds {@link transientMaxAttempts}.
145
+ * - usageLimit: `resetAt` present → `resetAt - now + resetBufferMs`; else
146
+ * {@link usageLimitDefaultMs}; giveUp once attempt exceeds
147
+ * {@link usageLimitMaxAttempts}.
148
+ */
149
+ export declare function getRetryPlan(args: RetryPlanArgs): RetryPlan;
150
+ /**
151
+ * @description A read-only view of the bot's per-thread armed-retry record, fed
152
+ * into {@link decideRetryAction}. The bot owns the live `Map`; this snapshot is
153
+ * the only state the pure decision needs.
154
+ */
155
+ export interface RetryEntrySnapshot {
156
+ /** 1-based attempt of the currently / last armed retry. */
157
+ attempt: number;
158
+ /** Epoch ms when the last armed retry actually fired, or `null` if still pending. */
159
+ firedAt: number | null;
160
+ /** True while a retry timer is armed and has not fired yet. */
161
+ pending: boolean;
162
+ }
163
+ /**
164
+ * @description The action the bot must take in response to one `apiError`:
165
+ * - `surface` — an auth / logged-out error: post a pinned notice, arm NO timer
166
+ * (a wait never fixes it). The bot dedups repeats via its own per-thread
167
+ * auth-notice flag, so no attempt bookkeeping is needed here.
168
+ * - `ignore` — a retry is already armed and waiting; dedup this duplicate
169
+ * error frame (Claude re-scrapes the same line; OpenCode can repeat
170
+ * `session.error`).
171
+ * - `arm` — arm a timer for `attempt` after `delayMs` (firing at `fireAt`).
172
+ * - `giveUp` — the retry cap was reached; `attempts` is how many were already
173
+ * made before giving up.
174
+ */
175
+ export type RetryAction = {
176
+ action: 'surface';
177
+ } | {
178
+ action: 'ignore';
179
+ } | {
180
+ action: 'arm';
181
+ attempt: number;
182
+ delayMs: number;
183
+ fireAt: number;
184
+ } | {
185
+ action: 'giveUp';
186
+ attempts: number;
187
+ };
188
+ export interface DecideRetryActionArgs {
189
+ kind: AgentApiErrorClass['kind'];
190
+ /** Parsed reset time (usage class only); absent → the fixed default delay. */
191
+ resetAt?: number;
192
+ /** Current epoch ms. */
193
+ now: number;
194
+ /** The thread's existing armed-retry snapshot, or `null` if none. */
195
+ prev: RetryEntrySnapshot | null;
196
+ }
197
+ /**
198
+ * @description Decide the bot's reaction to an incoming API error, combining the
199
+ * episode/attempt bookkeeping with {@link getRetryPlan}. Pure — the caller
200
+ * passes `now` and the `prev` snapshot, so the decision is deterministic.
201
+ *
202
+ * Rules (evaluated in order):
203
+ * 0. `auth` → `surface` (never a timer, no attempt bookkeeping — the bot posts
204
+ * a deduped pinned notice; a wait can't recover a logged-out session).
205
+ * 1. `prev.pending` → `ignore` (a retry is already armed — dedup the episode;
206
+ * this is what stops Claude's repeated scrape frames AND any duplicate
207
+ * `session.error` from re-arming).
208
+ * 2. same episode (a `prev` that fired within {@link retryRecurrenceGraceMs}) →
209
+ * escalate to `prev.attempt + 1`; otherwise a fresh episode → attempt 1.
210
+ * 3. ask {@link getRetryPlan}: `giveUp` → `giveUp` with `attempts` already made
211
+ * (= attempt − 1); else `arm` at `now + delayMs`.
212
+ */
213
+ export declare function decideRetryAction(args: DecideRetryActionArgs): RetryAction;
214
+ //# sourceMappingURL=apiErrorRetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiErrorRetry.d.ts","sourceRoot":"","sources":["../src/apiErrorRetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAQlD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,sBAAuB,CAAC;AAC5D,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,GAAiC,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAmB,CAAC;AACpD,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AACtD;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAS,CAAC;AA2BpC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAyE,CAAC;AA2CzG;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,QAGxB,CAAC;AAEZ,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,QAA0C,CAAC;AAwB3E;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAiB1F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAsB1E;AA8DD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjC,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,CAAC;AAE/D;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAe3D;AAOD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,WAAW,CAW1E"}
@@ -0,0 +1,382 @@
1
+ "use strict";
2
+ /**
3
+ * @description Pure decision layer for the auto-retry-after-API-error feature
4
+ * (plan `agent/tasks/actual/2026-06-09-api-error-auto-retry.md`, S1). No I/O and
5
+ * no `Date.now()` inside: every caller passes `now` so the module is fully
6
+ * deterministic and unit-testable on a fixed clock.
7
+ *
8
+ * Two responsibilities:
9
+ * - {@link classifyAgentApiError} — read a terminal error string and decide
10
+ * whether (and how) it should be auto-retried. ORDER MATTERS (see the fn doc).
11
+ * - {@link getRetryPlan} — given a class + the current attempt, decide the next
12
+ * backoff delay or that we should give up.
13
+ *
14
+ * The same classifier serves BOTH backends: Claude surfaces the provider's
15
+ * "API Error" line in its TUI pane; OpenCode surfaces the same provider text
16
+ * through `session.error`.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.usageLimitPhrasesRe = exports.usageLimitPhraseSource = exports.authErrorPhrasesRe = exports.resetBufferMs = exports.retryRecurrenceGraceMs = exports.usageLimitMaxAttempts = exports.usageLimitDefaultMs = exports.transientMaxAttempts = exports.transientBackoffMinutes = void 0;
20
+ exports.checkIsUsageLimitText = checkIsUsageLimitText;
21
+ exports.classifyAgentApiError = classifyAgentApiError;
22
+ exports.parseResetAt = parseResetAt;
23
+ exports.getRetryPlan = getRetryPlan;
24
+ exports.decideRetryAction = decideRetryAction;
25
+ const engine_1 = require("./scheduler/engine");
26
+ /** One minute in milliseconds — the unit the backoff schedules are expressed in. */
27
+ const msPerMinute = 60_000;
28
+ /** One hour in milliseconds. */
29
+ const msPerHour = 60 * msPerMinute;
30
+ /**
31
+ * Transient backoff schedule (one entry per attempt): attempt 1 → 5m,
32
+ * 2 → 10m, 3 → 20m. After the last entry the retry gives up.
33
+ */
34
+ exports.transientBackoffMinutes = [5, 10, 20];
35
+ /** Max transient attempts before giving up (= `transientBackoffMinutes.length`). */
36
+ exports.transientMaxAttempts = exports.transientBackoffMinutes.length;
37
+ /**
38
+ * Fixed delay for a usage-limit error whose text exposed no reset time (the
39
+ * common case for Claude's "blocked" message): 60 minutes, re-armed on each
40
+ * repeat until {@link usageLimitMaxAttempts}.
41
+ */
42
+ exports.usageLimitDefaultMs = 60 * msPerMinute;
43
+ /** Max usage-limit attempts before giving up (~6h with the default delay). */
44
+ exports.usageLimitMaxAttempts = 6;
45
+ /**
46
+ * Grace window after a retry fires: another API error within this window counts
47
+ * as the SAME error episode (escalate to attempt+1, longer backoff); an error
48
+ * later than this is a FRESH episode (reset to attempt 1). Decouples the
49
+ * decision from session-end events — a recovered turn just leaves a stale record
50
+ * that the next, much-later error resets to attempt 1.
51
+ */
52
+ exports.retryRecurrenceGraceMs = 2 * msPerMinute;
53
+ /**
54
+ * Padding added to a parsed reset time so the retry fires just AFTER the window
55
+ * actually rolls over, never a hair before it (which would re-error instantly).
56
+ */
57
+ exports.resetBufferMs = 60_000;
58
+ /** Matches reset phrasings like "resets in 2h", "in 45m", "in 90 min". */
59
+ const relativeResetRegex = /\bin\s+(\d+)\s*(h|hours?|m|min|minutes?)\b/i;
60
+ /**
61
+ * Matches absolute clock phrasings after a reset trigger word. The trigger is
62
+ * either `at` (`resets at 3pm`, `at 15:00`) OR a BARE `reset`/`resets` — Claude's
63
+ * session-limit render drops the "at" entirely (`resets 10:50pm (UTC)`), which
64
+ * the old `at`-only pattern missed, leaving the retry on its blind 60-min delay.
65
+ * The hour's `(?!\d)` guard stops a leading ISO date (`2026-09-24`) from being
66
+ * read as an hour before the ISO branch gets its turn.
67
+ */
68
+ const clockResetRegex = /\b(?:reset(?:s|ting)?|at)\s+(\d{1,2})(?!\d)(?::(\d{2}))?\s*(am|pm)?/i;
69
+ /**
70
+ * An EXPLICIT timezone immediately after the clock — `(UTC)`, ` UTC`, `Z`,
71
+ * `+05:00`, `-0700`. Anchored at the remainder's start so only a suffix of THAT
72
+ * clock counts, and `\b`-terminated so a word merely starting with `Z` (`Zulu`,
73
+ * `Zoom`) is not read as the Zulu zone.
74
+ */
75
+ const trailingZoneRegex = /^\s*\(?\s*(UTC|GMT|Z|[+-]\d{2}:?\d{2})\b\s*\)?/i;
76
+ /** Matches an ISO-8601 timestamp anywhere in the text. */
77
+ const isoTimestampRegex = /\b\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?\b/;
78
+ const hoursPerDay = 24;
79
+ const minutesPerHour = 60;
80
+ const msPerDay = hoursPerDay * msPerHour;
81
+ /**
82
+ * @description The auth / logged-out phrases (`please run /login`, `not logged
83
+ * in`, `invalid authentication credentials`). Shared with the Claude scrape
84
+ * detector (`getClaudeAgentErrorLine`) so the two never drift. NOT global — used
85
+ * with `.test()`, so lastIndex never carries between calls.
86
+ */
87
+ exports.authErrorPhrasesRe = /please run \/login|not logged in|invalid authentication credentials/i;
88
+ /**
89
+ * The wordings that name a usage WINDOW or an exhausted balance EXPLICITLY: the
90
+ * qualified window limits (`session limit`, `weekly limit`, `5-hour limit`), the
91
+ * `hit your … limit` phrasings Claude now uses, and the balance/quota exhaustion
92
+ * wordings that are not spelled as a "limit" at all. Kept apart from the bare
93
+ * `limit reached` below because this subset is what exempts a text from
94
+ * {@link nonUsageLimitRe} — "hit your weekly token limit" IS a usage window, a bare
95
+ * "context limit exceeded" is not.
96
+ */
97
+ const usageWindowPhrases = [
98
+ String.raw `(?:session|usage|weekly|daily|monthly|hourly|\d+-hours?)[\s_]+limit`,
99
+ String.raw `(?:hit|reached|exceeded)\s+your\s+(?:[\w-]+\s+){0,3}limit`,
100
+ String.raw `credit balance (?:is )?too low`,
101
+ String.raw `out of (?:credits|usage)`,
102
+ String.raw `quota`,
103
+ String.raw `resource[\s_]+(?:has been )?exhausted`,
104
+ String.raw `billing\s+(?:hard\s+)?limit`,
105
+ ];
106
+ /**
107
+ * The provider error CODES that mean an exhausted quota or subscription window — what the OpenCode backend
108
+ * relays verbatim from OpenAI (`insufficient_quota`, `usage_limit_reached`), Google (`RESOURCE_EXHAUSTED`) and
109
+ * the OpenAI Codex subscription (`You've hit your usage limit`). These arrive with HTTP 429, the status the
110
+ * transient branch reads as "rate limited", so they are tested BEFORE it: a quota that is used up for the
111
+ * month is not cleared by a 5-minute retry, and the fallback chain must see a usage limit to switch provider.
112
+ */
113
+ const exhaustedQuotaCodesRe = /insufficient_quota|exceeded your current quota|usage_limit_reached|resource_exhausted|hit your usage limit/i;
114
+ /**
115
+ * Observed subscription-window wording ("This request would exceed your account's rate limit. Please try
116
+ * again later."); do not generalize it to every bare rate limit. Keyed on the distinctive head only, so a
117
+ * relay that truncates the tail or types a curly apostrophe still matches.
118
+ */
119
+ const subscriptionLimitMessageRe = /would exceed your account['\u2019]?s rate limit/i;
120
+ /** Throttling markers that are transient whatever else the text says (the live "not your usage limit" trap). */
121
+ const transientMarkersRe = /rate.?limited|temporarily limiting requests|too many requests|overloaded|\b(429|503|529)\b/i;
122
+ /** A bare "rate limit" (no "-ed"): transient only when no explicit usage-window wording rides along. */
123
+ const bareRateLimitRe = /rate.?limit/i;
124
+ /**
125
+ * @description Alternation SOURCE (no anchors, no flags) of the explicit
126
+ * usage/session-limit wordings — {@link usageWindowPhrases} plus a bare
127
+ * `limit reached`. Exported as a source string — not just a compiled
128
+ * regex — because the Claude scrape detector (`getClaudeAgentErrorLine`) has to
129
+ * ANCHOR the same phrases at the start of a pane row, and a single source keeps
130
+ * the two from drifting (the `authErrorPhrasesRe` precedent).
131
+ */
132
+ exports.usageLimitPhraseSource = [
133
+ ...usageWindowPhrases,
134
+ String.raw `limit\s+(?:reached|exceeded)`,
135
+ ].join('|');
136
+ /** {@link usageLimitPhraseSource} compiled for a whole-text `.test()`. */
137
+ exports.usageLimitPhrasesRe = new RegExp(exports.usageLimitPhraseSource, 'i');
138
+ /** {@link usageWindowPhrases} compiled — the {@link nonUsageLimitRe} exemption. */
139
+ const usageWindowPhrasesRe = new RegExp(usageWindowPhrases.join('|'), 'i');
140
+ /**
141
+ * A limit that WAITING can never clear: a context / token / prompt-length overflow
142
+ * is fixed by sending less, not by sitting out a window. The real provider wording
143
+ * ("input length and `max_tokens` exceed context limit: … decrease input length …
144
+ * and try again") carries both a limit mention and a retry hint, so without this
145
+ * guard the generic fallback below classified it as `usageLimit` and armed a 6-hour
146
+ * futile wait instead of surfacing an error the operator has to act on.
147
+ */
148
+ const nonUsageLimitRe = /\b(?:context|token|input|output|prompt|character)\s+(?:length\s+)?limits?\b/i;
149
+ /**
150
+ * The GENERIC fallback's two required signals: the text mentions a limit AND
151
+ * carries a reset/retry hint. BOTH are required on purpose — "limit" alone
152
+ * matches ordinary prose ("the API limit is 5 requests per minute"), while the
153
+ * pairing is what every real limit message has (it always tells you when you get
154
+ * back in).
155
+ */
156
+ const limitMentionRe = /\blimits?\b/i;
157
+ const limitResetHintRe = /\breset(?:s|ting)?\b|\btry again\b|\bresumes?\b/i;
158
+ /**
159
+ * @description Whether an error text is a usage / session / window limit.
160
+ *
161
+ * Two tiers, and the second one is the point: the explicit
162
+ * {@link usageLimitPhraseSource} list catches every wording we have actually
163
+ * seen, and the GENERIC fallback (a limit mention PLUS a reset/retry hint) still
164
+ * catches a wording the provider invents later — a rephrased limit message must
165
+ * not silently fall back to "relay the raw text and look hung", which is exactly
166
+ * what happened to `You've hit your session limit · resets 10:50pm (UTC)`.
167
+ *
168
+ * Ahead of both tiers sits {@link nonUsageLimitRe}: a context/token overflow is a
169
+ * limit no wait can clear, so it must never arm one.
170
+ */
171
+ function checkIsUsageLimitText(text) {
172
+ if (nonUsageLimitRe.test(text) && !usageWindowPhrasesRe.test(text))
173
+ return false;
174
+ if (exports.usageLimitPhrasesRe.test(text))
175
+ return true;
176
+ return limitMentionRe.test(text) && limitResetHintRe.test(text);
177
+ }
178
+ /**
179
+ * @description Classify a backend error string into an error class, or `null`
180
+ * when it is not a recognised provider error.
181
+ *
182
+ * ORDER IS LOAD-BEARING — branches are evaluated top to bottom and return on
183
+ * first match:
184
+ * 1. auth / logged out (login, bad credentials) → `{ kind: 'auth' }`. Must win:
185
+ * a wait never fixes these (they need a re-login or server restart), so they
186
+ * are SURFACED (a pinned notice), never auto-retried. Used to return `null`.
187
+ * 2. an exhausted-quota provider CODE ({@link exhaustedQuotaCodesRe}) or the observed
188
+ * subscription wording ({@link subscriptionLimitMessageRe}) → `usageLimit`.
189
+ * Ahead of transient because these ride a 429 (OpenAI `insufficient_quota`,
190
+ * Google `RESOURCE_EXHAUSTED`), which the next branch would read as a hiccup.
191
+ * 3. transient (rate-limited, overloaded, 429/503/529, or a bare "rate limit" without an explicit
192
+ * usage-window wording) → `{ kind: 'transient' }`.
193
+ * Tested BEFORE the usage wordings on purpose: the live transient string literally reads
194
+ * "...(not your usage limit)...", so a naive usage check would false-match it.
195
+ * Because transient returns here, the usage branch never sees that substring.
196
+ * 4. usage / session / window limit → `{ kind: 'usageLimit', resetAt? }`, decided
197
+ * by {@link checkIsUsageLimitText} (explicit wordings + a generic fallback).
198
+ * Anything else (normal prose, unrelated text) → `null`.
199
+ *
200
+ * @param now Current epoch ms — only consulted to resolve a relative/absolute
201
+ * reset time for the usage class; the transient/auth branches ignore it.
202
+ */
203
+ function classifyAgentApiError(text, now) {
204
+ if (exports.authErrorPhrasesRe.test(text)) {
205
+ return { kind: 'auth' };
206
+ }
207
+ if (exhaustedQuotaCodesRe.test(text) || subscriptionLimitMessageRe.test(text)) {
208
+ return { kind: 'usageLimit', resetAt: parseResetAt(text, now) };
209
+ }
210
+ // The observed subscription wording is handled above, including a 429 wrapper.
211
+ // Ordinary rate-limit errors must not fall into the generic limit + retry-hint branch,
212
+ // but "rate limit reached: you've hit your weekly limit" still names a usage window.
213
+ if (transientMarkersRe.test(text) || (bareRateLimitRe.test(text) && !usageWindowPhrasesRe.test(text))) {
214
+ return { kind: 'transient' };
215
+ }
216
+ if (checkIsUsageLimitText(text)) {
217
+ return { kind: 'usageLimit', resetAt: parseResetAt(text, now) };
218
+ }
219
+ return null;
220
+ }
221
+ /**
222
+ * @description Best-effort parse of a "reset time" out of a usage-limit message.
223
+ * Never throws: any unparseable / absent time yields `undefined`, which the
224
+ * caller treats as "use the fixed delay". Handles three shapes, in order:
225
+ * - relative: "resets in 2h" / "in 45m" → `now + duration`.
226
+ * - absolute clock: "resets at 3pm" / "at 15:00" / "resets 10:50pm (UTC)" → the
227
+ * NEXT occurrence of that clock time at or after `now`. An EXPLICIT zone
228
+ * suffix is load-bearing: the clock is then resolved IN THAT ZONE, not in the
229
+ * instance/host zone. Without it a `10:50pm (UTC)` reset on a `+04:00` box
230
+ * resolved four hours EARLY — the retry fires while the limit still holds,
231
+ * re-errors, and burns one of the six attempts for nothing.
232
+ * - ISO timestamp anywhere in the text → `Date.parse`.
233
+ *
234
+ * A clock shape that fails to resolve (out-of-range hour) falls THROUGH to the
235
+ * ISO branch rather than giving up, so a message carrying both still parses.
236
+ *
237
+ * @param now Current epoch ms, used to resolve relative durations and to pick
238
+ * the next occurrence of an absolute clock time.
239
+ */
240
+ function parseResetAt(text, now) {
241
+ const relativeMatch = relativeResetRegex.exec(text);
242
+ if (relativeMatch) {
243
+ const amount = Number.parseInt(relativeMatch[1], 10);
244
+ const unit = relativeMatch[2].toLowerCase();
245
+ const isHours = unit.startsWith('h');
246
+ return now + amount * (isHours ? msPerHour : msPerMinute);
247
+ }
248
+ const clockMatch = clockResetRegex.exec(text);
249
+ if (clockMatch) {
250
+ const resolved = resolveNextClockTime(clockMatch, text, now);
251
+ if (resolved !== undefined)
252
+ return resolved;
253
+ }
254
+ const isoMatch = isoTimestampRegex.exec(text);
255
+ if (isoMatch) {
256
+ const parsed = Date.parse(isoMatch[0]);
257
+ if (!Number.isNaN(parsed))
258
+ return parsed;
259
+ }
260
+ return undefined;
261
+ }
262
+ /**
263
+ * Read an explicit zone token to an offset from UTC in ms, or `undefined` when it
264
+ * is not a zone we can resolve arithmetically. `Z`/`UTC`/`GMT` are zero;
265
+ * `±HH:MM` / `±HHMM` are taken literally (a fixed offset needs no DST rules).
266
+ */
267
+ function getZoneOffsetMs(zone) {
268
+ const upper = zone.toUpperCase();
269
+ if (upper === 'UTC' || upper === 'GMT' || upper === 'Z')
270
+ return 0;
271
+ const match = /^([+-])(\d{2}):?(\d{2})$/.exec(zone);
272
+ if (!match)
273
+ return undefined;
274
+ const hours = Number.parseInt(match[2], 10);
275
+ const minutes = Number.parseInt(match[3], 10);
276
+ if (hours >= hoursPerDay || minutes >= minutesPerHour)
277
+ return undefined;
278
+ const sign = match[1] === '-' ? -1 : 1;
279
+ return sign * (hours * msPerHour + minutes * msPerMinute);
280
+ }
281
+ /**
282
+ * Resolve a clock match to the next epoch ms at or after `now` that lands on that
283
+ * wall-clock time. When the text carries an explicit zone right after the clock
284
+ * the arithmetic is done in THAT zone (pure offset math, no `Intl`); otherwise it
285
+ * falls back to the process-local zone (which `/timezone` already re-bases).
286
+ * Returns `undefined` for an out-of-range hour/minute rather than guessing.
287
+ */
288
+ function resolveNextClockTime(match, text, now) {
289
+ const rawHour = Number.parseInt(match[1], 10);
290
+ const minute = match[2] ? Number.parseInt(match[2], 10) : 0;
291
+ const meridiem = match[3]?.toLowerCase();
292
+ let hour = rawHour;
293
+ if (meridiem === 'pm' && rawHour < 12)
294
+ hour = rawHour + 12;
295
+ else if (meridiem === 'am' && rawHour === 12)
296
+ hour = 0;
297
+ if (hour < 0 || hour >= hoursPerDay || minute < 0 || minute >= minutesPerHour) {
298
+ return undefined;
299
+ }
300
+ const zoneMatch = trailingZoneRegex.exec(text.slice(match.index + match[0].length));
301
+ const offsetMs = zoneMatch ? getZoneOffsetMs(zoneMatch[1]) : undefined;
302
+ if (offsetMs !== undefined) {
303
+ // Shift onto the zone's timeline, snap to that zone's midnight, then shift
304
+ // back — `Date`'s local-zone getters are unusable for a foreign zone.
305
+ const shiftedNow = now + offsetMs;
306
+ const zoneDayStart = Math.floor(shiftedNow / msPerDay) * msPerDay;
307
+ let candidateShifted = zoneDayStart + hour * msPerHour + minute * msPerMinute;
308
+ if (candidateShifted < shiftedNow)
309
+ candidateShifted += msPerDay;
310
+ return candidateShifted - offsetMs;
311
+ }
312
+ const candidate = new Date(now);
313
+ candidate.setHours(hour, minute, 0, 0);
314
+ let candidateMs = candidate.getTime();
315
+ if (candidateMs < now) {
316
+ // Already past today — roll to the same clock time tomorrow.
317
+ candidate.setDate(candidate.getDate() + 1);
318
+ candidateMs = candidate.getTime();
319
+ }
320
+ return candidateMs;
321
+ }
322
+ /**
323
+ * @description Decide the next backoff for an attempt, or that the retry loop
324
+ * should give up. Every returned `delayMs` is clamped to `[0, maxTimeoutMs]`
325
+ * (the same `setTimeout` cap the scheduler engine uses) so a far-future reset
326
+ * time never overflows the timer.
327
+ * - transient: {@link transientBackoffMinutes}[attempt-1]; giveUp once attempt
328
+ * exceeds {@link transientMaxAttempts}.
329
+ * - usageLimit: `resetAt` present → `resetAt - now + resetBufferMs`; else
330
+ * {@link usageLimitDefaultMs}; giveUp once attempt exceeds
331
+ * {@link usageLimitMaxAttempts}.
332
+ */
333
+ function getRetryPlan(args) {
334
+ // auth is never retried (it is surfaced by `decideRetryAction` before this is
335
+ // reached); guard so it can never fall through into the usageLimit branch.
336
+ if (args.kind === 'auth')
337
+ return { giveUp: true };
338
+ if (args.kind === 'transient') {
339
+ if (args.attempt > exports.transientMaxAttempts)
340
+ return { giveUp: true };
341
+ const minutes = exports.transientBackoffMinutes[args.attempt - 1];
342
+ return { delayMs: clampDelay(minutes * msPerMinute) };
343
+ }
344
+ if (args.attempt > exports.usageLimitMaxAttempts)
345
+ return { giveUp: true };
346
+ const rawDelayMs = typeof args.resetAt === 'number' ? args.resetAt - args.now + exports.resetBufferMs : exports.usageLimitDefaultMs;
347
+ return { delayMs: clampDelay(rawDelayMs) };
348
+ }
349
+ /** Clamp a delay into `[0, maxTimeoutMs]` (the Node `setTimeout` safe range). */
350
+ function clampDelay(delayMs) {
351
+ return Math.min(Math.max(0, delayMs), engine_1.maxTimeoutMs);
352
+ }
353
+ /**
354
+ * @description Decide the bot's reaction to an incoming API error, combining the
355
+ * episode/attempt bookkeeping with {@link getRetryPlan}. Pure — the caller
356
+ * passes `now` and the `prev` snapshot, so the decision is deterministic.
357
+ *
358
+ * Rules (evaluated in order):
359
+ * 0. `auth` → `surface` (never a timer, no attempt bookkeeping — the bot posts
360
+ * a deduped pinned notice; a wait can't recover a logged-out session).
361
+ * 1. `prev.pending` → `ignore` (a retry is already armed — dedup the episode;
362
+ * this is what stops Claude's repeated scrape frames AND any duplicate
363
+ * `session.error` from re-arming).
364
+ * 2. same episode (a `prev` that fired within {@link retryRecurrenceGraceMs}) →
365
+ * escalate to `prev.attempt + 1`; otherwise a fresh episode → attempt 1.
366
+ * 3. ask {@link getRetryPlan}: `giveUp` → `giveUp` with `attempts` already made
367
+ * (= attempt − 1); else `arm` at `now + delayMs`.
368
+ */
369
+ function decideRetryAction(args) {
370
+ const { kind, resetAt, now, prev } = args;
371
+ if (kind === 'auth')
372
+ return { action: 'surface' };
373
+ if (prev?.pending)
374
+ return { action: 'ignore' };
375
+ const sameEpisode = !!prev && prev.firedAt != null && now - prev.firedAt <= exports.retryRecurrenceGraceMs;
376
+ const attempt = sameEpisode ? prev.attempt + 1 : 1;
377
+ const plan = getRetryPlan({ kind, attempt, resetAt, now });
378
+ if ('giveUp' in plan)
379
+ return { action: 'giveUp', attempts: attempt - 1 };
380
+ return { action: 'arm', attempt, delayMs: plan.delayMs, fireAt: now + plan.delayMs };
381
+ }
382
+ //# sourceMappingURL=apiErrorRetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiErrorRetry.js","sourceRoot":"","sources":["../src/apiErrorRetry.ts"],"names":[],"mappings":"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"}