charness 0.0.0-stage → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +88 -0
- package/DEVELOPMENT.md +110 -0
- package/LICENSE +21 -0
- package/MIGRATION_1_TO_2.md +24 -0
- package/README.md +1024 -2
- package/dist/accessControl.d.ts +71 -0
- package/dist/accessControl.d.ts.map +1 -0
- package/dist/accessControl.js +108 -0
- package/dist/accessControl.js.map +1 -0
- package/dist/adapters/adapterEventRouting.d.ts +51 -0
- package/dist/adapters/adapterEventRouting.d.ts.map +1 -0
- package/dist/adapters/adapterEventRouting.js +74 -0
- package/dist/adapters/adapterEventRouting.js.map +1 -0
- package/dist/adapters/adapterNames.d.ts +19 -0
- package/dist/adapters/adapterNames.d.ts.map +1 -0
- package/dist/adapters/adapterNames.js +25 -0
- package/dist/adapters/adapterNames.js.map +1 -0
- package/dist/adapters/claudeCliAdapter.d.ts +1336 -0
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeCliAdapter.js +4204 -0
- package/dist/adapters/claudeCliAdapter.js.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +548 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.js +1810 -0
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -0
- package/dist/adapters/claudePlatformFlags.d.ts +35 -0
- package/dist/adapters/claudePlatformFlags.d.ts.map +1 -0
- package/dist/adapters/claudePlatformFlags.js +46 -0
- package/dist/adapters/claudePlatformFlags.js.map +1 -0
- package/dist/adapters/createAdapter.d.ts +252 -0
- package/dist/adapters/createAdapter.d.ts.map +1 -0
- package/dist/adapters/createAdapter.js +475 -0
- package/dist/adapters/createAdapter.js.map +1 -0
- package/dist/adapters/openCodeAdapter.d.ts +1446 -0
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
- package/dist/adapters/openCodeAdapter.js +4540 -0
- package/dist/adapters/openCodeAdapter.js.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts +28 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.js +15 -0
- package/dist/adapters/sessionLaunchDefaults.js.map +1 -0
- package/dist/adapters/terminalAdapter.d.ts +68 -0
- package/dist/adapters/terminalAdapter.d.ts.map +1 -0
- package/dist/adapters/terminalAdapter.js +371 -0
- package/dist/adapters/terminalAdapter.js.map +1 -0
- package/dist/agentLogin/agentLogin.d.ts +31 -0
- package/dist/agentLogin/agentLogin.d.ts.map +1 -0
- package/dist/agentLogin/agentLogin.js +493 -0
- package/dist/agentLogin/agentLogin.js.map +1 -0
- package/dist/agentTrigger.d.ts +28 -0
- package/dist/agentTrigger.d.ts.map +1 -0
- package/dist/agentTrigger.js +53 -0
- package/dist/agentTrigger.js.map +1 -0
- package/dist/apiErrorRetry.d.ts +209 -0
- package/dist/apiErrorRetry.d.ts.map +1 -0
- package/dist/apiErrorRetry.js +351 -0
- package/dist/apiErrorRetry.js.map +1 -0
- package/dist/apiRetryKick.d.ts +148 -0
- package/dist/apiRetryKick.d.ts.map +1 -0
- package/dist/apiRetryKick.js +158 -0
- package/dist/apiRetryKick.js.map +1 -0
- package/dist/bootClassifier.d.ts +46 -0
- package/dist/bootClassifier.d.ts.map +1 -0
- package/dist/bootClassifier.js +43 -0
- package/dist/bootClassifier.js.map +1 -0
- package/dist/bot.d.ts +207 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +10611 -0
- package/dist/bot.js.map +1 -0
- package/dist/botFileStorage.d.ts +60 -0
- package/dist/botFileStorage.d.ts.map +1 -0
- package/dist/botFileStorage.js +205 -0
- package/dist/botFileStorage.js.map +1 -0
- package/dist/cli/applyDnsFix.d.ts +7 -0
- package/dist/cli/applyDnsFix.d.ts.map +1 -0
- package/dist/cli/applyDnsFix.js +46 -0
- package/dist/cli/applyDnsFix.js.map +1 -0
- package/dist/cli/bot.d.ts +27 -0
- package/dist/cli/bot.d.ts.map +1 -0
- package/dist/cli/bot.js +98 -0
- package/dist/cli/bot.js.map +1 -0
- package/dist/cli/botEntry.d.ts +3 -0
- package/dist/cli/botEntry.d.ts.map +1 -0
- package/dist/cli/botEntry.js +11 -0
- package/dist/cli/botEntry.js.map +1 -0
- package/dist/cli/connectorGuards.d.ts +31 -0
- package/dist/cli/connectorGuards.d.ts.map +1 -0
- package/dist/cli/connectorGuards.js +159 -0
- package/dist/cli/connectorGuards.js.map +1 -0
- package/dist/cli/envLoader.d.ts +34 -0
- package/dist/cli/envLoader.d.ts.map +1 -0
- package/dist/cli/envLoader.js +132 -0
- package/dist/cli/envLoader.js.map +1 -0
- package/dist/cli/hot.d.ts +82 -0
- package/dist/cli/hot.d.ts.map +1 -0
- package/dist/cli/hot.js +323 -0
- package/dist/cli/hot.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +130 -0
- package/dist/cli.js.map +1 -0
- package/dist/connectors/jira/adf.d.ts +72 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -0
- package/dist/connectors/jira/adf.js +407 -0
- package/dist/connectors/jira/adf.js.map +1 -0
- package/dist/connectors/jira/agentBinaries.d.ts +14 -0
- package/dist/connectors/jira/agentBinaries.d.ts.map +1 -0
- package/dist/connectors/jira/agentBinaries.js +75 -0
- package/dist/connectors/jira/agentBinaries.js.map +1 -0
- package/dist/connectors/jira/answerSink.d.ts +52 -0
- package/dist/connectors/jira/answerSink.d.ts.map +1 -0
- package/dist/connectors/jira/answerSink.js +220 -0
- package/dist/connectors/jira/answerSink.js.map +1 -0
- package/dist/connectors/jira/attachmentDownload.d.ts +41 -0
- package/dist/connectors/jira/attachmentDownload.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentDownload.js +92 -0
- package/dist/connectors/jira/attachmentDownload.js.map +1 -0
- package/dist/connectors/jira/attachmentTool.d.ts +43 -0
- package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentTool.js +150 -0
- package/dist/connectors/jira/attachmentTool.js.map +1 -0
- package/dist/connectors/jira/client.d.ts +490 -0
- package/dist/connectors/jira/client.d.ts.map +1 -0
- package/dist/connectors/jira/client.js +453 -0
- package/dist/connectors/jira/client.js.map +1 -0
- package/dist/connectors/jira/config.d.ts +117 -0
- package/dist/connectors/jira/config.d.ts.map +1 -0
- package/dist/connectors/jira/config.js +350 -0
- package/dist/connectors/jira/config.js.map +1 -0
- package/dist/connectors/jira/configFile.d.ts +10 -0
- package/dist/connectors/jira/configFile.d.ts.map +1 -0
- package/dist/connectors/jira/configFile.js +50 -0
- package/dist/connectors/jira/configFile.js.map +1 -0
- package/dist/connectors/jira/connector.d.ts +68 -0
- package/dist/connectors/jira/connector.d.ts.map +1 -0
- package/dist/connectors/jira/connector.js +257 -0
- package/dist/connectors/jira/connector.js.map +1 -0
- package/dist/connectors/jira/contextLedger.d.ts +59 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
- package/dist/connectors/jira/contextLedger.js +194 -0
- package/dist/connectors/jira/contextLedger.js.map +1 -0
- package/dist/connectors/jira/contextPreamble.d.ts +18 -0
- package/dist/connectors/jira/contextPreamble.d.ts.map +1 -0
- package/dist/connectors/jira/contextPreamble.js +31 -0
- package/dist/connectors/jira/contextPreamble.js.map +1 -0
- package/dist/connectors/jira/inbound.d.ts +132 -0
- package/dist/connectors/jira/inbound.d.ts.map +1 -0
- package/dist/connectors/jira/inbound.js +316 -0
- package/dist/connectors/jira/inbound.js.map +1 -0
- package/dist/connectors/jira/issueBlocks.d.ts +51 -0
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
- package/dist/connectors/jira/issueBlocks.js +182 -0
- package/dist/connectors/jira/issueBlocks.js.map +1 -0
- package/dist/connectors/jira/issueContext.d.ts +25 -0
- package/dist/connectors/jira/issueContext.d.ts.map +1 -0
- package/dist/connectors/jira/issueContext.js +53 -0
- package/dist/connectors/jira/issueContext.js.map +1 -0
- package/dist/connectors/jira/issueDelta.d.ts +35 -0
- package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
- package/dist/connectors/jira/issueDelta.js +50 -0
- package/dist/connectors/jira/issueDelta.js.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts +20 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.js +92 -0
- package/dist/connectors/jira/mediaPlaceholders.js.map +1 -0
- package/dist/connectors/jira/outbound.d.ts +6 -0
- package/dist/connectors/jira/outbound.d.ts.map +1 -0
- package/dist/connectors/jira/outbound.js +38 -0
- package/dist/connectors/jira/outbound.js.map +1 -0
- package/dist/connectors/jira/prompt.d.ts +37 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -0
- package/dist/connectors/jira/prompt.js +99 -0
- package/dist/connectors/jira/prompt.js.map +1 -0
- package/dist/connectors/jira/promptSpill.d.ts +50 -0
- package/dist/connectors/jira/promptSpill.d.ts.map +1 -0
- package/dist/connectors/jira/promptSpill.js +157 -0
- package/dist/connectors/jira/promptSpill.js.map +1 -0
- package/dist/connectors/jira/promptText.d.ts +7 -0
- package/dist/connectors/jira/promptText.d.ts.map +1 -0
- package/dist/connectors/jira/promptText.js +26 -0
- package/dist/connectors/jira/promptText.js.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts +16 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.js +101 -0
- package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/jira/trigger.d.ts +50 -0
- package/dist/connectors/jira/trigger.d.ts.map +1 -0
- package/dist/connectors/jira/trigger.js +93 -0
- package/dist/connectors/jira/trigger.js.map +1 -0
- package/dist/connectors/jira/triggerLog.d.ts +51 -0
- package/dist/connectors/jira/triggerLog.d.ts.map +1 -0
- package/dist/connectors/jira/triggerLog.js +78 -0
- package/dist/connectors/jira/triggerLog.js.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts +58 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.js +105 -0
- package/dist/connectors/jira/unconfirmedPosts.js.map +1 -0
- package/dist/connectors/telegram/answerSink.d.ts +46 -0
- package/dist/connectors/telegram/answerSink.d.ts.map +1 -0
- package/dist/connectors/telegram/answerSink.js +71 -0
- package/dist/connectors/telegram/answerSink.js.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +31 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js +142 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -0
- package/dist/connectors/telegram/commands/botCore.d.ts +46 -0
- package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/botCore.js +3 -0
- package/dist/connectors/telegram/commands/botCore.js.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.js +13 -0
- package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -0
- package/dist/connectors/telegram/commands/compaction.d.ts +47 -0
- package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/compaction.js +868 -0
- package/dist/connectors/telegram/commands/compaction.js.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts +13 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.js +335 -0
- package/dist/connectors/telegram/commands/displayModes.js.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts +95 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.js +841 -0
- package/dist/connectors/telegram/commands/modelProviders.js.map +1 -0
- package/dist/connectors/telegram/commands/reminders.d.ts +54 -0
- package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/reminders.js +624 -0
- package/dist/connectors/telegram/commands/reminders.js.map +1 -0
- package/dist/connectors/telegram/fileIntake.d.ts +166 -0
- package/dist/connectors/telegram/fileIntake.d.ts.map +1 -0
- package/dist/connectors/telegram/fileIntake.js +304 -0
- package/dist/connectors/telegram/fileIntake.js.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts +57 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.js +221 -0
- package/dist/connectors/telegram/fileSendGateway.js.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts +52 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js +71 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js.map +1 -0
- package/dist/connectors/telegram/inbound.d.ts +131 -0
- package/dist/connectors/telegram/inbound.d.ts.map +1 -0
- package/dist/connectors/telegram/inbound.js +278 -0
- package/dist/connectors/telegram/inbound.js.map +1 -0
- package/dist/connectors/telegram/languagePicker.d.ts +32 -0
- package/dist/connectors/telegram/languagePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/languagePicker.js +55 -0
- package/dist/connectors/telegram/languagePicker.js.map +1 -0
- package/dist/connectors/telegram/messageSplit.d.ts +62 -0
- package/dist/connectors/telegram/messageSplit.d.ts.map +1 -0
- package/dist/connectors/telegram/messageSplit.js +119 -0
- package/dist/connectors/telegram/messageSplit.js.map +1 -0
- package/dist/connectors/telegram/outbound.d.ts +62 -0
- package/dist/connectors/telegram/outbound.d.ts.map +1 -0
- package/dist/connectors/telegram/outbound.js +116 -0
- package/dist/connectors/telegram/outbound.js.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts +34 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.js +77 -0
- package/dist/connectors/telegram/output/createOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts +47 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js +412 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts +38 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.js +49 -0
- package/dist/connectors/telegram/outputBacklogGlue.js.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts +93 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.js +120 -0
- package/dist/connectors/telegram/outputFlushPlan.js.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts +30 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.js +37 -0
- package/dist/connectors/telegram/questionKeyboards.js.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts +27 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.js +97 -0
- package/dist/connectors/telegram/renderAgentHtml.js.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts +28 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.js +107 -0
- package/dist/connectors/telegram/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts +19 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.js +35 -0
- package/dist/connectors/telegram/telegramCallGuard.js.map +1 -0
- package/dist/connectors/telegram/timezonePicker.d.ts +85 -0
- package/dist/connectors/telegram/timezonePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/timezonePicker.js +142 -0
- package/dist/connectors/telegram/timezonePicker.js.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts +85 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.js +159 -0
- package/dist/connectors/telegram/updateDispatcher.js.map +1 -0
- package/dist/connectors/test/connector.d.ts +52 -0
- package/dist/connectors/test/connector.d.ts.map +1 -0
- package/dist/connectors/test/connector.js +143 -0
- package/dist/connectors/test/connector.js.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts +25 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.js +50 -0
- package/dist/connectors/test/sessionKeyCodec.js.map +1 -0
- package/dist/diagLog.d.ts +6 -0
- package/dist/diagLog.d.ts.map +1 -0
- package/dist/diagLog.js +58 -0
- package/dist/diagLog.js.map +1 -0
- package/dist/effortLevels.d.ts +68 -0
- package/dist/effortLevels.d.ts.map +1 -0
- package/dist/effortLevels.js +114 -0
- package/dist/effortLevels.js.map +1 -0
- package/dist/folderName.d.ts +42 -0
- package/dist/folderName.d.ts.map +1 -0
- package/dist/folderName.js +51 -0
- package/dist/folderName.js.map +1 -0
- package/dist/i18n/de.d.ts +2 -0
- package/dist/i18n/de.d.ts.map +1 -0
- package/dist/i18n/de.js +537 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en.d.ts +7 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +566 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/es.d.ts +2 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +537 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/fr.d.ts +2 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +537 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/hi.d.ts +2 -0
- package/dist/i18n/hi.d.ts.map +1 -0
- package/dist/i18n/hi.js +537 -0
- package/dist/i18n/hi.js.map +1 -0
- package/dist/i18n/ja.d.ts +2 -0
- package/dist/i18n/ja.d.ts.map +1 -0
- package/dist/i18n/ja.js +537 -0
- package/dist/i18n/ja.js.map +1 -0
- package/dist/i18n/ka.d.ts +2 -0
- package/dist/i18n/ka.d.ts.map +1 -0
- package/dist/i18n/ka.js +537 -0
- package/dist/i18n/ka.js.map +1 -0
- package/dist/i18n/pt.d.ts +2 -0
- package/dist/i18n/pt.d.ts.map +1 -0
- package/dist/i18n/pt.js +537 -0
- package/dist/i18n/pt.js.map +1 -0
- package/dist/i18n/ru.d.ts +6 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +540 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/i18n/uk.d.ts +8 -0
- package/dist/i18n/uk.d.ts.map +1 -0
- package/dist/i18n/uk.js +542 -0
- package/dist/i18n/uk.js.map +1 -0
- package/dist/i18n/uz.d.ts +2 -0
- package/dist/i18n/uz.d.ts.map +1 -0
- package/dist/i18n/uz.js +537 -0
- package/dist/i18n/uz.js.map +1 -0
- package/dist/i18n/zh.d.ts +2 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +537 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/i18n.d.ts +115 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +233 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/installManager.d.ts +99 -0
- package/dist/installManager.d.ts.map +1 -0
- package/dist/installManager.js +943 -0
- package/dist/installManager.js.map +1 -0
- package/dist/instanceLock.d.ts +161 -0
- package/dist/instanceLock.d.ts.map +1 -0
- package/dist/instanceLock.js +388 -0
- package/dist/instanceLock.js.map +1 -0
- package/dist/mcpConfig.d.ts +76 -0
- package/dist/mcpConfig.d.ts.map +1 -0
- package/dist/mcpConfig.js +270 -0
- package/dist/mcpConfig.js.map +1 -0
- package/dist/openCodeOpenQuestion.d.ts +44 -0
- package/dist/openCodeOpenQuestion.d.ts.map +1 -0
- package/dist/openCodeOpenQuestion.js +64 -0
- package/dist/openCodeOpenQuestion.js.map +1 -0
- package/dist/openCodeQuestionFlow.d.ts +105 -0
- package/dist/openCodeQuestionFlow.d.ts.map +1 -0
- package/dist/openCodeQuestionFlow.js +143 -0
- package/dist/openCodeQuestionFlow.js.map +1 -0
- package/dist/openCodeSessionRouting.d.ts +133 -0
- package/dist/openCodeSessionRouting.d.ts.map +1 -0
- package/dist/openCodeSessionRouting.js +253 -0
- package/dist/openCodeSessionRouting.js.map +1 -0
- package/dist/openCodeSessionTitle.d.ts +50 -0
- package/dist/openCodeSessionTitle.d.ts.map +1 -0
- package/dist/openCodeSessionTitle.js +84 -0
- package/dist/openCodeSessionTitle.js.map +1 -0
- package/dist/outputTrace.d.ts +108 -0
- package/dist/outputTrace.d.ts.map +1 -0
- package/dist/outputTrace.js +430 -0
- package/dist/outputTrace.js.map +1 -0
- package/dist/pendingQuestionRepost.d.ts +47 -0
- package/dist/pendingQuestionRepost.d.ts.map +1 -0
- package/dist/pendingQuestionRepost.js +29 -0
- package/dist/pendingQuestionRepost.js.map +1 -0
- package/dist/pinnedStatus.d.ts +52 -0
- package/dist/pinnedStatus.d.ts.map +1 -0
- package/dist/pinnedStatus.js +36 -0
- package/dist/pinnedStatus.js.map +1 -0
- package/dist/platform/answerSink.d.ts +93 -0
- package/dist/platform/answerSink.d.ts.map +1 -0
- package/dist/platform/answerSink.js +31 -0
- package/dist/platform/answerSink.js.map +1 -0
- package/dist/platform/capabilityFallback.d.ts +39 -0
- package/dist/platform/capabilityFallback.d.ts.map +1 -0
- package/dist/platform/capabilityFallback.js +55 -0
- package/dist/platform/capabilityFallback.js.map +1 -0
- package/dist/platform/commandRouter.d.ts +51 -0
- package/dist/platform/commandRouter.d.ts.map +1 -0
- package/dist/platform/commandRouter.js +53 -0
- package/dist/platform/commandRouter.js.map +1 -0
- package/dist/platform/connectorSet.d.ts +39 -0
- package/dist/platform/connectorSet.d.ts.map +1 -0
- package/dist/platform/connectorSet.js +55 -0
- package/dist/platform/connectorSet.js.map +1 -0
- package/dist/platform/inbound.d.ts +147 -0
- package/dist/platform/inbound.d.ts.map +1 -0
- package/dist/platform/inbound.js +18 -0
- package/dist/platform/inbound.js.map +1 -0
- package/dist/platform/outbound.d.ts +225 -0
- package/dist/platform/outbound.d.ts.map +1 -0
- package/dist/platform/outbound.js +30 -0
- package/dist/platform/outbound.js.map +1 -0
- package/dist/platform/unservedStateGuard.d.ts +27 -0
- package/dist/platform/unservedStateGuard.d.ts.map +1 -0
- package/dist/platform/unservedStateGuard.js +42 -0
- package/dist/platform/unservedStateGuard.js.map +1 -0
- package/dist/postToSession.d.ts +94 -0
- package/dist/postToSession.d.ts.map +1 -0
- package/dist/postToSession.js +56 -0
- package/dist/postToSession.js.map +1 -0
- package/dist/progressLine.d.ts +180 -0
- package/dist/progressLine.d.ts.map +1 -0
- package/dist/progressLine.js +293 -0
- package/dist/progressLine.js.map +1 -0
- package/dist/rateLimiter.d.ts +246 -0
- package/dist/rateLimiter.d.ts.map +1 -0
- package/dist/rateLimiter.js +555 -0
- package/dist/rateLimiter.js.map +1 -0
- package/dist/requests/answerRequest.d.ts +57 -0
- package/dist/requests/answerRequest.d.ts.map +1 -0
- package/dist/requests/answerRequest.js +96 -0
- package/dist/requests/answerRequest.js.map +1 -0
- package/dist/requests/answerTail.d.ts +83 -0
- package/dist/requests/answerTail.d.ts.map +1 -0
- package/dist/requests/answerTail.js +102 -0
- package/dist/requests/answerTail.js.map +1 -0
- package/dist/requests/limitWaitAnswer.d.ts +87 -0
- package/dist/requests/limitWaitAnswer.d.ts.map +1 -0
- package/dist/requests/limitWaitAnswer.js +83 -0
- package/dist/requests/limitWaitAnswer.js.map +1 -0
- package/dist/requests/requestGroup.d.ts +44 -0
- package/dist/requests/requestGroup.d.ts.map +1 -0
- package/dist/requests/requestGroup.js +63 -0
- package/dist/requests/requestGroup.js.map +1 -0
- package/dist/requests/requestHeader.d.ts +70 -0
- package/dist/requests/requestHeader.d.ts.map +1 -0
- package/dist/requests/requestHeader.js +83 -0
- package/dist/requests/requestHeader.js.map +1 -0
- package/dist/requests/requestLedger.d.ts +217 -0
- package/dist/requests/requestLedger.d.ts.map +1 -0
- package/dist/requests/requestLedger.js +468 -0
- package/dist/requests/requestLedger.js.map +1 -0
- package/dist/requests/sessionTurnProbe.d.ts +52 -0
- package/dist/requests/sessionTurnProbe.d.ts.map +1 -0
- package/dist/requests/sessionTurnProbe.js +29 -0
- package/dist/requests/sessionTurnProbe.js.map +1 -0
- package/dist/requests/types.d.ts +181 -0
- package/dist/requests/types.d.ts.map +1 -0
- package/dist/requests/types.js +9 -0
- package/dist/requests/types.js.map +1 -0
- package/dist/requests/wakeUpEngine.d.ts +160 -0
- package/dist/requests/wakeUpEngine.d.ts.map +1 -0
- package/dist/requests/wakeUpEngine.js +399 -0
- package/dist/requests/wakeUpEngine.js.map +1 -0
- package/dist/requests/wakeUpRules.d.ts +151 -0
- package/dist/requests/wakeUpRules.d.ts.map +1 -0
- package/dist/requests/wakeUpRules.js +167 -0
- package/dist/requests/wakeUpRules.js.map +1 -0
- package/dist/resumeContext.d.ts +87 -0
- package/dist/resumeContext.d.ts.map +1 -0
- package/dist/resumeContext.js +114 -0
- package/dist/resumeContext.js.map +1 -0
- package/dist/scheduler/checkRun.d.ts +95 -0
- package/dist/scheduler/checkRun.d.ts.map +1 -0
- package/dist/scheduler/checkRun.js +172 -0
- package/dist/scheduler/checkRun.js.map +1 -0
- package/dist/scheduler/delivery.d.ts +99 -0
- package/dist/scheduler/delivery.d.ts.map +1 -0
- package/dist/scheduler/delivery.js +212 -0
- package/dist/scheduler/delivery.js.map +1 -0
- package/dist/scheduler/deliveryKind.d.ts +29 -0
- package/dist/scheduler/deliveryKind.d.ts.map +1 -0
- package/dist/scheduler/deliveryKind.js +39 -0
- package/dist/scheduler/deliveryKind.js.map +1 -0
- package/dist/scheduler/directoryThreads.d.ts +19 -0
- package/dist/scheduler/directoryThreads.d.ts.map +1 -0
- package/dist/scheduler/directoryThreads.js +28 -0
- package/dist/scheduler/directoryThreads.js.map +1 -0
- package/dist/scheduler/engine.d.ts +77 -0
- package/dist/scheduler/engine.d.ts.map +1 -0
- package/dist/scheduler/engine.js +337 -0
- package/dist/scheduler/engine.js.map +1 -0
- package/dist/scheduler/injection.d.ts +102 -0
- package/dist/scheduler/injection.d.ts.map +1 -0
- package/dist/scheduler/injection.js +122 -0
- package/dist/scheduler/injection.js.map +1 -0
- package/dist/scheduler/mcpBoot.d.ts +65 -0
- package/dist/scheduler/mcpBoot.d.ts.map +1 -0
- package/dist/scheduler/mcpBoot.js +60 -0
- package/dist/scheduler/mcpBoot.js.map +1 -0
- package/dist/scheduler/mcpSurface.d.ts +355 -0
- package/dist/scheduler/mcpSurface.d.ts.map +1 -0
- package/dist/scheduler/mcpSurface.js +1257 -0
- package/dist/scheduler/mcpSurface.js.map +1 -0
- package/dist/scheduler/rebindResume.d.ts +27 -0
- package/dist/scheduler/rebindResume.d.ts.map +1 -0
- package/dist/scheduler/rebindResume.js +17 -0
- package/dist/scheduler/rebindResume.js.map +1 -0
- package/dist/scheduler/recurrence.d.ts +58 -0
- package/dist/scheduler/recurrence.d.ts.map +1 -0
- package/dist/scheduler/recurrence.js +210 -0
- package/dist/scheduler/recurrence.js.map +1 -0
- package/dist/scheduler/runLedger.d.ts +59 -0
- package/dist/scheduler/runLedger.d.ts.map +1 -0
- package/dist/scheduler/runLedger.js +54 -0
- package/dist/scheduler/runLedger.js.map +1 -0
- package/dist/scheduler/store.d.ts +97 -0
- package/dist/scheduler/store.d.ts.map +1 -0
- package/dist/scheduler/store.js +124 -0
- package/dist/scheduler/store.js.map +1 -0
- package/dist/scheduler/timezoneRecompute.d.ts +61 -0
- package/dist/scheduler/timezoneRecompute.d.ts.map +1 -0
- package/dist/scheduler/timezoneRecompute.js +46 -0
- package/dist/scheduler/timezoneRecompute.js.map +1 -0
- package/dist/scheduler/types.d.ts +139 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +8 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/sendErrorClassifier.d.ts +45 -0
- package/dist/sendErrorClassifier.d.ts.map +1 -0
- package/dist/sendErrorClassifier.js +65 -0
- package/dist/sendErrorClassifier.js.map +1 -0
- package/dist/sessionKey.d.ts +136 -0
- package/dist/sessionKey.d.ts.map +1 -0
- package/dist/sessionKey.js +153 -0
- package/dist/sessionKey.js.map +1 -0
- package/dist/sessionPick.d.ts +42 -0
- package/dist/sessionPick.d.ts.map +1 -0
- package/dist/sessionPick.js +39 -0
- package/dist/sessionPick.js.map +1 -0
- package/dist/shutdown.d.ts +126 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +164 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/startupPromptBuffer.d.ts +85 -0
- package/dist/startupPromptBuffer.d.ts.map +1 -0
- package/dist/startupPromptBuffer.js +123 -0
- package/dist/startupPromptBuffer.js.map +1 -0
- package/dist/state.d.ts +1245 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +1830 -0
- package/dist/state.js.map +1 -0
- package/dist/threadContextPreamble.d.ts +89 -0
- package/dist/threadContextPreamble.d.ts.map +1 -0
- package/dist/threadContextPreamble.js +102 -0
- package/dist/threadContextPreamble.js.map +1 -0
- package/dist/threadRouting.d.ts +164 -0
- package/dist/threadRouting.d.ts.map +1 -0
- package/dist/threadRouting.js +182 -0
- package/dist/threadRouting.js.map +1 -0
- package/dist/types.d.ts +1015 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/abortableFifo.d.ts +10 -0
- package/dist/utils/abortableFifo.d.ts.map +1 -0
- package/dist/utils/abortableFifo.js +55 -0
- package/dist/utils/abortableFifo.js.map +1 -0
- package/dist/utils/adoptedToolList.d.ts +27 -0
- package/dist/utils/adoptedToolList.d.ts.map +1 -0
- package/dist/utils/adoptedToolList.js +22 -0
- package/dist/utils/adoptedToolList.js.map +1 -0
- package/dist/utils/agentEnvironment.d.ts +42 -0
- package/dist/utils/agentEnvironment.d.ts.map +1 -0
- package/dist/utils/agentEnvironment.js +122 -0
- package/dist/utils/agentEnvironment.js.map +1 -0
- package/dist/utils/ansiClean.d.ts +11 -0
- package/dist/utils/ansiClean.d.ts.map +1 -0
- package/dist/utils/ansiClean.js +139 -0
- package/dist/utils/ansiClean.js.map +1 -0
- package/dist/utils/autoContinueOnLimit.d.ts +49 -0
- package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
- package/dist/utils/autoContinueOnLimit.js +69 -0
- package/dist/utils/autoContinueOnLimit.js.map +1 -0
- package/dist/utils/canonicalPathContainment.d.ts +7 -0
- package/dist/utils/canonicalPathContainment.d.ts.map +1 -0
- package/dist/utils/canonicalPathContainment.js +48 -0
- package/dist/utils/canonicalPathContainment.js.map +1 -0
- package/dist/utils/claudeAuthLogin.d.ts +71 -0
- package/dist/utils/claudeAuthLogin.d.ts.map +1 -0
- package/dist/utils/claudeAuthLogin.js +93 -0
- package/dist/utils/claudeAuthLogin.js.map +1 -0
- package/dist/utils/claudeChunkClassifier.d.ts +97 -0
- package/dist/utils/claudeChunkClassifier.d.ts.map +1 -0
- package/dist/utils/claudeChunkClassifier.js +254 -0
- package/dist/utils/claudeChunkClassifier.js.map +1 -0
- package/dist/utils/claudeCodeVersion.d.ts +31 -0
- package/dist/utils/claudeCodeVersion.d.ts.map +1 -0
- package/dist/utils/claudeCodeVersion.js +62 -0
- package/dist/utils/claudeCodeVersion.js.map +1 -0
- package/dist/utils/claudeCompactHook.d.ts +64 -0
- package/dist/utils/claudeCompactHook.d.ts.map +1 -0
- package/dist/utils/claudeCompactHook.js +98 -0
- package/dist/utils/claudeCompactHook.js.map +1 -0
- package/dist/utils/claudeLivenessAction.d.ts +208 -0
- package/dist/utils/claudeLivenessAction.d.ts.map +1 -0
- package/dist/utils/claudeLivenessAction.js +135 -0
- package/dist/utils/claudeLivenessAction.js.map +1 -0
- package/dist/utils/claudeMcpHeal.d.ts +92 -0
- package/dist/utils/claudeMcpHeal.d.ts.map +1 -0
- package/dist/utils/claudeMcpHeal.js +91 -0
- package/dist/utils/claudeMcpHeal.js.map +1 -0
- package/dist/utils/claudeRelayRouting.d.ts +86 -0
- package/dist/utils/claudeRelayRouting.d.ts.map +1 -0
- package/dist/utils/claudeRelayRouting.js +159 -0
- package/dist/utils/claudeRelayRouting.js.map +1 -0
- package/dist/utils/claudeRuntimeInfo.d.ts +26 -0
- package/dist/utils/claudeRuntimeInfo.d.ts.map +1 -0
- package/dist/utils/claudeRuntimeInfo.js +151 -0
- package/dist/utils/claudeRuntimeInfo.js.map +1 -0
- package/dist/utils/claudeScrapeShapes.d.ts +256 -0
- package/dist/utils/claudeScrapeShapes.d.ts.map +1 -0
- package/dist/utils/claudeScrapeShapes.js +290 -0
- package/dist/utils/claudeScrapeShapes.js.map +1 -0
- package/dist/utils/claudeSessionTitle.d.ts +27 -0
- package/dist/utils/claudeSessionTitle.d.ts.map +1 -0
- package/dist/utils/claudeSessionTitle.js +90 -0
- package/dist/utils/claudeSessionTitle.js.map +1 -0
- package/dist/utils/claudeStreamJson.d.ts +202 -0
- package/dist/utils/claudeStreamJson.d.ts.map +1 -0
- package/dist/utils/claudeStreamJson.js +351 -0
- package/dist/utils/claudeStreamJson.js.map +1 -0
- package/dist/utils/claudeSubagentTail.d.ts +93 -0
- package/dist/utils/claudeSubagentTail.d.ts.map +1 -0
- package/dist/utils/claudeSubagentTail.js +136 -0
- package/dist/utils/claudeSubagentTail.js.map +1 -0
- package/dist/utils/clearThreadOutputQueues.d.ts +43 -0
- package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -0
- package/dist/utils/clearThreadOutputQueues.js +39 -0
- package/dist/utils/clearThreadOutputQueues.js.map +1 -0
- package/dist/utils/compactCommandRoute.d.ts +45 -0
- package/dist/utils/compactCommandRoute.d.ts.map +1 -0
- package/dist/utils/compactCommandRoute.js +36 -0
- package/dist/utils/compactCommandRoute.js.map +1 -0
- package/dist/utils/compactOnIdle.d.ts +329 -0
- package/dist/utils/compactOnIdle.d.ts.map +1 -0
- package/dist/utils/compactOnIdle.js +379 -0
- package/dist/utils/compactOnIdle.js.map +1 -0
- package/dist/utils/consoleFileTap.d.ts +51 -0
- package/dist/utils/consoleFileTap.d.ts.map +1 -0
- package/dist/utils/consoleFileTap.js +86 -0
- package/dist/utils/consoleFileTap.js.map +1 -0
- package/dist/utils/displayVerbosity.d.ts +44 -0
- package/dist/utils/displayVerbosity.d.ts.map +1 -0
- package/dist/utils/displayVerbosity.js +75 -0
- package/dist/utils/displayVerbosity.js.map +1 -0
- package/dist/utils/download.d.ts +72 -0
- package/dist/utils/download.d.ts.map +1 -0
- package/dist/utils/download.js +216 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/draftFinalize.d.ts +110 -0
- package/dist/utils/draftFinalize.d.ts.map +1 -0
- package/dist/utils/draftFinalize.js +100 -0
- package/dist/utils/draftFinalize.js.map +1 -0
- package/dist/utils/draftId.d.ts +36 -0
- package/dist/utils/draftId.d.ts.map +1 -0
- package/dist/utils/draftId.js +46 -0
- package/dist/utils/draftId.js.map +1 -0
- package/dist/utils/draftPacer.d.ts +72 -0
- package/dist/utils/draftPacer.d.ts.map +1 -0
- package/dist/utils/draftPacer.js +53 -0
- package/dist/utils/draftPacer.js.map +1 -0
- package/dist/utils/effortStartupKeystroke.d.ts +20 -0
- package/dist/utils/effortStartupKeystroke.d.ts.map +1 -0
- package/dist/utils/effortStartupKeystroke.js +28 -0
- package/dist/utils/effortStartupKeystroke.js.map +1 -0
- package/dist/utils/ensureSessionPlan.d.ts +70 -0
- package/dist/utils/ensureSessionPlan.d.ts.map +1 -0
- package/dist/utils/ensureSessionPlan.js +54 -0
- package/dist/utils/ensureSessionPlan.js.map +1 -0
- package/dist/utils/fileSendPlan.d.ts +217 -0
- package/dist/utils/fileSendPlan.d.ts.map +1 -0
- package/dist/utils/fileSendPlan.js +291 -0
- package/dist/utils/fileSendPlan.js.map +1 -0
- package/dist/utils/fileSendService.d.ts +94 -0
- package/dist/utils/fileSendService.d.ts.map +1 -0
- package/dist/utils/fileSendService.js +387 -0
- package/dist/utils/fileSendService.js.map +1 -0
- package/dist/utils/groupFinalizePlan.d.ts +38 -0
- package/dist/utils/groupFinalizePlan.d.ts.map +1 -0
- package/dist/utils/groupFinalizePlan.js +35 -0
- package/dist/utils/groupFinalizePlan.js.map +1 -0
- package/dist/utils/identicalOutputGuard.d.ts +83 -0
- package/dist/utils/identicalOutputGuard.d.ts.map +1 -0
- package/dist/utils/identicalOutputGuard.js +99 -0
- package/dist/utils/identicalOutputGuard.js.map +1 -0
- package/dist/utils/isoTimestamp.d.ts +16 -0
- package/dist/utils/isoTimestamp.d.ts.map +1 -0
- package/dist/utils/isoTimestamp.js +34 -0
- package/dist/utils/isoTimestamp.js.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts +130 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.js +122 -0
- package/dist/utils/jsonStreamBusyWatchdog.js.map +1 -0
- package/dist/utils/jsonStreamHost.d.ts +227 -0
- package/dist/utils/jsonStreamHost.d.ts.map +1 -0
- package/dist/utils/jsonStreamHost.js +417 -0
- package/dist/utils/jsonStreamHost.js.map +1 -0
- package/dist/utils/keyedTransitionQueue.d.ts +18 -0
- package/dist/utils/keyedTransitionQueue.d.ts.map +1 -0
- package/dist/utils/keyedTransitionQueue.js +34 -0
- package/dist/utils/keyedTransitionQueue.js.map +1 -0
- package/dist/utils/limitEpisodeRecovery.d.ts +92 -0
- package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -0
- package/dist/utils/limitEpisodeRecovery.js +133 -0
- package/dist/utils/limitEpisodeRecovery.js.map +1 -0
- package/dist/utils/limitHeldPromptQueue.d.ts +48 -0
- package/dist/utils/limitHeldPromptQueue.d.ts.map +1 -0
- package/dist/utils/limitHeldPromptQueue.js +59 -0
- package/dist/utils/limitHeldPromptQueue.js.map +1 -0
- package/dist/utils/limitHeldPrompts.d.ts +58 -0
- package/dist/utils/limitHeldPrompts.d.ts.map +1 -0
- package/dist/utils/limitHeldPrompts.js +65 -0
- package/dist/utils/limitHeldPrompts.js.map +1 -0
- package/dist/utils/linkPreviewSuppression.d.ts +18 -0
- package/dist/utils/linkPreviewSuppression.d.ts.map +1 -0
- package/dist/utils/linkPreviewSuppression.js +37 -0
- package/dist/utils/linkPreviewSuppression.js.map +1 -0
- package/dist/utils/localClock.d.ts +15 -0
- package/dist/utils/localClock.d.ts.map +1 -0
- package/dist/utils/localClock.js +29 -0
- package/dist/utils/localClock.js.map +1 -0
- package/dist/utils/markdownTableRender.d.ts +83 -0
- package/dist/utils/markdownTableRender.d.ts.map +1 -0
- package/dist/utils/markdownTableRender.js +298 -0
- package/dist/utils/markdownTableRender.js.map +1 -0
- package/dist/utils/mediaGroupCollector.d.ts +51 -0
- package/dist/utils/mediaGroupCollector.d.ts.map +1 -0
- package/dist/utils/mediaGroupCollector.js +90 -0
- package/dist/utils/mediaGroupCollector.js.map +1 -0
- package/dist/utils/messageSendService.d.ts +136 -0
- package/dist/utils/messageSendService.d.ts.map +1 -0
- package/dist/utils/messageSendService.js +165 -0
- package/dist/utils/messageSendService.js.map +1 -0
- package/dist/utils/minutesOverride.d.ts +7 -0
- package/dist/utils/minutesOverride.d.ts.map +1 -0
- package/dist/utils/minutesOverride.js +16 -0
- package/dist/utils/minutesOverride.js.map +1 -0
- package/dist/utils/modelPickerPlan.d.ts +119 -0
- package/dist/utils/modelPickerPlan.d.ts.map +1 -0
- package/dist/utils/modelPickerPlan.js +171 -0
- package/dist/utils/modelPickerPlan.js.map +1 -0
- package/dist/utils/modelSetReplyDecision.d.ts +67 -0
- package/dist/utils/modelSetReplyDecision.d.ts.map +1 -0
- package/dist/utils/modelSetReplyDecision.js +27 -0
- package/dist/utils/modelSetReplyDecision.js.map +1 -0
- package/dist/utils/openCodeAuthLogin.d.ts +181 -0
- package/dist/utils/openCodeAuthLogin.d.ts.map +1 -0
- package/dist/utils/openCodeAuthLogin.js +393 -0
- package/dist/utils/openCodeAuthLogin.js.map +1 -0
- package/dist/utils/openCodeCompactPlugin.d.ts +81 -0
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -0
- package/dist/utils/openCodeCompactPlugin.js +146 -0
- package/dist/utils/openCodeCompactPlugin.js.map +1 -0
- package/dist/utils/openCodeTurnActivity.d.ts +67 -0
- package/dist/utils/openCodeTurnActivity.d.ts.map +1 -0
- package/dist/utils/openCodeTurnActivity.js +27 -0
- package/dist/utils/openCodeTurnActivity.js.map +1 -0
- package/dist/utils/outputDebounce.d.ts +24 -0
- package/dist/utils/outputDebounce.d.ts.map +1 -0
- package/dist/utils/outputDebounce.js +30 -0
- package/dist/utils/outputDebounce.js.map +1 -0
- package/dist/utils/outputFlushTiming.d.ts +54 -0
- package/dist/utils/outputFlushTiming.d.ts.map +1 -0
- package/dist/utils/outputFlushTiming.js +48 -0
- package/dist/utils/outputFlushTiming.js.map +1 -0
- package/dist/utils/paginateList.d.ts +25 -0
- package/dist/utils/paginateList.d.ts.map +1 -0
- package/dist/utils/paginateList.js +32 -0
- package/dist/utils/paginateList.js.map +1 -0
- package/dist/utils/paneDiff.d.ts +55 -0
- package/dist/utils/paneDiff.d.ts.map +1 -0
- package/dist/utils/paneDiff.js +88 -0
- package/dist/utils/paneDiff.js.map +1 -0
- package/dist/utils/paneResizeGuard.d.ts +69 -0
- package/dist/utils/paneResizeGuard.d.ts.map +1 -0
- package/dist/utils/paneResizeGuard.js +91 -0
- package/dist/utils/paneResizeGuard.js.map +1 -0
- package/dist/utils/persistAdapterSessionIds.d.ts +39 -0
- package/dist/utils/persistAdapterSessionIds.d.ts.map +1 -0
- package/dist/utils/persistAdapterSessionIds.js +28 -0
- package/dist/utils/persistAdapterSessionIds.js.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts +44 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.js +20 -0
- package/dist/utils/pinnedBannerSkipDecision.js.map +1 -0
- package/dist/utils/pollBackoff.d.ts +45 -0
- package/dist/utils/pollBackoff.d.ts.map +1 -0
- package/dist/utils/pollBackoff.js +44 -0
- package/dist/utils/pollBackoff.js.map +1 -0
- package/dist/utils/promptDelivery.d.ts +46 -0
- package/dist/utils/promptDelivery.d.ts.map +1 -0
- package/dist/utils/promptDelivery.js +49 -0
- package/dist/utils/promptDelivery.js.map +1 -0
- package/dist/utils/providerDisconnectPlan.d.ts +82 -0
- package/dist/utils/providerDisconnectPlan.d.ts.map +1 -0
- package/dist/utils/providerDisconnectPlan.js +110 -0
- package/dist/utils/providerDisconnectPlan.js.map +1 -0
- package/dist/utils/rateLimitLog.d.ts +48 -0
- package/dist/utils/rateLimitLog.d.ts.map +1 -0
- package/dist/utils/rateLimitLog.js +43 -0
- package/dist/utils/rateLimitLog.js.map +1 -0
- package/dist/utils/recentRelayWindow.d.ts +165 -0
- package/dist/utils/recentRelayWindow.d.ts.map +1 -0
- package/dist/utils/recentRelayWindow.js +284 -0
- package/dist/utils/recentRelayWindow.js.map +1 -0
- package/dist/utils/recvPreviewRedaction.d.ts +23 -0
- package/dist/utils/recvPreviewRedaction.d.ts.map +1 -0
- package/dist/utils/recvPreviewRedaction.js +39 -0
- package/dist/utils/recvPreviewRedaction.js.map +1 -0
- package/dist/utils/reminderFlow.d.ts +148 -0
- package/dist/utils/reminderFlow.d.ts.map +1 -0
- package/dist/utils/reminderFlow.js +122 -0
- package/dist/utils/reminderFlow.js.map +1 -0
- package/dist/utils/reminderScheduleText.d.ts +87 -0
- package/dist/utils/reminderScheduleText.d.ts.map +1 -0
- package/dist/utils/reminderScheduleText.js +135 -0
- package/dist/utils/reminderScheduleText.js.map +1 -0
- package/dist/utils/reminderWizard.d.ts +710 -0
- package/dist/utils/reminderWizard.d.ts.map +1 -0
- package/dist/utils/reminderWizard.js +1164 -0
- package/dist/utils/reminderWizard.js.map +1 -0
- package/dist/utils/replyQuote.d.ts +111 -0
- package/dist/utils/replyQuote.d.ts.map +1 -0
- package/dist/utils/replyQuote.js +122 -0
- package/dist/utils/replyQuote.js.map +1 -0
- package/dist/utils/resolveBinary.d.ts +25 -0
- package/dist/utils/resolveBinary.d.ts.map +1 -0
- package/dist/utils/resolveBinary.js +99 -0
- package/dist/utils/resolveBinary.js.map +1 -0
- package/dist/utils/retryAfterHeader.d.ts +7 -0
- package/dist/utils/retryAfterHeader.d.ts.map +1 -0
- package/dist/utils/retryAfterHeader.js +17 -0
- package/dist/utils/retryAfterHeader.js.map +1 -0
- package/dist/utils/rotatingJsonlFile.d.ts +40 -0
- package/dist/utils/rotatingJsonlFile.d.ts.map +1 -0
- package/dist/utils/rotatingJsonlFile.js +106 -0
- package/dist/utils/rotatingJsonlFile.js.map +1 -0
- package/dist/utils/rotatingLogFile.d.ts +25 -0
- package/dist/utils/rotatingLogFile.d.ts.map +1 -0
- package/dist/utils/rotatingLogFile.js +74 -0
- package/dist/utils/rotatingLogFile.js.map +1 -0
- package/dist/utils/sendRateTracker.d.ts +59 -0
- package/dist/utils/sendRateTracker.d.ts.map +1 -0
- package/dist/utils/sendRateTracker.js +144 -0
- package/dist/utils/sendRateTracker.js.map +1 -0
- package/dist/utils/serialQueue.d.ts +5 -0
- package/dist/utils/serialQueue.d.ts.map +1 -0
- package/dist/utils/serialQueue.js +14 -0
- package/dist/utils/serialQueue.js.map +1 -0
- package/dist/utils/sseStreamLifecycle.d.ts +32 -0
- package/dist/utils/sseStreamLifecycle.d.ts.map +1 -0
- package/dist/utils/sseStreamLifecycle.js +41 -0
- package/dist/utils/sseStreamLifecycle.js.map +1 -0
- package/dist/utils/startupReadiness.d.ts +119 -0
- package/dist/utils/startupReadiness.d.ts.map +1 -0
- package/dist/utils/startupReadiness.js +148 -0
- package/dist/utils/startupReadiness.js.map +1 -0
- package/dist/utils/statusFlushDecision.d.ts +18 -0
- package/dist/utils/statusFlushDecision.d.ts.map +1 -0
- package/dist/utils/statusFlushDecision.js +53 -0
- package/dist/utils/statusFlushDecision.js.map +1 -0
- package/dist/utils/subagentRender.d.ts +52 -0
- package/dist/utils/subagentRender.d.ts.map +1 -0
- package/dist/utils/subagentRender.js +66 -0
- package/dist/utils/subagentRender.js.map +1 -0
- package/dist/utils/subagentStatusRender.d.ts +90 -0
- package/dist/utils/subagentStatusRender.d.ts.map +1 -0
- package/dist/utils/subagentStatusRender.js +124 -0
- package/dist/utils/subagentStatusRender.js.map +1 -0
- package/dist/utils/telegramError.d.ts +2 -0
- package/dist/utils/telegramError.d.ts.map +1 -0
- package/dist/utils/telegramError.js +16 -0
- package/dist/utils/telegramError.js.map +1 -0
- package/dist/utils/terminalEmitPlan.d.ts +74 -0
- package/dist/utils/terminalEmitPlan.d.ts.map +1 -0
- package/dist/utils/terminalEmitPlan.js +86 -0
- package/dist/utils/terminalEmitPlan.js.map +1 -0
- package/dist/utils/thinkingRender.d.ts +74 -0
- package/dist/utils/thinkingRender.d.ts.map +1 -0
- package/dist/utils/thinkingRender.js +85 -0
- package/dist/utils/thinkingRender.js.map +1 -0
- package/dist/utils/threadStatusReport.d.ts +55 -0
- package/dist/utils/threadStatusReport.d.ts.map +1 -0
- package/dist/utils/threadStatusReport.js +65 -0
- package/dist/utils/threadStatusReport.js.map +1 -0
- package/dist/utils/threadToggle.d.ts +29 -0
- package/dist/utils/threadToggle.d.ts.map +1 -0
- package/dist/utils/threadToggle.js +39 -0
- package/dist/utils/threadToggle.js.map +1 -0
- package/dist/utils/timezone.d.ts +125 -0
- package/dist/utils/timezone.d.ts.map +1 -0
- package/dist/utils/timezone.js +278 -0
- package/dist/utils/timezone.js.map +1 -0
- package/dist/utils/tmuxExec.d.ts +61 -0
- package/dist/utils/tmuxExec.d.ts.map +1 -0
- package/dist/utils/tmuxExec.js +109 -0
- package/dist/utils/tmuxExec.js.map +1 -0
- package/dist/utils/tmuxSessionName.d.ts +34 -0
- package/dist/utils/tmuxSessionName.d.ts.map +1 -0
- package/dist/utils/tmuxSessionName.js +51 -0
- package/dist/utils/tmuxSessionName.js.map +1 -0
- package/dist/utils/toolResultRender.d.ts +61 -0
- package/dist/utils/toolResultRender.d.ts.map +1 -0
- package/dist/utils/toolResultRender.js +62 -0
- package/dist/utils/toolResultRender.js.map +1 -0
- package/dist/utils/topicRequest.d.ts +61 -0
- package/dist/utils/topicRequest.d.ts.map +1 -0
- package/dist/utils/topicRequest.js +68 -0
- package/dist/utils/topicRequest.js.map +1 -0
- package/dist/utils/topicView.d.ts +55 -0
- package/dist/utils/topicView.d.ts.map +1 -0
- package/dist/utils/topicView.js +56 -0
- package/dist/utils/topicView.js.map +1 -0
- package/dist/utils/transcribeAudio.d.ts +89 -0
- package/dist/utils/transcribeAudio.d.ts.map +1 -0
- package/dist/utils/transcribeAudio.js +249 -0
- package/dist/utils/transcribeAudio.js.map +1 -0
- package/dist/utils/transientFrames.d.ts +52 -0
- package/dist/utils/transientFrames.d.ts.map +1 -0
- package/dist/utils/transientFrames.js +41 -0
- package/dist/utils/transientFrames.js.map +1 -0
- package/dist/utils/typingActive.d.ts +35 -0
- package/dist/utils/typingActive.d.ts.map +1 -0
- package/dist/utils/typingActive.js +22 -0
- package/dist/utils/typingActive.js.map +1 -0
- package/dist/utils/typingLoopBackstop.d.ts +64 -0
- package/dist/utils/typingLoopBackstop.d.ts.map +1 -0
- package/dist/utils/typingLoopBackstop.js +68 -0
- package/dist/utils/typingLoopBackstop.js.map +1 -0
- package/dist/utils/verbosityRender.d.ts +18 -0
- package/dist/utils/verbosityRender.d.ts.map +1 -0
- package/dist/utils/verbosityRender.js +17 -0
- package/dist/utils/verbosityRender.js.map +1 -0
- package/dist/utils/wedgeRecovery.d.ts +57 -0
- package/dist/utils/wedgeRecovery.d.ts.map +1 -0
- package/dist/utils/wedgeRecovery.js +24 -0
- package/dist/utils/wedgeRecovery.js.map +1 -0
- package/dist/utils.d.ts +30 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +61 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.d.ts +113 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +226 -0
- package/dist/validation.js.map +1 -0
- package/dist/voiceQueue.d.ts +7 -0
- package/dist/voiceQueue.d.ts.map +1 -0
- package/dist/voiceQueue.js +33 -0
- package/dist/voiceQueue.js.map +1 -0
- package/examples/.env.example +17 -0
- package/examples/docker-compose.yml +36 -0
- package/package.json +83 -4
|
@@ -0,0 +1,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":"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"}
|
|
@@ -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,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure reply-decision for the four `/model`-set paths (the
|
|
3
|
+
* `/model <num>` and `/model <name>` commands, the text-handler numeric pick,
|
|
4
|
+
* and the `model_<id>` button callback — all through `applyModelSelection` in
|
|
5
|
+
* `connectors/telegram/commands/modelProviders.ts`). All four asked the adapter to
|
|
6
|
+
* set the model and now must build the SAME user-facing reply — so the branchy
|
|
7
|
+
* decision lives here, unit-testable without the Telegraf machinery (same
|
|
8
|
+
* pattern as `statusFlushDecision.ts`).
|
|
9
|
+
*
|
|
10
|
+
* The no-session decision itself now lives in the adapters (OpenCode persists
|
|
11
|
+
* the pref and returns success; Claude refuses with a notice), so this helper
|
|
12
|
+
* is purely about turning the adapter's outcome into a message — it does NOT
|
|
13
|
+
* gate on session state itself.
|
|
14
|
+
*
|
|
15
|
+
* `isActive` only distinguishes the two SUCCESS copies: a live switch
|
|
16
|
+
* (`model.set_success`) vs a pref saved for the next agent start
|
|
17
|
+
* (`model.saved_for_next_start`). BOTH copies come from i18n, so a `translate`
|
|
18
|
+
* callback is injected (callers pass `t`; tests pass a stub) to keep this module
|
|
19
|
+
* free of the i18n import and trivially testable. The live copy used to be a
|
|
20
|
+
* hardcoded English template literal — once the effort hint below was appended
|
|
21
|
+
* to it, a non-English chat would have read an English headline above a
|
|
22
|
+
* translated hint, so it moved into the catalog too.
|
|
23
|
+
*
|
|
24
|
+
* Both success copies carry the SHARED `effort.current_hint` block (the same key
|
|
25
|
+
* the post-start `agent.ready` notice renders), so the level in force and the
|
|
26
|
+
* "/effort to change it" pointer can never drift between the two messages. The
|
|
27
|
+
* caller must resolve `effort` AFTER `setModel` returned: switching to a model
|
|
28
|
+
* that does not offer the current level clears it (see
|
|
29
|
+
* `effort.cleared_on_model_switch`), so a pre-switch read would name a level
|
|
30
|
+
* that no longer applies.
|
|
31
|
+
*
|
|
32
|
+
* @name ModelSetReplyDecision
|
|
33
|
+
* @description
|
|
34
|
+
* - `unsupported` — the adapter has no `setModel`: nothing was changed.
|
|
35
|
+
* - `error` — `setModel` returned a non-null error string.
|
|
36
|
+
* - success (`isOk: true`) — live switch or deferred-to-next-start save.
|
|
37
|
+
*/
|
|
38
|
+
export interface ModelSetReplyDecisionInput {
|
|
39
|
+
/** Does the thread's adapter implement `setModel`? */
|
|
40
|
+
hasSetModel: boolean;
|
|
41
|
+
/** Error string returned by `setModel`, or `null` on success. */
|
|
42
|
+
setModelError: string | null;
|
|
43
|
+
/** Is the thread's agent session live right now? */
|
|
44
|
+
isActive: boolean;
|
|
45
|
+
/** Human-facing agent label (e.g. "Claude Code"), for the unsupported copy. */
|
|
46
|
+
adapterLabel: string;
|
|
47
|
+
/** Resolved model label to show on success (current model or the picked id). */
|
|
48
|
+
displayLabel: string;
|
|
49
|
+
/**
|
|
50
|
+
* Reasoning effort in force AFTER the switch, or `null` when the backend has
|
|
51
|
+
* no effort concept (Claude tmux/terminal) — then no effort block is appended.
|
|
52
|
+
*/
|
|
53
|
+
effort: string | null;
|
|
54
|
+
}
|
|
55
|
+
export interface ModelSetReplyDecision {
|
|
56
|
+
isOk: boolean;
|
|
57
|
+
message: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @description Build the reply for a `/model`-set attempt.
|
|
61
|
+
*
|
|
62
|
+
* @param translate i18n lookup (`t`) — used for both success copies and the
|
|
63
|
+
* shared effort block. The `unsupported` / `error` branches carry no effort
|
|
64
|
+
* hint: nothing was switched, so naming the level would only add noise.
|
|
65
|
+
*/
|
|
66
|
+
export declare function getModelSetReplyDecision(input: ModelSetReplyDecisionInput, translate: (code: string, vars?: Record<string, string | number>) => string): ModelSetReplyDecision;
|
|
67
|
+
//# sourceMappingURL=modelSetReplyDecision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelSetReplyDecision.d.ts","sourceRoot":"","sources":["../../src/utils/modelSetReplyDecision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,0BAA0B,EACjC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,GAC1E,qBAAqB,CAevB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getModelSetReplyDecision = getModelSetReplyDecision;
|
|
4
|
+
/**
|
|
5
|
+
* @description Build the reply for a `/model`-set attempt.
|
|
6
|
+
*
|
|
7
|
+
* @param translate i18n lookup (`t`) — used for both success copies and the
|
|
8
|
+
* shared effort block. The `unsupported` / `error` branches carry no effort
|
|
9
|
+
* hint: nothing was switched, so naming the level would only add noise.
|
|
10
|
+
*/
|
|
11
|
+
function getModelSetReplyDecision(input, translate) {
|
|
12
|
+
if (!input.hasSetModel) {
|
|
13
|
+
return { isOk: false, message: `Model switching not supported for ${input.adapterLabel}` };
|
|
14
|
+
}
|
|
15
|
+
if (input.setModelError) {
|
|
16
|
+
return { isOk: false, message: `Error: ${input.setModelError}` };
|
|
17
|
+
}
|
|
18
|
+
const effortSuffix = input.effort === null
|
|
19
|
+
? ''
|
|
20
|
+
: `\n${translate('effort.current_hint', { effort: input.effort })}`;
|
|
21
|
+
const successKey = input.isActive ? 'model.set_success' : 'model.saved_for_next_start';
|
|
22
|
+
return {
|
|
23
|
+
isOk: true,
|
|
24
|
+
message: translate(successKey, { model: input.displayLabel }) + effortSuffix,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=modelSetReplyDecision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelSetReplyDecision.js","sourceRoot":"","sources":["../../src/utils/modelSetReplyDecision.ts"],"names":[],"mappings":";;AAmEA,4DAkBC;AAzBD;;;;;;GAMG;AACH,SAAgB,wBAAwB,CACtC,KAAiC,EACjC,SAA2E;IAE3E,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,qCAAqC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;IAC7F,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;IACnE,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,KAAK,IAAI;QACxC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,KAAK,SAAS,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACtE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,4BAA4B,CAAC;IACvF,OAAO;QACL,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,YAAY;KAC7E,CAAC;AACJ,CAAC"}
|