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,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Post a prompt into a conversation's agent session (Jira connector
|
|
4
|
+
* plan J5, D21): make sure a session is ready — the ensure resumes the
|
|
5
|
+
* conversation's own sleeping session, else starts one if needed — let a
|
|
6
|
+
* BUSY session finish its turn (up to {@link waitIdleTimeoutMs} — live work is
|
|
7
|
+
* never interrupted on purpose; after the bound the forward takes the normal
|
|
8
|
+
* interrupt path), then forward — unless an armed usage-limit wait holds the
|
|
9
|
+
* prompt, checked before the session is touched and again right before the
|
|
10
|
+
* forward (R23). The scheduler's fire (steps 3–4) and the Jira
|
|
11
|
+
* connector's requests share it. Every side effect is injected, so the wait
|
|
12
|
+
* loop runs on a fake clock in tests.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.waitIdleTimeoutMs = exports.busyPollIntervalMs = void 0;
|
|
16
|
+
exports.postToSession = postToSession;
|
|
17
|
+
/** Poll cadence for the wait-for-idle loop: re-check the busy probe every 5s. */
|
|
18
|
+
exports.busyPollIntervalMs = 5000;
|
|
19
|
+
/**
|
|
20
|
+
* Upper bound on waiting for a busy session to go idle before forwarding anyway
|
|
21
|
+
* (10 min). The forward then takes the normal interrupt path, so a wedged turn
|
|
22
|
+
* never blocks a post forever.
|
|
23
|
+
*/
|
|
24
|
+
exports.waitIdleTimeoutMs = 10 * 60 * 1000;
|
|
25
|
+
async function waitForIdle(deps, conversationKey) {
|
|
26
|
+
const deadline = deps.now() + exports.waitIdleTimeoutMs;
|
|
27
|
+
while (deps.checkBusy(conversationKey)) {
|
|
28
|
+
if (deps.now() >= deadline)
|
|
29
|
+
return;
|
|
30
|
+
await deps.sleep(exports.busyPollIntervalMs);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function postToSession(deps, conversationKey, prompt, fallbackAdapterName, options = {}) {
|
|
34
|
+
// What is held is read only once the wait is over: a caller may say when it was due (R27).
|
|
35
|
+
const { heldText } = options;
|
|
36
|
+
const text = typeof prompt === 'string' ? prompt : prompt.fullText;
|
|
37
|
+
// Checked first: no session is started or resumed into a limit.
|
|
38
|
+
if (deps.holdForLimitResume?.(conversationKey, text, heldText))
|
|
39
|
+
return { ok: true, isHeld: true };
|
|
40
|
+
const session = await deps.ensureSession(conversationKey, fallbackAdapterName);
|
|
41
|
+
if (!session.ok)
|
|
42
|
+
return { ok: false, reason: session.reason };
|
|
43
|
+
if (deps.checkBusy(conversationKey))
|
|
44
|
+
await waitForIdle(deps, conversationKey);
|
|
45
|
+
// Again: the turn waited out above may itself have hit the limit and armed a wait.
|
|
46
|
+
if (deps.holdForLimitResume?.(conversationKey, text, heldText))
|
|
47
|
+
return { ok: true, isHeld: true };
|
|
48
|
+
try {
|
|
49
|
+
await deps.forwardPrompt(conversationKey, typeof prompt === 'string' ? prompt : prompt.buildText({ isFresh: session.isFresh }));
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return { ok: false, reason: 'forward-failed', error: error instanceof Error ? error.message : String(error) };
|
|
53
|
+
}
|
|
54
|
+
return { ok: true, isHeld: false };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=postToSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postToSession.js","sourceRoot":"","sources":["../src/postToSession.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAgFH,sCAuBC;AArGD,iFAAiF;AACpE,QAAA,kBAAkB,GAAG,IAAI,CAAC;AAEvC;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AA8DhD,KAAK,UAAU,WAAW,CAAC,IAAuB,EAAE,eAAuB;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,yBAAiB,CAAC;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YAAE,OAAO;QACnC,MAAM,IAAI,CAAC,KAAK,CAAC,0BAAkB,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,IAAuB,EACvB,eAAuB,EACvB,MAAkC,EAClC,mBAA4B,EAC5B,UAAiC,EAAE;IAEnC,2FAA2F;IAC3F,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,IAAI,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACnE,gEAAgE;IAChE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAClG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAC/E,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9D,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;QAAE,MAAM,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC9E,mFAAmF;IACnF,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAClG,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAClI,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAChH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Detect Claude-CLI "thinking" progress lines so the bot can
|
|
3
|
+
* collapse a long burst of them into a single edited Telegram message
|
|
4
|
+
* instead of flooding the topic with one message per poll tick.
|
|
5
|
+
*
|
|
6
|
+
* Claude's TUI redraws a spinner roughly every 300 ms while the agent is
|
|
7
|
+
* thinking. The line looks like:
|
|
8
|
+
*
|
|
9
|
+
* <glyph> <Activity>… (Xm Ys · ↑/↓ X.Xk tokens [ · <thinking-note>])
|
|
10
|
+
*
|
|
11
|
+
* where `<glyph>` rotates through `✻ ✽ ✶ ✢ · *` (plus `●/○` for bullet
|
|
12
|
+
* states), `<Activity>` is one of Claude's activity words (Smooshing,
|
|
13
|
+
* Actioning, …) or the active task title ("Fixing streaming output
|
|
14
|
+
* overwrite…"), and the trailing parenthesis updates time / tokens /
|
|
15
|
+
* thinking-mode every tick (seconds-only right after the turn starts).
|
|
16
|
+
*
|
|
17
|
+
* The bot already routes adapter `status` events through a coalescer
|
|
18
|
+
* that edits one message in place; the gap was that long bursts of
|
|
19
|
+
* progress lines (≥ 4 lines per poll diff, or any line that pushes
|
|
20
|
+
* the chunk over the adapter's `checkIsStatusOutput` length / line
|
|
21
|
+
* heuristic) were misclassified as substantive `output` and flooded
|
|
22
|
+
* the thread. {@link checkIsProgressChunk} is the adapter-agnostic
|
|
23
|
+
* safety net: every non-empty line in the chunk must match the regex,
|
|
24
|
+
* so mixed chunks with real prose still fall back to the normal
|
|
25
|
+
* output path with no regression.
|
|
26
|
+
*
|
|
27
|
+
* Verb transitions (`Newspapering` → `Coalescing` → `Booping`) all match
|
|
28
|
+
* the same regex and therefore stay in the same coalesced message — the
|
|
29
|
+
* user sees the latest verb on the rolling line, never a stream of
|
|
30
|
+
* separate "Now Newspapering" / "Now Coalescing" messages.
|
|
31
|
+
*
|
|
32
|
+
* The same applies to `/compact` (and the automatic context compaction),
|
|
33
|
+
* whose progress is a different shape — a `Compacting conversation…` verb
|
|
34
|
+
* line (with or without a `(Xs)` / `(Xs · ↑ X.Xk tokens)` stats parenthesis)
|
|
35
|
+
* optionally accompanied by a `▰▰▱▱` bar line — caught by {@link
|
|
36
|
+
* COMPACT_LINE_RE} + {@link PROGRESS_BAR_LINE_RE}. The verb line is anchored
|
|
37
|
+
* on the literal `Compacting conversation` phrase, so a bar line is no longer
|
|
38
|
+
* required to admit it (auto-compaction frequently redraws the verb line on
|
|
39
|
+
* its own, with no bar in the diff). {@link collapseProgressChunk} then trims
|
|
40
|
+
* a redraw burst down to its latest frame so the rolling message shows only
|
|
41
|
+
* the current state, not every intermediate one.
|
|
42
|
+
*
|
|
43
|
+
* A third transient shape is the **sub-agent task panel**: while a Task
|
|
44
|
+
* sub-agent runs, Claude redraws a `◯ <type> <title> <elapsed> · ↓ <tokens>`
|
|
45
|
+
* line every tick (the trailing time/tokens change each second, so the diff
|
|
46
|
+
* sees every tick as new and the topic floods). {@link
|
|
47
|
+
* SUBAGENT_PROGRESS_LINE_RE} catches it (anchored on the `◯` U+25EF
|
|
48
|
+
* sub-agent glyph, distinct from the `○` spinner / `●` bullet glyphs), and
|
|
49
|
+
* {@link collapseProgressChunk} keeps only the latest frame of each distinct
|
|
50
|
+
* task (a fan-out shows several `◯` lines at once), squeezing the TUI
|
|
51
|
+
* right-alignment padding down to single spaces.
|
|
52
|
+
*
|
|
53
|
+
* Kept in its own module (not inlined in `bot.ts`) so the regex is the
|
|
54
|
+
* single source of truth shared with `progressLine.test.ts`, and so the
|
|
55
|
+
* detection logic can be reused by future adapters (OpenCode, etc.)
|
|
56
|
+
* without exporting bot-internal helpers.
|
|
57
|
+
*/
|
|
58
|
+
/**
|
|
59
|
+
* @description The animated spinner / bullet glyph set Claude's TUI rotates
|
|
60
|
+
* through at the head of a progress line (`✻ ✽ ✶ ✢ · *`) plus the `● ○` bullet
|
|
61
|
+
* states. THE single source of the class used by {@link PROGRESS_LINE_RE} below
|
|
62
|
+
* AND by `normalizeForComparison` (utils/recentRelayWindow), so the line-SET
|
|
63
|
+
* diff dedups a re-animating-but-stable line and the progress detector accept
|
|
64
|
+
* the SAME glyph set — the two must never drift. A drift-lock test asserts
|
|
65
|
+
* `PROGRESS_LINE_RE.source` still carries exactly `[${spinnerGlyphClass}]`.
|
|
66
|
+
*/
|
|
67
|
+
export declare const spinnerGlyphClass = "\u273B\u273D\u2736\u2722\u00B7*\u25CF\u25CB";
|
|
68
|
+
/**
|
|
69
|
+
* @description Single-line regex for one Claude-CLI progress tick.
|
|
70
|
+
*
|
|
71
|
+
* Structure (each group commented):
|
|
72
|
+
*
|
|
73
|
+
* ^\s* leading whitespace (TUI indent)
|
|
74
|
+
* [✻✽✶✢·*●○] spinner glyph (full observed set)
|
|
75
|
+
* \s+\S(?:[^()\n]|\([^()\n]*\))*?… the activity text ending in U+2026
|
|
76
|
+
* ellipsis. Originally a single verb
|
|
77
|
+
* token ("Smooshing…"), then the active
|
|
78
|
+
* task title too ("Fixing streaming
|
|
79
|
+
* output overwrite…"), and the TUI now
|
|
80
|
+
* also puts parenthesised bits inside it
|
|
81
|
+
* ("Fixing relations add flow
|
|
82
|
+
* (sub-agent)…" — live flood 2026-06-11;
|
|
83
|
+
* a task title can carry its own parens
|
|
84
|
+
* too), so single-level `(…)` segments
|
|
85
|
+
* are allowed; the end-anchored stats
|
|
86
|
+
* group below stays the real anchor
|
|
87
|
+
* \s*\( stats parenthesis opens
|
|
88
|
+
* (?:\d+h\s+)?(?:\d+m\s+)?\d+s elapsed time — "13s", "4m 35s",
|
|
89
|
+
* "1h 2m 3s" (a fresh tick has no
|
|
90
|
+
* minutes yet; the old `\d+m \d+s`
|
|
91
|
+
* requirement made second-only ticks
|
|
92
|
+
* flood the topic)
|
|
93
|
+
* \s*·\s*[↑↓]\s*[\d.]+k?\s*tokens token counter, e.g. "↑ 4.4k tokens",
|
|
94
|
+
* "↓ 176 tokens"
|
|
95
|
+
* (?:\s*·[^()]*)? optional thinking-note suffix
|
|
96
|
+
* ("thought for 9s", "thinking with
|
|
97
|
+
* xhigh effort", "still thinking
|
|
98
|
+
* with xhigh effort", "thinking
|
|
99
|
+
* more with xhigh effort"). `[^()]*`
|
|
100
|
+
* refuses nested parens so a real
|
|
101
|
+
* prose sentence with parentheses
|
|
102
|
+
* cannot be mistaken for a tick.
|
|
103
|
+
* \)\s*$ stats parenthesis closes; line ends
|
|
104
|
+
*
|
|
105
|
+
* The activity text deliberately has no verb whitelist — Claude has shipped
|
|
106
|
+
* Smooshing / Actioning / Coalescing / … then task titles, then parenthesised
|
|
107
|
+
* suffixes like "(sub-agent)" inside the title; the trailing end-anchored
|
|
108
|
+
* `(time · tokens)` stats parenthesis is specific enough to carry the match
|
|
109
|
+
* on its own — the same safety argument that admitted multi-word titles
|
|
110
|
+
* (2026-06-05) covers the paren widening (2026-06-11).
|
|
111
|
+
*/
|
|
112
|
+
export declare const PROGRESS_LINE_RE: RegExp;
|
|
113
|
+
/**
|
|
114
|
+
* @description Verb line of Claude's `/compact` (and automatic context
|
|
115
|
+
* compaction) progress. Observed shapes:
|
|
116
|
+
* `✶ Compacting conversation…` (before the timer)
|
|
117
|
+
* `✻ Compacting conversation… (1m 22s)` (elapsed time only)
|
|
118
|
+
* `· Compacting conversation… (48s · ↑ 3.1k tokens)` (time + token stats)
|
|
119
|
+
*
|
|
120
|
+
* Anchored on the literal `Compacting conversation` phrase, followed by the
|
|
121
|
+
* ellipsis and an OPTIONAL `(…)` stats parenthesis (`[^()]*` so a real prose
|
|
122
|
+
* sentence with nested parens can't stretch the match). The phrase anchor is
|
|
123
|
+
* specific enough that this line on its own is safe to treat as progress —
|
|
124
|
+
* unlike a broad `\S.*…` body, it can never collide with a real `●`-prefixed
|
|
125
|
+
* answer, so {@link checkIsProgressChunk} no longer needs a bar line to admit
|
|
126
|
+
* it (auto-compaction redraws the verb line with no bar in the diff).
|
|
127
|
+
*/
|
|
128
|
+
export declare const COMPACT_LINE_RE: RegExp;
|
|
129
|
+
/**
|
|
130
|
+
* @description Sub-agent task line of Claude's TUI, redrawn every tick while a
|
|
131
|
+
* Task sub-agent runs, e.g.
|
|
132
|
+
* `◯ general-purpose Move styles into solClientKit 6m 50s · ↓ 120.2k tokens`
|
|
133
|
+
* optionally prefixed with the `❯` selection cursor, optionally without the
|
|
134
|
+
* trailing stats (right after the sub-agent starts, before its timer shows).
|
|
135
|
+
*
|
|
136
|
+
* Anchored on the `◯` (U+25EF) sub-agent glyph — deliberately distinct from
|
|
137
|
+
* the `○` (U+25CB) thinking spinner and the `●` (U+25CF) tool/result bullet,
|
|
138
|
+
* so a `● Bash(…)` tool call or a `○ Thinking…` tick is never mistaken for a
|
|
139
|
+
* sub-agent frame. The trailing time/token counter changes each second, which
|
|
140
|
+
* is exactly why the pane diff sees every tick as a new line and the topic
|
|
141
|
+
* floods without collapsing.
|
|
142
|
+
*/
|
|
143
|
+
export declare const SUBAGENT_PROGRESS_LINE_RE: RegExp;
|
|
144
|
+
/**
|
|
145
|
+
* @description Progress-bar line of Claude's `/compact`, e.g.
|
|
146
|
+
* `▰▰▰▰▰▰▱▱▱▱▱▱ 15%`. A run of filled/empty bar cells (U+25B0 `▰` /
|
|
147
|
+
* U+25B1 `▱`) optionally followed by a percentage.
|
|
148
|
+
*
|
|
149
|
+
* The percentage is optional because a terminal-redraw scrape can clip the
|
|
150
|
+
* trailing `N%` mid-frame; such a fragment must still count as progress (so
|
|
151
|
+
* it never floods the topic) and {@link collapseProgressChunk} falls back to
|
|
152
|
+
* the filled-cell count for ordering it. The `{4,}` cell run is a high-signal
|
|
153
|
+
* anchor (bar cells never appear in real prose), so a bar line on its own is
|
|
154
|
+
* always treated as progress; {@link COMPACT_LINE_RE} carries its own phrase
|
|
155
|
+
* anchor and no longer relies on a bar being present.
|
|
156
|
+
*/
|
|
157
|
+
export declare const PROGRESS_BAR_LINE_RE: RegExp;
|
|
158
|
+
export declare function checkIsProgressChunk(text: string): boolean;
|
|
159
|
+
/**
|
|
160
|
+
* @description Reduce a progress chunk (see {@link checkIsProgressChunk}) to
|
|
161
|
+
* the single most-recent frame, so the coalesced status message rolls in
|
|
162
|
+
* place instead of stacking every intermediate tick/percentage.
|
|
163
|
+
*
|
|
164
|
+
* - sub-agent frames (may be interleaved with any other shape) → the latest
|
|
165
|
+
* frame of EACH distinct task (grouped by {@link getSubagentTaskIdentity},
|
|
166
|
+
* first-seen order preserved), so a parallel fan-out shows one rolling line
|
|
167
|
+
* per sub-agent, padding squeezed. Rendered first — mirroring the TUI,
|
|
168
|
+
* which draws the task panel above the main spinner.
|
|
169
|
+
* - thinking-spinner lines → the last tick line (time only grows, scrape is
|
|
170
|
+
* in order, so "last" is "latest").
|
|
171
|
+
* - compaction lines with a bar → the highest-percentage bar line (a redraw
|
|
172
|
+
* scrape can arrive out of order, and `%` only grows, so max is the true
|
|
173
|
+
* latest) prefixed with the most recent `Compacting conversation…` verb
|
|
174
|
+
* line for context. The pair mirrors Claude's own two-line frame.
|
|
175
|
+
* - compaction lines with no bar (verb lines only) → the last verb line.
|
|
176
|
+
*
|
|
177
|
+
* Must only be called on a chunk that {@link checkIsProgressChunk} accepted.
|
|
178
|
+
*/
|
|
179
|
+
export declare function collapseProgressChunk(text: string): string;
|
|
180
|
+
//# sourceMappingURL=progressLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressLine.d.ts","sourceRoot":"","sources":["../src/progressLine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,gDAAa,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,gBAAgB,QAC0G,CAAC;AAExI;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,QACuC,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,yBAAyB,QAA2B,CAAC;AAElE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,QAAyC,CAAC;AA0C3E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI1D;AAuCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuC1D"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Detect Claude-CLI "thinking" progress lines so the bot can
|
|
4
|
+
* collapse a long burst of them into a single edited Telegram message
|
|
5
|
+
* instead of flooding the topic with one message per poll tick.
|
|
6
|
+
*
|
|
7
|
+
* Claude's TUI redraws a spinner roughly every 300 ms while the agent is
|
|
8
|
+
* thinking. The line looks like:
|
|
9
|
+
*
|
|
10
|
+
* <glyph> <Activity>… (Xm Ys · ↑/↓ X.Xk tokens [ · <thinking-note>])
|
|
11
|
+
*
|
|
12
|
+
* where `<glyph>` rotates through `✻ ✽ ✶ ✢ · *` (plus `●/○` for bullet
|
|
13
|
+
* states), `<Activity>` is one of Claude's activity words (Smooshing,
|
|
14
|
+
* Actioning, …) or the active task title ("Fixing streaming output
|
|
15
|
+
* overwrite…"), and the trailing parenthesis updates time / tokens /
|
|
16
|
+
* thinking-mode every tick (seconds-only right after the turn starts).
|
|
17
|
+
*
|
|
18
|
+
* The bot already routes adapter `status` events through a coalescer
|
|
19
|
+
* that edits one message in place; the gap was that long bursts of
|
|
20
|
+
* progress lines (≥ 4 lines per poll diff, or any line that pushes
|
|
21
|
+
* the chunk over the adapter's `checkIsStatusOutput` length / line
|
|
22
|
+
* heuristic) were misclassified as substantive `output` and flooded
|
|
23
|
+
* the thread. {@link checkIsProgressChunk} is the adapter-agnostic
|
|
24
|
+
* safety net: every non-empty line in the chunk must match the regex,
|
|
25
|
+
* so mixed chunks with real prose still fall back to the normal
|
|
26
|
+
* output path with no regression.
|
|
27
|
+
*
|
|
28
|
+
* Verb transitions (`Newspapering` → `Coalescing` → `Booping`) all match
|
|
29
|
+
* the same regex and therefore stay in the same coalesced message — the
|
|
30
|
+
* user sees the latest verb on the rolling line, never a stream of
|
|
31
|
+
* separate "Now Newspapering" / "Now Coalescing" messages.
|
|
32
|
+
*
|
|
33
|
+
* The same applies to `/compact` (and the automatic context compaction),
|
|
34
|
+
* whose progress is a different shape — a `Compacting conversation…` verb
|
|
35
|
+
* line (with or without a `(Xs)` / `(Xs · ↑ X.Xk tokens)` stats parenthesis)
|
|
36
|
+
* optionally accompanied by a `▰▰▱▱` bar line — caught by {@link
|
|
37
|
+
* COMPACT_LINE_RE} + {@link PROGRESS_BAR_LINE_RE}. The verb line is anchored
|
|
38
|
+
* on the literal `Compacting conversation` phrase, so a bar line is no longer
|
|
39
|
+
* required to admit it (auto-compaction frequently redraws the verb line on
|
|
40
|
+
* its own, with no bar in the diff). {@link collapseProgressChunk} then trims
|
|
41
|
+
* a redraw burst down to its latest frame so the rolling message shows only
|
|
42
|
+
* the current state, not every intermediate one.
|
|
43
|
+
*
|
|
44
|
+
* A third transient shape is the **sub-agent task panel**: while a Task
|
|
45
|
+
* sub-agent runs, Claude redraws a `◯ <type> <title> <elapsed> · ↓ <tokens>`
|
|
46
|
+
* line every tick (the trailing time/tokens change each second, so the diff
|
|
47
|
+
* sees every tick as new and the topic floods). {@link
|
|
48
|
+
* SUBAGENT_PROGRESS_LINE_RE} catches it (anchored on the `◯` U+25EF
|
|
49
|
+
* sub-agent glyph, distinct from the `○` spinner / `●` bullet glyphs), and
|
|
50
|
+
* {@link collapseProgressChunk} keeps only the latest frame of each distinct
|
|
51
|
+
* task (a fan-out shows several `◯` lines at once), squeezing the TUI
|
|
52
|
+
* right-alignment padding down to single spaces.
|
|
53
|
+
*
|
|
54
|
+
* Kept in its own module (not inlined in `bot.ts`) so the regex is the
|
|
55
|
+
* single source of truth shared with `progressLine.test.ts`, and so the
|
|
56
|
+
* detection logic can be reused by future adapters (OpenCode, etc.)
|
|
57
|
+
* without exporting bot-internal helpers.
|
|
58
|
+
*/
|
|
59
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
60
|
+
exports.PROGRESS_BAR_LINE_RE = exports.SUBAGENT_PROGRESS_LINE_RE = exports.COMPACT_LINE_RE = exports.PROGRESS_LINE_RE = exports.spinnerGlyphClass = void 0;
|
|
61
|
+
exports.checkIsProgressChunk = checkIsProgressChunk;
|
|
62
|
+
exports.collapseProgressChunk = collapseProgressChunk;
|
|
63
|
+
/**
|
|
64
|
+
* @description The animated spinner / bullet glyph set Claude's TUI rotates
|
|
65
|
+
* through at the head of a progress line (`✻ ✽ ✶ ✢ · *`) plus the `● ○` bullet
|
|
66
|
+
* states. THE single source of the class used by {@link PROGRESS_LINE_RE} below
|
|
67
|
+
* AND by `normalizeForComparison` (utils/recentRelayWindow), so the line-SET
|
|
68
|
+
* diff dedups a re-animating-but-stable line and the progress detector accept
|
|
69
|
+
* the SAME glyph set — the two must never drift. A drift-lock test asserts
|
|
70
|
+
* `PROGRESS_LINE_RE.source` still carries exactly `[${spinnerGlyphClass}]`.
|
|
71
|
+
*/
|
|
72
|
+
exports.spinnerGlyphClass = '✻✽✶✢·*●○';
|
|
73
|
+
/**
|
|
74
|
+
* @description Single-line regex for one Claude-CLI progress tick.
|
|
75
|
+
*
|
|
76
|
+
* Structure (each group commented):
|
|
77
|
+
*
|
|
78
|
+
* ^\s* leading whitespace (TUI indent)
|
|
79
|
+
* [✻✽✶✢·*●○] spinner glyph (full observed set)
|
|
80
|
+
* \s+\S(?:[^()\n]|\([^()\n]*\))*?… the activity text ending in U+2026
|
|
81
|
+
* ellipsis. Originally a single verb
|
|
82
|
+
* token ("Smooshing…"), then the active
|
|
83
|
+
* task title too ("Fixing streaming
|
|
84
|
+
* output overwrite…"), and the TUI now
|
|
85
|
+
* also puts parenthesised bits inside it
|
|
86
|
+
* ("Fixing relations add flow
|
|
87
|
+
* (sub-agent)…" — live flood 2026-06-11;
|
|
88
|
+
* a task title can carry its own parens
|
|
89
|
+
* too), so single-level `(…)` segments
|
|
90
|
+
* are allowed; the end-anchored stats
|
|
91
|
+
* group below stays the real anchor
|
|
92
|
+
* \s*\( stats parenthesis opens
|
|
93
|
+
* (?:\d+h\s+)?(?:\d+m\s+)?\d+s elapsed time — "13s", "4m 35s",
|
|
94
|
+
* "1h 2m 3s" (a fresh tick has no
|
|
95
|
+
* minutes yet; the old `\d+m \d+s`
|
|
96
|
+
* requirement made second-only ticks
|
|
97
|
+
* flood the topic)
|
|
98
|
+
* \s*·\s*[↑↓]\s*[\d.]+k?\s*tokens token counter, e.g. "↑ 4.4k tokens",
|
|
99
|
+
* "↓ 176 tokens"
|
|
100
|
+
* (?:\s*·[^()]*)? optional thinking-note suffix
|
|
101
|
+
* ("thought for 9s", "thinking with
|
|
102
|
+
* xhigh effort", "still thinking
|
|
103
|
+
* with xhigh effort", "thinking
|
|
104
|
+
* more with xhigh effort"). `[^()]*`
|
|
105
|
+
* refuses nested parens so a real
|
|
106
|
+
* prose sentence with parentheses
|
|
107
|
+
* cannot be mistaken for a tick.
|
|
108
|
+
* \)\s*$ stats parenthesis closes; line ends
|
|
109
|
+
*
|
|
110
|
+
* The activity text deliberately has no verb whitelist — Claude has shipped
|
|
111
|
+
* Smooshing / Actioning / Coalescing / … then task titles, then parenthesised
|
|
112
|
+
* suffixes like "(sub-agent)" inside the title; the trailing end-anchored
|
|
113
|
+
* `(time · tokens)` stats parenthesis is specific enough to carry the match
|
|
114
|
+
* on its own — the same safety argument that admitted multi-word titles
|
|
115
|
+
* (2026-06-05) covers the paren widening (2026-06-11).
|
|
116
|
+
*/
|
|
117
|
+
exports.PROGRESS_LINE_RE = /^\s*[✻✽✶✢·*●○]\s+\S(?:[^()\n]|\([^()\n]*\))*?…\s*\((?:\d+h\s+)?(?:\d+m\s+)?\d+s\s*·\s*[↑↓]\s*[\d.]+k?\s*tokens(?:\s*·[^()]*)?\)\s*$/;
|
|
118
|
+
/**
|
|
119
|
+
* @description Verb line of Claude's `/compact` (and automatic context
|
|
120
|
+
* compaction) progress. Observed shapes:
|
|
121
|
+
* `✶ Compacting conversation…` (before the timer)
|
|
122
|
+
* `✻ Compacting conversation… (1m 22s)` (elapsed time only)
|
|
123
|
+
* `· Compacting conversation… (48s · ↑ 3.1k tokens)` (time + token stats)
|
|
124
|
+
*
|
|
125
|
+
* Anchored on the literal `Compacting conversation` phrase, followed by the
|
|
126
|
+
* ellipsis and an OPTIONAL `(…)` stats parenthesis (`[^()]*` so a real prose
|
|
127
|
+
* sentence with nested parens can't stretch the match). The phrase anchor is
|
|
128
|
+
* specific enough that this line on its own is safe to treat as progress —
|
|
129
|
+
* unlike a broad `\S.*…` body, it can never collide with a real `●`-prefixed
|
|
130
|
+
* answer, so {@link checkIsProgressChunk} no longer needs a bar line to admit
|
|
131
|
+
* it (auto-compaction redraws the verb line with no bar in the diff).
|
|
132
|
+
*/
|
|
133
|
+
exports.COMPACT_LINE_RE = /^\s*[✻✽✶✢·*●○]\s+Compacting conversation…\s*(?:\([^()]*\))?\s*$/;
|
|
134
|
+
/**
|
|
135
|
+
* @description Sub-agent task line of Claude's TUI, redrawn every tick while a
|
|
136
|
+
* Task sub-agent runs, e.g.
|
|
137
|
+
* `◯ general-purpose Move styles into solClientKit 6m 50s · ↓ 120.2k tokens`
|
|
138
|
+
* optionally prefixed with the `❯` selection cursor, optionally without the
|
|
139
|
+
* trailing stats (right after the sub-agent starts, before its timer shows).
|
|
140
|
+
*
|
|
141
|
+
* Anchored on the `◯` (U+25EF) sub-agent glyph — deliberately distinct from
|
|
142
|
+
* the `○` (U+25CB) thinking spinner and the `●` (U+25CF) tool/result bullet,
|
|
143
|
+
* so a `● Bash(…)` tool call or a `○ Thinking…` tick is never mistaken for a
|
|
144
|
+
* sub-agent frame. The trailing time/token counter changes each second, which
|
|
145
|
+
* is exactly why the pane diff sees every tick as a new line and the topic
|
|
146
|
+
* floods without collapsing.
|
|
147
|
+
*/
|
|
148
|
+
exports.SUBAGENT_PROGRESS_LINE_RE = /^\s*(?:❯\s+)?◯\s+\S.*$/;
|
|
149
|
+
/**
|
|
150
|
+
* @description Progress-bar line of Claude's `/compact`, e.g.
|
|
151
|
+
* `▰▰▰▰▰▰▱▱▱▱▱▱ 15%`. A run of filled/empty bar cells (U+25B0 `▰` /
|
|
152
|
+
* U+25B1 `▱`) optionally followed by a percentage.
|
|
153
|
+
*
|
|
154
|
+
* The percentage is optional because a terminal-redraw scrape can clip the
|
|
155
|
+
* trailing `N%` mid-frame; such a fragment must still count as progress (so
|
|
156
|
+
* it never floods the topic) and {@link collapseProgressChunk} falls back to
|
|
157
|
+
* the filled-cell count for ordering it. The `{4,}` cell run is a high-signal
|
|
158
|
+
* anchor (bar cells never appear in real prose), so a bar line on its own is
|
|
159
|
+
* always treated as progress; {@link COMPACT_LINE_RE} carries its own phrase
|
|
160
|
+
* anchor and no longer relies on a bar being present.
|
|
161
|
+
*/
|
|
162
|
+
exports.PROGRESS_BAR_LINE_RE = /^\s*[▰▱]{4,}(?:\s*\d{1,3}\s*%?)?\s*$/;
|
|
163
|
+
/**
|
|
164
|
+
* @description Return `true` iff `text` consists exclusively of Claude
|
|
165
|
+
* progress lines.
|
|
166
|
+
*
|
|
167
|
+
* Splits on `\n`, drops empty / whitespace-only lines, and requires that
|
|
168
|
+
* the remaining array is non-empty **and every line matches**
|
|
169
|
+
* {@link PROGRESS_LINE_RE}. This means:
|
|
170
|
+
*
|
|
171
|
+
* - a single tick line → `true`
|
|
172
|
+
* - a 4-line burst of ticks (one verb, time advancing) → `true`
|
|
173
|
+
* - a verb-transition burst (Newspapering → Coalescing → Booping) →
|
|
174
|
+
* `true`, because every individual line still matches
|
|
175
|
+
* - a chunk that mixes a tick line with real prose → `false`, so the
|
|
176
|
+
* chunk reaches the normal output pipeline unchanged
|
|
177
|
+
* - empty string → `false` (nothing to collapse)
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* checkIsProgressChunk('✽ Smooshing… (1m 49s · ↑ 3.3k tokens)') // true
|
|
181
|
+
* checkIsProgressChunk('Sure, here is the answer…') // false
|
|
182
|
+
*/
|
|
183
|
+
/**
|
|
184
|
+
* @description One line of ANY recognised progress shape — thinking tick,
|
|
185
|
+
* sub-agent task frame, compaction verb, or compaction bar.
|
|
186
|
+
*
|
|
187
|
+
* A single predicate (not per-shape branches) because a scrape diff freely
|
|
188
|
+
* interleaves shapes: while a Task sub-agent runs, every redraw carries a
|
|
189
|
+
* `◯ <type> <title> <elapsed>` frame AND a spinner tick — the old
|
|
190
|
+
* one-shape-per-chunk branches rejected that mix, so the whole burst was
|
|
191
|
+
* misrouted as substantive output and flooded the topic (live repro
|
|
192
|
+
* 2026-06-05, thread relay of a review sub-agent).
|
|
193
|
+
*/
|
|
194
|
+
function checkIsProgressLine(line) {
|
|
195
|
+
return (exports.PROGRESS_LINE_RE.test(line) ||
|
|
196
|
+
exports.SUBAGENT_PROGRESS_LINE_RE.test(line) ||
|
|
197
|
+
exports.COMPACT_LINE_RE.test(line) ||
|
|
198
|
+
exports.PROGRESS_BAR_LINE_RE.test(line));
|
|
199
|
+
}
|
|
200
|
+
function checkIsProgressChunk(text) {
|
|
201
|
+
const lines = text.split('\n').filter(l => l.trim().length > 0);
|
|
202
|
+
if (lines.length === 0)
|
|
203
|
+
return false;
|
|
204
|
+
return lines.every(checkIsProgressLine);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* @description Parse the percentage a `/compact` bar line represents, used to
|
|
208
|
+
* pick the latest frame out of a jumbled scrape burst.
|
|
209
|
+
*
|
|
210
|
+
* Prefers the explicit trailing `N%`; falls back to counting filled bar
|
|
211
|
+
* cells (`▰`) when the percentage text was clipped from the diff.
|
|
212
|
+
*/
|
|
213
|
+
function getProgressBarPercent(line) {
|
|
214
|
+
const percentMatch = line.match(/(\d{1,3})\s*%/);
|
|
215
|
+
if (percentMatch)
|
|
216
|
+
return Number(percentMatch[1]);
|
|
217
|
+
return (line.match(/▰/g) ?? []).length;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* @description Collapse runs of 2+ whitespace (Claude's TUI right-alignment
|
|
221
|
+
* padding) down to a single space and trim — turns a heavily-padded scrape
|
|
222
|
+
* line into a compact one-liner for Telegram.
|
|
223
|
+
*/
|
|
224
|
+
function squeezeWhitespace(line) {
|
|
225
|
+
return line.replace(/\s{2,}/g, ' ').trim();
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* @description Identity of a sub-agent task line, stable across ticks: the
|
|
229
|
+
* `◯ <type> <title>` prefix with the trailing `<pad><elapsed> · ↓ <tokens>`
|
|
230
|
+
* stats removed. The pad+stats always begin with 2+ spaces followed by a
|
|
231
|
+
* digit, which the single-spaced title never contains — so cutting at the
|
|
232
|
+
* first such run drops the changing tail without touching the title.
|
|
233
|
+
*
|
|
234
|
+
* The leading `❯` selection cursor is stripped first: it hops on/off a task
|
|
235
|
+
* as the user navigates the panel, so keeping it would split one task into
|
|
236
|
+
* two rolling lines (cursored vs not) within a single burst.
|
|
237
|
+
*/
|
|
238
|
+
function getSubagentTaskIdentity(line) {
|
|
239
|
+
return squeezeWhitespace(line.replace(/^\s*❯\s+/, '').replace(/\s{2,}\d.*$/, ''));
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* @description Reduce a progress chunk (see {@link checkIsProgressChunk}) to
|
|
243
|
+
* the single most-recent frame, so the coalesced status message rolls in
|
|
244
|
+
* place instead of stacking every intermediate tick/percentage.
|
|
245
|
+
*
|
|
246
|
+
* - sub-agent frames (may be interleaved with any other shape) → the latest
|
|
247
|
+
* frame of EACH distinct task (grouped by {@link getSubagentTaskIdentity},
|
|
248
|
+
* first-seen order preserved), so a parallel fan-out shows one rolling line
|
|
249
|
+
* per sub-agent, padding squeezed. Rendered first — mirroring the TUI,
|
|
250
|
+
* which draws the task panel above the main spinner.
|
|
251
|
+
* - thinking-spinner lines → the last tick line (time only grows, scrape is
|
|
252
|
+
* in order, so "last" is "latest").
|
|
253
|
+
* - compaction lines with a bar → the highest-percentage bar line (a redraw
|
|
254
|
+
* scrape can arrive out of order, and `%` only grows, so max is the true
|
|
255
|
+
* latest) prefixed with the most recent `Compacting conversation…` verb
|
|
256
|
+
* line for context. The pair mirrors Claude's own two-line frame.
|
|
257
|
+
* - compaction lines with no bar (verb lines only) → the last verb line.
|
|
258
|
+
*
|
|
259
|
+
* Must only be called on a chunk that {@link checkIsProgressChunk} accepted.
|
|
260
|
+
*/
|
|
261
|
+
function collapseProgressChunk(text) {
|
|
262
|
+
const lines = text.split('\n').filter(l => l.trim().length > 0);
|
|
263
|
+
const collapsedParts = [];
|
|
264
|
+
// Sub-agent panel: keep the latest frame of each distinct task. A Map keyed
|
|
265
|
+
// by task identity, last write wins, preserves insertion (first-seen) order.
|
|
266
|
+
// The `❯` selection cursor is dropped from both the key and the rendered
|
|
267
|
+
// line so a task reads identically whether or not it's currently selected.
|
|
268
|
+
const subagentLines = lines.filter(line => exports.SUBAGENT_PROGRESS_LINE_RE.test(line));
|
|
269
|
+
if (subagentLines.length > 0) {
|
|
270
|
+
const latestFrameByTask = new Map();
|
|
271
|
+
for (const line of subagentLines) {
|
|
272
|
+
const frame = squeezeWhitespace(line.replace(/^\s*❯\s+/, ''));
|
|
273
|
+
latestFrameByTask.set(getSubagentTaskIdentity(line), frame);
|
|
274
|
+
}
|
|
275
|
+
collapsedParts.push(...latestFrameByTask.values());
|
|
276
|
+
}
|
|
277
|
+
// Remaining (non-sub-agent) lines: spinner ticks and/or compaction frames.
|
|
278
|
+
const spinnerAndCompactLines = lines.filter(line => !exports.SUBAGENT_PROGRESS_LINE_RE.test(line));
|
|
279
|
+
if (spinnerAndCompactLines.length > 0) {
|
|
280
|
+
const barLines = spinnerAndCompactLines.filter(line => exports.PROGRESS_BAR_LINE_RE.test(line));
|
|
281
|
+
if (barLines.length === 0) {
|
|
282
|
+
collapsedParts.push(spinnerAndCompactLines[spinnerAndCompactLines.length - 1].trim());
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
const latestBar = barLines.reduce((best, line) => getProgressBarPercent(line) >= getProgressBarPercent(best) ? line : best);
|
|
286
|
+
const verbLines = spinnerAndCompactLines.filter(line => exports.COMPACT_LINE_RE.test(line) && !exports.PROGRESS_BAR_LINE_RE.test(line));
|
|
287
|
+
const latestVerb = verbLines.length > 0 ? verbLines[verbLines.length - 1].trim() : null;
|
|
288
|
+
collapsedParts.push(latestVerb ? `${latestVerb}\n${latestBar.trim()}` : latestBar.trim());
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return collapsedParts.join('\n');
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=progressLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressLine.js","sourceRoot":"","sources":["../src/progressLine.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;;;AAqJH,oDAIC;AA2DD,sDAuCC;AAzPD;;;;;;;;GAQG;AACU,QAAA,iBAAiB,GAAG,UAAU,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACU,QAAA,gBAAgB,GAC3B,qIAAqI,CAAC;AAExI;;;;;;;;;;;;;;GAcG;AACU,QAAA,eAAe,GAC1B,iEAAiE,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACU,QAAA,yBAAyB,GAAG,wBAAwB,CAAC;AAElE;;;;;;;;;;;;GAYG;AACU,QAAA,oBAAoB,GAAG,sCAAsC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;GAmBG;AACH;;;;;;;;;;GAUG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,CACL,wBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,iCAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,uBAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,4BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACjD,IAAI,YAAY;QAAE,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,uBAAuB,CAAC,IAAY;IAC3C,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChE,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,4EAA4E;IAC5E,6EAA6E;IAC7E,yEAAyE;IACzE,2EAA2E;IAC3E,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,iCAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9D,iBAAiB,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,2EAA2E;IAC3E,MAAM,sBAAsB,GAAG,KAAK,CAAC,MAAM,CACzC,IAAI,CAAC,EAAE,CAAC,CAAC,iCAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9C,CAAC;IACF,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,4BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAC/C,qBAAqB,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACzE,CAAC;YACF,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,CAC7C,IAAI,CAAC,EAAE,CAAC,uBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,4BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CACvE,CAAC;YACF,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACxF,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
|