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,624 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createReminders = createReminders;
|
|
4
|
+
/**
|
|
5
|
+
* `/reminders` — bot-LOCAL reminders (buttons only, zero agent involvement): the hub, the four-step wizard, the
|
|
6
|
+
* list, the card and delete. See README.md in this folder.
|
|
7
|
+
*/
|
|
8
|
+
const telegraf_1 = require("telegraf");
|
|
9
|
+
const sessionKey_1 = require("../../../sessionKey");
|
|
10
|
+
const i18n_1 = require("../../../i18n");
|
|
11
|
+
const sendErrorClassifier_1 = require("../../../sendErrorClassifier");
|
|
12
|
+
const deliveryKind_1 = require("../../../scheduler/deliveryKind");
|
|
13
|
+
const store_1 = require("../../../scheduler/store");
|
|
14
|
+
const reminderWizard_1 = require("../../../utils/reminderWizard");
|
|
15
|
+
const reminderScheduleText_1 = require("../../../utils/reminderScheduleText");
|
|
16
|
+
const reminderFlow_1 = require("../../../utils/reminderFlow");
|
|
17
|
+
const callbackMessage_1 = require("./callbackMessage");
|
|
18
|
+
/** Width of the `HH` field in the minute step's `21:__` header. */
|
|
19
|
+
const reminderHourFieldWidth = 2;
|
|
20
|
+
/** Error code → the line the wizard prints above the step it re-renders. */
|
|
21
|
+
const reminderWizardErrorKeys = {
|
|
22
|
+
pastTime: 'reminders.errorPastTime',
|
|
23
|
+
invalidDate: 'reminders.errorInvalidDate',
|
|
24
|
+
invalidTime: 'reminders.errorInvalidTime',
|
|
25
|
+
textTooLong: 'reminders.errorTextTooLong',
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* @description Resolve a wizard error into its localized line. One choke point so
|
|
29
|
+
* the `textTooLong` wording names the bound it rejected from the SINGLE constant
|
|
30
|
+
* instead of having the number spelled out in 12 translations; the other codes
|
|
31
|
+
* carry no `{limit}` and simply ignore it.
|
|
32
|
+
*/
|
|
33
|
+
function getReminderWizardErrorText(errorCode) {
|
|
34
|
+
return (0, i18n_1.t)(reminderWizardErrorKeys[errorCode], { limit: reminderWizard_1.reminderTextMaxLength });
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve one planned button caption: a locale-neutral literal, an i18n key, or a
|
|
38
|
+
* list row — whose caption is composed HERE because its schedule half is itself a
|
|
39
|
+
* localized lookup the pure planner cannot make.
|
|
40
|
+
*/
|
|
41
|
+
function renderReminderButtonLabel(label) {
|
|
42
|
+
switch (label.kind) {
|
|
43
|
+
case 'literal':
|
|
44
|
+
return label.text;
|
|
45
|
+
case 'key':
|
|
46
|
+
return (0, i18n_1.t)(label.key, label.vars);
|
|
47
|
+
case 'listRow':
|
|
48
|
+
return (0, reminderScheduleText_1.getReminderRowLabel)(label.name, label.descriptor);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** Turn a keyboard PLAN from the pure module into telegraf button rows. */
|
|
52
|
+
function renderReminderButtonRows(plan) {
|
|
53
|
+
return plan.map((row) => row.map((button) => telegraf_1.Markup.button.callback(renderReminderButtonLabel(button.label), button.callbackData)));
|
|
54
|
+
}
|
|
55
|
+
function buildReminderKeyboard(plan) {
|
|
56
|
+
return telegraf_1.Markup.inlineKeyboard(renderReminderButtonRows(plan));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The «close» button. Composed HERE rather than inside `buildReminderHubKeyboard`
|
|
60
|
+
* because that builder owns the rows whose PRESENCE is a decision (add at the
|
|
61
|
+
* cap, list when empty), whereas «close» is an unconditional dismissal that both
|
|
62
|
+
* the hub and the created card carry.
|
|
63
|
+
*/
|
|
64
|
+
function buildReminderCloseButton() {
|
|
65
|
+
return telegraf_1.Markup.button.callback((0, i18n_1.t)('reminders.closeButton'), reminderWizard_1.reminderCloseCallback);
|
|
66
|
+
}
|
|
67
|
+
/** Records → the rows the pure list/card plans consume. */
|
|
68
|
+
function toReminderListRows(records) {
|
|
69
|
+
return records.map((record) => ({
|
|
70
|
+
id: record.id,
|
|
71
|
+
name: record.name,
|
|
72
|
+
descriptor: (0, reminderWizard_1.getReminderScheduleDescriptor)(record.spec),
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The three detail lines a reminder is described by. Shared by the card opened
|
|
77
|
+
* from the list and by the created-screen, so the two can never describe the same
|
|
78
|
+
* reminder differently.
|
|
79
|
+
*/
|
|
80
|
+
function buildReminderDetailLines(record, descriptor) {
|
|
81
|
+
return [
|
|
82
|
+
(0, i18n_1.t)('reminders.cardWhen', { schedule: (0, reminderScheduleText_1.getReminderScheduleDescriptorText)(descriptor) }),
|
|
83
|
+
(0, i18n_1.t)('reminders.cardText', { text: record.prompt }),
|
|
84
|
+
(0, i18n_1.t)('reminders.cardNext', { next: (0, reminderScheduleText_1.getReminderNextRunText)(record.nextRunAt, Date.now()) }),
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
/** The done screen: what was created, plus delete / list / close. */
|
|
88
|
+
function buildReminderCreatedScreen(record) {
|
|
89
|
+
return {
|
|
90
|
+
text: [
|
|
91
|
+
(0, i18n_1.t)('reminders.createdTitle'),
|
|
92
|
+
...buildReminderDetailLines(record, (0, reminderWizard_1.getReminderScheduleDescriptor)(record.spec)),
|
|
93
|
+
].join('\n'),
|
|
94
|
+
keyboard: telegraf_1.Markup.inlineKeyboard([
|
|
95
|
+
[
|
|
96
|
+
telegraf_1.Markup.button.callback((0, i18n_1.t)(reminderWizard_1.reminderLabelKeys.cardDelete), (0, reminderWizard_1.buildReminderDeleteCallback)(record.id)),
|
|
97
|
+
telegraf_1.Markup.button.callback((0, i18n_1.t)('reminders.doneListButton'), (0, reminderWizard_1.buildReminderListPageCallback)(0)),
|
|
98
|
+
buildReminderCloseButton(),
|
|
99
|
+
],
|
|
100
|
+
]),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/** The question the wizard's CURRENT step asks. */
|
|
104
|
+
function getReminderStepQuestion(wizardState) {
|
|
105
|
+
switch (wizardState.step) {
|
|
106
|
+
case 'repeat':
|
|
107
|
+
return (0, i18n_1.t)('reminders.stepRepeatQuestion');
|
|
108
|
+
case 'date':
|
|
109
|
+
return (0, i18n_1.t)('reminders.stepDateQuestion');
|
|
110
|
+
case 'dateGrid':
|
|
111
|
+
return (0, i18n_1.t)('reminders.stepDateGridQuestion');
|
|
112
|
+
case 'weekday':
|
|
113
|
+
return (0, i18n_1.t)('reminders.stepWeekdayQuestion');
|
|
114
|
+
case 'dayOfMonth':
|
|
115
|
+
return (0, i18n_1.t)('reminders.stepDayOfMonthQuestion');
|
|
116
|
+
case 'dayOfMonthGrid':
|
|
117
|
+
return (0, i18n_1.t)('reminders.stepDayOfMonthGridQuestion');
|
|
118
|
+
case 'time':
|
|
119
|
+
return (0, i18n_1.t)('reminders.stepTimeQuestion');
|
|
120
|
+
case 'hour':
|
|
121
|
+
return (0, i18n_1.t)('reminders.stepHourQuestion');
|
|
122
|
+
case 'minute':
|
|
123
|
+
// The hour is committed before this screen renders; `?? 0` only narrows the
|
|
124
|
+
// optional field (a minute step with no hour is refused by the pure module).
|
|
125
|
+
return (0, i18n_1.t)('reminders.stepMinuteQuestion', {
|
|
126
|
+
hour: (wizardState.hour ?? 0).toString().padStart(reminderHourFieldWidth, '0'),
|
|
127
|
+
});
|
|
128
|
+
case 'text':
|
|
129
|
+
return (0, i18n_1.t)('reminders.stepTextQuestion');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* @description The wizard screen for a state: the title, the running summary of
|
|
134
|
+
* everything already picked, then the current step's question (preceded by an
|
|
135
|
+
* error line when a pick could not be applied). The summary is what makes a
|
|
136
|
+
* single re-rendered message readable as a flow — each tap appends its value.
|
|
137
|
+
*/
|
|
138
|
+
function buildReminderWizardScreen(wizardState, errorCode) {
|
|
139
|
+
const lines = [(0, i18n_1.t)('reminders.wizardTitle')];
|
|
140
|
+
if (wizardState.repeatKind !== null) {
|
|
141
|
+
lines.push((0, i18n_1.t)('reminders.pickRepeat', { value: (0, i18n_1.t)(reminderWizard_1.reminderRepeatLabelKeys[wizardState.repeatKind]) }));
|
|
142
|
+
}
|
|
143
|
+
if (wizardState.dateIso !== null) {
|
|
144
|
+
lines.push((0, i18n_1.t)('reminders.pickDate', { value: wizardState.dateIso }));
|
|
145
|
+
}
|
|
146
|
+
if (wizardState.weekday !== null) {
|
|
147
|
+
lines.push((0, i18n_1.t)('reminders.pickWeekday', { value: (0, i18n_1.t)(reminderWizard_1.reminderWeekdayLabelKeys[wizardState.weekday]) }));
|
|
148
|
+
}
|
|
149
|
+
if (wizardState.dayOfMonth !== null) {
|
|
150
|
+
lines.push((0, i18n_1.t)('reminders.pickDayOfMonth', { value: wizardState.dayOfMonth }));
|
|
151
|
+
}
|
|
152
|
+
if (wizardState.hour !== null && wizardState.minute !== null) {
|
|
153
|
+
lines.push((0, i18n_1.t)('reminders.pickTime', {
|
|
154
|
+
value: (0, reminderWizard_1.formatReminderTime)({ hour: wizardState.hour, minute: wizardState.minute }),
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
if (wizardState.text !== null) {
|
|
158
|
+
// Only a stale-instant retry holds text. The line is what tells the operator it
|
|
159
|
+
// was KEPT — without it they retype the reminder, and a retyped message is no
|
|
160
|
+
// longer captured by the (now disarmed) text wait: it reaches the agent instead.
|
|
161
|
+
lines.push((0, i18n_1.t)('reminders.pickText', {
|
|
162
|
+
value: (0, reminderWizard_1.getShortenedText)(wizardState.text, reminderWizard_1.reminderSummaryTextMaxLength),
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
const question = getReminderStepQuestion(wizardState);
|
|
166
|
+
const body = errorCode === null ? question : `${getReminderWizardErrorText(errorCode)}\n\n${question}`;
|
|
167
|
+
return {
|
|
168
|
+
text: `${lines.join('\n')}\n\n${body}`,
|
|
169
|
+
keyboard: buildReminderKeyboard((0, reminderWizard_1.buildReminderStepKeyboard)({ state: wizardState, nowMs: Date.now() })),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/** Drop the keyboard of a tapped DEAD screen, swallowing a benign no-op edit. */
|
|
173
|
+
async function stripReminderKeyboard(ctx) {
|
|
174
|
+
try {
|
|
175
|
+
await ctx.editMessageReplyMarkup(undefined);
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
const desc = (0, sendErrorClassifier_1.checkIsApiError)(e) ? (0, sendErrorClassifier_1.getErrorDescription)(e) : '';
|
|
179
|
+
if (!/message is not modified/i.test(desc)) {
|
|
180
|
+
console.warn('[reminders] keyboard strip failed:', desc || e);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* @description Build the `/reminders` flow over its ports. It returns what the bot reaches into from outside
|
|
186
|
+
* the flow — the text-capture hooks of the wizard's last step and its cancel — and the two `register…()` calls.
|
|
187
|
+
*/
|
|
188
|
+
function createReminders(ports) {
|
|
189
|
+
const { reminderWizards, getSchedulerEngine, bot, command, getState, replyToThread, editThreadMessage, authoriseContext } = ports;
|
|
190
|
+
/** The thread's reminders — its agent-prompt schedules filtered out. */
|
|
191
|
+
function getThreadReminders(key) {
|
|
192
|
+
return getState().getThreadSchedules(key).filter(deliveryKind_1.checkIsReminderSchedule);
|
|
193
|
+
}
|
|
194
|
+
/** Screen 0: the count (or why «add» is missing) plus the add/list/close rows. */
|
|
195
|
+
function buildReminderHubScreen(key) {
|
|
196
|
+
const records = getThreadReminders(key);
|
|
197
|
+
const plan = (0, reminderFlow_1.getReminderHubPlan)({
|
|
198
|
+
// The reminder cap is the comparison `createScheduleForThread` makes for a
|
|
199
|
+
// reminder, so «add» is never drawn for a create the store would reject four
|
|
200
|
+
// steps later.
|
|
201
|
+
reminderCount: records.length,
|
|
202
|
+
maxReminders: store_1.maxRemindersPerThread,
|
|
203
|
+
});
|
|
204
|
+
const bodyLine = plan.body === 'empty'
|
|
205
|
+
? (0, i18n_1.t)('reminders.hubEmptyLine')
|
|
206
|
+
: plan.body === 'atLimit'
|
|
207
|
+
? (0, i18n_1.t)('reminders.hubLimitLine', { count: records.length, limit: store_1.maxRemindersPerThread })
|
|
208
|
+
: (0, i18n_1.t)('reminders.hubActiveLine', { count: records.length });
|
|
209
|
+
const rows = (0, reminderWizard_1.buildReminderHubKeyboard)(records.length, { isAddOffered: plan.isAddOffered });
|
|
210
|
+
return {
|
|
211
|
+
text: `${(0, i18n_1.t)('reminders.hubTitle')}\n${bodyLine}`,
|
|
212
|
+
keyboard: telegraf_1.Markup.inlineKeyboard([...renderReminderButtonRows(rows), [buildReminderCloseButton()]]),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* @description One list page, or `null` when the thread has no reminders (the
|
|
217
|
+
* caller falls back to the hub — a list screen with no rows is a dead end).
|
|
218
|
+
*
|
|
219
|
+
* Each row BUTTON carries «🔔 name · localized schedule», so the message text is
|
|
220
|
+
* only a header — printing the same rows in the body as well would show the list
|
|
221
|
+
* twice.
|
|
222
|
+
*/
|
|
223
|
+
function buildReminderListScreen(key, page) {
|
|
224
|
+
const rows = toReminderListRows(getThreadReminders(key));
|
|
225
|
+
if (rows.length === 0)
|
|
226
|
+
return null;
|
|
227
|
+
const plan = (0, reminderWizard_1.buildReminderListPlan)(rows, page);
|
|
228
|
+
const lines = [(0, i18n_1.t)('reminders.listTitle', { count: rows.length })];
|
|
229
|
+
if (plan.totalPages > 1) {
|
|
230
|
+
lines.push((0, i18n_1.t)('reminders.listPageLine', { page: plan.currentPage + 1, total: plan.totalPages }));
|
|
231
|
+
}
|
|
232
|
+
return { text: lines.join('\n'), keyboard: buildReminderKeyboard(plan.keyboard) };
|
|
233
|
+
}
|
|
234
|
+
/** One reminder's card, or `null` for a stale row index / a record already gone. */
|
|
235
|
+
function buildReminderCardScreen(key, reminderIndex) {
|
|
236
|
+
const records = getThreadReminders(key);
|
|
237
|
+
const plan = (0, reminderWizard_1.buildReminderCardPlan)(toReminderListRows(records), reminderIndex);
|
|
238
|
+
if (plan === null)
|
|
239
|
+
return null;
|
|
240
|
+
const record = records.find((candidate) => candidate.id === plan.row.id);
|
|
241
|
+
if (record === undefined)
|
|
242
|
+
return null;
|
|
243
|
+
return {
|
|
244
|
+
text: [
|
|
245
|
+
(0, i18n_1.t)('reminders.cardTitle', { name: plan.row.name }),
|
|
246
|
+
...buildReminderDetailLines(record, plan.row.descriptor),
|
|
247
|
+
].join('\n'),
|
|
248
|
+
keyboard: buildReminderKeyboard(plan.keyboard),
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/** Replace a reminder screen in place (the flow never creates a second message). */
|
|
252
|
+
async function renderReminderScreen(key, messageId, screen) {
|
|
253
|
+
await editThreadMessage(key, messageId, screen.text, screen.keyboard);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Relabel a reminder screen into a final notice and DROP its keyboard (an edit
|
|
257
|
+
* with no `reply_markup` removes it), so a finished screen can't be acted on.
|
|
258
|
+
*/
|
|
259
|
+
async function retireReminderScreen(key, messageId, text) {
|
|
260
|
+
await editThreadMessage(key, messageId, text);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* @description Retire the topic's in-flight wizard, if any: drop the session and
|
|
264
|
+
* relabel its message so no dead keyboard is left tappable.
|
|
265
|
+
*
|
|
266
|
+
* Called by EVERY command (a command always wins over the step-4 text wait),
|
|
267
|
+
* which is also what makes a repeat `/reminders` retire the previous wizard
|
|
268
|
+
* before opening a new one — exactly one wizard is live per topic.
|
|
269
|
+
*/
|
|
270
|
+
async function cancelReminderWizard(key) {
|
|
271
|
+
const kStr = (0, sessionKey_1.keyToString)(key);
|
|
272
|
+
const session = reminderWizards.get(kStr);
|
|
273
|
+
if (!session)
|
|
274
|
+
return;
|
|
275
|
+
reminderWizards.delete(kStr);
|
|
276
|
+
await retireReminderScreen(key, session.messageId, (0, i18n_1.t)('reminders.cancelledNotice'));
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* @description Retire a wizard whose step-4 text wait ran out. The triggering
|
|
280
|
+
* message is NOT consumed by the caller — it falls through to normal handling,
|
|
281
|
+
* because swallowing it would lose a prompt the operator meant for the agent.
|
|
282
|
+
*/
|
|
283
|
+
async function expireReminderWizard(key) {
|
|
284
|
+
const kStr = (0, sessionKey_1.keyToString)(key);
|
|
285
|
+
const session = reminderWizards.get(kStr);
|
|
286
|
+
if (!session)
|
|
287
|
+
return;
|
|
288
|
+
reminderWizards.delete(kStr);
|
|
289
|
+
await retireReminderScreen(key, session.messageId, (0, i18n_1.t)('reminders.expiredNotice'));
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* @description Route an inbound message against the topic's step-4 text wait and,
|
|
293
|
+
* when it IS the reminder text, CLAIM that wait — synchronously, before the caller
|
|
294
|
+
* reaches its first `await`.
|
|
295
|
+
*
|
|
296
|
+
* The claim is the mutual exclusion: telegraf handles updates concurrently, so two
|
|
297
|
+
* messages arriving together both pass an unclaimed wait and would each create a
|
|
298
|
+
* reminder from the one wizard. A single-threaded event loop needs nothing heavier
|
|
299
|
+
* than this flag — no lock, no timer — provided it is taken in the same synchronous
|
|
300
|
+
* run as the decision, which is why claiming and routing are one function. Both the
|
|
301
|
+
* typed and the voice path call it, so they cannot claim differently.
|
|
302
|
+
*/
|
|
303
|
+
function claimReminderTextCapture(key) {
|
|
304
|
+
const textWait = reminderWizards.get((0, sessionKey_1.keyToString)(key))?.textWait;
|
|
305
|
+
const route = (0, reminderFlow_1.getReminderTextCaptureRoute)({
|
|
306
|
+
armedAtMs: textWait?.armedAtMs ?? null,
|
|
307
|
+
isClaimed: textWait?.isClaimed === true,
|
|
308
|
+
nowMs: Date.now(),
|
|
309
|
+
});
|
|
310
|
+
if (route === 'capture' && textWait)
|
|
311
|
+
textWait.isClaimed = true;
|
|
312
|
+
return route;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* @description Persist a finished wizard's reminder, retire the wizard and turn its
|
|
316
|
+
* message into the created card. The SINGLE creation path — shared by the text
|
|
317
|
+
* capture and by the `createNow` retry after a stale instant — so the two can never
|
|
318
|
+
* create reminders differently.
|
|
319
|
+
*/
|
|
320
|
+
async function createReminderFromWizard(input) {
|
|
321
|
+
const { key, session, text } = input;
|
|
322
|
+
reminderWizards.delete((0, sessionKey_1.keyToString)(key));
|
|
323
|
+
const created = await (0, store_1.createScheduleForThread)(getState(), {
|
|
324
|
+
threadKey: key,
|
|
325
|
+
// The wizard never ASKS for a name — one less typing step; the list rows and
|
|
326
|
+
// the card show the first words of the reminder itself.
|
|
327
|
+
name: (0, reminderWizard_1.getReminderNameFromText)(text),
|
|
328
|
+
spec: input.spec,
|
|
329
|
+
prompt: text,
|
|
330
|
+
createdBy: 'user',
|
|
331
|
+
nowMs: input.nowMs,
|
|
332
|
+
deliveryKind: 'reminder',
|
|
333
|
+
});
|
|
334
|
+
if (!created.ok) {
|
|
335
|
+
await retireReminderScreen(key, session.messageId, (0, i18n_1.t)('reminders.capReachedNotice', { limit: created.limit }));
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
getSchedulerEngine()?.armJob(created.record);
|
|
339
|
+
await renderReminderScreen(key, session.messageId, buildReminderCreatedScreen(created.record));
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* @description Turn the wizard's picks plus the operator's text into a reminder —
|
|
343
|
+
* the entry point shared by the typed message and the transcribed voice note.
|
|
344
|
+
*
|
|
345
|
+
* The spec is rebuilt at THIS instant rather than reused from the time step:
|
|
346
|
+
* minutes pass while the operator types, so a `once` reminder for «today» may have
|
|
347
|
+
* gone by. That is reported on the time screen — and the text they just sent is
|
|
348
|
+
* KEPT on the wizard, so the next time pick creates the reminder without asking for
|
|
349
|
+
* it again. Re-typing the reminder is the one thing this all-buttons flow exists to
|
|
350
|
+
* avoid.
|
|
351
|
+
*/
|
|
352
|
+
async function finishReminderWizard(key, text) {
|
|
353
|
+
const session = reminderWizards.get((0, sessionKey_1.keyToString)(key));
|
|
354
|
+
const textWait = session?.textWait;
|
|
355
|
+
if (!session || !textWait)
|
|
356
|
+
return;
|
|
357
|
+
// An over-long text is refused outright — it is never truncated, because the
|
|
358
|
+
// words are the operator's own. The wizard therefore STAYS on step 4 (the error
|
|
359
|
+
// rides the same screen) and the claim is released first, so the shorter retry is
|
|
360
|
+
// captured instead of reaching the agent as a prompt.
|
|
361
|
+
if ((0, reminderFlow_1.getReminderTextAcceptance)(text) === 'tooLong') {
|
|
362
|
+
textWait.isClaimed = false;
|
|
363
|
+
await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(session.state, 'textTooLong'));
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
const nowMs = Date.now();
|
|
367
|
+
const built = (0, reminderWizard_1.buildReminderSpec)({ picks: textWait.picks, nowMs });
|
|
368
|
+
if (!built.ok) {
|
|
369
|
+
const retimeStep = (0, reminderWizard_1.getReminderStateForRetime)(session.state, text);
|
|
370
|
+
session.state = retimeStep;
|
|
371
|
+
// Disarmed on purpose: the screen now asks for a TIME, not for text.
|
|
372
|
+
session.textWait = null;
|
|
373
|
+
await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(retimeStep, built.code));
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
await createReminderFromWizard({ key, session, spec: built.spec, text, nowMs });
|
|
377
|
+
}
|
|
378
|
+
function registerReminderCommands() {
|
|
379
|
+
// `/reminders` — the reminder hub. Deliberately NOT gated on a binding or a
|
|
380
|
+
// session: the bot itself posts and pins a reminder, so it needs neither a folder
|
|
381
|
+
// nor an agent and works in every topic, General included.
|
|
382
|
+
command('reminders', async (_ctx, key) => {
|
|
383
|
+
const screen = buildReminderHubScreen(key);
|
|
384
|
+
await replyToThread(key, screen.text, screen.keyboard);
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
function registerReminderCallbacks() {
|
|
388
|
+
/**
|
|
389
|
+
* @description `/reminders` callbacks. Every one of them EDITS the tapped message
|
|
390
|
+
* — the hub, the list, a card, the wizard and the created screen are all the same
|
|
391
|
+
* message re-rendered, so a reminder session never litters the topic.
|
|
392
|
+
*
|
|
393
|
+
* The flat ids (`rmadd` / `rmhub` / `rmclose`) are registered before the prefixed
|
|
394
|
+
* matchers, following the ordering rule the `/timezone` and `/model` pickers rely
|
|
395
|
+
* on (Telegraf dispatches action patterns first-match-wins).
|
|
396
|
+
*/
|
|
397
|
+
// «➕ Add» → open the wizard IN the hub message.
|
|
398
|
+
bot.action(reminderWizard_1.reminderAddCallback, async (ctx) => {
|
|
399
|
+
const key = await authoriseContext(ctx);
|
|
400
|
+
if (!key) {
|
|
401
|
+
await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
|
|
405
|
+
if (messageId === null) {
|
|
406
|
+
await ctx.answerCbQuery((0, i18n_1.t)('reminders.wizardExpiredCbAnswer'));
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
// At the cap the hub draws no «add», so a tap can only come from a keyboard
|
|
410
|
+
// rendered before the cap was reached: say why and refresh the screen.
|
|
411
|
+
const hubPlan = (0, reminderFlow_1.getReminderHubPlan)({
|
|
412
|
+
reminderCount: getThreadReminders(key).length,
|
|
413
|
+
maxReminders: store_1.maxRemindersPerThread,
|
|
414
|
+
});
|
|
415
|
+
if (!hubPlan.isAddOffered) {
|
|
416
|
+
await ctx.answerCbQuery((0, i18n_1.t)('reminders.capReachedNotice', { limit: store_1.maxRemindersPerThread }));
|
|
417
|
+
await renderReminderScreen(key, messageId, buildReminderHubScreen(key));
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
// An older hub message can still open a wizard while one is live; retire that
|
|
421
|
+
// one first so only ever one wizard belongs to the topic.
|
|
422
|
+
await cancelReminderWizard(key);
|
|
423
|
+
const wizardState = (0, reminderWizard_1.createReminderWizardState)((0, reminderWizard_1.createReminderWizardId)(Date.now()));
|
|
424
|
+
reminderWizards.set((0, sessionKey_1.keyToString)(key), { state: wizardState, messageId, textWait: null });
|
|
425
|
+
await ctx.answerCbQuery();
|
|
426
|
+
await renderReminderScreen(key, messageId, buildReminderWizardScreen(wizardState, null));
|
|
427
|
+
});
|
|
428
|
+
// «‹ Back» from the list → the hub.
|
|
429
|
+
bot.action(reminderWizard_1.reminderHubCallback, async (ctx) => {
|
|
430
|
+
const key = await authoriseContext(ctx);
|
|
431
|
+
if (!key) {
|
|
432
|
+
await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
|
|
436
|
+
await ctx.answerCbQuery();
|
|
437
|
+
if (messageId !== null)
|
|
438
|
+
await renderReminderScreen(key, messageId, buildReminderHubScreen(key));
|
|
439
|
+
});
|
|
440
|
+
// «✕ Close» → relabel the screen and drop its keyboard.
|
|
441
|
+
bot.action(reminderWizard_1.reminderCloseCallback, async (ctx) => {
|
|
442
|
+
const key = await authoriseContext(ctx);
|
|
443
|
+
if (!key) {
|
|
444
|
+
await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
447
|
+
const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
|
|
448
|
+
await ctx.answerCbQuery();
|
|
449
|
+
if (messageId !== null)
|
|
450
|
+
await retireReminderScreen(key, messageId, (0, i18n_1.t)('reminders.closedNotice'));
|
|
451
|
+
});
|
|
452
|
+
// A list page (or a prev/next arrow). A now-empty list falls back to the hub.
|
|
453
|
+
bot.action(reminderWizard_1.reminderListPageCallbackRe, async (ctx) => {
|
|
454
|
+
const key = await authoriseContext(ctx);
|
|
455
|
+
if (!key) {
|
|
456
|
+
await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
|
|
457
|
+
return;
|
|
458
|
+
}
|
|
459
|
+
const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
|
|
460
|
+
const page = (0, reminderWizard_1.parseReminderListPageCallback)(ctx.match[0]);
|
|
461
|
+
await ctx.answerCbQuery();
|
|
462
|
+
if (messageId === null || page === null)
|
|
463
|
+
return;
|
|
464
|
+
await renderReminderScreen(key, messageId, buildReminderListScreen(key, page) ?? buildReminderHubScreen(key));
|
|
465
|
+
});
|
|
466
|
+
// A list row → its card. A stale index (the list shrank since it was rendered)
|
|
467
|
+
// says so and reopens the list rather than opening a NEIGHBOURING reminder.
|
|
468
|
+
bot.action(reminderWizard_1.reminderCardCallbackRe, async (ctx) => {
|
|
469
|
+
const key = await authoriseContext(ctx);
|
|
470
|
+
if (!key) {
|
|
471
|
+
await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
|
|
475
|
+
const reminderIndex = (0, reminderWizard_1.parseReminderCardCallback)(ctx.match[0]);
|
|
476
|
+
if (messageId === null || reminderIndex === null) {
|
|
477
|
+
await ctx.answerCbQuery();
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
const screen = buildReminderCardScreen(key, reminderIndex);
|
|
481
|
+
if (screen === null) {
|
|
482
|
+
await ctx.answerCbQuery((0, i18n_1.t)('reminders.cardExpiredCbAnswer'));
|
|
483
|
+
await renderReminderScreen(key, messageId, buildReminderListScreen(key, 0) ?? buildReminderHubScreen(key));
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
await ctx.answerCbQuery();
|
|
487
|
+
await renderReminderScreen(key, messageId, screen);
|
|
488
|
+
});
|
|
489
|
+
// «🗑 Delete» — there is deliberately NO extra confirmation step: the card the
|
|
490
|
+
// button sits on shows exactly what is about to go, so the card IS the
|
|
491
|
+
// confirmation. The reminder's own id is baked into the callback (never a
|
|
492
|
+
// positional index), so an old card can't delete whatever now occupies its row.
|
|
493
|
+
bot.action(reminderWizard_1.reminderDeleteCallbackRe, async (ctx) => {
|
|
494
|
+
const key = await authoriseContext(ctx);
|
|
495
|
+
if (!key) {
|
|
496
|
+
await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
const messageId = (0, callbackMessage_1.getCallbackMessageId)(ctx);
|
|
500
|
+
const reminderId = (0, reminderWizard_1.parseReminderDeleteCallback)(ctx.match[0]);
|
|
501
|
+
if (messageId === null || reminderId === null) {
|
|
502
|
+
await ctx.answerCbQuery();
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
const rows = toReminderListRows(getThreadReminders(key));
|
|
506
|
+
const target = (0, reminderWizard_1.getReminderDeleteTarget)(rows, reminderId);
|
|
507
|
+
if (target.kind === 'notFound') {
|
|
508
|
+
await ctx.answerCbQuery((0, i18n_1.t)('reminders.deleteGoneCbAnswer'));
|
|
509
|
+
await renderReminderScreen(key, messageId, buildReminderListScreen(key, 0) ?? buildReminderHubScreen(key));
|
|
510
|
+
return;
|
|
511
|
+
}
|
|
512
|
+
// Return to the page the deleted row was on (a shrunk list clamps the page).
|
|
513
|
+
const listPage = (0, reminderWizard_1.getReminderCardBackPage)(rows.findIndex((row) => row.id === target.row.id));
|
|
514
|
+
await getState().removeSchedule(target.row.id);
|
|
515
|
+
getSchedulerEngine()?.disarmJob(target.row.id);
|
|
516
|
+
await ctx.answerCbQuery((0, i18n_1.t)('reminders.deletedCbAnswer'));
|
|
517
|
+
await renderReminderScreen(key, messageId, buildReminderListScreen(key, listPage) ?? buildReminderHubScreen(key));
|
|
518
|
+
});
|
|
519
|
+
// Every wizard button. The wizard id baked into the callback is what makes an
|
|
520
|
+
// abandoned keyboard inert: a tap from a dead screen changes NO state.
|
|
521
|
+
bot.action(reminderWizard_1.reminderWizardCallbackRe, async (ctx) => {
|
|
522
|
+
const key = await authoriseContext(ctx);
|
|
523
|
+
if (!key) {
|
|
524
|
+
await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
const kStr = (0, sessionKey_1.keyToString)(key);
|
|
528
|
+
const session = reminderWizards.get(kStr);
|
|
529
|
+
const callbackData = ctx.match[0];
|
|
530
|
+
// A tap from a DEAD screen (no wizard live, or a different wizard's id): say so
|
|
531
|
+
// and strip THAT message's keyboard, because it can never be finished.
|
|
532
|
+
if (session === undefined ||
|
|
533
|
+
(0, reminderFlow_1.getReminderWizardTapRoute)({ liveWizardId: session.state.wizardId, callbackData }) === 'foreign') {
|
|
534
|
+
await ctx.answerCbQuery((0, i18n_1.t)('reminders.wizardExpiredCbAnswer'));
|
|
535
|
+
await stripReminderKeyboard(ctx);
|
|
536
|
+
return;
|
|
537
|
+
}
|
|
538
|
+
const nowMs = Date.now();
|
|
539
|
+
const transition = (0, reminderWizard_1.applyReminderWizardCallback)({ state: session.state, callbackData, nowMs });
|
|
540
|
+
// ONE choke point for the step-4 wait: any outcome that moves the wizard off the
|
|
541
|
+
// text step disarms it here. «‹ Back» out of step 4 is the reachable case — the
|
|
542
|
+
// screen goes back to asking for a TIME, and a wait left armed would swallow the
|
|
543
|
+
// operator's next ordinary message and create the reminder from the picks they
|
|
544
|
+
// went back to change.
|
|
545
|
+
if (!(0, reminderFlow_1.checkIsReminderTextWaitKept)(transition.kind))
|
|
546
|
+
session.textWait = null;
|
|
547
|
+
switch (transition.kind) {
|
|
548
|
+
case 'expired':
|
|
549
|
+
// The live wizard, but an action from a step it has already left (a tap on a
|
|
550
|
+
// stale VIEW of this same message). Re-render the current step instead of
|
|
551
|
+
// stripping the keyboard — the wizard is alive and must stay finishable.
|
|
552
|
+
await ctx.answerCbQuery((0, i18n_1.t)('reminders.wizardExpiredCbAnswer'));
|
|
553
|
+
await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(session.state, null));
|
|
554
|
+
return;
|
|
555
|
+
case 'cancelled':
|
|
556
|
+
reminderWizards.delete(kStr);
|
|
557
|
+
await ctx.answerCbQuery();
|
|
558
|
+
await retireReminderScreen(key, session.messageId, (0, i18n_1.t)('reminders.cancelledNotice'));
|
|
559
|
+
return;
|
|
560
|
+
case 'backToHub':
|
|
561
|
+
reminderWizards.delete(kStr);
|
|
562
|
+
await ctx.answerCbQuery();
|
|
563
|
+
await renderReminderScreen(key, session.messageId, buildReminderHubScreen(key));
|
|
564
|
+
return;
|
|
565
|
+
case 'error':
|
|
566
|
+
// The time was not committed: the screen re-renders WITH the reason, so
|
|
567
|
+
// «today» plus a time that has gone by is said out loud rather than silently
|
|
568
|
+
// rolled to tomorrow. The returned state is written back because it is not
|
|
569
|
+
// always the one that came in — a DST-skipped time hands back the TIME step,
|
|
570
|
+
// and a screen the session disagreed with would treat the next tap as stale.
|
|
571
|
+
session.state = transition.state;
|
|
572
|
+
await ctx.answerCbQuery(getReminderWizardErrorText(transition.code));
|
|
573
|
+
await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(transition.state, transition.code));
|
|
574
|
+
return;
|
|
575
|
+
case 'render':
|
|
576
|
+
session.state = transition.state;
|
|
577
|
+
await ctx.answerCbQuery();
|
|
578
|
+
await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(session.state, null));
|
|
579
|
+
return;
|
|
580
|
+
case 'awaitText': {
|
|
581
|
+
const picks = (0, reminderWizard_1.getReminderPicksFromState)(transition.state);
|
|
582
|
+
if (picks === null) {
|
|
583
|
+
// Unreachable through the keyboards (`awaitText` is returned only after a
|
|
584
|
+
// spec built cleanly from these very picks). Park the wizard back on the
|
|
585
|
+
// time step rather than arming a wait that could not create anything.
|
|
586
|
+
const timeStep = (0, reminderWizard_1.getReminderStateForStep)(session.state, 'time');
|
|
587
|
+
session.state = timeStep;
|
|
588
|
+
await ctx.answerCbQuery((0, i18n_1.t)('reminders.wizardExpiredCbAnswer'));
|
|
589
|
+
await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(timeStep, null));
|
|
590
|
+
return;
|
|
591
|
+
}
|
|
592
|
+
session.state = transition.state;
|
|
593
|
+
session.textWait = { picks, armedAtMs: nowMs, isClaimed: false };
|
|
594
|
+
await ctx.answerCbQuery();
|
|
595
|
+
await renderReminderScreen(key, session.messageId, buildReminderWizardScreen(session.state, null));
|
|
596
|
+
return;
|
|
597
|
+
}
|
|
598
|
+
case 'createNow':
|
|
599
|
+
// The text is already in hand — it arrived before the picked instant went
|
|
600
|
+
// stale — so this replacement time pick finishes the reminder outright
|
|
601
|
+
// instead of sending the operator back through step 4. The session is
|
|
602
|
+
// retired by the create, so there is no state left to write back.
|
|
603
|
+
await ctx.answerCbQuery();
|
|
604
|
+
await createReminderFromWizard({
|
|
605
|
+
key,
|
|
606
|
+
session,
|
|
607
|
+
spec: transition.spec,
|
|
608
|
+
text: transition.text,
|
|
609
|
+
nowMs,
|
|
610
|
+
});
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
});
|
|
614
|
+
}
|
|
615
|
+
return {
|
|
616
|
+
cancelReminderWizard,
|
|
617
|
+
claimReminderTextCapture,
|
|
618
|
+
expireReminderWizard,
|
|
619
|
+
finishReminderWizard,
|
|
620
|
+
registerReminderCommands,
|
|
621
|
+
registerReminderCallbacks,
|
|
622
|
+
};
|
|
623
|
+
}
|
|
624
|
+
//# sourceMappingURL=reminders.js.map
|