charness 0.0.0-stage → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +88 -0
- package/DEVELOPMENT.md +110 -0
- package/LICENSE +21 -0
- package/MIGRATION_1_TO_2.md +24 -0
- package/README.md +1196 -2
- package/dist/accessControl.d.ts +71 -0
- package/dist/accessControl.d.ts.map +1 -0
- package/dist/accessControl.js +108 -0
- package/dist/accessControl.js.map +1 -0
- package/dist/adapters/adapterEventRouting.d.ts +51 -0
- package/dist/adapters/adapterEventRouting.d.ts.map +1 -0
- package/dist/adapters/adapterEventRouting.js +74 -0
- package/dist/adapters/adapterEventRouting.js.map +1 -0
- package/dist/adapters/adapterNames.d.ts +19 -0
- package/dist/adapters/adapterNames.d.ts.map +1 -0
- package/dist/adapters/adapterNames.js +25 -0
- package/dist/adapters/adapterNames.js.map +1 -0
- package/dist/adapters/claudeCliAdapter.d.ts +1351 -0
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeCliAdapter.js +4239 -0
- package/dist/adapters/claudeCliAdapter.js.map +1 -0
- package/dist/adapters/claudeConfigDir.d.ts +40 -0
- package/dist/adapters/claudeConfigDir.d.ts.map +1 -0
- package/dist/adapters/claudeConfigDir.js +3 -0
- package/dist/adapters/claudeConfigDir.js.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +580 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.js +1891 -0
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -0
- package/dist/adapters/claudePlatformFlags.d.ts +35 -0
- package/dist/adapters/claudePlatformFlags.d.ts.map +1 -0
- package/dist/adapters/claudePlatformFlags.js +46 -0
- package/dist/adapters/claudePlatformFlags.js.map +1 -0
- package/dist/adapters/createAdapter.d.ts +260 -0
- package/dist/adapters/createAdapter.d.ts.map +1 -0
- package/dist/adapters/createAdapter.js +512 -0
- package/dist/adapters/createAdapter.js.map +1 -0
- package/dist/adapters/openCodeAdapter.d.ts +1469 -0
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
- package/dist/adapters/openCodeAdapter.js +4623 -0
- package/dist/adapters/openCodeAdapter.js.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts +28 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.js +15 -0
- package/dist/adapters/sessionLaunchDefaults.js.map +1 -0
- package/dist/adapters/terminalAdapter.d.ts +68 -0
- package/dist/adapters/terminalAdapter.d.ts.map +1 -0
- package/dist/adapters/terminalAdapter.js +371 -0
- package/dist/adapters/terminalAdapter.js.map +1 -0
- package/dist/agentLogin/agentLogin.d.ts +44 -0
- package/dist/agentLogin/agentLogin.d.ts.map +1 -0
- package/dist/agentLogin/agentLogin.js +530 -0
- package/dist/agentLogin/agentLogin.js.map +1 -0
- package/dist/agentTrigger.d.ts +28 -0
- package/dist/agentTrigger.d.ts.map +1 -0
- package/dist/agentTrigger.js +53 -0
- package/dist/agentTrigger.js.map +1 -0
- package/dist/apiErrorRetry.d.ts +214 -0
- package/dist/apiErrorRetry.d.ts.map +1 -0
- package/dist/apiErrorRetry.js +382 -0
- package/dist/apiErrorRetry.js.map +1 -0
- package/dist/apiRetryKick.d.ts +157 -0
- package/dist/apiRetryKick.d.ts.map +1 -0
- package/dist/apiRetryKick.js +174 -0
- package/dist/apiRetryKick.js.map +1 -0
- package/dist/bootClassifier.d.ts +46 -0
- package/dist/bootClassifier.d.ts.map +1 -0
- package/dist/bootClassifier.js +43 -0
- package/dist/bootClassifier.js.map +1 -0
- package/dist/bot.d.ts +207 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +11226 -0
- package/dist/bot.js.map +1 -0
- package/dist/botFileStorage.d.ts +60 -0
- package/dist/botFileStorage.d.ts.map +1 -0
- package/dist/botFileStorage.js +205 -0
- package/dist/botFileStorage.js.map +1 -0
- package/dist/cli/applyDnsFix.d.ts +7 -0
- package/dist/cli/applyDnsFix.d.ts.map +1 -0
- package/dist/cli/applyDnsFix.js +46 -0
- package/dist/cli/applyDnsFix.js.map +1 -0
- package/dist/cli/bot.d.ts +27 -0
- package/dist/cli/bot.d.ts.map +1 -0
- package/dist/cli/bot.js +98 -0
- package/dist/cli/bot.js.map +1 -0
- package/dist/cli/botEntry.d.ts +3 -0
- package/dist/cli/botEntry.d.ts.map +1 -0
- package/dist/cli/botEntry.js +11 -0
- package/dist/cli/botEntry.js.map +1 -0
- package/dist/cli/claudeProfiles.d.ts +42 -0
- package/dist/cli/claudeProfiles.d.ts.map +1 -0
- package/dist/cli/claudeProfiles.js +106 -0
- package/dist/cli/claudeProfiles.js.map +1 -0
- package/dist/cli/connectorGuards.d.ts +31 -0
- package/dist/cli/connectorGuards.d.ts.map +1 -0
- package/dist/cli/connectorGuards.js +159 -0
- package/dist/cli/connectorGuards.js.map +1 -0
- package/dist/cli/envLoader.d.ts +34 -0
- package/dist/cli/envLoader.d.ts.map +1 -0
- package/dist/cli/envLoader.js +132 -0
- package/dist/cli/envLoader.js.map +1 -0
- package/dist/cli/hot.d.ts +82 -0
- package/dist/cli/hot.d.ts.map +1 -0
- package/dist/cli/hot.js +323 -0
- package/dist/cli/hot.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +140 -0
- package/dist/cli.js.map +1 -0
- package/dist/connectors/jira/adf.d.ts +74 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -0
- package/dist/connectors/jira/adf.js +412 -0
- package/dist/connectors/jira/adf.js.map +1 -0
- package/dist/connectors/jira/agentBinaries.d.ts +14 -0
- package/dist/connectors/jira/agentBinaries.d.ts.map +1 -0
- package/dist/connectors/jira/agentBinaries.js +75 -0
- package/dist/connectors/jira/agentBinaries.js.map +1 -0
- package/dist/connectors/jira/answerSink.d.ts +59 -0
- package/dist/connectors/jira/answerSink.d.ts.map +1 -0
- package/dist/connectors/jira/answerSink.js +234 -0
- package/dist/connectors/jira/answerSink.js.map +1 -0
- package/dist/connectors/jira/attachmentDownload.d.ts +41 -0
- package/dist/connectors/jira/attachmentDownload.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentDownload.js +92 -0
- package/dist/connectors/jira/attachmentDownload.js.map +1 -0
- package/dist/connectors/jira/attachmentTool.d.ts +50 -0
- package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentTool.js +166 -0
- package/dist/connectors/jira/attachmentTool.js.map +1 -0
- package/dist/connectors/jira/client.d.ts +522 -0
- package/dist/connectors/jira/client.d.ts.map +1 -0
- package/dist/connectors/jira/client.js +491 -0
- package/dist/connectors/jira/client.js.map +1 -0
- package/dist/connectors/jira/config.d.ts +104 -0
- package/dist/connectors/jira/config.d.ts.map +1 -0
- package/dist/connectors/jira/config.js +323 -0
- package/dist/connectors/jira/config.js.map +1 -0
- package/dist/connectors/jira/configFile.d.ts +10 -0
- package/dist/connectors/jira/configFile.d.ts.map +1 -0
- package/dist/connectors/jira/configFile.js +50 -0
- package/dist/connectors/jira/configFile.js.map +1 -0
- package/dist/connectors/jira/connector.d.ts +71 -0
- package/dist/connectors/jira/connector.d.ts.map +1 -0
- package/dist/connectors/jira/connector.js +312 -0
- package/dist/connectors/jira/connector.js.map +1 -0
- package/dist/connectors/jira/contextLedger.d.ts +60 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
- package/dist/connectors/jira/contextLedger.js +196 -0
- package/dist/connectors/jira/contextLedger.js.map +1 -0
- package/dist/connectors/jira/contextPreamble.d.ts +18 -0
- package/dist/connectors/jira/contextPreamble.d.ts.map +1 -0
- package/dist/connectors/jira/contextPreamble.js +31 -0
- package/dist/connectors/jira/contextPreamble.js.map +1 -0
- package/dist/connectors/jira/inbound.d.ts +141 -0
- package/dist/connectors/jira/inbound.d.ts.map +1 -0
- package/dist/connectors/jira/inbound.js +331 -0
- package/dist/connectors/jira/inbound.js.map +1 -0
- package/dist/connectors/jira/issueBlocks.d.ts +74 -0
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
- package/dist/connectors/jira/issueBlocks.js +257 -0
- package/dist/connectors/jira/issueBlocks.js.map +1 -0
- package/dist/connectors/jira/issueContext.d.ts +31 -0
- package/dist/connectors/jira/issueContext.d.ts.map +1 -0
- package/dist/connectors/jira/issueContext.js +70 -0
- package/dist/connectors/jira/issueContext.js.map +1 -0
- package/dist/connectors/jira/issueDelta.d.ts +38 -0
- package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
- package/dist/connectors/jira/issueDelta.js +59 -0
- package/dist/connectors/jira/issueDelta.js.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts +22 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.js +105 -0
- package/dist/connectors/jira/mediaPlaceholders.js.map +1 -0
- package/dist/connectors/jira/outbound.d.ts +6 -0
- package/dist/connectors/jira/outbound.d.ts.map +1 -0
- package/dist/connectors/jira/outbound.js +38 -0
- package/dist/connectors/jira/outbound.js.map +1 -0
- package/dist/connectors/jira/prompt.d.ts +39 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -0
- package/dist/connectors/jira/prompt.js +102 -0
- package/dist/connectors/jira/prompt.js.map +1 -0
- package/dist/connectors/jira/promptSpill.d.ts +50 -0
- package/dist/connectors/jira/promptSpill.d.ts.map +1 -0
- package/dist/connectors/jira/promptSpill.js +157 -0
- package/dist/connectors/jira/promptSpill.js.map +1 -0
- package/dist/connectors/jira/promptText.d.ts +7 -0
- package/dist/connectors/jira/promptText.d.ts.map +1 -0
- package/dist/connectors/jira/promptText.js +26 -0
- package/dist/connectors/jira/promptText.js.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts +18 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.js +106 -0
- package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/jira/trigger.d.ts +54 -0
- package/dist/connectors/jira/trigger.d.ts.map +1 -0
- package/dist/connectors/jira/trigger.js +101 -0
- package/dist/connectors/jira/trigger.js.map +1 -0
- package/dist/connectors/jira/triggerLog.d.ts +53 -0
- package/dist/connectors/jira/triggerLog.d.ts.map +1 -0
- package/dist/connectors/jira/triggerLog.js +78 -0
- package/dist/connectors/jira/triggerLog.js.map +1 -0
- package/dist/connectors/jira/trustedGroup.d.ts +54 -0
- package/dist/connectors/jira/trustedGroup.d.ts.map +1 -0
- package/dist/connectors/jira/trustedGroup.js +98 -0
- package/dist/connectors/jira/trustedGroup.js.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts +58 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.js +105 -0
- package/dist/connectors/jira/unconfirmedPosts.js.map +1 -0
- package/dist/connectors/telegram/answerSink.d.ts +46 -0
- package/dist/connectors/telegram/answerSink.d.ts.map +1 -0
- package/dist/connectors/telegram/answerSink.js +71 -0
- package/dist/connectors/telegram/answerSink.js.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +34 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js +112 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -0
- package/dist/connectors/telegram/commands/botCore.d.ts +46 -0
- package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/botCore.js +3 -0
- package/dist/connectors/telegram/commands/botCore.js.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.js +13 -0
- package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -0
- package/dist/connectors/telegram/commands/claudeAccounts.d.ts +58 -0
- package/dist/connectors/telegram/commands/claudeAccounts.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/claudeAccounts.js +591 -0
- package/dist/connectors/telegram/commands/claudeAccounts.js.map +1 -0
- package/dist/connectors/telegram/commands/compaction.d.ts +47 -0
- package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/compaction.js +868 -0
- package/dist/connectors/telegram/commands/compaction.js.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts +13 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.js +335 -0
- package/dist/connectors/telegram/commands/displayModes.js.map +1 -0
- package/dist/connectors/telegram/commands/fallbackChain.d.ts +49 -0
- package/dist/connectors/telegram/commands/fallbackChain.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/fallbackChain.js +624 -0
- package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts +117 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.js +966 -0
- package/dist/connectors/telegram/commands/modelProviders.js.map +1 -0
- package/dist/connectors/telegram/commands/reminders.d.ts +54 -0
- package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/reminders.js +624 -0
- package/dist/connectors/telegram/commands/reminders.js.map +1 -0
- package/dist/connectors/telegram/fileIntake.d.ts +166 -0
- package/dist/connectors/telegram/fileIntake.d.ts.map +1 -0
- package/dist/connectors/telegram/fileIntake.js +304 -0
- package/dist/connectors/telegram/fileIntake.js.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts +57 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.js +221 -0
- package/dist/connectors/telegram/fileSendGateway.js.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts +52 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js +71 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js.map +1 -0
- package/dist/connectors/telegram/inbound.d.ts +131 -0
- package/dist/connectors/telegram/inbound.d.ts.map +1 -0
- package/dist/connectors/telegram/inbound.js +278 -0
- package/dist/connectors/telegram/inbound.js.map +1 -0
- package/dist/connectors/telegram/languagePicker.d.ts +32 -0
- package/dist/connectors/telegram/languagePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/languagePicker.js +55 -0
- package/dist/connectors/telegram/languagePicker.js.map +1 -0
- package/dist/connectors/telegram/messageSplit.d.ts +62 -0
- package/dist/connectors/telegram/messageSplit.d.ts.map +1 -0
- package/dist/connectors/telegram/messageSplit.js +119 -0
- package/dist/connectors/telegram/messageSplit.js.map +1 -0
- package/dist/connectors/telegram/outbound.d.ts +62 -0
- package/dist/connectors/telegram/outbound.d.ts.map +1 -0
- package/dist/connectors/telegram/outbound.js +116 -0
- package/dist/connectors/telegram/outbound.js.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts +34 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.js +77 -0
- package/dist/connectors/telegram/output/createOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts +47 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js +412 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts +38 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.js +49 -0
- package/dist/connectors/telegram/outputBacklogGlue.js.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts +93 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.js +120 -0
- package/dist/connectors/telegram/outputFlushPlan.js.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts +30 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.js +37 -0
- package/dist/connectors/telegram/questionKeyboards.js.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts +27 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.js +97 -0
- package/dist/connectors/telegram/renderAgentHtml.js.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts +28 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.js +107 -0
- package/dist/connectors/telegram/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts +19 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.js +35 -0
- package/dist/connectors/telegram/telegramCallGuard.js.map +1 -0
- package/dist/connectors/telegram/timezonePicker.d.ts +85 -0
- package/dist/connectors/telegram/timezonePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/timezonePicker.js +142 -0
- package/dist/connectors/telegram/timezonePicker.js.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts +85 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.js +159 -0
- package/dist/connectors/telegram/updateDispatcher.js.map +1 -0
- package/dist/connectors/test/connector.d.ts +52 -0
- package/dist/connectors/test/connector.d.ts.map +1 -0
- package/dist/connectors/test/connector.js +143 -0
- package/dist/connectors/test/connector.js.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts +25 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.js +50 -0
- package/dist/connectors/test/sessionKeyCodec.js.map +1 -0
- package/dist/diagLog.d.ts +6 -0
- package/dist/diagLog.d.ts.map +1 -0
- package/dist/diagLog.js +58 -0
- package/dist/diagLog.js.map +1 -0
- package/dist/effortLevels.d.ts +68 -0
- package/dist/effortLevels.d.ts.map +1 -0
- package/dist/effortLevels.js +114 -0
- package/dist/effortLevels.js.map +1 -0
- package/dist/folderName.d.ts +42 -0
- package/dist/folderName.d.ts.map +1 -0
- package/dist/folderName.js +51 -0
- package/dist/folderName.js.map +1 -0
- package/dist/i18n/de.d.ts +2 -0
- package/dist/i18n/de.d.ts.map +1 -0
- package/dist/i18n/de.js +665 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en.d.ts +7 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +694 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/es.d.ts +2 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +665 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/fr.d.ts +2 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +665 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/hi.d.ts +2 -0
- package/dist/i18n/hi.d.ts.map +1 -0
- package/dist/i18n/hi.js +665 -0
- package/dist/i18n/hi.js.map +1 -0
- package/dist/i18n/ja.d.ts +2 -0
- package/dist/i18n/ja.d.ts.map +1 -0
- package/dist/i18n/ja.js +665 -0
- package/dist/i18n/ja.js.map +1 -0
- package/dist/i18n/ka.d.ts +2 -0
- package/dist/i18n/ka.d.ts.map +1 -0
- package/dist/i18n/ka.js +665 -0
- package/dist/i18n/ka.js.map +1 -0
- package/dist/i18n/pt.d.ts +2 -0
- package/dist/i18n/pt.d.ts.map +1 -0
- package/dist/i18n/pt.js +665 -0
- package/dist/i18n/pt.js.map +1 -0
- package/dist/i18n/ru.d.ts +6 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +668 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/i18n/uk.d.ts +8 -0
- package/dist/i18n/uk.d.ts.map +1 -0
- package/dist/i18n/uk.js +670 -0
- package/dist/i18n/uk.js.map +1 -0
- package/dist/i18n/uz.d.ts +2 -0
- package/dist/i18n/uz.d.ts.map +1 -0
- package/dist/i18n/uz.js +665 -0
- package/dist/i18n/uz.js.map +1 -0
- package/dist/i18n/zh.d.ts +2 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +665 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/i18n.d.ts +115 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +233 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/installManager.d.ts +99 -0
- package/dist/installManager.d.ts.map +1 -0
- package/dist/installManager.js +943 -0
- package/dist/installManager.js.map +1 -0
- package/dist/instanceLock.d.ts +161 -0
- package/dist/instanceLock.d.ts.map +1 -0
- package/dist/instanceLock.js +388 -0
- package/dist/instanceLock.js.map +1 -0
- package/dist/mcpConfig.d.ts +76 -0
- package/dist/mcpConfig.d.ts.map +1 -0
- package/dist/mcpConfig.js +270 -0
- package/dist/mcpConfig.js.map +1 -0
- package/dist/openCodeOpenQuestion.d.ts +44 -0
- package/dist/openCodeOpenQuestion.d.ts.map +1 -0
- package/dist/openCodeOpenQuestion.js +64 -0
- package/dist/openCodeOpenQuestion.js.map +1 -0
- package/dist/openCodeQuestionFlow.d.ts +105 -0
- package/dist/openCodeQuestionFlow.d.ts.map +1 -0
- package/dist/openCodeQuestionFlow.js +143 -0
- package/dist/openCodeQuestionFlow.js.map +1 -0
- package/dist/openCodeSessionRouting.d.ts +133 -0
- package/dist/openCodeSessionRouting.d.ts.map +1 -0
- package/dist/openCodeSessionRouting.js +253 -0
- package/dist/openCodeSessionRouting.js.map +1 -0
- package/dist/openCodeSessionTitle.d.ts +50 -0
- package/dist/openCodeSessionTitle.d.ts.map +1 -0
- package/dist/openCodeSessionTitle.js +84 -0
- package/dist/openCodeSessionTitle.js.map +1 -0
- package/dist/outputTrace.d.ts +108 -0
- package/dist/outputTrace.d.ts.map +1 -0
- package/dist/outputTrace.js +430 -0
- package/dist/outputTrace.js.map +1 -0
- package/dist/pendingQuestionRepost.d.ts +47 -0
- package/dist/pendingQuestionRepost.d.ts.map +1 -0
- package/dist/pendingQuestionRepost.js +29 -0
- package/dist/pendingQuestionRepost.js.map +1 -0
- package/dist/pinnedStatus.d.ts +52 -0
- package/dist/pinnedStatus.d.ts.map +1 -0
- package/dist/pinnedStatus.js +36 -0
- package/dist/pinnedStatus.js.map +1 -0
- package/dist/platform/answerSink.d.ts +93 -0
- package/dist/platform/answerSink.d.ts.map +1 -0
- package/dist/platform/answerSink.js +31 -0
- package/dist/platform/answerSink.js.map +1 -0
- package/dist/platform/capabilityFallback.d.ts +39 -0
- package/dist/platform/capabilityFallback.d.ts.map +1 -0
- package/dist/platform/capabilityFallback.js +55 -0
- package/dist/platform/capabilityFallback.js.map +1 -0
- package/dist/platform/commandRouter.d.ts +51 -0
- package/dist/platform/commandRouter.d.ts.map +1 -0
- package/dist/platform/commandRouter.js +53 -0
- package/dist/platform/commandRouter.js.map +1 -0
- package/dist/platform/connectorSet.d.ts +39 -0
- package/dist/platform/connectorSet.d.ts.map +1 -0
- package/dist/platform/connectorSet.js +55 -0
- package/dist/platform/connectorSet.js.map +1 -0
- package/dist/platform/inbound.d.ts +147 -0
- package/dist/platform/inbound.d.ts.map +1 -0
- package/dist/platform/inbound.js +18 -0
- package/dist/platform/inbound.js.map +1 -0
- package/dist/platform/outbound.d.ts +225 -0
- package/dist/platform/outbound.d.ts.map +1 -0
- package/dist/platform/outbound.js +30 -0
- package/dist/platform/outbound.js.map +1 -0
- package/dist/platform/unservedStateGuard.d.ts +27 -0
- package/dist/platform/unservedStateGuard.d.ts.map +1 -0
- package/dist/platform/unservedStateGuard.js +42 -0
- package/dist/platform/unservedStateGuard.js.map +1 -0
- package/dist/postToSession.d.ts +94 -0
- package/dist/postToSession.d.ts.map +1 -0
- package/dist/postToSession.js +56 -0
- package/dist/postToSession.js.map +1 -0
- package/dist/progressLine.d.ts +180 -0
- package/dist/progressLine.d.ts.map +1 -0
- package/dist/progressLine.js +293 -0
- package/dist/progressLine.js.map +1 -0
- package/dist/rateLimiter.d.ts +246 -0
- package/dist/rateLimiter.d.ts.map +1 -0
- package/dist/rateLimiter.js +555 -0
- package/dist/rateLimiter.js.map +1 -0
- package/dist/requests/answerRequest.d.ts +57 -0
- package/dist/requests/answerRequest.d.ts.map +1 -0
- package/dist/requests/answerRequest.js +96 -0
- package/dist/requests/answerRequest.js.map +1 -0
- package/dist/requests/answerTail.d.ts +83 -0
- package/dist/requests/answerTail.d.ts.map +1 -0
- package/dist/requests/answerTail.js +102 -0
- package/dist/requests/answerTail.js.map +1 -0
- package/dist/requests/limitWaitAnswer.d.ts +87 -0
- package/dist/requests/limitWaitAnswer.d.ts.map +1 -0
- package/dist/requests/limitWaitAnswer.js +83 -0
- package/dist/requests/limitWaitAnswer.js.map +1 -0
- package/dist/requests/requestGroup.d.ts +44 -0
- package/dist/requests/requestGroup.d.ts.map +1 -0
- package/dist/requests/requestGroup.js +63 -0
- package/dist/requests/requestGroup.js.map +1 -0
- package/dist/requests/requestHeader.d.ts +70 -0
- package/dist/requests/requestHeader.d.ts.map +1 -0
- package/dist/requests/requestHeader.js +83 -0
- package/dist/requests/requestHeader.js.map +1 -0
- package/dist/requests/requestLedger.d.ts +217 -0
- package/dist/requests/requestLedger.d.ts.map +1 -0
- package/dist/requests/requestLedger.js +468 -0
- package/dist/requests/requestLedger.js.map +1 -0
- package/dist/requests/sessionTurnProbe.d.ts +52 -0
- package/dist/requests/sessionTurnProbe.d.ts.map +1 -0
- package/dist/requests/sessionTurnProbe.js +29 -0
- package/dist/requests/sessionTurnProbe.js.map +1 -0
- package/dist/requests/types.d.ts +181 -0
- package/dist/requests/types.d.ts.map +1 -0
- package/dist/requests/types.js +9 -0
- package/dist/requests/types.js.map +1 -0
- package/dist/requests/wakeUpEngine.d.ts +160 -0
- package/dist/requests/wakeUpEngine.d.ts.map +1 -0
- package/dist/requests/wakeUpEngine.js +399 -0
- package/dist/requests/wakeUpEngine.js.map +1 -0
- package/dist/requests/wakeUpRules.d.ts +151 -0
- package/dist/requests/wakeUpRules.d.ts.map +1 -0
- package/dist/requests/wakeUpRules.js +167 -0
- package/dist/requests/wakeUpRules.js.map +1 -0
- package/dist/resumeContext.d.ts +87 -0
- package/dist/resumeContext.d.ts.map +1 -0
- package/dist/resumeContext.js +114 -0
- package/dist/resumeContext.js.map +1 -0
- package/dist/scheduler/checkRun.d.ts +95 -0
- package/dist/scheduler/checkRun.d.ts.map +1 -0
- package/dist/scheduler/checkRun.js +172 -0
- package/dist/scheduler/checkRun.js.map +1 -0
- package/dist/scheduler/delivery.d.ts +99 -0
- package/dist/scheduler/delivery.d.ts.map +1 -0
- package/dist/scheduler/delivery.js +212 -0
- package/dist/scheduler/delivery.js.map +1 -0
- package/dist/scheduler/deliveryKind.d.ts +29 -0
- package/dist/scheduler/deliveryKind.d.ts.map +1 -0
- package/dist/scheduler/deliveryKind.js +39 -0
- package/dist/scheduler/deliveryKind.js.map +1 -0
- package/dist/scheduler/directoryThreads.d.ts +19 -0
- package/dist/scheduler/directoryThreads.d.ts.map +1 -0
- package/dist/scheduler/directoryThreads.js +28 -0
- package/dist/scheduler/directoryThreads.js.map +1 -0
- package/dist/scheduler/engine.d.ts +77 -0
- package/dist/scheduler/engine.d.ts.map +1 -0
- package/dist/scheduler/engine.js +337 -0
- package/dist/scheduler/engine.js.map +1 -0
- package/dist/scheduler/injection.d.ts +102 -0
- package/dist/scheduler/injection.d.ts.map +1 -0
- package/dist/scheduler/injection.js +122 -0
- package/dist/scheduler/injection.js.map +1 -0
- package/dist/scheduler/mcpBoot.d.ts +65 -0
- package/dist/scheduler/mcpBoot.d.ts.map +1 -0
- package/dist/scheduler/mcpBoot.js +60 -0
- package/dist/scheduler/mcpBoot.js.map +1 -0
- package/dist/scheduler/mcpSurface.d.ts +363 -0
- package/dist/scheduler/mcpSurface.d.ts.map +1 -0
- package/dist/scheduler/mcpSurface.js +1297 -0
- package/dist/scheduler/mcpSurface.js.map +1 -0
- package/dist/scheduler/rebindResume.d.ts +27 -0
- package/dist/scheduler/rebindResume.d.ts.map +1 -0
- package/dist/scheduler/rebindResume.js +17 -0
- package/dist/scheduler/rebindResume.js.map +1 -0
- package/dist/scheduler/recurrence.d.ts +58 -0
- package/dist/scheduler/recurrence.d.ts.map +1 -0
- package/dist/scheduler/recurrence.js +210 -0
- package/dist/scheduler/recurrence.js.map +1 -0
- package/dist/scheduler/runLedger.d.ts +59 -0
- package/dist/scheduler/runLedger.d.ts.map +1 -0
- package/dist/scheduler/runLedger.js +54 -0
- package/dist/scheduler/runLedger.js.map +1 -0
- package/dist/scheduler/store.d.ts +97 -0
- package/dist/scheduler/store.d.ts.map +1 -0
- package/dist/scheduler/store.js +124 -0
- package/dist/scheduler/store.js.map +1 -0
- package/dist/scheduler/timezoneRecompute.d.ts +61 -0
- package/dist/scheduler/timezoneRecompute.d.ts.map +1 -0
- package/dist/scheduler/timezoneRecompute.js +46 -0
- package/dist/scheduler/timezoneRecompute.js.map +1 -0
- package/dist/scheduler/types.d.ts +139 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +8 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/sendErrorClassifier.d.ts +45 -0
- package/dist/sendErrorClassifier.d.ts.map +1 -0
- package/dist/sendErrorClassifier.js +65 -0
- package/dist/sendErrorClassifier.js.map +1 -0
- package/dist/sessionKey.d.ts +136 -0
- package/dist/sessionKey.d.ts.map +1 -0
- package/dist/sessionKey.js +153 -0
- package/dist/sessionKey.js.map +1 -0
- package/dist/sessionPick.d.ts +42 -0
- package/dist/sessionPick.d.ts.map +1 -0
- package/dist/sessionPick.js +39 -0
- package/dist/sessionPick.js.map +1 -0
- package/dist/shutdown.d.ts +126 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +164 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/startupPromptBuffer.d.ts +85 -0
- package/dist/startupPromptBuffer.d.ts.map +1 -0
- package/dist/startupPromptBuffer.js +123 -0
- package/dist/startupPromptBuffer.js.map +1 -0
- package/dist/state.d.ts +1416 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +2128 -0
- package/dist/state.js.map +1 -0
- package/dist/threadContextPreamble.d.ts +89 -0
- package/dist/threadContextPreamble.d.ts.map +1 -0
- package/dist/threadContextPreamble.js +102 -0
- package/dist/threadContextPreamble.js.map +1 -0
- package/dist/threadRouting.d.ts +164 -0
- package/dist/threadRouting.d.ts.map +1 -0
- package/dist/threadRouting.js +182 -0
- package/dist/threadRouting.js.map +1 -0
- package/dist/types.d.ts +1022 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/abortableFifo.d.ts +10 -0
- package/dist/utils/abortableFifo.d.ts.map +1 -0
- package/dist/utils/abortableFifo.js +55 -0
- package/dist/utils/abortableFifo.js.map +1 -0
- package/dist/utils/adoptedToolList.d.ts +27 -0
- package/dist/utils/adoptedToolList.d.ts.map +1 -0
- package/dist/utils/adoptedToolList.js +22 -0
- package/dist/utils/adoptedToolList.js.map +1 -0
- package/dist/utils/agentEnvironment.d.ts +42 -0
- package/dist/utils/agentEnvironment.d.ts.map +1 -0
- package/dist/utils/agentEnvironment.js +122 -0
- package/dist/utils/agentEnvironment.js.map +1 -0
- package/dist/utils/ansiClean.d.ts +11 -0
- package/dist/utils/ansiClean.d.ts.map +1 -0
- package/dist/utils/ansiClean.js +139 -0
- package/dist/utils/ansiClean.js.map +1 -0
- package/dist/utils/autoContinueOnLimit.d.ts +56 -0
- package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
- package/dist/utils/autoContinueOnLimit.js +79 -0
- package/dist/utils/autoContinueOnLimit.js.map +1 -0
- package/dist/utils/canonicalPathContainment.d.ts +7 -0
- package/dist/utils/canonicalPathContainment.d.ts.map +1 -0
- package/dist/utils/canonicalPathContainment.js +48 -0
- package/dist/utils/canonicalPathContainment.js.map +1 -0
- package/dist/utils/claudeAccountPickerPlan.d.ts +85 -0
- package/dist/utils/claudeAccountPickerPlan.d.ts.map +1 -0
- package/dist/utils/claudeAccountPickerPlan.js +123 -0
- package/dist/utils/claudeAccountPickerPlan.js.map +1 -0
- package/dist/utils/claudeAuthLogin.d.ts +71 -0
- package/dist/utils/claudeAuthLogin.d.ts.map +1 -0
- package/dist/utils/claudeAuthLogin.js +93 -0
- package/dist/utils/claudeAuthLogin.js.map +1 -0
- package/dist/utils/claudeChunkClassifier.d.ts +97 -0
- package/dist/utils/claudeChunkClassifier.d.ts.map +1 -0
- package/dist/utils/claudeChunkClassifier.js +254 -0
- package/dist/utils/claudeChunkClassifier.js.map +1 -0
- package/dist/utils/claudeCodeVersion.d.ts +31 -0
- package/dist/utils/claudeCodeVersion.d.ts.map +1 -0
- package/dist/utils/claudeCodeVersion.js +62 -0
- package/dist/utils/claudeCodeVersion.js.map +1 -0
- package/dist/utils/claudeCompactHook.d.ts +64 -0
- package/dist/utils/claudeCompactHook.d.ts.map +1 -0
- package/dist/utils/claudeCompactHook.js +98 -0
- package/dist/utils/claudeCompactHook.js.map +1 -0
- package/dist/utils/claudeLimitSwitch.d.ts +40 -0
- package/dist/utils/claudeLimitSwitch.d.ts.map +1 -0
- package/dist/utils/claudeLimitSwitch.js +54 -0
- package/dist/utils/claudeLimitSwitch.js.map +1 -0
- package/dist/utils/claudeLivenessAction.d.ts +208 -0
- package/dist/utils/claudeLivenessAction.d.ts.map +1 -0
- package/dist/utils/claudeLivenessAction.js +135 -0
- package/dist/utils/claudeLivenessAction.js.map +1 -0
- package/dist/utils/claudeMcpHeal.d.ts +92 -0
- package/dist/utils/claudeMcpHeal.d.ts.map +1 -0
- package/dist/utils/claudeMcpHeal.js +91 -0
- package/dist/utils/claudeMcpHeal.js.map +1 -0
- package/dist/utils/claudeProfileUsageLines.d.ts +15 -0
- package/dist/utils/claudeProfileUsageLines.d.ts.map +1 -0
- package/dist/utils/claudeProfileUsageLines.js +42 -0
- package/dist/utils/claudeProfileUsageLines.js.map +1 -0
- package/dist/utils/claudeProfiles.d.ts +117 -0
- package/dist/utils/claudeProfiles.d.ts.map +1 -0
- package/dist/utils/claudeProfiles.js +285 -0
- package/dist/utils/claudeProfiles.js.map +1 -0
- package/dist/utils/claudeRelayRouting.d.ts +86 -0
- package/dist/utils/claudeRelayRouting.d.ts.map +1 -0
- package/dist/utils/claudeRelayRouting.js +159 -0
- package/dist/utils/claudeRelayRouting.js.map +1 -0
- package/dist/utils/claudeRuntimeInfo.d.ts +26 -0
- package/dist/utils/claudeRuntimeInfo.d.ts.map +1 -0
- package/dist/utils/claudeRuntimeInfo.js +151 -0
- package/dist/utils/claudeRuntimeInfo.js.map +1 -0
- package/dist/utils/claudeScrapeShapes.d.ts +256 -0
- package/dist/utils/claudeScrapeShapes.d.ts.map +1 -0
- package/dist/utils/claudeScrapeShapes.js +290 -0
- package/dist/utils/claudeScrapeShapes.js.map +1 -0
- package/dist/utils/claudeSessionTitle.d.ts +27 -0
- package/dist/utils/claudeSessionTitle.d.ts.map +1 -0
- package/dist/utils/claudeSessionTitle.js +90 -0
- package/dist/utils/claudeSessionTitle.js.map +1 -0
- package/dist/utils/claudeStreamJson.d.ts +214 -0
- package/dist/utils/claudeStreamJson.d.ts.map +1 -0
- package/dist/utils/claudeStreamJson.js +364 -0
- package/dist/utils/claudeStreamJson.js.map +1 -0
- package/dist/utils/claudeSubagentTail.d.ts +93 -0
- package/dist/utils/claudeSubagentTail.d.ts.map +1 -0
- package/dist/utils/claudeSubagentTail.js +136 -0
- package/dist/utils/claudeSubagentTail.js.map +1 -0
- package/dist/utils/claudeUsage.d.ts +209 -0
- package/dist/utils/claudeUsage.d.ts.map +1 -0
- package/dist/utils/claudeUsage.js +413 -0
- package/dist/utils/claudeUsage.js.map +1 -0
- package/dist/utils/claudeUsageRefresher.d.ts +44 -0
- package/dist/utils/claudeUsageRefresher.d.ts.map +1 -0
- package/dist/utils/claudeUsageRefresher.js +95 -0
- package/dist/utils/claudeUsageRefresher.js.map +1 -0
- package/dist/utils/clearThreadOutputQueues.d.ts +43 -0
- package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -0
- package/dist/utils/clearThreadOutputQueues.js +39 -0
- package/dist/utils/clearThreadOutputQueues.js.map +1 -0
- package/dist/utils/compactCommandRoute.d.ts +45 -0
- package/dist/utils/compactCommandRoute.d.ts.map +1 -0
- package/dist/utils/compactCommandRoute.js +36 -0
- package/dist/utils/compactCommandRoute.js.map +1 -0
- package/dist/utils/compactOnIdle.d.ts +329 -0
- package/dist/utils/compactOnIdle.d.ts.map +1 -0
- package/dist/utils/compactOnIdle.js +379 -0
- package/dist/utils/compactOnIdle.js.map +1 -0
- package/dist/utils/consoleFileTap.d.ts +51 -0
- package/dist/utils/consoleFileTap.d.ts.map +1 -0
- package/dist/utils/consoleFileTap.js +86 -0
- package/dist/utils/consoleFileTap.js.map +1 -0
- package/dist/utils/displayVerbosity.d.ts +44 -0
- package/dist/utils/displayVerbosity.d.ts.map +1 -0
- package/dist/utils/displayVerbosity.js +75 -0
- package/dist/utils/displayVerbosity.js.map +1 -0
- package/dist/utils/download.d.ts +72 -0
- package/dist/utils/download.d.ts.map +1 -0
- package/dist/utils/download.js +216 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/draftFinalize.d.ts +110 -0
- package/dist/utils/draftFinalize.d.ts.map +1 -0
- package/dist/utils/draftFinalize.js +100 -0
- package/dist/utils/draftFinalize.js.map +1 -0
- package/dist/utils/draftId.d.ts +36 -0
- package/dist/utils/draftId.d.ts.map +1 -0
- package/dist/utils/draftId.js +46 -0
- package/dist/utils/draftId.js.map +1 -0
- package/dist/utils/draftPacer.d.ts +72 -0
- package/dist/utils/draftPacer.d.ts.map +1 -0
- package/dist/utils/draftPacer.js +53 -0
- package/dist/utils/draftPacer.js.map +1 -0
- package/dist/utils/effortStartupKeystroke.d.ts +20 -0
- package/dist/utils/effortStartupKeystroke.d.ts.map +1 -0
- package/dist/utils/effortStartupKeystroke.js +28 -0
- package/dist/utils/effortStartupKeystroke.js.map +1 -0
- package/dist/utils/ensureSessionPlan.d.ts +70 -0
- package/dist/utils/ensureSessionPlan.d.ts.map +1 -0
- package/dist/utils/ensureSessionPlan.js +54 -0
- package/dist/utils/ensureSessionPlan.js.map +1 -0
- package/dist/utils/fallbackBridge.d.ts +32 -0
- package/dist/utils/fallbackBridge.d.ts.map +1 -0
- package/dist/utils/fallbackBridge.js +62 -0
- package/dist/utils/fallbackBridge.js.map +1 -0
- package/dist/utils/fallbackChain.d.ts +299 -0
- package/dist/utils/fallbackChain.d.ts.map +1 -0
- package/dist/utils/fallbackChain.js +542 -0
- package/dist/utils/fallbackChain.js.map +1 -0
- package/dist/utils/fileSendPlan.d.ts +217 -0
- package/dist/utils/fileSendPlan.d.ts.map +1 -0
- package/dist/utils/fileSendPlan.js +291 -0
- package/dist/utils/fileSendPlan.js.map +1 -0
- package/dist/utils/fileSendService.d.ts +94 -0
- package/dist/utils/fileSendService.d.ts.map +1 -0
- package/dist/utils/fileSendService.js +387 -0
- package/dist/utils/fileSendService.js.map +1 -0
- package/dist/utils/groupFinalizePlan.d.ts +38 -0
- package/dist/utils/groupFinalizePlan.d.ts.map +1 -0
- package/dist/utils/groupFinalizePlan.js +35 -0
- package/dist/utils/groupFinalizePlan.js.map +1 -0
- package/dist/utils/identicalOutputGuard.d.ts +83 -0
- package/dist/utils/identicalOutputGuard.d.ts.map +1 -0
- package/dist/utils/identicalOutputGuard.js +99 -0
- package/dist/utils/identicalOutputGuard.js.map +1 -0
- package/dist/utils/isoTimestamp.d.ts +16 -0
- package/dist/utils/isoTimestamp.d.ts.map +1 -0
- package/dist/utils/isoTimestamp.js +34 -0
- package/dist/utils/isoTimestamp.js.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts +130 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.js +122 -0
- package/dist/utils/jsonStreamBusyWatchdog.js.map +1 -0
- package/dist/utils/jsonStreamHost.d.ts +238 -0
- package/dist/utils/jsonStreamHost.d.ts.map +1 -0
- package/dist/utils/jsonStreamHost.js +438 -0
- package/dist/utils/jsonStreamHost.js.map +1 -0
- package/dist/utils/keyedTransitionQueue.d.ts +18 -0
- package/dist/utils/keyedTransitionQueue.d.ts.map +1 -0
- package/dist/utils/keyedTransitionQueue.js +34 -0
- package/dist/utils/keyedTransitionQueue.js.map +1 -0
- package/dist/utils/limitEpisodeRecovery.d.ts +92 -0
- package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -0
- package/dist/utils/limitEpisodeRecovery.js +133 -0
- package/dist/utils/limitEpisodeRecovery.js.map +1 -0
- package/dist/utils/limitHeldPromptQueue.d.ts +48 -0
- package/dist/utils/limitHeldPromptQueue.d.ts.map +1 -0
- package/dist/utils/limitHeldPromptQueue.js +59 -0
- package/dist/utils/limitHeldPromptQueue.js.map +1 -0
- package/dist/utils/limitHeldPrompts.d.ts +58 -0
- package/dist/utils/limitHeldPrompts.d.ts.map +1 -0
- package/dist/utils/limitHeldPrompts.js +65 -0
- package/dist/utils/limitHeldPrompts.js.map +1 -0
- package/dist/utils/linkPreviewSuppression.d.ts +18 -0
- package/dist/utils/linkPreviewSuppression.d.ts.map +1 -0
- package/dist/utils/linkPreviewSuppression.js +37 -0
- package/dist/utils/linkPreviewSuppression.js.map +1 -0
- package/dist/utils/localClock.d.ts +15 -0
- package/dist/utils/localClock.d.ts.map +1 -0
- package/dist/utils/localClock.js +29 -0
- package/dist/utils/localClock.js.map +1 -0
- package/dist/utils/markdownTableRender.d.ts +83 -0
- package/dist/utils/markdownTableRender.d.ts.map +1 -0
- package/dist/utils/markdownTableRender.js +298 -0
- package/dist/utils/markdownTableRender.js.map +1 -0
- package/dist/utils/mediaGroupCollector.d.ts +51 -0
- package/dist/utils/mediaGroupCollector.d.ts.map +1 -0
- package/dist/utils/mediaGroupCollector.js +90 -0
- package/dist/utils/mediaGroupCollector.js.map +1 -0
- package/dist/utils/messageSendService.d.ts +136 -0
- package/dist/utils/messageSendService.d.ts.map +1 -0
- package/dist/utils/messageSendService.js +165 -0
- package/dist/utils/messageSendService.js.map +1 -0
- package/dist/utils/minutesOverride.d.ts +7 -0
- package/dist/utils/minutesOverride.d.ts.map +1 -0
- package/dist/utils/minutesOverride.js +16 -0
- package/dist/utils/minutesOverride.js.map +1 -0
- package/dist/utils/modelPickerPlan.d.ts +119 -0
- package/dist/utils/modelPickerPlan.d.ts.map +1 -0
- package/dist/utils/modelPickerPlan.js +171 -0
- package/dist/utils/modelPickerPlan.js.map +1 -0
- package/dist/utils/modelRecentPlan.d.ts +56 -0
- package/dist/utils/modelRecentPlan.d.ts.map +1 -0
- package/dist/utils/modelRecentPlan.js +107 -0
- package/dist/utils/modelRecentPlan.js.map +1 -0
- package/dist/utils/modelSetReplyDecision.d.ts +67 -0
- package/dist/utils/modelSetReplyDecision.d.ts.map +1 -0
- package/dist/utils/modelSetReplyDecision.js +27 -0
- package/dist/utils/modelSetReplyDecision.js.map +1 -0
- package/dist/utils/openCodeAuthLogin.d.ts +181 -0
- package/dist/utils/openCodeAuthLogin.d.ts.map +1 -0
- package/dist/utils/openCodeAuthLogin.js +393 -0
- package/dist/utils/openCodeAuthLogin.js.map +1 -0
- package/dist/utils/openCodeCompactPlugin.d.ts +81 -0
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -0
- package/dist/utils/openCodeCompactPlugin.js +146 -0
- package/dist/utils/openCodeCompactPlugin.js.map +1 -0
- package/dist/utils/openCodeTurnActivity.d.ts +67 -0
- package/dist/utils/openCodeTurnActivity.d.ts.map +1 -0
- package/dist/utils/openCodeTurnActivity.js +27 -0
- package/dist/utils/openCodeTurnActivity.js.map +1 -0
- package/dist/utils/outputDebounce.d.ts +24 -0
- package/dist/utils/outputDebounce.d.ts.map +1 -0
- package/dist/utils/outputDebounce.js +30 -0
- package/dist/utils/outputDebounce.js.map +1 -0
- package/dist/utils/outputFlushTiming.d.ts +54 -0
- package/dist/utils/outputFlushTiming.d.ts.map +1 -0
- package/dist/utils/outputFlushTiming.js +48 -0
- package/dist/utils/outputFlushTiming.js.map +1 -0
- package/dist/utils/paginateList.d.ts +25 -0
- package/dist/utils/paginateList.d.ts.map +1 -0
- package/dist/utils/paginateList.js +32 -0
- package/dist/utils/paginateList.js.map +1 -0
- package/dist/utils/paneDiff.d.ts +55 -0
- package/dist/utils/paneDiff.d.ts.map +1 -0
- package/dist/utils/paneDiff.js +88 -0
- package/dist/utils/paneDiff.js.map +1 -0
- package/dist/utils/paneResizeGuard.d.ts +69 -0
- package/dist/utils/paneResizeGuard.d.ts.map +1 -0
- package/dist/utils/paneResizeGuard.js +91 -0
- package/dist/utils/paneResizeGuard.js.map +1 -0
- package/dist/utils/persistAdapterSessionIds.d.ts +39 -0
- package/dist/utils/persistAdapterSessionIds.d.ts.map +1 -0
- package/dist/utils/persistAdapterSessionIds.js +28 -0
- package/dist/utils/persistAdapterSessionIds.js.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts +44 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.js +20 -0
- package/dist/utils/pinnedBannerSkipDecision.js.map +1 -0
- package/dist/utils/pollBackoff.d.ts +45 -0
- package/dist/utils/pollBackoff.d.ts.map +1 -0
- package/dist/utils/pollBackoff.js +44 -0
- package/dist/utils/pollBackoff.js.map +1 -0
- package/dist/utils/promptDelivery.d.ts +46 -0
- package/dist/utils/promptDelivery.d.ts.map +1 -0
- package/dist/utils/promptDelivery.js +49 -0
- package/dist/utils/promptDelivery.js.map +1 -0
- package/dist/utils/providerDisconnectPlan.d.ts +82 -0
- package/dist/utils/providerDisconnectPlan.d.ts.map +1 -0
- package/dist/utils/providerDisconnectPlan.js +110 -0
- package/dist/utils/providerDisconnectPlan.js.map +1 -0
- package/dist/utils/rateLimitLog.d.ts +48 -0
- package/dist/utils/rateLimitLog.d.ts.map +1 -0
- package/dist/utils/rateLimitLog.js +43 -0
- package/dist/utils/rateLimitLog.js.map +1 -0
- package/dist/utils/recentRelayWindow.d.ts +165 -0
- package/dist/utils/recentRelayWindow.d.ts.map +1 -0
- package/dist/utils/recentRelayWindow.js +284 -0
- package/dist/utils/recentRelayWindow.js.map +1 -0
- package/dist/utils/recvPreviewRedaction.d.ts +23 -0
- package/dist/utils/recvPreviewRedaction.d.ts.map +1 -0
- package/dist/utils/recvPreviewRedaction.js +39 -0
- package/dist/utils/recvPreviewRedaction.js.map +1 -0
- package/dist/utils/reminderFlow.d.ts +148 -0
- package/dist/utils/reminderFlow.d.ts.map +1 -0
- package/dist/utils/reminderFlow.js +122 -0
- package/dist/utils/reminderFlow.js.map +1 -0
- package/dist/utils/reminderScheduleText.d.ts +87 -0
- package/dist/utils/reminderScheduleText.d.ts.map +1 -0
- package/dist/utils/reminderScheduleText.js +135 -0
- package/dist/utils/reminderScheduleText.js.map +1 -0
- package/dist/utils/reminderWizard.d.ts +710 -0
- package/dist/utils/reminderWizard.d.ts.map +1 -0
- package/dist/utils/reminderWizard.js +1164 -0
- package/dist/utils/reminderWizard.js.map +1 -0
- package/dist/utils/replyQuote.d.ts +111 -0
- package/dist/utils/replyQuote.d.ts.map +1 -0
- package/dist/utils/replyQuote.js +122 -0
- package/dist/utils/replyQuote.js.map +1 -0
- package/dist/utils/resolveBinary.d.ts +25 -0
- package/dist/utils/resolveBinary.d.ts.map +1 -0
- package/dist/utils/resolveBinary.js +99 -0
- package/dist/utils/resolveBinary.js.map +1 -0
- package/dist/utils/retryAfterHeader.d.ts +7 -0
- package/dist/utils/retryAfterHeader.d.ts.map +1 -0
- package/dist/utils/retryAfterHeader.js +17 -0
- package/dist/utils/retryAfterHeader.js.map +1 -0
- package/dist/utils/rotatingJsonlFile.d.ts +40 -0
- package/dist/utils/rotatingJsonlFile.d.ts.map +1 -0
- package/dist/utils/rotatingJsonlFile.js +106 -0
- package/dist/utils/rotatingJsonlFile.js.map +1 -0
- package/dist/utils/rotatingLogFile.d.ts +25 -0
- package/dist/utils/rotatingLogFile.d.ts.map +1 -0
- package/dist/utils/rotatingLogFile.js +74 -0
- package/dist/utils/rotatingLogFile.js.map +1 -0
- package/dist/utils/sendRateTracker.d.ts +59 -0
- package/dist/utils/sendRateTracker.d.ts.map +1 -0
- package/dist/utils/sendRateTracker.js +144 -0
- package/dist/utils/sendRateTracker.js.map +1 -0
- package/dist/utils/serialQueue.d.ts +5 -0
- package/dist/utils/serialQueue.d.ts.map +1 -0
- package/dist/utils/serialQueue.js +14 -0
- package/dist/utils/serialQueue.js.map +1 -0
- package/dist/utils/sseStreamLifecycle.d.ts +32 -0
- package/dist/utils/sseStreamLifecycle.d.ts.map +1 -0
- package/dist/utils/sseStreamLifecycle.js +41 -0
- package/dist/utils/sseStreamLifecycle.js.map +1 -0
- package/dist/utils/startupReadiness.d.ts +119 -0
- package/dist/utils/startupReadiness.d.ts.map +1 -0
- package/dist/utils/startupReadiness.js +148 -0
- package/dist/utils/startupReadiness.js.map +1 -0
- package/dist/utils/statusFlushDecision.d.ts +18 -0
- package/dist/utils/statusFlushDecision.d.ts.map +1 -0
- package/dist/utils/statusFlushDecision.js +53 -0
- package/dist/utils/statusFlushDecision.js.map +1 -0
- package/dist/utils/subagentRender.d.ts +52 -0
- package/dist/utils/subagentRender.d.ts.map +1 -0
- package/dist/utils/subagentRender.js +66 -0
- package/dist/utils/subagentRender.js.map +1 -0
- package/dist/utils/subagentStatusRender.d.ts +90 -0
- package/dist/utils/subagentStatusRender.d.ts.map +1 -0
- package/dist/utils/subagentStatusRender.js +124 -0
- package/dist/utils/subagentStatusRender.js.map +1 -0
- package/dist/utils/telegramError.d.ts +2 -0
- package/dist/utils/telegramError.d.ts.map +1 -0
- package/dist/utils/telegramError.js +16 -0
- package/dist/utils/telegramError.js.map +1 -0
- package/dist/utils/terminalEmitPlan.d.ts +74 -0
- package/dist/utils/terminalEmitPlan.d.ts.map +1 -0
- package/dist/utils/terminalEmitPlan.js +86 -0
- package/dist/utils/terminalEmitPlan.js.map +1 -0
- package/dist/utils/thinkingRender.d.ts +74 -0
- package/dist/utils/thinkingRender.d.ts.map +1 -0
- package/dist/utils/thinkingRender.js +85 -0
- package/dist/utils/thinkingRender.js.map +1 -0
- package/dist/utils/threadStatusReport.d.ts +79 -0
- package/dist/utils/threadStatusReport.d.ts.map +1 -0
- package/dist/utils/threadStatusReport.js +88 -0
- package/dist/utils/threadStatusReport.js.map +1 -0
- package/dist/utils/threadToggle.d.ts +29 -0
- package/dist/utils/threadToggle.d.ts.map +1 -0
- package/dist/utils/threadToggle.js +39 -0
- package/dist/utils/threadToggle.js.map +1 -0
- package/dist/utils/timezone.d.ts +125 -0
- package/dist/utils/timezone.d.ts.map +1 -0
- package/dist/utils/timezone.js +278 -0
- package/dist/utils/timezone.js.map +1 -0
- package/dist/utils/tmuxExec.d.ts +61 -0
- package/dist/utils/tmuxExec.d.ts.map +1 -0
- package/dist/utils/tmuxExec.js +109 -0
- package/dist/utils/tmuxExec.js.map +1 -0
- package/dist/utils/tmuxSessionName.d.ts +34 -0
- package/dist/utils/tmuxSessionName.d.ts.map +1 -0
- package/dist/utils/tmuxSessionName.js +51 -0
- package/dist/utils/tmuxSessionName.js.map +1 -0
- package/dist/utils/toolResultRender.d.ts +61 -0
- package/dist/utils/toolResultRender.d.ts.map +1 -0
- package/dist/utils/toolResultRender.js +62 -0
- package/dist/utils/toolResultRender.js.map +1 -0
- package/dist/utils/topicRequest.d.ts +61 -0
- package/dist/utils/topicRequest.d.ts.map +1 -0
- package/dist/utils/topicRequest.js +68 -0
- package/dist/utils/topicRequest.js.map +1 -0
- package/dist/utils/topicView.d.ts +55 -0
- package/dist/utils/topicView.d.ts.map +1 -0
- package/dist/utils/topicView.js +56 -0
- package/dist/utils/topicView.js.map +1 -0
- package/dist/utils/transcribeAudio.d.ts +89 -0
- package/dist/utils/transcribeAudio.d.ts.map +1 -0
- package/dist/utils/transcribeAudio.js +249 -0
- package/dist/utils/transcribeAudio.js.map +1 -0
- package/dist/utils/transientFrames.d.ts +52 -0
- package/dist/utils/transientFrames.d.ts.map +1 -0
- package/dist/utils/transientFrames.js +41 -0
- package/dist/utils/transientFrames.js.map +1 -0
- package/dist/utils/typingActive.d.ts +35 -0
- package/dist/utils/typingActive.d.ts.map +1 -0
- package/dist/utils/typingActive.js +22 -0
- package/dist/utils/typingActive.js.map +1 -0
- package/dist/utils/typingLoopBackstop.d.ts +64 -0
- package/dist/utils/typingLoopBackstop.d.ts.map +1 -0
- package/dist/utils/typingLoopBackstop.js +68 -0
- package/dist/utils/typingLoopBackstop.js.map +1 -0
- package/dist/utils/verbosityRender.d.ts +18 -0
- package/dist/utils/verbosityRender.d.ts.map +1 -0
- package/dist/utils/verbosityRender.js +17 -0
- package/dist/utils/verbosityRender.js.map +1 -0
- package/dist/utils/wedgeRecovery.d.ts +57 -0
- package/dist/utils/wedgeRecovery.d.ts.map +1 -0
- package/dist/utils/wedgeRecovery.js +24 -0
- package/dist/utils/wedgeRecovery.js.map +1 -0
- package/dist/utils.d.ts +30 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +61 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.d.ts +113 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +226 -0
- package/dist/validation.js.map +1 -0
- package/dist/voiceQueue.d.ts +7 -0
- package/dist/voiceQueue.d.ts.map +1 -0
- package/dist/voiceQueue.js +33 -0
- package/dist/voiceQueue.js.map +1 -0
- package/examples/.env.example +17 -0
- package/examples/docker-compose.yml +36 -0
- package/package.json +83 -4
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Pure layer behind the boot recovery of a usage/session-limit
|
|
4
|
+
* episode that ENDED BEFORE the bot restarted.
|
|
5
|
+
*
|
|
6
|
+
* An ARMED retry survives a restart on its own (`state.json` `apiRetries`,
|
|
7
|
+
* re-armed after reattach). An UNRECOGNISED limit error leaves nothing behind —
|
|
8
|
+
* so a topic whose agent died on a limit before the detector understood that
|
|
9
|
+
* wording just sits there, and a bot update alone does not resume it. This module
|
|
10
|
+
* reads the evidence the json-stream Claude backend leaves on disk (the terminal
|
|
11
|
+
* `result` frame at the end of its `stdout.jsonl`) and decides whether the bot
|
|
12
|
+
* should arm the limit wait itself.
|
|
13
|
+
*
|
|
14
|
+
* V1 IS JSON-STREAM ONLY, by evidence availability: the tmux-scrape backend keeps
|
|
15
|
+
* its history only in a tmux pane (already repainted by adopt time) and OpenCode's
|
|
16
|
+
* error lives in a transient SSE event, so neither has a comparable on-disk tail
|
|
17
|
+
* to re-read. Those backends recover the normal way — the next live error fires
|
|
18
|
+
* the detector.
|
|
19
|
+
*
|
|
20
|
+
* Only the decisions live here; the fs read and the `handleApiError` call stay in
|
|
21
|
+
* `bot.ts` (the apiErrorRetry pure-layer / manager split).
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.limitEpisodeMaxAgeMs = exports.limitEpisodeTailMaxBytes = void 0;
|
|
25
|
+
exports.getLastTerminalErrorText = getLastTerminalErrorText;
|
|
26
|
+
exports.decideLimitEpisodeRecovery = decideLimitEpisodeRecovery;
|
|
27
|
+
const apiErrorRetry_1 = require("../apiErrorRetry");
|
|
28
|
+
const claudeStreamJson_1 = require("./claudeStreamJson");
|
|
29
|
+
/**
|
|
30
|
+
* How much of a session's `stdout.jsonl` to read when hunting the last terminal
|
|
31
|
+
* frame. The log holds a whole session's events and can reach hundreds of MB, so
|
|
32
|
+
* only the tail is read — the terminal `result` frame is by definition the last
|
|
33
|
+
* thing written. A torn first line is simply skipped by the NDJSON parser.
|
|
34
|
+
*/
|
|
35
|
+
exports.limitEpisodeTailMaxBytes = 64 * 1024;
|
|
36
|
+
/**
|
|
37
|
+
* Max age of the stdout log for its trailing error to still count as "the episode
|
|
38
|
+
* the topic is stuck on". Older than this and the topic has moved on (or the limit
|
|
39
|
+
* window is long expired), so resurrecting it would push an unexpected prompt into
|
|
40
|
+
* a quiet topic.
|
|
41
|
+
*/
|
|
42
|
+
exports.limitEpisodeMaxAgeMs = 12 * 60 * 60 * 1000;
|
|
43
|
+
/**
|
|
44
|
+
* @description The error text the session is PARKED on, read out of a stdout
|
|
45
|
+
* tail: the last terminal `result` frame's error, or `null` when the tail ends on
|
|
46
|
+
* a healthy turn, holds no terminal frame, or shows the session moving on after
|
|
47
|
+
* the error. Reuses the adapter's own NDJSON parse + message classifier, so "what
|
|
48
|
+
* counts as a terminal error and where its text lives" has exactly one definition.
|
|
49
|
+
*
|
|
50
|
+
* Anything real written AFTER the error — the echo of a message sent to the
|
|
51
|
+
* session, the agent's text, thinking or tool frames — clears the verdict, though
|
|
52
|
+
* the turn it belongs to has no terminal frame yet. That is what a limit resume
|
|
53
|
+
* leaves in the log: the bot's own "continue" nudge and the work on it. A topic
|
|
54
|
+
* with that tail is not stuck on the old error, and re-arming it at a restart
|
|
55
|
+
* in the middle of that turn would resume the same episode a second time.
|
|
56
|
+
*
|
|
57
|
+
* Only the PARENT session's frames count. A terminal `result` ends the parent
|
|
58
|
+
* turn, so the one thing that can still write after it without a resume is a
|
|
59
|
+
* background sub-agent finishing its own work (`parent_tool_use_id` set); a
|
|
60
|
+
* resume always starts with the parent's own frames (the nudge's echo first), so
|
|
61
|
+
* leaving the sub-agent's out loses nothing and keeps a parked topic parked.
|
|
62
|
+
*/
|
|
63
|
+
function getLastTerminalErrorText(tailText) {
|
|
64
|
+
let lastErrorText = null;
|
|
65
|
+
for (const line of tailText.split('\n')) {
|
|
66
|
+
const parsed = (0, claudeStreamJson_1.parseStreamJsonLine)(line);
|
|
67
|
+
if (!parsed)
|
|
68
|
+
continue; // blank, or the tail's torn first line
|
|
69
|
+
for (const action of (0, claudeStreamJson_1.classifyClaudeStreamMessage)(parsed)) {
|
|
70
|
+
if (action.kind === 'turnEnd') {
|
|
71
|
+
// A later healthy turn CLEARS the verdict — the session recovered.
|
|
72
|
+
lastErrorText = action.isError ? action.errorText : null;
|
|
73
|
+
}
|
|
74
|
+
else if (checkIsSessionActivity(action)) {
|
|
75
|
+
lastErrorText = null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return lastErrorText;
|
|
80
|
+
}
|
|
81
|
+
/** Frames that only a running PARENT session writes (not the ambient rate-limit /
|
|
82
|
+
* status ones, and not a sub-agent's — see {@link getLastTerminalErrorText}). */
|
|
83
|
+
function checkIsSessionActivity(action) {
|
|
84
|
+
if (action.kind === 'userEcho')
|
|
85
|
+
return true;
|
|
86
|
+
if (action.kind === 'textDelta' || action.kind === 'thinkingDelta' || action.kind === 'toolUse' || action.kind === 'toolResult') {
|
|
87
|
+
return !action.isSubagent;
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* @description Whether this thread's trailing error is the one a previous boot
|
|
93
|
+
* already acted on: the log is byte-for-byte the same file, at the same mtime, as
|
|
94
|
+
* when the marker was written. Nothing has happened since, so re-arming would
|
|
95
|
+
* resurrect a wait that was already settled — skipped by «⏭ Skip once», by a user
|
|
96
|
+
* takeover, or by the retry giving up. Both fields must match; any real turn
|
|
97
|
+
* appends frames and changes them, so a genuinely NEW trailing error still arms.
|
|
98
|
+
* This matters on every code change, because hot mode reloads the bot.
|
|
99
|
+
*/
|
|
100
|
+
function checkIsSameHandledLog(handled, log) {
|
|
101
|
+
if (!handled)
|
|
102
|
+
return false;
|
|
103
|
+
return handled.sizeBytes === log.sizeBytes && handled.mtimeMs === log.mtimeMs;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* @description Decide whether a session's trailing error should re-arm a limit
|
|
107
|
+
* wait at boot. Deliberately strict — every guard exists to keep a boot from
|
|
108
|
+
* pushing a surprise prompt into a topic:
|
|
109
|
+
* - only when no persisted retry record already covers the thread (that one is
|
|
110
|
+
* re-armed by the normal restore path — arming twice would double-notice);
|
|
111
|
+
* - only when the log CHANGED since the episode a previous boot already handled
|
|
112
|
+
* ({@link checkIsSameHandledLog});
|
|
113
|
+
* - only the `usageLimit` class (a transient error is long past by restart time,
|
|
114
|
+
* and an `auth` error needs a human, not a wait);
|
|
115
|
+
* - only when the log is younger than {@link limitEpisodeMaxAgeMs}.
|
|
116
|
+
* A `resetAt` already in the past needs no special case: the retry plan clamps a
|
|
117
|
+
* negative delay to zero and the boot arming turns that into one prompt catch-up.
|
|
118
|
+
*/
|
|
119
|
+
function decideLimitEpisodeRecovery(input) {
|
|
120
|
+
if (input.hasArmedRetry)
|
|
121
|
+
return { action: 'skip', reason: 'alreadyArmed' };
|
|
122
|
+
if (checkIsSameHandledLog(input.handled, input.log))
|
|
123
|
+
return { action: 'skip', reason: 'alreadyHandled' };
|
|
124
|
+
if (!input.errorText)
|
|
125
|
+
return { action: 'skip', reason: 'noError' };
|
|
126
|
+
if (input.now - input.log.mtimeMs > exports.limitEpisodeMaxAgeMs)
|
|
127
|
+
return { action: 'skip', reason: 'stale' };
|
|
128
|
+
const cls = (0, apiErrorRetry_1.classifyAgentApiError)(input.errorText, input.now);
|
|
129
|
+
if (cls?.kind !== 'usageLimit')
|
|
130
|
+
return { action: 'skip', reason: 'notUsageLimit' };
|
|
131
|
+
return { action: 'arm', cls };
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=limitEpisodeRecovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitEpisodeRecovery.js","sourceRoot":"","sources":["../../src/utils/limitEpisodeRecovery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AA0CH,4DAeC;AA8CD,gEAgBC;AArHD,oDAAyD;AACzD,yDAA+G;AAG/G;;;;;GAKG;AACU,QAAA,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD;;;;;GAKG;AACU,QAAA,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,wBAAwB,CAAC,QAAgB;IACvD,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,SAAS,CAAC,uCAAuC;QAC9D,KAAK,MAAM,MAAM,IAAI,IAAA,8CAA2B,EAAC,MAAM,CAAC,EAAE,CAAC;YACzD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,mEAAmE;gBACnE,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,CAAC;iBAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1C,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;kFACkF;AAClF,SAAS,sBAAsB,CAAC,MAA0B;IACxD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAQD;;;;;;;;GAQG;AACH,SAAS,qBAAqB,CAAC,OAAuC,EAAE,GAAuB;IAC7F,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,OAAO,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,0BAA0B,CAAC,KAQ1C;IACC,IAAI,KAAK,CAAC,aAAa;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC3E,IAAI,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACzG,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACnE,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,4BAAoB;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACrG,MAAM,GAAG,GAAG,IAAA,qCAAqB,EAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9D,IAAI,GAAG,EAAE,IAAI,KAAK,YAAY;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACnF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type SessionKey } from '../sessionKey';
|
|
2
|
+
import { type LimitHeldPrompt } from './limitHeldPrompts';
|
|
3
|
+
/**
|
|
4
|
+
* @name LimitHeldPromptStore
|
|
5
|
+
* @description Where held prompts live — `state.json`, per conversation, apart
|
|
6
|
+
* from the retry record: the wait can end without its resume (the operator
|
|
7
|
+
* writes, skips or disables it, the session ends) and the prompts must outlive it.
|
|
8
|
+
* Both calls are synchronous, so a take is atomic within one turn of the loop.
|
|
9
|
+
*/
|
|
10
|
+
export interface LimitHeldPromptStore {
|
|
11
|
+
getLimitHeldPrompts: (key: SessionKey) => LimitHeldPrompt[];
|
|
12
|
+
setLimitHeldPrompts: (key: SessionKey, prompts: readonly LimitHeldPrompt[]) => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @name LimitHeldPromptQueueDeps
|
|
16
|
+
* @description `checkIsLimitWaitArmed` — whether `key` waits out an ARMED usage
|
|
17
|
+
* limit right now (a fired record is history, not a wait).
|
|
18
|
+
*/
|
|
19
|
+
export interface LimitHeldPromptQueueDeps {
|
|
20
|
+
store: LimitHeldPromptStore;
|
|
21
|
+
checkIsLimitWaitArmed: (key: SessionKey) => boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @description The held prompts of usage-limit waits (Jira plan R23): held
|
|
25
|
+
* while a wait is armed, released — never dropped — once none is: after the
|
|
26
|
+
* next prompt forwarded to the conversation's session (the resume's, the
|
|
27
|
+
* operator's next message, a later post), or on their own when a session starts.
|
|
28
|
+
*/
|
|
29
|
+
export declare class LimitHeldPromptQueue {
|
|
30
|
+
private readonly deps;
|
|
31
|
+
constructor(deps: LimitHeldPromptQueueDeps);
|
|
32
|
+
/**
|
|
33
|
+
* @description Hold `text` while a usage-limit wait is armed; `false` — none is,
|
|
34
|
+
* post as usual. `heldText` is what it says when it arrives late (R27), when that
|
|
35
|
+
* differs; the run itself is identified by `text`.
|
|
36
|
+
*/
|
|
37
|
+
holdPrompt(key: SessionKey, text: string, heldText?: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* @description `text` about to be forwarded to the session, with the held
|
|
40
|
+
* prompts after it — and they are no longer held. Unchanged while a wait is
|
|
41
|
+
* still armed or nothing is held.
|
|
42
|
+
*/
|
|
43
|
+
releaseWithForward(key: SessionKey, text: string): string;
|
|
44
|
+
/** @description The held prompts as one message for a session that has nothing else to forward; `null` — none, or still held. */
|
|
45
|
+
releaseAll(key: SessionKey): string | null;
|
|
46
|
+
private takeHeldPrompts;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=limitHeldPromptQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitHeldPromptQueue.d.ts","sourceRoot":"","sources":["../../src/utils/limitHeldPromptQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAuF,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE/I;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,eAAe,EAAE,CAAC;IAC5D,mBAAmB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,eAAe,EAAE,KAAK,IAAI,CAAC;CACrF;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,qBAAqB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC;CACrD;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,wBAAwB;IAE3D;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAYrE;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAKzD,iIAAiI;IACjI,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAI1C,OAAO,CAAC,eAAe;CAQxB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LimitHeldPromptQueue = void 0;
|
|
4
|
+
const sessionKey_1 = require("../sessionKey");
|
|
5
|
+
const limitHeldPrompts_1 = require("./limitHeldPrompts");
|
|
6
|
+
/**
|
|
7
|
+
* @description The held prompts of usage-limit waits (Jira plan R23): held
|
|
8
|
+
* while a wait is armed, released — never dropped — once none is: after the
|
|
9
|
+
* next prompt forwarded to the conversation's session (the resume's, the
|
|
10
|
+
* operator's next message, a later post), or on their own when a session starts.
|
|
11
|
+
*/
|
|
12
|
+
class LimitHeldPromptQueue {
|
|
13
|
+
deps;
|
|
14
|
+
constructor(deps) {
|
|
15
|
+
this.deps = deps;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* @description Hold `text` while a usage-limit wait is armed; `false` — none is,
|
|
19
|
+
* post as usual. `heldText` is what it says when it arrives late (R27), when that
|
|
20
|
+
* differs; the run itself is identified by `text`.
|
|
21
|
+
*/
|
|
22
|
+
holdPrompt(key, text, heldText) {
|
|
23
|
+
if (!this.deps.checkIsLimitWaitArmed(key))
|
|
24
|
+
return false;
|
|
25
|
+
const prompt = heldText === undefined || heldText === text ? { text } : { text, heldText };
|
|
26
|
+
const { held, droppedCount } = (0, limitHeldPrompts_1.getHeldPromptsWith)(this.deps.store.getLimitHeldPrompts(key), prompt);
|
|
27
|
+
if (droppedCount > 0) {
|
|
28
|
+
console.warn(`[limitHeld] ${(0, sessionKey_1.keyToString)(key)}: ${droppedCount} oldest held prompt(s) dropped (at most ${limitHeldPrompts_1.limitHeldPromptsMax})`);
|
|
29
|
+
}
|
|
30
|
+
this.deps.store.setLimitHeldPrompts(key, held);
|
|
31
|
+
console.log(`[limitHeld] ${(0, sessionKey_1.keyToString)(key)}: prompt held until the usage-limit wait ends (${held.length} held)`);
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @description `text` about to be forwarded to the session, with the held
|
|
36
|
+
* prompts after it — and they are no longer held. Unchanged while a wait is
|
|
37
|
+
* still armed or nothing is held.
|
|
38
|
+
*/
|
|
39
|
+
releaseWithForward(key, text) {
|
|
40
|
+
const held = this.takeHeldPrompts(key);
|
|
41
|
+
return held.length > 0 ? (0, limitHeldPrompts_1.getTextWithHeldPrompts)(text, held) : text;
|
|
42
|
+
}
|
|
43
|
+
/** @description The held prompts as one message for a session that has nothing else to forward; `null` — none, or still held. */
|
|
44
|
+
releaseAll(key) {
|
|
45
|
+
return (0, limitHeldPrompts_1.getHeldPromptsText)(this.takeHeldPrompts(key));
|
|
46
|
+
}
|
|
47
|
+
takeHeldPrompts(key) {
|
|
48
|
+
if (this.deps.checkIsLimitWaitArmed(key))
|
|
49
|
+
return [];
|
|
50
|
+
const held = this.deps.store.getLimitHeldPrompts(key);
|
|
51
|
+
if (held.length === 0)
|
|
52
|
+
return [];
|
|
53
|
+
this.deps.store.setLimitHeldPrompts(key, []);
|
|
54
|
+
console.log(`[limitHeld] ${(0, sessionKey_1.keyToString)(key)}: ${held.length} held prompt(s) released`);
|
|
55
|
+
return held;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.LimitHeldPromptQueue = LimitHeldPromptQueue;
|
|
59
|
+
//# sourceMappingURL=limitHeldPromptQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitHeldPromptQueue.js","sourceRoot":"","sources":["../../src/utils/limitHeldPromptQueue.ts"],"names":[],"mappings":";;;AAAA,8CAA6D;AAC7D,yDAA+I;AAwB/I;;;;;GAKG;AACH,MAAa,oBAAoB;IACF;IAA7B,YAA6B,IAA8B;QAA9B,SAAI,GAAJ,IAAI,CAA0B;IAAG,CAAC;IAE/D;;;;OAIG;IACH,UAAU,CAAC,GAAe,EAAE,IAAY,EAAE,QAAiB;QACzD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACxD,MAAM,MAAM,GAAoB,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5G,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAA,qCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACpG,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,eAAe,IAAA,wBAAW,EAAC,GAAG,CAAC,KAAK,YAAY,2CAA2C,sCAAmB,GAAG,CAAC,CAAC;QAClI,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,eAAe,IAAA,wBAAW,EAAC,GAAG,CAAC,kDAAkD,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC;QAClH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,GAAe,EAAE,IAAY;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,yCAAsB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAED,iIAAiI;IACjI,UAAU,CAAC,GAAe;QACxB,OAAO,IAAA,qCAAkB,EAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,eAAe,CAAC,GAAe;QACrC,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,IAAA,wBAAW,EAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,0BAA0B,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA3CD,oDA2CC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Prompts that arrived during an armed usage-limit wait (Jira plan
|
|
3
|
+
* R23): posting them would only run into the limit again, so they are HELD and
|
|
4
|
+
* delivered once nothing holds them any more. They are never dropped: they ride
|
|
5
|
+
* the first prompt forwarded after the wait — its resume, the operator's next
|
|
6
|
+
* message, a later post — or, when a new session starts with nothing to
|
|
7
|
+
* forward, go to it on their own. The scheduler's fire and a tracker's request
|
|
8
|
+
* share the hold through `postToSession`.
|
|
9
|
+
*/
|
|
10
|
+
/** Held per conversation at most; a scheduler firing all through a long wait must not flood the resume. */
|
|
11
|
+
export declare const limitHeldPromptsMax = 10;
|
|
12
|
+
/**
|
|
13
|
+
* @name LimitHeldPrompt
|
|
14
|
+
* @description A prompt held over a usage-limit wait. `text` is the prompt as it
|
|
15
|
+
* is posted at once — two holds of the same `text` are the same run; `heldText`,
|
|
16
|
+
* when it differs, is what the prompt says once it arrives late (R27: a scheduled
|
|
17
|
+
* run names when it was due).
|
|
18
|
+
*/
|
|
19
|
+
export interface LimitHeldPrompt {
|
|
20
|
+
text: string;
|
|
21
|
+
heldText?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @description `held` with `prompt` added, the oldest dropped past {@link limitHeldPromptsMax}.
|
|
25
|
+
* A prompt whose `text` is already held is not added again — a recurring job
|
|
26
|
+
* firing all through a long wait runs once after it, like the scheduler's one
|
|
27
|
+
* catch-up for missed runs, and says when it was FIRST due, as the catch-up does.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getHeldPromptsWith(held: readonly LimitHeldPrompt[], prompt: LimitHeldPrompt): {
|
|
30
|
+
held: LimitHeldPrompt[];
|
|
31
|
+
droppedCount: number;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* @description The forwarded `text` with the held prompts after it, in arrival
|
|
35
|
+
* order — one message, so nothing can slip between them. A held copy of `text`
|
|
36
|
+
* itself is not repeated: it is being delivered right now.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getTextWithHeldPrompts(text: string, held: readonly LimitHeldPrompt[]): string;
|
|
39
|
+
/**
|
|
40
|
+
* @description The held prompts as one message, for a session that starts with
|
|
41
|
+
* nothing else to forward; `null` when nothing is held.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getHeldPromptsText(held: readonly LimitHeldPrompt[]): string | null;
|
|
44
|
+
/**
|
|
45
|
+
* @description What the resume of a usage-limit wait forwards: the open
|
|
46
|
+
* request's prompt when the agent never took it in (R21 — it arrived during the
|
|
47
|
+
* wait, or its post failed), else the "continue" nudge, which resumes the turn
|
|
48
|
+
* the limit interrupted. Held prompts are not part of it: they ride whichever is
|
|
49
|
+
* forwarded. `isRequestPrompt` — the turn carries the request's prompt.
|
|
50
|
+
*/
|
|
51
|
+
export declare function getLimitResumeMessage(input: {
|
|
52
|
+
continueNudge: string;
|
|
53
|
+
untakenRequestPrompt: string | undefined;
|
|
54
|
+
}): {
|
|
55
|
+
text: string;
|
|
56
|
+
isRequestPrompt: boolean;
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=limitHeldPrompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitHeldPrompts.d.ts","sourceRoot":"","sources":["../../src/utils/limitHeldPrompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,2GAA2G;AAC3G,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAItC;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,eAAe,EAAE,EAChC,MAAM,EAAE,eAAe,GACtB;IAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAKnD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAE7F;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,GAAG,IAAI,CAElF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAI7C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Prompts that arrived during an armed usage-limit wait (Jira plan
|
|
4
|
+
* R23): posting them would only run into the limit again, so they are HELD and
|
|
5
|
+
* delivered once nothing holds them any more. They are never dropped: they ride
|
|
6
|
+
* the first prompt forwarded after the wait — its resume, the operator's next
|
|
7
|
+
* message, a later post — or, when a new session starts with nothing to
|
|
8
|
+
* forward, go to it on their own. The scheduler's fire and a tracker's request
|
|
9
|
+
* share the hold through `postToSession`.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.limitHeldPromptsMax = void 0;
|
|
13
|
+
exports.getHeldPromptsWith = getHeldPromptsWith;
|
|
14
|
+
exports.getTextWithHeldPrompts = getTextWithHeldPrompts;
|
|
15
|
+
exports.getHeldPromptsText = getHeldPromptsText;
|
|
16
|
+
exports.getLimitResumeMessage = getLimitResumeMessage;
|
|
17
|
+
/** Held per conversation at most; a scheduler firing all through a long wait must not flood the resume. */
|
|
18
|
+
exports.limitHeldPromptsMax = 10;
|
|
19
|
+
/** Between two prompts delivered as one: each carries its own header. */
|
|
20
|
+
const heldPromptSeparator = '\n\n';
|
|
21
|
+
/** What a held prompt says when it is finally delivered. */
|
|
22
|
+
function getDeliveredText(prompt) {
|
|
23
|
+
return prompt.heldText ?? prompt.text;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @description `held` with `prompt` added, the oldest dropped past {@link limitHeldPromptsMax}.
|
|
27
|
+
* A prompt whose `text` is already held is not added again — a recurring job
|
|
28
|
+
* firing all through a long wait runs once after it, like the scheduler's one
|
|
29
|
+
* catch-up for missed runs, and says when it was FIRST due, as the catch-up does.
|
|
30
|
+
*/
|
|
31
|
+
function getHeldPromptsWith(held, prompt) {
|
|
32
|
+
if (held.some((heldPrompt) => heldPrompt.text === prompt.text))
|
|
33
|
+
return { held: [...held], droppedCount: 0 };
|
|
34
|
+
const next = [...held, prompt];
|
|
35
|
+
const droppedCount = Math.max(0, next.length - exports.limitHeldPromptsMax);
|
|
36
|
+
return { held: next.slice(droppedCount), droppedCount };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @description The forwarded `text` with the held prompts after it, in arrival
|
|
40
|
+
* order — one message, so nothing can slip between them. A held copy of `text`
|
|
41
|
+
* itself is not repeated: it is being delivered right now.
|
|
42
|
+
*/
|
|
43
|
+
function getTextWithHeldPrompts(text, held) {
|
|
44
|
+
return [text, ...held.filter((prompt) => prompt.text !== text).map(getDeliveredText)].join(heldPromptSeparator);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @description The held prompts as one message, for a session that starts with
|
|
48
|
+
* nothing else to forward; `null` when nothing is held.
|
|
49
|
+
*/
|
|
50
|
+
function getHeldPromptsText(held) {
|
|
51
|
+
return held.length > 0 ? held.map(getDeliveredText).join(heldPromptSeparator) : null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* @description What the resume of a usage-limit wait forwards: the open
|
|
55
|
+
* request's prompt when the agent never took it in (R21 — it arrived during the
|
|
56
|
+
* wait, or its post failed), else the "continue" nudge, which resumes the turn
|
|
57
|
+
* the limit interrupted. Held prompts are not part of it: they ride whichever is
|
|
58
|
+
* forwarded. `isRequestPrompt` — the turn carries the request's prompt.
|
|
59
|
+
*/
|
|
60
|
+
function getLimitResumeMessage(input) {
|
|
61
|
+
return input.untakenRequestPrompt === undefined
|
|
62
|
+
? { text: input.continueNudge, isRequestPrompt: false }
|
|
63
|
+
: { text: input.untakenRequestPrompt, isRequestPrompt: true };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=limitHeldPrompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitHeldPrompts.js","sourceRoot":"","sources":["../../src/utils/limitHeldPrompts.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA8BH,gDAQC;AAOD,wDAEC;AAMD,gDAEC;AASD,sDAOC;AArED,2GAA2G;AAC9F,QAAA,mBAAmB,GAAG,EAAE,CAAC;AACtC,yEAAyE;AACzE,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAcnC,4DAA4D;AAC5D,SAAS,gBAAgB,CAAC,MAAuB;IAC/C,OAAO,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,IAAgC,EAChC,MAAuB;IAEvB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC5G,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,2BAAmB,CAAC,CAAC;IACpE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,IAAY,EAAE,IAAgC;IACnF,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAClH,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,IAAgC;IACjE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvF,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,KAGrC;IACC,OAAO,KAAK,CAAC,oBAAoB,KAAK,SAAS;QAC7C,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE;QACvD,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,oBAAoB,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CallApiHost } from '../outputTrace';
|
|
2
|
+
/**
|
|
3
|
+
* @description Default a text-message API payload to NO link preview by
|
|
4
|
+
* injecting `link_preview_options: { is_disabled: true }`. Pure — returns the
|
|
5
|
+
* payload to send. A caller that already set `link_preview_options` (or the
|
|
6
|
+
* legacy `disable_web_page_preview`) wins; we only supply the default when
|
|
7
|
+
* neither is present, and leave non-text methods untouched.
|
|
8
|
+
*/
|
|
9
|
+
export declare function applyLinkPreviewSuppression(method: string, payload: object): object;
|
|
10
|
+
/**
|
|
11
|
+
* @description Wrap `telegram.callApi` so every text message / edit the bot
|
|
12
|
+
* sends defaults to NO link preview. Operator complaint: each agent message
|
|
13
|
+
* containing a URL expanded into a large preview card, one per message, in the
|
|
14
|
+
* muted topic. Installed once at boot alongside `installCallApiTrace`, and
|
|
15
|
+
* OUTSIDE it (installed after) so the trace records the payload actually sent.
|
|
16
|
+
*/
|
|
17
|
+
export declare function installLinkPreviewSuppression(host: CallApiHost): void;
|
|
18
|
+
//# sourceMappingURL=linkPreviewSuppression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkPreviewSuppression.d.ts","sourceRoot":"","sources":["../../src/utils/linkPreviewSuppression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AASlD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKnF;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAIrE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyLinkPreviewSuppression = applyLinkPreviewSuppression;
|
|
4
|
+
exports.installLinkPreviewSuppression = installLinkPreviewSuppression;
|
|
5
|
+
/**
|
|
6
|
+
* Bot API methods whose payload can carry `link_preview_options`. A media send
|
|
7
|
+
* (`sendPhoto`/`sendVideo`/…) does not expand a standalone URL preview card, so
|
|
8
|
+
* only the text-message methods are rewritten.
|
|
9
|
+
*/
|
|
10
|
+
const linkPreviewMethods = new Set(['sendMessage', 'editMessageText']);
|
|
11
|
+
/**
|
|
12
|
+
* @description Default a text-message API payload to NO link preview by
|
|
13
|
+
* injecting `link_preview_options: { is_disabled: true }`. Pure — returns the
|
|
14
|
+
* payload to send. A caller that already set `link_preview_options` (or the
|
|
15
|
+
* legacy `disable_web_page_preview`) wins; we only supply the default when
|
|
16
|
+
* neither is present, and leave non-text methods untouched.
|
|
17
|
+
*/
|
|
18
|
+
function applyLinkPreviewSuppression(method, payload) {
|
|
19
|
+
if (!linkPreviewMethods.has(method))
|
|
20
|
+
return payload;
|
|
21
|
+
const base = payload;
|
|
22
|
+
if ('link_preview_options' in base || 'disable_web_page_preview' in base)
|
|
23
|
+
return payload;
|
|
24
|
+
return { ...base, link_preview_options: { is_disabled: true } };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @description Wrap `telegram.callApi` so every text message / edit the bot
|
|
28
|
+
* sends defaults to NO link preview. Operator complaint: each agent message
|
|
29
|
+
* containing a URL expanded into a large preview card, one per message, in the
|
|
30
|
+
* muted topic. Installed once at boot alongside `installCallApiTrace`, and
|
|
31
|
+
* OUTSIDE it (installed after) so the trace records the payload actually sent.
|
|
32
|
+
*/
|
|
33
|
+
function installLinkPreviewSuppression(host) {
|
|
34
|
+
const originalCallApi = host.callApi.bind(host);
|
|
35
|
+
host.callApi = (method, payload, options) => originalCallApi(method, applyLinkPreviewSuppression(method, payload), options);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=linkPreviewSuppression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkPreviewSuppression.js","sourceRoot":"","sources":["../../src/utils/linkPreviewSuppression.ts"],"names":[],"mappings":";;AAgBA,kEAKC;AASD,sEAIC;AAhCD;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAEvE;;;;;;GAMG;AACH,SAAgB,2BAA2B,CAAC,MAAc,EAAE,OAAe;IACzE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IACpD,MAAM,IAAI,GAAG,OAAkC,CAAC;IAChD,IAAI,sBAAsB,IAAI,IAAI,IAAI,0BAA0B,IAAI,IAAI;QAAE,OAAO,OAAO,CAAC;IACzF,OAAO,EAAE,GAAG,IAAI,EAAE,oBAAoB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,6BAA6B,CAAC,IAAiB;IAC7D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAC1C,eAAe,CAAC,MAAM,EAAE,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description The instance-local clock of an instant, for bot notices. "Local"
|
|
3
|
+
* is the process timezone, which `/timezone` sets for the whole instance.
|
|
4
|
+
*/
|
|
5
|
+
/** `HH:MM` of an epoch-ms instant. */
|
|
6
|
+
export declare function formatLocalClock(epochMs: number): string;
|
|
7
|
+
/**
|
|
8
|
+
* @description `HH:MM` when the instant falls on today's local calendar date,
|
|
9
|
+
* else `YYYY-MM-DD HH:MM`: a usage-limit reset days away must not read as a time
|
|
10
|
+
* later today.
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatLocalClockWithDateIfNotToday(epochMs: number, nowMs: number): string;
|
|
13
|
+
/** `YYYY-MM-DD HH:MM` of an instant — for a text read at an unknown later time. */
|
|
14
|
+
export declare function formatLocalDateAndClock(epochMs: number): string;
|
|
15
|
+
//# sourceMappingURL=localClock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localClock.d.ts","sourceRoot":"","sources":["../../src/utils/localClock.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGzF;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatLocalClock = formatLocalClock;
|
|
4
|
+
exports.formatLocalClockWithDateIfNotToday = formatLocalClockWithDateIfNotToday;
|
|
5
|
+
exports.formatLocalDateAndClock = formatLocalDateAndClock;
|
|
6
|
+
const reminderWizard_1 = require("./reminderWizard");
|
|
7
|
+
/**
|
|
8
|
+
* @description The instance-local clock of an instant, for bot notices. "Local"
|
|
9
|
+
* is the process timezone, which `/timezone` sets for the whole instance.
|
|
10
|
+
*/
|
|
11
|
+
/** `HH:MM` of an epoch-ms instant. */
|
|
12
|
+
function formatLocalClock(epochMs) {
|
|
13
|
+
const at = new Date(epochMs);
|
|
14
|
+
return (0, reminderWizard_1.formatReminderTime)({ hour: at.getHours(), minute: at.getMinutes() });
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @description `HH:MM` when the instant falls on today's local calendar date,
|
|
18
|
+
* else `YYYY-MM-DD HH:MM`: a usage-limit reset days away must not read as a time
|
|
19
|
+
* later today.
|
|
20
|
+
*/
|
|
21
|
+
function formatLocalClockWithDateIfNotToday(epochMs, nowMs) {
|
|
22
|
+
const dateIso = (0, reminderWizard_1.formatReminderDateIso)(new Date(epochMs));
|
|
23
|
+
return dateIso === (0, reminderWizard_1.formatReminderDateIso)((0, reminderWizard_1.getLocalDateAtDayOffset)(nowMs, 0)) ? formatLocalClock(epochMs) : formatLocalDateAndClock(epochMs);
|
|
24
|
+
}
|
|
25
|
+
/** `YYYY-MM-DD HH:MM` of an instant — for a text read at an unknown later time. */
|
|
26
|
+
function formatLocalDateAndClock(epochMs) {
|
|
27
|
+
return `${(0, reminderWizard_1.formatReminderDateIso)(new Date(epochMs))} ${formatLocalClock(epochMs)}`;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=localClock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localClock.js","sourceRoot":"","sources":["../../src/utils/localClock.ts"],"names":[],"mappings":";;AAQA,4CAGC;AAOD,gFAGC;AAGD,0DAEC;AA1BD,qDAAsG;AAEtG;;;GAGG;AAEH,sCAAsC;AACtC,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,IAAA,mCAAkB,EAAC,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,SAAgB,kCAAkC,CAAC,OAAe,EAAE,KAAa;IAC/E,MAAM,OAAO,GAAG,IAAA,sCAAqB,EAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,OAAO,OAAO,KAAK,IAAA,sCAAqB,EAAC,IAAA,wCAAuB,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC7I,CAAC;AAED,mFAAmF;AACnF,SAAgB,uBAAuB,CAAC,OAAe;IACrD,OAAO,GAAG,IAAA,sCAAqB,EAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure pre-processing pass that turns raw GitHub-flavored
|
|
3
|
+
* markdown tables (`| a | b |` …) into a readable Telegram form.
|
|
4
|
+
*
|
|
5
|
+
* Why this exists: OpenCode replies often contain GFM tables as plain pipe
|
|
6
|
+
* text, which is unreadable on a phone. This module detects those blocks and
|
|
7
|
+
* rewrites each one to a HYBRID rendering chosen by width:
|
|
8
|
+
* - narrow table (aligned form fits {@link tableMaxMonospaceWidth}) → a
|
|
9
|
+
* column-aligned box-drawing frame WRAPPED in a ``` fence, so the shared
|
|
10
|
+
* `renderAgentHtml` fence machinery turns it into a `<pre>` (monospace).
|
|
11
|
+
* - wide table → per-row "field: value" blocks as plain markdown lines, which
|
|
12
|
+
* flow through the normal bold/inline passes.
|
|
13
|
+
*
|
|
14
|
+
* It is wired as step 0.5 of `renderAgentHtml` (after the control-char strip,
|
|
15
|
+
* before the fence regex) and therefore runs on EVERY agent output for BOTH
|
|
16
|
+
* backends. Two safety invariants follow from that:
|
|
17
|
+
* 1. it is FENCE-AWARE — lines inside an existing ```-delimited region are
|
|
18
|
+
* never scanned for tables (a code block full of pipes must survive);
|
|
19
|
+
* 2. it leaves all non-table text byte-for-byte identical.
|
|
20
|
+
*
|
|
21
|
+
* The detector is narrow on purpose (header pipe row + GFM separator row +
|
|
22
|
+
* ≥1 body rows), so ordinary prose containing a stray `|` never matches.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Width budget (in monospace code points) for the aligned form. If the widest
|
|
26
|
+
* line of the box-drawing render exceeds this, the renderer falls back to the
|
|
27
|
+
* "field: value" form instead. Chosen so an aligned table still fits a typical
|
|
28
|
+
* phone without horizontal scroll. Tunable — the main agent confirms/adjusts
|
|
29
|
+
* the exact value via live verification.
|
|
30
|
+
*/
|
|
31
|
+
export declare const tableMaxMonospaceWidth = 42;
|
|
32
|
+
/** A contiguous block of source lines that form one GFM table. */
|
|
33
|
+
export interface TableLineRange {
|
|
34
|
+
startLine: number;
|
|
35
|
+
endLineExclusive: number;
|
|
36
|
+
}
|
|
37
|
+
/** A parsed table: header cells + body rows (each row already padded to the
|
|
38
|
+
* header width). */
|
|
39
|
+
export interface ParsedTable {
|
|
40
|
+
headers: string[];
|
|
41
|
+
rows: string[][];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Find every GFM table block in `text`, returning their line ranges. A block
|
|
45
|
+
* is a header pipe row, a separator row directly below it, then ≥1 consecutive
|
|
46
|
+
* pipe body rows. Lines inside an existing ```-fenced region are skipped, so a
|
|
47
|
+
* code block containing pipes never matches.
|
|
48
|
+
*/
|
|
49
|
+
export declare function detectTables(text: string): TableLineRange[];
|
|
50
|
+
/**
|
|
51
|
+
* Parse a table block (the raw lines of one detected range, joined by `\n`)
|
|
52
|
+
* into headers + rows. Ragged rows shorter than the header are padded with
|
|
53
|
+
* `''`; rows longer than the header keep their extra cells (so nothing is
|
|
54
|
+
* silently lost — the aligned form widens to fit).
|
|
55
|
+
*/
|
|
56
|
+
export declare function parseTable(block: string): ParsedTable;
|
|
57
|
+
/**
|
|
58
|
+
* Render the table as a monospace, column-aligned box-drawing frame. The
|
|
59
|
+
* caller wraps the result in a ``` fence so the HTML layer makes it a `<pre>`.
|
|
60
|
+
*/
|
|
61
|
+
export declare function renderAligned(table: ParsedTable): string;
|
|
62
|
+
/**
|
|
63
|
+
* Render the table as per-row "field: value" blocks for the wide case. The
|
|
64
|
+
* first column is the key cell (after `▸`); remaining columns become
|
|
65
|
+
* ` <header>: <cell>` lines. Inline markdown in cell text is kept — the HTML
|
|
66
|
+
* layer renders it. When there is only one column (no obvious key/value split)
|
|
67
|
+
* the rows are numbered instead.
|
|
68
|
+
*/
|
|
69
|
+
export declare function renderFieldValue(table: ParsedTable): string;
|
|
70
|
+
/**
|
|
71
|
+
* Pick the rendering for one table: aligned (fenced) if its widest line fits
|
|
72
|
+
* {@link tableMaxMonospaceWidth}, else the field-value form. Returns the text
|
|
73
|
+
* already wrapped for the HTML layer (``` fence for aligned, plain lines for
|
|
74
|
+
* field-value).
|
|
75
|
+
*/
|
|
76
|
+
export declare function renderTable(table: ParsedTable): string;
|
|
77
|
+
/**
|
|
78
|
+
* Replace every detected GFM table block in `text` with its chosen rendering,
|
|
79
|
+
* in place. Non-table text and fenced regions are returned byte-for-byte
|
|
80
|
+
* unchanged. This is the single entry point wired into `renderAgentHtml`.
|
|
81
|
+
*/
|
|
82
|
+
export declare function renderMarkdownTables(text: string): string;
|
|
83
|
+
//# sourceMappingURL=markdownTableRender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownTableRender.d.ts","sourceRoot":"","sources":["../../src/utils/markdownTableRender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;qBACqB;AACrB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;CAClB;AAmED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAwD3D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAWrD;AAqDD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CASxD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAgB3D;AAOD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAMtD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBzD"}
|