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,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createdTriggerId = void 0;
|
|
4
|
+
exports.findNewestTrigger = findNewestTrigger;
|
|
5
|
+
exports.getIssueTrigger = getIssueTrigger;
|
|
6
|
+
exports.checkIsPersonAccount = checkIsPersonAccount;
|
|
7
|
+
exports.findEarlierPerson = findEarlierPerson;
|
|
8
|
+
exports.getRequester = getRequester;
|
|
9
|
+
/**
|
|
10
|
+
* @description Which change made an issue a request (Jira connector plan J5,
|
|
11
|
+
* D11–D12): the newest changelog entry that set the assignee to the AI account
|
|
12
|
+
* or moved the status into the trigger set. An issue created already matching
|
|
13
|
+
* has no such entry; its trigger is the creation itself. And who asked (J5b,
|
|
14
|
+
* R24): the person behind that change, or — when an app or automation made it —
|
|
15
|
+
* the nearest person before it, else the reporter. Pure: the poller hands in the
|
|
16
|
+
* changelog entries it read, newest pages first.
|
|
17
|
+
*/
|
|
18
|
+
/** The trigger id of an issue that matched from its creation. */
|
|
19
|
+
exports.createdTriggerId = 'created';
|
|
20
|
+
/** Jira's `accountType` of a person (an app or automation is `app`). */
|
|
21
|
+
const personAccountType = 'atlassian';
|
|
22
|
+
/** A changelog item names its field by `fieldId` (stable) or, on older entries, only by `field`. */
|
|
23
|
+
function getItemField(item) {
|
|
24
|
+
return item.fieldId ?? item.field;
|
|
25
|
+
}
|
|
26
|
+
function getHistoryKind(history, match) {
|
|
27
|
+
for (const item of history.items) {
|
|
28
|
+
const field = getItemField(item);
|
|
29
|
+
if (field === 'assignee' && item.to === match.aiAccountId)
|
|
30
|
+
return 'assigned';
|
|
31
|
+
if (field === 'status' && item.to !== null && item.to !== undefined && match.triggerStatusIds.has(item.to))
|
|
32
|
+
return 'statusChanged';
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
/** Newest first: by creation time, then by id (Jira's ids grow). */
|
|
37
|
+
function compareHistoriesNewestFirst(left, right) {
|
|
38
|
+
const byTime = Date.parse(right.created) - Date.parse(left.created);
|
|
39
|
+
return byTime !== 0 && Number.isFinite(byTime) ? byTime : Number(right.id) - Number(left.id);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @description The newest entry among `histories` that matches, or `null`. When
|
|
43
|
+
* `histories` are the NEWEST entries of the changelog (any number of its last
|
|
44
|
+
* pages), a match among them is the newest of the whole changelog — what lets
|
|
45
|
+
* the poller stop reading at the first page that holds one.
|
|
46
|
+
*/
|
|
47
|
+
function findNewestTrigger(histories, match) {
|
|
48
|
+
for (const history of [...histories].sort(compareHistoriesNewestFirst)) {
|
|
49
|
+
const kind = getHistoryKind(history, match);
|
|
50
|
+
if (kind)
|
|
51
|
+
return { triggerId: history.id, kind, author: history.author ?? null };
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
/** The trigger over a WHOLE changelog: its newest matching entry, else the creation. */
|
|
56
|
+
function getIssueTrigger(histories, match, creator) {
|
|
57
|
+
return findNewestTrigger(histories, match) ?? { triggerId: exports.createdTriggerId, kind: 'created', author: creator };
|
|
58
|
+
}
|
|
59
|
+
/** A person, as opposed to an app or automation; a missing type is read as a person. */
|
|
60
|
+
function checkIsPersonAccount(account) {
|
|
61
|
+
return account.accountType === undefined || account.accountType === personAccountType;
|
|
62
|
+
}
|
|
63
|
+
/** A person who may be handed an issue back: not an app, not the AI account itself. */
|
|
64
|
+
function checkIsRequesterCandidate(account, aiAccountId) {
|
|
65
|
+
return account !== null && account !== undefined && checkIsPersonAccount(account) && account.accountId !== aiAccountId;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* @description R24: the nearest person BEFORE the trigger in `histories` — the
|
|
69
|
+
* author of the newest older entry who is a person other than the AI account —
|
|
70
|
+
* or `null` when none of these entries has one (the caller may read older pages).
|
|
71
|
+
* Nothing comes before a creation trigger.
|
|
72
|
+
*/
|
|
73
|
+
function findEarlierPerson(histories, trigger, aiAccountId) {
|
|
74
|
+
if (trigger.kind === 'created')
|
|
75
|
+
return null;
|
|
76
|
+
const newestFirst = [...histories].sort(compareHistoriesNewestFirst);
|
|
77
|
+
const triggerIndex = newestFirst.findIndex((history) => history.id === trigger.triggerId);
|
|
78
|
+
if (triggerIndex < 0)
|
|
79
|
+
return null;
|
|
80
|
+
return newestFirst.slice(triggerIndex + 1).find((history) => checkIsRequesterCandidate(history.author, aiAccountId))?.author ?? null;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @description The requester ("sender") an answer goes back to: the trigger's
|
|
84
|
+
* author when a person made the change; when an app or automation made it (or
|
|
85
|
+
* Jira names no one), the nearest earlier person in the changelog (R24), else the
|
|
86
|
+
* issue's reporter — an app cannot read a comment or take the issue back.
|
|
87
|
+
*/
|
|
88
|
+
function getRequester(trigger, histories, reporter, aiAccountId) {
|
|
89
|
+
if (checkIsRequesterCandidate(trigger.author, aiAccountId))
|
|
90
|
+
return trigger.author;
|
|
91
|
+
return findEarlierPerson(histories, trigger, aiAccountId) ?? reporter;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../../src/connectors/jira/trigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { RotatingJsonlFile } from '../../utils/rotatingJsonlFile';
|
|
3
|
+
/**
|
|
4
|
+
* @description The Jira connector's trigger log (plan J5, D12):
|
|
5
|
+
* `DATA_DIR/jira-triggers.jsonl`, one line per trigger the poller decided on,
|
|
6
|
+
* indexed in memory at boot. It is what keeps a trigger from becoming a second
|
|
7
|
+
* request — after a restart too — and what the run budget counts. Connector-
|
|
8
|
+
* owned, so the core request ledger stays platform-agnostic.
|
|
9
|
+
*/
|
|
10
|
+
export declare const jiraTriggerLogFileName = "jira-triggers.jsonl";
|
|
11
|
+
/**
|
|
12
|
+
* @name JiraTriggerOutcome
|
|
13
|
+
* @description `request` — a request was opened; `selfAuthored` — the AI account
|
|
14
|
+
* made the change itself; `parked` — the issue was over its run budget.
|
|
15
|
+
*/
|
|
16
|
+
export type JiraTriggerOutcome = 'request' | 'selfAuthored' | 'parked';
|
|
17
|
+
declare const triggerRecordSchema: z.ZodObject<{
|
|
18
|
+
issueKey: z.ZodString;
|
|
19
|
+
triggerId: z.ZodString;
|
|
20
|
+
outcome: z.ZodEnum<{
|
|
21
|
+
request: "request";
|
|
22
|
+
selfAuthored: "selfAuthored";
|
|
23
|
+
parked: "parked";
|
|
24
|
+
}>;
|
|
25
|
+
at: z.ZodNumber;
|
|
26
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
export type JiraTriggerRecord = z.infer<typeof triggerRecordSchema>;
|
|
29
|
+
export declare class JiraTriggerLog {
|
|
30
|
+
private readonly file;
|
|
31
|
+
private readonly seen;
|
|
32
|
+
private readonly requestTimesByIssue;
|
|
33
|
+
constructor(file: RotatingJsonlFile<JiraTriggerRecord>);
|
|
34
|
+
static createForDataDir(filePath: string): JiraTriggerLog;
|
|
35
|
+
/** @description Index the file. A line that does not parse is skipped with a warning (never fatal). */
|
|
36
|
+
load(): Promise<void>;
|
|
37
|
+
private index;
|
|
38
|
+
checkIsSeen(issueKey: string, triggerId: string): boolean;
|
|
39
|
+
/** @description Requests opened for the issue in the rolling 24 h before `nowMs`. */
|
|
40
|
+
getRequestCountLastDay(issueKey: string, nowMs: number): number;
|
|
41
|
+
/** @description Persist a decision; `false` when the line could not be written (then nothing is indexed). */
|
|
42
|
+
record(record: JiraTriggerRecord): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* @description Index a decision whose line could not be written, for this
|
|
45
|
+
* process only: a request already posted is never posted again before a
|
|
46
|
+
* restart (after one, its trigger reads as new).
|
|
47
|
+
*/
|
|
48
|
+
remember(record: JiraTriggerRecord): void;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=triggerLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerLog.d.ts","sourceRoot":"","sources":["../../../src/connectors/jira/triggerLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE;;;;;;GAMG;AAEH,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAK5D;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,cAAc,GAAG,QAAQ,CAAC;AAEvE,QAAA,MAAM,mBAAmB;;;;;;;;;;iBAOvB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMpE,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA+B;gBAEtC,IAAI,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;IAEvE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAIzD,uGAAuG;IACjG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,OAAO,CAAC,KAAK;IAQb,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAIzD,qFAAqF;IACrF,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI/D,6GAA6G;IAC7G,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO;IAM1C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;CAG1C"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JiraTriggerLog = exports.jiraTriggerLogFileName = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const rotatingJsonlFile_1 = require("../../utils/rotatingJsonlFile");
|
|
6
|
+
/**
|
|
7
|
+
* @description The Jira connector's trigger log (plan J5, D12):
|
|
8
|
+
* `DATA_DIR/jira-triggers.jsonl`, one line per trigger the poller decided on,
|
|
9
|
+
* indexed in memory at boot. It is what keeps a trigger from becoming a second
|
|
10
|
+
* request — after a restart too — and what the run budget counts. Connector-
|
|
11
|
+
* owned, so the core request ledger stays platform-agnostic.
|
|
12
|
+
*/
|
|
13
|
+
exports.jiraTriggerLogFileName = 'jira-triggers.jsonl';
|
|
14
|
+
/** Ample for years of triggers; the one `.1` backup is read too. */
|
|
15
|
+
const jiraTriggerLogMaxBytes = 10 * 1024 * 1024;
|
|
16
|
+
const msPerDay = 24 * 60 * 60 * 1000;
|
|
17
|
+
const triggerRecordSchema = zod_1.z.object({
|
|
18
|
+
issueKey: zod_1.z.string().min(1),
|
|
19
|
+
triggerId: zod_1.z.string().min(1),
|
|
20
|
+
outcome: zod_1.z.enum(['request', 'selfAuthored', 'parked']),
|
|
21
|
+
/** Epoch ms. */
|
|
22
|
+
at: zod_1.z.number(),
|
|
23
|
+
requestId: zod_1.z.string().optional(),
|
|
24
|
+
});
|
|
25
|
+
function getTriggerIdentity(issueKey, triggerId) {
|
|
26
|
+
return `${issueKey}\u0000${triggerId}`;
|
|
27
|
+
}
|
|
28
|
+
class JiraTriggerLog {
|
|
29
|
+
file;
|
|
30
|
+
seen = new Set();
|
|
31
|
+
requestTimesByIssue = new Map();
|
|
32
|
+
constructor(file) {
|
|
33
|
+
this.file = file;
|
|
34
|
+
}
|
|
35
|
+
static createForDataDir(filePath) {
|
|
36
|
+
return new JiraTriggerLog(new rotatingJsonlFile_1.RotatingJsonlFile(filePath, jiraTriggerLogMaxBytes));
|
|
37
|
+
}
|
|
38
|
+
/** @description Index the file. A line that does not parse is skipped with a warning (never fatal). */
|
|
39
|
+
async load() {
|
|
40
|
+
const { records, skippedCount } = await this.file.readRecords(triggerRecordSchema);
|
|
41
|
+
for (const record of records)
|
|
42
|
+
this.index(record);
|
|
43
|
+
if (skippedCount > 0)
|
|
44
|
+
console.warn(`[jira] trigger log: ${skippedCount} unreadable line(s) skipped`);
|
|
45
|
+
}
|
|
46
|
+
index(record) {
|
|
47
|
+
this.seen.add(getTriggerIdentity(record.issueKey, record.triggerId));
|
|
48
|
+
if (record.outcome !== 'request')
|
|
49
|
+
return;
|
|
50
|
+
const times = this.requestTimesByIssue.get(record.issueKey) ?? [];
|
|
51
|
+
times.push(record.at);
|
|
52
|
+
this.requestTimesByIssue.set(record.issueKey, times);
|
|
53
|
+
}
|
|
54
|
+
checkIsSeen(issueKey, triggerId) {
|
|
55
|
+
return this.seen.has(getTriggerIdentity(issueKey, triggerId));
|
|
56
|
+
}
|
|
57
|
+
/** @description Requests opened for the issue in the rolling 24 h before `nowMs`. */
|
|
58
|
+
getRequestCountLastDay(issueKey, nowMs) {
|
|
59
|
+
return (this.requestTimesByIssue.get(issueKey) ?? []).filter((at) => at > nowMs - msPerDay).length;
|
|
60
|
+
}
|
|
61
|
+
/** @description Persist a decision; `false` when the line could not be written (then nothing is indexed). */
|
|
62
|
+
record(record) {
|
|
63
|
+
if (!this.file.append(record))
|
|
64
|
+
return false;
|
|
65
|
+
this.index(record);
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @description Index a decision whose line could not be written, for this
|
|
70
|
+
* process only: a request already posted is never posted again before a
|
|
71
|
+
* restart (after one, its trigger reads as new).
|
|
72
|
+
*/
|
|
73
|
+
remember(record) {
|
|
74
|
+
this.index(record);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.JiraTriggerLog = JiraTriggerLog;
|
|
78
|
+
//# sourceMappingURL=triggerLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerLog.js","sourceRoot":"","sources":["../../../src/connectors/jira/triggerLog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { RotatingJsonlFile } from '../../utils/rotatingJsonlFile';
|
|
3
|
+
/**
|
|
4
|
+
* @description The comments of a request the answer sink posted without Jira
|
|
5
|
+
* confirming them (plan R29): `DATA_DIR/jira-unconfirmed-posts.jsonl`, one line
|
|
6
|
+
* per post that ended unconfirmed and one per entry settled later. When the
|
|
7
|
+
* agent sends the same text again for the same request, the sink reads the
|
|
8
|
+
* issue first and skips a comment that did land — after a restart too — so an
|
|
9
|
+
* answer is posted at most once. An entry older than a day is forgotten: the
|
|
10
|
+
* agent resends within minutes, not days.
|
|
11
|
+
*/
|
|
12
|
+
export declare const jiraUnconfirmedPostsFileName = "jira-unconfirmed-posts.jsonl";
|
|
13
|
+
export declare const unconfirmedPostMaxAgeMs: number;
|
|
14
|
+
declare const unconfirmedPostLineSchema: z.ZodObject<{
|
|
15
|
+
requestId: z.ZodString;
|
|
16
|
+
bodyHash: z.ZodString;
|
|
17
|
+
state: z.ZodEnum<{
|
|
18
|
+
unconfirmed: "unconfirmed";
|
|
19
|
+
settled: "settled";
|
|
20
|
+
}>;
|
|
21
|
+
at: z.ZodNumber;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
type UnconfirmedPostLine = z.infer<typeof unconfirmedPostLineSchema>;
|
|
24
|
+
/** @description The hash a comment's comparable text is remembered by — the text itself stays out of the file. */
|
|
25
|
+
export declare function getCommentBodyHash(comparableText: string): string;
|
|
26
|
+
export declare class JiraUnconfirmedPosts {
|
|
27
|
+
private readonly file;
|
|
28
|
+
private readonly now;
|
|
29
|
+
/** Post start time of every open entry, by request and body hash. */
|
|
30
|
+
private readonly postedAtByIdentity;
|
|
31
|
+
constructor(file: RotatingJsonlFile<UnconfirmedPostLine>, now: () => number);
|
|
32
|
+
static createForDataDir(filePath: string, now: () => number): JiraUnconfirmedPosts;
|
|
33
|
+
/**
|
|
34
|
+
* @description Replay the file, keeping only the entries still young enough to
|
|
35
|
+
* matter. A line that does not parse is skipped with a warning (never fatal).
|
|
36
|
+
*/
|
|
37
|
+
load(): Promise<void>;
|
|
38
|
+
private apply;
|
|
39
|
+
/** @description When the unconfirmed post of this body started, or `null` when there is none (or it is too old to matter). */
|
|
40
|
+
getPostedAt(requestId: string, bodyHash: string): number | null;
|
|
41
|
+
/**
|
|
42
|
+
* An entry past {@link unconfirmedPostMaxAgeMs} is dropped: most are never
|
|
43
|
+
* resent (the request closed, the agent sent other text), and kept they would
|
|
44
|
+
* only grow the map for the life of the process.
|
|
45
|
+
*/
|
|
46
|
+
private forgetExpired;
|
|
47
|
+
/**
|
|
48
|
+
* @description Remember a post Jira did not confirm. A line that cannot be
|
|
49
|
+
* written is still remembered for this process (a warning): the resend right
|
|
50
|
+
* after it is the one that matters most.
|
|
51
|
+
*/
|
|
52
|
+
recordUnconfirmed(requestId: string, bodyHash: string, postedAt: number): void;
|
|
53
|
+
/** @description The post landed, or a check found it did not: nothing to check on a resend any more. */
|
|
54
|
+
settle(requestId: string, bodyHash: string): void;
|
|
55
|
+
private write;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=unconfirmedPosts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unconfirmedPosts.d.ts","sourceRoot":"","sources":["../../../src/connectors/jira/unconfirmedPosts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE;;;;;;;;GAQG;AAEH,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAG3E,eAAO,MAAM,uBAAuB,QAAsB,CAAC;AAE3D,QAAA,MAAM,yBAAyB;;;;;;;;iBAO7B,CAAC;AAEH,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAErE,kHAAkH;AAClH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEjE;AAMD,qBAAa,oBAAoB;IAInB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAA0C,OAAO,CAAC,QAAQ,CAAC,GAAG;IAH/F,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;gBAEnC,IAAI,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,EAAmB,GAAG,EAAE,MAAM,MAAM;IAE7G,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,GAAG,oBAAoB;IAIlF;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,KAAK;IAMb,8HAA8H;IAC9H,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK/D;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI9E,wGAAwG;IACxG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKjD,OAAO,CAAC,KAAK;CAId"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JiraUnconfirmedPosts = exports.unconfirmedPostMaxAgeMs = exports.jiraUnconfirmedPostsFileName = void 0;
|
|
4
|
+
exports.getCommentBodyHash = getCommentBodyHash;
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const rotatingJsonlFile_1 = require("../../utils/rotatingJsonlFile");
|
|
8
|
+
/**
|
|
9
|
+
* @description The comments of a request the answer sink posted without Jira
|
|
10
|
+
* confirming them (plan R29): `DATA_DIR/jira-unconfirmed-posts.jsonl`, one line
|
|
11
|
+
* per post that ended unconfirmed and one per entry settled later. When the
|
|
12
|
+
* agent sends the same text again for the same request, the sink reads the
|
|
13
|
+
* issue first and skips a comment that did land — after a restart too — so an
|
|
14
|
+
* answer is posted at most once. An entry older than a day is forgotten: the
|
|
15
|
+
* agent resends within minutes, not days.
|
|
16
|
+
*/
|
|
17
|
+
exports.jiraUnconfirmedPostsFileName = 'jira-unconfirmed-posts.jsonl';
|
|
18
|
+
/** Unconfirmed posts are rare; ample for a long time, the one `.1` backup is read too. */
|
|
19
|
+
const unconfirmedPostsMaxBytes = 1024 * 1024;
|
|
20
|
+
exports.unconfirmedPostMaxAgeMs = 24 * 60 * 60 * 1000;
|
|
21
|
+
const unconfirmedPostLineSchema = zod_1.z.object({
|
|
22
|
+
requestId: zod_1.z.string().min(1),
|
|
23
|
+
bodyHash: zod_1.z.string().min(1),
|
|
24
|
+
/** `unconfirmed` — the post's outcome is unknown; `settled` — it no longer needs a check. */
|
|
25
|
+
state: zod_1.z.enum(['unconfirmed', 'settled']),
|
|
26
|
+
/** Epoch ms: when the post started (`unconfirmed`) or when it settled. */
|
|
27
|
+
at: zod_1.z.number(),
|
|
28
|
+
});
|
|
29
|
+
/** @description The hash a comment's comparable text is remembered by — the text itself stays out of the file. */
|
|
30
|
+
function getCommentBodyHash(comparableText) {
|
|
31
|
+
return (0, node_crypto_1.createHash)('sha256').update(comparableText).digest('hex');
|
|
32
|
+
}
|
|
33
|
+
function getPostIdentity(requestId, bodyHash) {
|
|
34
|
+
return `${requestId}\u0000${bodyHash}`;
|
|
35
|
+
}
|
|
36
|
+
class JiraUnconfirmedPosts {
|
|
37
|
+
file;
|
|
38
|
+
now;
|
|
39
|
+
/** Post start time of every open entry, by request and body hash. */
|
|
40
|
+
postedAtByIdentity = new Map();
|
|
41
|
+
constructor(file, now) {
|
|
42
|
+
this.file = file;
|
|
43
|
+
this.now = now;
|
|
44
|
+
}
|
|
45
|
+
static createForDataDir(filePath, now) {
|
|
46
|
+
return new JiraUnconfirmedPosts(new rotatingJsonlFile_1.RotatingJsonlFile(filePath, unconfirmedPostsMaxBytes), now);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @description Replay the file, keeping only the entries still young enough to
|
|
50
|
+
* matter. A line that does not parse is skipped with a warning (never fatal).
|
|
51
|
+
*/
|
|
52
|
+
async load() {
|
|
53
|
+
const { records, skippedCount } = await this.file.readRecords(unconfirmedPostLineSchema);
|
|
54
|
+
for (const line of records)
|
|
55
|
+
this.apply(line);
|
|
56
|
+
this.forgetExpired();
|
|
57
|
+
if (skippedCount > 0)
|
|
58
|
+
console.warn(`[jira] unconfirmed posts: ${skippedCount} unreadable line(s) skipped`);
|
|
59
|
+
}
|
|
60
|
+
apply(line) {
|
|
61
|
+
const identity = getPostIdentity(line.requestId, line.bodyHash);
|
|
62
|
+
if (line.state === 'unconfirmed')
|
|
63
|
+
this.postedAtByIdentity.set(identity, line.at);
|
|
64
|
+
else
|
|
65
|
+
this.postedAtByIdentity.delete(identity);
|
|
66
|
+
}
|
|
67
|
+
/** @description When the unconfirmed post of this body started, or `null` when there is none (or it is too old to matter). */
|
|
68
|
+
getPostedAt(requestId, bodyHash) {
|
|
69
|
+
this.forgetExpired();
|
|
70
|
+
return this.postedAtByIdentity.get(getPostIdentity(requestId, bodyHash)) ?? null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* An entry past {@link unconfirmedPostMaxAgeMs} is dropped: most are never
|
|
74
|
+
* resent (the request closed, the agent sent other text), and kept they would
|
|
75
|
+
* only grow the map for the life of the process.
|
|
76
|
+
*/
|
|
77
|
+
forgetExpired() {
|
|
78
|
+
const nowMs = this.now();
|
|
79
|
+
for (const [identity, postedAt] of this.postedAtByIdentity) {
|
|
80
|
+
if (nowMs - postedAt >= exports.unconfirmedPostMaxAgeMs)
|
|
81
|
+
this.postedAtByIdentity.delete(identity);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @description Remember a post Jira did not confirm. A line that cannot be
|
|
86
|
+
* written is still remembered for this process (a warning): the resend right
|
|
87
|
+
* after it is the one that matters most.
|
|
88
|
+
*/
|
|
89
|
+
recordUnconfirmed(requestId, bodyHash, postedAt) {
|
|
90
|
+
this.write({ requestId, bodyHash, state: 'unconfirmed', at: postedAt });
|
|
91
|
+
}
|
|
92
|
+
/** @description The post landed, or a check found it did not: nothing to check on a resend any more. */
|
|
93
|
+
settle(requestId, bodyHash) {
|
|
94
|
+
if (!this.postedAtByIdentity.has(getPostIdentity(requestId, bodyHash)))
|
|
95
|
+
return;
|
|
96
|
+
this.write({ requestId, bodyHash, state: 'settled', at: this.now() });
|
|
97
|
+
}
|
|
98
|
+
write(line) {
|
|
99
|
+
if (!this.file.append(line))
|
|
100
|
+
console.warn(`[jira] unconfirmed posts: request ${line.requestId}: the ${line.state} line could not be written`);
|
|
101
|
+
this.apply(line);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.JiraUnconfirmedPosts = JiraUnconfirmedPosts;
|
|
105
|
+
//# sourceMappingURL=unconfirmedPosts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unconfirmedPosts.js","sourceRoot":"","sources":["../../../src/connectors/jira/unconfirmedPosts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { AnswerSink } from '../../platform/answerSink';
|
|
2
|
+
import type { RequestAlertReason } from '../../requests/types';
|
|
3
|
+
import { type SessionKey } from '../../sessionKey';
|
|
4
|
+
import type { SendMessagesToThread } from '../../utils/messageSendService';
|
|
5
|
+
/**
|
|
6
|
+
* @name TelegramAnswerSinkDeps
|
|
7
|
+
* @description The bot primitives the sink drives. `postAlert` sends the
|
|
8
|
+
* localized alert text and resolves its message id (`null` when the send
|
|
9
|
+
* failed); the pin helpers swallow their own failures and `pinMessage` pins WITH
|
|
10
|
+
* a notification; the answer-pin store remembers the latest pinned answer per
|
|
11
|
+
* conversation across restarts.
|
|
12
|
+
*/
|
|
13
|
+
export interface TelegramAnswerSinkDeps {
|
|
14
|
+
sendMessages: SendMessagesToThread;
|
|
15
|
+
postAlert: (key: SessionKey, requestId: string, reason: RequestAlertReason) => Promise<number | null>;
|
|
16
|
+
pinMessage: (key: SessionKey, messageId: number) => Promise<boolean>;
|
|
17
|
+
unpinMessage: (key: SessionKey, messageId: number) => Promise<void>;
|
|
18
|
+
getAnswerPinMessageId: (key: SessionKey) => number | undefined;
|
|
19
|
+
setAnswerPinMessageId: (key: SessionKey, messageId: number) => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @description Telegram's answer sink (core S3, pins S8): an answer is posted as
|
|
23
|
+
* its own message (split over the message cap) through the same paced, recorded
|
|
24
|
+
* send path as `send_messages_to_user`, which reports whether it landed. A
|
|
25
|
+
* partial delivery (some of the split messages failed) still counts as
|
|
26
|
+
* delivered but comes back as a warning, so the agent knows part of the answer is
|
|
27
|
+
* missing.
|
|
28
|
+
*
|
|
29
|
+
* Every delivered answer is PINNED with a notification — the operator runs
|
|
30
|
+
* topics muted and a pin is what notifies — and only the LATEST answer of a
|
|
31
|
+
* conversation stays pinned: the previous answer's pin is released silently, the
|
|
32
|
+
* message itself stays in the chat. The record of the pinned answer is persisted,
|
|
33
|
+
* so an answer after a restart still releases the one before. A pin that fails
|
|
34
|
+
* leaves the previous record as it is — nothing was replaced. Native question
|
|
35
|
+
* pins and scheduled-run pins are separate records and never touched here. Of a
|
|
36
|
+
* split answer the FIRST message is pinned: the notification previews its start.
|
|
37
|
+
* The pin hand-over is serialized per conversation: two answers delivered at once
|
|
38
|
+
* (parallel `answer_request` calls) would otherwise both read the same previous
|
|
39
|
+
* pin and leave the earlier of them pinned for good.
|
|
40
|
+
*
|
|
41
|
+
* The wake-up alert (core S4) is a bot message naming the request, PINNED with a
|
|
42
|
+
* notification and unpinned when that request closes. Its message id is the
|
|
43
|
+
* alert handle.
|
|
44
|
+
*/
|
|
45
|
+
export declare function createTelegramAnswerSink(deps: TelegramAnswerSinkDeps): AnswerSink;
|
|
46
|
+
//# sourceMappingURL=answerSink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerSink.d.ts","sourceRoot":"","sources":["../../../src/connectors/telegram/answerSink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,oBAAoB,CAAC;IACnC,SAAS,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtG,UAAU,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,YAAY,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,qBAAqB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/D,qBAAqB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,UAAU,CAqCjF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTelegramAnswerSink = createTelegramAnswerSink;
|
|
4
|
+
const sessionKey_1 = require("../../sessionKey");
|
|
5
|
+
const state_1 = require("../../state");
|
|
6
|
+
/**
|
|
7
|
+
* @description Telegram's answer sink (core S3, pins S8): an answer is posted as
|
|
8
|
+
* its own message (split over the message cap) through the same paced, recorded
|
|
9
|
+
* send path as `send_messages_to_user`, which reports whether it landed. A
|
|
10
|
+
* partial delivery (some of the split messages failed) still counts as
|
|
11
|
+
* delivered but comes back as a warning, so the agent knows part of the answer is
|
|
12
|
+
* missing.
|
|
13
|
+
*
|
|
14
|
+
* Every delivered answer is PINNED with a notification — the operator runs
|
|
15
|
+
* topics muted and a pin is what notifies — and only the LATEST answer of a
|
|
16
|
+
* conversation stays pinned: the previous answer's pin is released silently, the
|
|
17
|
+
* message itself stays in the chat. The record of the pinned answer is persisted,
|
|
18
|
+
* so an answer after a restart still releases the one before. A pin that fails
|
|
19
|
+
* leaves the previous record as it is — nothing was replaced. Native question
|
|
20
|
+
* pins and scheduled-run pins are separate records and never touched here. Of a
|
|
21
|
+
* split answer the FIRST message is pinned: the notification previews its start.
|
|
22
|
+
* The pin hand-over is serialized per conversation: two answers delivered at once
|
|
23
|
+
* (parallel `answer_request` calls) would otherwise both read the same previous
|
|
24
|
+
* pin and leave the earlier of them pinned for good.
|
|
25
|
+
*
|
|
26
|
+
* The wake-up alert (core S4) is a bot message naming the request, PINNED with a
|
|
27
|
+
* notification and unpinned when that request closes. Its message id is the
|
|
28
|
+
* alert handle.
|
|
29
|
+
*/
|
|
30
|
+
function createTelegramAnswerSink(deps) {
|
|
31
|
+
const answerPinLock = new state_1.KeyLock();
|
|
32
|
+
function pinLatestAnswer(key, messageId) {
|
|
33
|
+
return answerPinLock.withLock((0, sessionKey_1.keyToString)(key), async () => {
|
|
34
|
+
const previousMessageId = deps.getAnswerPinMessageId(key);
|
|
35
|
+
if (previousMessageId === messageId)
|
|
36
|
+
return;
|
|
37
|
+
const isPinned = await deps.pinMessage(key, messageId);
|
|
38
|
+
if (!isPinned)
|
|
39
|
+
return;
|
|
40
|
+
// The new pin is up; the previous answer leaves the pinned bar quietly.
|
|
41
|
+
if (previousMessageId !== undefined)
|
|
42
|
+
await deps.unpinMessage(key, previousMessageId);
|
|
43
|
+
await deps.setAnswerPinMessageId(key, messageId);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
async deliverAnswer(key, delivery) {
|
|
48
|
+
const result = await deps.sendMessages((0, sessionKey_1.keyToString)(key), { messages: [delivery.body] });
|
|
49
|
+
if (!result.ok)
|
|
50
|
+
return { ok: false, error: result.error };
|
|
51
|
+
const [firstMessageId] = result.sentMessageIds;
|
|
52
|
+
if (firstMessageId !== undefined)
|
|
53
|
+
await pinLatestAnswer(key, firstMessageId);
|
|
54
|
+
return result.undeliveredCount > 0 ? { ok: true, warning: result.summary } : { ok: true };
|
|
55
|
+
},
|
|
56
|
+
async deliverAlert(key, alert) {
|
|
57
|
+
const messageId = await deps.postAlert(key, alert.requestId, alert.reason);
|
|
58
|
+
if (messageId === null)
|
|
59
|
+
return { ok: false, error: 'the alert message could not be sent' };
|
|
60
|
+
const isPinned = await deps.pinMessage(key, messageId);
|
|
61
|
+
// Unpinned it still stands in the topic; only a pinned one needs releasing.
|
|
62
|
+
return isPinned ? { ok: true, alertRef: messageId.toString() } : { ok: true };
|
|
63
|
+
},
|
|
64
|
+
async releaseAlert(key, alertRef) {
|
|
65
|
+
const messageId = Number(alertRef);
|
|
66
|
+
if (Number.isInteger(messageId))
|
|
67
|
+
await deps.unpinMessage(key, messageId);
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=answerSink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerSink.js","sourceRoot":"","sources":["../../../src/connectors/telegram/answerSink.ts"],"names":[],"mappings":";;AA+CA,4DAqCC;AAlFD,iDAAgE;AAChE,uCAAsC;AAoBtC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,wBAAwB,CAAC,IAA4B;IACnE,MAAM,aAAa,GAAG,IAAI,eAAO,EAAE,CAAC;IAEpC,SAAS,eAAe,CAAC,GAAe,EAAE,SAAiB;QACzD,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAA,wBAAW,EAAC,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAC1D,IAAI,iBAAiB,KAAK,SAAS;gBAAE,OAAO;YAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,wEAAwE;YACxE,IAAI,iBAAiB,KAAK,SAAS;gBAAE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YACrF,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAA,wBAAW,EAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1D,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;YAC/C,IAAI,cAAc,KAAK,SAAS;gBAAE,MAAM,eAAe,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC7E,OAAO,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC5F,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK;YAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3E,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;YAC3F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvD,4EAA4E;YAC5E,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAChF,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ;YAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Message } from 'telegraf/typings/core/types/typegram';
|
|
2
|
+
import type { SessionKey } from '../../../sessionKey';
|
|
3
|
+
import { RequestWakeUpEngine } from '../../../requests/wakeUpEngine';
|
|
4
|
+
import type { BotCore } from './botCore';
|
|
5
|
+
/**
|
|
6
|
+
* @description Append the shared `/auto_continue_limits` pointer to a usage-limit
|
|
7
|
+
* arming notice. ONE key appended at ONE place, so the reset-time notice and the
|
|
8
|
+
* "retrying in N min" fallback can never drift apart (the `effort.current_hint`
|
|
9
|
+
* block shared by both `/model`-set replies is the same pattern). No inline
|
|
10
|
+
* keyboard is needed: Telegram auto-links a bare command written in message text.
|
|
11
|
+
*/
|
|
12
|
+
export declare function appendAutoContinueLimitsHint(noticeText: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* What the auto-resume switch needs from the bot: the shared core, the armed usage-limit retry it reads and
|
|
15
|
+
* cancels, and the request wake-up engine, which exists only after the boot built it.
|
|
16
|
+
*/
|
|
17
|
+
export interface AutoContinueLimitsPorts extends Pick<BotCore, 'bot' | 'command' | 'getState' | 'replyToThread' | 'authoriseContext' | 'withThreadLocale' | 'checkIsGeneral'> {
|
|
18
|
+
getArmedLimitRetryFireAt: (key: SessionKey) => number | null;
|
|
19
|
+
cancelApiRetry: (key: SessionKey) => void;
|
|
20
|
+
getRequestWakeUpEngine: () => Pick<RequestWakeUpEngine, 'stopWakingForLimitWait'> | null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @description Build the auto-resume switch over its ports. It returns the picker consumer the usage-limit
|
|
24
|
+
* notice's own buttons call, and the `register…()` calls.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createAutoContinueLimits(ports: AutoContinueLimitsPorts): {
|
|
27
|
+
consumeAutoContinueLimitsPicker: (key: SessionKey, cbMsg: Message | undefined, text: string) => Promise<void>;
|
|
28
|
+
registerAutoContinueLimitsCommands: () => void;
|
|
29
|
+
registerAutoContinueLimitsCallbacks: () => void;
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=autoContinueLimits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoContinueLimits.d.ts","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/autoContinueLimits.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvE;AAqBD;;;GAGG;AACH,MAAM,WAAW,uBACf,SAAQ,IAAI,CACV,OAAO,EACP,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,gBAAgB,CAC9G;IACD,wBAAwB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,cAAc,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,sBAAsB,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE,wBAAwB,CAAC,GAAG,IAAI,CAAC;CAC1F;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB;2CAqCjB,UAAU,SAAS,OAAO,GAAG,SAAS,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;8CAqBzE,IAAI;+CA2BH,IAAI;EAWrD"}
|