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,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.maxDiscreteMessages = void 0;
|
|
4
|
+
exports.createSendMessagesToThread = createSendMessagesToThread;
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
/**
|
|
7
|
+
* Upper bound on how many discrete messages one call may deliver. A per-item
|
|
8
|
+
* news digest is ~30–40 messages; 50 leaves headroom while bounding a runaway
|
|
9
|
+
* call (each message is separately rate-paced, so a large batch also floods the
|
|
10
|
+
* topic with notifications).
|
|
11
|
+
*/
|
|
12
|
+
exports.maxDiscreteMessages = 50;
|
|
13
|
+
/** Trim a value and report whether anything non-blank remains. */
|
|
14
|
+
function getNonBlank(value) {
|
|
15
|
+
if (value === undefined)
|
|
16
|
+
return undefined;
|
|
17
|
+
return value.trim().length > 0 ? value : undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @description Classify one raw batch item. A plain non-empty string is a text
|
|
21
|
+
* message; a blank string is skipped (a stray separator never posts an empty
|
|
22
|
+
* bubble). An object with a non-blank `path` is an attachment send (its `text`
|
|
23
|
+
* becomes the caption when non-blank); an object with only text is a text
|
|
24
|
+
* message; an object with neither is a fatal validation error (the agent sent
|
|
25
|
+
* an empty item).
|
|
26
|
+
*/
|
|
27
|
+
function normalizeDiscreteMessageItem(item) {
|
|
28
|
+
if (typeof item === 'string') {
|
|
29
|
+
return item.trim().length === 0 ? { kind: 'skip' } : { kind: 'text', text: item };
|
|
30
|
+
}
|
|
31
|
+
const path = getNonBlank(item.path);
|
|
32
|
+
const text = getNonBlank(item.text);
|
|
33
|
+
if (path !== undefined) {
|
|
34
|
+
return {
|
|
35
|
+
kind: 'file',
|
|
36
|
+
path,
|
|
37
|
+
...(text !== undefined ? { caption: text } : {}),
|
|
38
|
+
...(item.asFile !== undefined ? { asFile: item.asFile } : {}),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (text !== undefined)
|
|
42
|
+
return { kind: 'text', text };
|
|
43
|
+
return { kind: 'invalid', error: 'each message item must have a non-empty text or path' };
|
|
44
|
+
}
|
|
45
|
+
/** Pluralised "N message(s)" for the human summary. */
|
|
46
|
+
function formatMessageCount(count) {
|
|
47
|
+
return `${count} message${count === 1 ? '' : 's'}`;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @description The graceful-cancellation result. Naming what ALREADY landed is
|
|
51
|
+
* load-bearing: without it the agent's natural next move is to re-send the whole
|
|
52
|
+
* batch, and the user sees the delivered items twice.
|
|
53
|
+
*/
|
|
54
|
+
function buildCancelledResult(landed) {
|
|
55
|
+
return { ok: false, error: `cancelled after delivering ${formatMessageCount(landed)}` };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @description Build the discrete-message sender. Each item is delivered as its
|
|
59
|
+
* OWN message, preserving order: a text item is split (defensively) into
|
|
60
|
+
* Telegram-sized chunks and each chunk sent separately; an attachment item goes
|
|
61
|
+
* through the injected file-send pipeline as a single path (text → caption).
|
|
62
|
+
* Cancellation is checked between items (coarse — a chunk already dispatched to
|
|
63
|
+
* the pacer still lands) and is ALSO caught when it is raised from inside an
|
|
64
|
+
* in-flight attachment send: `sendFiles` rejects on abort rather than returning,
|
|
65
|
+
* and letting that escape hid how many messages had already landed (the agent's
|
|
66
|
+
* natural retry then posted them twice).
|
|
67
|
+
*
|
|
68
|
+
* Items are validated up front (an all-empty object → error, nothing sent) so
|
|
69
|
+
* the service mirrors the MCP schema's all-or-nothing rejection. Failure is NOT
|
|
70
|
+
* swallowed: if every send failed the result is an ERROR (with any attachment
|
|
71
|
+
* errors named), so the agent knows nothing reached the topic instead of reading
|
|
72
|
+
* a false "Delivered 0" success; a partial failure stays `ok` but says how many
|
|
73
|
+
* landed. An attachment whose delivery outcome is unknown terminates the batch
|
|
74
|
+
* with a `deliveryUnknown` result so the agent does not blindly retry (mirrors
|
|
75
|
+
* `send_file_to_user`).
|
|
76
|
+
*/
|
|
77
|
+
function createSendMessagesToThread(deps) {
|
|
78
|
+
return async (threadKey, { messages, authorizedWorkDir, signal }) => {
|
|
79
|
+
const normalized = [];
|
|
80
|
+
for (const rawItem of messages) {
|
|
81
|
+
const item = normalizeDiscreteMessageItem(rawItem);
|
|
82
|
+
if (item.kind === 'invalid')
|
|
83
|
+
return { ok: false, error: item.error };
|
|
84
|
+
normalized.push(item);
|
|
85
|
+
}
|
|
86
|
+
const resolved = deps.resolveTarget(threadKey);
|
|
87
|
+
if (!resolved.ok)
|
|
88
|
+
return { ok: false, error: resolved.error };
|
|
89
|
+
const { target } = resolved;
|
|
90
|
+
let attempted = 0;
|
|
91
|
+
let landed = 0;
|
|
92
|
+
const sentMessageIds = [];
|
|
93
|
+
const attachmentErrors = [];
|
|
94
|
+
for (const item of normalized) {
|
|
95
|
+
if (signal?.aborted)
|
|
96
|
+
return buildCancelledResult(landed);
|
|
97
|
+
if (item.kind === 'skip')
|
|
98
|
+
continue;
|
|
99
|
+
if (item.kind === 'file') {
|
|
100
|
+
attempted += 1;
|
|
101
|
+
let fileResult;
|
|
102
|
+
try {
|
|
103
|
+
fileResult = await deps.sendFiles(threadKey, {
|
|
104
|
+
paths: [item.path],
|
|
105
|
+
...(item.caption !== undefined ? { caption: item.caption } : {}),
|
|
106
|
+
...(item.asFile !== undefined ? { asFile: item.asFile } : {}),
|
|
107
|
+
...(authorizedWorkDir !== undefined ? { authorizedWorkDir } : {}),
|
|
108
|
+
signal,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
// Unlike the between-items check, `sendFiles` REJECTS on abort (it
|
|
113
|
+
// rethrows `getAbortError`) rather than returning — so a batch
|
|
114
|
+
// cancelled mid-upload used to let the raw abort escape the whole
|
|
115
|
+
// service, hiding how many messages had already landed. Report the
|
|
116
|
+
// SAME structured cancellation instead. A genuine failure still
|
|
117
|
+
// propagates untouched, and an ambiguous delivery is unaffected:
|
|
118
|
+
// `sendFiles` maps that to a RETURNED `deliveryUnknown` result before
|
|
119
|
+
// it ever reaches its abort rethrow, so this catch cannot swallow it.
|
|
120
|
+
if (!(0, utils_1.checkIsAbortError)(error))
|
|
121
|
+
throw error;
|
|
122
|
+
return buildCancelledResult(landed);
|
|
123
|
+
}
|
|
124
|
+
if (fileResult.ok) {
|
|
125
|
+
landed += 1;
|
|
126
|
+
}
|
|
127
|
+
else if ('kind' in fileResult && fileResult.kind === 'deliveryUnknown') {
|
|
128
|
+
return {
|
|
129
|
+
ok: false,
|
|
130
|
+
kind: 'deliveryUnknown',
|
|
131
|
+
error: `Delivered ${formatMessageCount(landed)} before an attachment's delivery ` +
|
|
132
|
+
`outcome became unknown: ${fileResult.error}`,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
attachmentErrors.push(fileResult.error);
|
|
137
|
+
}
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
const chunks = deps.splitMessage(item.text, deps.maxMessageLength, deps.measureRendered);
|
|
141
|
+
for (const chunk of chunks) {
|
|
142
|
+
attempted += 1;
|
|
143
|
+
const messageId = await deps.sendChunk(target, chunk, signal);
|
|
144
|
+
if (messageId === null)
|
|
145
|
+
continue;
|
|
146
|
+
landed += 1;
|
|
147
|
+
sentMessageIds.push(messageId);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const attachmentErrorSuffix = attachmentErrors.length > 0 ? ` Attachment errors: ${attachmentErrors.join('; ')}.` : '';
|
|
151
|
+
if (attempted > 0 && landed === 0) {
|
|
152
|
+
return {
|
|
153
|
+
ok: false,
|
|
154
|
+
error: 'Failed to deliver any message to the topic (Telegram rejected the sends).' +
|
|
155
|
+
attachmentErrorSuffix,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
const summary = (landed === attempted
|
|
159
|
+
? `Delivered ${formatMessageCount(landed)} to the topic.`
|
|
160
|
+
: `Delivered ${landed} of ${attempted} messages to the topic (${attempted - landed} failed to send).`) +
|
|
161
|
+
attachmentErrorSuffix;
|
|
162
|
+
return { ok: true, summary, undeliveredCount: attempted - landed, sentMessageIds };
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=messageSendService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageSendService.js","sourceRoot":"","sources":["../../src/utils/messageSendService.ts"],"names":[],"mappings":";;;AA6LA,gEA0FC;AAvRD,oCAA6C;AAwE7C;;;;;GAKG;AACU,QAAA,mBAAmB,GAAG,EAAE,CAAC;AA6CtC,kEAAkE;AAClE,SAAS,WAAW,CAAC,KAAyB;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,4BAA4B,CAAC,IAAyB;IAC7D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpF,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI;YACJ,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACtD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC;AAC5F,CAAC;AAED,uDAAuD;AACvD,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,GAAG,KAAK,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,MAAc;IAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;AAC1F,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,0BAA0B,CACxC,IAAuC;IAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE;QAClE,MAAM,UAAU,GAA6B,EAAE,CAAC;QAChD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YACrE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAE5B,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAS;YAEnC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,SAAS,IAAI,CAAC,CAAC;gBACf,IAAI,UAAmC,CAAC;gBACxC,IAAI,CAAC;oBACH,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;wBAC3C,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;wBAClB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7D,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjE,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,mEAAmE;oBACnE,+DAA+D;oBAC/D,kEAAkE;oBAClE,mEAAmE;oBACnE,gEAAgE;oBAChE,iEAAiE;oBACjE,sEAAsE;oBACtE,sEAAsE;oBACtE,IAAI,CAAC,IAAA,yBAAiB,EAAC,KAAK,CAAC;wBAAE,MAAM,KAAK,CAAC;oBAC3C,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;oBAClB,MAAM,IAAI,CAAC,CAAC;gBACd,CAAC;qBAAM,IAAI,MAAM,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACzE,OAAO;wBACL,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,iBAAiB;wBACvB,KAAK,EACH,aAAa,kBAAkB,CAAC,MAAM,CAAC,mCAAmC;4BAC1E,2BAA2B,UAAU,CAAC,KAAK,EAAE;qBAChD,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC1C,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACzF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,SAAS,IAAI,CAAC,CAAC;gBACf,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC9D,IAAI,SAAS,KAAK,IAAI;oBAAE,SAAS;gBACjC,MAAM,IAAI,CAAC,CAAC;gBACZ,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,MAAM,qBAAqB,GACzB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3F,IAAI,SAAS,GAAG,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EACH,2EAA2E;oBAC3E,qBAAqB;aACxB,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GACX,CAAC,MAAM,KAAK,SAAS;YACnB,CAAC,CAAC,aAAa,kBAAkB,CAAC,MAAM,CAAC,gBAAgB;YACzD,CAAC,CAAC,aAAa,MAAM,OAAO,SAAS,2BAA2B,SAAS,GAAG,MAAM,mBAAmB,CAAC;YACxG,qBAAqB,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,GAAG,MAAM,EAAE,cAAc,EAAE,CAAC;IACrF,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description A window set in MINUTES through an environment override for a test
|
|
3
|
+
* or live-test instance (`REQUEST_BACKSTOP_MINUTES`, `AGENT_IDLE_MINUTES`). A
|
|
4
|
+
* missing, blank, non-numeric or non-positive value keeps `defaultMs`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getMinutesOverrideMs(overrideMinutes: string | undefined, defaultMs: number): number;
|
|
7
|
+
//# sourceMappingURL=minutesOverride.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minutesOverride.d.ts","sourceRoot":"","sources":["../../src/utils/minutesOverride.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAInG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMinutesOverrideMs = getMinutesOverrideMs;
|
|
4
|
+
const msPerMinute = 60 * 1000;
|
|
5
|
+
/**
|
|
6
|
+
* @description A window set in MINUTES through an environment override for a test
|
|
7
|
+
* or live-test instance (`REQUEST_BACKSTOP_MINUTES`, `AGENT_IDLE_MINUTES`). A
|
|
8
|
+
* missing, blank, non-numeric or non-positive value keeps `defaultMs`.
|
|
9
|
+
*/
|
|
10
|
+
function getMinutesOverrideMs(overrideMinutes, defaultMs) {
|
|
11
|
+
if (overrideMinutes === undefined || overrideMinutes.trim() === '')
|
|
12
|
+
return defaultMs;
|
|
13
|
+
const minutes = Number(overrideMinutes);
|
|
14
|
+
return Number.isFinite(minutes) && minutes > 0 ? minutes * msPerMinute : defaultMs;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=minutesOverride.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minutesOverride.js","sourceRoot":"","sources":["../../src/utils/minutesOverride.ts"],"names":[],"mappings":";;AAOA,oDAIC;AAXD,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9B;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,eAAmC,EAAE,SAAiB;IACzF,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACrF,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure decision + codec layer behind the two-level `/model`
|
|
3
|
+
* picker (providers → that provider's models, paginated).
|
|
4
|
+
*
|
|
5
|
+
* Why it exists: the old `/model` rendered EVERY model id into one Telegram
|
|
6
|
+
* message. Once the operator's OpenCode gained the `openrouter` provider (367
|
|
7
|
+
* models) that message grew to ~13 000 chars and every `/model` died on
|
|
8
|
+
* Telegram's 4096-char cap ("message is too long") — the topic just went
|
|
9
|
+
* silent. Buttons carry the list now; the message text stays short.
|
|
10
|
+
*
|
|
11
|
+
* Everything here is pure so `bot.ts` stays wiring: grouping, the
|
|
12
|
+
* visible/hidden split, and the callback-id codec are unit-tested without a
|
|
13
|
+
* Telegram surface.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* @description Telegram's hard limit on `callback_data` (bytes, not chars).
|
|
17
|
+
* Model ids like `openrouter/anthropic/claude-sonnet-4.5` blow past it, which
|
|
18
|
+
* is why every picker callback carries INDEXES instead of names — the same
|
|
19
|
+
* trick the `connm_<idx>` / `resume_<idx>` callbacks already use.
|
|
20
|
+
*/
|
|
21
|
+
export declare const telegramCallbackDataMaxBytes = 64;
|
|
22
|
+
/** Back to the provider level (level 2 → level 1). */
|
|
23
|
+
export declare const modelPickerBackCallback = "mdlback";
|
|
24
|
+
/** Inert label buttons (the "2/5" page pill, the hidden-provider name). */
|
|
25
|
+
export declare const modelPickerNoopCallback = "mdlnoop";
|
|
26
|
+
/** Anchored matchers for `bot.action(...)`, kept beside the builders so the
|
|
27
|
+
* wire format has a single definition. */
|
|
28
|
+
export declare const providerPageCallbackRe: RegExp;
|
|
29
|
+
export declare const modelPickCallbackRe: RegExp;
|
|
30
|
+
export declare const providerHideCallbackRe: RegExp;
|
|
31
|
+
export declare const providerShowCallbackRe: RegExp;
|
|
32
|
+
/** A provider index paired with a page index (level-2 navigation). */
|
|
33
|
+
export interface ProviderPageRef {
|
|
34
|
+
providerIndex: number;
|
|
35
|
+
page: number;
|
|
36
|
+
}
|
|
37
|
+
/** A provider index paired with a model index WITHIN that provider's list. */
|
|
38
|
+
export interface ModelPickRef {
|
|
39
|
+
providerIndex: number;
|
|
40
|
+
modelIndex: number;
|
|
41
|
+
}
|
|
42
|
+
export declare function buildProviderPageCallback(providerIndex: number, page: number): string;
|
|
43
|
+
export declare function buildModelPickCallback(providerIndex: number, modelIndex: number): string;
|
|
44
|
+
export declare function buildProviderHideCallback(providerIndex: number): string;
|
|
45
|
+
export declare function buildProviderShowCallback(providerIndex: number): string;
|
|
46
|
+
export declare function parseProviderPageCallback(callbackData: string): ProviderPageRef | null;
|
|
47
|
+
export declare function parseModelPickCallback(callbackData: string): ModelPickRef | null;
|
|
48
|
+
export declare function parseProviderHideCallback(callbackData: string): number | null;
|
|
49
|
+
export declare function parseProviderShowCallback(callbackData: string): number | null;
|
|
50
|
+
/** Whether a callback id fits Telegram's 64-BYTE `callback_data` budget. */
|
|
51
|
+
export declare function checkIsCallbackDataWithinLimit(callbackData: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* @description Group model ids by the provider segment before the first `/`.
|
|
54
|
+
*
|
|
55
|
+
* Ids WITHOUT a `/` land under `fallbackProvider` — the Claude backends report
|
|
56
|
+
* bare aliases (`sonnet`, `opus`, `haiku`), and the old slash-only grouping
|
|
57
|
+
* dropped them entirely, so `/model` on a Claude topic printed a header and an
|
|
58
|
+
* EMPTY list. The fallback is the adapter's own label.
|
|
59
|
+
*
|
|
60
|
+
* Insertion order is preserved for both providers and their models so the
|
|
61
|
+
* indexes the callback ids carry stay stable for a given catalog.
|
|
62
|
+
*/
|
|
63
|
+
export declare function groupModelsByProvider(models: readonly string[], fallbackProvider: string): Map<string, string[]>;
|
|
64
|
+
/**
|
|
65
|
+
* @description Label a model carries inside its provider's page — the id with
|
|
66
|
+
* the redundant `<provider>/` prefix stripped. A slash-less id (Claude alias
|
|
67
|
+
* grouped under the adapter label) is shown whole.
|
|
68
|
+
*/
|
|
69
|
+
export declare function getModelShortLabel(modelId: string, provider: string): string;
|
|
70
|
+
/**
|
|
71
|
+
* @description Whether the picker needs its provider level at all.
|
|
72
|
+
*
|
|
73
|
+
* A catalog with a single offered provider and nothing hidden (the Claude
|
|
74
|
+
* backends: one fallback group of aliases) would make level 1 a one-button
|
|
75
|
+
* detour, so the picker opens straight on that provider's models. As soon as
|
|
76
|
+
* something is hidden the level is needed again — the unhide buttons live
|
|
77
|
+
* there and are otherwise unreachable.
|
|
78
|
+
*/
|
|
79
|
+
export declare function checkHasProviderLevel(visibleProviderCount: number, hiddenProviderCount: number): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* @description A model catalog split the way the picker consumes it: grouped by
|
|
82
|
+
* provider, plus the offered/hidden partition.
|
|
83
|
+
*/
|
|
84
|
+
export interface ModelCatalog {
|
|
85
|
+
/** Provider → its model ids, catalog order. */
|
|
86
|
+
byProvider: Map<string, string[]>;
|
|
87
|
+
/** Every provider in catalog order — the index space the callbacks carry. */
|
|
88
|
+
providers: string[];
|
|
89
|
+
visibleProviders: string[];
|
|
90
|
+
hiddenProviders: string[];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* @description Assemble the picker's catalog from a raw model list. Pure — the
|
|
94
|
+
* bot's `getModelCatalog` only adds the adapter fetch and the persisted
|
|
95
|
+
* hidden-provider read around it.
|
|
96
|
+
*/
|
|
97
|
+
export declare function buildModelCatalog(models: readonly string[], fallbackProvider: string, hiddenProviders: readonly string[]): ModelCatalog;
|
|
98
|
+
export interface ProviderVisibility {
|
|
99
|
+
/** Providers offered in the picker, in catalog order. */
|
|
100
|
+
visible: string[];
|
|
101
|
+
/** Providers the operator hid, in catalog order. */
|
|
102
|
+
hidden: string[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* @description Split the catalog's providers into offered vs hidden.
|
|
106
|
+
*
|
|
107
|
+
* Hiding is bot-side and GLOBAL (persisted in `state.json`): it is the only
|
|
108
|
+
* lever that works for providers OpenCode enables from an environment variable
|
|
109
|
+
* (`openrouter` ← `OPENROUTER_API_KEY`), which `DELETE /auth/:id` cannot remove.
|
|
110
|
+
* A hidden provider is omitted from the pick list only — an explicit
|
|
111
|
+
* `/model <provider/model>` still resolves it, so hiding never breaks a saved
|
|
112
|
+
* model pref.
|
|
113
|
+
*
|
|
114
|
+
* Hidden entries no longer present in the catalog are ignored rather than
|
|
115
|
+
* reported: a stale name from a disconnected provider must not render a
|
|
116
|
+
* button that resolves to nothing.
|
|
117
|
+
*/
|
|
118
|
+
export declare function getProviderVisibility(allProviders: readonly string[], hiddenProviders: readonly string[]): ProviderVisibility;
|
|
119
|
+
//# sourceMappingURL=modelPickerPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelPickerPlan.d.ts","sourceRoot":"","sources":["../../src/utils/modelPickerPlan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAO/C,sDAAsD;AACtD,eAAO,MAAM,uBAAuB,YAAY,CAAC;AACjD,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD;2CAC2C;AAC3C,eAAO,MAAM,sBAAsB,QAAuB,CAAC;AAC3D,eAAO,MAAM,mBAAmB,QAAsB,CAAC;AACvD,eAAO,MAAM,sBAAsB,QAAoB,CAAC;AACxD,eAAO,MAAM,sBAAsB,QAAoB,CAAC;AAExD,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErF;AAED,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAItF;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIhF;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7E;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7E;AAED,4EAA4E;AAC5E,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,gBAAgB,EAAE,MAAM,GACvB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAUvB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,oBAAoB,EAAE,MAAM,EAC5B,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAET;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,YAAY,CAKd;AAED,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oDAAoD;IACpD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC,kBAAkB,CASpB"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Pure decision + codec layer behind the two-level `/model`
|
|
4
|
+
* picker (providers → that provider's models, paginated).
|
|
5
|
+
*
|
|
6
|
+
* Why it exists: the old `/model` rendered EVERY model id into one Telegram
|
|
7
|
+
* message. Once the operator's OpenCode gained the `openrouter` provider (367
|
|
8
|
+
* models) that message grew to ~13 000 chars and every `/model` died on
|
|
9
|
+
* Telegram's 4096-char cap ("message is too long") — the topic just went
|
|
10
|
+
* silent. Buttons carry the list now; the message text stays short.
|
|
11
|
+
*
|
|
12
|
+
* Everything here is pure so `bot.ts` stays wiring: grouping, the
|
|
13
|
+
* visible/hidden split, and the callback-id codec are unit-tested without a
|
|
14
|
+
* Telegram surface.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.providerShowCallbackRe = exports.providerHideCallbackRe = exports.modelPickCallbackRe = exports.providerPageCallbackRe = exports.modelPickerNoopCallback = exports.modelPickerBackCallback = exports.telegramCallbackDataMaxBytes = void 0;
|
|
18
|
+
exports.buildProviderPageCallback = buildProviderPageCallback;
|
|
19
|
+
exports.buildModelPickCallback = buildModelPickCallback;
|
|
20
|
+
exports.buildProviderHideCallback = buildProviderHideCallback;
|
|
21
|
+
exports.buildProviderShowCallback = buildProviderShowCallback;
|
|
22
|
+
exports.parseProviderPageCallback = parseProviderPageCallback;
|
|
23
|
+
exports.parseModelPickCallback = parseModelPickCallback;
|
|
24
|
+
exports.parseProviderHideCallback = parseProviderHideCallback;
|
|
25
|
+
exports.parseProviderShowCallback = parseProviderShowCallback;
|
|
26
|
+
exports.checkIsCallbackDataWithinLimit = checkIsCallbackDataWithinLimit;
|
|
27
|
+
exports.groupModelsByProvider = groupModelsByProvider;
|
|
28
|
+
exports.getModelShortLabel = getModelShortLabel;
|
|
29
|
+
exports.checkHasProviderLevel = checkHasProviderLevel;
|
|
30
|
+
exports.buildModelCatalog = buildModelCatalog;
|
|
31
|
+
exports.getProviderVisibility = getProviderVisibility;
|
|
32
|
+
/**
|
|
33
|
+
* @description Telegram's hard limit on `callback_data` (bytes, not chars).
|
|
34
|
+
* Model ids like `openrouter/anthropic/claude-sonnet-4.5` blow past it, which
|
|
35
|
+
* is why every picker callback carries INDEXES instead of names — the same
|
|
36
|
+
* trick the `connm_<idx>` / `resume_<idx>` callbacks already use.
|
|
37
|
+
*/
|
|
38
|
+
exports.telegramCallbackDataMaxBytes = 64;
|
|
39
|
+
const providerPageCallbackPrefix = 'mdlp_';
|
|
40
|
+
const modelPickCallbackPrefix = 'mdl_';
|
|
41
|
+
const providerHideCallbackPrefix = 'mdlhide_';
|
|
42
|
+
const providerShowCallbackPrefix = 'mdlshow_';
|
|
43
|
+
/** Back to the provider level (level 2 → level 1). */
|
|
44
|
+
exports.modelPickerBackCallback = 'mdlback';
|
|
45
|
+
/** Inert label buttons (the "2/5" page pill, the hidden-provider name). */
|
|
46
|
+
exports.modelPickerNoopCallback = 'mdlnoop';
|
|
47
|
+
/** Anchored matchers for `bot.action(...)`, kept beside the builders so the
|
|
48
|
+
* wire format has a single definition. */
|
|
49
|
+
exports.providerPageCallbackRe = /^mdlp_(\d+)_(\d+)$/;
|
|
50
|
+
exports.modelPickCallbackRe = /^mdl_(\d+)_(\d+)$/;
|
|
51
|
+
exports.providerHideCallbackRe = /^mdlhide_(\d+)$/;
|
|
52
|
+
exports.providerShowCallbackRe = /^mdlshow_(\d+)$/;
|
|
53
|
+
function buildProviderPageCallback(providerIndex, page) {
|
|
54
|
+
return `${providerPageCallbackPrefix}${providerIndex}_${page}`;
|
|
55
|
+
}
|
|
56
|
+
function buildModelPickCallback(providerIndex, modelIndex) {
|
|
57
|
+
return `${modelPickCallbackPrefix}${providerIndex}_${modelIndex}`;
|
|
58
|
+
}
|
|
59
|
+
function buildProviderHideCallback(providerIndex) {
|
|
60
|
+
return `${providerHideCallbackPrefix}${providerIndex}`;
|
|
61
|
+
}
|
|
62
|
+
function buildProviderShowCallback(providerIndex) {
|
|
63
|
+
return `${providerShowCallbackPrefix}${providerIndex}`;
|
|
64
|
+
}
|
|
65
|
+
function parseProviderPageCallback(callbackData) {
|
|
66
|
+
const match = exports.providerPageCallbackRe.exec(callbackData);
|
|
67
|
+
if (!match)
|
|
68
|
+
return null;
|
|
69
|
+
return { providerIndex: Number(match[1]), page: Number(match[2]) };
|
|
70
|
+
}
|
|
71
|
+
function parseModelPickCallback(callbackData) {
|
|
72
|
+
const match = exports.modelPickCallbackRe.exec(callbackData);
|
|
73
|
+
if (!match)
|
|
74
|
+
return null;
|
|
75
|
+
return { providerIndex: Number(match[1]), modelIndex: Number(match[2]) };
|
|
76
|
+
}
|
|
77
|
+
function parseProviderHideCallback(callbackData) {
|
|
78
|
+
const match = exports.providerHideCallbackRe.exec(callbackData);
|
|
79
|
+
return match ? Number(match[1]) : null;
|
|
80
|
+
}
|
|
81
|
+
function parseProviderShowCallback(callbackData) {
|
|
82
|
+
const match = exports.providerShowCallbackRe.exec(callbackData);
|
|
83
|
+
return match ? Number(match[1]) : null;
|
|
84
|
+
}
|
|
85
|
+
/** Whether a callback id fits Telegram's 64-BYTE `callback_data` budget. */
|
|
86
|
+
function checkIsCallbackDataWithinLimit(callbackData) {
|
|
87
|
+
return Buffer.byteLength(callbackData, 'utf8') <= exports.telegramCallbackDataMaxBytes;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* @description Group model ids by the provider segment before the first `/`.
|
|
91
|
+
*
|
|
92
|
+
* Ids WITHOUT a `/` land under `fallbackProvider` — the Claude backends report
|
|
93
|
+
* bare aliases (`sonnet`, `opus`, `haiku`), and the old slash-only grouping
|
|
94
|
+
* dropped them entirely, so `/model` on a Claude topic printed a header and an
|
|
95
|
+
* EMPTY list. The fallback is the adapter's own label.
|
|
96
|
+
*
|
|
97
|
+
* Insertion order is preserved for both providers and their models so the
|
|
98
|
+
* indexes the callback ids carry stay stable for a given catalog.
|
|
99
|
+
*/
|
|
100
|
+
function groupModelsByProvider(models, fallbackProvider) {
|
|
101
|
+
const byProvider = new Map();
|
|
102
|
+
for (const model of models) {
|
|
103
|
+
const slashIndex = model.indexOf('/');
|
|
104
|
+
const provider = slashIndex > 0 ? model.slice(0, slashIndex) : fallbackProvider;
|
|
105
|
+
const providerModels = byProvider.get(provider);
|
|
106
|
+
if (providerModels)
|
|
107
|
+
providerModels.push(model);
|
|
108
|
+
else
|
|
109
|
+
byProvider.set(provider, [model]);
|
|
110
|
+
}
|
|
111
|
+
return byProvider;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* @description Label a model carries inside its provider's page — the id with
|
|
115
|
+
* the redundant `<provider>/` prefix stripped. A slash-less id (Claude alias
|
|
116
|
+
* grouped under the adapter label) is shown whole.
|
|
117
|
+
*/
|
|
118
|
+
function getModelShortLabel(modelId, provider) {
|
|
119
|
+
const prefix = `${provider}/`;
|
|
120
|
+
return modelId.startsWith(prefix) ? modelId.slice(prefix.length) : modelId;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* @description Whether the picker needs its provider level at all.
|
|
124
|
+
*
|
|
125
|
+
* A catalog with a single offered provider and nothing hidden (the Claude
|
|
126
|
+
* backends: one fallback group of aliases) would make level 1 a one-button
|
|
127
|
+
* detour, so the picker opens straight on that provider's models. As soon as
|
|
128
|
+
* something is hidden the level is needed again — the unhide buttons live
|
|
129
|
+
* there and are otherwise unreachable.
|
|
130
|
+
*/
|
|
131
|
+
function checkHasProviderLevel(visibleProviderCount, hiddenProviderCount) {
|
|
132
|
+
return visibleProviderCount > 1 || hiddenProviderCount > 0;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* @description Assemble the picker's catalog from a raw model list. Pure — the
|
|
136
|
+
* bot's `getModelCatalog` only adds the adapter fetch and the persisted
|
|
137
|
+
* hidden-provider read around it.
|
|
138
|
+
*/
|
|
139
|
+
function buildModelCatalog(models, fallbackProvider, hiddenProviders) {
|
|
140
|
+
const byProvider = groupModelsByProvider(models, fallbackProvider);
|
|
141
|
+
const providers = [...byProvider.keys()];
|
|
142
|
+
const { visible, hidden } = getProviderVisibility(providers, hiddenProviders);
|
|
143
|
+
return { byProvider, providers, visibleProviders: visible, hiddenProviders: hidden };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* @description Split the catalog's providers into offered vs hidden.
|
|
147
|
+
*
|
|
148
|
+
* Hiding is bot-side and GLOBAL (persisted in `state.json`): it is the only
|
|
149
|
+
* lever that works for providers OpenCode enables from an environment variable
|
|
150
|
+
* (`openrouter` ← `OPENROUTER_API_KEY`), which `DELETE /auth/:id` cannot remove.
|
|
151
|
+
* A hidden provider is omitted from the pick list only — an explicit
|
|
152
|
+
* `/model <provider/model>` still resolves it, so hiding never breaks a saved
|
|
153
|
+
* model pref.
|
|
154
|
+
*
|
|
155
|
+
* Hidden entries no longer present in the catalog are ignored rather than
|
|
156
|
+
* reported: a stale name from a disconnected provider must not render a
|
|
157
|
+
* button that resolves to nothing.
|
|
158
|
+
*/
|
|
159
|
+
function getProviderVisibility(allProviders, hiddenProviders) {
|
|
160
|
+
const hiddenSet = new Set(hiddenProviders);
|
|
161
|
+
const visible = [];
|
|
162
|
+
const hidden = [];
|
|
163
|
+
for (const provider of allProviders) {
|
|
164
|
+
if (hiddenSet.has(provider))
|
|
165
|
+
hidden.push(provider);
|
|
166
|
+
else
|
|
167
|
+
visible.push(provider);
|
|
168
|
+
}
|
|
169
|
+
return { visible, hidden };
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=modelPickerPlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelPickerPlan.js","sourceRoot":"","sources":["../../src/utils/modelPickerPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { ModelCatalog } from './modelPickerPlan';
|
|
2
|
+
/**
|
|
3
|
+
* @description How many entries the list keeps. Ten is one keyboard that needs
|
|
4
|
+
* no paging and matches the model level's page size, so the flat list is never
|
|
5
|
+
* taller than a provider page.
|
|
6
|
+
*/
|
|
7
|
+
export declare const recentModelsLimit = 10;
|
|
8
|
+
/** Opens the flat list (provider level → recent level). */
|
|
9
|
+
export declare const recentModelsOpenCallback = "mdlrecent";
|
|
10
|
+
/** Anchored matcher for `bot.action(...)`, kept beside the builder so the wire
|
|
11
|
+
* format has one definition. */
|
|
12
|
+
export declare const recentModelPickCallbackRe: RegExp;
|
|
13
|
+
/**
|
|
14
|
+
* @description Put `modelId` at the head of the list: a repeat pick moves its
|
|
15
|
+
* entry to the front rather than duplicating it, and the oldest entry falls
|
|
16
|
+
* off once `limit` is reached. Never mutates `current`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function pushRecentModel(current: readonly string[], modelId: string, limit?: number): string[];
|
|
19
|
+
/**
|
|
20
|
+
* @description The entries the picker may offer: those whose `provider/model`
|
|
21
|
+
* still exists in the live catalog AND whose provider is not hidden.
|
|
22
|
+
*
|
|
23
|
+
* A provider that was disconnected (or a model the server stopped serving)
|
|
24
|
+
* leaves a stale id behind in `state.json`; rendering a button for it would
|
|
25
|
+
* resolve to nothing. The entry stays on disk — the provider may come back —
|
|
26
|
+
* it is just not shown. Hidden providers are excluded for the same reason
|
|
27
|
+
* they are excluded one level up: hiding must make a provider unreachable
|
|
28
|
+
* through the picker, not just invisible on its own level.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getRecentModelsInCatalog(recentModels: readonly string[], catalog: ModelCatalog): string[];
|
|
31
|
+
/**
|
|
32
|
+
* @description Short identity of a model id that fits the callback budget:
|
|
33
|
+
* the first 8 hex chars of its SHA-256. The full id (`openrouter/anthropic/
|
|
34
|
+
* claude-sonnet-4.5`) cannot ride in `callback_data` (64 bytes), and an index
|
|
35
|
+
* alone would re-point an old keyboard at a DIFFERENT model once the list is
|
|
36
|
+
* reordered by a newer pick — so the button carries both.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getRecentModelIdentity(modelId: string): string;
|
|
39
|
+
export declare function buildRecentModelPickCallback(index: number, modelId: string): string;
|
|
40
|
+
/** A position in the list paired with the identity of the entry shown there. */
|
|
41
|
+
export interface RecentModelPickRef {
|
|
42
|
+
index: number;
|
|
43
|
+
identity: string;
|
|
44
|
+
}
|
|
45
|
+
export declare function parseRecentModelPickCallback(callbackData: string): RecentModelPickRef | null;
|
|
46
|
+
/**
|
|
47
|
+
* @description Resolve a tapped recent-list button against the list AS IT IS
|
|
48
|
+
* NOW. The index is only a hint: it is trusted when the entry there still has
|
|
49
|
+
* the identity the button carries; otherwise the list is searched for that
|
|
50
|
+
* identity (a newer pick just moved the entry). `null` — never another
|
|
51
|
+
* model — when the entry left the list (evicted past the cap, or filtered
|
|
52
|
+
* out because its provider is gone or hidden); the caller turns that into
|
|
53
|
+
* the "expired" toast.
|
|
54
|
+
*/
|
|
55
|
+
export declare function getRecentModelPick(recentModels: readonly string[], ref: RecentModelPickRef): string | null;
|
|
56
|
+
//# sourceMappingURL=modelRecentPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelRecentPlan.d.ts","sourceRoot":"","sources":["../../src/utils/modelRecentPlan.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,cAAc,CAAC;AAIpD;iCACiC;AACjC,eAAO,MAAM,yBAAyB,QAA+B,CAAC;AAEtE;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAA0B,GAChC,MAAM,EAAE,CAKV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,OAAO,EAAE,YAAY,GACpB,MAAM,EAAE,CASV;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAI5F;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,GAAG,EAAE,kBAAkB,GACtB,MAAM,GAAG,IAAI,CAIf"}
|