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,337 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.maxTimeoutMs = void 0;
4
+ exports.createSchedulerEngine = createSchedulerEngine;
5
+ const node_crypto_1 = require("node:crypto");
6
+ const recurrence_1 = require("./recurrence");
7
+ /**
8
+ * @description The scheduler timer engine (plan S3). Owns one `setTimeout` per
9
+ * armed job, the boot replay (`rearmAll`), and the no-overlap guard. It is
10
+ * deliberately decoupled from `bot.ts`: every external concern is injected via
11
+ * {@link SchedulerEngineDeps} (the store, the run ledger, a `deliver` callback,
12
+ * a clock, and optional timer functions), so the engine is constructible in a
13
+ * test with a fake clock and a fake `deliver`.
14
+ *
15
+ * Lifecycle of one job:
16
+ *
17
+ * armJob(record) → setTimeout(nextRunAt − now), clamped to {@link maxTimeoutMs}
18
+ * │ (a longer delay arms an INTERMEDIATE timer that re-arms).
19
+ * ▼
20
+ * timer fires → re-read the FRESH record from the store (it may have been
21
+ * │ removed/paused since arming); then:
22
+ * │ gone → disarm, no-op
23
+ * │ paused → ledger 'paused-skip', disarm (do NOT re-arm)
24
+ * │ in-flight → ledger 'skipped-overlap', recompute + re-arm
25
+ * │ otherwise → fire()
26
+ * ▼
27
+ * fire() → ledger begin record → await deliver(job, fireContext) (wrapped:
28
+ * │ a thrown deliver is classified 'failed', never kills the engine)
29
+ * │ → bookkeeping (lastRunAt/lastRunStatus; recurring recompute+re-arm;
30
+ * │ N-times decrement, remove at 0; one-shot remove) → store.flush()
31
+ * ▼ → ledger end record (always written).
32
+ */
33
+ /**
34
+ * Node's `setTimeout` clamps any delay above 2^31−1 ms (~24.8 days) to 1, which
35
+ * would fire the timer immediately. For a job further out than this we arm an
36
+ * INTERMEDIATE timer at the cap that simply re-arms when it fires, walking the
37
+ * delay down in cap-sized hops until it fits.
38
+ */
39
+ exports.maxTimeoutMs = 2_147_483_647;
40
+ /** Length of the hex run-id minted per fire for the ledger correlation. */
41
+ const runIdByteLength = 8;
42
+ function createSchedulerEngine(deps) {
43
+ const { store, ledger, deliver, now } = deps;
44
+ const armTimer = deps.setTimeoutFn ?? ((callback, delayMs) => setTimeout(callback, delayMs));
45
+ const clearTimer = deps.clearTimeoutFn ?? ((handle) => clearTimeout(handle));
46
+ /** jobId → its armed timer handle. The single source of truth for "is armed". */
47
+ const timers = new Map();
48
+ /** jobIds whose delivery is currently in flight — the no-overlap guard. */
49
+ const inFlight = new Set();
50
+ /**
51
+ * Every still-running timer-callback chain (`onTimer`). `whenIdle` awaits
52
+ * these; entries remove themselves on settle. A Set (not a count) so the
53
+ * same job firing twice tracks both chains.
54
+ */
55
+ const activeChains = new Set();
56
+ /** Run an `onTimer` chain, tracking it so {@link whenIdle} can await it. */
57
+ function trackChain(jobId) {
58
+ const chain = onTimer(jobId).finally(() => {
59
+ activeChains.delete(chain);
60
+ });
61
+ activeChains.add(chain);
62
+ }
63
+ async function whenIdle() {
64
+ // Re-snapshot until stable: a settling chain may have re-armed nothing, but
65
+ // an overlap/bookkeeping path can spawn follow-up awaits within the same
66
+ // chain; awaiting the snapshot then re-checking covers chains added late.
67
+ while (activeChains.size > 0) {
68
+ await Promise.allSettled([...activeChains]);
69
+ }
70
+ }
71
+ function disarmJob(jobId) {
72
+ const handle = timers.get(jobId);
73
+ if (handle) {
74
+ clearTimer(handle);
75
+ timers.delete(jobId);
76
+ }
77
+ }
78
+ /**
79
+ * Arm a timer for `jobId` due at `dueAtMs`. Delays beyond {@link maxTimeoutMs}
80
+ * arm an intermediate hop that re-arms toward the real due time. Any existing
81
+ * timer for the job is cleared first so re-arming never leaks a timer.
82
+ */
83
+ function armAt(jobId, dueAtMs) {
84
+ disarmJob(jobId);
85
+ const delayMs = Math.max(0, dueAtMs - now());
86
+ if (delayMs > exports.maxTimeoutMs) {
87
+ const intermediate = armTimer(() => armAt(jobId, dueAtMs), exports.maxTimeoutMs);
88
+ intermediate.unref?.();
89
+ timers.set(jobId, intermediate);
90
+ return;
91
+ }
92
+ const handle = armTimer(() => {
93
+ trackChain(jobId);
94
+ }, delayMs);
95
+ handle.unref?.();
96
+ timers.set(jobId, handle);
97
+ }
98
+ function armJob(record) {
99
+ if (record.isPaused) {
100
+ // Paused jobs stay disarmed silently — no ledger entry (a 'paused-skip'
101
+ // is only for a fire attempt that races a pause, see onTimer).
102
+ disarmJob(record.id);
103
+ return;
104
+ }
105
+ if (record.nextRunAt === null) {
106
+ disarmJob(record.id);
107
+ return;
108
+ }
109
+ armAt(record.id, record.nextRunAt);
110
+ }
111
+ /**
112
+ * Timer callback for `jobId`. Re-reads the fresh record (it may have changed
113
+ * between arm and fire), applies the re-validate / overlap / paused gates,
114
+ * and dispatches to {@link fire}. Never throws — a thrown body would escape
115
+ * the timer callback and could take the process down.
116
+ */
117
+ async function onTimer(jobId) {
118
+ try {
119
+ // The armed timer has now fired; drop its handle so disarm is a no-op and
120
+ // re-arms below install a clean one.
121
+ timers.delete(jobId);
122
+ const record = store.getSchedules()[jobId];
123
+ if (!record) {
124
+ // Removed between arm and fire — nothing to do, nothing armed.
125
+ return;
126
+ }
127
+ if (record.isPaused) {
128
+ ledger.append({
129
+ runId: mintRunId(),
130
+ jobId,
131
+ threadKey: record.threadKey,
132
+ firedAt: now(),
133
+ kind: 'paused-skip',
134
+ });
135
+ // Do NOT re-arm — a paused job stays disarmed until resumed (S8).
136
+ return;
137
+ }
138
+ if (inFlight.has(jobId)) {
139
+ // Previous fire still delivering — skip this occurrence, advance, re-arm.
140
+ ledger.append({
141
+ runId: mintRunId(),
142
+ jobId,
143
+ threadKey: record.threadKey,
144
+ firedAt: now(),
145
+ kind: 'skipped-overlap',
146
+ });
147
+ await advanceOverlap(record);
148
+ return;
149
+ }
150
+ await fire(record);
151
+ }
152
+ catch (error) {
153
+ console.error(`[scheduler] timer callback failed for job ${jobId}:`, error);
154
+ }
155
+ }
156
+ /**
157
+ * After a skipped-overlap: persist the advanced `nextRunAt` (recurring) or
158
+ * leave a one-shot/N-times-final alone, and re-arm if there is a next run.
159
+ * Bookkeeping here is light — the skip is not a "run", so lastRunStatus is
160
+ * recorded as 'skipped-overlap' for visibility but remainingRuns is untouched.
161
+ */
162
+ async function advanceOverlap(record) {
163
+ const nextRunAt = (0, recurrence_1.getNextRunAt)(record.spec, now());
164
+ const updated = {
165
+ ...record,
166
+ lastRunAt: now(),
167
+ lastRunStatus: 'skipped-overlap',
168
+ nextRunAt,
169
+ updatedAt: new Date(now()).toISOString(),
170
+ };
171
+ if (nextRunAt === null) {
172
+ // A one-shot that overlapped its own (already-elapsed) instant: nothing
173
+ // more to run, drop the record like a completed one-shot.
174
+ await store.removeSchedule(record.id);
175
+ }
176
+ else {
177
+ await store.upsertSchedule(updated);
178
+ armAt(record.id, nextRunAt);
179
+ }
180
+ await store.flush();
181
+ }
182
+ /**
183
+ * Execute one fire: ledger begin, await the (wrapped) deliver, bookkeeping,
184
+ * flush, ledger end. Classifies a thrown deliver as 'failed' so an exception
185
+ * never skips bookkeeping or kills the engine.
186
+ */
187
+ async function fire(record) {
188
+ const runId = mintRunId();
189
+ const firedAt = now();
190
+ const decision = (0, recurrence_1.getCatchUpDecision)({ nextRunAt: record.nextRunAt, nowMs: firedAt });
191
+ const isCatchUp = decision === 'fire-missed';
192
+ const fireContext = isCatchUp
193
+ ? { kind: 'catch-up', missedAtMs: record.nextRunAt ?? undefined }
194
+ : { kind: 'on-time' };
195
+ ledger.append({
196
+ runId,
197
+ jobId: record.id,
198
+ threadKey: record.threadKey,
199
+ firedAt,
200
+ kind: isCatchUp ? 'catch-up' : 'on-time',
201
+ });
202
+ inFlight.add(record.id);
203
+ let outcome;
204
+ try {
205
+ outcome = await deliver(record, fireContext);
206
+ }
207
+ catch (error) {
208
+ outcome = { status: 'failed', error: error instanceof Error ? error.message : String(error) };
209
+ }
210
+ finally {
211
+ inFlight.delete(record.id);
212
+ }
213
+ const deliveredAt = now();
214
+ try {
215
+ await applyBookkeeping(record, outcome, deliveredAt);
216
+ }
217
+ catch (error) {
218
+ console.error(`[scheduler] bookkeeping failed for job ${record.id}:`, error);
219
+ }
220
+ ledger.append({
221
+ runId,
222
+ jobId: record.id,
223
+ threadKey: record.threadKey,
224
+ firedAt,
225
+ kind: isCatchUp ? 'catch-up' : 'on-time',
226
+ deliveredAt,
227
+ ...(outcome.status === 'failed' && outcome.error ? { error: outcome.error } : {}),
228
+ });
229
+ }
230
+ /**
231
+ * Update the record after a completed fire and re-arm (or remove). Reads the
232
+ * fresh record again so a pause/removal during delivery is respected. flush()
233
+ * is awaited because `nextRunAt`/`remainingRuns` are crash-critical.
234
+ */
235
+ async function applyBookkeeping(original, outcome, deliveredAt) {
236
+ const fresh = store.getSchedules()[original.id];
237
+ if (!fresh) {
238
+ // Removed mid-delivery — leave it gone, just make sure nothing is armed.
239
+ disarmJob(original.id);
240
+ await store.flush();
241
+ return;
242
+ }
243
+ if (fresh.isPaused) {
244
+ // Paused DURING delivery (e.g. the deliver callback hit an unbound topic
245
+ // and parked the job, S8): the engine never arms a paused job, so do NOT
246
+ // re-arm a recurring one or delete a one-shot — just stay disarmed and let
247
+ // the rebind-resume path own its lifecycle. (A pause BEFORE the timer fires
248
+ // is caught earlier in onTimer as a paused-skip.)
249
+ disarmJob(fresh.id);
250
+ await store.flush();
251
+ return;
252
+ }
253
+ const lastRunStatus = outcome.status === 'delivered' ? 'delivered' : 'failed';
254
+ if (fresh.spec.kind === 'once') {
255
+ await store.removeSchedule(fresh.id);
256
+ disarmJob(fresh.id);
257
+ await store.flush();
258
+ return;
259
+ }
260
+ // cron (possibly N-times)
261
+ if (typeof fresh.spec.remainingRuns === 'number') {
262
+ const remaining = fresh.spec.remainingRuns - 1;
263
+ if (remaining <= 0) {
264
+ await store.removeSchedule(fresh.id);
265
+ disarmJob(fresh.id);
266
+ await store.flush();
267
+ return;
268
+ }
269
+ const nextRunAt = (0, recurrence_1.getNextRunAt)(fresh.spec, deliveredAt);
270
+ const updated = {
271
+ ...fresh,
272
+ spec: { ...fresh.spec, remainingRuns: remaining },
273
+ lastRunAt: deliveredAt,
274
+ lastRunStatus,
275
+ nextRunAt,
276
+ updatedAt: new Date(deliveredAt).toISOString(),
277
+ };
278
+ await store.upsertSchedule(updated);
279
+ if (nextRunAt !== null)
280
+ armAt(fresh.id, nextRunAt);
281
+ else
282
+ disarmJob(fresh.id);
283
+ await store.flush();
284
+ return;
285
+ }
286
+ // plain recurring cron
287
+ const nextRunAt = (0, recurrence_1.getNextRunAt)(fresh.spec, deliveredAt);
288
+ const updated = {
289
+ ...fresh,
290
+ lastRunAt: deliveredAt,
291
+ lastRunStatus,
292
+ nextRunAt,
293
+ updatedAt: new Date(deliveredAt).toISOString(),
294
+ };
295
+ await store.upsertSchedule(updated);
296
+ if (nextRunAt !== null)
297
+ armAt(fresh.id, nextRunAt);
298
+ else
299
+ disarmJob(fresh.id);
300
+ await store.flush();
301
+ }
302
+ /**
303
+ * Boot replay. Walks every persisted job:
304
+ * - paused → skip silently (stays disarmed; no ledger entry).
305
+ * - nextRunAt missed (getCatchUpDecision → 'fire-missed') → fire ONCE as a
306
+ * catch-up (the deliver callback gets `missedAtMs`), then bookkeeping
307
+ * already recomputed nextRunAt from now and re-armed.
308
+ * - on-time / future → just arm.
309
+ * Catch-ups run sequentially (await) so a burst of missed jobs paces its
310
+ * announcements through the shared chat send budget.
311
+ */
312
+ async function rearmAll() {
313
+ const all = store.getSchedules();
314
+ for (const record of Object.values(all)) {
315
+ if (record.isPaused)
316
+ continue;
317
+ const decision = (0, recurrence_1.getCatchUpDecision)({ nextRunAt: record.nextRunAt, nowMs: now() });
318
+ if (decision === 'fire-missed') {
319
+ // fire() reads the same catch-up decision and handles re-arming via
320
+ // bookkeeping; nothing else to arm here.
321
+ await fire(record);
322
+ continue;
323
+ }
324
+ armJob(record);
325
+ }
326
+ }
327
+ function shutdown() {
328
+ for (const handle of timers.values())
329
+ clearTimer(handle);
330
+ timers.clear();
331
+ }
332
+ function mintRunId() {
333
+ return (0, node_crypto_1.randomBytes)(runIdByteLength).toString('hex');
334
+ }
335
+ return { armJob, disarmJob, rearmAll, whenIdle, shutdown };
336
+ }
337
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/scheduler/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @description The single source of the scheduler MCP server entry injected into
3
+ * every bot-started agent session (plan S6). Both backends get the SAME bot-owned
4
+ * `telegramBot` server, just shaped for their respective MCP-config formats:
5
+ * - Claude reads a `--mcp-config` file with a streamable-HTTP `mcpServers` entry
6
+ * (thread-scoped token).
7
+ * - OpenCode is registered at runtime via `POST /mcp?directory=` with a `remote`
8
+ * server entry (directory-scoped token).
9
+ *
10
+ * This server is bot-owned plumbing — it is NOT part of the user-editable `/mcp`
11
+ * hierarchy (`mcpConfig.ts`) and is never written into the user's group/thread
12
+ * config files.
13
+ *
14
+ * INERT until S8 calls {@link configureSchedulerMcpInjection} at boot: unconfigured,
15
+ * every builder returns `null`, so the `prepareMcpFlags` / OpenCode-registration
16
+ * call sites behave byte-identically to before the scheduler existed. The module
17
+ * imports nothing from `bot.ts`; the secret + port arrive through the config
18
+ * singleton, mirroring how `mcpSurface.ts` takes its deps injected.
19
+ */
20
+ import { type SessionKey } from '../sessionKey';
21
+ import { schedulerMcpClientIdHeader } from './mcpSurface';
22
+ /** The fixed MCP server name both backends register the injected entry under. */
23
+ export declare const schedulerMcpServerName = "telegramBot";
24
+ /**
25
+ * @name SchedulerInjectionConfig
26
+ * @description The boot-supplied dependencies (S8 wires these). `getSecret`
27
+ * returns the persisted HMAC secret used to mint scope tokens (same secret the
28
+ * server verifies against in {@link mcpSurface}); `port` is the bound listen
29
+ * port (resolved after the server starts, since a `0` request port becomes an
30
+ * ephemeral one) so the injected url points at the real listener.
31
+ */
32
+ interface SchedulerInjectionConfig {
33
+ getSecret: () => Promise<string>;
34
+ port: number;
35
+ }
36
+ /**
37
+ * @description Activate scheduler MCP injection (plan S8 calls this at boot,
38
+ * after the MCP server's `start()` resolves so the bound port is known). Until
39
+ * called, all builders are inert. Re-calling overwrites the config (e.g. a
40
+ * server restart that rebinds a different ephemeral port).
41
+ */
42
+ export declare function configureSchedulerMcpInjection(config: SchedulerInjectionConfig): void;
43
+ /**
44
+ * @description Reset to the inert state. Intended for tests (and a future
45
+ * shutdown path) so a configured singleton can't leak across cases.
46
+ */
47
+ export declare function resetSchedulerMcpInjection(): void;
48
+ /**
49
+ * @name ClaudeSchedulerMcpConfig
50
+ * @description The exact JSON shape written to the bot-generated `--mcp-config`
51
+ * file for Claude: a single streamable-HTTP `mcpServers` entry keyed by
52
+ * {@link schedulerMcpServerName}, carrying the thread-scoped bearer token.
53
+ */
54
+ export interface ClaudeSchedulerMcpConfig {
55
+ mcpServers: {
56
+ [schedulerMcpServerName]: {
57
+ type: 'http';
58
+ url: string;
59
+ headers: {
60
+ Authorization: string;
61
+ [schedulerMcpClientIdHeader]: string;
62
+ };
63
+ };
64
+ };
65
+ }
66
+ /**
67
+ * @description Build the Claude `--mcp-config` payload for a thread, scoped to
68
+ * that exact thread (`thread:<key>`). Returns `null` when injection is inert
69
+ * (S8 not wired) so the caller adds no extra flag. The thread key is serialised
70
+ * with {@link keyToString} — the same canonical form `serializeSchedulerScope`
71
+ * signs — so the token the server later verifies resolves to this exact thread.
72
+ */
73
+ export declare function buildClaudeSchedulerMcpConfig(threadKey: SessionKey): Promise<ClaudeSchedulerMcpConfig | null>;
74
+ /**
75
+ * @name OpenCodeSchedulerMcpRegistration
76
+ * @description The body posted to OpenCode's runtime `POST /mcp?directory=` to
77
+ * register the injected server for a bound folder, scoped to that directory
78
+ * (`dir:<path>`). OpenCode's runtime MCP shape is `remote` (vs Claude's `http`),
79
+ * `enabled: true`, with the directory-scoped bearer token in `headers`.
80
+ */
81
+ export interface OpenCodeSchedulerMcpRegistration {
82
+ name: typeof schedulerMcpServerName;
83
+ config: {
84
+ type: 'remote';
85
+ url: string;
86
+ enabled: true;
87
+ headers: {
88
+ Authorization: string;
89
+ [schedulerMcpClientIdHeader]: string;
90
+ };
91
+ };
92
+ }
93
+ /**
94
+ * @description Build the OpenCode runtime MCP registration body for a directory,
95
+ * scoped to that directory (`dir:<path>`). Returns `null` when injection is
96
+ * inert. The directory is the bound folder (the OpenCode instance selector); the
97
+ * server resolves the single bound thread implicitly, or requires `threadKey`
98
+ * when the folder has more than one bound thread (see `resolveTargetThreadKey`).
99
+ */
100
+ export declare function buildOpenCodeSchedulerMcpRegistration(directory: string): Promise<OpenCodeSchedulerMcpRegistration | null>;
101
+ export {};
102
+ //# sourceMappingURL=injection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injection.d.ts","sourceRoot":"","sources":["../../src/scheduler/injection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAEL,0BAA0B,EAG3B,MAAM,cAAc,CAAC;AAEtB,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AAEpD;;;;;;;GAOG;AACH,UAAU,wBAAwB;IAChC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAQD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAErF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAkBD;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE;QACV,CAAC,sBAAsB,CAAC,EAAE;YACxB,IAAI,EAAE,MAAM,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,OAAO,EAAE;gBACP,aAAa,EAAE,MAAM,CAAC;gBACtB,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;aACtC,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAiB1C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,OAAO,sBAAsB,CAAC;IACpC,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,IAAI,CAAC;QACd,OAAO,EAAE;YACP,aAAa,EAAE,MAAM,CAAC;YACtB,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;SACtC,CAAC;KACH,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAsB,qCAAqC,CACzD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAiBlD"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ /**
3
+ * @description The single source of the scheduler MCP server entry injected into
4
+ * every bot-started agent session (plan S6). Both backends get the SAME bot-owned
5
+ * `telegramBot` server, just shaped for their respective MCP-config formats:
6
+ * - Claude reads a `--mcp-config` file with a streamable-HTTP `mcpServers` entry
7
+ * (thread-scoped token).
8
+ * - OpenCode is registered at runtime via `POST /mcp?directory=` with a `remote`
9
+ * server entry (directory-scoped token).
10
+ *
11
+ * This server is bot-owned plumbing — it is NOT part of the user-editable `/mcp`
12
+ * hierarchy (`mcpConfig.ts`) and is never written into the user's group/thread
13
+ * config files.
14
+ *
15
+ * INERT until S8 calls {@link configureSchedulerMcpInjection} at boot: unconfigured,
16
+ * every builder returns `null`, so the `prepareMcpFlags` / OpenCode-registration
17
+ * call sites behave byte-identically to before the scheduler existed. The module
18
+ * imports nothing from `bot.ts`; the secret + port arrive through the config
19
+ * singleton, mirroring how `mcpSurface.ts` takes its deps injected.
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.schedulerMcpServerName = void 0;
23
+ exports.configureSchedulerMcpInjection = configureSchedulerMcpInjection;
24
+ exports.resetSchedulerMcpInjection = resetSchedulerMcpInjection;
25
+ exports.buildClaudeSchedulerMcpConfig = buildClaudeSchedulerMcpConfig;
26
+ exports.buildOpenCodeSchedulerMcpRegistration = buildOpenCodeSchedulerMcpRegistration;
27
+ const node_crypto_1 = require("node:crypto");
28
+ const sessionKey_1 = require("../sessionKey");
29
+ const mcpSurface_1 = require("./mcpSurface");
30
+ /** The fixed MCP server name both backends register the injected entry under. */
31
+ exports.schedulerMcpServerName = 'telegramBot';
32
+ /**
33
+ * Module-level singleton. `null` = unconfigured = inert: every builder returns
34
+ * `null` and the call sites add nothing. Set exactly once by S8 at boot.
35
+ */
36
+ let injectionConfig = null;
37
+ /**
38
+ * @description Activate scheduler MCP injection (plan S8 calls this at boot,
39
+ * after the MCP server's `start()` resolves so the bound port is known). Until
40
+ * called, all builders are inert. Re-calling overwrites the config (e.g. a
41
+ * server restart that rebinds a different ephemeral port).
42
+ */
43
+ function configureSchedulerMcpInjection(config) {
44
+ injectionConfig = config;
45
+ }
46
+ /**
47
+ * @description Reset to the inert state. Intended for tests (and a future
48
+ * shutdown path) so a configured singleton can't leak across cases.
49
+ */
50
+ function resetSchedulerMcpInjection() {
51
+ injectionConfig = null;
52
+ }
53
+ /** The loopback url the injected entry points at: `http://127.0.0.1:<port>/mcp`. */
54
+ function buildSchedulerMcpUrl(port) {
55
+ return `http://127.0.0.1:${port}${mcpSurface_1.schedulerMcpPath}`;
56
+ }
57
+ /**
58
+ * @description Mint a bearer token for a scope using the configured secret.
59
+ * Reuses {@link buildSchedulerMcpToken} (and via it `serializeSchedulerScope`)
60
+ * so the token math lives in exactly one place. Returns `null` when inert.
61
+ */
62
+ async function buildBearerHeader(scope) {
63
+ if (!injectionConfig)
64
+ return null;
65
+ const secret = await injectionConfig.getSecret();
66
+ return `Bearer ${(0, mcpSurface_1.buildSchedulerMcpToken)(secret, scope)}`;
67
+ }
68
+ /**
69
+ * @description Build the Claude `--mcp-config` payload for a thread, scoped to
70
+ * that exact thread (`thread:<key>`). Returns `null` when injection is inert
71
+ * (S8 not wired) so the caller adds no extra flag. The thread key is serialised
72
+ * with {@link keyToString} — the same canonical form `serializeSchedulerScope`
73
+ * signs — so the token the server later verifies resolves to this exact thread.
74
+ */
75
+ async function buildClaudeSchedulerMcpConfig(threadKey) {
76
+ if (!injectionConfig)
77
+ return null;
78
+ const scope = { kind: 'thread', threadKey: (0, sessionKey_1.keyToString)(threadKey) };
79
+ const authorization = await buildBearerHeader(scope);
80
+ if (authorization === null)
81
+ return null;
82
+ return {
83
+ mcpServers: {
84
+ [exports.schedulerMcpServerName]: {
85
+ type: 'http',
86
+ url: buildSchedulerMcpUrl(injectionConfig.port),
87
+ headers: {
88
+ Authorization: authorization,
89
+ [mcpSurface_1.schedulerMcpClientIdHeader]: (0, node_crypto_1.randomUUID)(),
90
+ },
91
+ },
92
+ },
93
+ };
94
+ }
95
+ /**
96
+ * @description Build the OpenCode runtime MCP registration body for a directory,
97
+ * scoped to that directory (`dir:<path>`). Returns `null` when injection is
98
+ * inert. The directory is the bound folder (the OpenCode instance selector); the
99
+ * server resolves the single bound thread implicitly, or requires `threadKey`
100
+ * when the folder has more than one bound thread (see `resolveTargetThreadKey`).
101
+ */
102
+ async function buildOpenCodeSchedulerMcpRegistration(directory) {
103
+ if (!injectionConfig)
104
+ return null;
105
+ const scope = { kind: 'dir', directory };
106
+ const authorization = await buildBearerHeader(scope);
107
+ if (authorization === null)
108
+ return null;
109
+ return {
110
+ name: exports.schedulerMcpServerName,
111
+ config: {
112
+ type: 'remote',
113
+ url: buildSchedulerMcpUrl(injectionConfig.port),
114
+ enabled: true,
115
+ headers: {
116
+ Authorization: authorization,
117
+ [mcpSurface_1.schedulerMcpClientIdHeader]: (0, node_crypto_1.randomUUID)(),
118
+ },
119
+ },
120
+ };
121
+ }
122
+ //# sourceMappingURL=injection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injection.js","sourceRoot":"","sources":["../../src/scheduler/injection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAuCH,wEAEC;AAMD,gEAEC;AA4CD,sEAmBC;AA6BD,sFAmBC;AA9JD,6CAAyC;AACzC,8CAA6D;AAC7D,6CAKsB;AAEtB,iFAAiF;AACpE,QAAA,sBAAsB,GAAG,aAAa,CAAC;AAepD;;;GAGG;AACH,IAAI,eAAe,GAAoC,IAAI,CAAC;AAE5D;;;;;GAKG;AACH,SAAgB,8BAA8B,CAAC,MAAgC;IAC7E,eAAe,GAAG,MAAM,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,SAAgB,0BAA0B;IACxC,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC;AAED,oFAAoF;AACpF,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,oBAAoB,IAAI,GAAG,6BAAgB,EAAE,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAAC,KAAqB;IACpD,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,CAAC;IACjD,OAAO,UAAU,IAAA,mCAAsB,EAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;AAC3D,CAAC;AAqBD;;;;;;GAMG;AACI,KAAK,UAAU,6BAA6B,CACjD,SAAqB;IAErB,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,KAAK,GAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAA,wBAAW,EAAC,SAAS,CAAC,EAAE,CAAC;IACpF,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO;QACL,UAAU,EAAE;YACV,CAAC,8BAAsB,CAAC,EAAE;gBACxB,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC;gBAC/C,OAAO,EAAE;oBACP,aAAa,EAAE,aAAa;oBAC5B,CAAC,uCAA0B,CAAC,EAAE,IAAA,wBAAU,GAAE;iBAC3C;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAsBD;;;;;;GAMG;AACI,KAAK,UAAU,qCAAqC,CACzD,SAAiB;IAEjB,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,KAAK,GAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACzD,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO;QACL,IAAI,EAAE,8BAAsB;QAC5B,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC;YAC/C,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP,aAAa,EAAE,aAAa;gBAC5B,CAAC,uCAA0B,CAAC,EAAE,IAAA,wBAAU,GAAE;aAC3C;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { type SchedulerMcpHandle } from './mcpSurface';
2
+ /**
3
+ * @description Boot-time bring-up of the bot-owned MCP server, and the ORDER of
4
+ * the session phase around it. Kept out of `bot.ts` so the ordering contract is
5
+ * testable (importing `bot.ts` runs its module-scope `parseEnv()`).
6
+ *
7
+ * The contract: the server is bound and injection is configured BEFORE any
8
+ * session is re-attached or resumed. A session (re)spawned at boot builds its
9
+ * `--mcp-config` / OpenCode registration at that moment; with injection still
10
+ * inert it is born WITHOUT the bot's server, and the Claude heal path never
11
+ * repairs an ABSENT server (`decideMcpHeal` maps it to `skip`). Such a Claude
12
+ * session could not reach the bot's tools for the rest of its life.
13
+ *
14
+ * The heals stay AFTER reattach: they walk only ACTIVE sessions, so run before
15
+ * it they would heal nothing. The schedule re-arm stays after reattach too — a
16
+ * catch-up fire needs the re-attached adapters.
17
+ */
18
+ /**
19
+ * @name SchedulerMcpBootDeps
20
+ * @description What {@link startSchedulerMcpForBoot} needs: the server handle,
21
+ * the env-pinned port ({@link defaultSchedulerMcpPort} = not pinned), the
22
+ * persisted port of a prior boot and its writer, and the HMAC secret the
23
+ * injected tokens are signed with.
24
+ */
25
+ export interface SchedulerMcpBootDeps {
26
+ handle: SchedulerMcpHandle;
27
+ envPort: number;
28
+ getPersistedPort: () => number | undefined;
29
+ persistPort: (port: number) => Promise<void>;
30
+ getSecret: () => Promise<string>;
31
+ }
32
+ /**
33
+ * @description Bind the bot MCP server and configure injection toward the bound
34
+ * port. Resolves `true` when the server is up. A bind failure (port busy) is
35
+ * logged and resolves `false`: the bot still boots and injection stays inert,
36
+ * so sessions spawned this run get no bot tools — a Claude one keeps lacking
37
+ * them after a later restart too (its process is adopted, and the heal never
38
+ * adds an absent server). Persisting the port is best-effort: it only serves the
39
+ * NEXT boot, so a failed write is logged and the bound server is still used.
40
+ */
41
+ export declare function startSchedulerMcpForBoot(deps: SchedulerMcpBootDeps): Promise<boolean>;
42
+ /**
43
+ * @name SessionBootPhaseSteps
44
+ * @description The boot steps whose relative order {@link runSessionBootPhase}
45
+ * owns. `restoreAfterReattach` is the per-thread state that needs to know which
46
+ * sessions came back (pending questions, armed retries, limit episodes, orphaned
47
+ * status frames); `onSessionsRestored` opens the gate the session-reading MCP
48
+ * tools wait on (the server already serves, a surviving session may call in);
49
+ * `healActiveSessions` runs only when the server is up and is best-effort — a
50
+ * throw is logged and never aborts the boot.
51
+ */
52
+ export interface SessionBootPhaseSteps {
53
+ startBotMcp: () => Promise<boolean>;
54
+ reattachSessions: () => Promise<void>;
55
+ restoreAfterReattach: () => void;
56
+ onSessionsRestored: () => void;
57
+ healActiveSessions: () => void;
58
+ rearmSchedules: () => Promise<void>;
59
+ }
60
+ /**
61
+ * @description Run the session phase of the boot in the order the module header
62
+ * explains. Resolves whether the bot MCP server started, for the shutdown path.
63
+ */
64
+ export declare function runSessionBootPhase(steps: SessionBootPhaseSteps): Promise<boolean>;
65
+ //# sourceMappingURL=mcpBoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpBoot.d.ts","sourceRoot":"","sources":["../../src/scheduler/mcpBoot.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEhF;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC3C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CA2B3F;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAcxF"}