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,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Pure decision logic for the Claude scrape pane-RESIZE guard.
|
|
4
|
+
*
|
|
5
|
+
* WHY it exists (live incident 2026-07-02): an interactive
|
|
6
|
+
* `tmux attach` from a normal-width terminal resizes the tmux window to the
|
|
7
|
+
* client's size (and back to the `-x/-y` default on detach). tmux re-wraps the
|
|
8
|
+
* WHOLE scrollback at the new width, so every physical line becomes a
|
|
9
|
+
* different string: the per-poll line-SET diff (`getNewPaneContent`) sees
|
|
10
|
+
* ~everything as "new" (69k-char diffs), and the long-horizon relay window
|
|
11
|
+
* can't match re-wrapped lines either — its 16-char minimum deliberately
|
|
12
|
+
* exempts short lines, so clusters of short old lines (JSON fragments, code
|
|
13
|
+
* snippets, list numbers) leaked into the topic as ragged messages on EVERY
|
|
14
|
+
* width flap, and captures taken mid-repaint leaked broken ANSI prefixes as
|
|
15
|
+
* status frames.
|
|
16
|
+
*
|
|
17
|
+
* The guard: the poll loop queries `#{pane_width}x#{pane_height}` AFTER each
|
|
18
|
+
* capture (same-poll order matters — a resize landing between the two calls is
|
|
19
|
+
* then detected on THIS poll, never after the giant diff already shipped). On
|
|
20
|
+
* a size change it emits NOTHING and re-seeds the diff baseline from the fresh
|
|
21
|
+
* capture, then stays in a short "settling" mode until a poll sees the capture
|
|
22
|
+
* unchanged (the TUI's own SIGWINCH repaint may lag tmux's mechanical re-wrap
|
|
23
|
+
* by a poll or two). {@link resizeSettleMaxPolls} caps the mode so a busy,
|
|
24
|
+
* constantly-streaming pane can never be wedged into permanent silence —
|
|
25
|
+
* same shape as the resume-seeding cap.
|
|
26
|
+
*
|
|
27
|
+
* Locked tradeoff (same direction as `getNewPaneContent` and
|
|
28
|
+
* `recentRelayWindow`): err toward DROPPING output. Real output produced
|
|
29
|
+
* during the few settling polls is swallowed with the repaint; a resize flood
|
|
30
|
+
* is the user-visible bug, a ~1-2s hole in a streamed answer mid-resize is a
|
|
31
|
+
* low-cost loss.
|
|
32
|
+
*/
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.resizeSettleMaxPolls = void 0;
|
|
35
|
+
exports.parsePaneSize = parsePaneSize;
|
|
36
|
+
exports.getPaneResizeGuardDecision = getPaneResizeGuardDecision;
|
|
37
|
+
/** Shape of a valid `display-message -p '#{pane_width}x#{pane_height}'` reply. */
|
|
38
|
+
const PANE_SIZE_RE = /^\d+x\d+$/;
|
|
39
|
+
/**
|
|
40
|
+
* @description Hard cap on consecutive suppressed settling polls. The normal
|
|
41
|
+
* exit is "same size and the capture stopped changing"; a pane that streams
|
|
42
|
+
* real output non-stop never goes quiet, so without the cap a mid-turn resize
|
|
43
|
+
* would suppress the rest of the answer. ~6 polls at base cadence ≈ 2s —
|
|
44
|
+
* comfortably covers tmux's re-wrap + the TUI's SIGWINCH repaint.
|
|
45
|
+
*/
|
|
46
|
+
exports.resizeSettleMaxPolls = 6;
|
|
47
|
+
/**
|
|
48
|
+
* @description Parse the raw `display-message` reply into a canonical
|
|
49
|
+
* `<width>x<height>` size string, or `null` when the query failed or returned
|
|
50
|
+
* something unexpected (never guess a size from garbage).
|
|
51
|
+
*/
|
|
52
|
+
function parsePaneSize(raw) {
|
|
53
|
+
const trimmed = raw.trim();
|
|
54
|
+
return PANE_SIZE_RE.test(trimmed) ? trimmed : null;
|
|
55
|
+
}
|
|
56
|
+
const proceedDecision = {
|
|
57
|
+
action: 'proceed',
|
|
58
|
+
nextIsSettling: false,
|
|
59
|
+
nextSettlePolls: 0,
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* @description Decide whether this poll's capture is (part of) a resize
|
|
63
|
+
* repaint that must be swallowed. See the module JSDoc for the mechanism.
|
|
64
|
+
*/
|
|
65
|
+
function getPaneResizeGuardDecision(input) {
|
|
66
|
+
const { lastSize, currentSize, isSettling, settlePolls, isRawChanged } = input;
|
|
67
|
+
const nextSettlePolls = settlePolls + 1;
|
|
68
|
+
// The cap fires no matter which branch keeps the mode alive — a wedge-guard,
|
|
69
|
+
// not part of the normal exit.
|
|
70
|
+
const suppressDecision = nextSettlePolls >= exports.resizeSettleMaxPolls
|
|
71
|
+
? proceedDecision
|
|
72
|
+
: { action: 'suppress', nextIsSettling: true, nextSettlePolls };
|
|
73
|
+
if (currentSize === null) {
|
|
74
|
+
// Size query failed — can't judge. Mid-settle the repaint may still be
|
|
75
|
+
// running, so stay suppressed (bounded by the cap); otherwise never
|
|
76
|
+
// suppress on missing data.
|
|
77
|
+
return isSettling ? suppressDecision : proceedDecision;
|
|
78
|
+
}
|
|
79
|
+
// First successful read of this session — a baseline, never a resize.
|
|
80
|
+
if (lastSize === null)
|
|
81
|
+
return proceedDecision;
|
|
82
|
+
if (currentSize !== lastSize)
|
|
83
|
+
return suppressDecision;
|
|
84
|
+
if (isSettling) {
|
|
85
|
+
// Size is stable again but the pane may still be repainting the re-wrapped
|
|
86
|
+
// scrollback — hold until a poll sees the capture unchanged.
|
|
87
|
+
return isRawChanged ? suppressDecision : proceedDecision;
|
|
88
|
+
}
|
|
89
|
+
return proceedDecision;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=paneResizeGuard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paneResizeGuard.js","sourceRoot":"","sources":["../../src/utils/paneResizeGuard.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;;AAmBH,sCAGC;AAgCD,gEA8BC;AAlFD,kFAAkF;AAClF,MAAM,YAAY,GAAG,WAAW,CAAC;AAEjC;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,CAAC,CAAC;AAEtC;;;;GAIG;AACH,SAAgB,aAAa,CAAC,GAAW;IACvC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACrD,CAAC;AAsBD,MAAM,eAAe,GAA4B;IAC/C,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,SAAgB,0BAA0B,CAAC,KAA2B;IACpE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE/E,MAAM,eAAe,GAAG,WAAW,GAAG,CAAC,CAAC;IACxC,6EAA6E;IAC7E,+BAA+B;IAC/B,MAAM,gBAAgB,GACpB,eAAe,IAAI,4BAAoB;QACrC,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IAEpE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,uEAAuE;QACvE,oEAAoE;QACpE,4BAA4B;QAC5B,OAAO,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC;IACzD,CAAC;IAED,sEAAsE;IACtE,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,eAAe,CAAC;IAE9C,IAAI,WAAW,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC;IAEtD,IAAI,UAAU,EAAE,CAAC;QACf,2EAA2E;QAC3E,6DAA6D;QAC7D,OAAO,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC;IAC3D,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { SessionKey } from '../sessionKey';
|
|
2
|
+
/**
|
|
3
|
+
* @description Minimal slice of a concrete adapter that session-id persistence
|
|
4
|
+
* reads: the backend-specific live session-id getter. Exactly one of the two
|
|
5
|
+
* getters exists per adapter class (Claude exposes its tmux/CLI UUID, OpenCode
|
|
6
|
+
* its server session id), so the persistence branch keys on method presence —
|
|
7
|
+
* the structural, stub-friendly equivalent of `instanceof ClaudeCliAdapter` /
|
|
8
|
+
* `instanceof OpenCodeAdapter`.
|
|
9
|
+
*/
|
|
10
|
+
export interface SessionIdSourceAdapter {
|
|
11
|
+
/** Unique adapter identifier, e.g. 'claude', 'opencode' (persisted as agent name). */
|
|
12
|
+
readonly name: string;
|
|
13
|
+
getClaudeSessionId?: (key: SessionKey) => string | null;
|
|
14
|
+
getOpenCodeSessionId?: (key: SessionKey) => string | null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @description Minimal slice of `StateStore` that session-id persistence
|
|
18
|
+
* writes, so the helper is unit-testable with a recording stub.
|
|
19
|
+
*/
|
|
20
|
+
export interface SessionIdPersistenceStore {
|
|
21
|
+
setClaudeSessionId(key: SessionKey, uuid: string): Promise<void>;
|
|
22
|
+
setOpenCodeSessionId(key: SessionKey, id: string): Promise<void>;
|
|
23
|
+
setAgent(key: SessionKey, data: {
|
|
24
|
+
name: string;
|
|
25
|
+
}): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @description Persist the adapter's CURRENT backend session id (+ the adapter
|
|
29
|
+
* name) so a bot restart re-attaches to the same session. Shared by the fresh
|
|
30
|
+
* start (`startAgentSession`) AND the user resume pick (`resumeSessionByIndex`)
|
|
31
|
+
* — before extraction only the fresh start persisted, so a `/sessions` pick
|
|
32
|
+
* was silently lost on the next restart and the thread fell back to an earlier
|
|
33
|
+
* session (live incident 2026-06-10).
|
|
34
|
+
*
|
|
35
|
+
* An adapter reporting no live id (getter returns `null`) keeps the previously
|
|
36
|
+
* persisted id untouched; the agent name is recorded unconditionally.
|
|
37
|
+
*/
|
|
38
|
+
export declare function persistAdapterSessionIds(key: SessionKey, adapter: SessionIdSourceAdapter, store: SessionIdPersistenceStore): Promise<void>;
|
|
39
|
+
//# sourceMappingURL=persistAdapterSessionIds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistAdapterSessionIds.d.ts","sourceRoot":"","sources":["../../src/utils/persistAdapterSessionIds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,sFAAsF;IACtF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI,CAAC;IACxD,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI,CAAC;CAC3D;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.persistAdapterSessionIds = persistAdapterSessionIds;
|
|
4
|
+
/**
|
|
5
|
+
* @description Persist the adapter's CURRENT backend session id (+ the adapter
|
|
6
|
+
* name) so a bot restart re-attaches to the same session. Shared by the fresh
|
|
7
|
+
* start (`startAgentSession`) AND the user resume pick (`resumeSessionByIndex`)
|
|
8
|
+
* — before extraction only the fresh start persisted, so a `/sessions` pick
|
|
9
|
+
* was silently lost on the next restart and the thread fell back to an earlier
|
|
10
|
+
* session (live incident 2026-06-10).
|
|
11
|
+
*
|
|
12
|
+
* An adapter reporting no live id (getter returns `null`) keeps the previously
|
|
13
|
+
* persisted id untouched; the agent name is recorded unconditionally.
|
|
14
|
+
*/
|
|
15
|
+
async function persistAdapterSessionIds(key, adapter, store) {
|
|
16
|
+
if (adapter.getClaudeSessionId) {
|
|
17
|
+
const uuid = adapter.getClaudeSessionId(key);
|
|
18
|
+
if (uuid)
|
|
19
|
+
await store.setClaudeSessionId(key, uuid);
|
|
20
|
+
}
|
|
21
|
+
else if (adapter.getOpenCodeSessionId) {
|
|
22
|
+
const sessionId = adapter.getOpenCodeSessionId(key);
|
|
23
|
+
if (sessionId)
|
|
24
|
+
await store.setOpenCodeSessionId(key, sessionId);
|
|
25
|
+
}
|
|
26
|
+
await store.setAgent(key, { name: adapter.name });
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=persistAdapterSessionIds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistAdapterSessionIds.js","sourceRoot":"","sources":["../../src/utils/persistAdapterSessionIds.ts"],"names":[],"mappings":";;AAsCA,4DAaC;AAxBD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,wBAAwB,CAC5C,GAAe,EACf,OAA+B,EAC/B,KAAgC;IAEhC,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,IAAI;YAAE,MAAM,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,SAAS;YAAE,MAAM,KAAK,CAAC,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure decision for the pinned-banner refresh in
|
|
3
|
+
* `updatePinnedStatus`: given the freshly-computed banner text, the in-memory
|
|
4
|
+
* dedup cache, and the text persisted in `state.json`, decide whether the
|
|
5
|
+
* `editMessageText` API call can be skipped because nothing changed.
|
|
6
|
+
*
|
|
7
|
+
* Extracted from `bot.ts` so the rule is unit-testable without the Telegraf /
|
|
8
|
+
* state machinery (same pattern as `statusFlushDecision.ts`). The persisted
|
|
9
|
+
* fallback is the B8 fix: the in-memory cache is empty on every restart, so the
|
|
10
|
+
* boot-time refresh wave used to re-edit every banner with identical text,
|
|
11
|
+
* each call earning a wasted `400 "message is not modified"` that burns the
|
|
12
|
+
* chat-wide send budget. Seeding the decision with the persisted text lets the
|
|
13
|
+
* wave skip those edits entirely.
|
|
14
|
+
*
|
|
15
|
+
* @name PinnedBannerSkipDecision
|
|
16
|
+
* @description
|
|
17
|
+
* - `skip` — computed text equals what is already displayed; no API
|
|
18
|
+
* call. The in-memory cache already matched.
|
|
19
|
+
* - `seedAndSkip` — cache miss, but the persisted text equals the computed
|
|
20
|
+
* text (the on-disk banner is already current after a restart): seed the
|
|
21
|
+
* in-memory cache from it and skip the API call.
|
|
22
|
+
* - `send` — text differs (or there is no known prior text at all): the
|
|
23
|
+
* banner must be edited/sent.
|
|
24
|
+
*/
|
|
25
|
+
export type PinnedBannerSkipDecision = 'skip' | 'seedAndSkip' | 'send';
|
|
26
|
+
export interface PinnedBannerSkipInput {
|
|
27
|
+
/** Banner text just computed from live adapter + state. */
|
|
28
|
+
computedText: string;
|
|
29
|
+
/** In-memory dedup cache value for this thread, or undefined on a miss. */
|
|
30
|
+
cachedText: string | undefined;
|
|
31
|
+
/** Banner text persisted in state.json for this thread, or undefined. */
|
|
32
|
+
persistedText: string | undefined;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @description Decide whether the pinned-banner edit can be skipped.
|
|
36
|
+
*
|
|
37
|
+
* In-memory cache wins first (hot path during a busy turn); on a miss we fall
|
|
38
|
+
* back to the persisted text so a restart's refresh wave skips identical
|
|
39
|
+
* banners. A stale persisted text must never suppress a needed edit, so callers
|
|
40
|
+
* clear `persistedText` whenever the banner message id is nulled / unpinned —
|
|
41
|
+
* once cleared, `persistedText` is undefined and this returns `send`.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getPinnedBannerSkipDecision(input: PinnedBannerSkipInput): PinnedBannerSkipDecision;
|
|
44
|
+
//# sourceMappingURL=pinnedBannerSkipDecision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinnedBannerSkipDecision.d.ts","sourceRoot":"","sources":["../../src/utils/pinnedBannerSkipDecision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;AAEvE,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,yEAAyE;IACzE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,qBAAqB,GAC3B,wBAAwB,CAI1B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPinnedBannerSkipDecision = getPinnedBannerSkipDecision;
|
|
4
|
+
/**
|
|
5
|
+
* @description Decide whether the pinned-banner edit can be skipped.
|
|
6
|
+
*
|
|
7
|
+
* In-memory cache wins first (hot path during a busy turn); on a miss we fall
|
|
8
|
+
* back to the persisted text so a restart's refresh wave skips identical
|
|
9
|
+
* banners. A stale persisted text must never suppress a needed edit, so callers
|
|
10
|
+
* clear `persistedText` whenever the banner message id is nulled / unpinned —
|
|
11
|
+
* once cleared, `persistedText` is undefined and this returns `send`.
|
|
12
|
+
*/
|
|
13
|
+
function getPinnedBannerSkipDecision(input) {
|
|
14
|
+
if (input.cachedText === input.computedText)
|
|
15
|
+
return 'skip';
|
|
16
|
+
if (input.persistedText === input.computedText)
|
|
17
|
+
return 'seedAndSkip';
|
|
18
|
+
return 'send';
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=pinnedBannerSkipDecision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinnedBannerSkipDecision.js","sourceRoot":"","sources":["../../src/utils/pinnedBannerSkipDecision.ts"],"names":[],"mappings":";;AA4CA,kEAMC;AAfD;;;;;;;;GAQG;AACH,SAAgB,2BAA2B,CACzC,KAA4B;IAE5B,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,YAAY;QAAE,OAAO,MAAM,CAAC;IAC3D,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,YAAY;QAAE,OAAO,aAAa,CAAC;IACrE,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Base poll cadence: how fast the Claude pane is captured + parsed
|
|
3
|
+
* while a session is actively streaming. Mirrors the historical fixed interval.
|
|
4
|
+
*/
|
|
5
|
+
export declare const basePollIntervalMs = 300;
|
|
6
|
+
/**
|
|
7
|
+
* @description Ceiling the adaptive backoff may slow an idle pane down to. An
|
|
8
|
+
* idle session capped here still re-checks the pane ~every 1.5s, so it wakes
|
|
9
|
+
* promptly when the agent resumes on its own (background tool finishing, etc.).
|
|
10
|
+
*/
|
|
11
|
+
export declare const maxPollIntervalMs = 1500;
|
|
12
|
+
/**
|
|
13
|
+
* @description How many consecutive unchanged polls must elapse before we start
|
|
14
|
+
* backing off. Kept above the resume-seeding exit (~2 unchanged polls) so
|
|
15
|
+
* seeding always runs at base cadence and is never slowed by the backoff.
|
|
16
|
+
*/
|
|
17
|
+
export declare const backoffAfterUnchangedPolls = 10;
|
|
18
|
+
interface PollBackoffInput {
|
|
19
|
+
/** Whether the raw capture changed since the previous poll (S1 raw compare). */
|
|
20
|
+
isChanged: boolean;
|
|
21
|
+
/** Delay used for the poll that just ran. */
|
|
22
|
+
currentDelayMs: number;
|
|
23
|
+
/** Consecutive unchanged polls observed BEFORE this one. */
|
|
24
|
+
unchangedStreak: number;
|
|
25
|
+
}
|
|
26
|
+
interface PollBackoffResult {
|
|
27
|
+
/** Delay to arm the next poll timer with. */
|
|
28
|
+
delayMs: number;
|
|
29
|
+
/** Updated consecutive-unchanged-poll counter. */
|
|
30
|
+
unchangedStreak: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* @description Decide the next Claude poll delay from the latest poll's outcome.
|
|
34
|
+
*
|
|
35
|
+
* WHY: a fixed 300ms cadence burns a full `tmux capture-pane` + `cleanOutput`
|
|
36
|
+
* (~15 regex passes over up to ~600KB) per session even when the pane is idle,
|
|
37
|
+
* starving the event loop when several sessions stream in parallel. An idle
|
|
38
|
+
* pane carries no information, so we double the delay (capped) once it has been
|
|
39
|
+
* unchanged for {@link backoffAfterUnchangedPolls} polls. Any change — or an
|
|
40
|
+
* explicit write that snaps the cadence back — returns to base immediately, so
|
|
41
|
+
* user-visible latency after a prompt is unaffected.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getNextPollDelay(input: PollBackoffInput): PollBackoffResult;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=pollBackoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pollBackoff.d.ts","sourceRoot":"","sources":["../../src/utils/pollBackoff.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,UAAU,gBAAgB;IACxB,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,iBAAiB;IACzB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAY3E"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.backoffAfterUnchangedPolls = exports.maxPollIntervalMs = exports.basePollIntervalMs = void 0;
|
|
4
|
+
exports.getNextPollDelay = getNextPollDelay;
|
|
5
|
+
/**
|
|
6
|
+
* @description Base poll cadence: how fast the Claude pane is captured + parsed
|
|
7
|
+
* while a session is actively streaming. Mirrors the historical fixed interval.
|
|
8
|
+
*/
|
|
9
|
+
exports.basePollIntervalMs = 300;
|
|
10
|
+
/**
|
|
11
|
+
* @description Ceiling the adaptive backoff may slow an idle pane down to. An
|
|
12
|
+
* idle session capped here still re-checks the pane ~every 1.5s, so it wakes
|
|
13
|
+
* promptly when the agent resumes on its own (background tool finishing, etc.).
|
|
14
|
+
*/
|
|
15
|
+
exports.maxPollIntervalMs = 1500;
|
|
16
|
+
/**
|
|
17
|
+
* @description How many consecutive unchanged polls must elapse before we start
|
|
18
|
+
* backing off. Kept above the resume-seeding exit (~2 unchanged polls) so
|
|
19
|
+
* seeding always runs at base cadence and is never slowed by the backoff.
|
|
20
|
+
*/
|
|
21
|
+
exports.backoffAfterUnchangedPolls = 10;
|
|
22
|
+
/**
|
|
23
|
+
* @description Decide the next Claude poll delay from the latest poll's outcome.
|
|
24
|
+
*
|
|
25
|
+
* WHY: a fixed 300ms cadence burns a full `tmux capture-pane` + `cleanOutput`
|
|
26
|
+
* (~15 regex passes over up to ~600KB) per session even when the pane is idle,
|
|
27
|
+
* starving the event loop when several sessions stream in parallel. An idle
|
|
28
|
+
* pane carries no information, so we double the delay (capped) once it has been
|
|
29
|
+
* unchanged for {@link backoffAfterUnchangedPolls} polls. Any change — or an
|
|
30
|
+
* explicit write that snaps the cadence back — returns to base immediately, so
|
|
31
|
+
* user-visible latency after a prompt is unaffected.
|
|
32
|
+
*/
|
|
33
|
+
function getNextPollDelay(input) {
|
|
34
|
+
if (input.isChanged) {
|
|
35
|
+
return { delayMs: exports.basePollIntervalMs, unchangedStreak: 0 };
|
|
36
|
+
}
|
|
37
|
+
const unchangedStreak = input.unchangedStreak + 1;
|
|
38
|
+
if (unchangedStreak < exports.backoffAfterUnchangedPolls) {
|
|
39
|
+
return { delayMs: exports.basePollIntervalMs, unchangedStreak };
|
|
40
|
+
}
|
|
41
|
+
const delayMs = Math.min(input.currentDelayMs * 2, exports.maxPollIntervalMs);
|
|
42
|
+
return { delayMs, unchangedStreak };
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=pollBackoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pollBackoff.js","sourceRoot":"","sources":["../../src/utils/pollBackoff.ts"],"names":[],"mappings":";;;AA+CA,4CAYC;AA3DD;;;GAGG;AACU,QAAA,kBAAkB,GAAG,GAAG,CAAC;AAEtC;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,IAAI,CAAC;AAEtC;;;;GAIG;AACU,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAkB7C;;;;;;;;;;GAUG;AACH,SAAgB,gBAAgB,CAAC,KAAuB;IACtD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,0BAAkB,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;IAClD,IAAI,eAAe,GAAG,kCAA0B,EAAE,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,0BAAkB,EAAE,eAAe,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE,yBAAiB,CAAC,CAAC;IACtE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type SessionKey } from '../sessionKey';
|
|
2
|
+
import type { BufferedPromptSettled, StartupPromptBuffer } from '../startupPromptBuffer';
|
|
3
|
+
/**
|
|
4
|
+
* @name PromptDeliveryDeps
|
|
5
|
+
* @description What {@link deliverPromptOrBuffer} acts through. `announceQueued`
|
|
6
|
+
* tells the person their prompt waits for the session to come up — a topic
|
|
7
|
+
* message, so it is only called for a Telegram conversation.
|
|
8
|
+
*/
|
|
9
|
+
export interface PromptDeliveryDeps {
|
|
10
|
+
startupBuffer: Pick<StartupPromptBuffer, 'addPrompt'>;
|
|
11
|
+
forwardPrompt: (key: SessionKey, text: string) => Promise<void>;
|
|
12
|
+
announceQueued: (key: SessionKey) => Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @name PromptDelivery
|
|
16
|
+
* @description Where {@link deliverPromptOrBuffer} put the prompt: `forwarded` to the
|
|
17
|
+
* session (done), or `buffered` behind a session start (it waits in memory until the
|
|
18
|
+
* start ends — see `onBufferedSettled`).
|
|
19
|
+
*/
|
|
20
|
+
export type PromptDelivery = 'forwarded' | 'buffered';
|
|
21
|
+
/**
|
|
22
|
+
* @description Deliver `text` to a conversation's agent while honouring the startup
|
|
23
|
+
* window: mid-startup the prompt is buffered (it replays in order once the session
|
|
24
|
+
* is up, exactly like a text typed during boot); otherwise it is forwarded at once.
|
|
25
|
+
* The one "buffer-or-forward" unit shared by the text and voice handlers' mid-startup
|
|
26
|
+
* buffering, file/album intake, `/schedule`, the Jira connector's posts and an
|
|
27
|
+
* API-error retry's "continue" nudge — the last two reach it with a session another
|
|
28
|
+
* caller's start may still be bringing up, where a direct forward would hit an
|
|
29
|
+
* adapter that is not there yet.
|
|
30
|
+
*
|
|
31
|
+
* `isStarting` is passed in (not read here) because the album collector captures
|
|
32
|
+
* it AT FLUSH TIME — a session that finished booting mid-burst must forward, not
|
|
33
|
+
* buffer.
|
|
34
|
+
*
|
|
35
|
+
* The "queued while starting" notice is posted once per startup window, and only
|
|
36
|
+
* for a Telegram conversation: a tracker issue has no topic to say it in (R6).
|
|
37
|
+
*
|
|
38
|
+
* A buffered prompt lives in memory, so a restart before the start ends loses it.
|
|
39
|
+
* A caller that must know how the wait ended — to keep what would re-send the prompt
|
|
40
|
+
* until it reached a session — passes `onBufferedSettled`; it is called once, only
|
|
41
|
+
* for a prompt that was buffered (a forwarded one is already done when this resolves).
|
|
42
|
+
* A failed "queued" notice is logged and does not change the answer: the prompt was
|
|
43
|
+
* buffered before the notice went out.
|
|
44
|
+
*/
|
|
45
|
+
export declare function deliverPromptOrBuffer(deps: PromptDeliveryDeps, key: SessionKey, text: string, isStarting: boolean, onBufferedSettled?: BufferedPromptSettled): Promise<PromptDelivery>;
|
|
46
|
+
//# sourceMappingURL=promptDelivery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptDelivery.d.ts","sourceRoot":"","sources":["../../src/utils/promptDelivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAEzF;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;IACtD,aAAa,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,cAAc,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,UAAU,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,kBAAkB,EACxB,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,OAAO,EACnB,iBAAiB,CAAC,EAAE,qBAAqB,GACxC,OAAO,CAAC,cAAc,CAAC,CAiBzB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deliverPromptOrBuffer = deliverPromptOrBuffer;
|
|
4
|
+
const sessionKey_1 = require("../sessionKey");
|
|
5
|
+
const sessionKeyCodec_1 = require("../connectors/telegram/sessionKeyCodec");
|
|
6
|
+
/**
|
|
7
|
+
* @description Deliver `text` to a conversation's agent while honouring the startup
|
|
8
|
+
* window: mid-startup the prompt is buffered (it replays in order once the session
|
|
9
|
+
* is up, exactly like a text typed during boot); otherwise it is forwarded at once.
|
|
10
|
+
* The one "buffer-or-forward" unit shared by the text and voice handlers' mid-startup
|
|
11
|
+
* buffering, file/album intake, `/schedule`, the Jira connector's posts and an
|
|
12
|
+
* API-error retry's "continue" nudge — the last two reach it with a session another
|
|
13
|
+
* caller's start may still be bringing up, where a direct forward would hit an
|
|
14
|
+
* adapter that is not there yet.
|
|
15
|
+
*
|
|
16
|
+
* `isStarting` is passed in (not read here) because the album collector captures
|
|
17
|
+
* it AT FLUSH TIME — a session that finished booting mid-burst must forward, not
|
|
18
|
+
* buffer.
|
|
19
|
+
*
|
|
20
|
+
* The "queued while starting" notice is posted once per startup window, and only
|
|
21
|
+
* for a Telegram conversation: a tracker issue has no topic to say it in (R6).
|
|
22
|
+
*
|
|
23
|
+
* A buffered prompt lives in memory, so a restart before the start ends loses it.
|
|
24
|
+
* A caller that must know how the wait ended — to keep what would re-send the prompt
|
|
25
|
+
* until it reached a session — passes `onBufferedSettled`; it is called once, only
|
|
26
|
+
* for a prompt that was buffered (a forwarded one is already done when this resolves).
|
|
27
|
+
* A failed "queued" notice is logged and does not change the answer: the prompt was
|
|
28
|
+
* buffered before the notice went out.
|
|
29
|
+
*/
|
|
30
|
+
async function deliverPromptOrBuffer(deps, key, text, isStarting, onBufferedSettled) {
|
|
31
|
+
if (!isStarting) {
|
|
32
|
+
await deps.forwardPrompt(key, text);
|
|
33
|
+
return 'forwarded';
|
|
34
|
+
}
|
|
35
|
+
const isFirstBuffered = deps.startupBuffer.addPrompt((0, sessionKey_1.keyToString)(key), text, onBufferedSettled);
|
|
36
|
+
if (isFirstBuffered && (0, sessionKeyCodec_1.checkIsTelegramKey)(key)) {
|
|
37
|
+
// The prompt IS buffered by now (and its settle callback registered), so a notice that fails must not
|
|
38
|
+
// read as a delivery that failed: a caller keeping something until the prompt reached a session would
|
|
39
|
+
// otherwise treat the buffered prompt as spent.
|
|
40
|
+
try {
|
|
41
|
+
await deps.announceQueued(key);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
console.error(`[promptDelivery] queued notice for ${(0, sessionKey_1.keyToString)(key)} failed:`, err);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return 'buffered';
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=promptDelivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptDelivery.js","sourceRoot":"","sources":["../../src/utils/promptDelivery.ts"],"names":[],"mappings":";;AAgDA,sDAuBC;AAvED,8CAA6D;AAC7D,4EAA4E;AAuB5E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACI,KAAK,UAAU,qBAAqB,CACzC,IAAwB,EACxB,GAAe,EACf,IAAY,EACZ,UAAmB,EACnB,iBAAyC;IAEzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAA,wBAAW,EAAC,GAAG,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAChG,IAAI,eAAe,IAAI,IAAA,oCAAkB,EAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,sGAAsG;QACtG,sGAAsG;QACtG,gDAAgD;QAChD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,IAAA,wBAAW,EAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure decision layer behind `/disconnect`: what did deleting a
|
|
3
|
+
* provider's stored credentials actually achieve?
|
|
4
|
+
*
|
|
5
|
+
* `DELETE /auth/:id` only removes what OpenCode keeps in its own auth store. A
|
|
6
|
+
* provider it enables from an ENVIRONMENT VARIABLE (`openrouter` ←
|
|
7
|
+
* `OPENROUTER_API_KEY`) stays fully active afterwards — reporting "disconnected"
|
|
8
|
+
* there would be a lie, and it is exactly the case that motivated the
|
|
9
|
+
* bot-side "hide provider" toggle in `/model`. So the adapter re-reads the live
|
|
10
|
+
* provider config after the delete and asks this helper what to tell the user.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* @name ProviderDisconnectOutcome
|
|
14
|
+
* @description
|
|
15
|
+
* - `removed` — the provider is gone from the live catalog: a clean disconnect.
|
|
16
|
+
* - `stillActiveViaEnv` — credentials were removed but the provider is still
|
|
17
|
+
* listed, i.e. it comes from an environment variable the bot cannot unset.
|
|
18
|
+
*/
|
|
19
|
+
export type ProviderDisconnectOutcome = 'removed' | 'stillActiveViaEnv';
|
|
20
|
+
/** Anchored matcher for `bot.action(...)`, kept beside the builder so the wire
|
|
21
|
+
* format has one definition. */
|
|
22
|
+
export declare const disconnectProviderCallbackRe: RegExp;
|
|
23
|
+
/**
|
|
24
|
+
* @description Callback id for one row of the bare-`/disconnect` provider
|
|
25
|
+
* picker. Index-based like `connm_<idx>` / `resume_<idx>`: Telegram caps
|
|
26
|
+
* `callback_data` at 64 bytes, so the tapped entry is resolved against the
|
|
27
|
+
* per-thread snapshot the picker stored rather than carried by name.
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildDisconnectProviderCallback(providerIndex: number): string;
|
|
30
|
+
export declare function parseDisconnectProviderCallback(callbackData: string): number | null;
|
|
31
|
+
/**
|
|
32
|
+
* @description How many picker snapshots the bot keeps before evicting the
|
|
33
|
+
* oldest. Each is a handful of short provider ids, and an operator realistically
|
|
34
|
+
* opens a couple of pickers — the cap only exists so a long-lived process can
|
|
35
|
+
* never accumulate them without bound.
|
|
36
|
+
*/
|
|
37
|
+
export declare const disconnectPickerSnapshotLimit = 50;
|
|
38
|
+
/**
|
|
39
|
+
* @description Snapshot key for ONE picker message.
|
|
40
|
+
*
|
|
41
|
+
* Keying by thread alone is a destructive bug: a second `/disconnect`
|
|
42
|
+
* overwrites the thread's snapshot while the FIRST picker's buttons stay
|
|
43
|
+
* tappable forever, so tapping "openai" (index 1) on the old message resolves
|
|
44
|
+
* index 1 against the NEW list and deletes a different provider's credentials.
|
|
45
|
+
* The message id makes each keyboard resolve only against the list it was
|
|
46
|
+
* rendered from.
|
|
47
|
+
*/
|
|
48
|
+
export declare function buildDisconnectPickerKey(threadKeyString: string, messageId: number): string;
|
|
49
|
+
/**
|
|
50
|
+
* @description Every snapshot key belonging to `threadKeyString` — the thread
|
|
51
|
+
* teardown sweep, which must drop ALL of a thread's picker snapshots, not just
|
|
52
|
+
* one.
|
|
53
|
+
*
|
|
54
|
+
* The trailing-digits check is load-bearing: a bare `startsWith` on the thread
|
|
55
|
+
* key would make thread `-100:1` claim thread `-100:12`'s snapshots
|
|
56
|
+
* (`"-100:12:5".startsWith("-100:1")` is true), wiping a live sibling topic's
|
|
57
|
+
* picker.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getDisconnectPickerKeysForThread(pickerKeys: Iterable<string>, threadKeyString: string): string[];
|
|
60
|
+
/**
|
|
61
|
+
* @description Keys to evict so the snapshot store stays bounded — the oldest
|
|
62
|
+
* first (`Map` preserves insertion order), keeping at most `limit` entries.
|
|
63
|
+
*/
|
|
64
|
+
export declare function getEvictedDisconnectPickerKeys(pickerKeys: Iterable<string>, limit?: number): string[];
|
|
65
|
+
/**
|
|
66
|
+
* @description Resolve a tapped `dscp_<idx>` button against the snapshot of the
|
|
67
|
+
* message it sits on.
|
|
68
|
+
*
|
|
69
|
+
* Returns `null` — never another message's provider — when the tap carries no
|
|
70
|
+
* message id, when that message's snapshot is gone (an old picker after a
|
|
71
|
+
* restart or an eviction), or when the index is out of range. The caller turns
|
|
72
|
+
* `null` into the "this menu expired" toast.
|
|
73
|
+
*/
|
|
74
|
+
export declare function getDisconnectPickerProviderAt(snapshots: ReadonlyMap<string, readonly string[]>, threadKeyString: string, messageId: number | null, index: number): string | null;
|
|
75
|
+
/**
|
|
76
|
+
* @description Classify a finished disconnect from the provider ids still
|
|
77
|
+
* active after the delete. Comparison is trim+lowercase so a differently-cased
|
|
78
|
+
* catalog entry is never mistaken for a removed provider (which would report a
|
|
79
|
+
* clean disconnect for a provider that is still serving models).
|
|
80
|
+
*/
|
|
81
|
+
export declare function getProviderDisconnectOutcome(providerId: string, activeProviderIdsAfterDelete: readonly string[]): ProviderDisconnectOutcome;
|
|
82
|
+
//# sourceMappingURL=providerDisconnectPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerDisconnectPlan.d.ts","sourceRoot":"","sources":["../../src/utils/providerDisconnectPlan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,mBAAmB,CAAC;AAIxE;iCACiC;AACjC,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGnF;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC5B,eAAe,EAAE,MAAM,GACtB,MAAM,EAAE,CAKV;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC5B,KAAK,GAAE,MAAsC,GAC5C,MAAM,EAAE,CAGV;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EACjD,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CAIf;AAMD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,4BAA4B,EAAE,SAAS,MAAM,EAAE,GAC9C,yBAAyB,CAM3B"}
|