charness 0.0.0-stage → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +88 -0
- package/DEVELOPMENT.md +110 -0
- package/LICENSE +21 -0
- package/MIGRATION_1_TO_2.md +24 -0
- package/README.md +1024 -2
- package/dist/accessControl.d.ts +71 -0
- package/dist/accessControl.d.ts.map +1 -0
- package/dist/accessControl.js +108 -0
- package/dist/accessControl.js.map +1 -0
- package/dist/adapters/adapterEventRouting.d.ts +51 -0
- package/dist/adapters/adapterEventRouting.d.ts.map +1 -0
- package/dist/adapters/adapterEventRouting.js +74 -0
- package/dist/adapters/adapterEventRouting.js.map +1 -0
- package/dist/adapters/adapterNames.d.ts +19 -0
- package/dist/adapters/adapterNames.d.ts.map +1 -0
- package/dist/adapters/adapterNames.js +25 -0
- package/dist/adapters/adapterNames.js.map +1 -0
- package/dist/adapters/claudeCliAdapter.d.ts +1336 -0
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeCliAdapter.js +4204 -0
- package/dist/adapters/claudeCliAdapter.js.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +548 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.js +1810 -0
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -0
- package/dist/adapters/claudePlatformFlags.d.ts +35 -0
- package/dist/adapters/claudePlatformFlags.d.ts.map +1 -0
- package/dist/adapters/claudePlatformFlags.js +46 -0
- package/dist/adapters/claudePlatformFlags.js.map +1 -0
- package/dist/adapters/createAdapter.d.ts +252 -0
- package/dist/adapters/createAdapter.d.ts.map +1 -0
- package/dist/adapters/createAdapter.js +475 -0
- package/dist/adapters/createAdapter.js.map +1 -0
- package/dist/adapters/openCodeAdapter.d.ts +1446 -0
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
- package/dist/adapters/openCodeAdapter.js +4540 -0
- package/dist/adapters/openCodeAdapter.js.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts +28 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.js +15 -0
- package/dist/adapters/sessionLaunchDefaults.js.map +1 -0
- package/dist/adapters/terminalAdapter.d.ts +68 -0
- package/dist/adapters/terminalAdapter.d.ts.map +1 -0
- package/dist/adapters/terminalAdapter.js +371 -0
- package/dist/adapters/terminalAdapter.js.map +1 -0
- package/dist/agentLogin/agentLogin.d.ts +31 -0
- package/dist/agentLogin/agentLogin.d.ts.map +1 -0
- package/dist/agentLogin/agentLogin.js +493 -0
- package/dist/agentLogin/agentLogin.js.map +1 -0
- package/dist/agentTrigger.d.ts +28 -0
- package/dist/agentTrigger.d.ts.map +1 -0
- package/dist/agentTrigger.js +53 -0
- package/dist/agentTrigger.js.map +1 -0
- package/dist/apiErrorRetry.d.ts +209 -0
- package/dist/apiErrorRetry.d.ts.map +1 -0
- package/dist/apiErrorRetry.js +351 -0
- package/dist/apiErrorRetry.js.map +1 -0
- package/dist/apiRetryKick.d.ts +148 -0
- package/dist/apiRetryKick.d.ts.map +1 -0
- package/dist/apiRetryKick.js +158 -0
- package/dist/apiRetryKick.js.map +1 -0
- package/dist/bootClassifier.d.ts +46 -0
- package/dist/bootClassifier.d.ts.map +1 -0
- package/dist/bootClassifier.js +43 -0
- package/dist/bootClassifier.js.map +1 -0
- package/dist/bot.d.ts +207 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +10611 -0
- package/dist/bot.js.map +1 -0
- package/dist/botFileStorage.d.ts +60 -0
- package/dist/botFileStorage.d.ts.map +1 -0
- package/dist/botFileStorage.js +205 -0
- package/dist/botFileStorage.js.map +1 -0
- package/dist/cli/applyDnsFix.d.ts +7 -0
- package/dist/cli/applyDnsFix.d.ts.map +1 -0
- package/dist/cli/applyDnsFix.js +46 -0
- package/dist/cli/applyDnsFix.js.map +1 -0
- package/dist/cli/bot.d.ts +27 -0
- package/dist/cli/bot.d.ts.map +1 -0
- package/dist/cli/bot.js +98 -0
- package/dist/cli/bot.js.map +1 -0
- package/dist/cli/botEntry.d.ts +3 -0
- package/dist/cli/botEntry.d.ts.map +1 -0
- package/dist/cli/botEntry.js +11 -0
- package/dist/cli/botEntry.js.map +1 -0
- package/dist/cli/connectorGuards.d.ts +31 -0
- package/dist/cli/connectorGuards.d.ts.map +1 -0
- package/dist/cli/connectorGuards.js +159 -0
- package/dist/cli/connectorGuards.js.map +1 -0
- package/dist/cli/envLoader.d.ts +34 -0
- package/dist/cli/envLoader.d.ts.map +1 -0
- package/dist/cli/envLoader.js +132 -0
- package/dist/cli/envLoader.js.map +1 -0
- package/dist/cli/hot.d.ts +82 -0
- package/dist/cli/hot.d.ts.map +1 -0
- package/dist/cli/hot.js +323 -0
- package/dist/cli/hot.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +130 -0
- package/dist/cli.js.map +1 -0
- package/dist/connectors/jira/adf.d.ts +72 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -0
- package/dist/connectors/jira/adf.js +407 -0
- package/dist/connectors/jira/adf.js.map +1 -0
- package/dist/connectors/jira/agentBinaries.d.ts +14 -0
- package/dist/connectors/jira/agentBinaries.d.ts.map +1 -0
- package/dist/connectors/jira/agentBinaries.js +75 -0
- package/dist/connectors/jira/agentBinaries.js.map +1 -0
- package/dist/connectors/jira/answerSink.d.ts +52 -0
- package/dist/connectors/jira/answerSink.d.ts.map +1 -0
- package/dist/connectors/jira/answerSink.js +220 -0
- package/dist/connectors/jira/answerSink.js.map +1 -0
- package/dist/connectors/jira/attachmentDownload.d.ts +41 -0
- package/dist/connectors/jira/attachmentDownload.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentDownload.js +92 -0
- package/dist/connectors/jira/attachmentDownload.js.map +1 -0
- package/dist/connectors/jira/attachmentTool.d.ts +43 -0
- package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentTool.js +150 -0
- package/dist/connectors/jira/attachmentTool.js.map +1 -0
- package/dist/connectors/jira/client.d.ts +490 -0
- package/dist/connectors/jira/client.d.ts.map +1 -0
- package/dist/connectors/jira/client.js +453 -0
- package/dist/connectors/jira/client.js.map +1 -0
- package/dist/connectors/jira/config.d.ts +117 -0
- package/dist/connectors/jira/config.d.ts.map +1 -0
- package/dist/connectors/jira/config.js +350 -0
- package/dist/connectors/jira/config.js.map +1 -0
- package/dist/connectors/jira/configFile.d.ts +10 -0
- package/dist/connectors/jira/configFile.d.ts.map +1 -0
- package/dist/connectors/jira/configFile.js +50 -0
- package/dist/connectors/jira/configFile.js.map +1 -0
- package/dist/connectors/jira/connector.d.ts +68 -0
- package/dist/connectors/jira/connector.d.ts.map +1 -0
- package/dist/connectors/jira/connector.js +257 -0
- package/dist/connectors/jira/connector.js.map +1 -0
- package/dist/connectors/jira/contextLedger.d.ts +59 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
- package/dist/connectors/jira/contextLedger.js +194 -0
- package/dist/connectors/jira/contextLedger.js.map +1 -0
- package/dist/connectors/jira/contextPreamble.d.ts +18 -0
- package/dist/connectors/jira/contextPreamble.d.ts.map +1 -0
- package/dist/connectors/jira/contextPreamble.js +31 -0
- package/dist/connectors/jira/contextPreamble.js.map +1 -0
- package/dist/connectors/jira/inbound.d.ts +132 -0
- package/dist/connectors/jira/inbound.d.ts.map +1 -0
- package/dist/connectors/jira/inbound.js +316 -0
- package/dist/connectors/jira/inbound.js.map +1 -0
- package/dist/connectors/jira/issueBlocks.d.ts +51 -0
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
- package/dist/connectors/jira/issueBlocks.js +182 -0
- package/dist/connectors/jira/issueBlocks.js.map +1 -0
- package/dist/connectors/jira/issueContext.d.ts +25 -0
- package/dist/connectors/jira/issueContext.d.ts.map +1 -0
- package/dist/connectors/jira/issueContext.js +53 -0
- package/dist/connectors/jira/issueContext.js.map +1 -0
- package/dist/connectors/jira/issueDelta.d.ts +35 -0
- package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
- package/dist/connectors/jira/issueDelta.js +50 -0
- package/dist/connectors/jira/issueDelta.js.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts +20 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.js +92 -0
- package/dist/connectors/jira/mediaPlaceholders.js.map +1 -0
- package/dist/connectors/jira/outbound.d.ts +6 -0
- package/dist/connectors/jira/outbound.d.ts.map +1 -0
- package/dist/connectors/jira/outbound.js +38 -0
- package/dist/connectors/jira/outbound.js.map +1 -0
- package/dist/connectors/jira/prompt.d.ts +37 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -0
- package/dist/connectors/jira/prompt.js +99 -0
- package/dist/connectors/jira/prompt.js.map +1 -0
- package/dist/connectors/jira/promptSpill.d.ts +50 -0
- package/dist/connectors/jira/promptSpill.d.ts.map +1 -0
- package/dist/connectors/jira/promptSpill.js +157 -0
- package/dist/connectors/jira/promptSpill.js.map +1 -0
- package/dist/connectors/jira/promptText.d.ts +7 -0
- package/dist/connectors/jira/promptText.d.ts.map +1 -0
- package/dist/connectors/jira/promptText.js +26 -0
- package/dist/connectors/jira/promptText.js.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts +16 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.js +101 -0
- package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/jira/trigger.d.ts +50 -0
- package/dist/connectors/jira/trigger.d.ts.map +1 -0
- package/dist/connectors/jira/trigger.js +93 -0
- package/dist/connectors/jira/trigger.js.map +1 -0
- package/dist/connectors/jira/triggerLog.d.ts +51 -0
- package/dist/connectors/jira/triggerLog.d.ts.map +1 -0
- package/dist/connectors/jira/triggerLog.js +78 -0
- package/dist/connectors/jira/triggerLog.js.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts +58 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.js +105 -0
- package/dist/connectors/jira/unconfirmedPosts.js.map +1 -0
- package/dist/connectors/telegram/answerSink.d.ts +46 -0
- package/dist/connectors/telegram/answerSink.d.ts.map +1 -0
- package/dist/connectors/telegram/answerSink.js +71 -0
- package/dist/connectors/telegram/answerSink.js.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +31 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js +142 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -0
- package/dist/connectors/telegram/commands/botCore.d.ts +46 -0
- package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/botCore.js +3 -0
- package/dist/connectors/telegram/commands/botCore.js.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.js +13 -0
- package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -0
- package/dist/connectors/telegram/commands/compaction.d.ts +47 -0
- package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/compaction.js +868 -0
- package/dist/connectors/telegram/commands/compaction.js.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts +13 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.js +335 -0
- package/dist/connectors/telegram/commands/displayModes.js.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts +95 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.js +841 -0
- package/dist/connectors/telegram/commands/modelProviders.js.map +1 -0
- package/dist/connectors/telegram/commands/reminders.d.ts +54 -0
- package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/reminders.js +624 -0
- package/dist/connectors/telegram/commands/reminders.js.map +1 -0
- package/dist/connectors/telegram/fileIntake.d.ts +166 -0
- package/dist/connectors/telegram/fileIntake.d.ts.map +1 -0
- package/dist/connectors/telegram/fileIntake.js +304 -0
- package/dist/connectors/telegram/fileIntake.js.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts +57 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.js +221 -0
- package/dist/connectors/telegram/fileSendGateway.js.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts +52 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js +71 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js.map +1 -0
- package/dist/connectors/telegram/inbound.d.ts +131 -0
- package/dist/connectors/telegram/inbound.d.ts.map +1 -0
- package/dist/connectors/telegram/inbound.js +278 -0
- package/dist/connectors/telegram/inbound.js.map +1 -0
- package/dist/connectors/telegram/languagePicker.d.ts +32 -0
- package/dist/connectors/telegram/languagePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/languagePicker.js +55 -0
- package/dist/connectors/telegram/languagePicker.js.map +1 -0
- package/dist/connectors/telegram/messageSplit.d.ts +62 -0
- package/dist/connectors/telegram/messageSplit.d.ts.map +1 -0
- package/dist/connectors/telegram/messageSplit.js +119 -0
- package/dist/connectors/telegram/messageSplit.js.map +1 -0
- package/dist/connectors/telegram/outbound.d.ts +62 -0
- package/dist/connectors/telegram/outbound.d.ts.map +1 -0
- package/dist/connectors/telegram/outbound.js +116 -0
- package/dist/connectors/telegram/outbound.js.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts +34 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.js +77 -0
- package/dist/connectors/telegram/output/createOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts +47 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js +412 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts +38 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.js +49 -0
- package/dist/connectors/telegram/outputBacklogGlue.js.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts +93 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.js +120 -0
- package/dist/connectors/telegram/outputFlushPlan.js.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts +30 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.js +37 -0
- package/dist/connectors/telegram/questionKeyboards.js.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts +27 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.js +97 -0
- package/dist/connectors/telegram/renderAgentHtml.js.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts +28 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.js +107 -0
- package/dist/connectors/telegram/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts +19 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.js +35 -0
- package/dist/connectors/telegram/telegramCallGuard.js.map +1 -0
- package/dist/connectors/telegram/timezonePicker.d.ts +85 -0
- package/dist/connectors/telegram/timezonePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/timezonePicker.js +142 -0
- package/dist/connectors/telegram/timezonePicker.js.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts +85 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.js +159 -0
- package/dist/connectors/telegram/updateDispatcher.js.map +1 -0
- package/dist/connectors/test/connector.d.ts +52 -0
- package/dist/connectors/test/connector.d.ts.map +1 -0
- package/dist/connectors/test/connector.js +143 -0
- package/dist/connectors/test/connector.js.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts +25 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.js +50 -0
- package/dist/connectors/test/sessionKeyCodec.js.map +1 -0
- package/dist/diagLog.d.ts +6 -0
- package/dist/diagLog.d.ts.map +1 -0
- package/dist/diagLog.js +58 -0
- package/dist/diagLog.js.map +1 -0
- package/dist/effortLevels.d.ts +68 -0
- package/dist/effortLevels.d.ts.map +1 -0
- package/dist/effortLevels.js +114 -0
- package/dist/effortLevels.js.map +1 -0
- package/dist/folderName.d.ts +42 -0
- package/dist/folderName.d.ts.map +1 -0
- package/dist/folderName.js +51 -0
- package/dist/folderName.js.map +1 -0
- package/dist/i18n/de.d.ts +2 -0
- package/dist/i18n/de.d.ts.map +1 -0
- package/dist/i18n/de.js +537 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en.d.ts +7 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +566 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/es.d.ts +2 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +537 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/fr.d.ts +2 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +537 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/hi.d.ts +2 -0
- package/dist/i18n/hi.d.ts.map +1 -0
- package/dist/i18n/hi.js +537 -0
- package/dist/i18n/hi.js.map +1 -0
- package/dist/i18n/ja.d.ts +2 -0
- package/dist/i18n/ja.d.ts.map +1 -0
- package/dist/i18n/ja.js +537 -0
- package/dist/i18n/ja.js.map +1 -0
- package/dist/i18n/ka.d.ts +2 -0
- package/dist/i18n/ka.d.ts.map +1 -0
- package/dist/i18n/ka.js +537 -0
- package/dist/i18n/ka.js.map +1 -0
- package/dist/i18n/pt.d.ts +2 -0
- package/dist/i18n/pt.d.ts.map +1 -0
- package/dist/i18n/pt.js +537 -0
- package/dist/i18n/pt.js.map +1 -0
- package/dist/i18n/ru.d.ts +6 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +540 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/i18n/uk.d.ts +8 -0
- package/dist/i18n/uk.d.ts.map +1 -0
- package/dist/i18n/uk.js +542 -0
- package/dist/i18n/uk.js.map +1 -0
- package/dist/i18n/uz.d.ts +2 -0
- package/dist/i18n/uz.d.ts.map +1 -0
- package/dist/i18n/uz.js +537 -0
- package/dist/i18n/uz.js.map +1 -0
- package/dist/i18n/zh.d.ts +2 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +537 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/i18n.d.ts +115 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +233 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/installManager.d.ts +99 -0
- package/dist/installManager.d.ts.map +1 -0
- package/dist/installManager.js +943 -0
- package/dist/installManager.js.map +1 -0
- package/dist/instanceLock.d.ts +161 -0
- package/dist/instanceLock.d.ts.map +1 -0
- package/dist/instanceLock.js +388 -0
- package/dist/instanceLock.js.map +1 -0
- package/dist/mcpConfig.d.ts +76 -0
- package/dist/mcpConfig.d.ts.map +1 -0
- package/dist/mcpConfig.js +270 -0
- package/dist/mcpConfig.js.map +1 -0
- package/dist/openCodeOpenQuestion.d.ts +44 -0
- package/dist/openCodeOpenQuestion.d.ts.map +1 -0
- package/dist/openCodeOpenQuestion.js +64 -0
- package/dist/openCodeOpenQuestion.js.map +1 -0
- package/dist/openCodeQuestionFlow.d.ts +105 -0
- package/dist/openCodeQuestionFlow.d.ts.map +1 -0
- package/dist/openCodeQuestionFlow.js +143 -0
- package/dist/openCodeQuestionFlow.js.map +1 -0
- package/dist/openCodeSessionRouting.d.ts +133 -0
- package/dist/openCodeSessionRouting.d.ts.map +1 -0
- package/dist/openCodeSessionRouting.js +253 -0
- package/dist/openCodeSessionRouting.js.map +1 -0
- package/dist/openCodeSessionTitle.d.ts +50 -0
- package/dist/openCodeSessionTitle.d.ts.map +1 -0
- package/dist/openCodeSessionTitle.js +84 -0
- package/dist/openCodeSessionTitle.js.map +1 -0
- package/dist/outputTrace.d.ts +108 -0
- package/dist/outputTrace.d.ts.map +1 -0
- package/dist/outputTrace.js +430 -0
- package/dist/outputTrace.js.map +1 -0
- package/dist/pendingQuestionRepost.d.ts +47 -0
- package/dist/pendingQuestionRepost.d.ts.map +1 -0
- package/dist/pendingQuestionRepost.js +29 -0
- package/dist/pendingQuestionRepost.js.map +1 -0
- package/dist/pinnedStatus.d.ts +52 -0
- package/dist/pinnedStatus.d.ts.map +1 -0
- package/dist/pinnedStatus.js +36 -0
- package/dist/pinnedStatus.js.map +1 -0
- package/dist/platform/answerSink.d.ts +93 -0
- package/dist/platform/answerSink.d.ts.map +1 -0
- package/dist/platform/answerSink.js +31 -0
- package/dist/platform/answerSink.js.map +1 -0
- package/dist/platform/capabilityFallback.d.ts +39 -0
- package/dist/platform/capabilityFallback.d.ts.map +1 -0
- package/dist/platform/capabilityFallback.js +55 -0
- package/dist/platform/capabilityFallback.js.map +1 -0
- package/dist/platform/commandRouter.d.ts +51 -0
- package/dist/platform/commandRouter.d.ts.map +1 -0
- package/dist/platform/commandRouter.js +53 -0
- package/dist/platform/commandRouter.js.map +1 -0
- package/dist/platform/connectorSet.d.ts +39 -0
- package/dist/platform/connectorSet.d.ts.map +1 -0
- package/dist/platform/connectorSet.js +55 -0
- package/dist/platform/connectorSet.js.map +1 -0
- package/dist/platform/inbound.d.ts +147 -0
- package/dist/platform/inbound.d.ts.map +1 -0
- package/dist/platform/inbound.js +18 -0
- package/dist/platform/inbound.js.map +1 -0
- package/dist/platform/outbound.d.ts +225 -0
- package/dist/platform/outbound.d.ts.map +1 -0
- package/dist/platform/outbound.js +30 -0
- package/dist/platform/outbound.js.map +1 -0
- package/dist/platform/unservedStateGuard.d.ts +27 -0
- package/dist/platform/unservedStateGuard.d.ts.map +1 -0
- package/dist/platform/unservedStateGuard.js +42 -0
- package/dist/platform/unservedStateGuard.js.map +1 -0
- package/dist/postToSession.d.ts +94 -0
- package/dist/postToSession.d.ts.map +1 -0
- package/dist/postToSession.js +56 -0
- package/dist/postToSession.js.map +1 -0
- package/dist/progressLine.d.ts +180 -0
- package/dist/progressLine.d.ts.map +1 -0
- package/dist/progressLine.js +293 -0
- package/dist/progressLine.js.map +1 -0
- package/dist/rateLimiter.d.ts +246 -0
- package/dist/rateLimiter.d.ts.map +1 -0
- package/dist/rateLimiter.js +555 -0
- package/dist/rateLimiter.js.map +1 -0
- package/dist/requests/answerRequest.d.ts +57 -0
- package/dist/requests/answerRequest.d.ts.map +1 -0
- package/dist/requests/answerRequest.js +96 -0
- package/dist/requests/answerRequest.js.map +1 -0
- package/dist/requests/answerTail.d.ts +83 -0
- package/dist/requests/answerTail.d.ts.map +1 -0
- package/dist/requests/answerTail.js +102 -0
- package/dist/requests/answerTail.js.map +1 -0
- package/dist/requests/limitWaitAnswer.d.ts +87 -0
- package/dist/requests/limitWaitAnswer.d.ts.map +1 -0
- package/dist/requests/limitWaitAnswer.js +83 -0
- package/dist/requests/limitWaitAnswer.js.map +1 -0
- package/dist/requests/requestGroup.d.ts +44 -0
- package/dist/requests/requestGroup.d.ts.map +1 -0
- package/dist/requests/requestGroup.js +63 -0
- package/dist/requests/requestGroup.js.map +1 -0
- package/dist/requests/requestHeader.d.ts +70 -0
- package/dist/requests/requestHeader.d.ts.map +1 -0
- package/dist/requests/requestHeader.js +83 -0
- package/dist/requests/requestHeader.js.map +1 -0
- package/dist/requests/requestLedger.d.ts +217 -0
- package/dist/requests/requestLedger.d.ts.map +1 -0
- package/dist/requests/requestLedger.js +468 -0
- package/dist/requests/requestLedger.js.map +1 -0
- package/dist/requests/sessionTurnProbe.d.ts +52 -0
- package/dist/requests/sessionTurnProbe.d.ts.map +1 -0
- package/dist/requests/sessionTurnProbe.js +29 -0
- package/dist/requests/sessionTurnProbe.js.map +1 -0
- package/dist/requests/types.d.ts +181 -0
- package/dist/requests/types.d.ts.map +1 -0
- package/dist/requests/types.js +9 -0
- package/dist/requests/types.js.map +1 -0
- package/dist/requests/wakeUpEngine.d.ts +160 -0
- package/dist/requests/wakeUpEngine.d.ts.map +1 -0
- package/dist/requests/wakeUpEngine.js +399 -0
- package/dist/requests/wakeUpEngine.js.map +1 -0
- package/dist/requests/wakeUpRules.d.ts +151 -0
- package/dist/requests/wakeUpRules.d.ts.map +1 -0
- package/dist/requests/wakeUpRules.js +167 -0
- package/dist/requests/wakeUpRules.js.map +1 -0
- package/dist/resumeContext.d.ts +87 -0
- package/dist/resumeContext.d.ts.map +1 -0
- package/dist/resumeContext.js +114 -0
- package/dist/resumeContext.js.map +1 -0
- package/dist/scheduler/checkRun.d.ts +95 -0
- package/dist/scheduler/checkRun.d.ts.map +1 -0
- package/dist/scheduler/checkRun.js +172 -0
- package/dist/scheduler/checkRun.js.map +1 -0
- package/dist/scheduler/delivery.d.ts +99 -0
- package/dist/scheduler/delivery.d.ts.map +1 -0
- package/dist/scheduler/delivery.js +212 -0
- package/dist/scheduler/delivery.js.map +1 -0
- package/dist/scheduler/deliveryKind.d.ts +29 -0
- package/dist/scheduler/deliveryKind.d.ts.map +1 -0
- package/dist/scheduler/deliveryKind.js +39 -0
- package/dist/scheduler/deliveryKind.js.map +1 -0
- package/dist/scheduler/directoryThreads.d.ts +19 -0
- package/dist/scheduler/directoryThreads.d.ts.map +1 -0
- package/dist/scheduler/directoryThreads.js +28 -0
- package/dist/scheduler/directoryThreads.js.map +1 -0
- package/dist/scheduler/engine.d.ts +77 -0
- package/dist/scheduler/engine.d.ts.map +1 -0
- package/dist/scheduler/engine.js +337 -0
- package/dist/scheduler/engine.js.map +1 -0
- package/dist/scheduler/injection.d.ts +102 -0
- package/dist/scheduler/injection.d.ts.map +1 -0
- package/dist/scheduler/injection.js +122 -0
- package/dist/scheduler/injection.js.map +1 -0
- package/dist/scheduler/mcpBoot.d.ts +65 -0
- package/dist/scheduler/mcpBoot.d.ts.map +1 -0
- package/dist/scheduler/mcpBoot.js +60 -0
- package/dist/scheduler/mcpBoot.js.map +1 -0
- package/dist/scheduler/mcpSurface.d.ts +355 -0
- package/dist/scheduler/mcpSurface.d.ts.map +1 -0
- package/dist/scheduler/mcpSurface.js +1257 -0
- package/dist/scheduler/mcpSurface.js.map +1 -0
- package/dist/scheduler/rebindResume.d.ts +27 -0
- package/dist/scheduler/rebindResume.d.ts.map +1 -0
- package/dist/scheduler/rebindResume.js +17 -0
- package/dist/scheduler/rebindResume.js.map +1 -0
- package/dist/scheduler/recurrence.d.ts +58 -0
- package/dist/scheduler/recurrence.d.ts.map +1 -0
- package/dist/scheduler/recurrence.js +210 -0
- package/dist/scheduler/recurrence.js.map +1 -0
- package/dist/scheduler/runLedger.d.ts +59 -0
- package/dist/scheduler/runLedger.d.ts.map +1 -0
- package/dist/scheduler/runLedger.js +54 -0
- package/dist/scheduler/runLedger.js.map +1 -0
- package/dist/scheduler/store.d.ts +97 -0
- package/dist/scheduler/store.d.ts.map +1 -0
- package/dist/scheduler/store.js +124 -0
- package/dist/scheduler/store.js.map +1 -0
- package/dist/scheduler/timezoneRecompute.d.ts +61 -0
- package/dist/scheduler/timezoneRecompute.d.ts.map +1 -0
- package/dist/scheduler/timezoneRecompute.js +46 -0
- package/dist/scheduler/timezoneRecompute.js.map +1 -0
- package/dist/scheduler/types.d.ts +139 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +8 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/sendErrorClassifier.d.ts +45 -0
- package/dist/sendErrorClassifier.d.ts.map +1 -0
- package/dist/sendErrorClassifier.js +65 -0
- package/dist/sendErrorClassifier.js.map +1 -0
- package/dist/sessionKey.d.ts +136 -0
- package/dist/sessionKey.d.ts.map +1 -0
- package/dist/sessionKey.js +153 -0
- package/dist/sessionKey.js.map +1 -0
- package/dist/sessionPick.d.ts +42 -0
- package/dist/sessionPick.d.ts.map +1 -0
- package/dist/sessionPick.js +39 -0
- package/dist/sessionPick.js.map +1 -0
- package/dist/shutdown.d.ts +126 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +164 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/startupPromptBuffer.d.ts +85 -0
- package/dist/startupPromptBuffer.d.ts.map +1 -0
- package/dist/startupPromptBuffer.js +123 -0
- package/dist/startupPromptBuffer.js.map +1 -0
- package/dist/state.d.ts +1245 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +1830 -0
- package/dist/state.js.map +1 -0
- package/dist/threadContextPreamble.d.ts +89 -0
- package/dist/threadContextPreamble.d.ts.map +1 -0
- package/dist/threadContextPreamble.js +102 -0
- package/dist/threadContextPreamble.js.map +1 -0
- package/dist/threadRouting.d.ts +164 -0
- package/dist/threadRouting.d.ts.map +1 -0
- package/dist/threadRouting.js +182 -0
- package/dist/threadRouting.js.map +1 -0
- package/dist/types.d.ts +1015 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/abortableFifo.d.ts +10 -0
- package/dist/utils/abortableFifo.d.ts.map +1 -0
- package/dist/utils/abortableFifo.js +55 -0
- package/dist/utils/abortableFifo.js.map +1 -0
- package/dist/utils/adoptedToolList.d.ts +27 -0
- package/dist/utils/adoptedToolList.d.ts.map +1 -0
- package/dist/utils/adoptedToolList.js +22 -0
- package/dist/utils/adoptedToolList.js.map +1 -0
- package/dist/utils/agentEnvironment.d.ts +42 -0
- package/dist/utils/agentEnvironment.d.ts.map +1 -0
- package/dist/utils/agentEnvironment.js +122 -0
- package/dist/utils/agentEnvironment.js.map +1 -0
- package/dist/utils/ansiClean.d.ts +11 -0
- package/dist/utils/ansiClean.d.ts.map +1 -0
- package/dist/utils/ansiClean.js +139 -0
- package/dist/utils/ansiClean.js.map +1 -0
- package/dist/utils/autoContinueOnLimit.d.ts +49 -0
- package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
- package/dist/utils/autoContinueOnLimit.js +69 -0
- package/dist/utils/autoContinueOnLimit.js.map +1 -0
- package/dist/utils/canonicalPathContainment.d.ts +7 -0
- package/dist/utils/canonicalPathContainment.d.ts.map +1 -0
- package/dist/utils/canonicalPathContainment.js +48 -0
- package/dist/utils/canonicalPathContainment.js.map +1 -0
- package/dist/utils/claudeAuthLogin.d.ts +71 -0
- package/dist/utils/claudeAuthLogin.d.ts.map +1 -0
- package/dist/utils/claudeAuthLogin.js +93 -0
- package/dist/utils/claudeAuthLogin.js.map +1 -0
- package/dist/utils/claudeChunkClassifier.d.ts +97 -0
- package/dist/utils/claudeChunkClassifier.d.ts.map +1 -0
- package/dist/utils/claudeChunkClassifier.js +254 -0
- package/dist/utils/claudeChunkClassifier.js.map +1 -0
- package/dist/utils/claudeCodeVersion.d.ts +31 -0
- package/dist/utils/claudeCodeVersion.d.ts.map +1 -0
- package/dist/utils/claudeCodeVersion.js +62 -0
- package/dist/utils/claudeCodeVersion.js.map +1 -0
- package/dist/utils/claudeCompactHook.d.ts +64 -0
- package/dist/utils/claudeCompactHook.d.ts.map +1 -0
- package/dist/utils/claudeCompactHook.js +98 -0
- package/dist/utils/claudeCompactHook.js.map +1 -0
- package/dist/utils/claudeLivenessAction.d.ts +208 -0
- package/dist/utils/claudeLivenessAction.d.ts.map +1 -0
- package/dist/utils/claudeLivenessAction.js +135 -0
- package/dist/utils/claudeLivenessAction.js.map +1 -0
- package/dist/utils/claudeMcpHeal.d.ts +92 -0
- package/dist/utils/claudeMcpHeal.d.ts.map +1 -0
- package/dist/utils/claudeMcpHeal.js +91 -0
- package/dist/utils/claudeMcpHeal.js.map +1 -0
- package/dist/utils/claudeRelayRouting.d.ts +86 -0
- package/dist/utils/claudeRelayRouting.d.ts.map +1 -0
- package/dist/utils/claudeRelayRouting.js +159 -0
- package/dist/utils/claudeRelayRouting.js.map +1 -0
- package/dist/utils/claudeRuntimeInfo.d.ts +26 -0
- package/dist/utils/claudeRuntimeInfo.d.ts.map +1 -0
- package/dist/utils/claudeRuntimeInfo.js +151 -0
- package/dist/utils/claudeRuntimeInfo.js.map +1 -0
- package/dist/utils/claudeScrapeShapes.d.ts +256 -0
- package/dist/utils/claudeScrapeShapes.d.ts.map +1 -0
- package/dist/utils/claudeScrapeShapes.js +290 -0
- package/dist/utils/claudeScrapeShapes.js.map +1 -0
- package/dist/utils/claudeSessionTitle.d.ts +27 -0
- package/dist/utils/claudeSessionTitle.d.ts.map +1 -0
- package/dist/utils/claudeSessionTitle.js +90 -0
- package/dist/utils/claudeSessionTitle.js.map +1 -0
- package/dist/utils/claudeStreamJson.d.ts +202 -0
- package/dist/utils/claudeStreamJson.d.ts.map +1 -0
- package/dist/utils/claudeStreamJson.js +351 -0
- package/dist/utils/claudeStreamJson.js.map +1 -0
- package/dist/utils/claudeSubagentTail.d.ts +93 -0
- package/dist/utils/claudeSubagentTail.d.ts.map +1 -0
- package/dist/utils/claudeSubagentTail.js +136 -0
- package/dist/utils/claudeSubagentTail.js.map +1 -0
- package/dist/utils/clearThreadOutputQueues.d.ts +43 -0
- package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -0
- package/dist/utils/clearThreadOutputQueues.js +39 -0
- package/dist/utils/clearThreadOutputQueues.js.map +1 -0
- package/dist/utils/compactCommandRoute.d.ts +45 -0
- package/dist/utils/compactCommandRoute.d.ts.map +1 -0
- package/dist/utils/compactCommandRoute.js +36 -0
- package/dist/utils/compactCommandRoute.js.map +1 -0
- package/dist/utils/compactOnIdle.d.ts +329 -0
- package/dist/utils/compactOnIdle.d.ts.map +1 -0
- package/dist/utils/compactOnIdle.js +379 -0
- package/dist/utils/compactOnIdle.js.map +1 -0
- package/dist/utils/consoleFileTap.d.ts +51 -0
- package/dist/utils/consoleFileTap.d.ts.map +1 -0
- package/dist/utils/consoleFileTap.js +86 -0
- package/dist/utils/consoleFileTap.js.map +1 -0
- package/dist/utils/displayVerbosity.d.ts +44 -0
- package/dist/utils/displayVerbosity.d.ts.map +1 -0
- package/dist/utils/displayVerbosity.js +75 -0
- package/dist/utils/displayVerbosity.js.map +1 -0
- package/dist/utils/download.d.ts +72 -0
- package/dist/utils/download.d.ts.map +1 -0
- package/dist/utils/download.js +216 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/draftFinalize.d.ts +110 -0
- package/dist/utils/draftFinalize.d.ts.map +1 -0
- package/dist/utils/draftFinalize.js +100 -0
- package/dist/utils/draftFinalize.js.map +1 -0
- package/dist/utils/draftId.d.ts +36 -0
- package/dist/utils/draftId.d.ts.map +1 -0
- package/dist/utils/draftId.js +46 -0
- package/dist/utils/draftId.js.map +1 -0
- package/dist/utils/draftPacer.d.ts +72 -0
- package/dist/utils/draftPacer.d.ts.map +1 -0
- package/dist/utils/draftPacer.js +53 -0
- package/dist/utils/draftPacer.js.map +1 -0
- package/dist/utils/effortStartupKeystroke.d.ts +20 -0
- package/dist/utils/effortStartupKeystroke.d.ts.map +1 -0
- package/dist/utils/effortStartupKeystroke.js +28 -0
- package/dist/utils/effortStartupKeystroke.js.map +1 -0
- package/dist/utils/ensureSessionPlan.d.ts +70 -0
- package/dist/utils/ensureSessionPlan.d.ts.map +1 -0
- package/dist/utils/ensureSessionPlan.js +54 -0
- package/dist/utils/ensureSessionPlan.js.map +1 -0
- package/dist/utils/fileSendPlan.d.ts +217 -0
- package/dist/utils/fileSendPlan.d.ts.map +1 -0
- package/dist/utils/fileSendPlan.js +291 -0
- package/dist/utils/fileSendPlan.js.map +1 -0
- package/dist/utils/fileSendService.d.ts +94 -0
- package/dist/utils/fileSendService.d.ts.map +1 -0
- package/dist/utils/fileSendService.js +387 -0
- package/dist/utils/fileSendService.js.map +1 -0
- package/dist/utils/groupFinalizePlan.d.ts +38 -0
- package/dist/utils/groupFinalizePlan.d.ts.map +1 -0
- package/dist/utils/groupFinalizePlan.js +35 -0
- package/dist/utils/groupFinalizePlan.js.map +1 -0
- package/dist/utils/identicalOutputGuard.d.ts +83 -0
- package/dist/utils/identicalOutputGuard.d.ts.map +1 -0
- package/dist/utils/identicalOutputGuard.js +99 -0
- package/dist/utils/identicalOutputGuard.js.map +1 -0
- package/dist/utils/isoTimestamp.d.ts +16 -0
- package/dist/utils/isoTimestamp.d.ts.map +1 -0
- package/dist/utils/isoTimestamp.js +34 -0
- package/dist/utils/isoTimestamp.js.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts +130 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.js +122 -0
- package/dist/utils/jsonStreamBusyWatchdog.js.map +1 -0
- package/dist/utils/jsonStreamHost.d.ts +227 -0
- package/dist/utils/jsonStreamHost.d.ts.map +1 -0
- package/dist/utils/jsonStreamHost.js +417 -0
- package/dist/utils/jsonStreamHost.js.map +1 -0
- package/dist/utils/keyedTransitionQueue.d.ts +18 -0
- package/dist/utils/keyedTransitionQueue.d.ts.map +1 -0
- package/dist/utils/keyedTransitionQueue.js +34 -0
- package/dist/utils/keyedTransitionQueue.js.map +1 -0
- package/dist/utils/limitEpisodeRecovery.d.ts +92 -0
- package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -0
- package/dist/utils/limitEpisodeRecovery.js +133 -0
- package/dist/utils/limitEpisodeRecovery.js.map +1 -0
- package/dist/utils/limitHeldPromptQueue.d.ts +48 -0
- package/dist/utils/limitHeldPromptQueue.d.ts.map +1 -0
- package/dist/utils/limitHeldPromptQueue.js +59 -0
- package/dist/utils/limitHeldPromptQueue.js.map +1 -0
- package/dist/utils/limitHeldPrompts.d.ts +58 -0
- package/dist/utils/limitHeldPrompts.d.ts.map +1 -0
- package/dist/utils/limitHeldPrompts.js +65 -0
- package/dist/utils/limitHeldPrompts.js.map +1 -0
- package/dist/utils/linkPreviewSuppression.d.ts +18 -0
- package/dist/utils/linkPreviewSuppression.d.ts.map +1 -0
- package/dist/utils/linkPreviewSuppression.js +37 -0
- package/dist/utils/linkPreviewSuppression.js.map +1 -0
- package/dist/utils/localClock.d.ts +15 -0
- package/dist/utils/localClock.d.ts.map +1 -0
- package/dist/utils/localClock.js +29 -0
- package/dist/utils/localClock.js.map +1 -0
- package/dist/utils/markdownTableRender.d.ts +83 -0
- package/dist/utils/markdownTableRender.d.ts.map +1 -0
- package/dist/utils/markdownTableRender.js +298 -0
- package/dist/utils/markdownTableRender.js.map +1 -0
- package/dist/utils/mediaGroupCollector.d.ts +51 -0
- package/dist/utils/mediaGroupCollector.d.ts.map +1 -0
- package/dist/utils/mediaGroupCollector.js +90 -0
- package/dist/utils/mediaGroupCollector.js.map +1 -0
- package/dist/utils/messageSendService.d.ts +136 -0
- package/dist/utils/messageSendService.d.ts.map +1 -0
- package/dist/utils/messageSendService.js +165 -0
- package/dist/utils/messageSendService.js.map +1 -0
- package/dist/utils/minutesOverride.d.ts +7 -0
- package/dist/utils/minutesOverride.d.ts.map +1 -0
- package/dist/utils/minutesOverride.js +16 -0
- package/dist/utils/minutesOverride.js.map +1 -0
- package/dist/utils/modelPickerPlan.d.ts +119 -0
- package/dist/utils/modelPickerPlan.d.ts.map +1 -0
- package/dist/utils/modelPickerPlan.js +171 -0
- package/dist/utils/modelPickerPlan.js.map +1 -0
- package/dist/utils/modelSetReplyDecision.d.ts +67 -0
- package/dist/utils/modelSetReplyDecision.d.ts.map +1 -0
- package/dist/utils/modelSetReplyDecision.js +27 -0
- package/dist/utils/modelSetReplyDecision.js.map +1 -0
- package/dist/utils/openCodeAuthLogin.d.ts +181 -0
- package/dist/utils/openCodeAuthLogin.d.ts.map +1 -0
- package/dist/utils/openCodeAuthLogin.js +393 -0
- package/dist/utils/openCodeAuthLogin.js.map +1 -0
- package/dist/utils/openCodeCompactPlugin.d.ts +81 -0
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -0
- package/dist/utils/openCodeCompactPlugin.js +146 -0
- package/dist/utils/openCodeCompactPlugin.js.map +1 -0
- package/dist/utils/openCodeTurnActivity.d.ts +67 -0
- package/dist/utils/openCodeTurnActivity.d.ts.map +1 -0
- package/dist/utils/openCodeTurnActivity.js +27 -0
- package/dist/utils/openCodeTurnActivity.js.map +1 -0
- package/dist/utils/outputDebounce.d.ts +24 -0
- package/dist/utils/outputDebounce.d.ts.map +1 -0
- package/dist/utils/outputDebounce.js +30 -0
- package/dist/utils/outputDebounce.js.map +1 -0
- package/dist/utils/outputFlushTiming.d.ts +54 -0
- package/dist/utils/outputFlushTiming.d.ts.map +1 -0
- package/dist/utils/outputFlushTiming.js +48 -0
- package/dist/utils/outputFlushTiming.js.map +1 -0
- package/dist/utils/paginateList.d.ts +25 -0
- package/dist/utils/paginateList.d.ts.map +1 -0
- package/dist/utils/paginateList.js +32 -0
- package/dist/utils/paginateList.js.map +1 -0
- package/dist/utils/paneDiff.d.ts +55 -0
- package/dist/utils/paneDiff.d.ts.map +1 -0
- package/dist/utils/paneDiff.js +88 -0
- package/dist/utils/paneDiff.js.map +1 -0
- package/dist/utils/paneResizeGuard.d.ts +69 -0
- package/dist/utils/paneResizeGuard.d.ts.map +1 -0
- package/dist/utils/paneResizeGuard.js +91 -0
- package/dist/utils/paneResizeGuard.js.map +1 -0
- package/dist/utils/persistAdapterSessionIds.d.ts +39 -0
- package/dist/utils/persistAdapterSessionIds.d.ts.map +1 -0
- package/dist/utils/persistAdapterSessionIds.js +28 -0
- package/dist/utils/persistAdapterSessionIds.js.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts +44 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.js +20 -0
- package/dist/utils/pinnedBannerSkipDecision.js.map +1 -0
- package/dist/utils/pollBackoff.d.ts +45 -0
- package/dist/utils/pollBackoff.d.ts.map +1 -0
- package/dist/utils/pollBackoff.js +44 -0
- package/dist/utils/pollBackoff.js.map +1 -0
- package/dist/utils/promptDelivery.d.ts +46 -0
- package/dist/utils/promptDelivery.d.ts.map +1 -0
- package/dist/utils/promptDelivery.js +49 -0
- package/dist/utils/promptDelivery.js.map +1 -0
- package/dist/utils/providerDisconnectPlan.d.ts +82 -0
- package/dist/utils/providerDisconnectPlan.d.ts.map +1 -0
- package/dist/utils/providerDisconnectPlan.js +110 -0
- package/dist/utils/providerDisconnectPlan.js.map +1 -0
- package/dist/utils/rateLimitLog.d.ts +48 -0
- package/dist/utils/rateLimitLog.d.ts.map +1 -0
- package/dist/utils/rateLimitLog.js +43 -0
- package/dist/utils/rateLimitLog.js.map +1 -0
- package/dist/utils/recentRelayWindow.d.ts +165 -0
- package/dist/utils/recentRelayWindow.d.ts.map +1 -0
- package/dist/utils/recentRelayWindow.js +284 -0
- package/dist/utils/recentRelayWindow.js.map +1 -0
- package/dist/utils/recvPreviewRedaction.d.ts +23 -0
- package/dist/utils/recvPreviewRedaction.d.ts.map +1 -0
- package/dist/utils/recvPreviewRedaction.js +39 -0
- package/dist/utils/recvPreviewRedaction.js.map +1 -0
- package/dist/utils/reminderFlow.d.ts +148 -0
- package/dist/utils/reminderFlow.d.ts.map +1 -0
- package/dist/utils/reminderFlow.js +122 -0
- package/dist/utils/reminderFlow.js.map +1 -0
- package/dist/utils/reminderScheduleText.d.ts +87 -0
- package/dist/utils/reminderScheduleText.d.ts.map +1 -0
- package/dist/utils/reminderScheduleText.js +135 -0
- package/dist/utils/reminderScheduleText.js.map +1 -0
- package/dist/utils/reminderWizard.d.ts +710 -0
- package/dist/utils/reminderWizard.d.ts.map +1 -0
- package/dist/utils/reminderWizard.js +1164 -0
- package/dist/utils/reminderWizard.js.map +1 -0
- package/dist/utils/replyQuote.d.ts +111 -0
- package/dist/utils/replyQuote.d.ts.map +1 -0
- package/dist/utils/replyQuote.js +122 -0
- package/dist/utils/replyQuote.js.map +1 -0
- package/dist/utils/resolveBinary.d.ts +25 -0
- package/dist/utils/resolveBinary.d.ts.map +1 -0
- package/dist/utils/resolveBinary.js +99 -0
- package/dist/utils/resolveBinary.js.map +1 -0
- package/dist/utils/retryAfterHeader.d.ts +7 -0
- package/dist/utils/retryAfterHeader.d.ts.map +1 -0
- package/dist/utils/retryAfterHeader.js +17 -0
- package/dist/utils/retryAfterHeader.js.map +1 -0
- package/dist/utils/rotatingJsonlFile.d.ts +40 -0
- package/dist/utils/rotatingJsonlFile.d.ts.map +1 -0
- package/dist/utils/rotatingJsonlFile.js +106 -0
- package/dist/utils/rotatingJsonlFile.js.map +1 -0
- package/dist/utils/rotatingLogFile.d.ts +25 -0
- package/dist/utils/rotatingLogFile.d.ts.map +1 -0
- package/dist/utils/rotatingLogFile.js +74 -0
- package/dist/utils/rotatingLogFile.js.map +1 -0
- package/dist/utils/sendRateTracker.d.ts +59 -0
- package/dist/utils/sendRateTracker.d.ts.map +1 -0
- package/dist/utils/sendRateTracker.js +144 -0
- package/dist/utils/sendRateTracker.js.map +1 -0
- package/dist/utils/serialQueue.d.ts +5 -0
- package/dist/utils/serialQueue.d.ts.map +1 -0
- package/dist/utils/serialQueue.js +14 -0
- package/dist/utils/serialQueue.js.map +1 -0
- package/dist/utils/sseStreamLifecycle.d.ts +32 -0
- package/dist/utils/sseStreamLifecycle.d.ts.map +1 -0
- package/dist/utils/sseStreamLifecycle.js +41 -0
- package/dist/utils/sseStreamLifecycle.js.map +1 -0
- package/dist/utils/startupReadiness.d.ts +119 -0
- package/dist/utils/startupReadiness.d.ts.map +1 -0
- package/dist/utils/startupReadiness.js +148 -0
- package/dist/utils/startupReadiness.js.map +1 -0
- package/dist/utils/statusFlushDecision.d.ts +18 -0
- package/dist/utils/statusFlushDecision.d.ts.map +1 -0
- package/dist/utils/statusFlushDecision.js +53 -0
- package/dist/utils/statusFlushDecision.js.map +1 -0
- package/dist/utils/subagentRender.d.ts +52 -0
- package/dist/utils/subagentRender.d.ts.map +1 -0
- package/dist/utils/subagentRender.js +66 -0
- package/dist/utils/subagentRender.js.map +1 -0
- package/dist/utils/subagentStatusRender.d.ts +90 -0
- package/dist/utils/subagentStatusRender.d.ts.map +1 -0
- package/dist/utils/subagentStatusRender.js +124 -0
- package/dist/utils/subagentStatusRender.js.map +1 -0
- package/dist/utils/telegramError.d.ts +2 -0
- package/dist/utils/telegramError.d.ts.map +1 -0
- package/dist/utils/telegramError.js +16 -0
- package/dist/utils/telegramError.js.map +1 -0
- package/dist/utils/terminalEmitPlan.d.ts +74 -0
- package/dist/utils/terminalEmitPlan.d.ts.map +1 -0
- package/dist/utils/terminalEmitPlan.js +86 -0
- package/dist/utils/terminalEmitPlan.js.map +1 -0
- package/dist/utils/thinkingRender.d.ts +74 -0
- package/dist/utils/thinkingRender.d.ts.map +1 -0
- package/dist/utils/thinkingRender.js +85 -0
- package/dist/utils/thinkingRender.js.map +1 -0
- package/dist/utils/threadStatusReport.d.ts +55 -0
- package/dist/utils/threadStatusReport.d.ts.map +1 -0
- package/dist/utils/threadStatusReport.js +65 -0
- package/dist/utils/threadStatusReport.js.map +1 -0
- package/dist/utils/threadToggle.d.ts +29 -0
- package/dist/utils/threadToggle.d.ts.map +1 -0
- package/dist/utils/threadToggle.js +39 -0
- package/dist/utils/threadToggle.js.map +1 -0
- package/dist/utils/timezone.d.ts +125 -0
- package/dist/utils/timezone.d.ts.map +1 -0
- package/dist/utils/timezone.js +278 -0
- package/dist/utils/timezone.js.map +1 -0
- package/dist/utils/tmuxExec.d.ts +61 -0
- package/dist/utils/tmuxExec.d.ts.map +1 -0
- package/dist/utils/tmuxExec.js +109 -0
- package/dist/utils/tmuxExec.js.map +1 -0
- package/dist/utils/tmuxSessionName.d.ts +34 -0
- package/dist/utils/tmuxSessionName.d.ts.map +1 -0
- package/dist/utils/tmuxSessionName.js +51 -0
- package/dist/utils/tmuxSessionName.js.map +1 -0
- package/dist/utils/toolResultRender.d.ts +61 -0
- package/dist/utils/toolResultRender.d.ts.map +1 -0
- package/dist/utils/toolResultRender.js +62 -0
- package/dist/utils/toolResultRender.js.map +1 -0
- package/dist/utils/topicRequest.d.ts +61 -0
- package/dist/utils/topicRequest.d.ts.map +1 -0
- package/dist/utils/topicRequest.js +68 -0
- package/dist/utils/topicRequest.js.map +1 -0
- package/dist/utils/topicView.d.ts +55 -0
- package/dist/utils/topicView.d.ts.map +1 -0
- package/dist/utils/topicView.js +56 -0
- package/dist/utils/topicView.js.map +1 -0
- package/dist/utils/transcribeAudio.d.ts +89 -0
- package/dist/utils/transcribeAudio.d.ts.map +1 -0
- package/dist/utils/transcribeAudio.js +249 -0
- package/dist/utils/transcribeAudio.js.map +1 -0
- package/dist/utils/transientFrames.d.ts +52 -0
- package/dist/utils/transientFrames.d.ts.map +1 -0
- package/dist/utils/transientFrames.js +41 -0
- package/dist/utils/transientFrames.js.map +1 -0
- package/dist/utils/typingActive.d.ts +35 -0
- package/dist/utils/typingActive.d.ts.map +1 -0
- package/dist/utils/typingActive.js +22 -0
- package/dist/utils/typingActive.js.map +1 -0
- package/dist/utils/typingLoopBackstop.d.ts +64 -0
- package/dist/utils/typingLoopBackstop.d.ts.map +1 -0
- package/dist/utils/typingLoopBackstop.js +68 -0
- package/dist/utils/typingLoopBackstop.js.map +1 -0
- package/dist/utils/verbosityRender.d.ts +18 -0
- package/dist/utils/verbosityRender.d.ts.map +1 -0
- package/dist/utils/verbosityRender.js +17 -0
- package/dist/utils/verbosityRender.js.map +1 -0
- package/dist/utils/wedgeRecovery.d.ts +57 -0
- package/dist/utils/wedgeRecovery.d.ts.map +1 -0
- package/dist/utils/wedgeRecovery.js +24 -0
- package/dist/utils/wedgeRecovery.js.map +1 -0
- package/dist/utils.d.ts +30 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +61 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.d.ts +113 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +226 -0
- package/dist/validation.js.map +1 -0
- package/dist/voiceQueue.d.ts +7 -0
- package/dist/voiceQueue.d.ts.map +1 -0
- package/dist/voiceQueue.js +33 -0
- package/dist/voiceQueue.js.map +1 -0
- package/examples/.env.example +17 -0
- package/examples/docker-compose.yml +36 -0
- package/package.json +83 -4
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.maxRemindersPerThread = exports.maxSchedulesPerThread = void 0;
|
|
4
|
+
exports.slugify = slugify;
|
|
5
|
+
exports.generateScheduleId = generateScheduleId;
|
|
6
|
+
exports.createScheduleRecord = createScheduleRecord;
|
|
7
|
+
exports.createScheduleForThread = createScheduleForThread;
|
|
8
|
+
const node_crypto_1 = require("node:crypto");
|
|
9
|
+
const sessionKey_1 = require("../sessionKey");
|
|
10
|
+
const deliveryKind_1 = require("./deliveryKind");
|
|
11
|
+
const recurrence_1 = require("./recurrence");
|
|
12
|
+
/**
|
|
13
|
+
* @description Scheduler store helpers — id generation and the cap-enforcing
|
|
14
|
+
* create path. The persisted collection itself lives on {@link StateStore}
|
|
15
|
+
* (`schedules` field + getters/setters), following the `traceConfig` pattern;
|
|
16
|
+
* this module owns the bits the store shouldn't know about: how an id is
|
|
17
|
+
* minted from a name, and the per-thread cap of each delivery kind.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Hard cap on the AGENT's schedules per thread — prompt jobs (no `deliveryKind`)
|
|
21
|
+
* and checks, i.e. everything but reminders. Enforced in
|
|
22
|
+
* {@link createScheduleForThread}. This cap exists FOR the agent: `schedule_create`
|
|
23
|
+
* is in the model's hands and a looping one can mint junk jobs, so 30 is the muzzle.
|
|
24
|
+
*/
|
|
25
|
+
exports.maxSchedulesPerThread = 30;
|
|
26
|
+
/**
|
|
27
|
+
* Hard cap on `/reminders` schedules per thread, counted SEPARATELY from
|
|
28
|
+
* {@link maxSchedulesPerThread} so neither creator can eat the other's slots.
|
|
29
|
+
* It is far higher because a reminder costs four button taps — a human cannot
|
|
30
|
+
* mint 100 by accident — and bounded at all only because every record lives in
|
|
31
|
+
* the single `state.json` (rewritten whole on every change) and arms one timer at
|
|
32
|
+
* boot, so a runaway code path must not be able to write records without end.
|
|
33
|
+
*/
|
|
34
|
+
exports.maxRemindersPerThread = 100;
|
|
35
|
+
/** Length of the random suffix appended to a slug to keep ids unique. */
|
|
36
|
+
const idSuffixLength = 6;
|
|
37
|
+
/** Max characters kept from the slugified name before the suffix. */
|
|
38
|
+
const slugMaxLength = 40;
|
|
39
|
+
/**
|
|
40
|
+
* @description Turn a free-text name into a lowercase ascii-ish slug: lowercase,
|
|
41
|
+
* non-alphanumerics collapsed to single hyphens, edge hyphens trimmed, bounded
|
|
42
|
+
* length. Returns `'job'` as a stable fallback when nothing usable survives
|
|
43
|
+
* (e.g. a name of only emoji/punctuation) so an id is always well-formed.
|
|
44
|
+
*/
|
|
45
|
+
function slugify(name) {
|
|
46
|
+
const slug = name
|
|
47
|
+
.toLowerCase()
|
|
48
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
49
|
+
.replace(/^-+/, '')
|
|
50
|
+
.replace(/-+$/, '')
|
|
51
|
+
.slice(0, slugMaxLength)
|
|
52
|
+
.replace(/-+$/, '');
|
|
53
|
+
return slug || 'job';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* @description Mint a schedule id: `slugify(name)` + `-` + a 6-char lowercase
|
|
57
|
+
* alphanumeric random suffix. The suffix makes the id collision-resistant
|
|
58
|
+
* without the create-time uniqueness check the spec calls out as bad UX.
|
|
59
|
+
*/
|
|
60
|
+
function generateScheduleId(name) {
|
|
61
|
+
// base36 of random bytes yields [0-9a-z]; pad+slice to a fixed-length suffix.
|
|
62
|
+
const suffix = (0, node_crypto_1.randomBytes)(8).toString('hex');
|
|
63
|
+
const alnum = parseInt(suffix, 16).toString(36).padStart(idSuffixLength, '0').slice(-idSuffixLength);
|
|
64
|
+
return `${slugify(name)}-${alnum}`;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @description Build a fresh {@link ScheduleRecord} from its inputs, computing
|
|
68
|
+
* the initial `nextRunAt` for the spec. Pure (besides id randomness): callers
|
|
69
|
+
* pass `nowMs` so creation time and the first `nextRunAt` are deterministic in
|
|
70
|
+
* tests. Does NOT persist — the caller (or {@link createScheduleForThread})
|
|
71
|
+
* writes it to the store.
|
|
72
|
+
*/
|
|
73
|
+
function createScheduleRecord(args) {
|
|
74
|
+
const { threadKey, name, spec, prompt, createdBy, nowMs, lastAdapterName, isPinSilent } = args;
|
|
75
|
+
const nowIso = new Date(nowMs).toISOString();
|
|
76
|
+
const record = {
|
|
77
|
+
id: generateScheduleId(name),
|
|
78
|
+
threadKey: (0, sessionKey_1.keyToString)(threadKey),
|
|
79
|
+
name,
|
|
80
|
+
spec,
|
|
81
|
+
prompt,
|
|
82
|
+
createdBy,
|
|
83
|
+
createdAt: nowIso,
|
|
84
|
+
updatedAt: nowIso,
|
|
85
|
+
nextRunAt: (0, recurrence_1.getNextRunAt)(spec, nowMs),
|
|
86
|
+
};
|
|
87
|
+
if (lastAdapterName !== undefined)
|
|
88
|
+
record.lastAdapterName = lastAdapterName;
|
|
89
|
+
if (isPinSilent)
|
|
90
|
+
record.isPinSilent = true;
|
|
91
|
+
// Absent means the agent-prompt kind, so the field is written only when set.
|
|
92
|
+
if (args.deliveryKind !== undefined)
|
|
93
|
+
record.deliveryKind = args.deliveryKind;
|
|
94
|
+
if (args.checkCommand !== undefined)
|
|
95
|
+
record.checkCommand = args.checkCommand;
|
|
96
|
+
if (args.checkTimeoutSec !== undefined)
|
|
97
|
+
record.checkTimeoutSec = args.checkTimeoutSec;
|
|
98
|
+
return record;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* @description Create and persist a schedule for a thread, enforcing the cap of
|
|
102
|
+
* the record's OWN delivery kind: a reminder counts only the thread's reminders
|
|
103
|
+
* against {@link maxRemindersPerThread}, an agent-prompt job only the thread's
|
|
104
|
+
* agent-prompt jobs against {@link maxSchedulesPerThread}. Counting the kinds
|
|
105
|
+
* apart is what keeps each rejection actionable — a shared counter let the two
|
|
106
|
+
* steal slots from each other and told the agent it had hit a limit it could not
|
|
107
|
+
* reach, because `schedule_list` hides reminders and `schedule_cancel` refuses
|
|
108
|
+
* their ids. `limit` in the result is the one that actually applied, since callers
|
|
109
|
+
* render it.
|
|
110
|
+
*/
|
|
111
|
+
async function createScheduleForThread(store, args) {
|
|
112
|
+
const isReminder = (0, deliveryKind_1.checkIsReminderSchedule)(args);
|
|
113
|
+
const limit = isReminder ? exports.maxRemindersPerThread : exports.maxSchedulesPerThread;
|
|
114
|
+
const sameKindCount = store
|
|
115
|
+
.getThreadSchedules(args.threadKey)
|
|
116
|
+
.filter((record) => (0, deliveryKind_1.checkIsReminderSchedule)(record) === isReminder).length;
|
|
117
|
+
if (sameKindCount >= limit) {
|
|
118
|
+
return { ok: false, reason: 'cap-reached', limit };
|
|
119
|
+
}
|
|
120
|
+
const record = createScheduleRecord(args);
|
|
121
|
+
await store.upsertSchedule(record);
|
|
122
|
+
return { ok: true, record };
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/scheduler/store.ts"],"names":[],"mappings":";;;AAkDA,0BASC;AAOD,gDAKC;AAiCD,oDAqBC;AAuBD,0DAeC;AAnKD,6CAA0C;AAE1C,8CAA6D;AAC7D,iDAAyD;AACzD,6CAA4C;AAQ5C;;;;;;GAMG;AAEH;;;;;GAKG;AACU,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAExC;;;;;;;GAOG;AACU,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAEzC,yEAAyE;AACzE,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,qEAAqE;AACrE,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB;;;;;GAKG;AACH,SAAgB,OAAO,CAAC,IAAY;IAClC,MAAM,IAAI,GAAG,IAAI;SACd,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtB,OAAO,IAAI,IAAI,KAAK,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,8EAA8E;IAC9E,MAAM,MAAM,GAAG,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC;IACrG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;AACrC,CAAC;AA0BD;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,IAAwB;IAC3D,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC/F,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAmB;QAC7B,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC;QAC5B,SAAS,EAAE,IAAA,wBAAW,EAAC,SAAS,CAAC;QACjC,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,SAAS;QACT,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,IAAA,yBAAY,EAAC,IAAI,EAAE,KAAK,CAAC;KACrC,CAAC;IACF,IAAI,eAAe,KAAK,SAAS;QAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;IAC5E,IAAI,WAAW;QAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IAC3C,6EAA6E;IAC7E,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IAC7E,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IAC7E,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;QAAE,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IACtF,OAAO,MAAM,CAAC;AAChB,CAAC;AAYD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,uBAAuB,CAC3C,KAAiB,EACjB,IAAwB;IAExB,MAAM,UAAU,GAAG,IAAA,sCAAuB,EAAC,IAAI,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,6BAAqB,CAAC,CAAC,CAAC,6BAAqB,CAAC;IACzE,MAAM,aAAa,GAAG,KAAK;SACxB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;SAClC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sCAAuB,EAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IAC7E,IAAI,aAAa,IAAI,KAAK,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { StateStore } from '../state';
|
|
2
|
+
import type { SchedulerEngine } from './engine';
|
|
3
|
+
/**
|
|
4
|
+
* @description Re-base every scheduled job after the operator changes the
|
|
5
|
+
* instance timezone.
|
|
6
|
+
*
|
|
7
|
+
* Why this cannot just call the engine's `rearmAll()`: that is the BOOT replay.
|
|
8
|
+
* It arms each job from its STORED `nextRunAt`, and a `nextRunAt` already in the
|
|
9
|
+
* past is treated as a MISSED run — it fires a catch-up, announcing and pinning
|
|
10
|
+
* "missed at HH:MM" into the topic and delivering the prompt to the agent. After
|
|
11
|
+
* a zone change a stored `nextRunAt` is routinely in the past (moving from UTC
|
|
12
|
+
* to a zone three hours ahead puts every job earlier than it was), so `rearmAll`
|
|
13
|
+
* would spam bogus catch-ups for runs that were never actually missed.
|
|
14
|
+
*
|
|
15
|
+
* The correct sequence is recompute FIRST, then arm: each job's next occurrence
|
|
16
|
+
* is derived from `now` under the new zone (cron expressions are wall-clock, so
|
|
17
|
+
* "every day at 9am" stays 9am and simply lands on a different instant), the
|
|
18
|
+
* fresh value is persisted, and only then is the timer armed — at a strictly
|
|
19
|
+
* future instant, which the engine never mistakes for a missed run.
|
|
20
|
+
*
|
|
21
|
+
* PAUSED jobs are recomputed too. They are skipped by the arm step (the engine
|
|
22
|
+
* leaves a paused job disarmed by design), but their stored `nextRunAt` must
|
|
23
|
+
* still move: otherwise a later resume would arm a stale pre-change instant.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* @name TimezoneRecomputeDeps
|
|
27
|
+
* @description Everything the recompute needs from the outside world, injected
|
|
28
|
+
* so it is testable against a fake store and a real engine with a fake clock —
|
|
29
|
+
* the only way to assert the load-bearing property, that NO delivery fires.
|
|
30
|
+
*/
|
|
31
|
+
export interface TimezoneRecomputeDeps {
|
|
32
|
+
store: Pick<StateStore, 'getSchedules' | 'upsertSchedule' | 'removeSchedule' | 'flush'>;
|
|
33
|
+
engine: Pick<SchedulerEngine, 'armJob' | 'disarmJob'>;
|
|
34
|
+
/** Current epoch ms. Injected so tests run on a fake clock. */
|
|
35
|
+
now: () => number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @name TimezoneRecomputeResult
|
|
39
|
+
* @description What the pass did, for the `/timezone` confirmation line.
|
|
40
|
+
* `recomputed` counts jobs whose `nextRunAt` was re-derived and persisted;
|
|
41
|
+
* `removed` counts jobs dropped because the new computation left no future
|
|
42
|
+
* occurrence at all.
|
|
43
|
+
*/
|
|
44
|
+
export interface TimezoneRecomputeResult {
|
|
45
|
+
recomputed: number;
|
|
46
|
+
removed: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @description Recompute + re-arm every persisted job for the new timezone.
|
|
50
|
+
*
|
|
51
|
+
* Per job the decision is {@link getRebindResumeAction} — the SAME rule the
|
|
52
|
+
* rebind path already applies, deliberately reused rather than restated: derive
|
|
53
|
+
* the next occurrence strictly from `now`, and drop the record when there is
|
|
54
|
+
* none (an expired one-shot has no future instant, so it cannot be re-armed and
|
|
55
|
+
* must not linger as a husk).
|
|
56
|
+
*
|
|
57
|
+
* A job's `isPaused` / `pauseReason` are preserved untouched — this pass changes
|
|
58
|
+
* WHEN a job runs, never WHETHER it is active.
|
|
59
|
+
*/
|
|
60
|
+
export declare function recomputeSchedulesForTimezoneChange(deps: TimezoneRecomputeDeps): Promise<TimezoneRecomputeResult>;
|
|
61
|
+
//# sourceMappingURL=timezoneRecompute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timezoneRecompute.d.ts","sourceRoot":"","sources":["../../src/scheduler/timezoneRecompute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,OAAO,CAAC,CAAC;IACxF,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC;IACtD,+DAA+D;IAC/D,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mCAAmC,CACvD,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,uBAAuB,CAAC,CA8BlC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.recomputeSchedulesForTimezoneChange = recomputeSchedulesForTimezoneChange;
|
|
4
|
+
const rebindResume_1 = require("./rebindResume");
|
|
5
|
+
/**
|
|
6
|
+
* @description Recompute + re-arm every persisted job for the new timezone.
|
|
7
|
+
*
|
|
8
|
+
* Per job the decision is {@link getRebindResumeAction} — the SAME rule the
|
|
9
|
+
* rebind path already applies, deliberately reused rather than restated: derive
|
|
10
|
+
* the next occurrence strictly from `now`, and drop the record when there is
|
|
11
|
+
* none (an expired one-shot has no future instant, so it cannot be re-armed and
|
|
12
|
+
* must not linger as a husk).
|
|
13
|
+
*
|
|
14
|
+
* A job's `isPaused` / `pauseReason` are preserved untouched — this pass changes
|
|
15
|
+
* WHEN a job runs, never WHETHER it is active.
|
|
16
|
+
*/
|
|
17
|
+
async function recomputeSchedulesForTimezoneChange(deps) {
|
|
18
|
+
const { store, engine, now } = deps;
|
|
19
|
+
const nowMs = now();
|
|
20
|
+
const records = Object.values(store.getSchedules());
|
|
21
|
+
let recomputed = 0;
|
|
22
|
+
let removed = 0;
|
|
23
|
+
for (const record of records) {
|
|
24
|
+
const action = (0, rebindResume_1.getRebindResumeAction)(record, nowMs);
|
|
25
|
+
if (action.kind === 'remove') {
|
|
26
|
+
await store.removeSchedule(record.id);
|
|
27
|
+
engine.disarmJob(record.id);
|
|
28
|
+
removed += 1;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const updated = {
|
|
32
|
+
...record,
|
|
33
|
+
nextRunAt: action.nextRunAt,
|
|
34
|
+
updatedAt: new Date(nowMs).toISOString(),
|
|
35
|
+
};
|
|
36
|
+
await store.upsertSchedule(updated);
|
|
37
|
+
// `armJob` is the single arming authority: it leaves a paused record
|
|
38
|
+
// disarmed, so paused jobs get the fresh `nextRunAt` without waking up.
|
|
39
|
+
engine.armJob(updated);
|
|
40
|
+
recomputed += 1;
|
|
41
|
+
}
|
|
42
|
+
if (records.length > 0)
|
|
43
|
+
await store.flush();
|
|
44
|
+
return { recomputed, removed };
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=timezoneRecompute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timezoneRecompute.js","sourceRoot":"","sources":["../../src/scheduler/timezoneRecompute.ts"],"names":[],"mappings":";;AAiEA,kFAgCC;AAhGD,iDAAuD;AAoDvD;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,mCAAmC,CACvD,IAA2B;IAE3B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAEpD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAA,oCAAqB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC,CAAC;YACb,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAmB;YAC9B,GAAG,MAAM;YACT,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;SACzC,CAAC;QACF,MAAM,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACpC,qEAAqE;QACrE,wEAAwE;QACxE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,UAAU,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Shared scheduler types. Lives in its own file because the spec
|
|
3
|
+
* union and the persisted record are consumed by `recurrence.ts` (S1),
|
|
4
|
+
* `store.ts` (S2) and the engine/delivery layers (later scopes).
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @name ScheduleSpec
|
|
8
|
+
* @description When a scheduled job fires.
|
|
9
|
+
*
|
|
10
|
+
* - `cron`: a 5-field host-local cron expression. May carry `remainingRuns`
|
|
11
|
+
* to make it an N-times job — the engine decrements it after each fire and
|
|
12
|
+
* deletes the record when it reaches zero.
|
|
13
|
+
* - `once`: a single absolute instant (ISO 8601 string). Fires once, then the
|
|
14
|
+
* record is deleted.
|
|
15
|
+
*
|
|
16
|
+
* `remainingRuns` deliberately rides ONLY the `cron` kind: a `once` job is by
|
|
17
|
+
* definition a single run, so an N-times one-shot is meaningless.
|
|
18
|
+
*/
|
|
19
|
+
export type ScheduleSpec = {
|
|
20
|
+
kind: 'cron';
|
|
21
|
+
cronExpr: string;
|
|
22
|
+
remainingRuns?: number;
|
|
23
|
+
} | {
|
|
24
|
+
kind: 'once';
|
|
25
|
+
onceAtIso: string;
|
|
26
|
+
};
|
|
27
|
+
/** Who created a schedule — a human via `/schedule`, or the agent via an MCP tool. */
|
|
28
|
+
export type ScheduleCreatedBy = 'user' | 'agent';
|
|
29
|
+
/**
|
|
30
|
+
* @name ScheduleDeliveryKind
|
|
31
|
+
* @description WHAT a fire does, for the kinds that are not the original
|
|
32
|
+
* agent-prompt delivery:
|
|
33
|
+
* - `'reminder'` — a bot-LOCAL job whose whole delivery is the announcement +
|
|
34
|
+
* its pin (no session started, none touched).
|
|
35
|
+
* - `'check'` — a watchdog: the bot runs {@link ScheduleRecord.checkCommand} in
|
|
36
|
+
* the bound folder, stays silent while it passes, and on the first failure
|
|
37
|
+
* pins an alert and wakes the agent with `prompt` (see `checkRun.ts`).
|
|
38
|
+
*/
|
|
39
|
+
export type ScheduleDeliveryKind = 'reminder' | 'check';
|
|
40
|
+
/**
|
|
41
|
+
* Outcome of the most recent fire, persisted for `/schedule list` display.
|
|
42
|
+
* - `delivered` — prompt reached the agent.
|
|
43
|
+
* - `skipped-overlap`— the previous fire was still in its delivery pipeline.
|
|
44
|
+
* - `failed` — delivery threw and could not be completed.
|
|
45
|
+
*/
|
|
46
|
+
export type ScheduleLastRunStatus = 'delivered' | 'skipped-overlap' | 'failed';
|
|
47
|
+
/** Why a job is paused. Only reason in v1 is an unbound topic (see plan S8). */
|
|
48
|
+
export type SchedulePauseReason = 'unbound';
|
|
49
|
+
/**
|
|
50
|
+
* @name ScheduleRecord
|
|
51
|
+
* @description One persisted scheduled job. Shape locked in plan S2.
|
|
52
|
+
*
|
|
53
|
+
* `nextRunAt` is the crash-critical field: the engine arms a timer to it and
|
|
54
|
+
* `state.flush()`es after every fire so a restart never re-fires or loses a run.
|
|
55
|
+
* `lastAdapterName` snapshots the adapter to start after a rebind when the
|
|
56
|
+
* thread has no live session.
|
|
57
|
+
*/
|
|
58
|
+
export interface ScheduleRecord {
|
|
59
|
+
/** `slugify(name)` + '-' + short random suffix. Unique within the store. */
|
|
60
|
+
id: string;
|
|
61
|
+
/** Owning thread, serialised `"<chatId>:<threadId>"`. */
|
|
62
|
+
threadKey: string;
|
|
63
|
+
/** Human-facing job name (free text supplied by user/agent). */
|
|
64
|
+
name: string;
|
|
65
|
+
spec: ScheduleSpec;
|
|
66
|
+
/**
|
|
67
|
+
* The text the fire delivers: forwarded to the agent as the prompt for an
|
|
68
|
+
* agent-prompt job, POSTED into the topic as the message for a reminder, and
|
|
69
|
+
* forwarded to the agent after the failure details when a check fails. One
|
|
70
|
+
* field for every kind on purpose — a second text field would need a state
|
|
71
|
+
* migration and could disagree with this one.
|
|
72
|
+
*/
|
|
73
|
+
prompt: string;
|
|
74
|
+
createdBy: ScheduleCreatedBy;
|
|
75
|
+
/** ISO 8601 creation timestamp. */
|
|
76
|
+
createdAt: string;
|
|
77
|
+
/** ISO 8601 timestamp of the last mutation. */
|
|
78
|
+
updatedAt: string;
|
|
79
|
+
/** Epoch ms of the next scheduled occurrence, or `null` when exhausted. */
|
|
80
|
+
nextRunAt: number | null;
|
|
81
|
+
/** Epoch ms of the last fire, absent until the first one. */
|
|
82
|
+
lastRunAt?: number;
|
|
83
|
+
lastRunStatus?: ScheduleLastRunStatus;
|
|
84
|
+
/** True while paused (e.g. topic unbound); the engine disarms paused jobs. */
|
|
85
|
+
isPaused?: boolean;
|
|
86
|
+
pauseReason?: SchedulePauseReason;
|
|
87
|
+
/**
|
|
88
|
+
* Pin the fire announcement WITHOUT notifying group members. Default
|
|
89
|
+
* (absent/false) notifies everyone — user decision 2026-06-06; the agent
|
|
90
|
+
* sets this from the user's phrasing via `schedule_create.isPinSilent`.
|
|
91
|
+
*/
|
|
92
|
+
isPinSilent?: boolean;
|
|
93
|
+
/** Adapter name to start when delivering with no live session after a rebind. */
|
|
94
|
+
lastAdapterName?: string;
|
|
95
|
+
/**
|
|
96
|
+
* The delivery kind, ABSENT for the original agent-prompt behaviour. Optional
|
|
97
|
+
* rather than required precisely so no persisted job needs migrating: every
|
|
98
|
+
* record written before reminders existed keeps firing exactly as it did, and
|
|
99
|
+
* "no kind recorded" can only ever mean the prompt path.
|
|
100
|
+
*/
|
|
101
|
+
deliveryKind?: ScheduleDeliveryKind;
|
|
102
|
+
/** The shell command a `'check'` job runs in the bound folder; exit 0 passes. */
|
|
103
|
+
checkCommand?: string;
|
|
104
|
+
/** Seconds a `'check'` run may take before it is stopped and counted as failed. */
|
|
105
|
+
checkTimeoutSec?: number;
|
|
106
|
+
/**
|
|
107
|
+
* True from the failed check run that raised the alert until a run passes
|
|
108
|
+
* again. Persisted so a restart neither repeats the alert nor forgets to say
|
|
109
|
+
* the check recovered.
|
|
110
|
+
*/
|
|
111
|
+
isCheckFailing?: boolean;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* @name FireContext
|
|
115
|
+
* @description Passed by the engine to the `deliver` callback so the
|
|
116
|
+
* announcement can annotate a missed run.
|
|
117
|
+
*
|
|
118
|
+
* - `on-time` — fired at (or within tolerance of) its scheduled instant.
|
|
119
|
+
* - `catch-up` — replayed once at boot for a run missed while the bot was
|
|
120
|
+
* down; `missedAtMs` carries the original due instant so the announcement
|
|
121
|
+
* can render the "missed at HH:MM" note.
|
|
122
|
+
*/
|
|
123
|
+
export interface FireContext {
|
|
124
|
+
kind: 'on-time' | 'catch-up';
|
|
125
|
+
/** Original due instant (epoch ms) for a catch-up fire. */
|
|
126
|
+
missedAtMs?: number;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* @name DeliveryOutcome
|
|
130
|
+
* @description Result of one delivery attempt, returned by the `deliver`
|
|
131
|
+
* callback (the real implementation lands in `delivery.ts`, S4). The engine
|
|
132
|
+
* maps `status` onto the record's `lastRunStatus` and the ledger end record.
|
|
133
|
+
* `error` carries a readable failure message when `status === 'failed'`.
|
|
134
|
+
*/
|
|
135
|
+
export interface DeliveryOutcome {
|
|
136
|
+
status: 'delivered' | 'failed';
|
|
137
|
+
error?: string;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scheduler/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,sFAAsF;AACtF,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,CAAC;AAExD;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,iBAAiB,GAAG,QAAQ,CAAC;AAE/E,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,iBAAiB,CAAC;IAC7B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;IAC7B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Shared scheduler types. Lives in its own file because the spec
|
|
4
|
+
* union and the persisted record are consumed by `recurrence.ts` (S1),
|
|
5
|
+
* `store.ts` (S2) and the engine/delivery layers (later scopes).
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/scheduler/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Classify Telegram API errors raised by `sendMessage` /
|
|
3
|
+
* `editMessageText` / `deleteMessage` so the bot can take the right
|
|
4
|
+
* cleanup action without confusing reversible events (a closed topic)
|
|
5
|
+
* with irreversible ones (a deleted topic).
|
|
6
|
+
*
|
|
7
|
+
* Plan §13.10 / E5:
|
|
8
|
+
* - **thread-deleted** (400 "message thread not found") → wipe binding +
|
|
9
|
+
* agents + in-memory state.
|
|
10
|
+
* - **topic-closed** (400 "TOPIC_CLOSED" / "topic is closed") → keep the
|
|
11
|
+
* binding, mark `closed: true`, surface a friendly note.
|
|
12
|
+
* - **everything else** → log and leave state alone.
|
|
13
|
+
*
|
|
14
|
+
* Extracted from `bot.ts` so the classification rules are unit-testable
|
|
15
|
+
* without importing the rest of the Telegraf bot (plan §11 Этап 7 / R8).
|
|
16
|
+
*/
|
|
17
|
+
/** Shape of the bits we read out of a Telegram API error object. */
|
|
18
|
+
export interface TelegramApiErrorLike {
|
|
19
|
+
response?: {
|
|
20
|
+
error_code?: number;
|
|
21
|
+
description?: string;
|
|
22
|
+
parameters?: {
|
|
23
|
+
retry_after?: number;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
description?: string;
|
|
27
|
+
}
|
|
28
|
+
export type SendErrorClass = 'thread-deleted' | 'topic-closed' | 'other';
|
|
29
|
+
export declare function checkIsApiError(e: unknown): e is TelegramApiErrorLike;
|
|
30
|
+
export declare function getErrorCode(e: TelegramApiErrorLike): number | undefined;
|
|
31
|
+
export declare function getErrorDescription(e: TelegramApiErrorLike): string;
|
|
32
|
+
/**
|
|
33
|
+
* @description The `retry_after` (seconds) Telegram attaches to a 429, or
|
|
34
|
+
* `undefined` when absent. Callers fall back to their own default backoff when
|
|
35
|
+
* this is missing.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getErrorRetryAfterSeconds(e: TelegramApiErrorLike): number | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* @description Map an arbitrary error into one of the cleanup categories
|
|
40
|
+
* the bot knows about. Returns `'other'` for anything that doesn't match
|
|
41
|
+
* (and for non-API errors) so callers can fall through to a generic
|
|
42
|
+
* "log and ignore" branch without crashing.
|
|
43
|
+
*/
|
|
44
|
+
export declare function classifySendError(err: unknown): SendErrorClass;
|
|
45
|
+
//# sourceMappingURL=sendErrorClassifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendErrorClassifier.d.ts","sourceRoot":"","sources":["../src/sendErrorClassifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oEAAoE;AACpE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAChG,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,cAAc,GAAG,OAAO,CAAC;AAEzE,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,oBAAoB,CASrE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAExE;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAErF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAQ9D"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Classify Telegram API errors raised by `sendMessage` /
|
|
4
|
+
* `editMessageText` / `deleteMessage` so the bot can take the right
|
|
5
|
+
* cleanup action without confusing reversible events (a closed topic)
|
|
6
|
+
* with irreversible ones (a deleted topic).
|
|
7
|
+
*
|
|
8
|
+
* Plan §13.10 / E5:
|
|
9
|
+
* - **thread-deleted** (400 "message thread not found") → wipe binding +
|
|
10
|
+
* agents + in-memory state.
|
|
11
|
+
* - **topic-closed** (400 "TOPIC_CLOSED" / "topic is closed") → keep the
|
|
12
|
+
* binding, mark `closed: true`, surface a friendly note.
|
|
13
|
+
* - **everything else** → log and leave state alone.
|
|
14
|
+
*
|
|
15
|
+
* Extracted from `bot.ts` so the classification rules are unit-testable
|
|
16
|
+
* without importing the rest of the Telegraf bot (plan §11 Этап 7 / R8).
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.checkIsApiError = checkIsApiError;
|
|
20
|
+
exports.getErrorCode = getErrorCode;
|
|
21
|
+
exports.getErrorDescription = getErrorDescription;
|
|
22
|
+
exports.getErrorRetryAfterSeconds = getErrorRetryAfterSeconds;
|
|
23
|
+
exports.classifySendError = classifySendError;
|
|
24
|
+
function checkIsApiError(e) {
|
|
25
|
+
// Telegraf surfaces both `err.response` (the raw payload) and a flat
|
|
26
|
+
// `err.description` on different code paths; accept either as proof
|
|
27
|
+
// that this is the kind of error we know how to classify.
|
|
28
|
+
return (typeof e === 'object' &&
|
|
29
|
+
e !== null &&
|
|
30
|
+
('response' in e || 'description' in e));
|
|
31
|
+
}
|
|
32
|
+
function getErrorCode(e) {
|
|
33
|
+
return e.response?.error_code;
|
|
34
|
+
}
|
|
35
|
+
function getErrorDescription(e) {
|
|
36
|
+
return (e.response?.description ?? e.description ?? '').toString();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @description The `retry_after` (seconds) Telegram attaches to a 429, or
|
|
40
|
+
* `undefined` when absent. Callers fall back to their own default backoff when
|
|
41
|
+
* this is missing.
|
|
42
|
+
*/
|
|
43
|
+
function getErrorRetryAfterSeconds(e) {
|
|
44
|
+
return e.response?.parameters?.retry_after;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @description Map an arbitrary error into one of the cleanup categories
|
|
48
|
+
* the bot knows about. Returns `'other'` for anything that doesn't match
|
|
49
|
+
* (and for non-API errors) so callers can fall through to a generic
|
|
50
|
+
* "log and ignore" branch without crashing.
|
|
51
|
+
*/
|
|
52
|
+
function classifySendError(err) {
|
|
53
|
+
if (!checkIsApiError(err))
|
|
54
|
+
return 'other';
|
|
55
|
+
const code = getErrorCode(err);
|
|
56
|
+
if (code !== 400)
|
|
57
|
+
return 'other';
|
|
58
|
+
const desc = getErrorDescription(err);
|
|
59
|
+
if (/thread not found/i.test(desc))
|
|
60
|
+
return 'thread-deleted';
|
|
61
|
+
if (/TOPIC_CLOSED|topic is closed/i.test(desc))
|
|
62
|
+
return 'topic-closed';
|
|
63
|
+
return 'other';
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=sendErrorClassifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendErrorClassifier.js","sourceRoot":"","sources":["../src/sendErrorClassifier.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAUH,0CASC;AAED,oCAEC;AAED,kDAEC;AAOD,8DAEC;AAQD,8CAQC;AA1CD,SAAgB,eAAe,CAAC,CAAU;IACxC,qEAAqE;IACrE,oEAAoE;IACpE,0DAA0D;IAC1D,OAAO,CACL,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,IAAI;QACV,CAAC,UAAU,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,SAAgB,YAAY,CAAC,CAAuB;IAClD,OAAO,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC;AAChC,CAAC;AAED,SAAgB,mBAAmB,CAAC,CAAuB;IACzD,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,CAAuB;IAC/D,OAAO,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,GAAY;IAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC;IACjC,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC5D,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,cAAc,CAAC;IACtE,OAAO,OAAO,CAAC;AACjB,CAAC"}
|