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,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Voice-note transcription against a Whisper-compatible HTTP API
|
|
4
|
+
* (Groq when its key is set, else OpenAI), with automatic retries on transient
|
|
5
|
+
* failures.
|
|
6
|
+
*
|
|
7
|
+
* Extracted from `bot.ts` so it is side-effect-free and testable against a
|
|
8
|
+
* local HTTP server (importing `bot.ts` would construct a Telegraf instance and
|
|
9
|
+
* read ENV at module load) — the same reasoning as `./download`.
|
|
10
|
+
*
|
|
11
|
+
* Why retries: Groq normally answers in well under a second, yet a request
|
|
12
|
+
* occasionally stalls past the timeout. Without a retry that voice note was
|
|
13
|
+
* simply lost and the user had to re-record it. A timeout, a network error, an
|
|
14
|
+
* HTTP 408 / 409 and a 5xx are retried after a pause (5 s, then 15 s); a 429
|
|
15
|
+
* waits at least as long as the provider's `Retry-After`; any other 4xx fails
|
|
16
|
+
* at once, since resending the same request would fail the same way.
|
|
17
|
+
*/
|
|
18
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
21
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
22
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
23
|
+
}
|
|
24
|
+
Object.defineProperty(o, k2, desc);
|
|
25
|
+
}) : (function(o, m, k, k2) {
|
|
26
|
+
if (k2 === undefined) k2 = k;
|
|
27
|
+
o[k2] = m[k];
|
|
28
|
+
}));
|
|
29
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
30
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
31
|
+
}) : function(o, v) {
|
|
32
|
+
o["default"] = v;
|
|
33
|
+
});
|
|
34
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
35
|
+
var ownKeys = function(o) {
|
|
36
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
37
|
+
var ar = [];
|
|
38
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
39
|
+
return ar;
|
|
40
|
+
};
|
|
41
|
+
return ownKeys(o);
|
|
42
|
+
};
|
|
43
|
+
return function (mod) {
|
|
44
|
+
if (mod && mod.__esModule) return mod;
|
|
45
|
+
var result = {};
|
|
46
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
47
|
+
__setModuleDefault(result, mod);
|
|
48
|
+
return result;
|
|
49
|
+
};
|
|
50
|
+
})();
|
|
51
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
52
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
53
|
+
};
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
exports.transcribeRetryDelaysMs = void 0;
|
|
56
|
+
exports.getTranscriptionEndpoint = getTranscriptionEndpoint;
|
|
57
|
+
exports.getTranscribeFailureKind = getTranscribeFailureKind;
|
|
58
|
+
exports.getTranscribeRetryDelayMs = getTranscribeRetryDelayMs;
|
|
59
|
+
exports.transcribeAudio = transcribeAudio;
|
|
60
|
+
const fs = __importStar(require("fs"));
|
|
61
|
+
const fs_1 = require("fs");
|
|
62
|
+
const http = __importStar(require("http"));
|
|
63
|
+
const https = __importStar(require("https"));
|
|
64
|
+
const path = __importStar(require("path"));
|
|
65
|
+
const form_data_1 = __importDefault(require("form-data"));
|
|
66
|
+
const retryAfterHeader_1 = require("./retryAfterHeader");
|
|
67
|
+
/** Pauses before the automatic retries: the 1st after 5 s, the 2nd after 15 s. */
|
|
68
|
+
exports.transcribeRetryDelaysMs = [5_000, 15_000];
|
|
69
|
+
const groqTranscriptionUrl = 'https://api.groq.com/openai/v1/audio/transcriptions';
|
|
70
|
+
const openAiTranscriptionUrl = 'https://api.openai.com/v1/audio/transcriptions';
|
|
71
|
+
const groqTranscriptionModel = 'whisper-large-v3';
|
|
72
|
+
const openAiTranscriptionModel = 'whisper-1';
|
|
73
|
+
const tooManyRequestsStatus = 429;
|
|
74
|
+
const firstServerErrorStatus = 500;
|
|
75
|
+
/**
|
|
76
|
+
* 408 Request Timeout and 409 Conflict pass on a resend — the same set the
|
|
77
|
+
* official OpenAI / Groq SDKs retry besides 429 and 5xx.
|
|
78
|
+
*/
|
|
79
|
+
const retryableClientErrorStatuses = new Set([408, 409]);
|
|
80
|
+
const errorBodyPreviewLength = 500;
|
|
81
|
+
/**
|
|
82
|
+
* @description Pick the transcription provider from the configured API keys:
|
|
83
|
+
* Groq wins when both are set; `null` when neither is.
|
|
84
|
+
*/
|
|
85
|
+
function getTranscriptionEndpoint(apiKeys) {
|
|
86
|
+
if (apiKeys.groqApiKey) {
|
|
87
|
+
return { url: groqTranscriptionUrl, apiKey: apiKeys.groqApiKey, model: groqTranscriptionModel };
|
|
88
|
+
}
|
|
89
|
+
if (apiKeys.openaiApiKey) {
|
|
90
|
+
return { url: openAiTranscriptionUrl, apiKey: apiKeys.openaiApiKey, model: openAiTranscriptionModel };
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @description Classify a non-2xx HTTP status of the transcription API.
|
|
96
|
+
*/
|
|
97
|
+
function getTranscribeFailureKind(status) {
|
|
98
|
+
if (status === tooManyRequestsStatus)
|
|
99
|
+
return 'rateLimited';
|
|
100
|
+
if (status >= firstServerErrorStatus || retryableClientErrorStatuses.has(status))
|
|
101
|
+
return 'transient';
|
|
102
|
+
return 'permanent';
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* @description Pause before retry number `retryIndex` (0-based), or `null`
|
|
106
|
+
* when the failure must not be retried (permanent, or the schedule is used
|
|
107
|
+
* up). A 429 never retries sooner than the schedule NOR sooner than the
|
|
108
|
+
* provider's `Retry-After` asks.
|
|
109
|
+
*/
|
|
110
|
+
function getTranscribeRetryDelayMs(input) {
|
|
111
|
+
if (input.failureKind === 'permanent')
|
|
112
|
+
return null;
|
|
113
|
+
const scheduledDelayMs = (input.retryDelaysMs ?? exports.transcribeRetryDelaysMs)[input.retryIndex];
|
|
114
|
+
if (scheduledDelayMs === undefined)
|
|
115
|
+
return null;
|
|
116
|
+
if (input.failureKind === 'rateLimited' && input.retryAfterSec !== undefined) {
|
|
117
|
+
return Math.max(input.retryAfterSec * 1000, scheduledDelayMs);
|
|
118
|
+
}
|
|
119
|
+
return scheduledDelayMs;
|
|
120
|
+
}
|
|
121
|
+
function parseRetryAfterSec(header) {
|
|
122
|
+
const waitMs = (0, retryAfterHeader_1.getRetryAfterHeaderMs)(Array.isArray(header) ? header[0] : header, Date.now());
|
|
123
|
+
return waitMs ? Math.ceil(waitMs / 1000) : undefined;
|
|
124
|
+
}
|
|
125
|
+
function getApiErrorMessage(body) {
|
|
126
|
+
const bodyPreview = body.slice(0, errorBodyPreviewLength);
|
|
127
|
+
try {
|
|
128
|
+
const errorJson = JSON.parse(body);
|
|
129
|
+
const apiMessage = errorJson?.error?.message ?? errorJson?.error;
|
|
130
|
+
return typeof apiMessage === 'string' ? apiMessage : bodyPreview;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return bodyPreview;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* @description One transcription request. Never rejects: every failure comes
|
|
138
|
+
* back classified so {@link transcribeAudio} can decide whether to retry.
|
|
139
|
+
*/
|
|
140
|
+
async function transcribeAudioOnce(filePath, endpoint, timeoutMs) {
|
|
141
|
+
// Detect a 0-byte download up-front: previously this would still be sent
|
|
142
|
+
// to Whisper, which replies 400 with a generic "file is empty" body that
|
|
143
|
+
// the old error path swallowed silently. Failing here gives the operator
|
|
144
|
+
// a concrete cause (download produced no bytes) without the round-trip.
|
|
145
|
+
let fileSize = 0;
|
|
146
|
+
try {
|
|
147
|
+
fileSize = (await fs_1.promises.stat(filePath)).size;
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
return { ok: false, error: `stat failed: ${e instanceof Error ? e.message : e}`, failureKind: 'permanent' };
|
|
151
|
+
}
|
|
152
|
+
if (fileSize === 0)
|
|
153
|
+
return { ok: false, error: 'downloaded audio is empty', failureKind: 'permanent' };
|
|
154
|
+
const form = new form_data_1.default();
|
|
155
|
+
// Explicit filename + content-type: form-data's auto-detection from the
|
|
156
|
+
// ReadStream's path usually works, but some intermediaries strip
|
|
157
|
+
// path-based hints. Setting both makes the multipart upload deterministic.
|
|
158
|
+
form.append('file', fs.createReadStream(filePath), {
|
|
159
|
+
filename: path.basename(filePath),
|
|
160
|
+
contentType: 'audio/ogg',
|
|
161
|
+
});
|
|
162
|
+
form.append('model', endpoint.model);
|
|
163
|
+
const url = new URL(endpoint.url);
|
|
164
|
+
const client = url.protocol === 'https:' ? https : http;
|
|
165
|
+
return new Promise((resolve) => {
|
|
166
|
+
// Audit S14 / #33: install the error handler before piping the form
|
|
167
|
+
// so a socket error during the initial handshake can't escape. Also
|
|
168
|
+
// add a hard timeout so a hung Groq/OpenAI response can't block the
|
|
169
|
+
// voice-message path indefinitely.
|
|
170
|
+
const req = client.request(url, {
|
|
171
|
+
method: 'POST',
|
|
172
|
+
headers: { ...form.getHeaders(), Authorization: `Bearer ${endpoint.apiKey}` },
|
|
173
|
+
}, (res) => {
|
|
174
|
+
// Decode across chunk boundaries: per-chunk `toString()` garbled a
|
|
175
|
+
// multi-byte character (e.g. Cyrillic) split between two chunks.
|
|
176
|
+
res.setEncoding('utf8');
|
|
177
|
+
let body = '';
|
|
178
|
+
res.on('data', (chunk) => { body += chunk; });
|
|
179
|
+
// A connection reset mid-body destroys only the RESPONSE: `end` never
|
|
180
|
+
// fires and the request emits no `error`, so without this the attempt
|
|
181
|
+
// would hang forever and stall the thread's voice queue.
|
|
182
|
+
res.on('error', (e) => {
|
|
183
|
+
resolve({ ok: false, error: e.message, failureKind: 'transient' });
|
|
184
|
+
});
|
|
185
|
+
res.on('end', () => {
|
|
186
|
+
const status = res.statusCode ?? 0;
|
|
187
|
+
if (status < 200 || status >= 300) {
|
|
188
|
+
resolve({
|
|
189
|
+
ok: false,
|
|
190
|
+
error: `HTTP ${status}: ${getApiErrorMessage(body)}`,
|
|
191
|
+
failureKind: getTranscribeFailureKind(status),
|
|
192
|
+
retryAfterSec: parseRetryAfterSec(res.headers['retry-after']),
|
|
193
|
+
});
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
const json = JSON.parse(body);
|
|
198
|
+
if (typeof json.text === 'string' && json.text.length > 0) {
|
|
199
|
+
resolve({ ok: true, text: json.text });
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
resolve({ ok: false, error: 'transcription returned empty text', failureKind: 'permanent' });
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
resolve({
|
|
206
|
+
ok: false,
|
|
207
|
+
error: `malformed response from Whisper API: ${body.slice(0, errorBodyPreviewLength)}`,
|
|
208
|
+
failureKind: 'permanent',
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
req.setTimeout(timeoutMs, () => {
|
|
214
|
+
req.destroy(new Error('transcription timed out'));
|
|
215
|
+
});
|
|
216
|
+
req.on('error', (e) => {
|
|
217
|
+
resolve({ ok: false, error: e instanceof Error ? e.message : String(e), failureKind: 'transient' });
|
|
218
|
+
});
|
|
219
|
+
form.pipe(req);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* @description Transcribe a voice note, retrying transient failures on the
|
|
224
|
+
* {@link transcribeRetryDelaysMs} schedule. Resolves with the text, or with
|
|
225
|
+
* the LAST error (annotated with the attempt count once a retry happened).
|
|
226
|
+
*/
|
|
227
|
+
async function transcribeAudio(filePath, endpoint, options) {
|
|
228
|
+
for (let retryIndex = 0;; retryIndex++) {
|
|
229
|
+
const attempt = await transcribeAudioOnce(filePath, endpoint, options.timeoutMs);
|
|
230
|
+
if (attempt.ok)
|
|
231
|
+
return attempt;
|
|
232
|
+
const delayMs = getTranscribeRetryDelayMs({
|
|
233
|
+
failureKind: attempt.failureKind,
|
|
234
|
+
retryIndex,
|
|
235
|
+
retryAfterSec: attempt.retryAfterSec,
|
|
236
|
+
retryDelaysMs: options.retryDelaysMs,
|
|
237
|
+
});
|
|
238
|
+
const attemptCount = retryIndex + 1;
|
|
239
|
+
if (delayMs === null) {
|
|
240
|
+
return {
|
|
241
|
+
ok: false,
|
|
242
|
+
error: attemptCount > 1 ? `${attempt.error} (after ${attemptCount} attempts)` : attempt.error,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
options.onRetry?.({ attemptNumber: attemptCount, error: attempt.error, delayMs });
|
|
246
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=transcribeAudio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribeAudio.js","sourceRoot":"","sources":["../../src/utils/transcribeAudio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure collector for a thread's TRANSIENT status-frame message ids
|
|
3
|
+
* — the three SEPARATE bot messages the turn lifecycle creates-then-deletes:
|
|
4
|
+
*
|
|
5
|
+
* - `statusMessageId` — the "✽ working…" liveness/spinner frame
|
|
6
|
+
* - `thinkingMessageId` — the live "☁️ thinking …" chain-of-thought frame
|
|
7
|
+
* - `subagentStatusMessageId` — the dedicated "🤖 sub-agent …" delegation frame
|
|
8
|
+
*
|
|
9
|
+
* Returns only the non-null ones, in that fixed order, so the graceful-shutdown
|
|
10
|
+
* sweep and the boot reconciliation can delete exactly the frames currently on
|
|
11
|
+
* screen. These ids live ONLY in volatile in-memory `ThreadMessageState`, so a
|
|
12
|
+
* restart that doesn't clean them up orphans the messages forever in the topic.
|
|
13
|
+
*
|
|
14
|
+
* Deliberately absent: the pinned status banner (`pinnedStatusMessageId`, a
|
|
15
|
+
* persistent-by-design message) and the native typing loader (a
|
|
16
|
+
* `sendChatAction('typing')` with no message of its own) — neither is a
|
|
17
|
+
* transient frame.
|
|
18
|
+
*/
|
|
19
|
+
export interface TransientFrameState {
|
|
20
|
+
statusMessageId: number | null;
|
|
21
|
+
thinkingMessageId: number | null;
|
|
22
|
+
subagentStatusMessageId: number | null;
|
|
23
|
+
}
|
|
24
|
+
export declare function getTransientFrameIds(state: TransientFrameState): number[];
|
|
25
|
+
/**
|
|
26
|
+
* The frame-generation guards a shutdown sweep must bump. Both are captured by
|
|
27
|
+
* an in-flight `sendStatusFrame` / thinking-frame create BEFORE its `await` and
|
|
28
|
+
* re-checked after (`getStatusFrameStoreDecision`) to decide store-vs-discard.
|
|
29
|
+
*/
|
|
30
|
+
export interface ShutdownFrameState extends TransientFrameState {
|
|
31
|
+
statusFrameGeneration: number;
|
|
32
|
+
thinkingFrameGeneration: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @description Graceful-shutdown clear of a thread's transient frames: returns the
|
|
36
|
+
* ids currently on screen (for the caller to delete), then bumps BOTH frame
|
|
37
|
+
* generations and nulls all three ids.
|
|
38
|
+
*
|
|
39
|
+
* The generation bump is the load-bearing part, and the reason this must run for
|
|
40
|
+
* EVERY tracked thread — including one whose ids are all null right now. A
|
|
41
|
+
* `sendStatusFrame` / thinking-frame create that is mid-`await` when the sweep
|
|
42
|
+
* runs has NOT yet stored its id (so {@link getTransientFrameIds} is empty here),
|
|
43
|
+
* but it captured the pre-bump generation and re-checks it after the await
|
|
44
|
+
* (`getStatusFrameStoreDecision`). Bumping makes that racing create DISCARD
|
|
45
|
+
* (delete) its just-sent message instead of storing an orphan that outlives the
|
|
46
|
+
* restart — the leftover "🔧 <tool>…" / "✽ working…" frame stranded as a topic's
|
|
47
|
+
* last message. Mirrors the bump `deleteStatusMessage` already does for the
|
|
48
|
+
* mid-session delete; the shutdown path previously nulled the ids WITHOUT bumping,
|
|
49
|
+
* so it sat outside that race protection.
|
|
50
|
+
*/
|
|
51
|
+
export declare function clearTransientFramesForShutdown(state: ShutdownFrameState): number[];
|
|
52
|
+
//# sourceMappingURL=transientFrames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transientFrames.d.ts","sourceRoot":"","sources":["../../src/utils/transientFrames.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAMzE;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAQnF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTransientFrameIds = getTransientFrameIds;
|
|
4
|
+
exports.clearTransientFramesForShutdown = clearTransientFramesForShutdown;
|
|
5
|
+
function getTransientFrameIds(state) {
|
|
6
|
+
const ids = [];
|
|
7
|
+
if (state.statusMessageId !== null)
|
|
8
|
+
ids.push(state.statusMessageId);
|
|
9
|
+
if (state.thinkingMessageId !== null)
|
|
10
|
+
ids.push(state.thinkingMessageId);
|
|
11
|
+
if (state.subagentStatusMessageId !== null)
|
|
12
|
+
ids.push(state.subagentStatusMessageId);
|
|
13
|
+
return ids;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @description Graceful-shutdown clear of a thread's transient frames: returns the
|
|
17
|
+
* ids currently on screen (for the caller to delete), then bumps BOTH frame
|
|
18
|
+
* generations and nulls all three ids.
|
|
19
|
+
*
|
|
20
|
+
* The generation bump is the load-bearing part, and the reason this must run for
|
|
21
|
+
* EVERY tracked thread — including one whose ids are all null right now. A
|
|
22
|
+
* `sendStatusFrame` / thinking-frame create that is mid-`await` when the sweep
|
|
23
|
+
* runs has NOT yet stored its id (so {@link getTransientFrameIds} is empty here),
|
|
24
|
+
* but it captured the pre-bump generation and re-checks it after the await
|
|
25
|
+
* (`getStatusFrameStoreDecision`). Bumping makes that racing create DISCARD
|
|
26
|
+
* (delete) its just-sent message instead of storing an orphan that outlives the
|
|
27
|
+
* restart — the leftover "🔧 <tool>…" / "✽ working…" frame stranded as a topic's
|
|
28
|
+
* last message. Mirrors the bump `deleteStatusMessage` already does for the
|
|
29
|
+
* mid-session delete; the shutdown path previously nulled the ids WITHOUT bumping,
|
|
30
|
+
* so it sat outside that race protection.
|
|
31
|
+
*/
|
|
32
|
+
function clearTransientFramesForShutdown(state) {
|
|
33
|
+
const ids = getTransientFrameIds(state);
|
|
34
|
+
state.statusFrameGeneration += 1;
|
|
35
|
+
state.thinkingFrameGeneration += 1;
|
|
36
|
+
state.statusMessageId = null;
|
|
37
|
+
state.thinkingMessageId = null;
|
|
38
|
+
state.subagentStatusMessageId = null;
|
|
39
|
+
return ids;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=transientFrames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transientFrames.js","sourceRoot":"","sources":["../../src/utils/transientFrames.ts"],"names":[],"mappings":";;AAwBA,oDAMC;AA6BD,0EAQC;AA3CD,SAAgB,oBAAoB,CAAC,KAA0B;IAC7D,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,iBAAiB,KAAK,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,uBAAuB,KAAK,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACpF,OAAO,GAAG,CAAC;AACb,CAAC;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,+BAA+B,CAAC,KAAyB;IACvE,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACxC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC;IACjC,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;IACnC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACrC,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure decision for whether the native "agent is typing" state
|
|
3
|
+
* should keep showing for a topic (S3).
|
|
4
|
+
*
|
|
5
|
+
* The typing indicator persists while a topic has anything still to show OR its
|
|
6
|
+
* agent is still working — and clears only when the topic is truly drained AND
|
|
7
|
+
* idle. Extracted so the rule is unit-testable without the Telegraf / adapter
|
|
8
|
+
* machinery; `bot.ts` supplies the two live readings (output-queue streaming and
|
|
9
|
+
* adapter busy).
|
|
10
|
+
*/
|
|
11
|
+
export interface TypingActiveInput {
|
|
12
|
+
/** Is real agent output mid-flight (queued / debouncing / sending / drafting)? */
|
|
13
|
+
isOutputStreaming: boolean;
|
|
14
|
+
/** Is the thread's adapter still working (its `checkIsBusy`)? */
|
|
15
|
+
isAdapterBusy: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Is a BOT-ISSUED compaction in flight for this thread (`/compact`, the idle
|
|
18
|
+
* watchdog, or the agent's `compact_conversation`)?
|
|
19
|
+
*
|
|
20
|
+
* A third input is needed because the other two are BOTH false during a
|
|
21
|
+
* compaction on at least one backend: OpenCode sets no busy flag for its
|
|
22
|
+
* `summarize` turn, and neither backend streams output while summarising. A
|
|
23
|
+
* compaction measured at 43 s (and up to 3+ minutes on a large context) would
|
|
24
|
+
* therefore leave the topic showing nothing at all — the silence this input
|
|
25
|
+
* exists to remove.
|
|
26
|
+
*/
|
|
27
|
+
isCompacting: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @description Keep the typing indicator alive while output is streaming, the
|
|
31
|
+
* agent is busy, OR a bot-issued compaction is running; stop only when ALL three
|
|
32
|
+
* are false (drained + idle + not compacting).
|
|
33
|
+
*/
|
|
34
|
+
export declare function checkShouldKeepTyping(input: TypingActiveInput): boolean;
|
|
35
|
+
//# sourceMappingURL=typingActive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typingActive.d.ts","sourceRoot":"","sources":["../../src/utils/typingActive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iEAAiE;IACjE,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;OAUG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAEvE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Pure decision for whether the native "agent is typing" state
|
|
4
|
+
* should keep showing for a topic (S3).
|
|
5
|
+
*
|
|
6
|
+
* The typing indicator persists while a topic has anything still to show OR its
|
|
7
|
+
* agent is still working — and clears only when the topic is truly drained AND
|
|
8
|
+
* idle. Extracted so the rule is unit-testable without the Telegraf / adapter
|
|
9
|
+
* machinery; `bot.ts` supplies the two live readings (output-queue streaming and
|
|
10
|
+
* adapter busy).
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.checkShouldKeepTyping = checkShouldKeepTyping;
|
|
14
|
+
/**
|
|
15
|
+
* @description Keep the typing indicator alive while output is streaming, the
|
|
16
|
+
* agent is busy, OR a bot-issued compaction is running; stop only when ALL three
|
|
17
|
+
* are false (drained + idle + not compacting).
|
|
18
|
+
*/
|
|
19
|
+
function checkShouldKeepTyping(input) {
|
|
20
|
+
return input.isOutputStreaming || input.isAdapterBusy || input.isCompacting;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=typingActive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typingActive.js","sourceRoot":"","sources":["../../src/utils/typingActive.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AA0BH,sDAEC;AAPD;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,KAAwB;IAC5D,OAAO,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Loop-level backstop for the native "agent is typing…" indicator —
|
|
3
|
+
* a bounded safety net that force-stops the typing loader when it is being kept
|
|
4
|
+
* alive by a PROVABLY-INCONSISTENT state, never by a legitimately long turn.
|
|
5
|
+
*
|
|
6
|
+
* ROOT-CAUSE CONTEXT. The typing loop self-stops only when
|
|
7
|
+
* `checkShouldKeepTyping` (`isOutputStreaming || isAdapterBusy`) goes false, and
|
|
8
|
+
* has NO absolute bound. `jsonStreamBusyWatchdog` already covers a stuck
|
|
9
|
+
* `isBusy` (a missed terminal `result`). This backstop covers the OTHER input:
|
|
10
|
+
* `isOutputStreaming`, which reads `q.pendingOutput !== null || q.isProcessing ||
|
|
11
|
+
* q.debounceTimer !== null`. A leaked non-null `debounceTimer` (the `isFinal`
|
|
12
|
+
* fast-path in `queueOutput` cleared the timer but left the handle set) pins
|
|
13
|
+
* `isOutputStreaming` true forever → the indicator hangs unbounded even though
|
|
14
|
+
* the output queue is empty (live 2026-07-19, a json-stream group topic firing
|
|
15
|
+
* `sendChatAction('typing')` every 4s for an hour+ after a clean turn end).
|
|
16
|
+
*
|
|
17
|
+
* WHY THIS CAN'T CUT A LEGIT LONG (SILENT) TURN. The backstop fires ONLY on a
|
|
18
|
+
* contradiction that a working agent can never produce:
|
|
19
|
+
* - a genuinely-working agent keeps `isAdapterBusy` TRUE (a long silent
|
|
20
|
+
* Bash/Task tool, a sub-agent, an unanswered question all hold busy) → vetoed;
|
|
21
|
+
* - a bot-issued compaction (`isCompacting`) is work the bot is itself awaiting,
|
|
22
|
+
* and on OpenCode it sets no busy flag at all → vetoed;
|
|
23
|
+
* - a live DM draft is a real stream (`isTransportStreaming`) → vetoed;
|
|
24
|
+
* - real text waiting to send (`hasPendingOutput`) or an in-flight send
|
|
25
|
+
* (`isProcessing`, which may legitimately be a slow API call) → vetoed.
|
|
26
|
+
* Only when the adapter is idle, nothing is drafting, the queue is empty AND an
|
|
27
|
+
* un-fired debounce handle lingers does it fire. A LIVE debounce is ALWAYS armed
|
|
28
|
+
* WITH pending text (both `queueOutput` and `processOutputQueue` arm it only when
|
|
29
|
+
* `pendingOutput` is set, nulling it the instant it fires), so "debounce armed +
|
|
30
|
+
* empty queue" can only be the dead/stale handle from the leak — never a real
|
|
31
|
+
* in-flight turn. The decision is therefore safe by construction: it truncates a
|
|
32
|
+
* leak, never work.
|
|
33
|
+
*/
|
|
34
|
+
export interface TypingLoopBackstopInput {
|
|
35
|
+
/** The adapter's genuine busy signal — a real long/silent tool turn holds it. */
|
|
36
|
+
isAdapterBusy: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* A BOT-ISSUED compaction is in flight for this thread. A VETO, because during
|
|
39
|
+
* a compaction the "leak" pattern below is LEGITIMATE: the adapter reports idle
|
|
40
|
+
* (OpenCode sets no busy flag for `summarize`), nothing is queued, and a stale
|
|
41
|
+
* debounce handle may well be sitting there from the turn that just ended — and
|
|
42
|
+
* force-stopping on that combination would kill precisely the indicator that
|
|
43
|
+
* covers the compaction.
|
|
44
|
+
*/
|
|
45
|
+
isCompacting: boolean;
|
|
46
|
+
/** The output transport (DM draft cursor) reports an active live stream. */
|
|
47
|
+
isTransportStreaming: boolean;
|
|
48
|
+
/** `q.pendingOutput !== null` — real agent text still waiting to be sent. */
|
|
49
|
+
hasPendingOutput: boolean;
|
|
50
|
+
/** `q.isProcessing` — a flush is actively awaiting a send (possibly slow). */
|
|
51
|
+
isProcessing: boolean;
|
|
52
|
+
/** `q.debounceTimer !== null` — a debounce timer HANDLE is present. */
|
|
53
|
+
hasDebounceTimer: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* @description True iff the typing loop is being kept alive PURELY by a leaked
|
|
57
|
+
* output-queue state — an armed debounce handle over an otherwise-empty queue
|
|
58
|
+
* while the adapter is idle. This is a provable inconsistency (a live debounce
|
|
59
|
+
* never coexists with an empty queue), so force-stopping here can only clear a
|
|
60
|
+
* leak, never truncate a genuinely long turn. Every "genuinely in flight" signal
|
|
61
|
+
* (adapter busy / DM draft / pending text / active send) VETOES the decision.
|
|
62
|
+
*/
|
|
63
|
+
export declare function checkIsTypingStuckByLeak(input: TypingLoopBackstopInput): boolean;
|
|
64
|
+
//# sourceMappingURL=typingLoopBackstop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typingLoopBackstop.d.ts","sourceRoot":"","sources":["../../src/utils/typingLoopBackstop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,WAAW,uBAAuB;IACtC,iFAAiF;IACjF,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,oBAAoB,EAAE,OAAO,CAAC;IAC9B,6EAA6E;IAC7E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8EAA8E;IAC9E,YAAY,EAAE,OAAO,CAAC;IACtB,uEAAuE;IACvE,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAiBhF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Loop-level backstop for the native "agent is typing…" indicator —
|
|
4
|
+
* a bounded safety net that force-stops the typing loader when it is being kept
|
|
5
|
+
* alive by a PROVABLY-INCONSISTENT state, never by a legitimately long turn.
|
|
6
|
+
*
|
|
7
|
+
* ROOT-CAUSE CONTEXT. The typing loop self-stops only when
|
|
8
|
+
* `checkShouldKeepTyping` (`isOutputStreaming || isAdapterBusy`) goes false, and
|
|
9
|
+
* has NO absolute bound. `jsonStreamBusyWatchdog` already covers a stuck
|
|
10
|
+
* `isBusy` (a missed terminal `result`). This backstop covers the OTHER input:
|
|
11
|
+
* `isOutputStreaming`, which reads `q.pendingOutput !== null || q.isProcessing ||
|
|
12
|
+
* q.debounceTimer !== null`. A leaked non-null `debounceTimer` (the `isFinal`
|
|
13
|
+
* fast-path in `queueOutput` cleared the timer but left the handle set) pins
|
|
14
|
+
* `isOutputStreaming` true forever → the indicator hangs unbounded even though
|
|
15
|
+
* the output queue is empty (live 2026-07-19, a json-stream group topic firing
|
|
16
|
+
* `sendChatAction('typing')` every 4s for an hour+ after a clean turn end).
|
|
17
|
+
*
|
|
18
|
+
* WHY THIS CAN'T CUT A LEGIT LONG (SILENT) TURN. The backstop fires ONLY on a
|
|
19
|
+
* contradiction that a working agent can never produce:
|
|
20
|
+
* - a genuinely-working agent keeps `isAdapterBusy` TRUE (a long silent
|
|
21
|
+
* Bash/Task tool, a sub-agent, an unanswered question all hold busy) → vetoed;
|
|
22
|
+
* - a bot-issued compaction (`isCompacting`) is work the bot is itself awaiting,
|
|
23
|
+
* and on OpenCode it sets no busy flag at all → vetoed;
|
|
24
|
+
* - a live DM draft is a real stream (`isTransportStreaming`) → vetoed;
|
|
25
|
+
* - real text waiting to send (`hasPendingOutput`) or an in-flight send
|
|
26
|
+
* (`isProcessing`, which may legitimately be a slow API call) → vetoed.
|
|
27
|
+
* Only when the adapter is idle, nothing is drafting, the queue is empty AND an
|
|
28
|
+
* un-fired debounce handle lingers does it fire. A LIVE debounce is ALWAYS armed
|
|
29
|
+
* WITH pending text (both `queueOutput` and `processOutputQueue` arm it only when
|
|
30
|
+
* `pendingOutput` is set, nulling it the instant it fires), so "debounce armed +
|
|
31
|
+
* empty queue" can only be the dead/stale handle from the leak — never a real
|
|
32
|
+
* in-flight turn. The decision is therefore safe by construction: it truncates a
|
|
33
|
+
* leak, never work.
|
|
34
|
+
*/
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.checkIsTypingStuckByLeak = checkIsTypingStuckByLeak;
|
|
37
|
+
/**
|
|
38
|
+
* @description True iff the typing loop is being kept alive PURELY by a leaked
|
|
39
|
+
* output-queue state — an armed debounce handle over an otherwise-empty queue
|
|
40
|
+
* while the adapter is idle. This is a provable inconsistency (a live debounce
|
|
41
|
+
* never coexists with an empty queue), so force-stopping here can only clear a
|
|
42
|
+
* leak, never truncate a genuinely long turn. Every "genuinely in flight" signal
|
|
43
|
+
* (adapter busy / DM draft / pending text / active send) VETOES the decision.
|
|
44
|
+
*/
|
|
45
|
+
function checkIsTypingStuckByLeak(input) {
|
|
46
|
+
// A genuinely working agent (long/silent tool, sub-agent, mid-turn, unanswered
|
|
47
|
+
// question) keeps this true — never a leak, never cut.
|
|
48
|
+
if (input.isAdapterBusy)
|
|
49
|
+
return false;
|
|
50
|
+
// A bot-issued compaction is real work the bot itself is awaiting, even though
|
|
51
|
+
// it looks exactly like the leak from the output queue's side.
|
|
52
|
+
if (input.isCompacting)
|
|
53
|
+
return false;
|
|
54
|
+
// A live DM draft cursor is a legitimate stream, not this leak.
|
|
55
|
+
if (input.isTransportStreaming)
|
|
56
|
+
return false;
|
|
57
|
+
// Real text queued → genuinely streaming.
|
|
58
|
+
if (input.hasPendingOutput)
|
|
59
|
+
return false;
|
|
60
|
+
// An in-flight send may just be a slow API call, not a leak — leave it be.
|
|
61
|
+
if (input.isProcessing)
|
|
62
|
+
return false;
|
|
63
|
+
// Nothing is genuinely in flight, yet a debounce timer handle lingers. A live
|
|
64
|
+
// debounce is ALWAYS paired with pending text, so a handle over an empty queue
|
|
65
|
+
// can only be the dead/stale one left by the `isFinal` fast-path → a leak.
|
|
66
|
+
return input.hasDebounceTimer;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=typingLoopBackstop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typingLoopBackstop.js","sourceRoot":"","sources":["../../src/utils/typingLoopBackstop.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;;AAgCH,4DAiBC;AAzBD;;;;;;;GAOG;AACH,SAAgB,wBAAwB,CAAC,KAA8B;IACrE,+EAA+E;IAC/E,uDAAuD;IACvD,IAAI,KAAK,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IACtC,+EAA+E;IAC/E,+DAA+D;IAC/D,IAAI,KAAK,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACrC,gEAAgE;IAChE,IAAI,KAAK,CAAC,oBAAoB;QAAE,OAAO,KAAK,CAAC;IAC7C,0CAA0C;IAC1C,IAAI,KAAK,CAAC,gBAAgB;QAAE,OAAO,KAAK,CAAC;IACzC,2EAA2E;IAC3E,IAAI,KAAK,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACrC,8EAA8E;IAC9E,+EAA+E;IAC/E,2EAA2E;IAC3E,OAAO,KAAK,CAAC,gBAAgB,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure decision helper for the `/verbosity` umbrella command
|
|
3
|
+
* (plan 2026-06-11 S2). The macro itself just writes the same per-pref store
|
|
4
|
+
* the individual commands (`/thinking`, `/tool_results`, `/subagent`) write —
|
|
5
|
+
* last write per pref wins — so the only /verbosity-specific logic is this
|
|
6
|
+
* read-side question: "do all three prefs currently agree on one level?",
|
|
7
|
+
* which drives the picker's ✓ marker and the "custom" (mixed) rendering.
|
|
8
|
+
*/
|
|
9
|
+
import type { DisplayVerbosityMode, ResolvedThreadDisplayPrefs } from '../types';
|
|
10
|
+
/**
|
|
11
|
+
* @description The single level all three display prefs (thinking,
|
|
12
|
+
* toolResults, subagent) currently share, or `null` when they are mixed.
|
|
13
|
+
* The `/verbosity` picker puts ✓ on an exact match ONLY — a mixed state shows
|
|
14
|
+
* no marker anywhere and is rendered as "custom" with the three values
|
|
15
|
+
* spelled out.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getUniformVerbosityLevel(prefs: ResolvedThreadDisplayPrefs): DisplayVerbosityMode | null;
|
|
18
|
+
//# sourceMappingURL=verbosityRender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verbosityRender.d.ts","sourceRoot":"","sources":["../../src/utils/verbosityRender.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAEjF;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,0BAA0B,GAAG,oBAAoB,GAAG,IAAI,CAKvG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getUniformVerbosityLevel = getUniformVerbosityLevel;
|
|
4
|
+
/**
|
|
5
|
+
* @description The single level all three display prefs (thinking,
|
|
6
|
+
* toolResults, subagent) currently share, or `null` when they are mixed.
|
|
7
|
+
* The `/verbosity` picker puts ✓ on an exact match ONLY — a mixed state shows
|
|
8
|
+
* no marker anywhere and is rendered as "custom" with the three values
|
|
9
|
+
* spelled out.
|
|
10
|
+
*/
|
|
11
|
+
function getUniformVerbosityLevel(prefs) {
|
|
12
|
+
if (prefs.thinking === prefs.toolResults && prefs.toolResults === prefs.subagent) {
|
|
13
|
+
return prefs.thinking;
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=verbosityRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verbosityRender.js","sourceRoot":"","sources":["../../src/utils/verbosityRender.ts"],"names":[],"mappings":";;AAiBA,4DAKC;AAZD;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,KAAiC;IACxE,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjF,OAAO,KAAK,CAAC,QAAQ,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|