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 @@
|
|
|
1
|
+
{"version":3,"file":"timezonePicker.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/timezonePicker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKlC,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAQnC,oDAAoD;AACpD,eAAO,MAAM,0BAA0B,WAAW,CAAC;AACnD,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,QAAsB,CAAC;AACxD,eAAO,MAAM,kBAAkB,QAAqB,CAAC;AAErD,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAIlF;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAI9E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAInF;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEtE;AAOD;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,iEA4BnE;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC;IACnD,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,kBAAkB,GAAG,IAAI,CA8B3B"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zonePickCallbackRe = exports.regionPageCallbackRe = exports.timezoneAutoCallback = exports.timezonePickerBackCallback = exports.timezonePageSize = void 0;
|
|
4
|
+
exports.buildRegionPageCallback = buildRegionPageCallback;
|
|
5
|
+
exports.buildZonePickCallback = buildZonePickCallback;
|
|
6
|
+
exports.parseRegionPageCallback = parseRegionPageCallback;
|
|
7
|
+
exports.parseZonePickCallback = parseZonePickCallback;
|
|
8
|
+
exports.getTimezoneAt = getTimezoneAt;
|
|
9
|
+
exports.getTimezoneRegionAt = getTimezoneRegionAt;
|
|
10
|
+
exports.buildTimezoneRegionPicker = buildTimezoneRegionPicker;
|
|
11
|
+
exports.buildTimezoneZonePicker = buildTimezoneZonePicker;
|
|
12
|
+
/**
|
|
13
|
+
* @description Pure builders + callback codec for the two-level `/timezone`
|
|
14
|
+
* picker: level 1 is the 10 IANA regions, level 2 is that region's zones,
|
|
15
|
+
* paginated.
|
|
16
|
+
*
|
|
17
|
+
* Two levels rather than one flat list because there are 418 zones — the same
|
|
18
|
+
* constraint that forced `/model` into a provider → models picker once a
|
|
19
|
+
* provider with hundreds of models appeared. And every callback carries INDEXES
|
|
20
|
+
* rather than the zone name: `America/Argentina/Buenos_Aires` plus a region
|
|
21
|
+
* index and a page number does not reliably fit Telegram's 64-BYTE
|
|
22
|
+
* `callback_data` cap, and a truncated id resolves to the wrong zone silently.
|
|
23
|
+
*
|
|
24
|
+
* Kept pure (no `t()`, no bot state) so the `✓` placement, the pagination
|
|
25
|
+
* clamping and the codec round-trip are unit-testable without a Telegram
|
|
26
|
+
* surface. Header TEXT is the caller's job — it is localized, the keyboard is
|
|
27
|
+
* not.
|
|
28
|
+
*/
|
|
29
|
+
const telegraf_1 = require("telegraf");
|
|
30
|
+
const paginateList_1 = require("../../utils/paginateList");
|
|
31
|
+
const timezone_1 = require("../../utils/timezone");
|
|
32
|
+
/** Zones listed per level-2 page — one per row, matching `/model`'s page size. */
|
|
33
|
+
exports.timezonePageSize = 10;
|
|
34
|
+
/** Regions per keyboard row on level 1 (10 regions ⇒ 5 rows). */
|
|
35
|
+
const regionsPerRow = 2;
|
|
36
|
+
const regionPageCallbackPrefix = 'tzr_';
|
|
37
|
+
const zonePickCallbackPrefix = 'tz_';
|
|
38
|
+
/** Back to the region level (level 2 → level 1). */
|
|
39
|
+
exports.timezonePickerBackCallback = 'tzback';
|
|
40
|
+
/** Reset the setting to the host zone. */
|
|
41
|
+
exports.timezoneAutoCallback = 'tzauto';
|
|
42
|
+
/** Anchored matchers for `bot.action(...)` — the wire format's single definition. */
|
|
43
|
+
exports.regionPageCallbackRe = /^tzr_(\d+)_(\d+)$/;
|
|
44
|
+
exports.zonePickCallbackRe = /^tz_(\d+)_(\d+)$/;
|
|
45
|
+
function buildRegionPageCallback(regionIndex, page) {
|
|
46
|
+
return `${regionPageCallbackPrefix}${regionIndex}_${page}`;
|
|
47
|
+
}
|
|
48
|
+
function buildZonePickCallback(regionIndex, zoneIndex) {
|
|
49
|
+
return `${zonePickCallbackPrefix}${regionIndex}_${zoneIndex}`;
|
|
50
|
+
}
|
|
51
|
+
function parseRegionPageCallback(callbackData) {
|
|
52
|
+
const match = exports.regionPageCallbackRe.exec(callbackData);
|
|
53
|
+
if (!match)
|
|
54
|
+
return null;
|
|
55
|
+
return { regionIndex: Number(match[1]), page: Number(match[2]) };
|
|
56
|
+
}
|
|
57
|
+
function parseZonePickCallback(callbackData) {
|
|
58
|
+
const match = exports.zonePickCallbackRe.exec(callbackData);
|
|
59
|
+
if (!match)
|
|
60
|
+
return null;
|
|
61
|
+
return { regionIndex: Number(match[1]), zoneIndex: Number(match[2]) };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* @description Resolve a level-2 pick back to its zone name, or `null` when the
|
|
65
|
+
* indexes no longer resolve. Stale keyboards stay tappable forever in Telegram,
|
|
66
|
+
* so an out-of-range index must answer "nothing" rather than pick a neighbour.
|
|
67
|
+
*/
|
|
68
|
+
function getTimezoneAt(regionIndex, zoneIndex) {
|
|
69
|
+
const region = (0, timezone_1.listTimezoneRegions)()[regionIndex];
|
|
70
|
+
if (region === undefined)
|
|
71
|
+
return null;
|
|
72
|
+
return (0, timezone_1.getTimezonesForRegion)(region)[zoneIndex] ?? null;
|
|
73
|
+
}
|
|
74
|
+
/** The region name at `regionIndex`, or `null` for a stale index. */
|
|
75
|
+
function getTimezoneRegionAt(regionIndex) {
|
|
76
|
+
return (0, timezone_1.listTimezoneRegions)()[regionIndex] ?? null;
|
|
77
|
+
}
|
|
78
|
+
/** `✓ `-prefix a label when it is the current selection. */
|
|
79
|
+
function getSelectionLabel(label, isCurrent) {
|
|
80
|
+
return isCurrent ? `✓ ${label}` : label;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @description Build the level-1 region keyboard, two regions per row, plus a
|
|
84
|
+
* full-width `🌐 Auto (host zone)` reset row.
|
|
85
|
+
*
|
|
86
|
+
* The `✓` marks the region CONTAINING the current zone (so the operator can see
|
|
87
|
+
* where they are without opening a page), or the Auto row when nothing is
|
|
88
|
+
* stored. A fixed-offset zone (`+04:00`) belongs to no region, so no region is
|
|
89
|
+
* marked — that is honest rather than arbitrarily highlighting one.
|
|
90
|
+
*
|
|
91
|
+
* `🌐 Auto (host zone)` is a fixed glyph+word rather than a translated string,
|
|
92
|
+
* mirroring the `/language` picker's Auto row: recognisable across locales and
|
|
93
|
+
* one less per-locale key to keep in parity.
|
|
94
|
+
*/
|
|
95
|
+
function buildTimezoneRegionPicker(currentZone) {
|
|
96
|
+
const regions = (0, timezone_1.listTimezoneRegions)();
|
|
97
|
+
const currentRegion = currentZone === null ? null : (0, timezone_1.getTimezoneRegion)(currentZone);
|
|
98
|
+
const rows = [];
|
|
99
|
+
for (let index = 0; index < regions.length; index += regionsPerRow) {
|
|
100
|
+
const row = [];
|
|
101
|
+
for (let offset = 0; offset < regionsPerRow; offset += 1) {
|
|
102
|
+
const region = regions[index + offset];
|
|
103
|
+
if (region === undefined)
|
|
104
|
+
break;
|
|
105
|
+
row.push(telegraf_1.Markup.button.callback(getSelectionLabel(region, region === currentRegion), buildRegionPageCallback(index + offset, 0)));
|
|
106
|
+
}
|
|
107
|
+
rows.push(row);
|
|
108
|
+
}
|
|
109
|
+
rows.push([
|
|
110
|
+
telegraf_1.Markup.button.callback(getSelectionLabel('🌐 Auto (host zone)', currentZone === null), exports.timezoneAutoCallback),
|
|
111
|
+
]);
|
|
112
|
+
return telegraf_1.Markup.inlineKeyboard(rows);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* @description Build a region's zone page: one zone per row (names are long),
|
|
116
|
+
* with a `‹ Prev` / page pill / `⬅ Regions` / `Next ›` navigation row.
|
|
117
|
+
*
|
|
118
|
+
* Returns `null` for a region index that no longer resolves — a stale callback
|
|
119
|
+
* must be answered as expired, not rendered against a different region.
|
|
120
|
+
*/
|
|
121
|
+
function buildTimezoneZonePicker(regionIndex, page, currentZone) {
|
|
122
|
+
const region = getTimezoneRegionAt(regionIndex);
|
|
123
|
+
if (region === null)
|
|
124
|
+
return null;
|
|
125
|
+
const zones = (0, timezone_1.getTimezonesForRegion)(region);
|
|
126
|
+
const { slice, currentPage, totalPages } = (0, paginateList_1.paginateList)(zones, page, exports.timezonePageSize);
|
|
127
|
+
const pageOffset = currentPage * exports.timezonePageSize;
|
|
128
|
+
const rows = slice.map((zone, sliceIndex) => [
|
|
129
|
+
telegraf_1.Markup.button.callback(getSelectionLabel(zone, zone === currentZone), buildZonePickCallback(regionIndex, pageOffset + sliceIndex)),
|
|
130
|
+
]);
|
|
131
|
+
const navigationRow = [];
|
|
132
|
+
if (currentPage > 0) {
|
|
133
|
+
navigationRow.push(telegraf_1.Markup.button.callback('‹ Prev', buildRegionPageCallback(regionIndex, currentPage - 1)));
|
|
134
|
+
}
|
|
135
|
+
navigationRow.push(telegraf_1.Markup.button.callback('⬅ Regions', exports.timezonePickerBackCallback));
|
|
136
|
+
if (currentPage < totalPages - 1) {
|
|
137
|
+
navigationRow.push(telegraf_1.Markup.button.callback('Next ›', buildRegionPageCallback(regionIndex, currentPage + 1)));
|
|
138
|
+
}
|
|
139
|
+
rows.push(navigationRow);
|
|
140
|
+
return { region, keyboard: telegraf_1.Markup.inlineKeyboard(rows), currentPage, totalPages };
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=timezonePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timezonePicker.js","sourceRoot":"","sources":["../../../src/connectors/telegram/timezonePicker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Decouples Telegraf's long-polling intake from per-handler
|
|
3
|
+
* latency so load in one topic can no longer delay intake (or the read-✓✓
|
|
4
|
+
* receipt) of another.
|
|
5
|
+
*
|
|
6
|
+
* **The problem.** Telegraf 4.16.3 long-polling runs
|
|
7
|
+
* `for await (updates) await Promise.all(updates.map(handleUpdate))`. The next
|
|
8
|
+
* `getUpdates` — which BOTH acknowledges the previous batch (flips the user's
|
|
9
|
+
* second checkmark) AND fetches new messages for every thread — cannot fire
|
|
10
|
+
* until every handler in the current batch resolves. One handler stuck on a
|
|
11
|
+
* Telegram send (worse: under a 429 cooldown), an agent start, or a folder
|
|
12
|
+
* mkdir holds the whole loop, so unrelated topics stall.
|
|
13
|
+
*
|
|
14
|
+
* **The fix.** Wrap `bot.handleUpdate` so it ENQUEUES the real work into a
|
|
15
|
+
* per-thread serial queue and resolves immediately. `Promise.all` then resolves
|
|
16
|
+
* at once, the next `getUpdates` (ACK + new batch) fires now, and the real
|
|
17
|
+
* middleware chain runs off the polling loop — per-thread-serial, cross-thread
|
|
18
|
+
* parallel.
|
|
19
|
+
*
|
|
20
|
+
* **ACK-before-process is accepted** (matches the existing `voiceQueue`): the
|
|
21
|
+
* offset is sent as soon as the update is enqueued, so an update queued but not
|
|
22
|
+
* yet processed at a HARD crash is lost (Telegram won't redeliver). Graceful
|
|
23
|
+
* shutdown drains the queues (bounded), so only an actual crash can drop work.
|
|
24
|
+
*/
|
|
25
|
+
import type { ServerResponse } from 'http';
|
|
26
|
+
import type { Update } from 'telegraf/typings/core/types/typegram';
|
|
27
|
+
/**
|
|
28
|
+
* @description Coarse serialization key for a RAW Telegram update:
|
|
29
|
+
* `"<chatId>:<threadId>"`, or `"global"` for updates with no chat. It governs
|
|
30
|
+
* ONLY queue serialization + cross-thread parallelism — routing correctness
|
|
31
|
+
* stays inside the unchanged handler chain, which re-resolves the real
|
|
32
|
+
* `SessionKey` itself. Narrowed on the `Update` union (no `any`).
|
|
33
|
+
*/
|
|
34
|
+
export declare function getUpdateQueueKey(update: Update): string;
|
|
35
|
+
export interface UpdateDispatcherDeps {
|
|
36
|
+
/** Map a raw update to its serialization key (FIFO per key, parallel across keys). */
|
|
37
|
+
getKey: (update: Update) => string;
|
|
38
|
+
/**
|
|
39
|
+
* Backstop for an unexpected rejection of the wrapped chain. The original
|
|
40
|
+
* `bot.handleUpdate` already routes handler errors to `bot.catch`, so this
|
|
41
|
+
* only fires if the chain rejects outside that — never swallow it silently.
|
|
42
|
+
*/
|
|
43
|
+
onError?: (error: unknown, update: Update) => void;
|
|
44
|
+
}
|
|
45
|
+
export interface UpdateDispatcher {
|
|
46
|
+
/**
|
|
47
|
+
* Append `run` to the update's per-key serial queue and return SYNCHRONOUSLY
|
|
48
|
+
* (does not await `run`). Preserves arrival order within a key; never throws.
|
|
49
|
+
*/
|
|
50
|
+
dispatch(update: Update, run: () => Promise<void>): void;
|
|
51
|
+
/**
|
|
52
|
+
* Await all outstanding work to settle, raced against `timeoutMs` so it can
|
|
53
|
+
* never outlast the shutdown watchdog. Used by the graceful-shutdown drain.
|
|
54
|
+
*/
|
|
55
|
+
drainIdle(timeoutMs: number): Promise<void>;
|
|
56
|
+
/** Outstanding (queued + in-flight) task count — for tests / metrics. */
|
|
57
|
+
size(): number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @description Build the per-thread serial dispatcher. One {@link SerialQueue}
|
|
61
|
+
* per key (created lazily; the map is bounded by the number of active topics);
|
|
62
|
+
* different keys run concurrently.
|
|
63
|
+
*/
|
|
64
|
+
export declare function createUpdateDispatcher(deps: UpdateDispatcherDeps): UpdateDispatcher;
|
|
65
|
+
/**
|
|
66
|
+
* Minimal seam over Telegraf's reassignable `handleUpdate`. The polling loop
|
|
67
|
+
* calls `this.handleUpdate(update)` per update, so reassigning the instance
|
|
68
|
+
* property before `bot.launch` re-routes every update through the dispatcher.
|
|
69
|
+
*/
|
|
70
|
+
interface DispatchableBot {
|
|
71
|
+
handleUpdate(update: Update, webhookResponse?: ServerResponse): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* @description Reassign `bot.handleUpdate` to enqueue via `dispatcher` and
|
|
75
|
+
* resolve immediately, so the polling loop's `Promise.all` settles at once and
|
|
76
|
+
* the next `getUpdates` (ACK + fetch) fires without waiting on the handlers.
|
|
77
|
+
*
|
|
78
|
+
* **Polling-only.** The captured `webhookResponse` is forwarded to the original
|
|
79
|
+
* for completeness, but a webhook deployment would need its response written
|
|
80
|
+
* synchronously per update — this offload model only fits long polling, which
|
|
81
|
+
* is the bot's sole transport (`bot.launch`).
|
|
82
|
+
*/
|
|
83
|
+
export declare function installUpdateDispatcher(bot: DispatchableBot, dispatcher: UpdateDispatcher): void;
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=updateDispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateDispatcher.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/updateDispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAYnE;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAgDxD;AAED,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzD;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,yEAAyE;IACzE,IAAI,IAAI,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB,CAmDnF;AAED;;;;GAIG;AACH,UAAU,eAAe;IACvB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAMhG"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Decouples Telegraf's long-polling intake from per-handler
|
|
4
|
+
* latency so load in one topic can no longer delay intake (or the read-✓✓
|
|
5
|
+
* receipt) of another.
|
|
6
|
+
*
|
|
7
|
+
* **The problem.** Telegraf 4.16.3 long-polling runs
|
|
8
|
+
* `for await (updates) await Promise.all(updates.map(handleUpdate))`. The next
|
|
9
|
+
* `getUpdates` — which BOTH acknowledges the previous batch (flips the user's
|
|
10
|
+
* second checkmark) AND fetches new messages for every thread — cannot fire
|
|
11
|
+
* until every handler in the current batch resolves. One handler stuck on a
|
|
12
|
+
* Telegram send (worse: under a 429 cooldown), an agent start, or a folder
|
|
13
|
+
* mkdir holds the whole loop, so unrelated topics stall.
|
|
14
|
+
*
|
|
15
|
+
* **The fix.** Wrap `bot.handleUpdate` so it ENQUEUES the real work into a
|
|
16
|
+
* per-thread serial queue and resolves immediately. `Promise.all` then resolves
|
|
17
|
+
* at once, the next `getUpdates` (ACK + new batch) fires now, and the real
|
|
18
|
+
* middleware chain runs off the polling loop — per-thread-serial, cross-thread
|
|
19
|
+
* parallel.
|
|
20
|
+
*
|
|
21
|
+
* **ACK-before-process is accepted** (matches the existing `voiceQueue`): the
|
|
22
|
+
* offset is sent as soon as the update is enqueued, so an update queued but not
|
|
23
|
+
* yet processed at a HARD crash is lost (Telegram won't redeliver). Graceful
|
|
24
|
+
* shutdown drains the queues (bounded), so only an actual crash can drop work.
|
|
25
|
+
*/
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.getUpdateQueueKey = getUpdateQueueKey;
|
|
28
|
+
exports.createUpdateDispatcher = createUpdateDispatcher;
|
|
29
|
+
exports.installUpdateDispatcher = installUpdateDispatcher;
|
|
30
|
+
const serialQueue_1 = require("../../utils/serialQueue");
|
|
31
|
+
/** Key for updates that carry no chat (inline query, poll, etc.) — one queue. */
|
|
32
|
+
const globalQueueKey = 'global';
|
|
33
|
+
/** Stand-in thread id for chats without a forum topic (DMs, basic groups). */
|
|
34
|
+
const noThreadId = 0;
|
|
35
|
+
function buildQueueKey(chatId, threadId) {
|
|
36
|
+
return `${chatId}:${threadId ?? noThreadId}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @description Coarse serialization key for a RAW Telegram update:
|
|
40
|
+
* `"<chatId>:<threadId>"`, or `"global"` for updates with no chat. It governs
|
|
41
|
+
* ONLY queue serialization + cross-thread parallelism — routing correctness
|
|
42
|
+
* stays inside the unchanged handler chain, which re-resolves the real
|
|
43
|
+
* `SessionKey` itself. Narrowed on the `Update` union (no `any`).
|
|
44
|
+
*/
|
|
45
|
+
function getUpdateQueueKey(update) {
|
|
46
|
+
if ('message' in update) {
|
|
47
|
+
return buildQueueKey(update.message.chat.id, update.message.message_thread_id);
|
|
48
|
+
}
|
|
49
|
+
if ('edited_message' in update) {
|
|
50
|
+
return buildQueueKey(update.edited_message.chat.id, update.edited_message.message_thread_id);
|
|
51
|
+
}
|
|
52
|
+
if ('channel_post' in update) {
|
|
53
|
+
return buildQueueKey(update.channel_post.chat.id, update.channel_post.message_thread_id);
|
|
54
|
+
}
|
|
55
|
+
if ('edited_channel_post' in update) {
|
|
56
|
+
return buildQueueKey(update.edited_channel_post.chat.id, update.edited_channel_post.message_thread_id);
|
|
57
|
+
}
|
|
58
|
+
if ('callback_query' in update) {
|
|
59
|
+
const message = update.callback_query.message;
|
|
60
|
+
// An inline-mode callback carries no message (only inline_message_id) → no chat.
|
|
61
|
+
if (!message)
|
|
62
|
+
return globalQueueKey;
|
|
63
|
+
// `message_thread_id` exists only on the accessible Message variant.
|
|
64
|
+
const threadId = 'message_thread_id' in message ? message.message_thread_id : undefined;
|
|
65
|
+
return buildQueueKey(message.chat.id, threadId);
|
|
66
|
+
}
|
|
67
|
+
if ('message_reaction' in update) {
|
|
68
|
+
return buildQueueKey(update.message_reaction.chat.id, undefined);
|
|
69
|
+
}
|
|
70
|
+
if ('message_reaction_count' in update) {
|
|
71
|
+
return buildQueueKey(update.message_reaction_count.chat.id, undefined);
|
|
72
|
+
}
|
|
73
|
+
if ('my_chat_member' in update) {
|
|
74
|
+
return buildQueueKey(update.my_chat_member.chat.id, undefined);
|
|
75
|
+
}
|
|
76
|
+
if ('chat_member' in update) {
|
|
77
|
+
return buildQueueKey(update.chat_member.chat.id, undefined);
|
|
78
|
+
}
|
|
79
|
+
if ('chat_join_request' in update) {
|
|
80
|
+
return buildQueueKey(update.chat_join_request.chat.id, undefined);
|
|
81
|
+
}
|
|
82
|
+
if ('chat_boost' in update) {
|
|
83
|
+
return buildQueueKey(update.chat_boost.chat.id, undefined);
|
|
84
|
+
}
|
|
85
|
+
if ('removed_chat_boost' in update) {
|
|
86
|
+
return buildQueueKey(update.removed_chat_boost.chat.id, undefined);
|
|
87
|
+
}
|
|
88
|
+
// inline_query / chosen_inline_result / shipping_query / pre_checkout_query /
|
|
89
|
+
// poll / poll_answer carry no chat.
|
|
90
|
+
return globalQueueKey;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* @description Build the per-thread serial dispatcher. One {@link SerialQueue}
|
|
94
|
+
* per key (created lazily; the map is bounded by the number of active topics);
|
|
95
|
+
* different keys run concurrently.
|
|
96
|
+
*/
|
|
97
|
+
function createUpdateDispatcher(deps) {
|
|
98
|
+
const queues = new Map();
|
|
99
|
+
const outstanding = new Set();
|
|
100
|
+
function getQueue(key) {
|
|
101
|
+
let queue = queues.get(key);
|
|
102
|
+
if (!queue) {
|
|
103
|
+
queue = (0, serialQueue_1.createSerialQueue)();
|
|
104
|
+
queues.set(key, queue);
|
|
105
|
+
}
|
|
106
|
+
return queue;
|
|
107
|
+
}
|
|
108
|
+
function dispatch(update, run) {
|
|
109
|
+
const key = deps.getKey(update);
|
|
110
|
+
const queue = getQueue(key);
|
|
111
|
+
// `createSerialQueue` recovers its internal tail past a rejection, so a
|
|
112
|
+
// throwing `run` neither breaks this key's queue nor any sibling key.
|
|
113
|
+
const task = queue.run(run).then(() => undefined, (error) => {
|
|
114
|
+
deps.onError?.(error, update);
|
|
115
|
+
});
|
|
116
|
+
outstanding.add(task);
|
|
117
|
+
void task.finally(() => {
|
|
118
|
+
outstanding.delete(task);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function drainIdle(timeoutMs) {
|
|
122
|
+
// Snapshot now: shutdown has already stopped polling, so no new task is
|
|
123
|
+
// enqueued past this point; tasks still WAITING in their queue are already
|
|
124
|
+
// in `outstanding` (each `dispatch` adds its task before it starts).
|
|
125
|
+
const settled = Promise.allSettled(Array.from(outstanding)).then(() => undefined);
|
|
126
|
+
let handle;
|
|
127
|
+
const timeout = new Promise((resolve) => {
|
|
128
|
+
handle = setTimeout(resolve, timeoutMs);
|
|
129
|
+
});
|
|
130
|
+
// Clear the loser so a fast drain never leaves a ref'd timer pinning the
|
|
131
|
+
// event loop open (which would delay process exit on shutdown).
|
|
132
|
+
return Promise.race([settled, timeout]).finally(() => {
|
|
133
|
+
if (handle)
|
|
134
|
+
clearTimeout(handle);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function size() {
|
|
138
|
+
return outstanding.size;
|
|
139
|
+
}
|
|
140
|
+
return { dispatch, drainIdle, size };
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* @description Reassign `bot.handleUpdate` to enqueue via `dispatcher` and
|
|
144
|
+
* resolve immediately, so the polling loop's `Promise.all` settles at once and
|
|
145
|
+
* the next `getUpdates` (ACK + fetch) fires without waiting on the handlers.
|
|
146
|
+
*
|
|
147
|
+
* **Polling-only.** The captured `webhookResponse` is forwarded to the original
|
|
148
|
+
* for completeness, but a webhook deployment would need its response written
|
|
149
|
+
* synchronously per update — this offload model only fits long polling, which
|
|
150
|
+
* is the bot's sole transport (`bot.launch`).
|
|
151
|
+
*/
|
|
152
|
+
function installUpdateDispatcher(bot, dispatcher) {
|
|
153
|
+
const original = bot.handleUpdate.bind(bot);
|
|
154
|
+
bot.handleUpdate = (update, webhookResponse) => {
|
|
155
|
+
dispatcher.dispatch(update, () => original(update, webhookResponse));
|
|
156
|
+
return Promise.resolve();
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=updateDispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateDispatcher.js","sourceRoot":"","sources":["../../../src/connectors/telegram/updateDispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description An in-repo connector used ONLY by tests.
|
|
3
|
+
*
|
|
4
|
+
* Telegram declares every capability `true`, so without a second connector the
|
|
5
|
+
* degraded paths — the entire point of capability negotiation — are unreachable
|
|
6
|
+
* and therefore untested. This double lets a test declare any capability set
|
|
7
|
+
* and then assert what the core actually got: which content was split, which
|
|
8
|
+
* options survived, whether a pin was honoured.
|
|
9
|
+
*
|
|
10
|
+
* It is a TEST DOUBLE, not a surface: nothing is transmitted anywhere, and no
|
|
11
|
+
* production module may import it. The boundary guard does not police this
|
|
12
|
+
* directory because it imports no platform library at all.
|
|
13
|
+
*/
|
|
14
|
+
import type { SessionKey } from '../../sessionKey';
|
|
15
|
+
import type { ConnectorInbound, InboundEvent } from '../../platform/inbound';
|
|
16
|
+
import type { ActivityState, ConnectorCapabilities, ConnectorOutbound, OutboundFileRequest, OutboundHints } from '../../platform/outbound';
|
|
17
|
+
/**
|
|
18
|
+
* @description The deliberately POOR surface: no editing, no pins, no tappable
|
|
19
|
+
* controls, no attachments, no threads, no activity affordance, a small message
|
|
20
|
+
* cap and plain text. Roughly the shape of a tracker comment stream, which is
|
|
21
|
+
* the first real connector this degradation has to survive.
|
|
22
|
+
*/
|
|
23
|
+
export declare const minimalCapabilities: ConnectorCapabilities;
|
|
24
|
+
/** The opposite pole: everything supported, matching Telegram's declaration. */
|
|
25
|
+
export declare const richCapabilities: ConnectorCapabilities;
|
|
26
|
+
/** One recorded delivery, as the connector actually resolved it. */
|
|
27
|
+
export interface RecordedDelivery {
|
|
28
|
+
key: SessionKey;
|
|
29
|
+
/** The message bodies after the connector's own splitting at `maxMessageChars`. */
|
|
30
|
+
chunks: string[];
|
|
31
|
+
/** Options the surface really offered as controls — empty when degraded away. */
|
|
32
|
+
offeredOptionIds: string[];
|
|
33
|
+
/** Whether the message was actually kept prominent. */
|
|
34
|
+
wasKeptVisible: boolean;
|
|
35
|
+
/** Whether it got a message of its own rather than joining the stream. */
|
|
36
|
+
wasOwnMessage: boolean;
|
|
37
|
+
hints?: OutboundHints;
|
|
38
|
+
}
|
|
39
|
+
export interface TestConnector extends ConnectorOutbound, ConnectorInbound {
|
|
40
|
+
readonly deliveries: RecordedDelivery[];
|
|
41
|
+
readonly files: OutboundFileRequest[];
|
|
42
|
+
readonly activity: {
|
|
43
|
+
key: SessionKey;
|
|
44
|
+
state: ActivityState;
|
|
45
|
+
}[];
|
|
46
|
+
readonly finalized: string[];
|
|
47
|
+
readonly disposed: string[];
|
|
48
|
+
/** Push an event as if it had arrived from the surface. */
|
|
49
|
+
emit(event: InboundEvent): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
export declare function createTestConnector(capabilities?: ConnectorCapabilities): TestConnector;
|
|
52
|
+
//# sourceMappingURL=connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../../src/connectors/test/connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAEb,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EAEjB,mBAAmB,EAEnB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,qBASjC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,EAAE,qBAS9B,CAAC;AAEF,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,UAAU,CAAC;IAChB,mFAAmF;IACnF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iFAAiF;IACjF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,uDAAuD;IACvD,cAAc,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,aAAc,SAAQ,iBAAiB,EAAE,gBAAgB;IACxE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE;QAAE,GAAG,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,aAAa,CAAA;KAAE,EAAE,CAAC;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,2DAA2D;IAC3D,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAgBD,wBAAgB,mBAAmB,CACjC,YAAY,GAAE,qBAA2C,GACxD,aAAa,CA4Ff"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description An in-repo connector used ONLY by tests.
|
|
4
|
+
*
|
|
5
|
+
* Telegram declares every capability `true`, so without a second connector the
|
|
6
|
+
* degraded paths — the entire point of capability negotiation — are unreachable
|
|
7
|
+
* and therefore untested. This double lets a test declare any capability set
|
|
8
|
+
* and then assert what the core actually got: which content was split, which
|
|
9
|
+
* options survived, whether a pin was honoured.
|
|
10
|
+
*
|
|
11
|
+
* It is a TEST DOUBLE, not a surface: nothing is transmitted anywhere, and no
|
|
12
|
+
* production module may import it. The boundary guard does not police this
|
|
13
|
+
* directory because it imports no platform library at all.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.richCapabilities = exports.minimalCapabilities = void 0;
|
|
17
|
+
exports.createTestConnector = createTestConnector;
|
|
18
|
+
const sessionKey_1 = require("../../sessionKey");
|
|
19
|
+
const capabilityFallback_1 = require("../../platform/capabilityFallback");
|
|
20
|
+
/**
|
|
21
|
+
* @description The deliberately POOR surface: no editing, no pins, no tappable
|
|
22
|
+
* controls, no attachments, no threads, no activity affordance, a small message
|
|
23
|
+
* cap and plain text. Roughly the shape of a tracker comment stream, which is
|
|
24
|
+
* the first real connector this degradation has to survive.
|
|
25
|
+
*/
|
|
26
|
+
exports.minimalCapabilities = {
|
|
27
|
+
editMessages: false,
|
|
28
|
+
pinMessages: false,
|
|
29
|
+
tappableOptions: false,
|
|
30
|
+
attachments: false,
|
|
31
|
+
threadedReplies: false,
|
|
32
|
+
activityIndicator: false,
|
|
33
|
+
maxMessageChars: 40,
|
|
34
|
+
markupDialect: 'plain',
|
|
35
|
+
};
|
|
36
|
+
/** The opposite pole: everything supported, matching Telegram's declaration. */
|
|
37
|
+
exports.richCapabilities = {
|
|
38
|
+
editMessages: true,
|
|
39
|
+
pinMessages: true,
|
|
40
|
+
tappableOptions: true,
|
|
41
|
+
attachments: true,
|
|
42
|
+
threadedReplies: true,
|
|
43
|
+
activityIndicator: true,
|
|
44
|
+
maxMessageChars: 4000,
|
|
45
|
+
markupDialect: 'markdown',
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* @description Split at the surface's own cap. Crude on purpose — the point is
|
|
49
|
+
* to prove the core's content SURVIVES a small cap, not to re-test Telegram's
|
|
50
|
+
* word-aware splitter.
|
|
51
|
+
*/
|
|
52
|
+
function splitAtCap(text, maxChars) {
|
|
53
|
+
if (text.length <= maxChars)
|
|
54
|
+
return [text];
|
|
55
|
+
const chunks = [];
|
|
56
|
+
for (let offset = 0; offset < text.length; offset += maxChars) {
|
|
57
|
+
chunks.push(text.slice(offset, offset + maxChars));
|
|
58
|
+
}
|
|
59
|
+
return chunks;
|
|
60
|
+
}
|
|
61
|
+
function createTestConnector(capabilities = exports.minimalCapabilities) {
|
|
62
|
+
const deliveries = [];
|
|
63
|
+
const files = [];
|
|
64
|
+
const activity = [];
|
|
65
|
+
const finalized = [];
|
|
66
|
+
const disposed = [];
|
|
67
|
+
const unfinalized = new Set();
|
|
68
|
+
let onEvent = null;
|
|
69
|
+
return {
|
|
70
|
+
capabilities,
|
|
71
|
+
deliveries,
|
|
72
|
+
files,
|
|
73
|
+
activity,
|
|
74
|
+
finalized,
|
|
75
|
+
disposed,
|
|
76
|
+
async deliver(key, content, hints) {
|
|
77
|
+
const degraded = (0, capabilityFallback_1.getDegradedContent)(content, capabilities);
|
|
78
|
+
deliveries.push({
|
|
79
|
+
key,
|
|
80
|
+
chunks: splitAtCap(degraded.text, capabilities.maxMessageChars),
|
|
81
|
+
offeredOptionIds: (degraded.options ?? []).map((option) => option.id),
|
|
82
|
+
wasKeptVisible: degraded.keepVisible === true,
|
|
83
|
+
wasOwnMessage: (0, capabilityFallback_1.checkNeedsOwnMessage)(degraded),
|
|
84
|
+
hints,
|
|
85
|
+
});
|
|
86
|
+
if (hints?.isFinal !== true)
|
|
87
|
+
unfinalized.add((0, sessionKey_1.keyToString)(key));
|
|
88
|
+
},
|
|
89
|
+
async deliverFile(key, request) {
|
|
90
|
+
// Fail LOUDLY rather than pretending: an agent told "sent" for a file the
|
|
91
|
+
// surface cannot carry would never retry or describe it in text instead.
|
|
92
|
+
if (!capabilities.attachments) {
|
|
93
|
+
return { ok: false, error: 'this surface cannot receive file attachments' };
|
|
94
|
+
}
|
|
95
|
+
files.push(request);
|
|
96
|
+
return { ok: true, summary: `Sent ${request.paths.length} file(s) to ${(0, sessionKey_1.keyToString)(key)}.` };
|
|
97
|
+
},
|
|
98
|
+
setActivity(key, state) {
|
|
99
|
+
// A surface with no "working" affordance drops it silently — the core
|
|
100
|
+
// must not have to know which surfaces have one.
|
|
101
|
+
if (!capabilities.activityIndicator)
|
|
102
|
+
return;
|
|
103
|
+
activity.push({ key, state });
|
|
104
|
+
},
|
|
105
|
+
async finalize(key) {
|
|
106
|
+
const serialized = (0, sessionKey_1.keyToString)(key);
|
|
107
|
+
finalized.push(serialized);
|
|
108
|
+
unfinalized.delete(serialized);
|
|
109
|
+
},
|
|
110
|
+
dispose(key) {
|
|
111
|
+
const serialized = (0, sessionKey_1.keyToString)(key);
|
|
112
|
+
disposed.push(serialized);
|
|
113
|
+
unfinalized.delete(serialized);
|
|
114
|
+
},
|
|
115
|
+
checkIsDelivering(key) {
|
|
116
|
+
return unfinalized.has((0, sessionKey_1.keyToString)(key));
|
|
117
|
+
},
|
|
118
|
+
listUnfinalizedKeys() {
|
|
119
|
+
const seen = new Map();
|
|
120
|
+
for (const delivery of deliveries) {
|
|
121
|
+
const serialized = (0, sessionKey_1.keyToString)(delivery.key);
|
|
122
|
+
if (unfinalized.has(serialized))
|
|
123
|
+
seen.set(serialized, delivery.key);
|
|
124
|
+
}
|
|
125
|
+
return [...seen.values()];
|
|
126
|
+
},
|
|
127
|
+
async start(handler) {
|
|
128
|
+
onEvent = handler;
|
|
129
|
+
},
|
|
130
|
+
async stop() {
|
|
131
|
+
onEvent = null;
|
|
132
|
+
},
|
|
133
|
+
async listMembersWithElevatedRights() {
|
|
134
|
+
return [];
|
|
135
|
+
},
|
|
136
|
+
async emit(event) {
|
|
137
|
+
if (!onEvent)
|
|
138
|
+
return;
|
|
139
|
+
await onEvent(event);
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../../../src/connectors/test/connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description The test double's {@link SessionKeyCodec}.
|
|
3
|
+
*
|
|
4
|
+
* It exists so the seam can be exercised with a NON-Telegram platform id —
|
|
5
|
+
* without one, `keysEqual`'s platform comparison, the registry's
|
|
6
|
+
* `matches()`-based dispatch and every degraded capability path are unreachable
|
|
7
|
+
* and would be shipped untested.
|
|
8
|
+
*
|
|
9
|
+
* The spelling deliberately contains no `:`, and `|` guarantees the
|
|
10
|
+
* all-numeric Telegram pattern can never claim one of these strings, and vice
|
|
11
|
+
* versa. It has no `decodeSlug`: a test key is never read back from a tmux or
|
|
12
|
+
* directory name.
|
|
13
|
+
*/
|
|
14
|
+
import { type SessionKey, type SessionKeyCodec } from '../../sessionKey';
|
|
15
|
+
export declare const testSessionKeyCodec: SessionKeyCodec;
|
|
16
|
+
/**
|
|
17
|
+
* NOT self-registering, unlike the Telegram codec: a test double that armed
|
|
18
|
+
* itself on import would silently join the production registry through any
|
|
19
|
+
* transitive import. Tests register it explicitly and
|
|
20
|
+
* `unregisterSessionKeyCodec('test')` when done.
|
|
21
|
+
*/
|
|
22
|
+
export declare function registerTestSessionKeyCodec(): void;
|
|
23
|
+
/** Build a test {@link SessionKey}. Mirrors `makeTelegramKey`'s role. */
|
|
24
|
+
export declare function makeTestKey(space: string, thread: string): SessionKey;
|
|
25
|
+
//# sourceMappingURL=sessionKeyCodec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionKeyCodec.d.ts","sourceRoot":"","sources":["../../../src/connectors/test/sessionKeyCodec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAM1B,eAAO,MAAM,mBAAmB,EAAE,eAgBjC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAErE"}
|