charness 0.0.0-stage → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +88 -0
- package/DEVELOPMENT.md +110 -0
- package/LICENSE +21 -0
- package/MIGRATION_1_TO_2.md +24 -0
- package/README.md +1024 -2
- package/dist/accessControl.d.ts +71 -0
- package/dist/accessControl.d.ts.map +1 -0
- package/dist/accessControl.js +108 -0
- package/dist/accessControl.js.map +1 -0
- package/dist/adapters/adapterEventRouting.d.ts +51 -0
- package/dist/adapters/adapterEventRouting.d.ts.map +1 -0
- package/dist/adapters/adapterEventRouting.js +74 -0
- package/dist/adapters/adapterEventRouting.js.map +1 -0
- package/dist/adapters/adapterNames.d.ts +19 -0
- package/dist/adapters/adapterNames.d.ts.map +1 -0
- package/dist/adapters/adapterNames.js +25 -0
- package/dist/adapters/adapterNames.js.map +1 -0
- package/dist/adapters/claudeCliAdapter.d.ts +1336 -0
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeCliAdapter.js +4204 -0
- package/dist/adapters/claudeCliAdapter.js.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +548 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.js +1810 -0
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -0
- package/dist/adapters/claudePlatformFlags.d.ts +35 -0
- package/dist/adapters/claudePlatformFlags.d.ts.map +1 -0
- package/dist/adapters/claudePlatformFlags.js +46 -0
- package/dist/adapters/claudePlatformFlags.js.map +1 -0
- package/dist/adapters/createAdapter.d.ts +252 -0
- package/dist/adapters/createAdapter.d.ts.map +1 -0
- package/dist/adapters/createAdapter.js +475 -0
- package/dist/adapters/createAdapter.js.map +1 -0
- package/dist/adapters/openCodeAdapter.d.ts +1446 -0
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
- package/dist/adapters/openCodeAdapter.js +4540 -0
- package/dist/adapters/openCodeAdapter.js.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts +28 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.js +15 -0
- package/dist/adapters/sessionLaunchDefaults.js.map +1 -0
- package/dist/adapters/terminalAdapter.d.ts +68 -0
- package/dist/adapters/terminalAdapter.d.ts.map +1 -0
- package/dist/adapters/terminalAdapter.js +371 -0
- package/dist/adapters/terminalAdapter.js.map +1 -0
- package/dist/agentLogin/agentLogin.d.ts +31 -0
- package/dist/agentLogin/agentLogin.d.ts.map +1 -0
- package/dist/agentLogin/agentLogin.js +493 -0
- package/dist/agentLogin/agentLogin.js.map +1 -0
- package/dist/agentTrigger.d.ts +28 -0
- package/dist/agentTrigger.d.ts.map +1 -0
- package/dist/agentTrigger.js +53 -0
- package/dist/agentTrigger.js.map +1 -0
- package/dist/apiErrorRetry.d.ts +209 -0
- package/dist/apiErrorRetry.d.ts.map +1 -0
- package/dist/apiErrorRetry.js +351 -0
- package/dist/apiErrorRetry.js.map +1 -0
- package/dist/apiRetryKick.d.ts +148 -0
- package/dist/apiRetryKick.d.ts.map +1 -0
- package/dist/apiRetryKick.js +158 -0
- package/dist/apiRetryKick.js.map +1 -0
- package/dist/bootClassifier.d.ts +46 -0
- package/dist/bootClassifier.d.ts.map +1 -0
- package/dist/bootClassifier.js +43 -0
- package/dist/bootClassifier.js.map +1 -0
- package/dist/bot.d.ts +207 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +10611 -0
- package/dist/bot.js.map +1 -0
- package/dist/botFileStorage.d.ts +60 -0
- package/dist/botFileStorage.d.ts.map +1 -0
- package/dist/botFileStorage.js +205 -0
- package/dist/botFileStorage.js.map +1 -0
- package/dist/cli/applyDnsFix.d.ts +7 -0
- package/dist/cli/applyDnsFix.d.ts.map +1 -0
- package/dist/cli/applyDnsFix.js +46 -0
- package/dist/cli/applyDnsFix.js.map +1 -0
- package/dist/cli/bot.d.ts +27 -0
- package/dist/cli/bot.d.ts.map +1 -0
- package/dist/cli/bot.js +98 -0
- package/dist/cli/bot.js.map +1 -0
- package/dist/cli/botEntry.d.ts +3 -0
- package/dist/cli/botEntry.d.ts.map +1 -0
- package/dist/cli/botEntry.js +11 -0
- package/dist/cli/botEntry.js.map +1 -0
- package/dist/cli/connectorGuards.d.ts +31 -0
- package/dist/cli/connectorGuards.d.ts.map +1 -0
- package/dist/cli/connectorGuards.js +159 -0
- package/dist/cli/connectorGuards.js.map +1 -0
- package/dist/cli/envLoader.d.ts +34 -0
- package/dist/cli/envLoader.d.ts.map +1 -0
- package/dist/cli/envLoader.js +132 -0
- package/dist/cli/envLoader.js.map +1 -0
- package/dist/cli/hot.d.ts +82 -0
- package/dist/cli/hot.d.ts.map +1 -0
- package/dist/cli/hot.js +323 -0
- package/dist/cli/hot.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +130 -0
- package/dist/cli.js.map +1 -0
- package/dist/connectors/jira/adf.d.ts +72 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -0
- package/dist/connectors/jira/adf.js +407 -0
- package/dist/connectors/jira/adf.js.map +1 -0
- package/dist/connectors/jira/agentBinaries.d.ts +14 -0
- package/dist/connectors/jira/agentBinaries.d.ts.map +1 -0
- package/dist/connectors/jira/agentBinaries.js +75 -0
- package/dist/connectors/jira/agentBinaries.js.map +1 -0
- package/dist/connectors/jira/answerSink.d.ts +52 -0
- package/dist/connectors/jira/answerSink.d.ts.map +1 -0
- package/dist/connectors/jira/answerSink.js +220 -0
- package/dist/connectors/jira/answerSink.js.map +1 -0
- package/dist/connectors/jira/attachmentDownload.d.ts +41 -0
- package/dist/connectors/jira/attachmentDownload.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentDownload.js +92 -0
- package/dist/connectors/jira/attachmentDownload.js.map +1 -0
- package/dist/connectors/jira/attachmentTool.d.ts +43 -0
- package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentTool.js +150 -0
- package/dist/connectors/jira/attachmentTool.js.map +1 -0
- package/dist/connectors/jira/client.d.ts +490 -0
- package/dist/connectors/jira/client.d.ts.map +1 -0
- package/dist/connectors/jira/client.js +453 -0
- package/dist/connectors/jira/client.js.map +1 -0
- package/dist/connectors/jira/config.d.ts +117 -0
- package/dist/connectors/jira/config.d.ts.map +1 -0
- package/dist/connectors/jira/config.js +350 -0
- package/dist/connectors/jira/config.js.map +1 -0
- package/dist/connectors/jira/configFile.d.ts +10 -0
- package/dist/connectors/jira/configFile.d.ts.map +1 -0
- package/dist/connectors/jira/configFile.js +50 -0
- package/dist/connectors/jira/configFile.js.map +1 -0
- package/dist/connectors/jira/connector.d.ts +68 -0
- package/dist/connectors/jira/connector.d.ts.map +1 -0
- package/dist/connectors/jira/connector.js +257 -0
- package/dist/connectors/jira/connector.js.map +1 -0
- package/dist/connectors/jira/contextLedger.d.ts +59 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
- package/dist/connectors/jira/contextLedger.js +194 -0
- package/dist/connectors/jira/contextLedger.js.map +1 -0
- package/dist/connectors/jira/contextPreamble.d.ts +18 -0
- package/dist/connectors/jira/contextPreamble.d.ts.map +1 -0
- package/dist/connectors/jira/contextPreamble.js +31 -0
- package/dist/connectors/jira/contextPreamble.js.map +1 -0
- package/dist/connectors/jira/inbound.d.ts +132 -0
- package/dist/connectors/jira/inbound.d.ts.map +1 -0
- package/dist/connectors/jira/inbound.js +316 -0
- package/dist/connectors/jira/inbound.js.map +1 -0
- package/dist/connectors/jira/issueBlocks.d.ts +51 -0
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
- package/dist/connectors/jira/issueBlocks.js +182 -0
- package/dist/connectors/jira/issueBlocks.js.map +1 -0
- package/dist/connectors/jira/issueContext.d.ts +25 -0
- package/dist/connectors/jira/issueContext.d.ts.map +1 -0
- package/dist/connectors/jira/issueContext.js +53 -0
- package/dist/connectors/jira/issueContext.js.map +1 -0
- package/dist/connectors/jira/issueDelta.d.ts +35 -0
- package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
- package/dist/connectors/jira/issueDelta.js +50 -0
- package/dist/connectors/jira/issueDelta.js.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts +20 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.js +92 -0
- package/dist/connectors/jira/mediaPlaceholders.js.map +1 -0
- package/dist/connectors/jira/outbound.d.ts +6 -0
- package/dist/connectors/jira/outbound.d.ts.map +1 -0
- package/dist/connectors/jira/outbound.js +38 -0
- package/dist/connectors/jira/outbound.js.map +1 -0
- package/dist/connectors/jira/prompt.d.ts +37 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -0
- package/dist/connectors/jira/prompt.js +99 -0
- package/dist/connectors/jira/prompt.js.map +1 -0
- package/dist/connectors/jira/promptSpill.d.ts +50 -0
- package/dist/connectors/jira/promptSpill.d.ts.map +1 -0
- package/dist/connectors/jira/promptSpill.js +157 -0
- package/dist/connectors/jira/promptSpill.js.map +1 -0
- package/dist/connectors/jira/promptText.d.ts +7 -0
- package/dist/connectors/jira/promptText.d.ts.map +1 -0
- package/dist/connectors/jira/promptText.js +26 -0
- package/dist/connectors/jira/promptText.js.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts +16 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.js +101 -0
- package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/jira/trigger.d.ts +50 -0
- package/dist/connectors/jira/trigger.d.ts.map +1 -0
- package/dist/connectors/jira/trigger.js +93 -0
- package/dist/connectors/jira/trigger.js.map +1 -0
- package/dist/connectors/jira/triggerLog.d.ts +51 -0
- package/dist/connectors/jira/triggerLog.d.ts.map +1 -0
- package/dist/connectors/jira/triggerLog.js +78 -0
- package/dist/connectors/jira/triggerLog.js.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts +58 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.js +105 -0
- package/dist/connectors/jira/unconfirmedPosts.js.map +1 -0
- package/dist/connectors/telegram/answerSink.d.ts +46 -0
- package/dist/connectors/telegram/answerSink.d.ts.map +1 -0
- package/dist/connectors/telegram/answerSink.js +71 -0
- package/dist/connectors/telegram/answerSink.js.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +31 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js +142 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -0
- package/dist/connectors/telegram/commands/botCore.d.ts +46 -0
- package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/botCore.js +3 -0
- package/dist/connectors/telegram/commands/botCore.js.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.js +13 -0
- package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -0
- package/dist/connectors/telegram/commands/compaction.d.ts +47 -0
- package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/compaction.js +868 -0
- package/dist/connectors/telegram/commands/compaction.js.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts +13 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.js +335 -0
- package/dist/connectors/telegram/commands/displayModes.js.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts +95 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.js +841 -0
- package/dist/connectors/telegram/commands/modelProviders.js.map +1 -0
- package/dist/connectors/telegram/commands/reminders.d.ts +54 -0
- package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/reminders.js +624 -0
- package/dist/connectors/telegram/commands/reminders.js.map +1 -0
- package/dist/connectors/telegram/fileIntake.d.ts +166 -0
- package/dist/connectors/telegram/fileIntake.d.ts.map +1 -0
- package/dist/connectors/telegram/fileIntake.js +304 -0
- package/dist/connectors/telegram/fileIntake.js.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts +57 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.js +221 -0
- package/dist/connectors/telegram/fileSendGateway.js.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts +52 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js +71 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js.map +1 -0
- package/dist/connectors/telegram/inbound.d.ts +131 -0
- package/dist/connectors/telegram/inbound.d.ts.map +1 -0
- package/dist/connectors/telegram/inbound.js +278 -0
- package/dist/connectors/telegram/inbound.js.map +1 -0
- package/dist/connectors/telegram/languagePicker.d.ts +32 -0
- package/dist/connectors/telegram/languagePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/languagePicker.js +55 -0
- package/dist/connectors/telegram/languagePicker.js.map +1 -0
- package/dist/connectors/telegram/messageSplit.d.ts +62 -0
- package/dist/connectors/telegram/messageSplit.d.ts.map +1 -0
- package/dist/connectors/telegram/messageSplit.js +119 -0
- package/dist/connectors/telegram/messageSplit.js.map +1 -0
- package/dist/connectors/telegram/outbound.d.ts +62 -0
- package/dist/connectors/telegram/outbound.d.ts.map +1 -0
- package/dist/connectors/telegram/outbound.js +116 -0
- package/dist/connectors/telegram/outbound.js.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts +34 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.js +77 -0
- package/dist/connectors/telegram/output/createOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts +47 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js +412 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts +38 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.js +49 -0
- package/dist/connectors/telegram/outputBacklogGlue.js.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts +93 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.js +120 -0
- package/dist/connectors/telegram/outputFlushPlan.js.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts +30 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.js +37 -0
- package/dist/connectors/telegram/questionKeyboards.js.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts +27 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.js +97 -0
- package/dist/connectors/telegram/renderAgentHtml.js.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts +28 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.js +107 -0
- package/dist/connectors/telegram/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts +19 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.js +35 -0
- package/dist/connectors/telegram/telegramCallGuard.js.map +1 -0
- package/dist/connectors/telegram/timezonePicker.d.ts +85 -0
- package/dist/connectors/telegram/timezonePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/timezonePicker.js +142 -0
- package/dist/connectors/telegram/timezonePicker.js.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts +85 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.js +159 -0
- package/dist/connectors/telegram/updateDispatcher.js.map +1 -0
- package/dist/connectors/test/connector.d.ts +52 -0
- package/dist/connectors/test/connector.d.ts.map +1 -0
- package/dist/connectors/test/connector.js +143 -0
- package/dist/connectors/test/connector.js.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts +25 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.js +50 -0
- package/dist/connectors/test/sessionKeyCodec.js.map +1 -0
- package/dist/diagLog.d.ts +6 -0
- package/dist/diagLog.d.ts.map +1 -0
- package/dist/diagLog.js +58 -0
- package/dist/diagLog.js.map +1 -0
- package/dist/effortLevels.d.ts +68 -0
- package/dist/effortLevels.d.ts.map +1 -0
- package/dist/effortLevels.js +114 -0
- package/dist/effortLevels.js.map +1 -0
- package/dist/folderName.d.ts +42 -0
- package/dist/folderName.d.ts.map +1 -0
- package/dist/folderName.js +51 -0
- package/dist/folderName.js.map +1 -0
- package/dist/i18n/de.d.ts +2 -0
- package/dist/i18n/de.d.ts.map +1 -0
- package/dist/i18n/de.js +537 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en.d.ts +7 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +566 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/es.d.ts +2 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +537 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/fr.d.ts +2 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +537 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/hi.d.ts +2 -0
- package/dist/i18n/hi.d.ts.map +1 -0
- package/dist/i18n/hi.js +537 -0
- package/dist/i18n/hi.js.map +1 -0
- package/dist/i18n/ja.d.ts +2 -0
- package/dist/i18n/ja.d.ts.map +1 -0
- package/dist/i18n/ja.js +537 -0
- package/dist/i18n/ja.js.map +1 -0
- package/dist/i18n/ka.d.ts +2 -0
- package/dist/i18n/ka.d.ts.map +1 -0
- package/dist/i18n/ka.js +537 -0
- package/dist/i18n/ka.js.map +1 -0
- package/dist/i18n/pt.d.ts +2 -0
- package/dist/i18n/pt.d.ts.map +1 -0
- package/dist/i18n/pt.js +537 -0
- package/dist/i18n/pt.js.map +1 -0
- package/dist/i18n/ru.d.ts +6 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +540 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/i18n/uk.d.ts +8 -0
- package/dist/i18n/uk.d.ts.map +1 -0
- package/dist/i18n/uk.js +542 -0
- package/dist/i18n/uk.js.map +1 -0
- package/dist/i18n/uz.d.ts +2 -0
- package/dist/i18n/uz.d.ts.map +1 -0
- package/dist/i18n/uz.js +537 -0
- package/dist/i18n/uz.js.map +1 -0
- package/dist/i18n/zh.d.ts +2 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +537 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/i18n.d.ts +115 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +233 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/installManager.d.ts +99 -0
- package/dist/installManager.d.ts.map +1 -0
- package/dist/installManager.js +943 -0
- package/dist/installManager.js.map +1 -0
- package/dist/instanceLock.d.ts +161 -0
- package/dist/instanceLock.d.ts.map +1 -0
- package/dist/instanceLock.js +388 -0
- package/dist/instanceLock.js.map +1 -0
- package/dist/mcpConfig.d.ts +76 -0
- package/dist/mcpConfig.d.ts.map +1 -0
- package/dist/mcpConfig.js +270 -0
- package/dist/mcpConfig.js.map +1 -0
- package/dist/openCodeOpenQuestion.d.ts +44 -0
- package/dist/openCodeOpenQuestion.d.ts.map +1 -0
- package/dist/openCodeOpenQuestion.js +64 -0
- package/dist/openCodeOpenQuestion.js.map +1 -0
- package/dist/openCodeQuestionFlow.d.ts +105 -0
- package/dist/openCodeQuestionFlow.d.ts.map +1 -0
- package/dist/openCodeQuestionFlow.js +143 -0
- package/dist/openCodeQuestionFlow.js.map +1 -0
- package/dist/openCodeSessionRouting.d.ts +133 -0
- package/dist/openCodeSessionRouting.d.ts.map +1 -0
- package/dist/openCodeSessionRouting.js +253 -0
- package/dist/openCodeSessionRouting.js.map +1 -0
- package/dist/openCodeSessionTitle.d.ts +50 -0
- package/dist/openCodeSessionTitle.d.ts.map +1 -0
- package/dist/openCodeSessionTitle.js +84 -0
- package/dist/openCodeSessionTitle.js.map +1 -0
- package/dist/outputTrace.d.ts +108 -0
- package/dist/outputTrace.d.ts.map +1 -0
- package/dist/outputTrace.js +430 -0
- package/dist/outputTrace.js.map +1 -0
- package/dist/pendingQuestionRepost.d.ts +47 -0
- package/dist/pendingQuestionRepost.d.ts.map +1 -0
- package/dist/pendingQuestionRepost.js +29 -0
- package/dist/pendingQuestionRepost.js.map +1 -0
- package/dist/pinnedStatus.d.ts +52 -0
- package/dist/pinnedStatus.d.ts.map +1 -0
- package/dist/pinnedStatus.js +36 -0
- package/dist/pinnedStatus.js.map +1 -0
- package/dist/platform/answerSink.d.ts +93 -0
- package/dist/platform/answerSink.d.ts.map +1 -0
- package/dist/platform/answerSink.js +31 -0
- package/dist/platform/answerSink.js.map +1 -0
- package/dist/platform/capabilityFallback.d.ts +39 -0
- package/dist/platform/capabilityFallback.d.ts.map +1 -0
- package/dist/platform/capabilityFallback.js +55 -0
- package/dist/platform/capabilityFallback.js.map +1 -0
- package/dist/platform/commandRouter.d.ts +51 -0
- package/dist/platform/commandRouter.d.ts.map +1 -0
- package/dist/platform/commandRouter.js +53 -0
- package/dist/platform/commandRouter.js.map +1 -0
- package/dist/platform/connectorSet.d.ts +39 -0
- package/dist/platform/connectorSet.d.ts.map +1 -0
- package/dist/platform/connectorSet.js +55 -0
- package/dist/platform/connectorSet.js.map +1 -0
- package/dist/platform/inbound.d.ts +147 -0
- package/dist/platform/inbound.d.ts.map +1 -0
- package/dist/platform/inbound.js +18 -0
- package/dist/platform/inbound.js.map +1 -0
- package/dist/platform/outbound.d.ts +225 -0
- package/dist/platform/outbound.d.ts.map +1 -0
- package/dist/platform/outbound.js +30 -0
- package/dist/platform/outbound.js.map +1 -0
- package/dist/platform/unservedStateGuard.d.ts +27 -0
- package/dist/platform/unservedStateGuard.d.ts.map +1 -0
- package/dist/platform/unservedStateGuard.js +42 -0
- package/dist/platform/unservedStateGuard.js.map +1 -0
- package/dist/postToSession.d.ts +94 -0
- package/dist/postToSession.d.ts.map +1 -0
- package/dist/postToSession.js +56 -0
- package/dist/postToSession.js.map +1 -0
- package/dist/progressLine.d.ts +180 -0
- package/dist/progressLine.d.ts.map +1 -0
- package/dist/progressLine.js +293 -0
- package/dist/progressLine.js.map +1 -0
- package/dist/rateLimiter.d.ts +246 -0
- package/dist/rateLimiter.d.ts.map +1 -0
- package/dist/rateLimiter.js +555 -0
- package/dist/rateLimiter.js.map +1 -0
- package/dist/requests/answerRequest.d.ts +57 -0
- package/dist/requests/answerRequest.d.ts.map +1 -0
- package/dist/requests/answerRequest.js +96 -0
- package/dist/requests/answerRequest.js.map +1 -0
- package/dist/requests/answerTail.d.ts +83 -0
- package/dist/requests/answerTail.d.ts.map +1 -0
- package/dist/requests/answerTail.js +102 -0
- package/dist/requests/answerTail.js.map +1 -0
- package/dist/requests/limitWaitAnswer.d.ts +87 -0
- package/dist/requests/limitWaitAnswer.d.ts.map +1 -0
- package/dist/requests/limitWaitAnswer.js +83 -0
- package/dist/requests/limitWaitAnswer.js.map +1 -0
- package/dist/requests/requestGroup.d.ts +44 -0
- package/dist/requests/requestGroup.d.ts.map +1 -0
- package/dist/requests/requestGroup.js +63 -0
- package/dist/requests/requestGroup.js.map +1 -0
- package/dist/requests/requestHeader.d.ts +70 -0
- package/dist/requests/requestHeader.d.ts.map +1 -0
- package/dist/requests/requestHeader.js +83 -0
- package/dist/requests/requestHeader.js.map +1 -0
- package/dist/requests/requestLedger.d.ts +217 -0
- package/dist/requests/requestLedger.d.ts.map +1 -0
- package/dist/requests/requestLedger.js +468 -0
- package/dist/requests/requestLedger.js.map +1 -0
- package/dist/requests/sessionTurnProbe.d.ts +52 -0
- package/dist/requests/sessionTurnProbe.d.ts.map +1 -0
- package/dist/requests/sessionTurnProbe.js +29 -0
- package/dist/requests/sessionTurnProbe.js.map +1 -0
- package/dist/requests/types.d.ts +181 -0
- package/dist/requests/types.d.ts.map +1 -0
- package/dist/requests/types.js +9 -0
- package/dist/requests/types.js.map +1 -0
- package/dist/requests/wakeUpEngine.d.ts +160 -0
- package/dist/requests/wakeUpEngine.d.ts.map +1 -0
- package/dist/requests/wakeUpEngine.js +399 -0
- package/dist/requests/wakeUpEngine.js.map +1 -0
- package/dist/requests/wakeUpRules.d.ts +151 -0
- package/dist/requests/wakeUpRules.d.ts.map +1 -0
- package/dist/requests/wakeUpRules.js +167 -0
- package/dist/requests/wakeUpRules.js.map +1 -0
- package/dist/resumeContext.d.ts +87 -0
- package/dist/resumeContext.d.ts.map +1 -0
- package/dist/resumeContext.js +114 -0
- package/dist/resumeContext.js.map +1 -0
- package/dist/scheduler/checkRun.d.ts +95 -0
- package/dist/scheduler/checkRun.d.ts.map +1 -0
- package/dist/scheduler/checkRun.js +172 -0
- package/dist/scheduler/checkRun.js.map +1 -0
- package/dist/scheduler/delivery.d.ts +99 -0
- package/dist/scheduler/delivery.d.ts.map +1 -0
- package/dist/scheduler/delivery.js +212 -0
- package/dist/scheduler/delivery.js.map +1 -0
- package/dist/scheduler/deliveryKind.d.ts +29 -0
- package/dist/scheduler/deliveryKind.d.ts.map +1 -0
- package/dist/scheduler/deliveryKind.js +39 -0
- package/dist/scheduler/deliveryKind.js.map +1 -0
- package/dist/scheduler/directoryThreads.d.ts +19 -0
- package/dist/scheduler/directoryThreads.d.ts.map +1 -0
- package/dist/scheduler/directoryThreads.js +28 -0
- package/dist/scheduler/directoryThreads.js.map +1 -0
- package/dist/scheduler/engine.d.ts +77 -0
- package/dist/scheduler/engine.d.ts.map +1 -0
- package/dist/scheduler/engine.js +337 -0
- package/dist/scheduler/engine.js.map +1 -0
- package/dist/scheduler/injection.d.ts +102 -0
- package/dist/scheduler/injection.d.ts.map +1 -0
- package/dist/scheduler/injection.js +122 -0
- package/dist/scheduler/injection.js.map +1 -0
- package/dist/scheduler/mcpBoot.d.ts +65 -0
- package/dist/scheduler/mcpBoot.d.ts.map +1 -0
- package/dist/scheduler/mcpBoot.js +60 -0
- package/dist/scheduler/mcpBoot.js.map +1 -0
- package/dist/scheduler/mcpSurface.d.ts +355 -0
- package/dist/scheduler/mcpSurface.d.ts.map +1 -0
- package/dist/scheduler/mcpSurface.js +1257 -0
- package/dist/scheduler/mcpSurface.js.map +1 -0
- package/dist/scheduler/rebindResume.d.ts +27 -0
- package/dist/scheduler/rebindResume.d.ts.map +1 -0
- package/dist/scheduler/rebindResume.js +17 -0
- package/dist/scheduler/rebindResume.js.map +1 -0
- package/dist/scheduler/recurrence.d.ts +58 -0
- package/dist/scheduler/recurrence.d.ts.map +1 -0
- package/dist/scheduler/recurrence.js +210 -0
- package/dist/scheduler/recurrence.js.map +1 -0
- package/dist/scheduler/runLedger.d.ts +59 -0
- package/dist/scheduler/runLedger.d.ts.map +1 -0
- package/dist/scheduler/runLedger.js +54 -0
- package/dist/scheduler/runLedger.js.map +1 -0
- package/dist/scheduler/store.d.ts +97 -0
- package/dist/scheduler/store.d.ts.map +1 -0
- package/dist/scheduler/store.js +124 -0
- package/dist/scheduler/store.js.map +1 -0
- package/dist/scheduler/timezoneRecompute.d.ts +61 -0
- package/dist/scheduler/timezoneRecompute.d.ts.map +1 -0
- package/dist/scheduler/timezoneRecompute.js +46 -0
- package/dist/scheduler/timezoneRecompute.js.map +1 -0
- package/dist/scheduler/types.d.ts +139 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +8 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/sendErrorClassifier.d.ts +45 -0
- package/dist/sendErrorClassifier.d.ts.map +1 -0
- package/dist/sendErrorClassifier.js +65 -0
- package/dist/sendErrorClassifier.js.map +1 -0
- package/dist/sessionKey.d.ts +136 -0
- package/dist/sessionKey.d.ts.map +1 -0
- package/dist/sessionKey.js +153 -0
- package/dist/sessionKey.js.map +1 -0
- package/dist/sessionPick.d.ts +42 -0
- package/dist/sessionPick.d.ts.map +1 -0
- package/dist/sessionPick.js +39 -0
- package/dist/sessionPick.js.map +1 -0
- package/dist/shutdown.d.ts +126 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +164 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/startupPromptBuffer.d.ts +85 -0
- package/dist/startupPromptBuffer.d.ts.map +1 -0
- package/dist/startupPromptBuffer.js +123 -0
- package/dist/startupPromptBuffer.js.map +1 -0
- package/dist/state.d.ts +1245 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +1830 -0
- package/dist/state.js.map +1 -0
- package/dist/threadContextPreamble.d.ts +89 -0
- package/dist/threadContextPreamble.d.ts.map +1 -0
- package/dist/threadContextPreamble.js +102 -0
- package/dist/threadContextPreamble.js.map +1 -0
- package/dist/threadRouting.d.ts +164 -0
- package/dist/threadRouting.d.ts.map +1 -0
- package/dist/threadRouting.js +182 -0
- package/dist/threadRouting.js.map +1 -0
- package/dist/types.d.ts +1015 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/abortableFifo.d.ts +10 -0
- package/dist/utils/abortableFifo.d.ts.map +1 -0
- package/dist/utils/abortableFifo.js +55 -0
- package/dist/utils/abortableFifo.js.map +1 -0
- package/dist/utils/adoptedToolList.d.ts +27 -0
- package/dist/utils/adoptedToolList.d.ts.map +1 -0
- package/dist/utils/adoptedToolList.js +22 -0
- package/dist/utils/adoptedToolList.js.map +1 -0
- package/dist/utils/agentEnvironment.d.ts +42 -0
- package/dist/utils/agentEnvironment.d.ts.map +1 -0
- package/dist/utils/agentEnvironment.js +122 -0
- package/dist/utils/agentEnvironment.js.map +1 -0
- package/dist/utils/ansiClean.d.ts +11 -0
- package/dist/utils/ansiClean.d.ts.map +1 -0
- package/dist/utils/ansiClean.js +139 -0
- package/dist/utils/ansiClean.js.map +1 -0
- package/dist/utils/autoContinueOnLimit.d.ts +49 -0
- package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
- package/dist/utils/autoContinueOnLimit.js +69 -0
- package/dist/utils/autoContinueOnLimit.js.map +1 -0
- package/dist/utils/canonicalPathContainment.d.ts +7 -0
- package/dist/utils/canonicalPathContainment.d.ts.map +1 -0
- package/dist/utils/canonicalPathContainment.js +48 -0
- package/dist/utils/canonicalPathContainment.js.map +1 -0
- package/dist/utils/claudeAuthLogin.d.ts +71 -0
- package/dist/utils/claudeAuthLogin.d.ts.map +1 -0
- package/dist/utils/claudeAuthLogin.js +93 -0
- package/dist/utils/claudeAuthLogin.js.map +1 -0
- package/dist/utils/claudeChunkClassifier.d.ts +97 -0
- package/dist/utils/claudeChunkClassifier.d.ts.map +1 -0
- package/dist/utils/claudeChunkClassifier.js +254 -0
- package/dist/utils/claudeChunkClassifier.js.map +1 -0
- package/dist/utils/claudeCodeVersion.d.ts +31 -0
- package/dist/utils/claudeCodeVersion.d.ts.map +1 -0
- package/dist/utils/claudeCodeVersion.js +62 -0
- package/dist/utils/claudeCodeVersion.js.map +1 -0
- package/dist/utils/claudeCompactHook.d.ts +64 -0
- package/dist/utils/claudeCompactHook.d.ts.map +1 -0
- package/dist/utils/claudeCompactHook.js +98 -0
- package/dist/utils/claudeCompactHook.js.map +1 -0
- package/dist/utils/claudeLivenessAction.d.ts +208 -0
- package/dist/utils/claudeLivenessAction.d.ts.map +1 -0
- package/dist/utils/claudeLivenessAction.js +135 -0
- package/dist/utils/claudeLivenessAction.js.map +1 -0
- package/dist/utils/claudeMcpHeal.d.ts +92 -0
- package/dist/utils/claudeMcpHeal.d.ts.map +1 -0
- package/dist/utils/claudeMcpHeal.js +91 -0
- package/dist/utils/claudeMcpHeal.js.map +1 -0
- package/dist/utils/claudeRelayRouting.d.ts +86 -0
- package/dist/utils/claudeRelayRouting.d.ts.map +1 -0
- package/dist/utils/claudeRelayRouting.js +159 -0
- package/dist/utils/claudeRelayRouting.js.map +1 -0
- package/dist/utils/claudeRuntimeInfo.d.ts +26 -0
- package/dist/utils/claudeRuntimeInfo.d.ts.map +1 -0
- package/dist/utils/claudeRuntimeInfo.js +151 -0
- package/dist/utils/claudeRuntimeInfo.js.map +1 -0
- package/dist/utils/claudeScrapeShapes.d.ts +256 -0
- package/dist/utils/claudeScrapeShapes.d.ts.map +1 -0
- package/dist/utils/claudeScrapeShapes.js +290 -0
- package/dist/utils/claudeScrapeShapes.js.map +1 -0
- package/dist/utils/claudeSessionTitle.d.ts +27 -0
- package/dist/utils/claudeSessionTitle.d.ts.map +1 -0
- package/dist/utils/claudeSessionTitle.js +90 -0
- package/dist/utils/claudeSessionTitle.js.map +1 -0
- package/dist/utils/claudeStreamJson.d.ts +202 -0
- package/dist/utils/claudeStreamJson.d.ts.map +1 -0
- package/dist/utils/claudeStreamJson.js +351 -0
- package/dist/utils/claudeStreamJson.js.map +1 -0
- package/dist/utils/claudeSubagentTail.d.ts +93 -0
- package/dist/utils/claudeSubagentTail.d.ts.map +1 -0
- package/dist/utils/claudeSubagentTail.js +136 -0
- package/dist/utils/claudeSubagentTail.js.map +1 -0
- package/dist/utils/clearThreadOutputQueues.d.ts +43 -0
- package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -0
- package/dist/utils/clearThreadOutputQueues.js +39 -0
- package/dist/utils/clearThreadOutputQueues.js.map +1 -0
- package/dist/utils/compactCommandRoute.d.ts +45 -0
- package/dist/utils/compactCommandRoute.d.ts.map +1 -0
- package/dist/utils/compactCommandRoute.js +36 -0
- package/dist/utils/compactCommandRoute.js.map +1 -0
- package/dist/utils/compactOnIdle.d.ts +329 -0
- package/dist/utils/compactOnIdle.d.ts.map +1 -0
- package/dist/utils/compactOnIdle.js +379 -0
- package/dist/utils/compactOnIdle.js.map +1 -0
- package/dist/utils/consoleFileTap.d.ts +51 -0
- package/dist/utils/consoleFileTap.d.ts.map +1 -0
- package/dist/utils/consoleFileTap.js +86 -0
- package/dist/utils/consoleFileTap.js.map +1 -0
- package/dist/utils/displayVerbosity.d.ts +44 -0
- package/dist/utils/displayVerbosity.d.ts.map +1 -0
- package/dist/utils/displayVerbosity.js +75 -0
- package/dist/utils/displayVerbosity.js.map +1 -0
- package/dist/utils/download.d.ts +72 -0
- package/dist/utils/download.d.ts.map +1 -0
- package/dist/utils/download.js +216 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/draftFinalize.d.ts +110 -0
- package/dist/utils/draftFinalize.d.ts.map +1 -0
- package/dist/utils/draftFinalize.js +100 -0
- package/dist/utils/draftFinalize.js.map +1 -0
- package/dist/utils/draftId.d.ts +36 -0
- package/dist/utils/draftId.d.ts.map +1 -0
- package/dist/utils/draftId.js +46 -0
- package/dist/utils/draftId.js.map +1 -0
- package/dist/utils/draftPacer.d.ts +72 -0
- package/dist/utils/draftPacer.d.ts.map +1 -0
- package/dist/utils/draftPacer.js +53 -0
- package/dist/utils/draftPacer.js.map +1 -0
- package/dist/utils/effortStartupKeystroke.d.ts +20 -0
- package/dist/utils/effortStartupKeystroke.d.ts.map +1 -0
- package/dist/utils/effortStartupKeystroke.js +28 -0
- package/dist/utils/effortStartupKeystroke.js.map +1 -0
- package/dist/utils/ensureSessionPlan.d.ts +70 -0
- package/dist/utils/ensureSessionPlan.d.ts.map +1 -0
- package/dist/utils/ensureSessionPlan.js +54 -0
- package/dist/utils/ensureSessionPlan.js.map +1 -0
- package/dist/utils/fileSendPlan.d.ts +217 -0
- package/dist/utils/fileSendPlan.d.ts.map +1 -0
- package/dist/utils/fileSendPlan.js +291 -0
- package/dist/utils/fileSendPlan.js.map +1 -0
- package/dist/utils/fileSendService.d.ts +94 -0
- package/dist/utils/fileSendService.d.ts.map +1 -0
- package/dist/utils/fileSendService.js +387 -0
- package/dist/utils/fileSendService.js.map +1 -0
- package/dist/utils/groupFinalizePlan.d.ts +38 -0
- package/dist/utils/groupFinalizePlan.d.ts.map +1 -0
- package/dist/utils/groupFinalizePlan.js +35 -0
- package/dist/utils/groupFinalizePlan.js.map +1 -0
- package/dist/utils/identicalOutputGuard.d.ts +83 -0
- package/dist/utils/identicalOutputGuard.d.ts.map +1 -0
- package/dist/utils/identicalOutputGuard.js +99 -0
- package/dist/utils/identicalOutputGuard.js.map +1 -0
- package/dist/utils/isoTimestamp.d.ts +16 -0
- package/dist/utils/isoTimestamp.d.ts.map +1 -0
- package/dist/utils/isoTimestamp.js +34 -0
- package/dist/utils/isoTimestamp.js.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts +130 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.js +122 -0
- package/dist/utils/jsonStreamBusyWatchdog.js.map +1 -0
- package/dist/utils/jsonStreamHost.d.ts +227 -0
- package/dist/utils/jsonStreamHost.d.ts.map +1 -0
- package/dist/utils/jsonStreamHost.js +417 -0
- package/dist/utils/jsonStreamHost.js.map +1 -0
- package/dist/utils/keyedTransitionQueue.d.ts +18 -0
- package/dist/utils/keyedTransitionQueue.d.ts.map +1 -0
- package/dist/utils/keyedTransitionQueue.js +34 -0
- package/dist/utils/keyedTransitionQueue.js.map +1 -0
- package/dist/utils/limitEpisodeRecovery.d.ts +92 -0
- package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -0
- package/dist/utils/limitEpisodeRecovery.js +133 -0
- package/dist/utils/limitEpisodeRecovery.js.map +1 -0
- package/dist/utils/limitHeldPromptQueue.d.ts +48 -0
- package/dist/utils/limitHeldPromptQueue.d.ts.map +1 -0
- package/dist/utils/limitHeldPromptQueue.js +59 -0
- package/dist/utils/limitHeldPromptQueue.js.map +1 -0
- package/dist/utils/limitHeldPrompts.d.ts +58 -0
- package/dist/utils/limitHeldPrompts.d.ts.map +1 -0
- package/dist/utils/limitHeldPrompts.js +65 -0
- package/dist/utils/limitHeldPrompts.js.map +1 -0
- package/dist/utils/linkPreviewSuppression.d.ts +18 -0
- package/dist/utils/linkPreviewSuppression.d.ts.map +1 -0
- package/dist/utils/linkPreviewSuppression.js +37 -0
- package/dist/utils/linkPreviewSuppression.js.map +1 -0
- package/dist/utils/localClock.d.ts +15 -0
- package/dist/utils/localClock.d.ts.map +1 -0
- package/dist/utils/localClock.js +29 -0
- package/dist/utils/localClock.js.map +1 -0
- package/dist/utils/markdownTableRender.d.ts +83 -0
- package/dist/utils/markdownTableRender.d.ts.map +1 -0
- package/dist/utils/markdownTableRender.js +298 -0
- package/dist/utils/markdownTableRender.js.map +1 -0
- package/dist/utils/mediaGroupCollector.d.ts +51 -0
- package/dist/utils/mediaGroupCollector.d.ts.map +1 -0
- package/dist/utils/mediaGroupCollector.js +90 -0
- package/dist/utils/mediaGroupCollector.js.map +1 -0
- package/dist/utils/messageSendService.d.ts +136 -0
- package/dist/utils/messageSendService.d.ts.map +1 -0
- package/dist/utils/messageSendService.js +165 -0
- package/dist/utils/messageSendService.js.map +1 -0
- package/dist/utils/minutesOverride.d.ts +7 -0
- package/dist/utils/minutesOverride.d.ts.map +1 -0
- package/dist/utils/minutesOverride.js +16 -0
- package/dist/utils/minutesOverride.js.map +1 -0
- package/dist/utils/modelPickerPlan.d.ts +119 -0
- package/dist/utils/modelPickerPlan.d.ts.map +1 -0
- package/dist/utils/modelPickerPlan.js +171 -0
- package/dist/utils/modelPickerPlan.js.map +1 -0
- package/dist/utils/modelSetReplyDecision.d.ts +67 -0
- package/dist/utils/modelSetReplyDecision.d.ts.map +1 -0
- package/dist/utils/modelSetReplyDecision.js +27 -0
- package/dist/utils/modelSetReplyDecision.js.map +1 -0
- package/dist/utils/openCodeAuthLogin.d.ts +181 -0
- package/dist/utils/openCodeAuthLogin.d.ts.map +1 -0
- package/dist/utils/openCodeAuthLogin.js +393 -0
- package/dist/utils/openCodeAuthLogin.js.map +1 -0
- package/dist/utils/openCodeCompactPlugin.d.ts +81 -0
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -0
- package/dist/utils/openCodeCompactPlugin.js +146 -0
- package/dist/utils/openCodeCompactPlugin.js.map +1 -0
- package/dist/utils/openCodeTurnActivity.d.ts +67 -0
- package/dist/utils/openCodeTurnActivity.d.ts.map +1 -0
- package/dist/utils/openCodeTurnActivity.js +27 -0
- package/dist/utils/openCodeTurnActivity.js.map +1 -0
- package/dist/utils/outputDebounce.d.ts +24 -0
- package/dist/utils/outputDebounce.d.ts.map +1 -0
- package/dist/utils/outputDebounce.js +30 -0
- package/dist/utils/outputDebounce.js.map +1 -0
- package/dist/utils/outputFlushTiming.d.ts +54 -0
- package/dist/utils/outputFlushTiming.d.ts.map +1 -0
- package/dist/utils/outputFlushTiming.js +48 -0
- package/dist/utils/outputFlushTiming.js.map +1 -0
- package/dist/utils/paginateList.d.ts +25 -0
- package/dist/utils/paginateList.d.ts.map +1 -0
- package/dist/utils/paginateList.js +32 -0
- package/dist/utils/paginateList.js.map +1 -0
- package/dist/utils/paneDiff.d.ts +55 -0
- package/dist/utils/paneDiff.d.ts.map +1 -0
- package/dist/utils/paneDiff.js +88 -0
- package/dist/utils/paneDiff.js.map +1 -0
- package/dist/utils/paneResizeGuard.d.ts +69 -0
- package/dist/utils/paneResizeGuard.d.ts.map +1 -0
- package/dist/utils/paneResizeGuard.js +91 -0
- package/dist/utils/paneResizeGuard.js.map +1 -0
- package/dist/utils/persistAdapterSessionIds.d.ts +39 -0
- package/dist/utils/persistAdapterSessionIds.d.ts.map +1 -0
- package/dist/utils/persistAdapterSessionIds.js +28 -0
- package/dist/utils/persistAdapterSessionIds.js.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts +44 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.js +20 -0
- package/dist/utils/pinnedBannerSkipDecision.js.map +1 -0
- package/dist/utils/pollBackoff.d.ts +45 -0
- package/dist/utils/pollBackoff.d.ts.map +1 -0
- package/dist/utils/pollBackoff.js +44 -0
- package/dist/utils/pollBackoff.js.map +1 -0
- package/dist/utils/promptDelivery.d.ts +46 -0
- package/dist/utils/promptDelivery.d.ts.map +1 -0
- package/dist/utils/promptDelivery.js +49 -0
- package/dist/utils/promptDelivery.js.map +1 -0
- package/dist/utils/providerDisconnectPlan.d.ts +82 -0
- package/dist/utils/providerDisconnectPlan.d.ts.map +1 -0
- package/dist/utils/providerDisconnectPlan.js +110 -0
- package/dist/utils/providerDisconnectPlan.js.map +1 -0
- package/dist/utils/rateLimitLog.d.ts +48 -0
- package/dist/utils/rateLimitLog.d.ts.map +1 -0
- package/dist/utils/rateLimitLog.js +43 -0
- package/dist/utils/rateLimitLog.js.map +1 -0
- package/dist/utils/recentRelayWindow.d.ts +165 -0
- package/dist/utils/recentRelayWindow.d.ts.map +1 -0
- package/dist/utils/recentRelayWindow.js +284 -0
- package/dist/utils/recentRelayWindow.js.map +1 -0
- package/dist/utils/recvPreviewRedaction.d.ts +23 -0
- package/dist/utils/recvPreviewRedaction.d.ts.map +1 -0
- package/dist/utils/recvPreviewRedaction.js +39 -0
- package/dist/utils/recvPreviewRedaction.js.map +1 -0
- package/dist/utils/reminderFlow.d.ts +148 -0
- package/dist/utils/reminderFlow.d.ts.map +1 -0
- package/dist/utils/reminderFlow.js +122 -0
- package/dist/utils/reminderFlow.js.map +1 -0
- package/dist/utils/reminderScheduleText.d.ts +87 -0
- package/dist/utils/reminderScheduleText.d.ts.map +1 -0
- package/dist/utils/reminderScheduleText.js +135 -0
- package/dist/utils/reminderScheduleText.js.map +1 -0
- package/dist/utils/reminderWizard.d.ts +710 -0
- package/dist/utils/reminderWizard.d.ts.map +1 -0
- package/dist/utils/reminderWizard.js +1164 -0
- package/dist/utils/reminderWizard.js.map +1 -0
- package/dist/utils/replyQuote.d.ts +111 -0
- package/dist/utils/replyQuote.d.ts.map +1 -0
- package/dist/utils/replyQuote.js +122 -0
- package/dist/utils/replyQuote.js.map +1 -0
- package/dist/utils/resolveBinary.d.ts +25 -0
- package/dist/utils/resolveBinary.d.ts.map +1 -0
- package/dist/utils/resolveBinary.js +99 -0
- package/dist/utils/resolveBinary.js.map +1 -0
- package/dist/utils/retryAfterHeader.d.ts +7 -0
- package/dist/utils/retryAfterHeader.d.ts.map +1 -0
- package/dist/utils/retryAfterHeader.js +17 -0
- package/dist/utils/retryAfterHeader.js.map +1 -0
- package/dist/utils/rotatingJsonlFile.d.ts +40 -0
- package/dist/utils/rotatingJsonlFile.d.ts.map +1 -0
- package/dist/utils/rotatingJsonlFile.js +106 -0
- package/dist/utils/rotatingJsonlFile.js.map +1 -0
- package/dist/utils/rotatingLogFile.d.ts +25 -0
- package/dist/utils/rotatingLogFile.d.ts.map +1 -0
- package/dist/utils/rotatingLogFile.js +74 -0
- package/dist/utils/rotatingLogFile.js.map +1 -0
- package/dist/utils/sendRateTracker.d.ts +59 -0
- package/dist/utils/sendRateTracker.d.ts.map +1 -0
- package/dist/utils/sendRateTracker.js +144 -0
- package/dist/utils/sendRateTracker.js.map +1 -0
- package/dist/utils/serialQueue.d.ts +5 -0
- package/dist/utils/serialQueue.d.ts.map +1 -0
- package/dist/utils/serialQueue.js +14 -0
- package/dist/utils/serialQueue.js.map +1 -0
- package/dist/utils/sseStreamLifecycle.d.ts +32 -0
- package/dist/utils/sseStreamLifecycle.d.ts.map +1 -0
- package/dist/utils/sseStreamLifecycle.js +41 -0
- package/dist/utils/sseStreamLifecycle.js.map +1 -0
- package/dist/utils/startupReadiness.d.ts +119 -0
- package/dist/utils/startupReadiness.d.ts.map +1 -0
- package/dist/utils/startupReadiness.js +148 -0
- package/dist/utils/startupReadiness.js.map +1 -0
- package/dist/utils/statusFlushDecision.d.ts +18 -0
- package/dist/utils/statusFlushDecision.d.ts.map +1 -0
- package/dist/utils/statusFlushDecision.js +53 -0
- package/dist/utils/statusFlushDecision.js.map +1 -0
- package/dist/utils/subagentRender.d.ts +52 -0
- package/dist/utils/subagentRender.d.ts.map +1 -0
- package/dist/utils/subagentRender.js +66 -0
- package/dist/utils/subagentRender.js.map +1 -0
- package/dist/utils/subagentStatusRender.d.ts +90 -0
- package/dist/utils/subagentStatusRender.d.ts.map +1 -0
- package/dist/utils/subagentStatusRender.js +124 -0
- package/dist/utils/subagentStatusRender.js.map +1 -0
- package/dist/utils/telegramError.d.ts +2 -0
- package/dist/utils/telegramError.d.ts.map +1 -0
- package/dist/utils/telegramError.js +16 -0
- package/dist/utils/telegramError.js.map +1 -0
- package/dist/utils/terminalEmitPlan.d.ts +74 -0
- package/dist/utils/terminalEmitPlan.d.ts.map +1 -0
- package/dist/utils/terminalEmitPlan.js +86 -0
- package/dist/utils/terminalEmitPlan.js.map +1 -0
- package/dist/utils/thinkingRender.d.ts +74 -0
- package/dist/utils/thinkingRender.d.ts.map +1 -0
- package/dist/utils/thinkingRender.js +85 -0
- package/dist/utils/thinkingRender.js.map +1 -0
- package/dist/utils/threadStatusReport.d.ts +55 -0
- package/dist/utils/threadStatusReport.d.ts.map +1 -0
- package/dist/utils/threadStatusReport.js +65 -0
- package/dist/utils/threadStatusReport.js.map +1 -0
- package/dist/utils/threadToggle.d.ts +29 -0
- package/dist/utils/threadToggle.d.ts.map +1 -0
- package/dist/utils/threadToggle.js +39 -0
- package/dist/utils/threadToggle.js.map +1 -0
- package/dist/utils/timezone.d.ts +125 -0
- package/dist/utils/timezone.d.ts.map +1 -0
- package/dist/utils/timezone.js +278 -0
- package/dist/utils/timezone.js.map +1 -0
- package/dist/utils/tmuxExec.d.ts +61 -0
- package/dist/utils/tmuxExec.d.ts.map +1 -0
- package/dist/utils/tmuxExec.js +109 -0
- package/dist/utils/tmuxExec.js.map +1 -0
- package/dist/utils/tmuxSessionName.d.ts +34 -0
- package/dist/utils/tmuxSessionName.d.ts.map +1 -0
- package/dist/utils/tmuxSessionName.js +51 -0
- package/dist/utils/tmuxSessionName.js.map +1 -0
- package/dist/utils/toolResultRender.d.ts +61 -0
- package/dist/utils/toolResultRender.d.ts.map +1 -0
- package/dist/utils/toolResultRender.js +62 -0
- package/dist/utils/toolResultRender.js.map +1 -0
- package/dist/utils/topicRequest.d.ts +61 -0
- package/dist/utils/topicRequest.d.ts.map +1 -0
- package/dist/utils/topicRequest.js +68 -0
- package/dist/utils/topicRequest.js.map +1 -0
- package/dist/utils/topicView.d.ts +55 -0
- package/dist/utils/topicView.d.ts.map +1 -0
- package/dist/utils/topicView.js +56 -0
- package/dist/utils/topicView.js.map +1 -0
- package/dist/utils/transcribeAudio.d.ts +89 -0
- package/dist/utils/transcribeAudio.d.ts.map +1 -0
- package/dist/utils/transcribeAudio.js +249 -0
- package/dist/utils/transcribeAudio.js.map +1 -0
- package/dist/utils/transientFrames.d.ts +52 -0
- package/dist/utils/transientFrames.d.ts.map +1 -0
- package/dist/utils/transientFrames.js +41 -0
- package/dist/utils/transientFrames.js.map +1 -0
- package/dist/utils/typingActive.d.ts +35 -0
- package/dist/utils/typingActive.d.ts.map +1 -0
- package/dist/utils/typingActive.js +22 -0
- package/dist/utils/typingActive.js.map +1 -0
- package/dist/utils/typingLoopBackstop.d.ts +64 -0
- package/dist/utils/typingLoopBackstop.d.ts.map +1 -0
- package/dist/utils/typingLoopBackstop.js +68 -0
- package/dist/utils/typingLoopBackstop.js.map +1 -0
- package/dist/utils/verbosityRender.d.ts +18 -0
- package/dist/utils/verbosityRender.d.ts.map +1 -0
- package/dist/utils/verbosityRender.js +17 -0
- package/dist/utils/verbosityRender.js.map +1 -0
- package/dist/utils/wedgeRecovery.d.ts +57 -0
- package/dist/utils/wedgeRecovery.d.ts.map +1 -0
- package/dist/utils/wedgeRecovery.js +24 -0
- package/dist/utils/wedgeRecovery.js.map +1 -0
- package/dist/utils.d.ts +30 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +61 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.d.ts +113 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +226 -0
- package/dist/validation.js.map +1 -0
- package/dist/voiceQueue.d.ts +7 -0
- package/dist/voiceQueue.d.ts.map +1 -0
- package/dist/voiceQueue.js +33 -0
- package/dist/voiceQueue.js.map +1 -0
- package/examples/.env.example +17 -0
- package/examples/docker-compose.yml +36 -0
- package/package.json +83 -4
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Draft-id allocator for the DM-mode live-streaming draft channel
|
|
4
|
+
* (P3). Telegram's `sendMessageDraft` animates updates that share the SAME
|
|
5
|
+
* `draft_id` as one in-progress draft; a NEW id starts a fresh draft. So one
|
|
6
|
+
* streamed response must keep ONE stable id across all its updates, and each new
|
|
7
|
+
* response (a fresh, non-continuation turn) must get a DISTINCT id so it animates
|
|
8
|
+
* separately from the previous turn.
|
|
9
|
+
*
|
|
10
|
+
* A pure module-scoped monotonic counter gives both: {@link nextDraftId} is
|
|
11
|
+
* called ONCE per response (at `startDraftTurn`), and the returned id is then
|
|
12
|
+
* stored on the per-thread draft state and reused for every update of that
|
|
13
|
+
* response. Two DM topics streaming at once get distinct ids because each pulls
|
|
14
|
+
* its own value off the shared counter.
|
|
15
|
+
*
|
|
16
|
+
* The id is folded into a NON-ZERO 31-bit positive int: Telegram requires a
|
|
17
|
+
* non-zero draft id, and a small positive int avoids any signedness surprises in
|
|
18
|
+
* the Bot API. The counter wraps at {@link DRAFT_ID_MODULO} without ever
|
|
19
|
+
* yielding 0.
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.DRAFT_ID_MODULO = void 0;
|
|
23
|
+
exports.nextDraftId = nextDraftId;
|
|
24
|
+
/**
|
|
25
|
+
* Wrap point for the draft-id counter. Kept well inside the 31-bit positive
|
|
26
|
+
* range (2_147_483_647) so the `+1` fold can never reach a 32-bit boundary.
|
|
27
|
+
*/
|
|
28
|
+
exports.DRAFT_ID_MODULO = 2_000_000_000;
|
|
29
|
+
let draftIdCounter = 0;
|
|
30
|
+
/**
|
|
31
|
+
* @description Allocate the next draft id. Monotonic per process, folded into a
|
|
32
|
+
* non-zero positive 31-bit int via `(counter % MODULO) + 1`, so the value is
|
|
33
|
+
* always in `[1, DRAFT_ID_MODULO]` and never 0 even at the wrap boundary.
|
|
34
|
+
*
|
|
35
|
+
* `prevId` is accepted for symmetry with the per-thread state (and to make a
|
|
36
|
+
* future "derive from previous" tweak local to this module) but is intentionally
|
|
37
|
+
* unused: uniqueness comes from the shared monotonic counter, not the caller's
|
|
38
|
+
* last id, so two interleaved per-thread turns can never collide.
|
|
39
|
+
*/
|
|
40
|
+
function nextDraftId(prevId) {
|
|
41
|
+
void prevId;
|
|
42
|
+
const id = (draftIdCounter % exports.DRAFT_ID_MODULO) + 1;
|
|
43
|
+
draftIdCounter += 1;
|
|
44
|
+
return id;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=draftId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draftId.js","sourceRoot":"","sources":["../../src/utils/draftId.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAoBH,kCAKC;AAvBD;;;GAGG;AACU,QAAA,eAAe,GAAG,aAAa,CAAC;AAE7C,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB;;;;;;;;;GASG;AACH,SAAgB,WAAW,CAAC,MAAqB;IAC/C,KAAK,MAAM,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC,cAAc,GAAG,uBAAe,CAAC,GAAG,CAAC,CAAC;IAClD,cAAc,IAAI,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure pacing decision for the DM-mode live-draft channel (P3),
|
|
3
|
+
* mirroring {@link ../utils/statusFlushDecision.ts} in shape: given the latest
|
|
4
|
+
* accumulated draft text, the last text actually drafted, the clock, and the
|
|
5
|
+
* draft-channel 429 cooldown, decide what the draft loop should do with this
|
|
6
|
+
* update.
|
|
7
|
+
*
|
|
8
|
+
* The draft channel is SEPARATE from the message channel: it never touches the
|
|
9
|
+
* rateLimiter TokenBucket / per-chat 429 cooldown, so its own backoff
|
|
10
|
+
* (`backoffUntilMs`) can never starve real `sendMessage`/`editMessageText`
|
|
11
|
+
* traffic. Drafts are disposable previews — under congestion it is correct to
|
|
12
|
+
* defer them rather than spend a draft call on a frame the next one will replace.
|
|
13
|
+
*
|
|
14
|
+
* @name DraftPaceAction
|
|
15
|
+
* @description
|
|
16
|
+
* - `send` — text changed, not too soon since the last send, no draft-channel
|
|
17
|
+
* cooldown: fire the draft now.
|
|
18
|
+
* - `skip` — text is identical to the last drafted text: a draft update would
|
|
19
|
+
* only re-send the same preview; don't spend a draft call.
|
|
20
|
+
* - `defer` — either a draft-channel 429 cooldown is active, or the min interval
|
|
21
|
+
* since the last send hasn't elapsed: hold the newest text and re-arm a timer
|
|
22
|
+
* for the remainder.
|
|
23
|
+
*/
|
|
24
|
+
export type DraftPaceAction = 'send' | 'skip' | 'defer';
|
|
25
|
+
/**
|
|
26
|
+
* Min gap between two draft updates of the same in-flight response. ~700ms →
|
|
27
|
+
* ~1.4 updates/sec — fast enough to read as a live "typing" animation, slow
|
|
28
|
+
* enough to stay well under the draft budget the P0.5 probe measured.
|
|
29
|
+
*/
|
|
30
|
+
export declare const DRAFT_MIN_INTERVAL_MS = 700;
|
|
31
|
+
/**
|
|
32
|
+
* Fallback draft-channel backoff when a draft 429 omits `retry_after`. The P0.5
|
|
33
|
+
* live probe saw ~20s draft cooldowns; the runtime prefers the error's
|
|
34
|
+
* `retry_after` when present and uses this only as the floor/fallback.
|
|
35
|
+
*/
|
|
36
|
+
export declare const DRAFT_DEFAULT_BACKOFF_MS = 20000;
|
|
37
|
+
export interface DraftPaceInput {
|
|
38
|
+
/** Latest accumulated draft text the loop wants to show. */
|
|
39
|
+
nextText: string;
|
|
40
|
+
/** Last text actually drafted for this thread, or null (nothing sent yet). */
|
|
41
|
+
lastSentText: string | null;
|
|
42
|
+
/** Current time, ms. */
|
|
43
|
+
nowMs: number;
|
|
44
|
+
/** When the last draft actually went out, ms, or null (nothing sent yet). */
|
|
45
|
+
lastSentAtMs: number | null;
|
|
46
|
+
/** Min gap between two draft sends, ms (= {@link DRAFT_MIN_INTERVAL_MS}). */
|
|
47
|
+
minIntervalMs: number;
|
|
48
|
+
/** Draft-channel 429 cooldown end, ms. `0` = no cooldown. */
|
|
49
|
+
backoffUntilMs: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @description Decide what the draft pacer should do with `nextText`.
|
|
53
|
+
*
|
|
54
|
+
* Order matters: the 429 cooldown wins over everything (defer even an identical
|
|
55
|
+
* frame so the loop exits leaving the newest text for the post-cooldown re-arm);
|
|
56
|
+
* then an unchanged frame is a `skip` (no draft call); then the min-interval
|
|
57
|
+
* gate `defer`s a too-soon update; otherwise `send`.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getDraftPaceAction(input: DraftPaceInput): DraftPaceAction;
|
|
60
|
+
/**
|
|
61
|
+
* @description Whether an `output` event should be streamed via the native DM
|
|
62
|
+
* draft channel. Drafts are for genuinely INCREMENTAL streaming; a COMPLETE
|
|
63
|
+
* one-shot output (`meta.isComplete`, e.g. the resume context block) is already
|
|
64
|
+
* whole at emit time — drafting it would make Telegram's native draft "typing"
|
|
65
|
+
* animation draw static text progressively, so it must post directly. Sub-agent
|
|
66
|
+
* chunks are never drafted either. Group mode never drafts.
|
|
67
|
+
*/
|
|
68
|
+
export declare function checkShouldStreamAsDraft(isDmMode: boolean, meta?: {
|
|
69
|
+
isComplete?: boolean;
|
|
70
|
+
isSubagent?: boolean;
|
|
71
|
+
}): boolean;
|
|
72
|
+
//# sourceMappingURL=draftPacer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draftPacer.d.ts","sourceRoot":"","sources":["../../src/utils/draftPacer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAOzE;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,EACjB,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAKT"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DRAFT_DEFAULT_BACKOFF_MS = exports.DRAFT_MIN_INTERVAL_MS = void 0;
|
|
4
|
+
exports.getDraftPaceAction = getDraftPaceAction;
|
|
5
|
+
exports.checkShouldStreamAsDraft = checkShouldStreamAsDraft;
|
|
6
|
+
/**
|
|
7
|
+
* Min gap between two draft updates of the same in-flight response. ~700ms →
|
|
8
|
+
* ~1.4 updates/sec — fast enough to read as a live "typing" animation, slow
|
|
9
|
+
* enough to stay well under the draft budget the P0.5 probe measured.
|
|
10
|
+
*/
|
|
11
|
+
exports.DRAFT_MIN_INTERVAL_MS = 700;
|
|
12
|
+
/**
|
|
13
|
+
* Fallback draft-channel backoff when a draft 429 omits `retry_after`. The P0.5
|
|
14
|
+
* live probe saw ~20s draft cooldowns; the runtime prefers the error's
|
|
15
|
+
* `retry_after` when present and uses this only as the floor/fallback.
|
|
16
|
+
*/
|
|
17
|
+
exports.DRAFT_DEFAULT_BACKOFF_MS = 20_000;
|
|
18
|
+
/**
|
|
19
|
+
* @description Decide what the draft pacer should do with `nextText`.
|
|
20
|
+
*
|
|
21
|
+
* Order matters: the 429 cooldown wins over everything (defer even an identical
|
|
22
|
+
* frame so the loop exits leaving the newest text for the post-cooldown re-arm);
|
|
23
|
+
* then an unchanged frame is a `skip` (no draft call); then the min-interval
|
|
24
|
+
* gate `defer`s a too-soon update; otherwise `send`.
|
|
25
|
+
*/
|
|
26
|
+
function getDraftPaceAction(input) {
|
|
27
|
+
if (input.nowMs < input.backoffUntilMs)
|
|
28
|
+
return 'defer';
|
|
29
|
+
if (input.nextText === input.lastSentText)
|
|
30
|
+
return 'skip';
|
|
31
|
+
if (input.lastSentAtMs !== null && input.nowMs - input.lastSentAtMs < input.minIntervalMs) {
|
|
32
|
+
return 'defer';
|
|
33
|
+
}
|
|
34
|
+
return 'send';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @description Whether an `output` event should be streamed via the native DM
|
|
38
|
+
* draft channel. Drafts are for genuinely INCREMENTAL streaming; a COMPLETE
|
|
39
|
+
* one-shot output (`meta.isComplete`, e.g. the resume context block) is already
|
|
40
|
+
* whole at emit time — drafting it would make Telegram's native draft "typing"
|
|
41
|
+
* animation draw static text progressively, so it must post directly. Sub-agent
|
|
42
|
+
* chunks are never drafted either. Group mode never drafts.
|
|
43
|
+
*/
|
|
44
|
+
function checkShouldStreamAsDraft(isDmMode, meta) {
|
|
45
|
+
if (!isDmMode)
|
|
46
|
+
return false;
|
|
47
|
+
if (meta?.isComplete === true)
|
|
48
|
+
return false;
|
|
49
|
+
if (meta?.isSubagent === true)
|
|
50
|
+
return false;
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=draftPacer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draftPacer.js","sourceRoot":"","sources":["../../src/utils/draftPacer.ts"],"names":[],"mappings":";;;AA8DA,gDAOC;AAUD,4DAQC;AA9DD;;;;GAIG;AACU,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;;;GAIG;AACU,QAAA,wBAAwB,GAAG,MAAM,CAAC;AAiB/C;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,KAAqB;IACtD,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc;QAAE,OAAO,OAAO,CAAC;IACvD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,YAAY;QAAE,OAAO,MAAM,CAAC;IACzD,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAC1F,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,wBAAwB,CACtC,QAAiB,EACjB,IAAqD;IAErD,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,IAAI,EAAE,UAAU,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,IAAI,EAAE,UAAU,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Decide the `/effort` slash-command keystroke to replay into a
|
|
3
|
+
* freshly spawned Claude TUI, given the thread's stored effort pref.
|
|
4
|
+
*
|
|
5
|
+
* WHY: claude persists effort GLOBALLY in its own settings.json, so a fresh
|
|
6
|
+
* TUI (start / `/new` / resume) comes up with the LAST globally-set level —
|
|
7
|
+
* possibly chosen in another topic. The bot keeps the real per-thread choice
|
|
8
|
+
* in `.claude-effort-prefs.json`; on every fresh spawn it must re-apply that
|
|
9
|
+
* choice by typing claude's native `/effort <level>` once the TUI is ready,
|
|
10
|
+
* BEFORE any buffered user prompt is replayed. This pure helper owns the tiny
|
|
11
|
+
* decision (which keystroke, or none) so it is unit-testable without driving
|
|
12
|
+
* a real tmux pane.
|
|
13
|
+
*
|
|
14
|
+
* No stored pref → `null` → type nothing (claude's own default stands). A
|
|
15
|
+
* stored level claude can't honour for the current model is returned as-is:
|
|
16
|
+
* claude clamps unsupported levels per model (documented behavior), so the
|
|
17
|
+
* adapter does NOT validate here — same contract as a manual `/effort`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getEffortStartupKeystroke(storedLevel: string | null): string | null;
|
|
20
|
+
//# sourceMappingURL=effortStartupKeystroke.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effortStartupKeystroke.d.ts","sourceRoot":"","sources":["../../src/utils/effortStartupKeystroke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAInF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getEffortStartupKeystroke = getEffortStartupKeystroke;
|
|
4
|
+
/**
|
|
5
|
+
* @description Decide the `/effort` slash-command keystroke to replay into a
|
|
6
|
+
* freshly spawned Claude TUI, given the thread's stored effort pref.
|
|
7
|
+
*
|
|
8
|
+
* WHY: claude persists effort GLOBALLY in its own settings.json, so a fresh
|
|
9
|
+
* TUI (start / `/new` / resume) comes up with the LAST globally-set level —
|
|
10
|
+
* possibly chosen in another topic. The bot keeps the real per-thread choice
|
|
11
|
+
* in `.claude-effort-prefs.json`; on every fresh spawn it must re-apply that
|
|
12
|
+
* choice by typing claude's native `/effort <level>` once the TUI is ready,
|
|
13
|
+
* BEFORE any buffered user prompt is replayed. This pure helper owns the tiny
|
|
14
|
+
* decision (which keystroke, or none) so it is unit-testable without driving
|
|
15
|
+
* a real tmux pane.
|
|
16
|
+
*
|
|
17
|
+
* No stored pref → `null` → type nothing (claude's own default stands). A
|
|
18
|
+
* stored level claude can't honour for the current model is returned as-is:
|
|
19
|
+
* claude clamps unsupported levels per model (documented behavior), so the
|
|
20
|
+
* adapter does NOT validate here — same contract as a manual `/effort`.
|
|
21
|
+
*/
|
|
22
|
+
function getEffortStartupKeystroke(storedLevel) {
|
|
23
|
+
const level = storedLevel?.trim();
|
|
24
|
+
if (!level)
|
|
25
|
+
return null;
|
|
26
|
+
return `/effort ${level}`;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=effortStartupKeystroke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effortStartupKeystroke.js","sourceRoot":"","sources":["../../src/utils/effortStartupKeystroke.ts"],"names":[],"mappings":";;AAkBA,8DAIC;AAtBD;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,yBAAyB,CAAC,WAA0B;IAClE,MAAM,KAAK,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,WAAW,KAAK,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description The pure decision behind `ensureAgentSession` (plan
|
|
3
|
+
* 2026-10-04-claude-process-lifecycle, L-D4): what to do so a conversation has a
|
|
4
|
+
* live agent session. A conversation whose process is gone but whose session id
|
|
5
|
+
* is still persisted is SLEEPING — it is resumed, never replaced by a fresh
|
|
6
|
+
* session; only `/quit`, `/new` and leaving the folder release the id. Every
|
|
7
|
+
* trigger (a message, a Jira request, a limit resume, a wake-up, a schedule) and
|
|
8
|
+
* every command that needs a live agent goes through the one choke point that
|
|
9
|
+
* acts on this plan, so no path can start a fresh conversation over a sleeping one.
|
|
10
|
+
*/
|
|
11
|
+
/** The persisted ids a conversation's agent row carries (one per backend family). */
|
|
12
|
+
export interface PersistedSessionIds {
|
|
13
|
+
claudeSessionId?: string;
|
|
14
|
+
opencodeSessionId?: string;
|
|
15
|
+
}
|
|
16
|
+
export type EnsureSessionPlan =
|
|
17
|
+
/** A live session, or a start already under way (prompts buffer and replay). */
|
|
18
|
+
{
|
|
19
|
+
kind: 'ready';
|
|
20
|
+
}
|
|
21
|
+
/** No folder bound — nothing can start. */
|
|
22
|
+
| {
|
|
23
|
+
kind: 'unbound';
|
|
24
|
+
}
|
|
25
|
+
/** Bound, but no adapter resolves and the caller gave no fallback — refuse. */
|
|
26
|
+
| {
|
|
27
|
+
kind: 'noAdapter';
|
|
28
|
+
}
|
|
29
|
+
/** A sleeping conversation: resume `sessionId` on `adapterName` (silently). */
|
|
30
|
+
| {
|
|
31
|
+
kind: 'resume';
|
|
32
|
+
adapterName: string;
|
|
33
|
+
sessionId: string;
|
|
34
|
+
}
|
|
35
|
+
/** Nothing to resume and the caller allows a fresh start. */
|
|
36
|
+
| {
|
|
37
|
+
kind: 'start';
|
|
38
|
+
adapterName: string;
|
|
39
|
+
}
|
|
40
|
+
/** Nothing to resume and the caller allows NO fresh start (a reminder, a topic's wake-up). */
|
|
41
|
+
| {
|
|
42
|
+
kind: 'nothingToResume';
|
|
43
|
+
};
|
|
44
|
+
export interface EnsureSessionPlanInput {
|
|
45
|
+
isActive: boolean;
|
|
46
|
+
isStarting: boolean;
|
|
47
|
+
hasBinding: boolean;
|
|
48
|
+
/** The adapter the session would run on, already resolved (explicit pick → in-memory → persisted → fallback). */
|
|
49
|
+
adapterName: string | null;
|
|
50
|
+
/** Whether `adapterName` is one of the two Claude backends (they share the on-disk transcript and its id). */
|
|
51
|
+
isClaudeBackend: boolean;
|
|
52
|
+
persistedIds: PersistedSessionIds | null;
|
|
53
|
+
/** Resume a sleeping session but never start a fresh one. */
|
|
54
|
+
isResumeOnly: boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @description The persisted session id that belongs to `adapterName`: the Claude
|
|
58
|
+
* id for either Claude backend, the OpenCode id for OpenCode, none for a shell or
|
|
59
|
+
* an unknown adapter. Mirrors the id-wiping rule of the adapter switch, so an id
|
|
60
|
+
* of another family is never resumed on the wrong backend.
|
|
61
|
+
*/
|
|
62
|
+
export declare function getPersistedSessionIdForAdapter(persistedIds: PersistedSessionIds | null, adapterName: string, isClaudeBackend: boolean): string | null;
|
|
63
|
+
export declare function getEnsureSessionPlan(input: EnsureSessionPlanInput): EnsureSessionPlan;
|
|
64
|
+
/**
|
|
65
|
+
* @description What follows a resume that FAILED (the CLI refused the id, the
|
|
66
|
+
* process did not come up): a caller that may start fresh does — the conversation
|
|
67
|
+
* is told its previous one could not be resumed; a resume-only caller stops.
|
|
68
|
+
*/
|
|
69
|
+
export declare function getResumeFailureAction(isResumeOnly: boolean): 'startFresh' | 'fail';
|
|
70
|
+
//# sourceMappingURL=ensureSessionPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureSessionPlan.d.ts","sourceRoot":"","sources":["../../src/utils/ensureSessionPlan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,iBAAiB;AAC3B,gFAAgF;AAC9E;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE;AACnB,2CAA2C;GACzC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;AACrB,+EAA+E;GAC7E;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE;AACvB,+EAA+E;GAC7E;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC5D,6DAA6D;GAC3D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AACxC,8FAA8F;GAC5F;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEhC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,iHAAiH;IACjH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8GAA8G;IAC9G,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACzC,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,OAAO,GACvB,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,GAAG,iBAAiB,CAQrF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,CAEnF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description The pure decision behind `ensureAgentSession` (plan
|
|
4
|
+
* 2026-10-04-claude-process-lifecycle, L-D4): what to do so a conversation has a
|
|
5
|
+
* live agent session. A conversation whose process is gone but whose session id
|
|
6
|
+
* is still persisted is SLEEPING — it is resumed, never replaced by a fresh
|
|
7
|
+
* session; only `/quit`, `/new` and leaving the folder release the id. Every
|
|
8
|
+
* trigger (a message, a Jira request, a limit resume, a wake-up, a schedule) and
|
|
9
|
+
* every command that needs a live agent goes through the one choke point that
|
|
10
|
+
* acts on this plan, so no path can start a fresh conversation over a sleeping one.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.getPersistedSessionIdForAdapter = getPersistedSessionIdForAdapter;
|
|
14
|
+
exports.getEnsureSessionPlan = getEnsureSessionPlan;
|
|
15
|
+
exports.getResumeFailureAction = getResumeFailureAction;
|
|
16
|
+
const adapterNames_1 = require("../adapters/adapterNames");
|
|
17
|
+
/**
|
|
18
|
+
* @description The persisted session id that belongs to `adapterName`: the Claude
|
|
19
|
+
* id for either Claude backend, the OpenCode id for OpenCode, none for a shell or
|
|
20
|
+
* an unknown adapter. Mirrors the id-wiping rule of the adapter switch, so an id
|
|
21
|
+
* of another family is never resumed on the wrong backend.
|
|
22
|
+
*/
|
|
23
|
+
function getPersistedSessionIdForAdapter(persistedIds, adapterName, isClaudeBackend) {
|
|
24
|
+
if (!persistedIds)
|
|
25
|
+
return null;
|
|
26
|
+
if (isClaudeBackend)
|
|
27
|
+
return persistedIds.claudeSessionId ?? null;
|
|
28
|
+
if (adapterName === adapterNames_1.openCodeAdapterName)
|
|
29
|
+
return persistedIds.opencodeSessionId ?? null;
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
function getEnsureSessionPlan(input) {
|
|
33
|
+
if (input.isActive || input.isStarting)
|
|
34
|
+
return { kind: 'ready' };
|
|
35
|
+
if (!input.hasBinding)
|
|
36
|
+
return { kind: 'unbound' };
|
|
37
|
+
if (!input.adapterName)
|
|
38
|
+
return { kind: 'noAdapter' };
|
|
39
|
+
const sessionId = getPersistedSessionIdForAdapter(input.persistedIds, input.adapterName, input.isClaudeBackend);
|
|
40
|
+
if (sessionId)
|
|
41
|
+
return { kind: 'resume', adapterName: input.adapterName, sessionId };
|
|
42
|
+
if (input.isResumeOnly)
|
|
43
|
+
return { kind: 'nothingToResume' };
|
|
44
|
+
return { kind: 'start', adapterName: input.adapterName };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @description What follows a resume that FAILED (the CLI refused the id, the
|
|
48
|
+
* process did not come up): a caller that may start fresh does — the conversation
|
|
49
|
+
* is told its previous one could not be resumed; a resume-only caller stops.
|
|
50
|
+
*/
|
|
51
|
+
function getResumeFailureAction(isResumeOnly) {
|
|
52
|
+
return isResumeOnly ? 'fail' : 'startFresh';
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=ensureSessionPlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureSessionPlan.js","sourceRoot":"","sources":["../../src/utils/ensureSessionPlan.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AA2CH,0EASC;AAED,oDAQC;AAOD,wDAEC;AArED,2DAA+D;AAmC/D;;;;;GAKG;AACH,SAAgB,+BAA+B,CAC7C,YAAwC,EACxC,WAAmB,EACnB,eAAwB;IAExB,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,eAAe;QAAE,OAAO,YAAY,CAAC,eAAe,IAAI,IAAI,CAAC;IACjE,IAAI,WAAW,KAAK,kCAAmB;QAAE,OAAO,YAAY,CAAC,iBAAiB,IAAI,IAAI,CAAC;IACvF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAA6B;IAChE,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACjE,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,+BAA+B,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAChH,IAAI,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;IACpF,IAAI,KAAK,CAAC,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,YAAqB;IAC1D,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure decision layer for the agent→Telegram file/image send
|
|
3
|
+
* (`send_file_to_user` MCP tool). Four concerns, all side-effect-free enough to
|
|
4
|
+
* unit-test without booting Telegraf:
|
|
5
|
+
* 1. {@link resolveSendFileWithinDir} — path-safety: resolve a caller-supplied
|
|
6
|
+
* path against the topic's bound folder and confirm (realpath + containment)
|
|
7
|
+
* it points at a REGULAR FILE inside it. Modeled on
|
|
8
|
+
* `validation.ts:validateSubdir`, but for a file (not a directory) and
|
|
9
|
+
* returning a discriminated result instead of throwing (the caller surfaces
|
|
10
|
+
* the error to the agent as an MCP tool error).
|
|
11
|
+
* 2. {@link classifyFileSendKind} — map an extension to how Telegram should
|
|
12
|
+
* render it (inline photo / autoplay animation / inline video / plain document).
|
|
13
|
+
* 3. {@link planFileSend} — decide the single Telegram send method (or album
|
|
14
|
+
* shape) for 1..10 items, applying the `as_file` override, the photo size
|
|
15
|
+
* downgrade, and the album photo/video-vs-document rule. Returns the
|
|
16
|
+
* over-cap / count violations as an error variant rather than throwing.
|
|
17
|
+
* 4. {@link buildTelegramFileSendRequest} — turn a non-error plan into the
|
|
18
|
+
* exact typed Bot API request shape, including caption placement.
|
|
19
|
+
*
|
|
20
|
+
* The only fs touch is the bigint `statSync` inside
|
|
21
|
+
* {@link resolveSendFileWithinDir} (unavoidable for the regular-file and
|
|
22
|
+
* identity gates). The caller supplies owned descriptor snapshots, so planning
|
|
23
|
+
* and request construction never carry workspace paths into Telegraf.
|
|
24
|
+
*/
|
|
25
|
+
/** Telegram's inline-photo size cap; a photo-eligible file over this downgrades to a document. */
|
|
26
|
+
export declare const telegramPhotoMaxBytes: number;
|
|
27
|
+
/** Bot API hard send cap per file; anything over this is rejected, never sent. */
|
|
28
|
+
export declare const telegramSendMaxBytes: number;
|
|
29
|
+
/** Minimum item count that forms a media-group album (below ⇒ single send). */
|
|
30
|
+
export declare const mediaGroupMin = 2;
|
|
31
|
+
/** Maximum item count Telegram accepts in one media-group album. */
|
|
32
|
+
export declare const mediaGroupMax = 10;
|
|
33
|
+
/** Telegram caption length cap (characters); longer captions are trimmed. */
|
|
34
|
+
export declare const captionMaxLength = 1024;
|
|
35
|
+
/** Extensions rendered as inline photos (lowercased, leading dot). */
|
|
36
|
+
export declare const photoExtensions: readonly string[];
|
|
37
|
+
/** Extensions rendered as looping animations (lowercased, leading dot). */
|
|
38
|
+
export declare const animationExtensions: readonly string[];
|
|
39
|
+
/** Extensions rendered with Telegram's native streaming video player. */
|
|
40
|
+
export declare const videoExtensions: readonly string[];
|
|
41
|
+
/**
|
|
42
|
+
* @name FileSendKind
|
|
43
|
+
* @description How Telegram should render a file: inline `photo`, autoplay
|
|
44
|
+
* `animation` (gif), native `video`, or plain `document`.
|
|
45
|
+
*/
|
|
46
|
+
export type FileSendKind = 'photo' | 'animation' | 'video' | 'document';
|
|
47
|
+
/**
|
|
48
|
+
* @name ResolveSendFileCode
|
|
49
|
+
* @description Stable failure code for {@link resolveSendFileWithinDir}, so the
|
|
50
|
+
* caller can build a readable, path-naming tool error per case.
|
|
51
|
+
*/
|
|
52
|
+
export type ResolveSendFileCode = 'INVALID_CHARS' | 'OUTSIDE_FOLDER' | 'NOT_FOUND' | 'NOT_A_FILE';
|
|
53
|
+
/** Device/inode identity captured during canonical-path validation. */
|
|
54
|
+
export interface FileIdentity {
|
|
55
|
+
dev: bigint;
|
|
56
|
+
ino: bigint;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @name ResolveSendFileResult
|
|
60
|
+
* @description Discriminated outcome of resolving a single send path. `ok` carries
|
|
61
|
+
* the safe absolute path, its canonical root, and file identity; the failure
|
|
62
|
+
* carries a readable message + a stable code.
|
|
63
|
+
*/
|
|
64
|
+
export type ResolveSendFileResult = {
|
|
65
|
+
ok: true;
|
|
66
|
+
absPath: string;
|
|
67
|
+
rootPath: string;
|
|
68
|
+
identity: FileIdentity;
|
|
69
|
+
} | {
|
|
70
|
+
ok: false;
|
|
71
|
+
error: string;
|
|
72
|
+
code: ResolveSendFileCode;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* @description Resolve `rawPath` against the topic's bound `workDir` and confirm
|
|
76
|
+
* it points at a regular file living inside it. A multi-file caller supplies
|
|
77
|
+
* `pinnedRootPath` after the first item so a replaced binding cannot become a
|
|
78
|
+
* new trusted root between album items. Defence-in-depth mirrors
|
|
79
|
+
* `validateSubdir`: reject control chars, NFC-normalise, canonicalize the root,
|
|
80
|
+
* then use the shared canonical candidate containment gate. The final gate differs: this is for a
|
|
81
|
+
* FILE, so `statSync` must report a regular file (a directory or socket is
|
|
82
|
+
* rejected, not accepted).
|
|
83
|
+
*/
|
|
84
|
+
export declare function resolveSendFileWithinDir(workDir: string, rawPath: string, pinnedRootPath?: string): ResolveSendFileResult;
|
|
85
|
+
/**
|
|
86
|
+
* @description Classify a path by its lowercased extension into the Telegram
|
|
87
|
+
* render kind. `.png/.jpg/.jpeg/.webp` → photo; `.gif` → animation; `.mp4` →
|
|
88
|
+
* video; anything else → document.
|
|
89
|
+
*/
|
|
90
|
+
export declare function classifyFileSendKind(filePath: string): FileSendKind;
|
|
91
|
+
/** Derive a multipart-safe filename from a canonical file path. */
|
|
92
|
+
export declare function getTelegramUploadFilename(filePath: string): string;
|
|
93
|
+
/**
|
|
94
|
+
* @description Trim a caption to Telegram's {@link captionMaxLength} cap. Returns
|
|
95
|
+
* `undefined` for an absent/blank caption so callers can omit the field entirely.
|
|
96
|
+
*/
|
|
97
|
+
export declare function trimCaption(caption: string | undefined): string | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* @name FileSendItem
|
|
100
|
+
* @description One resolved file the planner reasons about: its safe absolute
|
|
101
|
+
* path, pinned descriptor snapshot, and render kind.
|
|
102
|
+
*/
|
|
103
|
+
export interface FileSendItem {
|
|
104
|
+
absPath: string;
|
|
105
|
+
source: FileDescriptorSnapshot;
|
|
106
|
+
kind: FileSendKind;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* @name FileSendPlan
|
|
110
|
+
* @description Discriminated send plan:
|
|
111
|
+
* - `kind: 'send'` — one file via a single Telegram method (`mode`).
|
|
112
|
+
* - `kind: 'album'` — 2..10 files via `sendMediaGroup`, either native photos /
|
|
113
|
+
* videos or all documents (`mode`).
|
|
114
|
+
* - `kind: 'error'` — a count/size violation; `error` names the offending file.
|
|
115
|
+
*/
|
|
116
|
+
export type FileSendPlan = {
|
|
117
|
+
kind: 'send';
|
|
118
|
+
mode: FileSendKind;
|
|
119
|
+
item: FileSendItem;
|
|
120
|
+
} | {
|
|
121
|
+
kind: 'album';
|
|
122
|
+
mode: 'albumPhotoVideo' | 'albumDocument';
|
|
123
|
+
items: FileSendItem[];
|
|
124
|
+
} | {
|
|
125
|
+
kind: 'error';
|
|
126
|
+
error: string;
|
|
127
|
+
};
|
|
128
|
+
/** A validated plan that can be converted into a Telegram request. */
|
|
129
|
+
export type NonErrorFileSendPlan = Exclude<FileSendPlan, {
|
|
130
|
+
kind: 'error';
|
|
131
|
+
error: string;
|
|
132
|
+
}>;
|
|
133
|
+
/** Exact Bot API methods used for one-file sends. */
|
|
134
|
+
export type TelegramSingleFileSendMethod = 'sendPhoto' | 'sendAnimation' | 'sendVideo' | 'sendDocument';
|
|
135
|
+
/** Owned descriptor snapshot transferred from the reader to the send service. */
|
|
136
|
+
export interface FileDescriptorSnapshot {
|
|
137
|
+
fd: number;
|
|
138
|
+
filename: string;
|
|
139
|
+
sizeBytes: number;
|
|
140
|
+
}
|
|
141
|
+
export interface FileSendPhotoMedia {
|
|
142
|
+
type: 'photo';
|
|
143
|
+
media: FileDescriptorSnapshot;
|
|
144
|
+
caption?: string;
|
|
145
|
+
}
|
|
146
|
+
export interface FileSendVideoMedia {
|
|
147
|
+
type: 'video';
|
|
148
|
+
media: FileDescriptorSnapshot;
|
|
149
|
+
caption?: string;
|
|
150
|
+
}
|
|
151
|
+
export interface FileSendDocumentMedia {
|
|
152
|
+
type: 'document';
|
|
153
|
+
media: FileDescriptorSnapshot;
|
|
154
|
+
caption?: string;
|
|
155
|
+
}
|
|
156
|
+
/** Native photo/video group accepted by the file-send gateway. */
|
|
157
|
+
export interface FileSendPhotoVideoMediaGroup {
|
|
158
|
+
kind: 'photoVideo';
|
|
159
|
+
media: Array<FileSendPhotoMedia | FileSendVideoMedia>;
|
|
160
|
+
}
|
|
161
|
+
/** Homogeneous document group accepted by the file-send gateway. */
|
|
162
|
+
export interface FileSendDocumentMediaGroup {
|
|
163
|
+
kind: 'document';
|
|
164
|
+
media: FileSendDocumentMedia[];
|
|
165
|
+
}
|
|
166
|
+
/** Project-owned media group; the discriminant preserves Bot API homogeneity. */
|
|
167
|
+
export type FileSendMediaGroup = FileSendPhotoVideoMediaGroup | FileSendDocumentMediaGroup;
|
|
168
|
+
/** One-file request ready for `bot.telegram[method]`, apart from thread routing. */
|
|
169
|
+
export interface TelegramSingleFileSendRequest {
|
|
170
|
+
method: TelegramSingleFileSendMethod;
|
|
171
|
+
source: FileDescriptorSnapshot;
|
|
172
|
+
caption?: string;
|
|
173
|
+
}
|
|
174
|
+
/** Photo/video media-group request preserving each eligible item's native type. */
|
|
175
|
+
export interface TelegramPhotoVideoAlbumRequest {
|
|
176
|
+
method: 'sendMediaGroup';
|
|
177
|
+
mediaGroup: FileSendPhotoVideoMediaGroup;
|
|
178
|
+
}
|
|
179
|
+
/** Document media-group request used for every whole-album fallback. */
|
|
180
|
+
export interface TelegramDocumentAlbumRequest {
|
|
181
|
+
method: 'sendMediaGroup';
|
|
182
|
+
mediaGroup: FileSendDocumentMediaGroup;
|
|
183
|
+
}
|
|
184
|
+
/** Exact Telegram request built from a non-error file-send plan. */
|
|
185
|
+
export type TelegramFileSendRequest = TelegramSingleFileSendRequest | TelegramPhotoVideoAlbumRequest | TelegramDocumentAlbumRequest;
|
|
186
|
+
/**
|
|
187
|
+
* @description Convert a non-error plan into the exact Telegram request the bot
|
|
188
|
+
* executes. Captions are trimmed here and included on a single request or only
|
|
189
|
+
* the first media-group entry. `albumPhotoVideo` accepts only photo/video items;
|
|
190
|
+
* an impossible hand-built plan throws a path-naming error instead of silently
|
|
191
|
+
* sending another kind as a photo.
|
|
192
|
+
*/
|
|
193
|
+
export declare function buildTelegramFileSendRequest(plan: NonErrorFileSendPlan, caption?: string): TelegramFileSendRequest;
|
|
194
|
+
/** Existing user-facing hard-cap error shared by planning and snapshot reads. */
|
|
195
|
+
export declare function getTelegramFileOversizeError(absPath: string): string;
|
|
196
|
+
/** Existing user-facing item-count validation shared by planning and the reader. */
|
|
197
|
+
export declare function getFileSendCountError(itemCount: number): string | null;
|
|
198
|
+
/**
|
|
199
|
+
* @description Decide how to deliver 1..10 resolved files.
|
|
200
|
+
*
|
|
201
|
+
* Single file: the method is the item's kind, with two overrides —
|
|
202
|
+
* - `asFile` forces `document` for every kind, and
|
|
203
|
+
* - a photo over {@link telegramPhotoMaxBytes} downgrades to `document` so it
|
|
204
|
+
* still goes through (just not inline).
|
|
205
|
+
*
|
|
206
|
+
* Album (2..10): `albumPhotoVideo` when `!asFile` and EVERY item is either a
|
|
207
|
+
* video or a photo within the photo cap, preserving each item's native media
|
|
208
|
+
* type in all-photo, all-video, and mixed photo/video groups. Otherwise use
|
|
209
|
+
* `albumDocument` (animations/documents and over-cap photos included — a media
|
|
210
|
+
* group cannot carry animation items, so a gif rides as a document in an album
|
|
211
|
+
* and only autoplays when sent alone).
|
|
212
|
+
*
|
|
213
|
+
* Returns an `error` plan for 0 items, >{@link mediaGroupMax}, or any item over
|
|
214
|
+
* {@link telegramSendMaxBytes}.
|
|
215
|
+
*/
|
|
216
|
+
export declare function planFileSend(items: FileSendItem[], asFile: boolean): FileSendPlan;
|
|
217
|
+
//# sourceMappingURL=fileSendPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSendPlan.d.ts","sourceRoot":"","sources":["../../src/utils/fileSendPlan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,kGAAkG;AAClG,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AAEtD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,QAAmB,CAAC;AAErD,+EAA+E;AAC/E,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,oEAAoE;AACpE,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,sEAAsE;AACtE,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAuC,CAAC;AAErF,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAa,CAAC;AAE/D,yEAAyE;AACzE,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAa,CAAC;AAK3D;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC;AAExE;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,gBAAgB,GAChB,WAAW,GACX,YAAY,CAAC;AAEjB,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE5D;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GACtB,qBAAqB,CAiDvB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAMnE;AAED,mEAAmE;AACnE,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAI3E;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,sEAAsE;AACtE,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3F,qDAAqD;AACrD,MAAM,MAAM,4BAA4B,GACpC,WAAW,GACX,eAAe,GACf,WAAW,GACX,cAAc,CAAC;AAEnB,iFAAiF;AACjF,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,kEAAkE;AAClE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;CACvD;AAED,oEAAoE;AACpE,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,qBAAqB,EAAE,CAAC;CAChC;AAED,iFAAiF;AACjF,MAAM,MAAM,kBAAkB,GAAG,4BAA4B,GAAG,0BAA0B,CAAC;AAE3F,oFAAoF;AACpF,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,4BAA4B,CAAC;IACrC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,mFAAmF;AACnF,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,4BAA4B,CAAC;CAC1C;AAED,wEAAwE;AACxE,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,0BAA0B,CAAC;CACxC;AAED,oEAAoE;AACpE,MAAM,MAAM,uBAAuB,GAC/B,6BAA6B,GAC7B,8BAA8B,GAC9B,4BAA4B,CAAC;AA0BjC;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,oBAAoB,EAC1B,OAAO,CAAC,EAAE,MAAM,GACf,uBAAuB,CA0BzB;AAUD,iFAAiF;AACjF,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMtE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,YAAY,CAiCjF"}
|