charness 0.0.0-stage → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1196 -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 +1351 -0
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeCliAdapter.js +4239 -0
- package/dist/adapters/claudeCliAdapter.js.map +1 -0
- package/dist/adapters/claudeConfigDir.d.ts +40 -0
- package/dist/adapters/claudeConfigDir.d.ts.map +1 -0
- package/dist/adapters/claudeConfigDir.js +3 -0
- package/dist/adapters/claudeConfigDir.js.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +580 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.js +1891 -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 +260 -0
- package/dist/adapters/createAdapter.d.ts.map +1 -0
- package/dist/adapters/createAdapter.js +512 -0
- package/dist/adapters/createAdapter.js.map +1 -0
- package/dist/adapters/openCodeAdapter.d.ts +1469 -0
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
- package/dist/adapters/openCodeAdapter.js +4623 -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 +44 -0
- package/dist/agentLogin/agentLogin.d.ts.map +1 -0
- package/dist/agentLogin/agentLogin.js +530 -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 +214 -0
- package/dist/apiErrorRetry.d.ts.map +1 -0
- package/dist/apiErrorRetry.js +382 -0
- package/dist/apiErrorRetry.js.map +1 -0
- package/dist/apiRetryKick.d.ts +157 -0
- package/dist/apiRetryKick.d.ts.map +1 -0
- package/dist/apiRetryKick.js +174 -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 +11226 -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/claudeProfiles.d.ts +42 -0
- package/dist/cli/claudeProfiles.d.ts.map +1 -0
- package/dist/cli/claudeProfiles.js +106 -0
- package/dist/cli/claudeProfiles.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 +140 -0
- package/dist/cli.js.map +1 -0
- package/dist/connectors/jira/adf.d.ts +74 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -0
- package/dist/connectors/jira/adf.js +412 -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 +59 -0
- package/dist/connectors/jira/answerSink.d.ts.map +1 -0
- package/dist/connectors/jira/answerSink.js +234 -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 +50 -0
- package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentTool.js +166 -0
- package/dist/connectors/jira/attachmentTool.js.map +1 -0
- package/dist/connectors/jira/client.d.ts +522 -0
- package/dist/connectors/jira/client.d.ts.map +1 -0
- package/dist/connectors/jira/client.js +491 -0
- package/dist/connectors/jira/client.js.map +1 -0
- package/dist/connectors/jira/config.d.ts +104 -0
- package/dist/connectors/jira/config.d.ts.map +1 -0
- package/dist/connectors/jira/config.js +323 -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 +71 -0
- package/dist/connectors/jira/connector.d.ts.map +1 -0
- package/dist/connectors/jira/connector.js +312 -0
- package/dist/connectors/jira/connector.js.map +1 -0
- package/dist/connectors/jira/contextLedger.d.ts +60 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
- package/dist/connectors/jira/contextLedger.js +196 -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 +141 -0
- package/dist/connectors/jira/inbound.d.ts.map +1 -0
- package/dist/connectors/jira/inbound.js +331 -0
- package/dist/connectors/jira/inbound.js.map +1 -0
- package/dist/connectors/jira/issueBlocks.d.ts +74 -0
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
- package/dist/connectors/jira/issueBlocks.js +257 -0
- package/dist/connectors/jira/issueBlocks.js.map +1 -0
- package/dist/connectors/jira/issueContext.d.ts +31 -0
- package/dist/connectors/jira/issueContext.d.ts.map +1 -0
- package/dist/connectors/jira/issueContext.js +70 -0
- package/dist/connectors/jira/issueContext.js.map +1 -0
- package/dist/connectors/jira/issueDelta.d.ts +38 -0
- package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
- package/dist/connectors/jira/issueDelta.js +59 -0
- package/dist/connectors/jira/issueDelta.js.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts +22 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.js +105 -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 +39 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -0
- package/dist/connectors/jira/prompt.js +102 -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 +18 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.js +106 -0
- package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/jira/trigger.d.ts +54 -0
- package/dist/connectors/jira/trigger.d.ts.map +1 -0
- package/dist/connectors/jira/trigger.js +101 -0
- package/dist/connectors/jira/trigger.js.map +1 -0
- package/dist/connectors/jira/triggerLog.d.ts +53 -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/trustedGroup.d.ts +54 -0
- package/dist/connectors/jira/trustedGroup.d.ts.map +1 -0
- package/dist/connectors/jira/trustedGroup.js +98 -0
- package/dist/connectors/jira/trustedGroup.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 +34 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js +112 -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/claudeAccounts.d.ts +58 -0
- package/dist/connectors/telegram/commands/claudeAccounts.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/claudeAccounts.js +591 -0
- package/dist/connectors/telegram/commands/claudeAccounts.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/fallbackChain.d.ts +49 -0
- package/dist/connectors/telegram/commands/fallbackChain.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/fallbackChain.js +624 -0
- package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts +117 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.js +966 -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 +665 -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 +694 -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 +665 -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 +665 -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 +665 -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 +665 -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 +665 -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 +665 -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 +668 -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 +670 -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 +665 -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 +665 -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 +363 -0
- package/dist/scheduler/mcpSurface.d.ts.map +1 -0
- package/dist/scheduler/mcpSurface.js +1297 -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 +1416 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +2128 -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 +1022 -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 +56 -0
- package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
- package/dist/utils/autoContinueOnLimit.js +79 -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/claudeAccountPickerPlan.d.ts +85 -0
- package/dist/utils/claudeAccountPickerPlan.d.ts.map +1 -0
- package/dist/utils/claudeAccountPickerPlan.js +123 -0
- package/dist/utils/claudeAccountPickerPlan.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/claudeLimitSwitch.d.ts +40 -0
- package/dist/utils/claudeLimitSwitch.d.ts.map +1 -0
- package/dist/utils/claudeLimitSwitch.js +54 -0
- package/dist/utils/claudeLimitSwitch.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/claudeProfileUsageLines.d.ts +15 -0
- package/dist/utils/claudeProfileUsageLines.d.ts.map +1 -0
- package/dist/utils/claudeProfileUsageLines.js +42 -0
- package/dist/utils/claudeProfileUsageLines.js.map +1 -0
- package/dist/utils/claudeProfiles.d.ts +117 -0
- package/dist/utils/claudeProfiles.d.ts.map +1 -0
- package/dist/utils/claudeProfiles.js +285 -0
- package/dist/utils/claudeProfiles.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 +214 -0
- package/dist/utils/claudeStreamJson.d.ts.map +1 -0
- package/dist/utils/claudeStreamJson.js +364 -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/claudeUsage.d.ts +209 -0
- package/dist/utils/claudeUsage.d.ts.map +1 -0
- package/dist/utils/claudeUsage.js +413 -0
- package/dist/utils/claudeUsage.js.map +1 -0
- package/dist/utils/claudeUsageRefresher.d.ts +44 -0
- package/dist/utils/claudeUsageRefresher.d.ts.map +1 -0
- package/dist/utils/claudeUsageRefresher.js +95 -0
- package/dist/utils/claudeUsageRefresher.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/fallbackBridge.d.ts +32 -0
- package/dist/utils/fallbackBridge.d.ts.map +1 -0
- package/dist/utils/fallbackBridge.js +62 -0
- package/dist/utils/fallbackBridge.js.map +1 -0
- package/dist/utils/fallbackChain.d.ts +299 -0
- package/dist/utils/fallbackChain.d.ts.map +1 -0
- package/dist/utils/fallbackChain.js +542 -0
- package/dist/utils/fallbackChain.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 +238 -0
- package/dist/utils/jsonStreamHost.d.ts.map +1 -0
- package/dist/utils/jsonStreamHost.js +438 -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/modelRecentPlan.d.ts +56 -0
- package/dist/utils/modelRecentPlan.d.ts.map +1 -0
- package/dist/utils/modelRecentPlan.js +107 -0
- package/dist/utils/modelRecentPlan.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 +79 -0
- package/dist/utils/threadStatusReport.d.ts.map +1 -0
- package/dist/utils/threadStatusReport.js +88 -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,278 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description The Telegram connector's inbound half — everything that turns a
|
|
4
|
+
* raw Telegram update into the core's platform-neutral {@link InboundEvent},
|
|
5
|
+
* plus the membership vocabulary the access policy used to import from telegraf
|
|
6
|
+
* directly.
|
|
7
|
+
*
|
|
8
|
+
* Nothing here decides policy. It translates: Telegram's nine `ChatMember`
|
|
9
|
+
* statuses become one `hasElevatedRights` boolean, its six media fields become
|
|
10
|
+
* five {@link AttachmentKind}s, and its `/name@bot args` syntax becomes an
|
|
11
|
+
* {@link InboundCommand} the neutral router can dispatch.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.getPlatformMembers = getPlatformMembers;
|
|
15
|
+
exports.checkShouldInvalidateAdminCache = checkShouldInvalidateAdminCache;
|
|
16
|
+
exports.getNormalizedAttachments = getNormalizedAttachments;
|
|
17
|
+
exports.getTelegramCommand = getTelegramCommand;
|
|
18
|
+
exports.getTelegramReplyQuoteBlock = getTelegramReplyQuoteBlock;
|
|
19
|
+
exports.getInboundEvent = getInboundEvent;
|
|
20
|
+
exports.createTelegramConnectorInbound = createTelegramConnectorInbound;
|
|
21
|
+
const commandRouter_1 = require("../../platform/commandRouter");
|
|
22
|
+
const accessControl_1 = require("../../accessControl");
|
|
23
|
+
const fileIntake_1 = require("./fileIntake");
|
|
24
|
+
const replyQuote_1 = require("../../utils/replyQuote");
|
|
25
|
+
/**
|
|
26
|
+
* @description The two Telegram membership statuses that grant elevated rights
|
|
27
|
+
* in a group. The core never sees these literals — that is the point of the
|
|
28
|
+
* mapping below.
|
|
29
|
+
*/
|
|
30
|
+
const elevatedTelegramStatuses = ['creator', 'administrator'];
|
|
31
|
+
/**
|
|
32
|
+
* @description A Telegram chat id as it appears in a {@link SessionKey}'s
|
|
33
|
+
* `space`: an integer, negative for supergroups. Deliberately the same shape the
|
|
34
|
+
* key codec recognises, so a `space` minted by another platform is refused here
|
|
35
|
+
* rather than silently coerced.
|
|
36
|
+
*/
|
|
37
|
+
const telegramChatIdPattern = /^-?\d+$/;
|
|
38
|
+
function checkHasElevatedRights(status) {
|
|
39
|
+
return elevatedTelegramStatuses.includes(status);
|
|
40
|
+
}
|
|
41
|
+
/** A Telegram user's best available human-readable name. */
|
|
42
|
+
function getDisplayName(user) {
|
|
43
|
+
const full = [user.first_name, user.last_name].filter(Boolean).join(' ').trim();
|
|
44
|
+
return full || user.username || user.id.toString();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @description Reduce a `getChatAdministrators` response to the core's neutral
|
|
48
|
+
* member shape. Bots are kept but flagged, so the policy's "real person" rule
|
|
49
|
+
* stays in the policy instead of being silently pre-applied here.
|
|
50
|
+
*/
|
|
51
|
+
function getPlatformMembers(members) {
|
|
52
|
+
return members.map((member) => ({
|
|
53
|
+
id: member.user.id.toString(),
|
|
54
|
+
displayName: getDisplayName(member.user),
|
|
55
|
+
isBot: member.user.is_bot,
|
|
56
|
+
hasElevatedRights: checkHasElevatedRights(member.status),
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @description Should a `chat_member` status transition invalidate the cached
|
|
61
|
+
* admin set? Only transitions that TOUCH elevated status matter — someone was
|
|
62
|
+
* or becomes creator/administrator (promotion, demotion, an admin leaving).
|
|
63
|
+
* Joins/leaves of regular members can't change the admin set, so they must not
|
|
64
|
+
* trigger a `getChatAdministrators` refetch.
|
|
65
|
+
*
|
|
66
|
+
* Lives in the connector because the decision is expressed entirely in
|
|
67
|
+
* Telegram's status vocabulary.
|
|
68
|
+
*/
|
|
69
|
+
function checkShouldInvalidateAdminCache(oldStatus, newStatus) {
|
|
70
|
+
return checkHasElevatedRights(oldStatus) || checkHasElevatedRights(newStatus);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @description Telegram's six ingestible media kinds collapsed onto the core's
|
|
74
|
+
* five. `video_note` (a round video) and `animation` (a GIF) are Telegram UI
|
|
75
|
+
* distinctions with no bearing on how the core treats the bytes.
|
|
76
|
+
*/
|
|
77
|
+
const attachmentKindByTelegramKind = {
|
|
78
|
+
photo: 'photo',
|
|
79
|
+
document: 'document',
|
|
80
|
+
video: 'video',
|
|
81
|
+
video_note: 'video',
|
|
82
|
+
animation: 'video',
|
|
83
|
+
audio: 'audio',
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* @description Normalize a message's media into the core's attachment shape.
|
|
87
|
+
*
|
|
88
|
+
* Voice is handled separately from {@link getTelegramFileMeta} because the bot
|
|
89
|
+
* routes it to transcription rather than file intake — but the core still needs
|
|
90
|
+
* to see that the message CARRIED something, so it is normalized here.
|
|
91
|
+
*/
|
|
92
|
+
function getNormalizedAttachments(message) {
|
|
93
|
+
if ('voice' in message && message.voice) {
|
|
94
|
+
return [
|
|
95
|
+
{
|
|
96
|
+
kind: 'voice',
|
|
97
|
+
handle: message.voice.file_id,
|
|
98
|
+
uniqueId: message.voice.file_unique_id,
|
|
99
|
+
fileName: null,
|
|
100
|
+
sizeBytes: message.voice.file_size ?? null,
|
|
101
|
+
caption: 'caption' in message ? (message.caption ?? null) : null,
|
|
102
|
+
},
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
const meta = (0, fileIntake_1.getTelegramFileMeta)(message);
|
|
106
|
+
if (!meta)
|
|
107
|
+
return [];
|
|
108
|
+
return [
|
|
109
|
+
{
|
|
110
|
+
kind: attachmentKindByTelegramKind[meta.kind],
|
|
111
|
+
handle: meta.fileId,
|
|
112
|
+
uniqueId: meta.fileUniqueId,
|
|
113
|
+
fileName: meta.fileName ?? null,
|
|
114
|
+
sizeBytes: meta.fileSize ?? null,
|
|
115
|
+
caption: meta.caption ?? null,
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* @description Recognise Telegram's command syntax in a text message.
|
|
121
|
+
*
|
|
122
|
+
* Deliberately mirrors telegraf's own `Composer.command` matching rule so
|
|
123
|
+
* routing commands through the neutral router cannot change which messages
|
|
124
|
+
* count as commands:
|
|
125
|
+
*
|
|
126
|
+
* - the message's FIRST entity must be a `bot_command` at offset 0;
|
|
127
|
+
* - `/name@someone` only counts when `someone` is this bot (case-insensitive),
|
|
128
|
+
* so a command addressed to another bot in the same group falls through;
|
|
129
|
+
* - everything after the command token is the argument remainder.
|
|
130
|
+
*
|
|
131
|
+
* Returns `null` when the message is not a command — the caller then treats it
|
|
132
|
+
* as plain text.
|
|
133
|
+
*/
|
|
134
|
+
function getTelegramCommand(message, identity) {
|
|
135
|
+
const commandEntity = message.entities?.[0];
|
|
136
|
+
if (commandEntity?.type !== 'bot_command' || commandEntity.offset > 0)
|
|
137
|
+
return null;
|
|
138
|
+
const [commandPart, addressee] = message.text.slice(0, commandEntity.length).split('@');
|
|
139
|
+
if (!commandPart)
|
|
140
|
+
return null;
|
|
141
|
+
if (addressee && addressee.toLowerCase() !== identity.username?.toLowerCase())
|
|
142
|
+
return null;
|
|
143
|
+
const name = commandPart.slice(1);
|
|
144
|
+
if (!name)
|
|
145
|
+
return null;
|
|
146
|
+
return { name, ...(0, commandRouter_1.splitCommandArgs)(message.text.slice(commandEntity.length)) };
|
|
147
|
+
}
|
|
148
|
+
function getInboundAuthor(user) {
|
|
149
|
+
if (!user)
|
|
150
|
+
return { id: '', displayName: '' };
|
|
151
|
+
return { id: user.id.toString(), displayName: getDisplayName(user) };
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* @description The file a replied-to message carries, for the quote to name: a
|
|
155
|
+
* voice note (never saved, its transcript went to the agent) or one of the six
|
|
156
|
+
* intake kinds, with the bot's saved copy when `findSavedFile` has one.
|
|
157
|
+
*/
|
|
158
|
+
function getReplyQuoteAttachment(replied, findSavedFile) {
|
|
159
|
+
if ('voice' in replied && replied.voice)
|
|
160
|
+
return { kind: 'voice' };
|
|
161
|
+
const meta = (0, fileIntake_1.getTelegramFileMeta)(replied);
|
|
162
|
+
if (!meta)
|
|
163
|
+
return undefined;
|
|
164
|
+
return { kind: meta.kind, fileName: meta.fileName, savedPath: findSavedFile?.(meta) };
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* @description A message's Telegram REPLY reduced to the structural input of
|
|
168
|
+
* {@link extractReplyQuote}, or `undefined` when the message replies to nothing.
|
|
169
|
+
* Read off the message itself, so a typed text and a voice note reply the same
|
|
170
|
+
* way — the reply is a property of the message, not of its content.
|
|
171
|
+
*/
|
|
172
|
+
function getReplyQuoteSource(message, identity, findSavedFile) {
|
|
173
|
+
const replied = 'reply_to_message' in message ? message.reply_to_message : undefined;
|
|
174
|
+
if (!replied)
|
|
175
|
+
return undefined;
|
|
176
|
+
return {
|
|
177
|
+
manualQuoteText: 'quote' in message ? message.quote?.text : undefined,
|
|
178
|
+
replyText: 'text' in replied ? replied.text : undefined,
|
|
179
|
+
replyCaption: 'caption' in replied ? replied.caption : undefined,
|
|
180
|
+
replyAttachment: getReplyQuoteAttachment(replied, findSavedFile),
|
|
181
|
+
replyMessageId: replied.message_id,
|
|
182
|
+
topicRootId: 'message_thread_id' in message ? message.message_thread_id : undefined,
|
|
183
|
+
isServiceMessage: 'forum_topic_created' in replied,
|
|
184
|
+
fromBot: identity.userId !== undefined && replied.from?.id === identity.userId,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* @description The replied-to message reduced to what the core renders into the
|
|
189
|
+
* agent prompt.
|
|
190
|
+
*
|
|
191
|
+
* The candidate order and the exclusions (service message, forum topic-root
|
|
192
|
+
* "post in this topic" reply, nothing quotable) are NOT restated here — they are
|
|
193
|
+
* {@link extractReplyQuote}, the same pure helper the reply-quote prompt block
|
|
194
|
+
* already uses. A second, subtly weaker copy is exactly how the highlighted
|
|
195
|
+
* partial quote (`message.quote`) would silently stop winning.
|
|
196
|
+
*/
|
|
197
|
+
function getInboundReplyTo(message, identity) {
|
|
198
|
+
const replied = 'reply_to_message' in message ? message.reply_to_message : undefined;
|
|
199
|
+
const quote = (0, replyQuote_1.extractReplyQuote)(getReplyQuoteSource(message, identity));
|
|
200
|
+
if (!replied || !quote)
|
|
201
|
+
return undefined;
|
|
202
|
+
return {
|
|
203
|
+
text: quote.quotedText,
|
|
204
|
+
author: 'from' in replied ? getInboundAuthor(replied.from) : null,
|
|
205
|
+
isFromAssistant: quote.fromBot,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* @description The agent-facing reply-quote block for a message the bot forwards
|
|
210
|
+
* as a prompt — a typed text, a voice note whose transcript becomes one, or a
|
|
211
|
+
* file whose announcement does — or `undefined` when there is nothing to fold in
|
|
212
|
+
* (no reply, the topic root, a service message, nothing quotable). One reader for
|
|
213
|
+
* all of them, so a spoken reply or a file sent as a reply carries exactly the
|
|
214
|
+
* block a typed reply to the same message does. A reply TO a file names that
|
|
215
|
+
* file, with the path `findSavedFile` returns for it.
|
|
216
|
+
*/
|
|
217
|
+
function getTelegramReplyQuoteBlock(message, identity, findSavedFile) {
|
|
218
|
+
return (0, replyQuote_1.buildReplyQuoteBlock)((0, replyQuote_1.extractReplyQuote)(getReplyQuoteSource(message, identity, findSavedFile))) ?? undefined;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* @description Turn one Telegram message into the core's {@link InboundEvent}.
|
|
222
|
+
*
|
|
223
|
+
* `key` is passed in rather than derived here because resolving it needs the
|
|
224
|
+
* surface configuration (owner id, served group, chat mode) that lives in the
|
|
225
|
+
* bot's routing layer, not in this translation step.
|
|
226
|
+
*
|
|
227
|
+
* `raw` overrides what lands on the event's connector-private escape hatch. It
|
|
228
|
+
* exists because the not-yet-relocated command handlers still read Telegram
|
|
229
|
+
* fields off the telegraf CONTEXT rather than off the bare message; once they
|
|
230
|
+
* move into this directory the override goes away and `raw` is the message.
|
|
231
|
+
*/
|
|
232
|
+
function getInboundEvent(message, key, identity, raw = message) {
|
|
233
|
+
const text = ('text' in message ? message.text : undefined) ?? '';
|
|
234
|
+
const caption = ('caption' in message ? message.caption : undefined) ?? '';
|
|
235
|
+
const command = 'text' in message ? (getTelegramCommand(message, identity) ?? undefined) : undefined;
|
|
236
|
+
return {
|
|
237
|
+
key,
|
|
238
|
+
author: getInboundAuthor('from' in message ? message.from : undefined),
|
|
239
|
+
text: text || caption,
|
|
240
|
+
attachments: getNormalizedAttachments(message),
|
|
241
|
+
replyTo: getInboundReplyTo(message, identity),
|
|
242
|
+
command,
|
|
243
|
+
raw,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
function createTelegramConnectorInbound(deps) {
|
|
247
|
+
let onEvent = null;
|
|
248
|
+
return {
|
|
249
|
+
async start(handler) {
|
|
250
|
+
onEvent = handler;
|
|
251
|
+
},
|
|
252
|
+
async stop() {
|
|
253
|
+
onEvent = null;
|
|
254
|
+
},
|
|
255
|
+
async listMembersWithElevatedRights(space) {
|
|
256
|
+
// REJECT rather than resolve `[]`: an empty resolve is a SUCCESSFUL fetch
|
|
257
|
+
// to `AdminCache`, which would stamp it fresh and lock every admin out for
|
|
258
|
+
// the whole TTL with no retry and nothing logged. A rejection is the only
|
|
259
|
+
// answer that keeps the last-known set and re-tries on the failure backoff.
|
|
260
|
+
// Matched syntactically, not via `Number`, which turns `""` into a
|
|
261
|
+
// perfectly finite `0` and would hand `getChatAdministrators` a bogus id.
|
|
262
|
+
if (!telegramChatIdPattern.test(space)) {
|
|
263
|
+
throw new Error(`telegram: "${space}" is not a chat id, cannot list its members`);
|
|
264
|
+
}
|
|
265
|
+
const members = getPlatformMembers(await deps.listAdministrators(Number(space)));
|
|
266
|
+
return (0, accessControl_1.getElevatedMemberIds)(members);
|
|
267
|
+
},
|
|
268
|
+
async deliver(message, key, raw) {
|
|
269
|
+
// Dropped rather than queued when inbound is not armed: an event that
|
|
270
|
+
// arrives before `start` (or after `stop`) has no core to route to, and
|
|
271
|
+
// buffering it would replay stale work at an arbitrary later moment.
|
|
272
|
+
if (!onEvent)
|
|
273
|
+
return;
|
|
274
|
+
await onEvent(getInboundEvent(message, key, deps.getIdentity(), raw ?? message));
|
|
275
|
+
},
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=inbound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../../src/connectors/telegram/inbound.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure builder for the `/language` inline picker keyboard — the
|
|
3
|
+
* endonym-button replacement for the old plain comma-separated code list. One
|
|
4
|
+
* button per LOCALE labelled with its endonym, two per row, plus a full-width
|
|
5
|
+
* `🌐 Auto` reset row. All 12 locales fit in ONE message (Telegram allows ~100
|
|
6
|
+
* buttons per inline keyboard), so there is no pagination / nav row.
|
|
7
|
+
*
|
|
8
|
+
* Kept pure (no `t()`, no bot state) so the layout — `✓` placement, endonym
|
|
9
|
+
* labels, Auto row — is unit-testable without booting Telegraf. The `🌐 Auto`
|
|
10
|
+
* label is a fixed glyph+word (recognisable across locales), not a translated
|
|
11
|
+
* string, so no per-locale dict key is needed.
|
|
12
|
+
*
|
|
13
|
+
* Wire ids (matched by the `bot.action(...)` handlers — keep in lockstep):
|
|
14
|
+
* `lang_<code>` · `lang_auto`.
|
|
15
|
+
* All are ≤ 64 bytes (`lang_` + a 2-letter code), well inside Telegram's cap.
|
|
16
|
+
*/
|
|
17
|
+
import { Markup } from 'telegraf';
|
|
18
|
+
import { type Locale } from '../../i18n';
|
|
19
|
+
/** «Reset to auto» button — clears the chat's explicit locale override. */
|
|
20
|
+
export declare const languageAutoCallback = "lang_auto";
|
|
21
|
+
/**
|
|
22
|
+
* @description Build the single-page `/language` picker (all 12 locales),
|
|
23
|
+
* ordered A→Z by the language's ENGLISH NAME (the buttons themselves stay
|
|
24
|
+
* endonym-labelled). Only the DISPLAY order is sorted here — the global
|
|
25
|
+
* `localeCodes` array stays `en`-first canonical for fallback/parity.
|
|
26
|
+
*
|
|
27
|
+
* @param current the chat's explicit override locale, or `null` for auto (drives
|
|
28
|
+
* which button carries the `✓` — a locale button when set, the `🌐 Auto` row
|
|
29
|
+
* when `null`).
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildLanguagePicker(current: Locale | null): Markup.Markup<import("@telegraf/types").InlineKeyboardMarkup>;
|
|
32
|
+
//# sourceMappingURL=languagePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languagePicker.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/languagePicker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAuD,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAE9F,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAQhD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,iEAiBzD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.languageAutoCallback = void 0;
|
|
4
|
+
exports.buildLanguagePicker = buildLanguagePicker;
|
|
5
|
+
/**
|
|
6
|
+
* @description Pure builder for the `/language` inline picker keyboard — the
|
|
7
|
+
* endonym-button replacement for the old plain comma-separated code list. One
|
|
8
|
+
* button per LOCALE labelled with its endonym, two per row, plus a full-width
|
|
9
|
+
* `🌐 Auto` reset row. All 12 locales fit in ONE message (Telegram allows ~100
|
|
10
|
+
* buttons per inline keyboard), so there is no pagination / nav row.
|
|
11
|
+
*
|
|
12
|
+
* Kept pure (no `t()`, no bot state) so the layout — `✓` placement, endonym
|
|
13
|
+
* labels, Auto row — is unit-testable without booting Telegraf. The `🌐 Auto`
|
|
14
|
+
* label is a fixed glyph+word (recognisable across locales), not a translated
|
|
15
|
+
* string, so no per-locale dict key is needed.
|
|
16
|
+
*
|
|
17
|
+
* Wire ids (matched by the `bot.action(...)` handlers — keep in lockstep):
|
|
18
|
+
* `lang_<code>` · `lang_auto`.
|
|
19
|
+
* All are ≤ 64 bytes (`lang_` + a 2-letter code), well inside Telegram's cap.
|
|
20
|
+
*/
|
|
21
|
+
const telegraf_1 = require("telegraf");
|
|
22
|
+
const i18n_1 = require("../../i18n");
|
|
23
|
+
/** «Reset to auto» button — clears the chat's explicit locale override. */
|
|
24
|
+
exports.languageAutoCallback = 'lang_auto';
|
|
25
|
+
function buildLocaleButton(locale, current) {
|
|
26
|
+
const endonym = (0, i18n_1.getLocaleEndonym)(locale);
|
|
27
|
+
const label = locale === current ? `✓ ${endonym}` : endonym;
|
|
28
|
+
return telegraf_1.Markup.button.callback(label, `lang_${locale}`);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @description Build the single-page `/language` picker (all 12 locales),
|
|
32
|
+
* ordered A→Z by the language's ENGLISH NAME (the buttons themselves stay
|
|
33
|
+
* endonym-labelled). Only the DISPLAY order is sorted here — the global
|
|
34
|
+
* `localeCodes` array stays `en`-first canonical for fallback/parity.
|
|
35
|
+
*
|
|
36
|
+
* @param current the chat's explicit override locale, or `null` for auto (drives
|
|
37
|
+
* which button carries the `✓` — a locale button when set, the `🌐 Auto` row
|
|
38
|
+
* when `null`).
|
|
39
|
+
*/
|
|
40
|
+
function buildLanguagePicker(current) {
|
|
41
|
+
const orderedCodes = [...i18n_1.localeCodes].sort((a, b) => (0, i18n_1.getLocaleEnglishName)(a).localeCompare((0, i18n_1.getLocaleEnglishName)(b)));
|
|
42
|
+
const rows = [];
|
|
43
|
+
for (let i = 0; i < orderedCodes.length; i += 2) {
|
|
44
|
+
const row = [buildLocaleButton(orderedCodes[i], current)];
|
|
45
|
+
if (orderedCodes[i + 1])
|
|
46
|
+
row.push(buildLocaleButton(orderedCodes[i + 1], current));
|
|
47
|
+
rows.push(row);
|
|
48
|
+
}
|
|
49
|
+
// Full-width 🌐 Auto row; `✓` when the chat has no explicit override.
|
|
50
|
+
rows.push([
|
|
51
|
+
telegraf_1.Markup.button.callback(current === null ? '✓ 🌐 Auto' : '🌐 Auto', exports.languageAutoCallback),
|
|
52
|
+
]);
|
|
53
|
+
return telegraf_1.Markup.inlineKeyboard(rows);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=languagePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languagePicker.js","sourceRoot":"","sources":["../../../src/connectors/telegram/languagePicker.ts"],"names":[],"mappings":";;;AAuCA,kDAiBC;AAxDD;;;;;;;;;;;;;;;GAeG;AACH,uCAAkC;AAElC,qCAA8F;AAE9F,2EAA2E;AAC9D,QAAA,oBAAoB,GAAG,WAAW,CAAC;AAEhD,SAAS,iBAAiB,CAAC,MAAc,EAAE,OAAsB;IAC/D,MAAM,OAAO,GAAG,IAAA,uBAAgB,EAAC,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5D,OAAO,iBAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,MAAM,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CAAC,OAAsB;IACxD,MAAM,YAAY,GAAG,CAAC,GAAG,kBAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClD,IAAA,2BAAoB,EAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAA,2BAAoB,EAAC,CAAC,CAAC,CAAC,CAC/D,CAAC;IACF,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,sEAAsE;IACtE,IAAI,CAAC,IAAI,CAAC;QACR,iBAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,4BAAoB,CAAC;KACzF,CAAC,CAAC;IAEH,OAAO,iBAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Split agent output into Telegram-sized chunks, keeping
|
|
3
|
+
* ```` ``` ```` code fences valid across chunk boundaries.
|
|
4
|
+
*
|
|
5
|
+
* Pure + dependency-free so it stays unit-testable without booting Telegraf
|
|
6
|
+
* (importing `bot.ts` constructs a `Telegraf` instance at module load, which
|
|
7
|
+
* needs a real token). Both the durable-output and status paths in `bot.ts`
|
|
8
|
+
* route through {@link splitMessage}.
|
|
9
|
+
*/
|
|
10
|
+
/** Telegram caps a message at 4096 chars; we leave headroom for markdown noise. */
|
|
11
|
+
export declare const MAX_MESSAGE_LEN = 4000;
|
|
12
|
+
/** Telegram's hard per-message limit. A rendered chunk that crosses this is
|
|
13
|
+
* rejected with a 400 "message is too long". */
|
|
14
|
+
export declare const TELEGRAM_HARD_LIMIT = 4096;
|
|
15
|
+
/**
|
|
16
|
+
* Margin reserved below {@link TELEGRAM_HARD_LIMIT} when splitting by rendered
|
|
17
|
+
* length. The render-aware check runs on a candidate chunk BEFORE
|
|
18
|
+
* {@link rebalanceFences}, which can still GROW the rendered output: closing an
|
|
19
|
+
* open fence at the cut and reopening one at the next chunk's start wraps bare
|
|
20
|
+
* text into an extra `<pre><code>…</code></pre>`. That wrapper adds
|
|
21
|
+
* `<pre><code>` (11) + `</code></pre>` (13) = 24 rendered chars; we round up to
|
|
22
|
+
* leave slack so a post-rebalance chunk can never cross the hard limit.
|
|
23
|
+
*/
|
|
24
|
+
export declare const RENDERED_REBALANCE_MARGIN = 32;
|
|
25
|
+
/** Effective rendered cap a candidate chunk must fit under so it still fits the
|
|
26
|
+
* hard limit after {@link rebalanceFences} may add fence wrappers. */
|
|
27
|
+
export declare const RENDERED_CHUNK_CAP: number;
|
|
28
|
+
/**
|
|
29
|
+
* Smallest source slice the render-aware back-off may shrink a chunk to. Guards
|
|
30
|
+
* against an infinite loop / empty chunk when a single un-splittable token
|
|
31
|
+
* renders huge (e.g. one very long word full of escapable `< & >`): once the
|
|
32
|
+
* candidate is this short we stop backing off and emit it even if it still
|
|
33
|
+
* measures over the cap, so the split always makes forward progress.
|
|
34
|
+
*/
|
|
35
|
+
export declare const MIN_RENDER_AWARE_CHUNK_LEN = 1;
|
|
36
|
+
/**
|
|
37
|
+
* @description Re-balance ```` ``` ```` fences across chunk boundaries. A tool
|
|
38
|
+
* diff / output (fenced by the Claude adapter) can exceed the chunk size; cut
|
|
39
|
+
* mid-fence, the first chunk has an unclosed fence and the next an orphan
|
|
40
|
+
* closer, so `renderAgentHtml` renders literal ```` ``` ```` instead of a
|
|
41
|
+
* `<pre>`. Closing an open fence at the cut and reopening it at the start of
|
|
42
|
+
* the next chunk keeps every chunk independently valid. No-op for text with
|
|
43
|
+
* balanced (or no) fences. Counts only line-start fences (block fences).
|
|
44
|
+
*/
|
|
45
|
+
export declare function rebalanceFences(chunks: string[]): string[];
|
|
46
|
+
/**
|
|
47
|
+
* @description Split agent text into Telegram-sized chunks.
|
|
48
|
+
*
|
|
49
|
+
* Without `measureRendered` the cut is purely SOURCE-length based (newline
|
|
50
|
+
* preferred) — exactly the legacy behaviour. With `measureRendered` the split
|
|
51
|
+
* is RENDER-AWARE: `renderAgentHtml` inflates the source (HTML-escaping
|
|
52
|
+
* `& < >`, adding `<b>`/`<pre>` tags), so a 4000-char source chunk can render
|
|
53
|
+
* past Telegram's 4096 cap. The caller injects the measure (keeping this module
|
|
54
|
+
* dependency-free); each candidate chunk is shrunk until its rendered length
|
|
55
|
+
* fits {@link RENDERED_CHUNK_CAP}, which leaves margin for the fence wrappers
|
|
56
|
+
* {@link rebalanceFences} may still add afterwards.
|
|
57
|
+
*
|
|
58
|
+
* @param measureRendered Maps a candidate source chunk to its rendered length.
|
|
59
|
+
* Omitted → source-length splitting, byte-identical to the legacy output.
|
|
60
|
+
*/
|
|
61
|
+
export declare function splitMessage(text: string, maxLen?: number, measureRendered?: (chunk: string) => number): string[];
|
|
62
|
+
//# sourceMappingURL=messageSplit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageSplit.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/messageSplit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mFAAmF;AACnF,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;iDACiD;AACjD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C;uEACuE;AACvE,eAAO,MAAM,kBAAkB,QAAkD,CAAC;AAElF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAU1D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAwB,EAChC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAC1C,MAAM,EAAE,CAmBV"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Split agent output into Telegram-sized chunks, keeping
|
|
4
|
+
* ```` ``` ```` code fences valid across chunk boundaries.
|
|
5
|
+
*
|
|
6
|
+
* Pure + dependency-free so it stays unit-testable without booting Telegraf
|
|
7
|
+
* (importing `bot.ts` constructs a `Telegraf` instance at module load, which
|
|
8
|
+
* needs a real token). Both the durable-output and status paths in `bot.ts`
|
|
9
|
+
* route through {@link splitMessage}.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MIN_RENDER_AWARE_CHUNK_LEN = exports.RENDERED_CHUNK_CAP = exports.RENDERED_REBALANCE_MARGIN = exports.TELEGRAM_HARD_LIMIT = exports.MAX_MESSAGE_LEN = void 0;
|
|
13
|
+
exports.rebalanceFences = rebalanceFences;
|
|
14
|
+
exports.splitMessage = splitMessage;
|
|
15
|
+
/** Telegram caps a message at 4096 chars; we leave headroom for markdown noise. */
|
|
16
|
+
exports.MAX_MESSAGE_LEN = 4000;
|
|
17
|
+
/** Telegram's hard per-message limit. A rendered chunk that crosses this is
|
|
18
|
+
* rejected with a 400 "message is too long". */
|
|
19
|
+
exports.TELEGRAM_HARD_LIMIT = 4096;
|
|
20
|
+
/**
|
|
21
|
+
* Margin reserved below {@link TELEGRAM_HARD_LIMIT} when splitting by rendered
|
|
22
|
+
* length. The render-aware check runs on a candidate chunk BEFORE
|
|
23
|
+
* {@link rebalanceFences}, which can still GROW the rendered output: closing an
|
|
24
|
+
* open fence at the cut and reopening one at the next chunk's start wraps bare
|
|
25
|
+
* text into an extra `<pre><code>…</code></pre>`. That wrapper adds
|
|
26
|
+
* `<pre><code>` (11) + `</code></pre>` (13) = 24 rendered chars; we round up to
|
|
27
|
+
* leave slack so a post-rebalance chunk can never cross the hard limit.
|
|
28
|
+
*/
|
|
29
|
+
exports.RENDERED_REBALANCE_MARGIN = 32;
|
|
30
|
+
/** Effective rendered cap a candidate chunk must fit under so it still fits the
|
|
31
|
+
* hard limit after {@link rebalanceFences} may add fence wrappers. */
|
|
32
|
+
exports.RENDERED_CHUNK_CAP = exports.TELEGRAM_HARD_LIMIT - exports.RENDERED_REBALANCE_MARGIN;
|
|
33
|
+
/**
|
|
34
|
+
* Smallest source slice the render-aware back-off may shrink a chunk to. Guards
|
|
35
|
+
* against an infinite loop / empty chunk when a single un-splittable token
|
|
36
|
+
* renders huge (e.g. one very long word full of escapable `< & >`): once the
|
|
37
|
+
* candidate is this short we stop backing off and emit it even if it still
|
|
38
|
+
* measures over the cap, so the split always makes forward progress.
|
|
39
|
+
*/
|
|
40
|
+
exports.MIN_RENDER_AWARE_CHUNK_LEN = 1;
|
|
41
|
+
/**
|
|
42
|
+
* @description Re-balance ```` ``` ```` fences across chunk boundaries. A tool
|
|
43
|
+
* diff / output (fenced by the Claude adapter) can exceed the chunk size; cut
|
|
44
|
+
* mid-fence, the first chunk has an unclosed fence and the next an orphan
|
|
45
|
+
* closer, so `renderAgentHtml` renders literal ```` ``` ```` instead of a
|
|
46
|
+
* `<pre>`. Closing an open fence at the cut and reopening it at the start of
|
|
47
|
+
* the next chunk keeps every chunk independently valid. No-op for text with
|
|
48
|
+
* balanced (or no) fences. Counts only line-start fences (block fences).
|
|
49
|
+
*/
|
|
50
|
+
function rebalanceFences(chunks) {
|
|
51
|
+
let carryOpen = false;
|
|
52
|
+
return chunks.map(chunk => {
|
|
53
|
+
let text = carryOpen ? '```\n' + chunk : chunk;
|
|
54
|
+
const fenceCount = (text.match(/^\s*```/gm) ?? []).length;
|
|
55
|
+
const endsOpen = fenceCount % 2 === 1;
|
|
56
|
+
if (endsOpen)
|
|
57
|
+
text = text + '\n```';
|
|
58
|
+
carryOpen = endsOpen;
|
|
59
|
+
return text;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @description Split agent text into Telegram-sized chunks.
|
|
64
|
+
*
|
|
65
|
+
* Without `measureRendered` the cut is purely SOURCE-length based (newline
|
|
66
|
+
* preferred) — exactly the legacy behaviour. With `measureRendered` the split
|
|
67
|
+
* is RENDER-AWARE: `renderAgentHtml` inflates the source (HTML-escaping
|
|
68
|
+
* `& < >`, adding `<b>`/`<pre>` tags), so a 4000-char source chunk can render
|
|
69
|
+
* past Telegram's 4096 cap. The caller injects the measure (keeping this module
|
|
70
|
+
* dependency-free); each candidate chunk is shrunk until its rendered length
|
|
71
|
+
* fits {@link RENDERED_CHUNK_CAP}, which leaves margin for the fence wrappers
|
|
72
|
+
* {@link rebalanceFences} may still add afterwards.
|
|
73
|
+
*
|
|
74
|
+
* @param measureRendered Maps a candidate source chunk to its rendered length.
|
|
75
|
+
* Omitted → source-length splitting, byte-identical to the legacy output.
|
|
76
|
+
*/
|
|
77
|
+
function splitMessage(text, maxLen = exports.MAX_MESSAGE_LEN, measureRendered) {
|
|
78
|
+
if (text.length <= maxLen && (!measureRendered || measureRendered(text) <= exports.RENDERED_CHUNK_CAP)) {
|
|
79
|
+
return [text];
|
|
80
|
+
}
|
|
81
|
+
const parts = [];
|
|
82
|
+
let remaining = text;
|
|
83
|
+
while (remaining.length > 0) {
|
|
84
|
+
if (remaining.length <= maxLen &&
|
|
85
|
+
(!measureRendered || measureRendered(remaining) <= exports.RENDERED_CHUNK_CAP)) {
|
|
86
|
+
parts.push(remaining);
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
const cutAt = getChunkCutAt(remaining, maxLen, measureRendered);
|
|
90
|
+
parts.push(remaining.slice(0, cutAt));
|
|
91
|
+
remaining = remaining.slice(cutAt).replace(/^\n/, '');
|
|
92
|
+
}
|
|
93
|
+
return rebalanceFences(parts);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* @description Choose the source index to cut `remaining` at for the next
|
|
97
|
+
* chunk. Starts from the newline-preferred SOURCE boundary (legacy behaviour),
|
|
98
|
+
* then — only when a render measure is supplied — retreats while the rendered
|
|
99
|
+
* candidate exceeds {@link RENDERED_CHUNK_CAP}: first to the previous newline,
|
|
100
|
+
* then shrinking progressively. A floor of {@link MIN_RENDER_AWARE_CHUNK_LEN}
|
|
101
|
+
* guarantees forward progress (never an empty chunk, never an infinite loop)
|
|
102
|
+
* even for a single un-splittable escapable-heavy token.
|
|
103
|
+
*/
|
|
104
|
+
function getChunkCutAt(remaining, maxLen, measureRendered) {
|
|
105
|
+
let cutAt = maxLen;
|
|
106
|
+
const lastNewline = remaining.lastIndexOf('\n', maxLen);
|
|
107
|
+
if (lastNewline > maxLen * 0.5)
|
|
108
|
+
cutAt = lastNewline;
|
|
109
|
+
if (!measureRendered)
|
|
110
|
+
return cutAt;
|
|
111
|
+
while (cutAt > exports.MIN_RENDER_AWARE_CHUNK_LEN && measureRendered(remaining.slice(0, cutAt)) > exports.RENDERED_CHUNK_CAP) {
|
|
112
|
+
// Prefer retreating to the previous newline (keeps lines intact); if there
|
|
113
|
+
// is none within the candidate, halve the slice to shrink it geometrically.
|
|
114
|
+
const previousNewline = remaining.lastIndexOf('\n', cutAt - 1);
|
|
115
|
+
cutAt = previousNewline > exports.MIN_RENDER_AWARE_CHUNK_LEN ? previousNewline : Math.floor(cutAt / 2);
|
|
116
|
+
}
|
|
117
|
+
return Math.max(cutAt, exports.MIN_RENDER_AWARE_CHUNK_LEN);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=messageSplit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageSplit.js","sourceRoot":"","sources":["../../../src/connectors/telegram/messageSplit.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA0CH,0CAUC;AAiBD,oCAuBC;AA1FD,mFAAmF;AACtE,QAAA,eAAe,GAAG,IAAI,CAAC;AAEpC;iDACiD;AACpC,QAAA,mBAAmB,GAAG,IAAI,CAAC;AAExC;;;;;;;;GAQG;AACU,QAAA,yBAAyB,GAAG,EAAE,CAAC;AAE5C;uEACuE;AAC1D,QAAA,kBAAkB,GAAG,2BAAmB,GAAG,iCAAyB,CAAC;AAElF;;;;;;GAMG;AACU,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAE5C;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAC,MAAgB;IAC9C,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACxB,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1D,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,QAAQ;YAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC;QACpC,SAAS,GAAG,QAAQ,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,YAAY,CAC1B,IAAY,EACZ,SAAiB,uBAAe,EAChC,eAA2C;IAE3C,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,CAAC,eAAe,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,0BAAkB,CAAC,EAAE,CAAC;QAC/F,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,IACE,SAAS,CAAC,MAAM,IAAI,MAAM;YAC1B,CAAC,CAAC,eAAe,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,0BAAkB,CAAC,EACtE,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,MAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACtC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CACpB,SAAiB,EACjB,MAAc,EACd,eAA2C;IAE3C,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,WAAW,GAAG,MAAM,GAAG,GAAG;QAAE,KAAK,GAAG,WAAW,CAAC;IACpD,IAAI,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IAEnC,OAAO,KAAK,GAAG,kCAA0B,IAAI,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,0BAAkB,EAAE,CAAC;QAC7G,2EAA2E;QAC3E,4EAA4E;QAC5E,MAAM,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/D,KAAK,GAAG,eAAe,GAAG,kCAA0B,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,kCAA0B,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description The Telegram connector's outbound half — everything that turns
|
|
3
|
+
* the core's semantic {@link OutboundContent} into Telegram messages.
|
|
4
|
+
*
|
|
5
|
+
* It owns the surface's UI idioms (inline keyboards, pins, the typing action)
|
|
6
|
+
* and delegates the streaming mechanics to the existing `OutputTransport`,
|
|
7
|
+
* which is a TELEGRAM CHAT-MODE seam (group edit-in-place vs DM draft cursor),
|
|
8
|
+
* NOT a platform seam. That distinction is why the transport is composed here
|
|
9
|
+
* as an internal detail instead of being promoted to the platform boundary.
|
|
10
|
+
*/
|
|
11
|
+
import type { InlineKeyboardMarkup } from 'telegraf/typings/core/types/typegram';
|
|
12
|
+
import type { SessionKey } from '../../sessionKey';
|
|
13
|
+
import type { OutputTransport } from '../../types';
|
|
14
|
+
import type { SendFilesToThread } from '../../utils/fileSendService';
|
|
15
|
+
import type { ConnectorCapabilities, ConnectorOutbound, OutboundOption } from '../../platform/outbound';
|
|
16
|
+
/**
|
|
17
|
+
* @description Telegram's self-declared surface. Every flag is `true` because
|
|
18
|
+
* Telegram is the surface the core was originally written against — which is
|
|
19
|
+
* exactly why the degraded paths need the S5 test double to be exercised at
|
|
20
|
+
* all.
|
|
21
|
+
*
|
|
22
|
+
* `maxMessageChars` is the splitter's working cap (4000), deliberately under
|
|
23
|
+
* Telegram's hard 4096 so an HTML render that inflates the source still fits.
|
|
24
|
+
*/
|
|
25
|
+
export declare const telegramCapabilities: ConnectorCapabilities;
|
|
26
|
+
/**
|
|
27
|
+
* @description Render the core's options as a one-button-per-row inline
|
|
28
|
+
* keyboard. Labels are elided to Telegram's practical button width — the full
|
|
29
|
+
* text is still readable in the message body, which always enumerates the
|
|
30
|
+
* options.
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildOptionsKeyboard(options: OutboundOption[]): InlineKeyboardMarkup | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* @description Bot primitives the Telegram outbound routes through, injected as
|
|
35
|
+
* closures so this module never imports `bot.ts` (a cycle) and stays testable
|
|
36
|
+
* without a live Telegraf instance.
|
|
37
|
+
*/
|
|
38
|
+
export interface TelegramOutboundDeps {
|
|
39
|
+
/**
|
|
40
|
+
* The boot-selected chat-mode transport. Read lazily (not captured) because
|
|
41
|
+
* it is registered later in the boot sequence than this connector.
|
|
42
|
+
*/
|
|
43
|
+
getOutputTransport: () => OutputTransport;
|
|
44
|
+
/**
|
|
45
|
+
* Send `text` as its OWN message — HTML-rendered with a plain-text retry, with
|
|
46
|
+
* an optional inline keyboard. Resolves the message id, or `null` when both
|
|
47
|
+
* attempts failed.
|
|
48
|
+
*/
|
|
49
|
+
sendStandaloneMessage: (key: SessionKey, text: string, replyMarkup?: InlineKeyboardMarkup) => Promise<number | null>;
|
|
50
|
+
/** Pin a message so a muted topic still fires a notification. */
|
|
51
|
+
pinMessage: (key: SessionKey, messageId: number) => Promise<void>;
|
|
52
|
+
/** Start (`true`) or stop (`false`) the repeating `sendChatAction('typing')` loop. */
|
|
53
|
+
setTypingLoader: (key: SessionKey, isActive: boolean) => void;
|
|
54
|
+
/** One `sendChatAction('typing')`, no loop — a booting session that has nothing to stream. */
|
|
55
|
+
sendTypingPing: (key: SessionKey) => void;
|
|
56
|
+
/** The reusable file-send service, already composed with the Telegram gateway. */
|
|
57
|
+
sendFiles: SendFilesToThread;
|
|
58
|
+
/** Serialize a key for the string-keyed file-send service. */
|
|
59
|
+
encodeKey: (key: SessionKey) => string;
|
|
60
|
+
}
|
|
61
|
+
export declare function createTelegramConnectorOutbound(deps: TelegramOutboundDeps): ConnectorOutbound;
|
|
62
|
+
//# sourceMappingURL=outbound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbound.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/outbound.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,OAAO,KAAK,EAEV,qBAAqB,EACrB,iBAAiB,EAKjB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,qBASlC,CAAC;AAKF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,oBAAoB,GAAG,SAAS,CAahG;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,kBAAkB,EAAE,MAAM,eAAe,CAAC;IAC1C;;;;OAIG;IACH,qBAAqB,EAAE,CACrB,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,oBAAoB,KAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,iEAAiE;IACjE,UAAU,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,sFAAsF;IACtF,eAAe,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D,8FAA8F;IAC9F,cAAc,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,kFAAkF;IAClF,SAAS,EAAE,iBAAiB,CAAC;IAC7B,8DAA8D;IAC9D,SAAS,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,CAAC;CACxC;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,CA8D7F"}
|