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 @@
|
|
|
1
|
+
{"version":3,"file":"unconfirmedPosts.d.ts","sourceRoot":"","sources":["../../../src/connectors/jira/unconfirmedPosts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE;;;;;;;;GAQG;AAEH,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAG3E,eAAO,MAAM,uBAAuB,QAAsB,CAAC;AAE3D,QAAA,MAAM,yBAAyB;;;;;;;;iBAO7B,CAAC;AAEH,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAErE,kHAAkH;AAClH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEjE;AAMD,qBAAa,oBAAoB;IAInB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAA0C,OAAO,CAAC,QAAQ,CAAC,GAAG;IAH/F,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;gBAEnC,IAAI,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,EAAmB,GAAG,EAAE,MAAM,MAAM;IAE7G,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,GAAG,oBAAoB;IAIlF;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,KAAK;IAMb,8HAA8H;IAC9H,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK/D;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI9E,wGAAwG;IACxG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKjD,OAAO,CAAC,KAAK;CAId"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JiraUnconfirmedPosts = exports.unconfirmedPostMaxAgeMs = exports.jiraUnconfirmedPostsFileName = void 0;
|
|
4
|
+
exports.getCommentBodyHash = getCommentBodyHash;
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const rotatingJsonlFile_1 = require("../../utils/rotatingJsonlFile");
|
|
8
|
+
/**
|
|
9
|
+
* @description The comments of a request the answer sink posted without Jira
|
|
10
|
+
* confirming them (plan R29): `DATA_DIR/jira-unconfirmed-posts.jsonl`, one line
|
|
11
|
+
* per post that ended unconfirmed and one per entry settled later. When the
|
|
12
|
+
* agent sends the same text again for the same request, the sink reads the
|
|
13
|
+
* issue first and skips a comment that did land — after a restart too — so an
|
|
14
|
+
* answer is posted at most once. An entry older than a day is forgotten: the
|
|
15
|
+
* agent resends within minutes, not days.
|
|
16
|
+
*/
|
|
17
|
+
exports.jiraUnconfirmedPostsFileName = 'jira-unconfirmed-posts.jsonl';
|
|
18
|
+
/** Unconfirmed posts are rare; ample for a long time, the one `.1` backup is read too. */
|
|
19
|
+
const unconfirmedPostsMaxBytes = 1024 * 1024;
|
|
20
|
+
exports.unconfirmedPostMaxAgeMs = 24 * 60 * 60 * 1000;
|
|
21
|
+
const unconfirmedPostLineSchema = zod_1.z.object({
|
|
22
|
+
requestId: zod_1.z.string().min(1),
|
|
23
|
+
bodyHash: zod_1.z.string().min(1),
|
|
24
|
+
/** `unconfirmed` — the post's outcome is unknown; `settled` — it no longer needs a check. */
|
|
25
|
+
state: zod_1.z.enum(['unconfirmed', 'settled']),
|
|
26
|
+
/** Epoch ms: when the post started (`unconfirmed`) or when it settled. */
|
|
27
|
+
at: zod_1.z.number(),
|
|
28
|
+
});
|
|
29
|
+
/** @description The hash a comment's comparable text is remembered by — the text itself stays out of the file. */
|
|
30
|
+
function getCommentBodyHash(comparableText) {
|
|
31
|
+
return (0, node_crypto_1.createHash)('sha256').update(comparableText).digest('hex');
|
|
32
|
+
}
|
|
33
|
+
function getPostIdentity(requestId, bodyHash) {
|
|
34
|
+
return `${requestId}\u0000${bodyHash}`;
|
|
35
|
+
}
|
|
36
|
+
class JiraUnconfirmedPosts {
|
|
37
|
+
file;
|
|
38
|
+
now;
|
|
39
|
+
/** Post start time of every open entry, by request and body hash. */
|
|
40
|
+
postedAtByIdentity = new Map();
|
|
41
|
+
constructor(file, now) {
|
|
42
|
+
this.file = file;
|
|
43
|
+
this.now = now;
|
|
44
|
+
}
|
|
45
|
+
static createForDataDir(filePath, now) {
|
|
46
|
+
return new JiraUnconfirmedPosts(new rotatingJsonlFile_1.RotatingJsonlFile(filePath, unconfirmedPostsMaxBytes), now);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @description Replay the file, keeping only the entries still young enough to
|
|
50
|
+
* matter. A line that does not parse is skipped with a warning (never fatal).
|
|
51
|
+
*/
|
|
52
|
+
async load() {
|
|
53
|
+
const { records, skippedCount } = await this.file.readRecords(unconfirmedPostLineSchema);
|
|
54
|
+
for (const line of records)
|
|
55
|
+
this.apply(line);
|
|
56
|
+
this.forgetExpired();
|
|
57
|
+
if (skippedCount > 0)
|
|
58
|
+
console.warn(`[jira] unconfirmed posts: ${skippedCount} unreadable line(s) skipped`);
|
|
59
|
+
}
|
|
60
|
+
apply(line) {
|
|
61
|
+
const identity = getPostIdentity(line.requestId, line.bodyHash);
|
|
62
|
+
if (line.state === 'unconfirmed')
|
|
63
|
+
this.postedAtByIdentity.set(identity, line.at);
|
|
64
|
+
else
|
|
65
|
+
this.postedAtByIdentity.delete(identity);
|
|
66
|
+
}
|
|
67
|
+
/** @description When the unconfirmed post of this body started, or `null` when there is none (or it is too old to matter). */
|
|
68
|
+
getPostedAt(requestId, bodyHash) {
|
|
69
|
+
this.forgetExpired();
|
|
70
|
+
return this.postedAtByIdentity.get(getPostIdentity(requestId, bodyHash)) ?? null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* An entry past {@link unconfirmedPostMaxAgeMs} is dropped: most are never
|
|
74
|
+
* resent (the request closed, the agent sent other text), and kept they would
|
|
75
|
+
* only grow the map for the life of the process.
|
|
76
|
+
*/
|
|
77
|
+
forgetExpired() {
|
|
78
|
+
const nowMs = this.now();
|
|
79
|
+
for (const [identity, postedAt] of this.postedAtByIdentity) {
|
|
80
|
+
if (nowMs - postedAt >= exports.unconfirmedPostMaxAgeMs)
|
|
81
|
+
this.postedAtByIdentity.delete(identity);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @description Remember a post Jira did not confirm. A line that cannot be
|
|
86
|
+
* written is still remembered for this process (a warning): the resend right
|
|
87
|
+
* after it is the one that matters most.
|
|
88
|
+
*/
|
|
89
|
+
recordUnconfirmed(requestId, bodyHash, postedAt) {
|
|
90
|
+
this.write({ requestId, bodyHash, state: 'unconfirmed', at: postedAt });
|
|
91
|
+
}
|
|
92
|
+
/** @description The post landed, or a check found it did not: nothing to check on a resend any more. */
|
|
93
|
+
settle(requestId, bodyHash) {
|
|
94
|
+
if (!this.postedAtByIdentity.has(getPostIdentity(requestId, bodyHash)))
|
|
95
|
+
return;
|
|
96
|
+
this.write({ requestId, bodyHash, state: 'settled', at: this.now() });
|
|
97
|
+
}
|
|
98
|
+
write(line) {
|
|
99
|
+
if (!this.file.append(line))
|
|
100
|
+
console.warn(`[jira] unconfirmed posts: request ${line.requestId}: the ${line.state} line could not be written`);
|
|
101
|
+
this.apply(line);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.JiraUnconfirmedPosts = JiraUnconfirmedPosts;
|
|
105
|
+
//# sourceMappingURL=unconfirmedPosts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unconfirmedPosts.js","sourceRoot":"","sources":["../../../src/connectors/jira/unconfirmedPosts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { AnswerSink } from '../../platform/answerSink';
|
|
2
|
+
import type { RequestAlertReason } from '../../requests/types';
|
|
3
|
+
import { type SessionKey } from '../../sessionKey';
|
|
4
|
+
import type { SendMessagesToThread } from '../../utils/messageSendService';
|
|
5
|
+
/**
|
|
6
|
+
* @name TelegramAnswerSinkDeps
|
|
7
|
+
* @description The bot primitives the sink drives. `postAlert` sends the
|
|
8
|
+
* localized alert text and resolves its message id (`null` when the send
|
|
9
|
+
* failed); the pin helpers swallow their own failures and `pinMessage` pins WITH
|
|
10
|
+
* a notification; the answer-pin store remembers the latest pinned answer per
|
|
11
|
+
* conversation across restarts.
|
|
12
|
+
*/
|
|
13
|
+
export interface TelegramAnswerSinkDeps {
|
|
14
|
+
sendMessages: SendMessagesToThread;
|
|
15
|
+
postAlert: (key: SessionKey, requestId: string, reason: RequestAlertReason) => Promise<number | null>;
|
|
16
|
+
pinMessage: (key: SessionKey, messageId: number) => Promise<boolean>;
|
|
17
|
+
unpinMessage: (key: SessionKey, messageId: number) => Promise<void>;
|
|
18
|
+
getAnswerPinMessageId: (key: SessionKey) => number | undefined;
|
|
19
|
+
setAnswerPinMessageId: (key: SessionKey, messageId: number) => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @description Telegram's answer sink (core S3, pins S8): an answer is posted as
|
|
23
|
+
* its own message (split over the message cap) through the same paced, recorded
|
|
24
|
+
* send path as `send_messages_to_user`, which reports whether it landed. A
|
|
25
|
+
* partial delivery (some of the split messages failed) still counts as
|
|
26
|
+
* delivered but comes back as a warning, so the agent knows part of the answer is
|
|
27
|
+
* missing.
|
|
28
|
+
*
|
|
29
|
+
* Every delivered answer is PINNED with a notification — the operator runs
|
|
30
|
+
* topics muted and a pin is what notifies — and only the LATEST answer of a
|
|
31
|
+
* conversation stays pinned: the previous answer's pin is released silently, the
|
|
32
|
+
* message itself stays in the chat. The record of the pinned answer is persisted,
|
|
33
|
+
* so an answer after a restart still releases the one before. A pin that fails
|
|
34
|
+
* leaves the previous record as it is — nothing was replaced. Native question
|
|
35
|
+
* pins and scheduled-run pins are separate records and never touched here. Of a
|
|
36
|
+
* split answer the FIRST message is pinned: the notification previews its start.
|
|
37
|
+
* The pin hand-over is serialized per conversation: two answers delivered at once
|
|
38
|
+
* (parallel `answer_request` calls) would otherwise both read the same previous
|
|
39
|
+
* pin and leave the earlier of them pinned for good.
|
|
40
|
+
*
|
|
41
|
+
* The wake-up alert (core S4) is a bot message naming the request, PINNED with a
|
|
42
|
+
* notification and unpinned when that request closes. Its message id is the
|
|
43
|
+
* alert handle.
|
|
44
|
+
*/
|
|
45
|
+
export declare function createTelegramAnswerSink(deps: TelegramAnswerSinkDeps): AnswerSink;
|
|
46
|
+
//# sourceMappingURL=answerSink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerSink.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/answerSink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,oBAAoB,CAAC;IACnC,SAAS,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtG,UAAU,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,YAAY,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,qBAAqB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/D,qBAAqB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,UAAU,CAqCjF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTelegramAnswerSink = createTelegramAnswerSink;
|
|
4
|
+
const sessionKey_1 = require("../../sessionKey");
|
|
5
|
+
const state_1 = require("../../state");
|
|
6
|
+
/**
|
|
7
|
+
* @description Telegram's answer sink (core S3, pins S8): an answer is posted as
|
|
8
|
+
* its own message (split over the message cap) through the same paced, recorded
|
|
9
|
+
* send path as `send_messages_to_user`, which reports whether it landed. A
|
|
10
|
+
* partial delivery (some of the split messages failed) still counts as
|
|
11
|
+
* delivered but comes back as a warning, so the agent knows part of the answer is
|
|
12
|
+
* missing.
|
|
13
|
+
*
|
|
14
|
+
* Every delivered answer is PINNED with a notification — the operator runs
|
|
15
|
+
* topics muted and a pin is what notifies — and only the LATEST answer of a
|
|
16
|
+
* conversation stays pinned: the previous answer's pin is released silently, the
|
|
17
|
+
* message itself stays in the chat. The record of the pinned answer is persisted,
|
|
18
|
+
* so an answer after a restart still releases the one before. A pin that fails
|
|
19
|
+
* leaves the previous record as it is — nothing was replaced. Native question
|
|
20
|
+
* pins and scheduled-run pins are separate records and never touched here. Of a
|
|
21
|
+
* split answer the FIRST message is pinned: the notification previews its start.
|
|
22
|
+
* The pin hand-over is serialized per conversation: two answers delivered at once
|
|
23
|
+
* (parallel `answer_request` calls) would otherwise both read the same previous
|
|
24
|
+
* pin and leave the earlier of them pinned for good.
|
|
25
|
+
*
|
|
26
|
+
* The wake-up alert (core S4) is a bot message naming the request, PINNED with a
|
|
27
|
+
* notification and unpinned when that request closes. Its message id is the
|
|
28
|
+
* alert handle.
|
|
29
|
+
*/
|
|
30
|
+
function createTelegramAnswerSink(deps) {
|
|
31
|
+
const answerPinLock = new state_1.KeyLock();
|
|
32
|
+
function pinLatestAnswer(key, messageId) {
|
|
33
|
+
return answerPinLock.withLock((0, sessionKey_1.keyToString)(key), async () => {
|
|
34
|
+
const previousMessageId = deps.getAnswerPinMessageId(key);
|
|
35
|
+
if (previousMessageId === messageId)
|
|
36
|
+
return;
|
|
37
|
+
const isPinned = await deps.pinMessage(key, messageId);
|
|
38
|
+
if (!isPinned)
|
|
39
|
+
return;
|
|
40
|
+
// The new pin is up; the previous answer leaves the pinned bar quietly.
|
|
41
|
+
if (previousMessageId !== undefined)
|
|
42
|
+
await deps.unpinMessage(key, previousMessageId);
|
|
43
|
+
await deps.setAnswerPinMessageId(key, messageId);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
async deliverAnswer(key, delivery) {
|
|
48
|
+
const result = await deps.sendMessages((0, sessionKey_1.keyToString)(key), { messages: [delivery.body] });
|
|
49
|
+
if (!result.ok)
|
|
50
|
+
return { ok: false, error: result.error };
|
|
51
|
+
const [firstMessageId] = result.sentMessageIds;
|
|
52
|
+
if (firstMessageId !== undefined)
|
|
53
|
+
await pinLatestAnswer(key, firstMessageId);
|
|
54
|
+
return result.undeliveredCount > 0 ? { ok: true, warning: result.summary } : { ok: true };
|
|
55
|
+
},
|
|
56
|
+
async deliverAlert(key, alert) {
|
|
57
|
+
const messageId = await deps.postAlert(key, alert.requestId, alert.reason);
|
|
58
|
+
if (messageId === null)
|
|
59
|
+
return { ok: false, error: 'the alert message could not be sent' };
|
|
60
|
+
const isPinned = await deps.pinMessage(key, messageId);
|
|
61
|
+
// Unpinned it still stands in the topic; only a pinned one needs releasing.
|
|
62
|
+
return isPinned ? { ok: true, alertRef: messageId.toString() } : { ok: true };
|
|
63
|
+
},
|
|
64
|
+
async releaseAlert(key, alertRef) {
|
|
65
|
+
const messageId = Number(alertRef);
|
|
66
|
+
if (Number.isInteger(messageId))
|
|
67
|
+
await deps.unpinMessage(key, messageId);
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=answerSink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerSink.js","sourceRoot":"","sources":["../../../src/connectors/telegram/answerSink.ts"],"names":[],"mappings":";;AA+CA,4DAqCC;AAlFD,iDAAgE;AAChE,uCAAsC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,wBAAwB,CAAC,IAA4B;IACnE,MAAM,aAAa,GAAG,IAAI,eAAO,EAAE,CAAC;IAEpC,SAAS,eAAe,CAAC,GAAe,EAAE,SAAiB;QACzD,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAA,wBAAW,EAAC,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAC1D,IAAI,iBAAiB,KAAK,SAAS;gBAAE,OAAO;YAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,wEAAwE;YACxE,IAAI,iBAAiB,KAAK,SAAS;gBAAE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YACrF,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAA,wBAAW,EAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1D,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;YAC/C,IAAI,cAAc,KAAK,SAAS;gBAAE,MAAM,eAAe,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC7E,OAAO,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK;YAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3E,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;YAC3F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvD,4EAA4E;YAC5E,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAChF,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ;YAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Message } from 'telegraf/typings/core/types/typegram';
|
|
2
|
+
import type { SessionKey } from '../../../sessionKey';
|
|
3
|
+
import { RequestWakeUpEngine } from '../../../requests/wakeUpEngine';
|
|
4
|
+
import type { BotCore } from './botCore';
|
|
5
|
+
/**
|
|
6
|
+
* @description Append the shared `/auto_continue_limits` pointer to a usage-limit
|
|
7
|
+
* arming notice. ONE key appended at ONE place, so the reset-time notice and the
|
|
8
|
+
* "retrying in N min" fallback can never drift apart (the `effort.current_hint`
|
|
9
|
+
* block shared by both `/model`-set replies is the same pattern). No inline
|
|
10
|
+
* keyboard is needed: Telegram auto-links a bare command written in message text.
|
|
11
|
+
*/
|
|
12
|
+
export declare function appendAutoContinueLimitsHint(noticeText: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* What the auto-resume switch needs from the bot: the shared core, the armed usage-limit retry it reads and
|
|
15
|
+
* cancels, and the request wake-up engine, which exists only after the boot built it.
|
|
16
|
+
*/
|
|
17
|
+
export interface AutoContinueLimitsPorts extends Pick<BotCore, 'bot' | 'command' | 'getState' | 'replyToThread' | 'authoriseContext' | 'withThreadLocale' | 'checkIsGeneral'> {
|
|
18
|
+
/** Open the `/limits` screen in the topic (the bare alias lands there). */
|
|
19
|
+
openLimitsView: (key: SessionKey) => Promise<void>;
|
|
20
|
+
getArmedLimitRetryFireAt: (key: SessionKey) => number | null;
|
|
21
|
+
cancelApiRetry: (key: SessionKey) => void;
|
|
22
|
+
getRequestWakeUpEngine: () => Pick<RequestWakeUpEngine, 'stopWakingForLimitWait'> | null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @description Build the auto-resume switch over its ports. It returns the picker consumer the usage-limit
|
|
26
|
+
* notice's own buttons call, and the `register…()` calls.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createAutoContinueLimits(ports: AutoContinueLimitsPorts): {
|
|
29
|
+
applyAutoContinueLimits: (key: SessionKey, isGeneral: boolean, enabled: boolean | null) => Promise<string>;
|
|
30
|
+
consumeAutoContinueLimitsPicker: (key: SessionKey, cbMsg: Message | undefined, text: string) => Promise<void>;
|
|
31
|
+
registerAutoContinueLimitsCommands: () => void;
|
|
32
|
+
registerAutoContinueLimitsCallbacks: () => void;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=autoContinueLimits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoContinueLimits.d.ts","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/autoContinueLimits.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;;GAGG;AACH,MAAM,WAAW,uBACf,SAAQ,IAAI,CACV,OAAO,EACP,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,gBAAgB,CAC9G;IACD,2EAA2E;IAC3E,cAAc,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,wBAAwB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,cAAc,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,sBAAsB,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE,wBAAwB,CAAC,GAAG,IAAI,CAAC;CAC1F;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB;mCAezB,UAAU,aAAa,OAAO,WAAW,OAAO,GAAG,IAAI,KAAG,OAAO,CAAC,MAAM,CAAC;2CAyBjE,UAAU,SAAS,OAAO,GAAG,SAAS,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;8CAqBzE,IAAI;+CAeH,IAAI;EAYrD"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.appendAutoContinueLimitsHint = appendAutoContinueLimitsHint;
|
|
4
|
+
exports.createAutoContinueLimits = createAutoContinueLimits;
|
|
5
|
+
const sessionKeyCodec_1 = require("../sessionKeyCodec");
|
|
6
|
+
const rateLimiter_1 = require("../../../rateLimiter");
|
|
7
|
+
const i18n_1 = require("../../../i18n");
|
|
8
|
+
const sendErrorClassifier_1 = require("../../../sendErrorClassifier");
|
|
9
|
+
/**
|
|
10
|
+
* @description Append the shared `/auto_continue_limits` pointer to a usage-limit
|
|
11
|
+
* arming notice. ONE key appended at ONE place, so the reset-time notice and the
|
|
12
|
+
* "retrying in N min" fallback can never drift apart (the `effort.current_hint`
|
|
13
|
+
* block shared by both `/model`-set replies is the same pattern). No inline
|
|
14
|
+
* keyboard is needed: Telegram auto-links a bare command written in message text.
|
|
15
|
+
*/
|
|
16
|
+
function appendAutoContinueLimitsHint(noticeText) {
|
|
17
|
+
return `${noticeText}\n\n${(0, i18n_1.t)('autoContinueLimits.noticeHint')}`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @description Build the auto-resume switch over its ports. It returns the picker consumer the usage-limit
|
|
21
|
+
* notice's own buttons call, and the `register…()` calls.
|
|
22
|
+
*/
|
|
23
|
+
function createAutoContinueLimits(ports) {
|
|
24
|
+
const { openLimitsView, getArmedLimitRetryFireAt, cancelApiRetry, getRequestWakeUpEngine, bot, command, getState, replyToThread, authoriseContext, withThreadLocale, checkIsGeneral } = ports;
|
|
25
|
+
/**
|
|
26
|
+
* @description Apply the `/auto_continue_limits` setting and RETURN the
|
|
27
|
+
* confirmation text — the single write path behind the command and its picker
|
|
28
|
+
* buttons, so the two can never drift. The caller decides delivery (the command
|
|
29
|
+
* replies; the picker edits its own message into the confirmation).
|
|
30
|
+
*
|
|
31
|
+
* Regular topic → the per-thread override; General topic → the instance-wide
|
|
32
|
+
* default. Turning it OFF for a topic also drops that topic's armed resume:
|
|
33
|
+
* staying armed after «Disable» would contradict the setting. Unlike
|
|
34
|
+
* `/compact_on_idle` there is no timer to re-arm — the toggle is read at the
|
|
35
|
+
* moment a limit error arrives.
|
|
36
|
+
*/
|
|
37
|
+
async function applyAutoContinueLimits(key, isGeneral, enabled) {
|
|
38
|
+
if (isGeneral) {
|
|
39
|
+
const value = enabled ?? true;
|
|
40
|
+
await getState().setAutoContinueOnLimitGlobalDefault(value);
|
|
41
|
+
return (0, i18n_1.t)('autoContinueLimits.setGlobal', { state: value ? (0, i18n_1.t)('autoContinueLimits.on') : (0, i18n_1.t)('autoContinueLimits.off') });
|
|
42
|
+
}
|
|
43
|
+
await getState().setAutoContinueOnLimitOverride(key, enabled);
|
|
44
|
+
// `null` drops the override: what the topic follows now is the instance default.
|
|
45
|
+
const effective = getState().checkIsAutoContinueOnLimitEnabled(key);
|
|
46
|
+
const stateWord = effective ? (0, i18n_1.t)('autoContinueLimits.on') : (0, i18n_1.t)('autoContinueLimits.off');
|
|
47
|
+
if (!effective) {
|
|
48
|
+
const isLimitWaitArmed = getArmedLimitRetryFireAt(key) !== null;
|
|
49
|
+
cancelApiRetry(key);
|
|
50
|
+
// Nothing resumes this wait any more: its request must not be woken into the same limit.
|
|
51
|
+
if (isLimitWaitArmed)
|
|
52
|
+
await getRequestWakeUpEngine()?.stopWakingForLimitWait(key);
|
|
53
|
+
}
|
|
54
|
+
return (0, i18n_1.t)('autoContinueLimits.setThisTopic', { state: stateWord });
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @description Rewrite the tapped picker into a final, keyboard-less confirmation:
|
|
58
|
+
* a pick consumes the menu (the `/language` picker is the reference), so the same
|
|
59
|
+
* button can't be acted on twice and the topic reads truthfully. Best-effort — a
|
|
60
|
+
* failed edit only costs the relabel, never the state change that preceded it.
|
|
61
|
+
*/
|
|
62
|
+
async function consumeAutoContinueLimitsPicker(key, cbMsg, text) {
|
|
63
|
+
if (!cbMsg)
|
|
64
|
+
return;
|
|
65
|
+
try {
|
|
66
|
+
await (0, rateLimiter_1.enqueueSend)(key, () => bot.telegram.editMessageText((0, sessionKeyCodec_1.getTelegramChatId)(key), cbMsg.message_id, undefined, text));
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
const desc = (0, sendErrorClassifier_1.checkIsApiError)(e) ? (0, sendErrorClassifier_1.getErrorDescription)(e) : '';
|
|
70
|
+
if (!/message is not modified/i.test(desc))
|
|
71
|
+
console.warn('[acl_cb] picker relabel failed:', desc || e);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** Shared `acl_on` / `acl_off` tap handler: apply, then consume the picker. */
|
|
75
|
+
async function handleAutoContinueLimitsCallback(ctx, enabled) {
|
|
76
|
+
const key = await authoriseContext(ctx);
|
|
77
|
+
if (!key) {
|
|
78
|
+
await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
await withThreadLocale(key, async () => {
|
|
82
|
+
const confirmation = await applyAutoContinueLimits(key, checkIsGeneral(key), enabled);
|
|
83
|
+
await ctx.answerCbQuery();
|
|
84
|
+
await consumeAutoContinueLimitsPicker(key, ctx.callbackQuery?.message, confirmation);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function registerAutoContinueLimitsCommands() {
|
|
88
|
+
// `/auto_continue_limits` — hidden alias of `/limits`. `on` / `off` set the setting (regular topic →
|
|
89
|
+
// per-thread override; General → the instance-wide default); bare opens the `/limits` screen. Deliberately
|
|
90
|
+
// NOT gated on an adapter/session: a limit can hit any topic at any time, and the operator must be able to
|
|
91
|
+
// set the preference before that.
|
|
92
|
+
command('auto_continue_limits', async (ctx, key) => {
|
|
93
|
+
const arg = ctx.message.text.split(/\s+/).slice(1).join(' ').trim().toLowerCase();
|
|
94
|
+
if (arg === 'on' || arg === 'off') {
|
|
95
|
+
await replyToThread(key, await applyAutoContinueLimits(key, checkIsGeneral(key), arg === 'on'));
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
await openLimitsView(key);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function registerAutoContinueLimitsCallbacks() {
|
|
102
|
+
bot.action('acl_on', (ctx) => handleAutoContinueLimitsCallback(ctx, true));
|
|
103
|
+
bot.action('acl_off', (ctx) => handleAutoContinueLimitsCallback(ctx, false));
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
applyAutoContinueLimits,
|
|
107
|
+
consumeAutoContinueLimitsPicker,
|
|
108
|
+
registerAutoContinueLimitsCommands,
|
|
109
|
+
registerAutoContinueLimitsCallbacks,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=autoContinueLimits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoContinueLimits.js","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/autoContinueLimits.ts"],"names":[],"mappings":";;AAuBA,oEAEC;AAsBD,4DAwFC;AA9HD,wDAAuD;AACvD,sDAAmD;AACnD,wCAAkC;AAClC,sEAAoF;AAIpF;;;;;;GAMG;AACH,SAAgB,4BAA4B,CAAC,UAAkB;IAC7D,OAAO,GAAG,UAAU,OAAO,IAAA,QAAC,EAAC,+BAA+B,CAAC,EAAE,CAAC;AAClE,CAAC;AAkBD;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,KAA8B;IACrE,MAAM,EAAE,cAAc,EAAE,wBAAwB,EAAE,cAAc,EAAE,sBAAsB,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAE9L;;;;;;;;;;;OAWG;IACH,KAAK,UAAU,uBAAuB,CAAC,GAAe,EAAE,SAAkB,EAAE,OAAuB;QACjG,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,OAAO,IAAI,IAAI,CAAC;YAC9B,MAAM,QAAQ,EAAE,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAC;YAC5D,OAAO,IAAA,QAAC,EAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAA,QAAC,EAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAA,QAAC,EAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACxH,CAAC;QACD,MAAM,QAAQ,EAAE,CAAC,8BAA8B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9D,iFAAiF;QACjF,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC,iCAAiC,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,QAAC,EAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAA,QAAC,EAAC,wBAAwB,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;YAChE,cAAc,CAAC,GAAG,CAAC,CAAC;YACpB,yFAAyF;YACzF,IAAI,gBAAgB;gBAAE,MAAM,sBAAsB,EAAE,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,IAAA,QAAC,EAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACH,KAAK,UAAU,+BAA+B,CAAC,GAAe,EAAE,KAA0B,EAAE,IAAY;QACtG,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC;YACH,MAAM,IAAA,yBAAW,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAA,mCAAiB,EAAC,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QACxH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,IAAA,qCAAe,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,yCAAmB,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,KAAK,UAAU,gCAAgC,CAAC,GAAY,EAAE,OAAgB;QAC5E,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,MAAM,GAAG,CAAC,aAAa,CAAC,IAAA,QAAC,EAAC,kBAAkB,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACrE,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YACtF,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,+BAA+B,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,OAA8B,EAAE,YAAY,CAAC,CAAC;QAC9G,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,kCAAkC;QACzC,qGAAqG;QACrG,2GAA2G;QAC3G,2GAA2G;QAC3G,kCAAkC;QAClC,OAAO,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACjD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAClF,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClC,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,uBAAuB,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;gBAChG,OAAO;YACT,CAAC;YACD,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,mCAAmC;QAC1C,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,gCAAgC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAE3E,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,gCAAgC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO;QACL,uBAAuB;QACvB,+BAA+B;QAC/B,kCAAkC;QAClC,mCAAmC;KACpC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ports every Telegram command module takes from `bot.ts`: the telegraf instance, the neutral command
|
|
3
|
+
* registrar, the topic send helpers and the few cross-cutting calls a handler makes. A module asks for the
|
|
4
|
+
* members it uses (`Pick<BotCore, …>`), and `bot.ts` builds the one object that satisfies them all.
|
|
5
|
+
*/
|
|
6
|
+
import type { Context, NarrowedContext, Telegraf } from 'telegraf';
|
|
7
|
+
import type { Message, Update } from 'telegraf/typings/core/types/typegram';
|
|
8
|
+
import type { InboundCommand } from '../../../platform/inbound';
|
|
9
|
+
import type { SessionKey } from '../../../sessionKey';
|
|
10
|
+
import type { StateStore } from '../../../state';
|
|
11
|
+
/** The Telegram context a command handler receives — a text message, always. */
|
|
12
|
+
export type CommandContext = NarrowedContext<Context, Update.MessageUpdate<Message.TextMessage>>;
|
|
13
|
+
/** Register a command handler on the neutral router. */
|
|
14
|
+
export type RegisterCommand = (name: string | string[], handler: (ctx: CommandContext, key: SessionKey, parsed: InboundCommand) => Promise<void> | void) => void;
|
|
15
|
+
export interface BotCore {
|
|
16
|
+
bot: Telegraf;
|
|
17
|
+
command: RegisterCommand;
|
|
18
|
+
/**
|
|
19
|
+
* The state store, assigned when the bot boots — after the handlers are registered. Read it through this
|
|
20
|
+
* getter each time a handler RUNS; a copy taken at registration would be `undefined`.
|
|
21
|
+
*/
|
|
22
|
+
getState: () => StateStore;
|
|
23
|
+
/** Send into the topic (paced, tracked for `/clear_messages`); the sent message id, or `null` when the send failed. */
|
|
24
|
+
replyToThread: (key: SessionKey, text: string, extra?: object, options?: {
|
|
25
|
+
unpaced?: boolean;
|
|
26
|
+
}) => Promise<number | null>;
|
|
27
|
+
/** Edit a message of the topic in place; `false` when the edit failed. */
|
|
28
|
+
editThreadMessage: (key: SessionKey, messageId: number, text: string, extra?: object) => Promise<boolean>;
|
|
29
|
+
deleteThreadMessage: (key: SessionKey, messageId: number) => Promise<void>;
|
|
30
|
+
/** Gate a callback or message to an admin of the served group; the topic's key, or `null` when it is refused. */
|
|
31
|
+
authoriseContext: (ctx: Context) => Promise<SessionKey | null>;
|
|
32
|
+
/** Run `fn` with the topic's resolved locale for `t(…)`. */
|
|
33
|
+
withThreadLocale: <TResult>(key: SessionKey, fn: () => TResult) => TResult;
|
|
34
|
+
checkIsGeneral: (key: SessionKey) => boolean;
|
|
35
|
+
/** Refresh (or create) the topic's pinned status banner. */
|
|
36
|
+
updatePinnedStatus: (key: SessionKey) => Promise<void>;
|
|
37
|
+
/** Close the topic's open request as cancelled (the conversation was cancelled or ended). */
|
|
38
|
+
cancelConversationRequest: (key: SessionKey) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Wake the topic's SLEEPING conversation (process stopped, session kept) before a command that needs a live
|
|
41
|
+
* agent. The notice to post (a resume that failed and a fresh start), `''` for a silent resume, `null` when
|
|
42
|
+
* nothing slept.
|
|
43
|
+
*/
|
|
44
|
+
wakeSleepingSession: (key: SessionKey) => Promise<string | null>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=botCore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"botCore.d.ts","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/botCore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,gFAAgF;AAChF,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AAEjG,wDAAwD;AACxD,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAC5F,IAAI,CAAC;AAEV,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB;;;OAGG;IACH,QAAQ,EAAE,MAAM,UAAU,CAAC;IAC3B,uHAAuH;IACvH,aAAa,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1H,0EAA0E;IAC1E,iBAAiB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1G,mBAAmB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,iHAAiH;IACjH,gBAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC/D,4DAA4D;IAC5D,gBAAgB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,OAAO,KAAK,OAAO,CAAC;IAC3E,cAAc,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC;IAC7C,4DAA4D;IAC5D,kBAAkB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,6FAA6F;IAC7F,yBAAyB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAClE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"botCore.js","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/botCore.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The message a callback button sits on.
|
|
3
|
+
*/
|
|
4
|
+
import type { Context } from 'telegraf';
|
|
5
|
+
/**
|
|
6
|
+
* @description Id of the message a callback button sits on, or `null` when
|
|
7
|
+
* Telegram did not attach one (a very old message). Callbacks that resolve an
|
|
8
|
+
* INDEX against a per-message snapshot need it to reject a stale keyboard
|
|
9
|
+
* rather than resolve against another message's list.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getCallbackMessageId(ctx: Context): number | null;
|
|
12
|
+
//# sourceMappingURL=callbackMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callbackMessage.d.ts","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/callbackMessage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEhE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCallbackMessageId = getCallbackMessageId;
|
|
4
|
+
/**
|
|
5
|
+
* @description Id of the message a callback button sits on, or `null` when
|
|
6
|
+
* Telegram did not attach one (a very old message). Callbacks that resolve an
|
|
7
|
+
* INDEX against a per-message snapshot need it to reject a stale keyboard
|
|
8
|
+
* rather than resolve against another message's list.
|
|
9
|
+
*/
|
|
10
|
+
function getCallbackMessageId(ctx) {
|
|
11
|
+
return ctx.callbackQuery?.message?.message_id ?? null;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=callbackMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callbackMessage.js","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/callbackMessage.ts"],"names":[],"mappings":";;AAWA,oDAEC;AARD;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,GAAY;IAC/C,OAAO,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { SessionKey } from '../../../sessionKey';
|
|
2
|
+
import type { ClaudeConfigDirApplyResult } from '../../../adapters/claudeConfigDir';
|
|
3
|
+
import type { ClaudeLoginProfile } from '../../../agentLogin/agentLogin';
|
|
4
|
+
import { type ClaudeAuthStatus } from '../../../utils/claudeProfiles';
|
|
5
|
+
import type { BotCore } from './botCore';
|
|
6
|
+
/**
|
|
7
|
+
* How a profile change reached the topic's live session: the adapter's own answer, plus `restartRequired`
|
|
8
|
+
* for a backend that cannot re-spawn a working session by itself (the tmux TUI mid-turn).
|
|
9
|
+
*/
|
|
10
|
+
export type ClaudeProfileApplyOutcome = ClaudeConfigDirApplyResult | 'restartRequired';
|
|
11
|
+
/**
|
|
12
|
+
* What the account picker needs from the bot: the shared core, where profiles live, the CLI status probe,
|
|
13
|
+
* the profile sign-in driver, and the hooks that move live sessions onto a changed pick.
|
|
14
|
+
*/
|
|
15
|
+
export interface ClaudeAccountsPorts extends Pick<BotCore, 'bot' | 'command' | 'getState' | 'replyToThread' | 'editThreadMessage' | 'authoriseContext' | 'withThreadLocale' | 'checkIsGeneral'> {
|
|
16
|
+
getDataDir: () => string;
|
|
17
|
+
/** The instance zone (`/timezone`) the reset instants are shown in. */
|
|
18
|
+
getInstanceTimezone: () => string;
|
|
19
|
+
/** Bring the per-profile usage snapshots up to date (`utils/claudeUsageRefresher.ts`); never throws. */
|
|
20
|
+
refreshClaudeUsage: (options: {
|
|
21
|
+
maxAgeMs?: number;
|
|
22
|
+
}) => Promise<void>;
|
|
23
|
+
/** `claude auth status --json` under `configDir` (`null` = `~/.claude`); `null` when the probe fails. */
|
|
24
|
+
readClaudeAuthStatus: (configDir: string | null) => Promise<ClaudeAuthStatus | null>;
|
|
25
|
+
/** Start the out-of-band sign-in of `profile`; the relay posts the link and the outcome into the topic. */
|
|
26
|
+
startClaudeProfileLogin: (key: SessionKey, profile: ClaudeLoginProfile) => Promise<void>;
|
|
27
|
+
/** Bring ONE topic's live Claude session onto the profile it now resolves to. */
|
|
28
|
+
applyClaudeProfile: (key: SessionKey) => Promise<ClaudeProfileApplyOutcome>;
|
|
29
|
+
/** Bring every served topic's live Claude session onto its resolved profile (after a General change / a removal). */
|
|
30
|
+
applyClaudeProfileEverywhere: () => Promise<void>;
|
|
31
|
+
/** The OpenCode providers the server is authenticated for (its live catalog); `[]` when it cannot be read. */
|
|
32
|
+
detectOpenCodeProviders: () => Promise<string[]>;
|
|
33
|
+
/** Drop a provider's stored credentials and post the outcome — the `/disconnect <provider>` flow, unchanged. */
|
|
34
|
+
disconnectOpenCodeProvider: (key: SessionKey, providerId: string) => Promise<void>;
|
|
35
|
+
/** Start the `/connect <provider>` flow (the method picker: OAuth or API key), unchanged. */
|
|
36
|
+
startOpenCodeConnect: (key: SessionKey, providerId: string) => Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* The «auto switch to a fallback model» setting (`fallbackChain.ts` owns it and its confirmation): the legacy
|
|
39
|
+
* `autoswitch on|off` verb and the old `acct_autosw_*` buttons write it through here.
|
|
40
|
+
*/
|
|
41
|
+
applyAutoSwitch: (key: SessionKey, isGeneral: boolean, enabled: boolean) => Promise<string>;
|
|
42
|
+
/** `~/.claude`, where the default login lives; injectable so a test signs out a temp directory, never the real one. */
|
|
43
|
+
getHomeClaudeDir?: () => string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @description Build the `/account` feature over its ports: the command, its buttons, the name capture the
|
|
47
|
+
* «Add» button arms (the text handler asks `checkIsAwaitingProfileName` / `submitProfileName`), and the
|
|
48
|
+
* auth-status sink the sign-in driver reports to.
|
|
49
|
+
*/
|
|
50
|
+
export declare function createClaudeAccounts(ports: ClaudeAccountsPorts): {
|
|
51
|
+
registerClaudeAccountCommands: () => void;
|
|
52
|
+
registerClaudeAccountCallbacks: () => void;
|
|
53
|
+
checkIsAwaitingProfileName: (key: SessionKey) => boolean;
|
|
54
|
+
cancelProfileNameCapture: (key: SessionKey) => boolean;
|
|
55
|
+
submitProfileName: (key: SessionKey, text: string) => Promise<void>;
|
|
56
|
+
onClaudeProfileAuthStatus: (_key: SessionKey, profile: ClaudeLoginProfile, status: ClaudeAuthStatus | null) => Promise<void>;
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=claudeAccounts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeAccounts.d.ts","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/claudeAccounts.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EASL,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AAiCvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,0BAA0B,GAAG,iBAAiB,CAAC;AAEvF;;;GAGG;AACH,MAAM,WAAW,mBACf,SAAQ,IAAI,CACV,OAAO,EACP,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,gBAAgB,CACpI;IACD,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAClC,wGAAwG;IACxG,kBAAkB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,yGAAyG;IACzG,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACrF,2GAA2G;IAC3G,uBAAuB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,iFAAiF;IACjF,kBAAkB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5E,qHAAqH;IACrH,4BAA4B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,8GAA8G;IAC9G,uBAAuB,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,gHAAgH;IAChH,0BAA0B,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,6FAA6F;IAC7F,oBAAoB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E;;;OAGG;IACH,eAAe,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5F,uHAAuH;IACvH,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;CACjC;AAKD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB;yCAkXnB,IAAI;0CAgEH,IAAI;sCAtGN,UAAU,KAAG,OAAO;oCAKtB,UAAU,KAAG,OAAO;6BAgBrB,UAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;sCA5Q/B,UAAU,WAAW,kBAAkB,UAAU,gBAAgB,GAAG,IAAI,KAAG,OAAO,CAAC,IAAI,CAAC;EA4dxI"}
|