charness 0.0.0-stage → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +88 -0
- package/DEVELOPMENT.md +110 -0
- package/LICENSE +21 -0
- package/MIGRATION_1_TO_2.md +24 -0
- package/README.md +1024 -2
- package/dist/accessControl.d.ts +71 -0
- package/dist/accessControl.d.ts.map +1 -0
- package/dist/accessControl.js +108 -0
- package/dist/accessControl.js.map +1 -0
- package/dist/adapters/adapterEventRouting.d.ts +51 -0
- package/dist/adapters/adapterEventRouting.d.ts.map +1 -0
- package/dist/adapters/adapterEventRouting.js +74 -0
- package/dist/adapters/adapterEventRouting.js.map +1 -0
- package/dist/adapters/adapterNames.d.ts +19 -0
- package/dist/adapters/adapterNames.d.ts.map +1 -0
- package/dist/adapters/adapterNames.js +25 -0
- package/dist/adapters/adapterNames.js.map +1 -0
- package/dist/adapters/claudeCliAdapter.d.ts +1336 -0
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeCliAdapter.js +4204 -0
- package/dist/adapters/claudeCliAdapter.js.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +548 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.js +1810 -0
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -0
- package/dist/adapters/claudePlatformFlags.d.ts +35 -0
- package/dist/adapters/claudePlatformFlags.d.ts.map +1 -0
- package/dist/adapters/claudePlatformFlags.js +46 -0
- package/dist/adapters/claudePlatformFlags.js.map +1 -0
- package/dist/adapters/createAdapter.d.ts +252 -0
- package/dist/adapters/createAdapter.d.ts.map +1 -0
- package/dist/adapters/createAdapter.js +475 -0
- package/dist/adapters/createAdapter.js.map +1 -0
- package/dist/adapters/openCodeAdapter.d.ts +1446 -0
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
- package/dist/adapters/openCodeAdapter.js +4540 -0
- package/dist/adapters/openCodeAdapter.js.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts +28 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.js +15 -0
- package/dist/adapters/sessionLaunchDefaults.js.map +1 -0
- package/dist/adapters/terminalAdapter.d.ts +68 -0
- package/dist/adapters/terminalAdapter.d.ts.map +1 -0
- package/dist/adapters/terminalAdapter.js +371 -0
- package/dist/adapters/terminalAdapter.js.map +1 -0
- package/dist/agentLogin/agentLogin.d.ts +31 -0
- package/dist/agentLogin/agentLogin.d.ts.map +1 -0
- package/dist/agentLogin/agentLogin.js +493 -0
- package/dist/agentLogin/agentLogin.js.map +1 -0
- package/dist/agentTrigger.d.ts +28 -0
- package/dist/agentTrigger.d.ts.map +1 -0
- package/dist/agentTrigger.js +53 -0
- package/dist/agentTrigger.js.map +1 -0
- package/dist/apiErrorRetry.d.ts +209 -0
- package/dist/apiErrorRetry.d.ts.map +1 -0
- package/dist/apiErrorRetry.js +351 -0
- package/dist/apiErrorRetry.js.map +1 -0
- package/dist/apiRetryKick.d.ts +148 -0
- package/dist/apiRetryKick.d.ts.map +1 -0
- package/dist/apiRetryKick.js +158 -0
- package/dist/apiRetryKick.js.map +1 -0
- package/dist/bootClassifier.d.ts +46 -0
- package/dist/bootClassifier.d.ts.map +1 -0
- package/dist/bootClassifier.js +43 -0
- package/dist/bootClassifier.js.map +1 -0
- package/dist/bot.d.ts +207 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +10611 -0
- package/dist/bot.js.map +1 -0
- package/dist/botFileStorage.d.ts +60 -0
- package/dist/botFileStorage.d.ts.map +1 -0
- package/dist/botFileStorage.js +205 -0
- package/dist/botFileStorage.js.map +1 -0
- package/dist/cli/applyDnsFix.d.ts +7 -0
- package/dist/cli/applyDnsFix.d.ts.map +1 -0
- package/dist/cli/applyDnsFix.js +46 -0
- package/dist/cli/applyDnsFix.js.map +1 -0
- package/dist/cli/bot.d.ts +27 -0
- package/dist/cli/bot.d.ts.map +1 -0
- package/dist/cli/bot.js +98 -0
- package/dist/cli/bot.js.map +1 -0
- package/dist/cli/botEntry.d.ts +3 -0
- package/dist/cli/botEntry.d.ts.map +1 -0
- package/dist/cli/botEntry.js +11 -0
- package/dist/cli/botEntry.js.map +1 -0
- package/dist/cli/connectorGuards.d.ts +31 -0
- package/dist/cli/connectorGuards.d.ts.map +1 -0
- package/dist/cli/connectorGuards.js +159 -0
- package/dist/cli/connectorGuards.js.map +1 -0
- package/dist/cli/envLoader.d.ts +34 -0
- package/dist/cli/envLoader.d.ts.map +1 -0
- package/dist/cli/envLoader.js +132 -0
- package/dist/cli/envLoader.js.map +1 -0
- package/dist/cli/hot.d.ts +82 -0
- package/dist/cli/hot.d.ts.map +1 -0
- package/dist/cli/hot.js +323 -0
- package/dist/cli/hot.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +130 -0
- package/dist/cli.js.map +1 -0
- package/dist/connectors/jira/adf.d.ts +72 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -0
- package/dist/connectors/jira/adf.js +407 -0
- package/dist/connectors/jira/adf.js.map +1 -0
- package/dist/connectors/jira/agentBinaries.d.ts +14 -0
- package/dist/connectors/jira/agentBinaries.d.ts.map +1 -0
- package/dist/connectors/jira/agentBinaries.js +75 -0
- package/dist/connectors/jira/agentBinaries.js.map +1 -0
- package/dist/connectors/jira/answerSink.d.ts +52 -0
- package/dist/connectors/jira/answerSink.d.ts.map +1 -0
- package/dist/connectors/jira/answerSink.js +220 -0
- package/dist/connectors/jira/answerSink.js.map +1 -0
- package/dist/connectors/jira/attachmentDownload.d.ts +41 -0
- package/dist/connectors/jira/attachmentDownload.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentDownload.js +92 -0
- package/dist/connectors/jira/attachmentDownload.js.map +1 -0
- package/dist/connectors/jira/attachmentTool.d.ts +43 -0
- package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentTool.js +150 -0
- package/dist/connectors/jira/attachmentTool.js.map +1 -0
- package/dist/connectors/jira/client.d.ts +490 -0
- package/dist/connectors/jira/client.d.ts.map +1 -0
- package/dist/connectors/jira/client.js +453 -0
- package/dist/connectors/jira/client.js.map +1 -0
- package/dist/connectors/jira/config.d.ts +117 -0
- package/dist/connectors/jira/config.d.ts.map +1 -0
- package/dist/connectors/jira/config.js +350 -0
- package/dist/connectors/jira/config.js.map +1 -0
- package/dist/connectors/jira/configFile.d.ts +10 -0
- package/dist/connectors/jira/configFile.d.ts.map +1 -0
- package/dist/connectors/jira/configFile.js +50 -0
- package/dist/connectors/jira/configFile.js.map +1 -0
- package/dist/connectors/jira/connector.d.ts +68 -0
- package/dist/connectors/jira/connector.d.ts.map +1 -0
- package/dist/connectors/jira/connector.js +257 -0
- package/dist/connectors/jira/connector.js.map +1 -0
- package/dist/connectors/jira/contextLedger.d.ts +59 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
- package/dist/connectors/jira/contextLedger.js +194 -0
- package/dist/connectors/jira/contextLedger.js.map +1 -0
- package/dist/connectors/jira/contextPreamble.d.ts +18 -0
- package/dist/connectors/jira/contextPreamble.d.ts.map +1 -0
- package/dist/connectors/jira/contextPreamble.js +31 -0
- package/dist/connectors/jira/contextPreamble.js.map +1 -0
- package/dist/connectors/jira/inbound.d.ts +132 -0
- package/dist/connectors/jira/inbound.d.ts.map +1 -0
- package/dist/connectors/jira/inbound.js +316 -0
- package/dist/connectors/jira/inbound.js.map +1 -0
- package/dist/connectors/jira/issueBlocks.d.ts +51 -0
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
- package/dist/connectors/jira/issueBlocks.js +182 -0
- package/dist/connectors/jira/issueBlocks.js.map +1 -0
- package/dist/connectors/jira/issueContext.d.ts +25 -0
- package/dist/connectors/jira/issueContext.d.ts.map +1 -0
- package/dist/connectors/jira/issueContext.js +53 -0
- package/dist/connectors/jira/issueContext.js.map +1 -0
- package/dist/connectors/jira/issueDelta.d.ts +35 -0
- package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
- package/dist/connectors/jira/issueDelta.js +50 -0
- package/dist/connectors/jira/issueDelta.js.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts +20 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.js +92 -0
- package/dist/connectors/jira/mediaPlaceholders.js.map +1 -0
- package/dist/connectors/jira/outbound.d.ts +6 -0
- package/dist/connectors/jira/outbound.d.ts.map +1 -0
- package/dist/connectors/jira/outbound.js +38 -0
- package/dist/connectors/jira/outbound.js.map +1 -0
- package/dist/connectors/jira/prompt.d.ts +37 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -0
- package/dist/connectors/jira/prompt.js +99 -0
- package/dist/connectors/jira/prompt.js.map +1 -0
- package/dist/connectors/jira/promptSpill.d.ts +50 -0
- package/dist/connectors/jira/promptSpill.d.ts.map +1 -0
- package/dist/connectors/jira/promptSpill.js +157 -0
- package/dist/connectors/jira/promptSpill.js.map +1 -0
- package/dist/connectors/jira/promptText.d.ts +7 -0
- package/dist/connectors/jira/promptText.d.ts.map +1 -0
- package/dist/connectors/jira/promptText.js +26 -0
- package/dist/connectors/jira/promptText.js.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts +16 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.js +101 -0
- package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/jira/trigger.d.ts +50 -0
- package/dist/connectors/jira/trigger.d.ts.map +1 -0
- package/dist/connectors/jira/trigger.js +93 -0
- package/dist/connectors/jira/trigger.js.map +1 -0
- package/dist/connectors/jira/triggerLog.d.ts +51 -0
- package/dist/connectors/jira/triggerLog.d.ts.map +1 -0
- package/dist/connectors/jira/triggerLog.js +78 -0
- package/dist/connectors/jira/triggerLog.js.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts +58 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.js +105 -0
- package/dist/connectors/jira/unconfirmedPosts.js.map +1 -0
- package/dist/connectors/telegram/answerSink.d.ts +46 -0
- package/dist/connectors/telegram/answerSink.d.ts.map +1 -0
- package/dist/connectors/telegram/answerSink.js +71 -0
- package/dist/connectors/telegram/answerSink.js.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +31 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js +142 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -0
- package/dist/connectors/telegram/commands/botCore.d.ts +46 -0
- package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/botCore.js +3 -0
- package/dist/connectors/telegram/commands/botCore.js.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.js +13 -0
- package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -0
- package/dist/connectors/telegram/commands/compaction.d.ts +47 -0
- package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/compaction.js +868 -0
- package/dist/connectors/telegram/commands/compaction.js.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts +13 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.js +335 -0
- package/dist/connectors/telegram/commands/displayModes.js.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts +95 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.js +841 -0
- package/dist/connectors/telegram/commands/modelProviders.js.map +1 -0
- package/dist/connectors/telegram/commands/reminders.d.ts +54 -0
- package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/reminders.js +624 -0
- package/dist/connectors/telegram/commands/reminders.js.map +1 -0
- package/dist/connectors/telegram/fileIntake.d.ts +166 -0
- package/dist/connectors/telegram/fileIntake.d.ts.map +1 -0
- package/dist/connectors/telegram/fileIntake.js +304 -0
- package/dist/connectors/telegram/fileIntake.js.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts +57 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.js +221 -0
- package/dist/connectors/telegram/fileSendGateway.js.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts +52 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js +71 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js.map +1 -0
- package/dist/connectors/telegram/inbound.d.ts +131 -0
- package/dist/connectors/telegram/inbound.d.ts.map +1 -0
- package/dist/connectors/telegram/inbound.js +278 -0
- package/dist/connectors/telegram/inbound.js.map +1 -0
- package/dist/connectors/telegram/languagePicker.d.ts +32 -0
- package/dist/connectors/telegram/languagePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/languagePicker.js +55 -0
- package/dist/connectors/telegram/languagePicker.js.map +1 -0
- package/dist/connectors/telegram/messageSplit.d.ts +62 -0
- package/dist/connectors/telegram/messageSplit.d.ts.map +1 -0
- package/dist/connectors/telegram/messageSplit.js +119 -0
- package/dist/connectors/telegram/messageSplit.js.map +1 -0
- package/dist/connectors/telegram/outbound.d.ts +62 -0
- package/dist/connectors/telegram/outbound.d.ts.map +1 -0
- package/dist/connectors/telegram/outbound.js +116 -0
- package/dist/connectors/telegram/outbound.js.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts +34 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.js +77 -0
- package/dist/connectors/telegram/output/createOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts +47 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js +412 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts +38 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.js +49 -0
- package/dist/connectors/telegram/outputBacklogGlue.js.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts +93 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.js +120 -0
- package/dist/connectors/telegram/outputFlushPlan.js.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts +30 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.js +37 -0
- package/dist/connectors/telegram/questionKeyboards.js.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts +27 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.js +97 -0
- package/dist/connectors/telegram/renderAgentHtml.js.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts +28 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.js +107 -0
- package/dist/connectors/telegram/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts +19 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.js +35 -0
- package/dist/connectors/telegram/telegramCallGuard.js.map +1 -0
- package/dist/connectors/telegram/timezonePicker.d.ts +85 -0
- package/dist/connectors/telegram/timezonePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/timezonePicker.js +142 -0
- package/dist/connectors/telegram/timezonePicker.js.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts +85 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.js +159 -0
- package/dist/connectors/telegram/updateDispatcher.js.map +1 -0
- package/dist/connectors/test/connector.d.ts +52 -0
- package/dist/connectors/test/connector.d.ts.map +1 -0
- package/dist/connectors/test/connector.js +143 -0
- package/dist/connectors/test/connector.js.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts +25 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.js +50 -0
- package/dist/connectors/test/sessionKeyCodec.js.map +1 -0
- package/dist/diagLog.d.ts +6 -0
- package/dist/diagLog.d.ts.map +1 -0
- package/dist/diagLog.js +58 -0
- package/dist/diagLog.js.map +1 -0
- package/dist/effortLevels.d.ts +68 -0
- package/dist/effortLevels.d.ts.map +1 -0
- package/dist/effortLevels.js +114 -0
- package/dist/effortLevels.js.map +1 -0
- package/dist/folderName.d.ts +42 -0
- package/dist/folderName.d.ts.map +1 -0
- package/dist/folderName.js +51 -0
- package/dist/folderName.js.map +1 -0
- package/dist/i18n/de.d.ts +2 -0
- package/dist/i18n/de.d.ts.map +1 -0
- package/dist/i18n/de.js +537 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en.d.ts +7 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +566 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/es.d.ts +2 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +537 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/fr.d.ts +2 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +537 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/hi.d.ts +2 -0
- package/dist/i18n/hi.d.ts.map +1 -0
- package/dist/i18n/hi.js +537 -0
- package/dist/i18n/hi.js.map +1 -0
- package/dist/i18n/ja.d.ts +2 -0
- package/dist/i18n/ja.d.ts.map +1 -0
- package/dist/i18n/ja.js +537 -0
- package/dist/i18n/ja.js.map +1 -0
- package/dist/i18n/ka.d.ts +2 -0
- package/dist/i18n/ka.d.ts.map +1 -0
- package/dist/i18n/ka.js +537 -0
- package/dist/i18n/ka.js.map +1 -0
- package/dist/i18n/pt.d.ts +2 -0
- package/dist/i18n/pt.d.ts.map +1 -0
- package/dist/i18n/pt.js +537 -0
- package/dist/i18n/pt.js.map +1 -0
- package/dist/i18n/ru.d.ts +6 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +540 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/i18n/uk.d.ts +8 -0
- package/dist/i18n/uk.d.ts.map +1 -0
- package/dist/i18n/uk.js +542 -0
- package/dist/i18n/uk.js.map +1 -0
- package/dist/i18n/uz.d.ts +2 -0
- package/dist/i18n/uz.d.ts.map +1 -0
- package/dist/i18n/uz.js +537 -0
- package/dist/i18n/uz.js.map +1 -0
- package/dist/i18n/zh.d.ts +2 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +537 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/i18n.d.ts +115 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +233 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/installManager.d.ts +99 -0
- package/dist/installManager.d.ts.map +1 -0
- package/dist/installManager.js +943 -0
- package/dist/installManager.js.map +1 -0
- package/dist/instanceLock.d.ts +161 -0
- package/dist/instanceLock.d.ts.map +1 -0
- package/dist/instanceLock.js +388 -0
- package/dist/instanceLock.js.map +1 -0
- package/dist/mcpConfig.d.ts +76 -0
- package/dist/mcpConfig.d.ts.map +1 -0
- package/dist/mcpConfig.js +270 -0
- package/dist/mcpConfig.js.map +1 -0
- package/dist/openCodeOpenQuestion.d.ts +44 -0
- package/dist/openCodeOpenQuestion.d.ts.map +1 -0
- package/dist/openCodeOpenQuestion.js +64 -0
- package/dist/openCodeOpenQuestion.js.map +1 -0
- package/dist/openCodeQuestionFlow.d.ts +105 -0
- package/dist/openCodeQuestionFlow.d.ts.map +1 -0
- package/dist/openCodeQuestionFlow.js +143 -0
- package/dist/openCodeQuestionFlow.js.map +1 -0
- package/dist/openCodeSessionRouting.d.ts +133 -0
- package/dist/openCodeSessionRouting.d.ts.map +1 -0
- package/dist/openCodeSessionRouting.js +253 -0
- package/dist/openCodeSessionRouting.js.map +1 -0
- package/dist/openCodeSessionTitle.d.ts +50 -0
- package/dist/openCodeSessionTitle.d.ts.map +1 -0
- package/dist/openCodeSessionTitle.js +84 -0
- package/dist/openCodeSessionTitle.js.map +1 -0
- package/dist/outputTrace.d.ts +108 -0
- package/dist/outputTrace.d.ts.map +1 -0
- package/dist/outputTrace.js +430 -0
- package/dist/outputTrace.js.map +1 -0
- package/dist/pendingQuestionRepost.d.ts +47 -0
- package/dist/pendingQuestionRepost.d.ts.map +1 -0
- package/dist/pendingQuestionRepost.js +29 -0
- package/dist/pendingQuestionRepost.js.map +1 -0
- package/dist/pinnedStatus.d.ts +52 -0
- package/dist/pinnedStatus.d.ts.map +1 -0
- package/dist/pinnedStatus.js +36 -0
- package/dist/pinnedStatus.js.map +1 -0
- package/dist/platform/answerSink.d.ts +93 -0
- package/dist/platform/answerSink.d.ts.map +1 -0
- package/dist/platform/answerSink.js +31 -0
- package/dist/platform/answerSink.js.map +1 -0
- package/dist/platform/capabilityFallback.d.ts +39 -0
- package/dist/platform/capabilityFallback.d.ts.map +1 -0
- package/dist/platform/capabilityFallback.js +55 -0
- package/dist/platform/capabilityFallback.js.map +1 -0
- package/dist/platform/commandRouter.d.ts +51 -0
- package/dist/platform/commandRouter.d.ts.map +1 -0
- package/dist/platform/commandRouter.js +53 -0
- package/dist/platform/commandRouter.js.map +1 -0
- package/dist/platform/connectorSet.d.ts +39 -0
- package/dist/platform/connectorSet.d.ts.map +1 -0
- package/dist/platform/connectorSet.js +55 -0
- package/dist/platform/connectorSet.js.map +1 -0
- package/dist/platform/inbound.d.ts +147 -0
- package/dist/platform/inbound.d.ts.map +1 -0
- package/dist/platform/inbound.js +18 -0
- package/dist/platform/inbound.js.map +1 -0
- package/dist/platform/outbound.d.ts +225 -0
- package/dist/platform/outbound.d.ts.map +1 -0
- package/dist/platform/outbound.js +30 -0
- package/dist/platform/outbound.js.map +1 -0
- package/dist/platform/unservedStateGuard.d.ts +27 -0
- package/dist/platform/unservedStateGuard.d.ts.map +1 -0
- package/dist/platform/unservedStateGuard.js +42 -0
- package/dist/platform/unservedStateGuard.js.map +1 -0
- package/dist/postToSession.d.ts +94 -0
- package/dist/postToSession.d.ts.map +1 -0
- package/dist/postToSession.js +56 -0
- package/dist/postToSession.js.map +1 -0
- package/dist/progressLine.d.ts +180 -0
- package/dist/progressLine.d.ts.map +1 -0
- package/dist/progressLine.js +293 -0
- package/dist/progressLine.js.map +1 -0
- package/dist/rateLimiter.d.ts +246 -0
- package/dist/rateLimiter.d.ts.map +1 -0
- package/dist/rateLimiter.js +555 -0
- package/dist/rateLimiter.js.map +1 -0
- package/dist/requests/answerRequest.d.ts +57 -0
- package/dist/requests/answerRequest.d.ts.map +1 -0
- package/dist/requests/answerRequest.js +96 -0
- package/dist/requests/answerRequest.js.map +1 -0
- package/dist/requests/answerTail.d.ts +83 -0
- package/dist/requests/answerTail.d.ts.map +1 -0
- package/dist/requests/answerTail.js +102 -0
- package/dist/requests/answerTail.js.map +1 -0
- package/dist/requests/limitWaitAnswer.d.ts +87 -0
- package/dist/requests/limitWaitAnswer.d.ts.map +1 -0
- package/dist/requests/limitWaitAnswer.js +83 -0
- package/dist/requests/limitWaitAnswer.js.map +1 -0
- package/dist/requests/requestGroup.d.ts +44 -0
- package/dist/requests/requestGroup.d.ts.map +1 -0
- package/dist/requests/requestGroup.js +63 -0
- package/dist/requests/requestGroup.js.map +1 -0
- package/dist/requests/requestHeader.d.ts +70 -0
- package/dist/requests/requestHeader.d.ts.map +1 -0
- package/dist/requests/requestHeader.js +83 -0
- package/dist/requests/requestHeader.js.map +1 -0
- package/dist/requests/requestLedger.d.ts +217 -0
- package/dist/requests/requestLedger.d.ts.map +1 -0
- package/dist/requests/requestLedger.js +468 -0
- package/dist/requests/requestLedger.js.map +1 -0
- package/dist/requests/sessionTurnProbe.d.ts +52 -0
- package/dist/requests/sessionTurnProbe.d.ts.map +1 -0
- package/dist/requests/sessionTurnProbe.js +29 -0
- package/dist/requests/sessionTurnProbe.js.map +1 -0
- package/dist/requests/types.d.ts +181 -0
- package/dist/requests/types.d.ts.map +1 -0
- package/dist/requests/types.js +9 -0
- package/dist/requests/types.js.map +1 -0
- package/dist/requests/wakeUpEngine.d.ts +160 -0
- package/dist/requests/wakeUpEngine.d.ts.map +1 -0
- package/dist/requests/wakeUpEngine.js +399 -0
- package/dist/requests/wakeUpEngine.js.map +1 -0
- package/dist/requests/wakeUpRules.d.ts +151 -0
- package/dist/requests/wakeUpRules.d.ts.map +1 -0
- package/dist/requests/wakeUpRules.js +167 -0
- package/dist/requests/wakeUpRules.js.map +1 -0
- package/dist/resumeContext.d.ts +87 -0
- package/dist/resumeContext.d.ts.map +1 -0
- package/dist/resumeContext.js +114 -0
- package/dist/resumeContext.js.map +1 -0
- package/dist/scheduler/checkRun.d.ts +95 -0
- package/dist/scheduler/checkRun.d.ts.map +1 -0
- package/dist/scheduler/checkRun.js +172 -0
- package/dist/scheduler/checkRun.js.map +1 -0
- package/dist/scheduler/delivery.d.ts +99 -0
- package/dist/scheduler/delivery.d.ts.map +1 -0
- package/dist/scheduler/delivery.js +212 -0
- package/dist/scheduler/delivery.js.map +1 -0
- package/dist/scheduler/deliveryKind.d.ts +29 -0
- package/dist/scheduler/deliveryKind.d.ts.map +1 -0
- package/dist/scheduler/deliveryKind.js +39 -0
- package/dist/scheduler/deliveryKind.js.map +1 -0
- package/dist/scheduler/directoryThreads.d.ts +19 -0
- package/dist/scheduler/directoryThreads.d.ts.map +1 -0
- package/dist/scheduler/directoryThreads.js +28 -0
- package/dist/scheduler/directoryThreads.js.map +1 -0
- package/dist/scheduler/engine.d.ts +77 -0
- package/dist/scheduler/engine.d.ts.map +1 -0
- package/dist/scheduler/engine.js +337 -0
- package/dist/scheduler/engine.js.map +1 -0
- package/dist/scheduler/injection.d.ts +102 -0
- package/dist/scheduler/injection.d.ts.map +1 -0
- package/dist/scheduler/injection.js +122 -0
- package/dist/scheduler/injection.js.map +1 -0
- package/dist/scheduler/mcpBoot.d.ts +65 -0
- package/dist/scheduler/mcpBoot.d.ts.map +1 -0
- package/dist/scheduler/mcpBoot.js +60 -0
- package/dist/scheduler/mcpBoot.js.map +1 -0
- package/dist/scheduler/mcpSurface.d.ts +355 -0
- package/dist/scheduler/mcpSurface.d.ts.map +1 -0
- package/dist/scheduler/mcpSurface.js +1257 -0
- package/dist/scheduler/mcpSurface.js.map +1 -0
- package/dist/scheduler/rebindResume.d.ts +27 -0
- package/dist/scheduler/rebindResume.d.ts.map +1 -0
- package/dist/scheduler/rebindResume.js +17 -0
- package/dist/scheduler/rebindResume.js.map +1 -0
- package/dist/scheduler/recurrence.d.ts +58 -0
- package/dist/scheduler/recurrence.d.ts.map +1 -0
- package/dist/scheduler/recurrence.js +210 -0
- package/dist/scheduler/recurrence.js.map +1 -0
- package/dist/scheduler/runLedger.d.ts +59 -0
- package/dist/scheduler/runLedger.d.ts.map +1 -0
- package/dist/scheduler/runLedger.js +54 -0
- package/dist/scheduler/runLedger.js.map +1 -0
- package/dist/scheduler/store.d.ts +97 -0
- package/dist/scheduler/store.d.ts.map +1 -0
- package/dist/scheduler/store.js +124 -0
- package/dist/scheduler/store.js.map +1 -0
- package/dist/scheduler/timezoneRecompute.d.ts +61 -0
- package/dist/scheduler/timezoneRecompute.d.ts.map +1 -0
- package/dist/scheduler/timezoneRecompute.js +46 -0
- package/dist/scheduler/timezoneRecompute.js.map +1 -0
- package/dist/scheduler/types.d.ts +139 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +8 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/sendErrorClassifier.d.ts +45 -0
- package/dist/sendErrorClassifier.d.ts.map +1 -0
- package/dist/sendErrorClassifier.js +65 -0
- package/dist/sendErrorClassifier.js.map +1 -0
- package/dist/sessionKey.d.ts +136 -0
- package/dist/sessionKey.d.ts.map +1 -0
- package/dist/sessionKey.js +153 -0
- package/dist/sessionKey.js.map +1 -0
- package/dist/sessionPick.d.ts +42 -0
- package/dist/sessionPick.d.ts.map +1 -0
- package/dist/sessionPick.js +39 -0
- package/dist/sessionPick.js.map +1 -0
- package/dist/shutdown.d.ts +126 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +164 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/startupPromptBuffer.d.ts +85 -0
- package/dist/startupPromptBuffer.d.ts.map +1 -0
- package/dist/startupPromptBuffer.js +123 -0
- package/dist/startupPromptBuffer.js.map +1 -0
- package/dist/state.d.ts +1245 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +1830 -0
- package/dist/state.js.map +1 -0
- package/dist/threadContextPreamble.d.ts +89 -0
- package/dist/threadContextPreamble.d.ts.map +1 -0
- package/dist/threadContextPreamble.js +102 -0
- package/dist/threadContextPreamble.js.map +1 -0
- package/dist/threadRouting.d.ts +164 -0
- package/dist/threadRouting.d.ts.map +1 -0
- package/dist/threadRouting.js +182 -0
- package/dist/threadRouting.js.map +1 -0
- package/dist/types.d.ts +1015 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/abortableFifo.d.ts +10 -0
- package/dist/utils/abortableFifo.d.ts.map +1 -0
- package/dist/utils/abortableFifo.js +55 -0
- package/dist/utils/abortableFifo.js.map +1 -0
- package/dist/utils/adoptedToolList.d.ts +27 -0
- package/dist/utils/adoptedToolList.d.ts.map +1 -0
- package/dist/utils/adoptedToolList.js +22 -0
- package/dist/utils/adoptedToolList.js.map +1 -0
- package/dist/utils/agentEnvironment.d.ts +42 -0
- package/dist/utils/agentEnvironment.d.ts.map +1 -0
- package/dist/utils/agentEnvironment.js +122 -0
- package/dist/utils/agentEnvironment.js.map +1 -0
- package/dist/utils/ansiClean.d.ts +11 -0
- package/dist/utils/ansiClean.d.ts.map +1 -0
- package/dist/utils/ansiClean.js +139 -0
- package/dist/utils/ansiClean.js.map +1 -0
- package/dist/utils/autoContinueOnLimit.d.ts +49 -0
- package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
- package/dist/utils/autoContinueOnLimit.js +69 -0
- package/dist/utils/autoContinueOnLimit.js.map +1 -0
- package/dist/utils/canonicalPathContainment.d.ts +7 -0
- package/dist/utils/canonicalPathContainment.d.ts.map +1 -0
- package/dist/utils/canonicalPathContainment.js +48 -0
- package/dist/utils/canonicalPathContainment.js.map +1 -0
- package/dist/utils/claudeAuthLogin.d.ts +71 -0
- package/dist/utils/claudeAuthLogin.d.ts.map +1 -0
- package/dist/utils/claudeAuthLogin.js +93 -0
- package/dist/utils/claudeAuthLogin.js.map +1 -0
- package/dist/utils/claudeChunkClassifier.d.ts +97 -0
- package/dist/utils/claudeChunkClassifier.d.ts.map +1 -0
- package/dist/utils/claudeChunkClassifier.js +254 -0
- package/dist/utils/claudeChunkClassifier.js.map +1 -0
- package/dist/utils/claudeCodeVersion.d.ts +31 -0
- package/dist/utils/claudeCodeVersion.d.ts.map +1 -0
- package/dist/utils/claudeCodeVersion.js +62 -0
- package/dist/utils/claudeCodeVersion.js.map +1 -0
- package/dist/utils/claudeCompactHook.d.ts +64 -0
- package/dist/utils/claudeCompactHook.d.ts.map +1 -0
- package/dist/utils/claudeCompactHook.js +98 -0
- package/dist/utils/claudeCompactHook.js.map +1 -0
- package/dist/utils/claudeLivenessAction.d.ts +208 -0
- package/dist/utils/claudeLivenessAction.d.ts.map +1 -0
- package/dist/utils/claudeLivenessAction.js +135 -0
- package/dist/utils/claudeLivenessAction.js.map +1 -0
- package/dist/utils/claudeMcpHeal.d.ts +92 -0
- package/dist/utils/claudeMcpHeal.d.ts.map +1 -0
- package/dist/utils/claudeMcpHeal.js +91 -0
- package/dist/utils/claudeMcpHeal.js.map +1 -0
- package/dist/utils/claudeRelayRouting.d.ts +86 -0
- package/dist/utils/claudeRelayRouting.d.ts.map +1 -0
- package/dist/utils/claudeRelayRouting.js +159 -0
- package/dist/utils/claudeRelayRouting.js.map +1 -0
- package/dist/utils/claudeRuntimeInfo.d.ts +26 -0
- package/dist/utils/claudeRuntimeInfo.d.ts.map +1 -0
- package/dist/utils/claudeRuntimeInfo.js +151 -0
- package/dist/utils/claudeRuntimeInfo.js.map +1 -0
- package/dist/utils/claudeScrapeShapes.d.ts +256 -0
- package/dist/utils/claudeScrapeShapes.d.ts.map +1 -0
- package/dist/utils/claudeScrapeShapes.js +290 -0
- package/dist/utils/claudeScrapeShapes.js.map +1 -0
- package/dist/utils/claudeSessionTitle.d.ts +27 -0
- package/dist/utils/claudeSessionTitle.d.ts.map +1 -0
- package/dist/utils/claudeSessionTitle.js +90 -0
- package/dist/utils/claudeSessionTitle.js.map +1 -0
- package/dist/utils/claudeStreamJson.d.ts +202 -0
- package/dist/utils/claudeStreamJson.d.ts.map +1 -0
- package/dist/utils/claudeStreamJson.js +351 -0
- package/dist/utils/claudeStreamJson.js.map +1 -0
- package/dist/utils/claudeSubagentTail.d.ts +93 -0
- package/dist/utils/claudeSubagentTail.d.ts.map +1 -0
- package/dist/utils/claudeSubagentTail.js +136 -0
- package/dist/utils/claudeSubagentTail.js.map +1 -0
- package/dist/utils/clearThreadOutputQueues.d.ts +43 -0
- package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -0
- package/dist/utils/clearThreadOutputQueues.js +39 -0
- package/dist/utils/clearThreadOutputQueues.js.map +1 -0
- package/dist/utils/compactCommandRoute.d.ts +45 -0
- package/dist/utils/compactCommandRoute.d.ts.map +1 -0
- package/dist/utils/compactCommandRoute.js +36 -0
- package/dist/utils/compactCommandRoute.js.map +1 -0
- package/dist/utils/compactOnIdle.d.ts +329 -0
- package/dist/utils/compactOnIdle.d.ts.map +1 -0
- package/dist/utils/compactOnIdle.js +379 -0
- package/dist/utils/compactOnIdle.js.map +1 -0
- package/dist/utils/consoleFileTap.d.ts +51 -0
- package/dist/utils/consoleFileTap.d.ts.map +1 -0
- package/dist/utils/consoleFileTap.js +86 -0
- package/dist/utils/consoleFileTap.js.map +1 -0
- package/dist/utils/displayVerbosity.d.ts +44 -0
- package/dist/utils/displayVerbosity.d.ts.map +1 -0
- package/dist/utils/displayVerbosity.js +75 -0
- package/dist/utils/displayVerbosity.js.map +1 -0
- package/dist/utils/download.d.ts +72 -0
- package/dist/utils/download.d.ts.map +1 -0
- package/dist/utils/download.js +216 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/draftFinalize.d.ts +110 -0
- package/dist/utils/draftFinalize.d.ts.map +1 -0
- package/dist/utils/draftFinalize.js +100 -0
- package/dist/utils/draftFinalize.js.map +1 -0
- package/dist/utils/draftId.d.ts +36 -0
- package/dist/utils/draftId.d.ts.map +1 -0
- package/dist/utils/draftId.js +46 -0
- package/dist/utils/draftId.js.map +1 -0
- package/dist/utils/draftPacer.d.ts +72 -0
- package/dist/utils/draftPacer.d.ts.map +1 -0
- package/dist/utils/draftPacer.js +53 -0
- package/dist/utils/draftPacer.js.map +1 -0
- package/dist/utils/effortStartupKeystroke.d.ts +20 -0
- package/dist/utils/effortStartupKeystroke.d.ts.map +1 -0
- package/dist/utils/effortStartupKeystroke.js +28 -0
- package/dist/utils/effortStartupKeystroke.js.map +1 -0
- package/dist/utils/ensureSessionPlan.d.ts +70 -0
- package/dist/utils/ensureSessionPlan.d.ts.map +1 -0
- package/dist/utils/ensureSessionPlan.js +54 -0
- package/dist/utils/ensureSessionPlan.js.map +1 -0
- package/dist/utils/fileSendPlan.d.ts +217 -0
- package/dist/utils/fileSendPlan.d.ts.map +1 -0
- package/dist/utils/fileSendPlan.js +291 -0
- package/dist/utils/fileSendPlan.js.map +1 -0
- package/dist/utils/fileSendService.d.ts +94 -0
- package/dist/utils/fileSendService.d.ts.map +1 -0
- package/dist/utils/fileSendService.js +387 -0
- package/dist/utils/fileSendService.js.map +1 -0
- package/dist/utils/groupFinalizePlan.d.ts +38 -0
- package/dist/utils/groupFinalizePlan.d.ts.map +1 -0
- package/dist/utils/groupFinalizePlan.js +35 -0
- package/dist/utils/groupFinalizePlan.js.map +1 -0
- package/dist/utils/identicalOutputGuard.d.ts +83 -0
- package/dist/utils/identicalOutputGuard.d.ts.map +1 -0
- package/dist/utils/identicalOutputGuard.js +99 -0
- package/dist/utils/identicalOutputGuard.js.map +1 -0
- package/dist/utils/isoTimestamp.d.ts +16 -0
- package/dist/utils/isoTimestamp.d.ts.map +1 -0
- package/dist/utils/isoTimestamp.js +34 -0
- package/dist/utils/isoTimestamp.js.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts +130 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.js +122 -0
- package/dist/utils/jsonStreamBusyWatchdog.js.map +1 -0
- package/dist/utils/jsonStreamHost.d.ts +227 -0
- package/dist/utils/jsonStreamHost.d.ts.map +1 -0
- package/dist/utils/jsonStreamHost.js +417 -0
- package/dist/utils/jsonStreamHost.js.map +1 -0
- package/dist/utils/keyedTransitionQueue.d.ts +18 -0
- package/dist/utils/keyedTransitionQueue.d.ts.map +1 -0
- package/dist/utils/keyedTransitionQueue.js +34 -0
- package/dist/utils/keyedTransitionQueue.js.map +1 -0
- package/dist/utils/limitEpisodeRecovery.d.ts +92 -0
- package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -0
- package/dist/utils/limitEpisodeRecovery.js +133 -0
- package/dist/utils/limitEpisodeRecovery.js.map +1 -0
- package/dist/utils/limitHeldPromptQueue.d.ts +48 -0
- package/dist/utils/limitHeldPromptQueue.d.ts.map +1 -0
- package/dist/utils/limitHeldPromptQueue.js +59 -0
- package/dist/utils/limitHeldPromptQueue.js.map +1 -0
- package/dist/utils/limitHeldPrompts.d.ts +58 -0
- package/dist/utils/limitHeldPrompts.d.ts.map +1 -0
- package/dist/utils/limitHeldPrompts.js +65 -0
- package/dist/utils/limitHeldPrompts.js.map +1 -0
- package/dist/utils/linkPreviewSuppression.d.ts +18 -0
- package/dist/utils/linkPreviewSuppression.d.ts.map +1 -0
- package/dist/utils/linkPreviewSuppression.js +37 -0
- package/dist/utils/linkPreviewSuppression.js.map +1 -0
- package/dist/utils/localClock.d.ts +15 -0
- package/dist/utils/localClock.d.ts.map +1 -0
- package/dist/utils/localClock.js +29 -0
- package/dist/utils/localClock.js.map +1 -0
- package/dist/utils/markdownTableRender.d.ts +83 -0
- package/dist/utils/markdownTableRender.d.ts.map +1 -0
- package/dist/utils/markdownTableRender.js +298 -0
- package/dist/utils/markdownTableRender.js.map +1 -0
- package/dist/utils/mediaGroupCollector.d.ts +51 -0
- package/dist/utils/mediaGroupCollector.d.ts.map +1 -0
- package/dist/utils/mediaGroupCollector.js +90 -0
- package/dist/utils/mediaGroupCollector.js.map +1 -0
- package/dist/utils/messageSendService.d.ts +136 -0
- package/dist/utils/messageSendService.d.ts.map +1 -0
- package/dist/utils/messageSendService.js +165 -0
- package/dist/utils/messageSendService.js.map +1 -0
- package/dist/utils/minutesOverride.d.ts +7 -0
- package/dist/utils/minutesOverride.d.ts.map +1 -0
- package/dist/utils/minutesOverride.js +16 -0
- package/dist/utils/minutesOverride.js.map +1 -0
- package/dist/utils/modelPickerPlan.d.ts +119 -0
- package/dist/utils/modelPickerPlan.d.ts.map +1 -0
- package/dist/utils/modelPickerPlan.js +171 -0
- package/dist/utils/modelPickerPlan.js.map +1 -0
- package/dist/utils/modelSetReplyDecision.d.ts +67 -0
- package/dist/utils/modelSetReplyDecision.d.ts.map +1 -0
- package/dist/utils/modelSetReplyDecision.js +27 -0
- package/dist/utils/modelSetReplyDecision.js.map +1 -0
- package/dist/utils/openCodeAuthLogin.d.ts +181 -0
- package/dist/utils/openCodeAuthLogin.d.ts.map +1 -0
- package/dist/utils/openCodeAuthLogin.js +393 -0
- package/dist/utils/openCodeAuthLogin.js.map +1 -0
- package/dist/utils/openCodeCompactPlugin.d.ts +81 -0
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -0
- package/dist/utils/openCodeCompactPlugin.js +146 -0
- package/dist/utils/openCodeCompactPlugin.js.map +1 -0
- package/dist/utils/openCodeTurnActivity.d.ts +67 -0
- package/dist/utils/openCodeTurnActivity.d.ts.map +1 -0
- package/dist/utils/openCodeTurnActivity.js +27 -0
- package/dist/utils/openCodeTurnActivity.js.map +1 -0
- package/dist/utils/outputDebounce.d.ts +24 -0
- package/dist/utils/outputDebounce.d.ts.map +1 -0
- package/dist/utils/outputDebounce.js +30 -0
- package/dist/utils/outputDebounce.js.map +1 -0
- package/dist/utils/outputFlushTiming.d.ts +54 -0
- package/dist/utils/outputFlushTiming.d.ts.map +1 -0
- package/dist/utils/outputFlushTiming.js +48 -0
- package/dist/utils/outputFlushTiming.js.map +1 -0
- package/dist/utils/paginateList.d.ts +25 -0
- package/dist/utils/paginateList.d.ts.map +1 -0
- package/dist/utils/paginateList.js +32 -0
- package/dist/utils/paginateList.js.map +1 -0
- package/dist/utils/paneDiff.d.ts +55 -0
- package/dist/utils/paneDiff.d.ts.map +1 -0
- package/dist/utils/paneDiff.js +88 -0
- package/dist/utils/paneDiff.js.map +1 -0
- package/dist/utils/paneResizeGuard.d.ts +69 -0
- package/dist/utils/paneResizeGuard.d.ts.map +1 -0
- package/dist/utils/paneResizeGuard.js +91 -0
- package/dist/utils/paneResizeGuard.js.map +1 -0
- package/dist/utils/persistAdapterSessionIds.d.ts +39 -0
- package/dist/utils/persistAdapterSessionIds.d.ts.map +1 -0
- package/dist/utils/persistAdapterSessionIds.js +28 -0
- package/dist/utils/persistAdapterSessionIds.js.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts +44 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.js +20 -0
- package/dist/utils/pinnedBannerSkipDecision.js.map +1 -0
- package/dist/utils/pollBackoff.d.ts +45 -0
- package/dist/utils/pollBackoff.d.ts.map +1 -0
- package/dist/utils/pollBackoff.js +44 -0
- package/dist/utils/pollBackoff.js.map +1 -0
- package/dist/utils/promptDelivery.d.ts +46 -0
- package/dist/utils/promptDelivery.d.ts.map +1 -0
- package/dist/utils/promptDelivery.js +49 -0
- package/dist/utils/promptDelivery.js.map +1 -0
- package/dist/utils/providerDisconnectPlan.d.ts +82 -0
- package/dist/utils/providerDisconnectPlan.d.ts.map +1 -0
- package/dist/utils/providerDisconnectPlan.js +110 -0
- package/dist/utils/providerDisconnectPlan.js.map +1 -0
- package/dist/utils/rateLimitLog.d.ts +48 -0
- package/dist/utils/rateLimitLog.d.ts.map +1 -0
- package/dist/utils/rateLimitLog.js +43 -0
- package/dist/utils/rateLimitLog.js.map +1 -0
- package/dist/utils/recentRelayWindow.d.ts +165 -0
- package/dist/utils/recentRelayWindow.d.ts.map +1 -0
- package/dist/utils/recentRelayWindow.js +284 -0
- package/dist/utils/recentRelayWindow.js.map +1 -0
- package/dist/utils/recvPreviewRedaction.d.ts +23 -0
- package/dist/utils/recvPreviewRedaction.d.ts.map +1 -0
- package/dist/utils/recvPreviewRedaction.js +39 -0
- package/dist/utils/recvPreviewRedaction.js.map +1 -0
- package/dist/utils/reminderFlow.d.ts +148 -0
- package/dist/utils/reminderFlow.d.ts.map +1 -0
- package/dist/utils/reminderFlow.js +122 -0
- package/dist/utils/reminderFlow.js.map +1 -0
- package/dist/utils/reminderScheduleText.d.ts +87 -0
- package/dist/utils/reminderScheduleText.d.ts.map +1 -0
- package/dist/utils/reminderScheduleText.js +135 -0
- package/dist/utils/reminderScheduleText.js.map +1 -0
- package/dist/utils/reminderWizard.d.ts +710 -0
- package/dist/utils/reminderWizard.d.ts.map +1 -0
- package/dist/utils/reminderWizard.js +1164 -0
- package/dist/utils/reminderWizard.js.map +1 -0
- package/dist/utils/replyQuote.d.ts +111 -0
- package/dist/utils/replyQuote.d.ts.map +1 -0
- package/dist/utils/replyQuote.js +122 -0
- package/dist/utils/replyQuote.js.map +1 -0
- package/dist/utils/resolveBinary.d.ts +25 -0
- package/dist/utils/resolveBinary.d.ts.map +1 -0
- package/dist/utils/resolveBinary.js +99 -0
- package/dist/utils/resolveBinary.js.map +1 -0
- package/dist/utils/retryAfterHeader.d.ts +7 -0
- package/dist/utils/retryAfterHeader.d.ts.map +1 -0
- package/dist/utils/retryAfterHeader.js +17 -0
- package/dist/utils/retryAfterHeader.js.map +1 -0
- package/dist/utils/rotatingJsonlFile.d.ts +40 -0
- package/dist/utils/rotatingJsonlFile.d.ts.map +1 -0
- package/dist/utils/rotatingJsonlFile.js +106 -0
- package/dist/utils/rotatingJsonlFile.js.map +1 -0
- package/dist/utils/rotatingLogFile.d.ts +25 -0
- package/dist/utils/rotatingLogFile.d.ts.map +1 -0
- package/dist/utils/rotatingLogFile.js +74 -0
- package/dist/utils/rotatingLogFile.js.map +1 -0
- package/dist/utils/sendRateTracker.d.ts +59 -0
- package/dist/utils/sendRateTracker.d.ts.map +1 -0
- package/dist/utils/sendRateTracker.js +144 -0
- package/dist/utils/sendRateTracker.js.map +1 -0
- package/dist/utils/serialQueue.d.ts +5 -0
- package/dist/utils/serialQueue.d.ts.map +1 -0
- package/dist/utils/serialQueue.js +14 -0
- package/dist/utils/serialQueue.js.map +1 -0
- package/dist/utils/sseStreamLifecycle.d.ts +32 -0
- package/dist/utils/sseStreamLifecycle.d.ts.map +1 -0
- package/dist/utils/sseStreamLifecycle.js +41 -0
- package/dist/utils/sseStreamLifecycle.js.map +1 -0
- package/dist/utils/startupReadiness.d.ts +119 -0
- package/dist/utils/startupReadiness.d.ts.map +1 -0
- package/dist/utils/startupReadiness.js +148 -0
- package/dist/utils/startupReadiness.js.map +1 -0
- package/dist/utils/statusFlushDecision.d.ts +18 -0
- package/dist/utils/statusFlushDecision.d.ts.map +1 -0
- package/dist/utils/statusFlushDecision.js +53 -0
- package/dist/utils/statusFlushDecision.js.map +1 -0
- package/dist/utils/subagentRender.d.ts +52 -0
- package/dist/utils/subagentRender.d.ts.map +1 -0
- package/dist/utils/subagentRender.js +66 -0
- package/dist/utils/subagentRender.js.map +1 -0
- package/dist/utils/subagentStatusRender.d.ts +90 -0
- package/dist/utils/subagentStatusRender.d.ts.map +1 -0
- package/dist/utils/subagentStatusRender.js +124 -0
- package/dist/utils/subagentStatusRender.js.map +1 -0
- package/dist/utils/telegramError.d.ts +2 -0
- package/dist/utils/telegramError.d.ts.map +1 -0
- package/dist/utils/telegramError.js +16 -0
- package/dist/utils/telegramError.js.map +1 -0
- package/dist/utils/terminalEmitPlan.d.ts +74 -0
- package/dist/utils/terminalEmitPlan.d.ts.map +1 -0
- package/dist/utils/terminalEmitPlan.js +86 -0
- package/dist/utils/terminalEmitPlan.js.map +1 -0
- package/dist/utils/thinkingRender.d.ts +74 -0
- package/dist/utils/thinkingRender.d.ts.map +1 -0
- package/dist/utils/thinkingRender.js +85 -0
- package/dist/utils/thinkingRender.js.map +1 -0
- package/dist/utils/threadStatusReport.d.ts +55 -0
- package/dist/utils/threadStatusReport.d.ts.map +1 -0
- package/dist/utils/threadStatusReport.js +65 -0
- package/dist/utils/threadStatusReport.js.map +1 -0
- package/dist/utils/threadToggle.d.ts +29 -0
- package/dist/utils/threadToggle.d.ts.map +1 -0
- package/dist/utils/threadToggle.js +39 -0
- package/dist/utils/threadToggle.js.map +1 -0
- package/dist/utils/timezone.d.ts +125 -0
- package/dist/utils/timezone.d.ts.map +1 -0
- package/dist/utils/timezone.js +278 -0
- package/dist/utils/timezone.js.map +1 -0
- package/dist/utils/tmuxExec.d.ts +61 -0
- package/dist/utils/tmuxExec.d.ts.map +1 -0
- package/dist/utils/tmuxExec.js +109 -0
- package/dist/utils/tmuxExec.js.map +1 -0
- package/dist/utils/tmuxSessionName.d.ts +34 -0
- package/dist/utils/tmuxSessionName.d.ts.map +1 -0
- package/dist/utils/tmuxSessionName.js +51 -0
- package/dist/utils/tmuxSessionName.js.map +1 -0
- package/dist/utils/toolResultRender.d.ts +61 -0
- package/dist/utils/toolResultRender.d.ts.map +1 -0
- package/dist/utils/toolResultRender.js +62 -0
- package/dist/utils/toolResultRender.js.map +1 -0
- package/dist/utils/topicRequest.d.ts +61 -0
- package/dist/utils/topicRequest.d.ts.map +1 -0
- package/dist/utils/topicRequest.js +68 -0
- package/dist/utils/topicRequest.js.map +1 -0
- package/dist/utils/topicView.d.ts +55 -0
- package/dist/utils/topicView.d.ts.map +1 -0
- package/dist/utils/topicView.js +56 -0
- package/dist/utils/topicView.js.map +1 -0
- package/dist/utils/transcribeAudio.d.ts +89 -0
- package/dist/utils/transcribeAudio.d.ts.map +1 -0
- package/dist/utils/transcribeAudio.js +249 -0
- package/dist/utils/transcribeAudio.js.map +1 -0
- package/dist/utils/transientFrames.d.ts +52 -0
- package/dist/utils/transientFrames.d.ts.map +1 -0
- package/dist/utils/transientFrames.js +41 -0
- package/dist/utils/transientFrames.js.map +1 -0
- package/dist/utils/typingActive.d.ts +35 -0
- package/dist/utils/typingActive.d.ts.map +1 -0
- package/dist/utils/typingActive.js +22 -0
- package/dist/utils/typingActive.js.map +1 -0
- package/dist/utils/typingLoopBackstop.d.ts +64 -0
- package/dist/utils/typingLoopBackstop.d.ts.map +1 -0
- package/dist/utils/typingLoopBackstop.js +68 -0
- package/dist/utils/typingLoopBackstop.js.map +1 -0
- package/dist/utils/verbosityRender.d.ts +18 -0
- package/dist/utils/verbosityRender.d.ts.map +1 -0
- package/dist/utils/verbosityRender.js +17 -0
- package/dist/utils/verbosityRender.js.map +1 -0
- package/dist/utils/wedgeRecovery.d.ts +57 -0
- package/dist/utils/wedgeRecovery.d.ts.map +1 -0
- package/dist/utils/wedgeRecovery.js +24 -0
- package/dist/utils/wedgeRecovery.js.map +1 -0
- package/dist/utils.d.ts +30 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +61 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.d.ts +113 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +226 -0
- package/dist/validation.js.map +1 -0
- package/dist/voiceQueue.d.ts +7 -0
- package/dist/voiceQueue.d.ts.map +1 -0
- package/dist/voiceQueue.js +33 -0
- package/dist/voiceQueue.js.map +1 -0
- package/examples/.env.example +17 -0
- package/examples/docker-compose.yml +36 -0
- package/package.json +83 -4
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RequestLedger = exports.RequestLedgerNotLoadedError = exports.closedRequestIndexMaxSize = exports.supersededRequestIdsMaxLength = exports.requestPromptMaxLength = exports.requestHistoryMaxBytes = void 0;
|
|
7
|
+
exports.parseClosedRequestLine = parseClosedRequestLine;
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const node_crypto_1 = require("node:crypto");
|
|
10
|
+
const sessionKey_1 = require("../sessionKey");
|
|
11
|
+
const state_1 = require("../state");
|
|
12
|
+
const rotatingJsonlFile_1 = require("../utils/rotatingJsonlFile");
|
|
13
|
+
const requestGroup_1 = require("./requestGroup");
|
|
14
|
+
/**
|
|
15
|
+
* @description The request ledger (core plan S2): which unit of work each
|
|
16
|
+
* conversation's agent still owes an answer to.
|
|
17
|
+
*
|
|
18
|
+
* open set — `state.json` `openRequests`, at most ONE per request GROUP
|
|
19
|
+
* (`requestGroup.ts`: the platform-agnostic `SessionKey` of the
|
|
20
|
+
* conversation — Telegram topics and tracker issues alike — plus
|
|
21
|
+
* the requester). A new request SUPERSEDES the group's open one;
|
|
22
|
+
* other requesters' requests in the conversation stay open.
|
|
23
|
+
* history — `DATA_DIR/requests.jsonl`, one line per CLOSED request
|
|
24
|
+
* (append-only, one rotated backup).
|
|
25
|
+
*
|
|
26
|
+
* A recently closed request stays known by id — an answer to it is still
|
|
27
|
+
* delivered, it just changes no request — so the history is indexed in memory
|
|
28
|
+
* at {@link RequestLedger.load}, bounded to the most recent
|
|
29
|
+
* {@link closedRequestIndexMaxSize} closed requests. A new request is durably
|
|
30
|
+
* saved before its id is handed out. Until the load resolves the ledger refuses every call
|
|
31
|
+
* (it throws): the bot MCP server starts serving before sessions re-attach, and
|
|
32
|
+
* an answer looked up against a not-yet-loaded history would wrongly be refused
|
|
33
|
+
* as an unknown id. Tool handlers gate on {@link RequestLedger.whenLoaded}.
|
|
34
|
+
*
|
|
35
|
+
* Crash ordering: the history line is written BEFORE the open entry is dropped,
|
|
36
|
+
* and `load` drops any open entry the history already shows closed — so a crash
|
|
37
|
+
* between the two writes never leaves a request both open and closed.
|
|
38
|
+
*/
|
|
39
|
+
/** History size bound per file before it rolls to `.1` (same as the run ledger). */
|
|
40
|
+
exports.requestHistoryMaxBytes = 10 * 1024 * 1024;
|
|
41
|
+
/** The longest prompt an open request keeps for a re-post (R21); `state.json` is rewritten whole. */
|
|
42
|
+
exports.requestPromptMaxLength = 64_000;
|
|
43
|
+
/** Request ids read `req_<random>`: short enough for a prompt header, unguessable across topics. */
|
|
44
|
+
const requestIdPrefix = 'req_';
|
|
45
|
+
/** 6 random bytes → 8 base64url chars, 48 bits. */
|
|
46
|
+
const requestIdRandomByteLength = 6;
|
|
47
|
+
/**
|
|
48
|
+
* How many replaced ids a request carries (`supersededRequestIds`): a requester
|
|
49
|
+
* who keeps writing without an answer in between builds a chain, and the header
|
|
50
|
+
* naming it must stay short. The newest ones are kept.
|
|
51
|
+
*/
|
|
52
|
+
exports.supersededRequestIdsMaxLength = 10;
|
|
53
|
+
/**
|
|
54
|
+
* How many CLOSED requests stay known by id (the most recent ones). A closed id
|
|
55
|
+
* is looked up only for a late answer — a turn still running when a newer
|
|
56
|
+
* request superseded its own — which arrives minutes, at most hours (a usage
|
|
57
|
+
* limit wait) after the close. 5 000 covers weeks of traffic even with every
|
|
58
|
+
* operator message a request (a few hundred a day), while keeping memory fixed
|
|
59
|
+
* (~1–2 MB) regardless of how long the bot runs. An answer to an id that fell
|
|
60
|
+
* out of the window is refused as unknown.
|
|
61
|
+
*/
|
|
62
|
+
exports.closedRequestIndexMaxSize = 5_000;
|
|
63
|
+
/** Thrown when the ledger is used before {@link RequestLedger.load} resolved. */
|
|
64
|
+
class RequestLedgerNotLoadedError extends Error {
|
|
65
|
+
constructor() {
|
|
66
|
+
super('request ledger used before load() resolved');
|
|
67
|
+
this.name = 'RequestLedgerNotLoadedError';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.RequestLedgerNotLoadedError = RequestLedgerNotLoadedError;
|
|
71
|
+
const closeReasons = new Set(['final', 'question', 'superseded', 'cancelled']);
|
|
72
|
+
const originKinds = new Set(['message', 'scheduledRun', 'trackerEvent']);
|
|
73
|
+
/** Default history path under the live `DATA_DIR`. */
|
|
74
|
+
function getDefaultHistoryPath() {
|
|
75
|
+
return node_path_1.default.join((0, state_1.resolveDataDir)(), 'requests.jsonl');
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @description Parse one history line, or `null` for a line that is not a
|
|
79
|
+
* closed request (truncated by a crash, hand-edited, written by a different
|
|
80
|
+
* version). Every field is checked and the record rebuilt from them.
|
|
81
|
+
*/
|
|
82
|
+
function parseClosedRequestLine(line) {
|
|
83
|
+
let parsed;
|
|
84
|
+
try {
|
|
85
|
+
parsed = JSON.parse(line);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
91
|
+
return null;
|
|
92
|
+
const { id, conversationKey, closedAt, closeReason, origin, createdAt, progressAnswerCount, silentTurnCount, wakeCount, isWakeStopped, nextWakeAt, lastTurnActivityAt, alertRef, isLimitStopped, limitWaitAnsweredFor, supersededBy, supersededRequestIds, } = parsed;
|
|
93
|
+
if (typeof id !== 'string' || typeof conversationKey !== 'string')
|
|
94
|
+
return null;
|
|
95
|
+
if (closeReason === undefined || !closeReasons.has(closeReason))
|
|
96
|
+
return null;
|
|
97
|
+
if (typeof origin !== 'object' || origin === null || !originKinds.has(origin.kind))
|
|
98
|
+
return null;
|
|
99
|
+
const { attributes } = origin;
|
|
100
|
+
// The answer sink of a closed request's platform reads these back verbatim.
|
|
101
|
+
if (typeof attributes !== 'object' || attributes === null || Array.isArray(attributes))
|
|
102
|
+
return null;
|
|
103
|
+
if (!Object.values(attributes).every((value) => typeof value === 'string'))
|
|
104
|
+
return null;
|
|
105
|
+
if (typeof closedAt !== 'number' || typeof createdAt !== 'number' || typeof progressAnswerCount !== 'number' ||
|
|
106
|
+
typeof silentTurnCount !== 'number' || typeof wakeCount !== 'number' || typeof isWakeStopped !== 'boolean') {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
id,
|
|
111
|
+
conversationKey,
|
|
112
|
+
closedAt,
|
|
113
|
+
closeReason,
|
|
114
|
+
origin: { kind: origin.kind, attributes },
|
|
115
|
+
createdAt,
|
|
116
|
+
progressAnswerCount,
|
|
117
|
+
silentTurnCount,
|
|
118
|
+
wakeCount,
|
|
119
|
+
isWakeStopped,
|
|
120
|
+
// Optional fields keep their absence (`state.json` omits them when unset).
|
|
121
|
+
...(typeof nextWakeAt === 'number' ? { nextWakeAt } : {}),
|
|
122
|
+
...(typeof lastTurnActivityAt === 'number' ? { lastTurnActivityAt } : {}),
|
|
123
|
+
...(typeof alertRef === 'string' ? { alertRef } : {}),
|
|
124
|
+
...(typeof isLimitStopped === 'boolean' ? { isLimitStopped } : {}),
|
|
125
|
+
...(typeof limitWaitAnsweredFor === 'string' ? { limitWaitAnsweredFor } : {}),
|
|
126
|
+
...(typeof supersededBy === 'string' ? { supersededBy } : {}),
|
|
127
|
+
...(Array.isArray(supersededRequestIds) && supersededRequestIds.every((value) => typeof value === 'string')
|
|
128
|
+
? { supersededRequestIds }
|
|
129
|
+
: {}),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
class RequestLedger {
|
|
133
|
+
store;
|
|
134
|
+
history;
|
|
135
|
+
now;
|
|
136
|
+
closedIndexMaxSize;
|
|
137
|
+
releaseAlert;
|
|
138
|
+
onRequestCreated;
|
|
139
|
+
onPromptSettled;
|
|
140
|
+
/** Request ids whose alert release is under way, so two paths never release one twice at once. */
|
|
141
|
+
alertReleasesInFlight = new Set();
|
|
142
|
+
/** Insertion order = close order, so the first key is always the oldest. */
|
|
143
|
+
closedById = new Map();
|
|
144
|
+
loadPromise = null;
|
|
145
|
+
isLoaded = false;
|
|
146
|
+
resolveLoaded = () => { };
|
|
147
|
+
loadedPromise = new Promise((resolve) => {
|
|
148
|
+
this.resolveLoaded = resolve;
|
|
149
|
+
});
|
|
150
|
+
constructor(deps) {
|
|
151
|
+
this.store = deps.store;
|
|
152
|
+
this.history = deps.history ?? new rotatingJsonlFile_1.RotatingJsonlFile(getDefaultHistoryPath(), exports.requestHistoryMaxBytes);
|
|
153
|
+
this.now = deps.now ?? Date.now;
|
|
154
|
+
this.closedIndexMaxSize = deps.closedIndexMaxSize ?? exports.closedRequestIndexMaxSize;
|
|
155
|
+
this.releaseAlert = deps.releaseAlert;
|
|
156
|
+
this.onRequestCreated = deps.onRequestCreated;
|
|
157
|
+
this.onPromptSettled = deps.onPromptSettled;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* @description Index the closed-request history and drop open entries it
|
|
161
|
+
* already shows closed. Idempotent: every call returns the same promise. A
|
|
162
|
+
* history that cannot be read rejects (the boot surfaces it) and leaves the
|
|
163
|
+
* ledger unloaded rather than serving a partial index as the truth.
|
|
164
|
+
*/
|
|
165
|
+
load() {
|
|
166
|
+
this.loadPromise ??= this.runLoad();
|
|
167
|
+
return this.loadPromise;
|
|
168
|
+
}
|
|
169
|
+
/** @description Resolves once {@link load} has finished; never rejects. */
|
|
170
|
+
whenLoaded() {
|
|
171
|
+
return this.loadedPromise;
|
|
172
|
+
}
|
|
173
|
+
/** @description True once {@link load} has finished. */
|
|
174
|
+
checkIsLoaded() {
|
|
175
|
+
return this.isLoaded;
|
|
176
|
+
}
|
|
177
|
+
async runLoad() {
|
|
178
|
+
let skippedLineCount = 0;
|
|
179
|
+
for (const line of await this.history.readLines()) {
|
|
180
|
+
const record = parseClosedRequestLine(line);
|
|
181
|
+
if (record)
|
|
182
|
+
this.indexClosed(record);
|
|
183
|
+
else
|
|
184
|
+
skippedLineCount += 1;
|
|
185
|
+
}
|
|
186
|
+
let droppedOpenCount = 0;
|
|
187
|
+
for (const entry of this.getOpenEntries()) {
|
|
188
|
+
if (!this.closedById.has(entry.request.id))
|
|
189
|
+
continue;
|
|
190
|
+
// It closed before the crash, so its alert was never handed to a release.
|
|
191
|
+
// Listed BEFORE the entry goes, so no crash between the two can lose it.
|
|
192
|
+
const { alertRef } = entry.request;
|
|
193
|
+
if (alertRef !== undefined) {
|
|
194
|
+
this.store.addUnreleasedRequestAlert(entry.request.id, { conversationKey: (0, sessionKey_1.keyToString)(entry.key), alertRef });
|
|
195
|
+
}
|
|
196
|
+
await this.store.updateOpenRequest(entry.group, (current) => (current?.id === entry.request.id ? undefined : current));
|
|
197
|
+
droppedOpenCount += 1;
|
|
198
|
+
}
|
|
199
|
+
this.isLoaded = true;
|
|
200
|
+
this.resolveLoaded();
|
|
201
|
+
for (const [requestId, alert] of Object.entries(this.store.getUnreleasedRequestAlerts())) {
|
|
202
|
+
void this.releaseAlertOf(requestId, alert);
|
|
203
|
+
}
|
|
204
|
+
console.log(`[requests] ledger loaded: ${this.getOpenEntries().length} open, ${this.closedById.size} recently closed known` +
|
|
205
|
+
(droppedOpenCount > 0 ? `, ${droppedOpenCount} open entries already closed dropped` : '') +
|
|
206
|
+
(skippedLineCount > 0 ? `, ${skippedLineCount} unreadable history lines skipped` : ''));
|
|
207
|
+
}
|
|
208
|
+
assertLoaded() {
|
|
209
|
+
if (!this.isLoaded)
|
|
210
|
+
throw new RequestLedgerNotLoadedError();
|
|
211
|
+
}
|
|
212
|
+
/** Open entries whose group key still decodes (a key of an unregistered platform is left alone), oldest first. */
|
|
213
|
+
getOpenEntries() {
|
|
214
|
+
const entries = [];
|
|
215
|
+
for (const [groupString, request] of Object.entries(this.store.getOpenRequests())) {
|
|
216
|
+
const group = (0, requestGroup_1.tryRequestGroupKeyFromString)(groupString);
|
|
217
|
+
if (group)
|
|
218
|
+
entries.push({ key: group.conversation, group, request });
|
|
219
|
+
}
|
|
220
|
+
return entries.sort((a, b) => a.request.createdAt - b.request.createdAt);
|
|
221
|
+
}
|
|
222
|
+
getOpenEntryById(id) {
|
|
223
|
+
return this.getOpenEntries().find((entry) => entry.request.id === id);
|
|
224
|
+
}
|
|
225
|
+
createRequestId() {
|
|
226
|
+
const openIds = new Set(Object.values(this.store.getOpenRequests()).map((request) => request.id));
|
|
227
|
+
for (;;) {
|
|
228
|
+
const id = `${requestIdPrefix}${(0, node_crypto_1.randomBytes)(requestIdRandomByteLength).toString('base64url')}`;
|
|
229
|
+
if (!openIds.has(id) && !this.closedById.has(id))
|
|
230
|
+
return id;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/** A close settles the prompt unless it was already taken in: by its own answer it was, otherwise it was dropped. */
|
|
234
|
+
getCloseOutcome(closing) {
|
|
235
|
+
if (closing.isPromptTakenIn === true)
|
|
236
|
+
return null;
|
|
237
|
+
return closing.closeReason === 'final' || closing.closeReason === 'question' ? 'takenIn' : 'dropped';
|
|
238
|
+
}
|
|
239
|
+
notePromptSettled(key, settled) {
|
|
240
|
+
for (const { requestId, outcome } of settled)
|
|
241
|
+
this.onPromptSettled?.(key, requestId, outcome);
|
|
242
|
+
}
|
|
243
|
+
appendClosed(closing) {
|
|
244
|
+
// The prompt was kept for a re-post only; a closed request is never re-posted,
|
|
245
|
+
// and the history must not grow by every prompt (issue text included).
|
|
246
|
+
const { prompt: _prompt, isPromptTakenIn: _isPromptTakenIn, ...record } = closing;
|
|
247
|
+
if (!this.history.append(record)) {
|
|
248
|
+
console.warn(`[requests] could not append ${record.id} to ${this.history.filePath}; it is closed in memory only`);
|
|
249
|
+
}
|
|
250
|
+
this.indexClosed(record);
|
|
251
|
+
if (record.alertRef !== undefined) {
|
|
252
|
+
this.queueAlertRelease(record.id, { conversationKey: record.conversationKey, alertRef: record.alertRef });
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Record a closed request's alert as still to release (synchronously, so it
|
|
257
|
+
* rides the close's own save), then release it.
|
|
258
|
+
*/
|
|
259
|
+
queueAlertRelease(requestId, alert) {
|
|
260
|
+
this.store.addUnreleasedRequestAlert(requestId, alert);
|
|
261
|
+
void this.releaseAlertOf(requestId, alert);
|
|
262
|
+
}
|
|
263
|
+
/** Release an alert; it leaves the unreleased list only once the release succeeded. */
|
|
264
|
+
async releaseAlertOf(requestId, alert) {
|
|
265
|
+
if (!this.releaseAlert || this.alertReleasesInFlight.has(requestId))
|
|
266
|
+
return;
|
|
267
|
+
this.alertReleasesInFlight.add(requestId);
|
|
268
|
+
try {
|
|
269
|
+
await this.releaseAlert(alert);
|
|
270
|
+
this.store.removeUnreleasedRequestAlert(requestId);
|
|
271
|
+
}
|
|
272
|
+
catch (e) {
|
|
273
|
+
console.warn(`[requests] releasing the alert of ${requestId} failed; retried at the next start:`, e instanceof Error ? e.message : e);
|
|
274
|
+
}
|
|
275
|
+
finally {
|
|
276
|
+
this.alertReleasesInFlight.delete(requestId);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* @description Store the alert a request now holds, DURABLY (flushed): a crash
|
|
281
|
+
* that lost it would leave the alert pinned forever. Resolves `false` when the
|
|
282
|
+
* request closed meanwhile — its close found no alert, so it is released here.
|
|
283
|
+
*/
|
|
284
|
+
async recordAlert(key, requestId, alertRef) {
|
|
285
|
+
this.assertLoaded();
|
|
286
|
+
const stored = await this.updateOpenRequest(requestId, { alertRef });
|
|
287
|
+
if (stored) {
|
|
288
|
+
await this.store.flush();
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
this.queueAlertRelease(requestId, { conversationKey: (0, sessionKey_1.keyToString)(key), alertRef });
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
/** Remember a closed request by id, forgetting the oldest beyond the window. */
|
|
295
|
+
indexClosed(record) {
|
|
296
|
+
this.closedById.delete(record.id);
|
|
297
|
+
this.closedById.set(record.id, record);
|
|
298
|
+
while (this.closedById.size > this.closedIndexMaxSize) {
|
|
299
|
+
const oldestId = this.closedById.keys().next().value;
|
|
300
|
+
if (oldestId === undefined)
|
|
301
|
+
break;
|
|
302
|
+
this.closedById.delete(oldestId);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* @description Open a new request for `key`'s conversation. The open request of
|
|
307
|
+
* the same GROUP (same conversation, same requester — `getRequestGroupKey`), if
|
|
308
|
+
* any, is closed as `superseded` first, in the same atomic step — the latest
|
|
309
|
+
* message of a requester is the one that matters, and the new request names it
|
|
310
|
+
* (and what it had replaced in turn) in `supersededRequestIds`, so the agent
|
|
311
|
+
* answers only what the new one adds. Another requester's open request in the conversation is
|
|
312
|
+
* untouched. A request WITHOUT a requester (persisted before requesters
|
|
313
|
+
* existed, or raised by an origin that names none) keeps the old rule: the
|
|
314
|
+
* conversation's next request supersedes it whoever raised that one — else it
|
|
315
|
+
* would linger, woken again and again, with nothing left that could close it.
|
|
316
|
+
* Resolves only once the new request is DURABLY saved: its id is
|
|
317
|
+
* about to reach an agent, and an id the agent was told about but a crash lost
|
|
318
|
+
* would make its answer refused as unknown — a dropped result.
|
|
319
|
+
*/
|
|
320
|
+
async createRequest(key, origin, options = {}) {
|
|
321
|
+
this.assertLoaded();
|
|
322
|
+
const createdAt = this.now();
|
|
323
|
+
const conversationKey = (0, sessionKey_1.keyToString)(key);
|
|
324
|
+
const group = (0, requestGroup_1.getRequestGroupKey)(key, origin);
|
|
325
|
+
const id = this.createRequestId();
|
|
326
|
+
const requesterlessGroup = { conversation: key, requester: requestGroup_1.emptyRequester };
|
|
327
|
+
const requesterless = group.requester === requestGroup_1.emptyRequester ? undefined : this.store.getOpenRequest(requesterlessGroup);
|
|
328
|
+
let request = null;
|
|
329
|
+
const settled = [];
|
|
330
|
+
const closeSuperseded = (current) => {
|
|
331
|
+
const record = { ...current, conversationKey, closedAt: createdAt, closeReason: 'superseded', supersededBy: id };
|
|
332
|
+
this.appendClosed(record);
|
|
333
|
+
const outcome = this.getCloseOutcome(record);
|
|
334
|
+
if (outcome)
|
|
335
|
+
settled.push({ requestId: record.id, outcome });
|
|
336
|
+
};
|
|
337
|
+
await this.store.updateOpenRequest(group, (current) => {
|
|
338
|
+
const supersededRequestIds = [requesterless, current]
|
|
339
|
+
.flatMap((replaced) => (replaced ? [...(replaced.supersededRequestIds ?? []), replaced.id] : []))
|
|
340
|
+
.slice(-exports.supersededRequestIdsMaxLength);
|
|
341
|
+
const prompt = options.createPrompt?.(id, supersededRequestIds);
|
|
342
|
+
if (prompt !== undefined && prompt.length > exports.requestPromptMaxLength) {
|
|
343
|
+
console.warn(`[requests] ${id}: prompt of ${prompt.length} chars not kept (over ${exports.requestPromptMaxLength}); a wake-up sends a reminder instead`);
|
|
344
|
+
}
|
|
345
|
+
const created = {
|
|
346
|
+
id,
|
|
347
|
+
origin,
|
|
348
|
+
createdAt,
|
|
349
|
+
progressAnswerCount: 0,
|
|
350
|
+
silentTurnCount: 0,
|
|
351
|
+
wakeCount: 0,
|
|
352
|
+
isWakeStopped: false,
|
|
353
|
+
...(prompt !== undefined && prompt.length <= exports.requestPromptMaxLength ? { prompt } : {}),
|
|
354
|
+
...(supersededRequestIds.length > 0 ? { supersededRequestIds } : {}),
|
|
355
|
+
};
|
|
356
|
+
if (current)
|
|
357
|
+
closeSuperseded(current);
|
|
358
|
+
request = created;
|
|
359
|
+
return created;
|
|
360
|
+
});
|
|
361
|
+
if (!request)
|
|
362
|
+
throw new Error(`[requests] ${id}: the store did not run the create`);
|
|
363
|
+
if (requesterless) {
|
|
364
|
+
// Its own group, so a separate step AFTER the create: a crash between the two
|
|
365
|
+
// leaves it open for the conversation's next request, never a lost new one.
|
|
366
|
+
await this.store.updateOpenRequest(requesterlessGroup, (current) => {
|
|
367
|
+
if (current?.id !== requesterless.id)
|
|
368
|
+
return current;
|
|
369
|
+
closeSuperseded(current);
|
|
370
|
+
return undefined;
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
await this.store.flush();
|
|
374
|
+
this.notePromptSettled(key, settled);
|
|
375
|
+
this.onRequestCreated?.(key, request);
|
|
376
|
+
return request;
|
|
377
|
+
}
|
|
378
|
+
/** @description A request by id, open or closed, or `null` for an unknown id. */
|
|
379
|
+
getRequest(id) {
|
|
380
|
+
this.assertLoaded();
|
|
381
|
+
const open = this.getOpenEntryById(id);
|
|
382
|
+
if (open)
|
|
383
|
+
return { isOpen: true, conversationKey: (0, sessionKey_1.keyToString)(open.key), request: open.request };
|
|
384
|
+
const closed = this.closedById.get(id);
|
|
385
|
+
return closed ? { isOpen: false, conversationKey: closed.conversationKey, request: closed } : null;
|
|
386
|
+
}
|
|
387
|
+
/** @description The open request `id`, with its conversation, or `undefined` when `id` is not open. */
|
|
388
|
+
getOpenRequestById(id) {
|
|
389
|
+
this.assertLoaded();
|
|
390
|
+
return this.getOpenEntryById(id);
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* @description The open requests of `key`'s conversation, oldest first — one per
|
|
394
|
+
* requester at most (see `requestGroup.ts`).
|
|
395
|
+
*/
|
|
396
|
+
listOpenRequestsOf(key) {
|
|
397
|
+
this.assertLoaded();
|
|
398
|
+
const conversationKey = (0, sessionKey_1.keyToString)(key);
|
|
399
|
+
return this.getOpenEntries()
|
|
400
|
+
.filter((entry) => (0, sessionKey_1.keyToString)(entry.key) === conversationKey)
|
|
401
|
+
.map((entry) => entry.request);
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* @description The NEWEST open request of `key`'s conversation, or `undefined`.
|
|
405
|
+
* A conversation may hold one open request per requester; a caller that must
|
|
406
|
+
* act on all of them uses {@link listOpenRequestsOf}.
|
|
407
|
+
*/
|
|
408
|
+
getNewestOpenRequest(key) {
|
|
409
|
+
this.assertLoaded();
|
|
410
|
+
return this.listOpenRequestsOf(key).at(-1);
|
|
411
|
+
}
|
|
412
|
+
/** @description Every open request with its conversation, oldest first. */
|
|
413
|
+
listOpenRequests() {
|
|
414
|
+
this.assertLoaded();
|
|
415
|
+
return this.getOpenEntries();
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* @description Change the answer and wake-up bookkeeping of an open request.
|
|
419
|
+
* Resolves the updated request, or `null` when `id` is not open (closed or
|
|
420
|
+
* superseded in the meantime — the update is then dropped, never applied to
|
|
421
|
+
* its successor).
|
|
422
|
+
*/
|
|
423
|
+
async updateOpenRequest(id, update) {
|
|
424
|
+
this.assertLoaded();
|
|
425
|
+
const entry = this.getOpenEntryById(id);
|
|
426
|
+
if (!entry)
|
|
427
|
+
return null;
|
|
428
|
+
let updated = null;
|
|
429
|
+
let isTakenInNow = false;
|
|
430
|
+
await this.store.updateOpenRequest(entry.group, (current) => {
|
|
431
|
+
if (current?.id !== id)
|
|
432
|
+
return current;
|
|
433
|
+
const next = { ...current, ...(typeof update === 'function' ? update(current) : update) };
|
|
434
|
+
isTakenInNow = current.isPromptTakenIn !== true && next.isPromptTakenIn === true;
|
|
435
|
+
updated = next;
|
|
436
|
+
return next;
|
|
437
|
+
});
|
|
438
|
+
if (isTakenInNow)
|
|
439
|
+
this.notePromptSettled(entry.key, [{ requestId: id, outcome: 'takenIn' }]);
|
|
440
|
+
return updated;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* @description Close an open request. Resolves the closed record, or `null` when
|
|
444
|
+
* `id` is not open (an already closed request is never closed twice).
|
|
445
|
+
*/
|
|
446
|
+
async closeRequest(id, reason) {
|
|
447
|
+
this.assertLoaded();
|
|
448
|
+
const entry = this.getOpenEntryById(id);
|
|
449
|
+
if (!entry)
|
|
450
|
+
return null;
|
|
451
|
+
const conversationKey = (0, sessionKey_1.keyToString)(entry.key);
|
|
452
|
+
let closed = null;
|
|
453
|
+
await this.store.updateOpenRequest(entry.group, (current) => {
|
|
454
|
+
if (current?.id !== id)
|
|
455
|
+
return current;
|
|
456
|
+
const record = { ...current, conversationKey, closedAt: this.now(), closeReason: reason };
|
|
457
|
+
this.appendClosed(record);
|
|
458
|
+
closed = record;
|
|
459
|
+
return undefined;
|
|
460
|
+
});
|
|
461
|
+
const outcome = closed ? this.getCloseOutcome(closed) : null;
|
|
462
|
+
if (outcome)
|
|
463
|
+
this.notePromptSettled(entry.key, [{ requestId: id, outcome }]);
|
|
464
|
+
return closed;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
exports.RequestLedger = RequestLedger;
|
|
468
|
+
//# sourceMappingURL=requestLedger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestLedger.js","sourceRoot":"","sources":["../../src/requests/requestLedger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { SessionKey } from '../sessionKey';
|
|
2
|
+
import type { AgentAdapter } from '../types';
|
|
3
|
+
import type { SessionTurnProbe } from './wakeUpRules';
|
|
4
|
+
/**
|
|
5
|
+
* @description How the wake-up engine sees a conversation's session right now
|
|
6
|
+
* (request/answer core S4), built from the adapter and the bot's per-thread
|
|
7
|
+
* state. Kept out of `bot.ts` so each "not a turn end" rule is testable.
|
|
8
|
+
*
|
|
9
|
+
* What holds a turn open (a wake-up must not fire, a watched turn has not ended):
|
|
10
|
+
* - a pending native question — the bot's own pending state, the question pin,
|
|
11
|
+
* or the adapter reading a TUI selector / login code prompt off the pane (the
|
|
12
|
+
* pin exists only when pinning succeeded, so the adapter is the authority);
|
|
13
|
+
* - a running compaction;
|
|
14
|
+
* - an API-error retry or usage-limit wait still ARMED — a fired record stays
|
|
15
|
+
* for its grace window, and counting it would hold the turn until the next
|
|
16
|
+
* user message;
|
|
17
|
+
* - a wedged-turn recovery in flight: it restarts the session and replays the
|
|
18
|
+
* original prompt (which carries the request header), so a reminder on top
|
|
19
|
+
* would be a second recovery of the same turn;
|
|
20
|
+
* - an API-error retry or limit resume being KICKED: from the moment its timer
|
|
21
|
+
* fired until its "continue" nudge was forwarded the retry is no longer armed,
|
|
22
|
+
* yet the idle the error left behind is not a turn end either;
|
|
23
|
+
* - a session START under way: a request's first post is starting the session it
|
|
24
|
+
* will run in, so nothing has gone quiet — without this the sweep reads the
|
|
25
|
+
* request as one nobody works on and wakes it (or raises an alert) once the
|
|
26
|
+
* backstop window is shorter than the start.
|
|
27
|
+
*
|
|
28
|
+
* A session still starting has not taken in what was forwarded to it either: the
|
|
29
|
+
* prompt waits in the startup buffer, while a backend may already report itself
|
|
30
|
+
* active with nothing unread.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* @name SessionTurnProbeDeps
|
|
34
|
+
* @description The bot state the probe reads, per serialized conversation key.
|
|
35
|
+
* `getApiRetryTimer` returns `undefined` when there is no record, `null` when the
|
|
36
|
+
* record's timer already fired, the timer while it is armed.
|
|
37
|
+
*/
|
|
38
|
+
export interface SessionTurnProbeDeps {
|
|
39
|
+
getAdapter: (key: SessionKey) => Pick<AgentAdapter, 'checkIsActive' | 'checkIsBusy' | 'checkHasUnconsumedInput' | 'isQuestionPending' | 'isLoginPastePending'>;
|
|
40
|
+
checkHasPendingQuestion: (keyString: string) => boolean;
|
|
41
|
+
checkHasQuestionPin: (keyString: string) => boolean;
|
|
42
|
+
checkIsCompacting: (keyString: string) => boolean;
|
|
43
|
+
getApiRetryTimer: (keyString: string) => NodeJS.Timeout | null | undefined;
|
|
44
|
+
checkIsWedgeRecoveryInFlight: (keyString: string) => boolean;
|
|
45
|
+
checkIsRetryKickInFlight: (keyString: string) => boolean;
|
|
46
|
+
/** The session is in its startup window: prompts forwarded now are buffered, not written. */
|
|
47
|
+
checkIsSessionStarting: (keyString: string) => boolean;
|
|
48
|
+
serializeKey: (key: SessionKey) => string;
|
|
49
|
+
}
|
|
50
|
+
/** @description Build the probe the wake-up engine polls. */
|
|
51
|
+
export declare function createSessionTurnProbe(deps: SessionTurnProbeDeps): (key: SessionKey) => SessionTurnProbe;
|
|
52
|
+
//# sourceMappingURL=sessionTurnProbe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionTurnProbe.d.ts","sourceRoot":"","sources":["../../src/requests/sessionTurnProbe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CACnC,YAAY,EACZ,eAAe,GAAG,aAAa,GAAG,yBAAyB,GAAG,mBAAmB,GAAG,qBAAqB,CAC1G,CAAC;IACF,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACxD,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACpD,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3E,4BAA4B,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACzD,6FAA6F;IAC7F,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,YAAY,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,CAAC;CAC3C;AAED,6DAA6D;AAC7D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,gBAAgB,CAwBxG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSessionTurnProbe = createSessionTurnProbe;
|
|
4
|
+
/** @description Build the probe the wake-up engine polls. */
|
|
5
|
+
function createSessionTurnProbe(deps) {
|
|
6
|
+
return (key) => {
|
|
7
|
+
const keyString = deps.serializeKey(key);
|
|
8
|
+
const adapter = deps.getAdapter(key);
|
|
9
|
+
const isActive = adapter.checkIsActive(key);
|
|
10
|
+
const isTurnEndBlocked = deps.checkHasPendingQuestion(keyString) ||
|
|
11
|
+
deps.checkHasQuestionPin(keyString) ||
|
|
12
|
+
(adapter.isQuestionPending?.(key) ?? false) ||
|
|
13
|
+
(adapter.isLoginPastePending?.(key) ?? false) ||
|
|
14
|
+
deps.checkIsCompacting(keyString) ||
|
|
15
|
+
Boolean(deps.getApiRetryTimer(keyString)) ||
|
|
16
|
+
deps.checkIsWedgeRecoveryInFlight(keyString) ||
|
|
17
|
+
deps.checkIsRetryKickInFlight(keyString) ||
|
|
18
|
+
deps.checkIsSessionStarting(keyString);
|
|
19
|
+
return {
|
|
20
|
+
isActive,
|
|
21
|
+
isBusy: isActive && (adapter.checkIsBusy?.(key) ?? false),
|
|
22
|
+
hasUnconsumedInput: deps.checkIsSessionStarting(keyString)
|
|
23
|
+
? true
|
|
24
|
+
: adapter.checkHasUnconsumedInput ? adapter.checkHasUnconsumedInput(key) : null,
|
|
25
|
+
isTurnEndBlocked,
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=sessionTurnProbe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionTurnProbe.js","sourceRoot":"","sources":["../../src/requests/sessionTurnProbe.ts"],"names":[],"mappings":";;AAwDA,wDAwBC;AAzBD,6DAA6D;AAC7D,SAAgB,sBAAsB,CAAC,IAA0B;IAC/D,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,gBAAgB,GACpB,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;YACnC,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;YAC3C,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;YAC7C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC;YAC5C,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;YACxC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO;YACL,QAAQ;YACR,MAAM,EAAE,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;YACzD,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;gBACxD,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;YACjF,gBAAgB;SACjB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|