charness 0.0.0-stage → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +88 -0
- package/DEVELOPMENT.md +110 -0
- package/LICENSE +21 -0
- package/MIGRATION_1_TO_2.md +24 -0
- package/README.md +1196 -2
- package/dist/accessControl.d.ts +71 -0
- package/dist/accessControl.d.ts.map +1 -0
- package/dist/accessControl.js +108 -0
- package/dist/accessControl.js.map +1 -0
- package/dist/adapters/adapterEventRouting.d.ts +51 -0
- package/dist/adapters/adapterEventRouting.d.ts.map +1 -0
- package/dist/adapters/adapterEventRouting.js +74 -0
- package/dist/adapters/adapterEventRouting.js.map +1 -0
- package/dist/adapters/adapterNames.d.ts +19 -0
- package/dist/adapters/adapterNames.d.ts.map +1 -0
- package/dist/adapters/adapterNames.js +25 -0
- package/dist/adapters/adapterNames.js.map +1 -0
- package/dist/adapters/claudeCliAdapter.d.ts +1351 -0
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeCliAdapter.js +4239 -0
- package/dist/adapters/claudeCliAdapter.js.map +1 -0
- package/dist/adapters/claudeConfigDir.d.ts +40 -0
- package/dist/adapters/claudeConfigDir.d.ts.map +1 -0
- package/dist/adapters/claudeConfigDir.js +3 -0
- package/dist/adapters/claudeConfigDir.js.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +580 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.js +1891 -0
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -0
- package/dist/adapters/claudePlatformFlags.d.ts +35 -0
- package/dist/adapters/claudePlatformFlags.d.ts.map +1 -0
- package/dist/adapters/claudePlatformFlags.js +46 -0
- package/dist/adapters/claudePlatformFlags.js.map +1 -0
- package/dist/adapters/createAdapter.d.ts +260 -0
- package/dist/adapters/createAdapter.d.ts.map +1 -0
- package/dist/adapters/createAdapter.js +512 -0
- package/dist/adapters/createAdapter.js.map +1 -0
- package/dist/adapters/openCodeAdapter.d.ts +1469 -0
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
- package/dist/adapters/openCodeAdapter.js +4623 -0
- package/dist/adapters/openCodeAdapter.js.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts +28 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.js +15 -0
- package/dist/adapters/sessionLaunchDefaults.js.map +1 -0
- package/dist/adapters/terminalAdapter.d.ts +68 -0
- package/dist/adapters/terminalAdapter.d.ts.map +1 -0
- package/dist/adapters/terminalAdapter.js +371 -0
- package/dist/adapters/terminalAdapter.js.map +1 -0
- package/dist/agentLogin/agentLogin.d.ts +44 -0
- package/dist/agentLogin/agentLogin.d.ts.map +1 -0
- package/dist/agentLogin/agentLogin.js +530 -0
- package/dist/agentLogin/agentLogin.js.map +1 -0
- package/dist/agentTrigger.d.ts +28 -0
- package/dist/agentTrigger.d.ts.map +1 -0
- package/dist/agentTrigger.js +53 -0
- package/dist/agentTrigger.js.map +1 -0
- package/dist/apiErrorRetry.d.ts +214 -0
- package/dist/apiErrorRetry.d.ts.map +1 -0
- package/dist/apiErrorRetry.js +382 -0
- package/dist/apiErrorRetry.js.map +1 -0
- package/dist/apiRetryKick.d.ts +157 -0
- package/dist/apiRetryKick.d.ts.map +1 -0
- package/dist/apiRetryKick.js +174 -0
- package/dist/apiRetryKick.js.map +1 -0
- package/dist/bootClassifier.d.ts +46 -0
- package/dist/bootClassifier.d.ts.map +1 -0
- package/dist/bootClassifier.js +43 -0
- package/dist/bootClassifier.js.map +1 -0
- package/dist/bot.d.ts +207 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +11226 -0
- package/dist/bot.js.map +1 -0
- package/dist/botFileStorage.d.ts +60 -0
- package/dist/botFileStorage.d.ts.map +1 -0
- package/dist/botFileStorage.js +205 -0
- package/dist/botFileStorage.js.map +1 -0
- package/dist/cli/applyDnsFix.d.ts +7 -0
- package/dist/cli/applyDnsFix.d.ts.map +1 -0
- package/dist/cli/applyDnsFix.js +46 -0
- package/dist/cli/applyDnsFix.js.map +1 -0
- package/dist/cli/bot.d.ts +27 -0
- package/dist/cli/bot.d.ts.map +1 -0
- package/dist/cli/bot.js +98 -0
- package/dist/cli/bot.js.map +1 -0
- package/dist/cli/botEntry.d.ts +3 -0
- package/dist/cli/botEntry.d.ts.map +1 -0
- package/dist/cli/botEntry.js +11 -0
- package/dist/cli/botEntry.js.map +1 -0
- package/dist/cli/claudeProfiles.d.ts +42 -0
- package/dist/cli/claudeProfiles.d.ts.map +1 -0
- package/dist/cli/claudeProfiles.js +106 -0
- package/dist/cli/claudeProfiles.js.map +1 -0
- package/dist/cli/connectorGuards.d.ts +31 -0
- package/dist/cli/connectorGuards.d.ts.map +1 -0
- package/dist/cli/connectorGuards.js +159 -0
- package/dist/cli/connectorGuards.js.map +1 -0
- package/dist/cli/envLoader.d.ts +34 -0
- package/dist/cli/envLoader.d.ts.map +1 -0
- package/dist/cli/envLoader.js +132 -0
- package/dist/cli/envLoader.js.map +1 -0
- package/dist/cli/hot.d.ts +82 -0
- package/dist/cli/hot.d.ts.map +1 -0
- package/dist/cli/hot.js +323 -0
- package/dist/cli/hot.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +140 -0
- package/dist/cli.js.map +1 -0
- package/dist/connectors/jira/adf.d.ts +74 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -0
- package/dist/connectors/jira/adf.js +412 -0
- package/dist/connectors/jira/adf.js.map +1 -0
- package/dist/connectors/jira/agentBinaries.d.ts +14 -0
- package/dist/connectors/jira/agentBinaries.d.ts.map +1 -0
- package/dist/connectors/jira/agentBinaries.js +75 -0
- package/dist/connectors/jira/agentBinaries.js.map +1 -0
- package/dist/connectors/jira/answerSink.d.ts +59 -0
- package/dist/connectors/jira/answerSink.d.ts.map +1 -0
- package/dist/connectors/jira/answerSink.js +234 -0
- package/dist/connectors/jira/answerSink.js.map +1 -0
- package/dist/connectors/jira/attachmentDownload.d.ts +41 -0
- package/dist/connectors/jira/attachmentDownload.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentDownload.js +92 -0
- package/dist/connectors/jira/attachmentDownload.js.map +1 -0
- package/dist/connectors/jira/attachmentTool.d.ts +50 -0
- package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentTool.js +166 -0
- package/dist/connectors/jira/attachmentTool.js.map +1 -0
- package/dist/connectors/jira/client.d.ts +522 -0
- package/dist/connectors/jira/client.d.ts.map +1 -0
- package/dist/connectors/jira/client.js +491 -0
- package/dist/connectors/jira/client.js.map +1 -0
- package/dist/connectors/jira/config.d.ts +104 -0
- package/dist/connectors/jira/config.d.ts.map +1 -0
- package/dist/connectors/jira/config.js +323 -0
- package/dist/connectors/jira/config.js.map +1 -0
- package/dist/connectors/jira/configFile.d.ts +10 -0
- package/dist/connectors/jira/configFile.d.ts.map +1 -0
- package/dist/connectors/jira/configFile.js +50 -0
- package/dist/connectors/jira/configFile.js.map +1 -0
- package/dist/connectors/jira/connector.d.ts +71 -0
- package/dist/connectors/jira/connector.d.ts.map +1 -0
- package/dist/connectors/jira/connector.js +312 -0
- package/dist/connectors/jira/connector.js.map +1 -0
- package/dist/connectors/jira/contextLedger.d.ts +60 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
- package/dist/connectors/jira/contextLedger.js +196 -0
- package/dist/connectors/jira/contextLedger.js.map +1 -0
- package/dist/connectors/jira/contextPreamble.d.ts +18 -0
- package/dist/connectors/jira/contextPreamble.d.ts.map +1 -0
- package/dist/connectors/jira/contextPreamble.js +31 -0
- package/dist/connectors/jira/contextPreamble.js.map +1 -0
- package/dist/connectors/jira/inbound.d.ts +141 -0
- package/dist/connectors/jira/inbound.d.ts.map +1 -0
- package/dist/connectors/jira/inbound.js +331 -0
- package/dist/connectors/jira/inbound.js.map +1 -0
- package/dist/connectors/jira/issueBlocks.d.ts +74 -0
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
- package/dist/connectors/jira/issueBlocks.js +257 -0
- package/dist/connectors/jira/issueBlocks.js.map +1 -0
- package/dist/connectors/jira/issueContext.d.ts +31 -0
- package/dist/connectors/jira/issueContext.d.ts.map +1 -0
- package/dist/connectors/jira/issueContext.js +70 -0
- package/dist/connectors/jira/issueContext.js.map +1 -0
- package/dist/connectors/jira/issueDelta.d.ts +38 -0
- package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
- package/dist/connectors/jira/issueDelta.js +59 -0
- package/dist/connectors/jira/issueDelta.js.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts +22 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.js +105 -0
- package/dist/connectors/jira/mediaPlaceholders.js.map +1 -0
- package/dist/connectors/jira/outbound.d.ts +6 -0
- package/dist/connectors/jira/outbound.d.ts.map +1 -0
- package/dist/connectors/jira/outbound.js +38 -0
- package/dist/connectors/jira/outbound.js.map +1 -0
- package/dist/connectors/jira/prompt.d.ts +39 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -0
- package/dist/connectors/jira/prompt.js +102 -0
- package/dist/connectors/jira/prompt.js.map +1 -0
- package/dist/connectors/jira/promptSpill.d.ts +50 -0
- package/dist/connectors/jira/promptSpill.d.ts.map +1 -0
- package/dist/connectors/jira/promptSpill.js +157 -0
- package/dist/connectors/jira/promptSpill.js.map +1 -0
- package/dist/connectors/jira/promptText.d.ts +7 -0
- package/dist/connectors/jira/promptText.d.ts.map +1 -0
- package/dist/connectors/jira/promptText.js +26 -0
- package/dist/connectors/jira/promptText.js.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts +18 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.js +106 -0
- package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/jira/trigger.d.ts +54 -0
- package/dist/connectors/jira/trigger.d.ts.map +1 -0
- package/dist/connectors/jira/trigger.js +101 -0
- package/dist/connectors/jira/trigger.js.map +1 -0
- package/dist/connectors/jira/triggerLog.d.ts +53 -0
- package/dist/connectors/jira/triggerLog.d.ts.map +1 -0
- package/dist/connectors/jira/triggerLog.js +78 -0
- package/dist/connectors/jira/triggerLog.js.map +1 -0
- package/dist/connectors/jira/trustedGroup.d.ts +54 -0
- package/dist/connectors/jira/trustedGroup.d.ts.map +1 -0
- package/dist/connectors/jira/trustedGroup.js +98 -0
- package/dist/connectors/jira/trustedGroup.js.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts +58 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.js +105 -0
- package/dist/connectors/jira/unconfirmedPosts.js.map +1 -0
- package/dist/connectors/telegram/answerSink.d.ts +46 -0
- package/dist/connectors/telegram/answerSink.d.ts.map +1 -0
- package/dist/connectors/telegram/answerSink.js +71 -0
- package/dist/connectors/telegram/answerSink.js.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +34 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js +112 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -0
- package/dist/connectors/telegram/commands/botCore.d.ts +46 -0
- package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/botCore.js +3 -0
- package/dist/connectors/telegram/commands/botCore.js.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.js +13 -0
- package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -0
- package/dist/connectors/telegram/commands/claudeAccounts.d.ts +58 -0
- package/dist/connectors/telegram/commands/claudeAccounts.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/claudeAccounts.js +591 -0
- package/dist/connectors/telegram/commands/claudeAccounts.js.map +1 -0
- package/dist/connectors/telegram/commands/compaction.d.ts +47 -0
- package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/compaction.js +868 -0
- package/dist/connectors/telegram/commands/compaction.js.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts +13 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.js +335 -0
- package/dist/connectors/telegram/commands/displayModes.js.map +1 -0
- package/dist/connectors/telegram/commands/fallbackChain.d.ts +49 -0
- package/dist/connectors/telegram/commands/fallbackChain.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/fallbackChain.js +624 -0
- package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts +117 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.js +966 -0
- package/dist/connectors/telegram/commands/modelProviders.js.map +1 -0
- package/dist/connectors/telegram/commands/reminders.d.ts +54 -0
- package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/reminders.js +624 -0
- package/dist/connectors/telegram/commands/reminders.js.map +1 -0
- package/dist/connectors/telegram/fileIntake.d.ts +166 -0
- package/dist/connectors/telegram/fileIntake.d.ts.map +1 -0
- package/dist/connectors/telegram/fileIntake.js +304 -0
- package/dist/connectors/telegram/fileIntake.js.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts +57 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.js +221 -0
- package/dist/connectors/telegram/fileSendGateway.js.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts +52 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js +71 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js.map +1 -0
- package/dist/connectors/telegram/inbound.d.ts +131 -0
- package/dist/connectors/telegram/inbound.d.ts.map +1 -0
- package/dist/connectors/telegram/inbound.js +278 -0
- package/dist/connectors/telegram/inbound.js.map +1 -0
- package/dist/connectors/telegram/languagePicker.d.ts +32 -0
- package/dist/connectors/telegram/languagePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/languagePicker.js +55 -0
- package/dist/connectors/telegram/languagePicker.js.map +1 -0
- package/dist/connectors/telegram/messageSplit.d.ts +62 -0
- package/dist/connectors/telegram/messageSplit.d.ts.map +1 -0
- package/dist/connectors/telegram/messageSplit.js +119 -0
- package/dist/connectors/telegram/messageSplit.js.map +1 -0
- package/dist/connectors/telegram/outbound.d.ts +62 -0
- package/dist/connectors/telegram/outbound.d.ts.map +1 -0
- package/dist/connectors/telegram/outbound.js +116 -0
- package/dist/connectors/telegram/outbound.js.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts +34 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.js +77 -0
- package/dist/connectors/telegram/output/createOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts +47 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js +412 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts +38 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.js +49 -0
- package/dist/connectors/telegram/outputBacklogGlue.js.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts +93 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.js +120 -0
- package/dist/connectors/telegram/outputFlushPlan.js.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts +30 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.js +37 -0
- package/dist/connectors/telegram/questionKeyboards.js.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts +27 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.js +97 -0
- package/dist/connectors/telegram/renderAgentHtml.js.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts +28 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.js +107 -0
- package/dist/connectors/telegram/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts +19 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.js +35 -0
- package/dist/connectors/telegram/telegramCallGuard.js.map +1 -0
- package/dist/connectors/telegram/timezonePicker.d.ts +85 -0
- package/dist/connectors/telegram/timezonePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/timezonePicker.js +142 -0
- package/dist/connectors/telegram/timezonePicker.js.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts +85 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.js +159 -0
- package/dist/connectors/telegram/updateDispatcher.js.map +1 -0
- package/dist/connectors/test/connector.d.ts +52 -0
- package/dist/connectors/test/connector.d.ts.map +1 -0
- package/dist/connectors/test/connector.js +143 -0
- package/dist/connectors/test/connector.js.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts +25 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.js +50 -0
- package/dist/connectors/test/sessionKeyCodec.js.map +1 -0
- package/dist/diagLog.d.ts +6 -0
- package/dist/diagLog.d.ts.map +1 -0
- package/dist/diagLog.js +58 -0
- package/dist/diagLog.js.map +1 -0
- package/dist/effortLevels.d.ts +68 -0
- package/dist/effortLevels.d.ts.map +1 -0
- package/dist/effortLevels.js +114 -0
- package/dist/effortLevels.js.map +1 -0
- package/dist/folderName.d.ts +42 -0
- package/dist/folderName.d.ts.map +1 -0
- package/dist/folderName.js +51 -0
- package/dist/folderName.js.map +1 -0
- package/dist/i18n/de.d.ts +2 -0
- package/dist/i18n/de.d.ts.map +1 -0
- package/dist/i18n/de.js +665 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en.d.ts +7 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +694 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/es.d.ts +2 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +665 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/fr.d.ts +2 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +665 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/hi.d.ts +2 -0
- package/dist/i18n/hi.d.ts.map +1 -0
- package/dist/i18n/hi.js +665 -0
- package/dist/i18n/hi.js.map +1 -0
- package/dist/i18n/ja.d.ts +2 -0
- package/dist/i18n/ja.d.ts.map +1 -0
- package/dist/i18n/ja.js +665 -0
- package/dist/i18n/ja.js.map +1 -0
- package/dist/i18n/ka.d.ts +2 -0
- package/dist/i18n/ka.d.ts.map +1 -0
- package/dist/i18n/ka.js +665 -0
- package/dist/i18n/ka.js.map +1 -0
- package/dist/i18n/pt.d.ts +2 -0
- package/dist/i18n/pt.d.ts.map +1 -0
- package/dist/i18n/pt.js +665 -0
- package/dist/i18n/pt.js.map +1 -0
- package/dist/i18n/ru.d.ts +6 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +668 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/i18n/uk.d.ts +8 -0
- package/dist/i18n/uk.d.ts.map +1 -0
- package/dist/i18n/uk.js +670 -0
- package/dist/i18n/uk.js.map +1 -0
- package/dist/i18n/uz.d.ts +2 -0
- package/dist/i18n/uz.d.ts.map +1 -0
- package/dist/i18n/uz.js +665 -0
- package/dist/i18n/uz.js.map +1 -0
- package/dist/i18n/zh.d.ts +2 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +665 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/i18n.d.ts +115 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +233 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/installManager.d.ts +99 -0
- package/dist/installManager.d.ts.map +1 -0
- package/dist/installManager.js +943 -0
- package/dist/installManager.js.map +1 -0
- package/dist/instanceLock.d.ts +161 -0
- package/dist/instanceLock.d.ts.map +1 -0
- package/dist/instanceLock.js +388 -0
- package/dist/instanceLock.js.map +1 -0
- package/dist/mcpConfig.d.ts +76 -0
- package/dist/mcpConfig.d.ts.map +1 -0
- package/dist/mcpConfig.js +270 -0
- package/dist/mcpConfig.js.map +1 -0
- package/dist/openCodeOpenQuestion.d.ts +44 -0
- package/dist/openCodeOpenQuestion.d.ts.map +1 -0
- package/dist/openCodeOpenQuestion.js +64 -0
- package/dist/openCodeOpenQuestion.js.map +1 -0
- package/dist/openCodeQuestionFlow.d.ts +105 -0
- package/dist/openCodeQuestionFlow.d.ts.map +1 -0
- package/dist/openCodeQuestionFlow.js +143 -0
- package/dist/openCodeQuestionFlow.js.map +1 -0
- package/dist/openCodeSessionRouting.d.ts +133 -0
- package/dist/openCodeSessionRouting.d.ts.map +1 -0
- package/dist/openCodeSessionRouting.js +253 -0
- package/dist/openCodeSessionRouting.js.map +1 -0
- package/dist/openCodeSessionTitle.d.ts +50 -0
- package/dist/openCodeSessionTitle.d.ts.map +1 -0
- package/dist/openCodeSessionTitle.js +84 -0
- package/dist/openCodeSessionTitle.js.map +1 -0
- package/dist/outputTrace.d.ts +108 -0
- package/dist/outputTrace.d.ts.map +1 -0
- package/dist/outputTrace.js +430 -0
- package/dist/outputTrace.js.map +1 -0
- package/dist/pendingQuestionRepost.d.ts +47 -0
- package/dist/pendingQuestionRepost.d.ts.map +1 -0
- package/dist/pendingQuestionRepost.js +29 -0
- package/dist/pendingQuestionRepost.js.map +1 -0
- package/dist/pinnedStatus.d.ts +52 -0
- package/dist/pinnedStatus.d.ts.map +1 -0
- package/dist/pinnedStatus.js +36 -0
- package/dist/pinnedStatus.js.map +1 -0
- package/dist/platform/answerSink.d.ts +93 -0
- package/dist/platform/answerSink.d.ts.map +1 -0
- package/dist/platform/answerSink.js +31 -0
- package/dist/platform/answerSink.js.map +1 -0
- package/dist/platform/capabilityFallback.d.ts +39 -0
- package/dist/platform/capabilityFallback.d.ts.map +1 -0
- package/dist/platform/capabilityFallback.js +55 -0
- package/dist/platform/capabilityFallback.js.map +1 -0
- package/dist/platform/commandRouter.d.ts +51 -0
- package/dist/platform/commandRouter.d.ts.map +1 -0
- package/dist/platform/commandRouter.js +53 -0
- package/dist/platform/commandRouter.js.map +1 -0
- package/dist/platform/connectorSet.d.ts +39 -0
- package/dist/platform/connectorSet.d.ts.map +1 -0
- package/dist/platform/connectorSet.js +55 -0
- package/dist/platform/connectorSet.js.map +1 -0
- package/dist/platform/inbound.d.ts +147 -0
- package/dist/platform/inbound.d.ts.map +1 -0
- package/dist/platform/inbound.js +18 -0
- package/dist/platform/inbound.js.map +1 -0
- package/dist/platform/outbound.d.ts +225 -0
- package/dist/platform/outbound.d.ts.map +1 -0
- package/dist/platform/outbound.js +30 -0
- package/dist/platform/outbound.js.map +1 -0
- package/dist/platform/unservedStateGuard.d.ts +27 -0
- package/dist/platform/unservedStateGuard.d.ts.map +1 -0
- package/dist/platform/unservedStateGuard.js +42 -0
- package/dist/platform/unservedStateGuard.js.map +1 -0
- package/dist/postToSession.d.ts +94 -0
- package/dist/postToSession.d.ts.map +1 -0
- package/dist/postToSession.js +56 -0
- package/dist/postToSession.js.map +1 -0
- package/dist/progressLine.d.ts +180 -0
- package/dist/progressLine.d.ts.map +1 -0
- package/dist/progressLine.js +293 -0
- package/dist/progressLine.js.map +1 -0
- package/dist/rateLimiter.d.ts +246 -0
- package/dist/rateLimiter.d.ts.map +1 -0
- package/dist/rateLimiter.js +555 -0
- package/dist/rateLimiter.js.map +1 -0
- package/dist/requests/answerRequest.d.ts +57 -0
- package/dist/requests/answerRequest.d.ts.map +1 -0
- package/dist/requests/answerRequest.js +96 -0
- package/dist/requests/answerRequest.js.map +1 -0
- package/dist/requests/answerTail.d.ts +83 -0
- package/dist/requests/answerTail.d.ts.map +1 -0
- package/dist/requests/answerTail.js +102 -0
- package/dist/requests/answerTail.js.map +1 -0
- package/dist/requests/limitWaitAnswer.d.ts +87 -0
- package/dist/requests/limitWaitAnswer.d.ts.map +1 -0
- package/dist/requests/limitWaitAnswer.js +83 -0
- package/dist/requests/limitWaitAnswer.js.map +1 -0
- package/dist/requests/requestGroup.d.ts +44 -0
- package/dist/requests/requestGroup.d.ts.map +1 -0
- package/dist/requests/requestGroup.js +63 -0
- package/dist/requests/requestGroup.js.map +1 -0
- package/dist/requests/requestHeader.d.ts +70 -0
- package/dist/requests/requestHeader.d.ts.map +1 -0
- package/dist/requests/requestHeader.js +83 -0
- package/dist/requests/requestHeader.js.map +1 -0
- package/dist/requests/requestLedger.d.ts +217 -0
- package/dist/requests/requestLedger.d.ts.map +1 -0
- package/dist/requests/requestLedger.js +468 -0
- package/dist/requests/requestLedger.js.map +1 -0
- package/dist/requests/sessionTurnProbe.d.ts +52 -0
- package/dist/requests/sessionTurnProbe.d.ts.map +1 -0
- package/dist/requests/sessionTurnProbe.js +29 -0
- package/dist/requests/sessionTurnProbe.js.map +1 -0
- package/dist/requests/types.d.ts +181 -0
- package/dist/requests/types.d.ts.map +1 -0
- package/dist/requests/types.js +9 -0
- package/dist/requests/types.js.map +1 -0
- package/dist/requests/wakeUpEngine.d.ts +160 -0
- package/dist/requests/wakeUpEngine.d.ts.map +1 -0
- package/dist/requests/wakeUpEngine.js +399 -0
- package/dist/requests/wakeUpEngine.js.map +1 -0
- package/dist/requests/wakeUpRules.d.ts +151 -0
- package/dist/requests/wakeUpRules.d.ts.map +1 -0
- package/dist/requests/wakeUpRules.js +167 -0
- package/dist/requests/wakeUpRules.js.map +1 -0
- package/dist/resumeContext.d.ts +87 -0
- package/dist/resumeContext.d.ts.map +1 -0
- package/dist/resumeContext.js +114 -0
- package/dist/resumeContext.js.map +1 -0
- package/dist/scheduler/checkRun.d.ts +95 -0
- package/dist/scheduler/checkRun.d.ts.map +1 -0
- package/dist/scheduler/checkRun.js +172 -0
- package/dist/scheduler/checkRun.js.map +1 -0
- package/dist/scheduler/delivery.d.ts +99 -0
- package/dist/scheduler/delivery.d.ts.map +1 -0
- package/dist/scheduler/delivery.js +212 -0
- package/dist/scheduler/delivery.js.map +1 -0
- package/dist/scheduler/deliveryKind.d.ts +29 -0
- package/dist/scheduler/deliveryKind.d.ts.map +1 -0
- package/dist/scheduler/deliveryKind.js +39 -0
- package/dist/scheduler/deliveryKind.js.map +1 -0
- package/dist/scheduler/directoryThreads.d.ts +19 -0
- package/dist/scheduler/directoryThreads.d.ts.map +1 -0
- package/dist/scheduler/directoryThreads.js +28 -0
- package/dist/scheduler/directoryThreads.js.map +1 -0
- package/dist/scheduler/engine.d.ts +77 -0
- package/dist/scheduler/engine.d.ts.map +1 -0
- package/dist/scheduler/engine.js +337 -0
- package/dist/scheduler/engine.js.map +1 -0
- package/dist/scheduler/injection.d.ts +102 -0
- package/dist/scheduler/injection.d.ts.map +1 -0
- package/dist/scheduler/injection.js +122 -0
- package/dist/scheduler/injection.js.map +1 -0
- package/dist/scheduler/mcpBoot.d.ts +65 -0
- package/dist/scheduler/mcpBoot.d.ts.map +1 -0
- package/dist/scheduler/mcpBoot.js +60 -0
- package/dist/scheduler/mcpBoot.js.map +1 -0
- package/dist/scheduler/mcpSurface.d.ts +363 -0
- package/dist/scheduler/mcpSurface.d.ts.map +1 -0
- package/dist/scheduler/mcpSurface.js +1297 -0
- package/dist/scheduler/mcpSurface.js.map +1 -0
- package/dist/scheduler/rebindResume.d.ts +27 -0
- package/dist/scheduler/rebindResume.d.ts.map +1 -0
- package/dist/scheduler/rebindResume.js +17 -0
- package/dist/scheduler/rebindResume.js.map +1 -0
- package/dist/scheduler/recurrence.d.ts +58 -0
- package/dist/scheduler/recurrence.d.ts.map +1 -0
- package/dist/scheduler/recurrence.js +210 -0
- package/dist/scheduler/recurrence.js.map +1 -0
- package/dist/scheduler/runLedger.d.ts +59 -0
- package/dist/scheduler/runLedger.d.ts.map +1 -0
- package/dist/scheduler/runLedger.js +54 -0
- package/dist/scheduler/runLedger.js.map +1 -0
- package/dist/scheduler/store.d.ts +97 -0
- package/dist/scheduler/store.d.ts.map +1 -0
- package/dist/scheduler/store.js +124 -0
- package/dist/scheduler/store.js.map +1 -0
- package/dist/scheduler/timezoneRecompute.d.ts +61 -0
- package/dist/scheduler/timezoneRecompute.d.ts.map +1 -0
- package/dist/scheduler/timezoneRecompute.js +46 -0
- package/dist/scheduler/timezoneRecompute.js.map +1 -0
- package/dist/scheduler/types.d.ts +139 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +8 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/sendErrorClassifier.d.ts +45 -0
- package/dist/sendErrorClassifier.d.ts.map +1 -0
- package/dist/sendErrorClassifier.js +65 -0
- package/dist/sendErrorClassifier.js.map +1 -0
- package/dist/sessionKey.d.ts +136 -0
- package/dist/sessionKey.d.ts.map +1 -0
- package/dist/sessionKey.js +153 -0
- package/dist/sessionKey.js.map +1 -0
- package/dist/sessionPick.d.ts +42 -0
- package/dist/sessionPick.d.ts.map +1 -0
- package/dist/sessionPick.js +39 -0
- package/dist/sessionPick.js.map +1 -0
- package/dist/shutdown.d.ts +126 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +164 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/startupPromptBuffer.d.ts +85 -0
- package/dist/startupPromptBuffer.d.ts.map +1 -0
- package/dist/startupPromptBuffer.js +123 -0
- package/dist/startupPromptBuffer.js.map +1 -0
- package/dist/state.d.ts +1416 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +2128 -0
- package/dist/state.js.map +1 -0
- package/dist/threadContextPreamble.d.ts +89 -0
- package/dist/threadContextPreamble.d.ts.map +1 -0
- package/dist/threadContextPreamble.js +102 -0
- package/dist/threadContextPreamble.js.map +1 -0
- package/dist/threadRouting.d.ts +164 -0
- package/dist/threadRouting.d.ts.map +1 -0
- package/dist/threadRouting.js +182 -0
- package/dist/threadRouting.js.map +1 -0
- package/dist/types.d.ts +1022 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/abortableFifo.d.ts +10 -0
- package/dist/utils/abortableFifo.d.ts.map +1 -0
- package/dist/utils/abortableFifo.js +55 -0
- package/dist/utils/abortableFifo.js.map +1 -0
- package/dist/utils/adoptedToolList.d.ts +27 -0
- package/dist/utils/adoptedToolList.d.ts.map +1 -0
- package/dist/utils/adoptedToolList.js +22 -0
- package/dist/utils/adoptedToolList.js.map +1 -0
- package/dist/utils/agentEnvironment.d.ts +42 -0
- package/dist/utils/agentEnvironment.d.ts.map +1 -0
- package/dist/utils/agentEnvironment.js +122 -0
- package/dist/utils/agentEnvironment.js.map +1 -0
- package/dist/utils/ansiClean.d.ts +11 -0
- package/dist/utils/ansiClean.d.ts.map +1 -0
- package/dist/utils/ansiClean.js +139 -0
- package/dist/utils/ansiClean.js.map +1 -0
- package/dist/utils/autoContinueOnLimit.d.ts +56 -0
- package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
- package/dist/utils/autoContinueOnLimit.js +79 -0
- package/dist/utils/autoContinueOnLimit.js.map +1 -0
- package/dist/utils/canonicalPathContainment.d.ts +7 -0
- package/dist/utils/canonicalPathContainment.d.ts.map +1 -0
- package/dist/utils/canonicalPathContainment.js +48 -0
- package/dist/utils/canonicalPathContainment.js.map +1 -0
- package/dist/utils/claudeAccountPickerPlan.d.ts +85 -0
- package/dist/utils/claudeAccountPickerPlan.d.ts.map +1 -0
- package/dist/utils/claudeAccountPickerPlan.js +123 -0
- package/dist/utils/claudeAccountPickerPlan.js.map +1 -0
- package/dist/utils/claudeAuthLogin.d.ts +71 -0
- package/dist/utils/claudeAuthLogin.d.ts.map +1 -0
- package/dist/utils/claudeAuthLogin.js +93 -0
- package/dist/utils/claudeAuthLogin.js.map +1 -0
- package/dist/utils/claudeChunkClassifier.d.ts +97 -0
- package/dist/utils/claudeChunkClassifier.d.ts.map +1 -0
- package/dist/utils/claudeChunkClassifier.js +254 -0
- package/dist/utils/claudeChunkClassifier.js.map +1 -0
- package/dist/utils/claudeCodeVersion.d.ts +31 -0
- package/dist/utils/claudeCodeVersion.d.ts.map +1 -0
- package/dist/utils/claudeCodeVersion.js +62 -0
- package/dist/utils/claudeCodeVersion.js.map +1 -0
- package/dist/utils/claudeCompactHook.d.ts +64 -0
- package/dist/utils/claudeCompactHook.d.ts.map +1 -0
- package/dist/utils/claudeCompactHook.js +98 -0
- package/dist/utils/claudeCompactHook.js.map +1 -0
- package/dist/utils/claudeLimitSwitch.d.ts +40 -0
- package/dist/utils/claudeLimitSwitch.d.ts.map +1 -0
- package/dist/utils/claudeLimitSwitch.js +54 -0
- package/dist/utils/claudeLimitSwitch.js.map +1 -0
- package/dist/utils/claudeLivenessAction.d.ts +208 -0
- package/dist/utils/claudeLivenessAction.d.ts.map +1 -0
- package/dist/utils/claudeLivenessAction.js +135 -0
- package/dist/utils/claudeLivenessAction.js.map +1 -0
- package/dist/utils/claudeMcpHeal.d.ts +92 -0
- package/dist/utils/claudeMcpHeal.d.ts.map +1 -0
- package/dist/utils/claudeMcpHeal.js +91 -0
- package/dist/utils/claudeMcpHeal.js.map +1 -0
- package/dist/utils/claudeProfileUsageLines.d.ts +15 -0
- package/dist/utils/claudeProfileUsageLines.d.ts.map +1 -0
- package/dist/utils/claudeProfileUsageLines.js +42 -0
- package/dist/utils/claudeProfileUsageLines.js.map +1 -0
- package/dist/utils/claudeProfiles.d.ts +117 -0
- package/dist/utils/claudeProfiles.d.ts.map +1 -0
- package/dist/utils/claudeProfiles.js +285 -0
- package/dist/utils/claudeProfiles.js.map +1 -0
- package/dist/utils/claudeRelayRouting.d.ts +86 -0
- package/dist/utils/claudeRelayRouting.d.ts.map +1 -0
- package/dist/utils/claudeRelayRouting.js +159 -0
- package/dist/utils/claudeRelayRouting.js.map +1 -0
- package/dist/utils/claudeRuntimeInfo.d.ts +26 -0
- package/dist/utils/claudeRuntimeInfo.d.ts.map +1 -0
- package/dist/utils/claudeRuntimeInfo.js +151 -0
- package/dist/utils/claudeRuntimeInfo.js.map +1 -0
- package/dist/utils/claudeScrapeShapes.d.ts +256 -0
- package/dist/utils/claudeScrapeShapes.d.ts.map +1 -0
- package/dist/utils/claudeScrapeShapes.js +290 -0
- package/dist/utils/claudeScrapeShapes.js.map +1 -0
- package/dist/utils/claudeSessionTitle.d.ts +27 -0
- package/dist/utils/claudeSessionTitle.d.ts.map +1 -0
- package/dist/utils/claudeSessionTitle.js +90 -0
- package/dist/utils/claudeSessionTitle.js.map +1 -0
- package/dist/utils/claudeStreamJson.d.ts +214 -0
- package/dist/utils/claudeStreamJson.d.ts.map +1 -0
- package/dist/utils/claudeStreamJson.js +364 -0
- package/dist/utils/claudeStreamJson.js.map +1 -0
- package/dist/utils/claudeSubagentTail.d.ts +93 -0
- package/dist/utils/claudeSubagentTail.d.ts.map +1 -0
- package/dist/utils/claudeSubagentTail.js +136 -0
- package/dist/utils/claudeSubagentTail.js.map +1 -0
- package/dist/utils/claudeUsage.d.ts +209 -0
- package/dist/utils/claudeUsage.d.ts.map +1 -0
- package/dist/utils/claudeUsage.js +413 -0
- package/dist/utils/claudeUsage.js.map +1 -0
- package/dist/utils/claudeUsageRefresher.d.ts +44 -0
- package/dist/utils/claudeUsageRefresher.d.ts.map +1 -0
- package/dist/utils/claudeUsageRefresher.js +95 -0
- package/dist/utils/claudeUsageRefresher.js.map +1 -0
- package/dist/utils/clearThreadOutputQueues.d.ts +43 -0
- package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -0
- package/dist/utils/clearThreadOutputQueues.js +39 -0
- package/dist/utils/clearThreadOutputQueues.js.map +1 -0
- package/dist/utils/compactCommandRoute.d.ts +45 -0
- package/dist/utils/compactCommandRoute.d.ts.map +1 -0
- package/dist/utils/compactCommandRoute.js +36 -0
- package/dist/utils/compactCommandRoute.js.map +1 -0
- package/dist/utils/compactOnIdle.d.ts +329 -0
- package/dist/utils/compactOnIdle.d.ts.map +1 -0
- package/dist/utils/compactOnIdle.js +379 -0
- package/dist/utils/compactOnIdle.js.map +1 -0
- package/dist/utils/consoleFileTap.d.ts +51 -0
- package/dist/utils/consoleFileTap.d.ts.map +1 -0
- package/dist/utils/consoleFileTap.js +86 -0
- package/dist/utils/consoleFileTap.js.map +1 -0
- package/dist/utils/displayVerbosity.d.ts +44 -0
- package/dist/utils/displayVerbosity.d.ts.map +1 -0
- package/dist/utils/displayVerbosity.js +75 -0
- package/dist/utils/displayVerbosity.js.map +1 -0
- package/dist/utils/download.d.ts +72 -0
- package/dist/utils/download.d.ts.map +1 -0
- package/dist/utils/download.js +216 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/draftFinalize.d.ts +110 -0
- package/dist/utils/draftFinalize.d.ts.map +1 -0
- package/dist/utils/draftFinalize.js +100 -0
- package/dist/utils/draftFinalize.js.map +1 -0
- package/dist/utils/draftId.d.ts +36 -0
- package/dist/utils/draftId.d.ts.map +1 -0
- package/dist/utils/draftId.js +46 -0
- package/dist/utils/draftId.js.map +1 -0
- package/dist/utils/draftPacer.d.ts +72 -0
- package/dist/utils/draftPacer.d.ts.map +1 -0
- package/dist/utils/draftPacer.js +53 -0
- package/dist/utils/draftPacer.js.map +1 -0
- package/dist/utils/effortStartupKeystroke.d.ts +20 -0
- package/dist/utils/effortStartupKeystroke.d.ts.map +1 -0
- package/dist/utils/effortStartupKeystroke.js +28 -0
- package/dist/utils/effortStartupKeystroke.js.map +1 -0
- package/dist/utils/ensureSessionPlan.d.ts +70 -0
- package/dist/utils/ensureSessionPlan.d.ts.map +1 -0
- package/dist/utils/ensureSessionPlan.js +54 -0
- package/dist/utils/ensureSessionPlan.js.map +1 -0
- package/dist/utils/fallbackBridge.d.ts +32 -0
- package/dist/utils/fallbackBridge.d.ts.map +1 -0
- package/dist/utils/fallbackBridge.js +62 -0
- package/dist/utils/fallbackBridge.js.map +1 -0
- package/dist/utils/fallbackChain.d.ts +299 -0
- package/dist/utils/fallbackChain.d.ts.map +1 -0
- package/dist/utils/fallbackChain.js +542 -0
- package/dist/utils/fallbackChain.js.map +1 -0
- package/dist/utils/fileSendPlan.d.ts +217 -0
- package/dist/utils/fileSendPlan.d.ts.map +1 -0
- package/dist/utils/fileSendPlan.js +291 -0
- package/dist/utils/fileSendPlan.js.map +1 -0
- package/dist/utils/fileSendService.d.ts +94 -0
- package/dist/utils/fileSendService.d.ts.map +1 -0
- package/dist/utils/fileSendService.js +387 -0
- package/dist/utils/fileSendService.js.map +1 -0
- package/dist/utils/groupFinalizePlan.d.ts +38 -0
- package/dist/utils/groupFinalizePlan.d.ts.map +1 -0
- package/dist/utils/groupFinalizePlan.js +35 -0
- package/dist/utils/groupFinalizePlan.js.map +1 -0
- package/dist/utils/identicalOutputGuard.d.ts +83 -0
- package/dist/utils/identicalOutputGuard.d.ts.map +1 -0
- package/dist/utils/identicalOutputGuard.js +99 -0
- package/dist/utils/identicalOutputGuard.js.map +1 -0
- package/dist/utils/isoTimestamp.d.ts +16 -0
- package/dist/utils/isoTimestamp.d.ts.map +1 -0
- package/dist/utils/isoTimestamp.js +34 -0
- package/dist/utils/isoTimestamp.js.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts +130 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.js +122 -0
- package/dist/utils/jsonStreamBusyWatchdog.js.map +1 -0
- package/dist/utils/jsonStreamHost.d.ts +238 -0
- package/dist/utils/jsonStreamHost.d.ts.map +1 -0
- package/dist/utils/jsonStreamHost.js +438 -0
- package/dist/utils/jsonStreamHost.js.map +1 -0
- package/dist/utils/keyedTransitionQueue.d.ts +18 -0
- package/dist/utils/keyedTransitionQueue.d.ts.map +1 -0
- package/dist/utils/keyedTransitionQueue.js +34 -0
- package/dist/utils/keyedTransitionQueue.js.map +1 -0
- package/dist/utils/limitEpisodeRecovery.d.ts +92 -0
- package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -0
- package/dist/utils/limitEpisodeRecovery.js +133 -0
- package/dist/utils/limitEpisodeRecovery.js.map +1 -0
- package/dist/utils/limitHeldPromptQueue.d.ts +48 -0
- package/dist/utils/limitHeldPromptQueue.d.ts.map +1 -0
- package/dist/utils/limitHeldPromptQueue.js +59 -0
- package/dist/utils/limitHeldPromptQueue.js.map +1 -0
- package/dist/utils/limitHeldPrompts.d.ts +58 -0
- package/dist/utils/limitHeldPrompts.d.ts.map +1 -0
- package/dist/utils/limitHeldPrompts.js +65 -0
- package/dist/utils/limitHeldPrompts.js.map +1 -0
- package/dist/utils/linkPreviewSuppression.d.ts +18 -0
- package/dist/utils/linkPreviewSuppression.d.ts.map +1 -0
- package/dist/utils/linkPreviewSuppression.js +37 -0
- package/dist/utils/linkPreviewSuppression.js.map +1 -0
- package/dist/utils/localClock.d.ts +15 -0
- package/dist/utils/localClock.d.ts.map +1 -0
- package/dist/utils/localClock.js +29 -0
- package/dist/utils/localClock.js.map +1 -0
- package/dist/utils/markdownTableRender.d.ts +83 -0
- package/dist/utils/markdownTableRender.d.ts.map +1 -0
- package/dist/utils/markdownTableRender.js +298 -0
- package/dist/utils/markdownTableRender.js.map +1 -0
- package/dist/utils/mediaGroupCollector.d.ts +51 -0
- package/dist/utils/mediaGroupCollector.d.ts.map +1 -0
- package/dist/utils/mediaGroupCollector.js +90 -0
- package/dist/utils/mediaGroupCollector.js.map +1 -0
- package/dist/utils/messageSendService.d.ts +136 -0
- package/dist/utils/messageSendService.d.ts.map +1 -0
- package/dist/utils/messageSendService.js +165 -0
- package/dist/utils/messageSendService.js.map +1 -0
- package/dist/utils/minutesOverride.d.ts +7 -0
- package/dist/utils/minutesOverride.d.ts.map +1 -0
- package/dist/utils/minutesOverride.js +16 -0
- package/dist/utils/minutesOverride.js.map +1 -0
- package/dist/utils/modelPickerPlan.d.ts +119 -0
- package/dist/utils/modelPickerPlan.d.ts.map +1 -0
- package/dist/utils/modelPickerPlan.js +171 -0
- package/dist/utils/modelPickerPlan.js.map +1 -0
- package/dist/utils/modelRecentPlan.d.ts +56 -0
- package/dist/utils/modelRecentPlan.d.ts.map +1 -0
- package/dist/utils/modelRecentPlan.js +107 -0
- package/dist/utils/modelRecentPlan.js.map +1 -0
- package/dist/utils/modelSetReplyDecision.d.ts +67 -0
- package/dist/utils/modelSetReplyDecision.d.ts.map +1 -0
- package/dist/utils/modelSetReplyDecision.js +27 -0
- package/dist/utils/modelSetReplyDecision.js.map +1 -0
- package/dist/utils/openCodeAuthLogin.d.ts +181 -0
- package/dist/utils/openCodeAuthLogin.d.ts.map +1 -0
- package/dist/utils/openCodeAuthLogin.js +393 -0
- package/dist/utils/openCodeAuthLogin.js.map +1 -0
- package/dist/utils/openCodeCompactPlugin.d.ts +81 -0
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -0
- package/dist/utils/openCodeCompactPlugin.js +146 -0
- package/dist/utils/openCodeCompactPlugin.js.map +1 -0
- package/dist/utils/openCodeTurnActivity.d.ts +67 -0
- package/dist/utils/openCodeTurnActivity.d.ts.map +1 -0
- package/dist/utils/openCodeTurnActivity.js +27 -0
- package/dist/utils/openCodeTurnActivity.js.map +1 -0
- package/dist/utils/outputDebounce.d.ts +24 -0
- package/dist/utils/outputDebounce.d.ts.map +1 -0
- package/dist/utils/outputDebounce.js +30 -0
- package/dist/utils/outputDebounce.js.map +1 -0
- package/dist/utils/outputFlushTiming.d.ts +54 -0
- package/dist/utils/outputFlushTiming.d.ts.map +1 -0
- package/dist/utils/outputFlushTiming.js +48 -0
- package/dist/utils/outputFlushTiming.js.map +1 -0
- package/dist/utils/paginateList.d.ts +25 -0
- package/dist/utils/paginateList.d.ts.map +1 -0
- package/dist/utils/paginateList.js +32 -0
- package/dist/utils/paginateList.js.map +1 -0
- package/dist/utils/paneDiff.d.ts +55 -0
- package/dist/utils/paneDiff.d.ts.map +1 -0
- package/dist/utils/paneDiff.js +88 -0
- package/dist/utils/paneDiff.js.map +1 -0
- package/dist/utils/paneResizeGuard.d.ts +69 -0
- package/dist/utils/paneResizeGuard.d.ts.map +1 -0
- package/dist/utils/paneResizeGuard.js +91 -0
- package/dist/utils/paneResizeGuard.js.map +1 -0
- package/dist/utils/persistAdapterSessionIds.d.ts +39 -0
- package/dist/utils/persistAdapterSessionIds.d.ts.map +1 -0
- package/dist/utils/persistAdapterSessionIds.js +28 -0
- package/dist/utils/persistAdapterSessionIds.js.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts +44 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.js +20 -0
- package/dist/utils/pinnedBannerSkipDecision.js.map +1 -0
- package/dist/utils/pollBackoff.d.ts +45 -0
- package/dist/utils/pollBackoff.d.ts.map +1 -0
- package/dist/utils/pollBackoff.js +44 -0
- package/dist/utils/pollBackoff.js.map +1 -0
- package/dist/utils/promptDelivery.d.ts +46 -0
- package/dist/utils/promptDelivery.d.ts.map +1 -0
- package/dist/utils/promptDelivery.js +49 -0
- package/dist/utils/promptDelivery.js.map +1 -0
- package/dist/utils/providerDisconnectPlan.d.ts +82 -0
- package/dist/utils/providerDisconnectPlan.d.ts.map +1 -0
- package/dist/utils/providerDisconnectPlan.js +110 -0
- package/dist/utils/providerDisconnectPlan.js.map +1 -0
- package/dist/utils/rateLimitLog.d.ts +48 -0
- package/dist/utils/rateLimitLog.d.ts.map +1 -0
- package/dist/utils/rateLimitLog.js +43 -0
- package/dist/utils/rateLimitLog.js.map +1 -0
- package/dist/utils/recentRelayWindow.d.ts +165 -0
- package/dist/utils/recentRelayWindow.d.ts.map +1 -0
- package/dist/utils/recentRelayWindow.js +284 -0
- package/dist/utils/recentRelayWindow.js.map +1 -0
- package/dist/utils/recvPreviewRedaction.d.ts +23 -0
- package/dist/utils/recvPreviewRedaction.d.ts.map +1 -0
- package/dist/utils/recvPreviewRedaction.js +39 -0
- package/dist/utils/recvPreviewRedaction.js.map +1 -0
- package/dist/utils/reminderFlow.d.ts +148 -0
- package/dist/utils/reminderFlow.d.ts.map +1 -0
- package/dist/utils/reminderFlow.js +122 -0
- package/dist/utils/reminderFlow.js.map +1 -0
- package/dist/utils/reminderScheduleText.d.ts +87 -0
- package/dist/utils/reminderScheduleText.d.ts.map +1 -0
- package/dist/utils/reminderScheduleText.js +135 -0
- package/dist/utils/reminderScheduleText.js.map +1 -0
- package/dist/utils/reminderWizard.d.ts +710 -0
- package/dist/utils/reminderWizard.d.ts.map +1 -0
- package/dist/utils/reminderWizard.js +1164 -0
- package/dist/utils/reminderWizard.js.map +1 -0
- package/dist/utils/replyQuote.d.ts +111 -0
- package/dist/utils/replyQuote.d.ts.map +1 -0
- package/dist/utils/replyQuote.js +122 -0
- package/dist/utils/replyQuote.js.map +1 -0
- package/dist/utils/resolveBinary.d.ts +25 -0
- package/dist/utils/resolveBinary.d.ts.map +1 -0
- package/dist/utils/resolveBinary.js +99 -0
- package/dist/utils/resolveBinary.js.map +1 -0
- package/dist/utils/retryAfterHeader.d.ts +7 -0
- package/dist/utils/retryAfterHeader.d.ts.map +1 -0
- package/dist/utils/retryAfterHeader.js +17 -0
- package/dist/utils/retryAfterHeader.js.map +1 -0
- package/dist/utils/rotatingJsonlFile.d.ts +40 -0
- package/dist/utils/rotatingJsonlFile.d.ts.map +1 -0
- package/dist/utils/rotatingJsonlFile.js +106 -0
- package/dist/utils/rotatingJsonlFile.js.map +1 -0
- package/dist/utils/rotatingLogFile.d.ts +25 -0
- package/dist/utils/rotatingLogFile.d.ts.map +1 -0
- package/dist/utils/rotatingLogFile.js +74 -0
- package/dist/utils/rotatingLogFile.js.map +1 -0
- package/dist/utils/sendRateTracker.d.ts +59 -0
- package/dist/utils/sendRateTracker.d.ts.map +1 -0
- package/dist/utils/sendRateTracker.js +144 -0
- package/dist/utils/sendRateTracker.js.map +1 -0
- package/dist/utils/serialQueue.d.ts +5 -0
- package/dist/utils/serialQueue.d.ts.map +1 -0
- package/dist/utils/serialQueue.js +14 -0
- package/dist/utils/serialQueue.js.map +1 -0
- package/dist/utils/sseStreamLifecycle.d.ts +32 -0
- package/dist/utils/sseStreamLifecycle.d.ts.map +1 -0
- package/dist/utils/sseStreamLifecycle.js +41 -0
- package/dist/utils/sseStreamLifecycle.js.map +1 -0
- package/dist/utils/startupReadiness.d.ts +119 -0
- package/dist/utils/startupReadiness.d.ts.map +1 -0
- package/dist/utils/startupReadiness.js +148 -0
- package/dist/utils/startupReadiness.js.map +1 -0
- package/dist/utils/statusFlushDecision.d.ts +18 -0
- package/dist/utils/statusFlushDecision.d.ts.map +1 -0
- package/dist/utils/statusFlushDecision.js +53 -0
- package/dist/utils/statusFlushDecision.js.map +1 -0
- package/dist/utils/subagentRender.d.ts +52 -0
- package/dist/utils/subagentRender.d.ts.map +1 -0
- package/dist/utils/subagentRender.js +66 -0
- package/dist/utils/subagentRender.js.map +1 -0
- package/dist/utils/subagentStatusRender.d.ts +90 -0
- package/dist/utils/subagentStatusRender.d.ts.map +1 -0
- package/dist/utils/subagentStatusRender.js +124 -0
- package/dist/utils/subagentStatusRender.js.map +1 -0
- package/dist/utils/telegramError.d.ts +2 -0
- package/dist/utils/telegramError.d.ts.map +1 -0
- package/dist/utils/telegramError.js +16 -0
- package/dist/utils/telegramError.js.map +1 -0
- package/dist/utils/terminalEmitPlan.d.ts +74 -0
- package/dist/utils/terminalEmitPlan.d.ts.map +1 -0
- package/dist/utils/terminalEmitPlan.js +86 -0
- package/dist/utils/terminalEmitPlan.js.map +1 -0
- package/dist/utils/thinkingRender.d.ts +74 -0
- package/dist/utils/thinkingRender.d.ts.map +1 -0
- package/dist/utils/thinkingRender.js +85 -0
- package/dist/utils/thinkingRender.js.map +1 -0
- package/dist/utils/threadStatusReport.d.ts +79 -0
- package/dist/utils/threadStatusReport.d.ts.map +1 -0
- package/dist/utils/threadStatusReport.js +88 -0
- package/dist/utils/threadStatusReport.js.map +1 -0
- package/dist/utils/threadToggle.d.ts +29 -0
- package/dist/utils/threadToggle.d.ts.map +1 -0
- package/dist/utils/threadToggle.js +39 -0
- package/dist/utils/threadToggle.js.map +1 -0
- package/dist/utils/timezone.d.ts +125 -0
- package/dist/utils/timezone.d.ts.map +1 -0
- package/dist/utils/timezone.js +278 -0
- package/dist/utils/timezone.js.map +1 -0
- package/dist/utils/tmuxExec.d.ts +61 -0
- package/dist/utils/tmuxExec.d.ts.map +1 -0
- package/dist/utils/tmuxExec.js +109 -0
- package/dist/utils/tmuxExec.js.map +1 -0
- package/dist/utils/tmuxSessionName.d.ts +34 -0
- package/dist/utils/tmuxSessionName.d.ts.map +1 -0
- package/dist/utils/tmuxSessionName.js +51 -0
- package/dist/utils/tmuxSessionName.js.map +1 -0
- package/dist/utils/toolResultRender.d.ts +61 -0
- package/dist/utils/toolResultRender.d.ts.map +1 -0
- package/dist/utils/toolResultRender.js +62 -0
- package/dist/utils/toolResultRender.js.map +1 -0
- package/dist/utils/topicRequest.d.ts +61 -0
- package/dist/utils/topicRequest.d.ts.map +1 -0
- package/dist/utils/topicRequest.js +68 -0
- package/dist/utils/topicRequest.js.map +1 -0
- package/dist/utils/topicView.d.ts +55 -0
- package/dist/utils/topicView.d.ts.map +1 -0
- package/dist/utils/topicView.js +56 -0
- package/dist/utils/topicView.js.map +1 -0
- package/dist/utils/transcribeAudio.d.ts +89 -0
- package/dist/utils/transcribeAudio.d.ts.map +1 -0
- package/dist/utils/transcribeAudio.js +249 -0
- package/dist/utils/transcribeAudio.js.map +1 -0
- package/dist/utils/transientFrames.d.ts +52 -0
- package/dist/utils/transientFrames.d.ts.map +1 -0
- package/dist/utils/transientFrames.js +41 -0
- package/dist/utils/transientFrames.js.map +1 -0
- package/dist/utils/typingActive.d.ts +35 -0
- package/dist/utils/typingActive.d.ts.map +1 -0
- package/dist/utils/typingActive.js +22 -0
- package/dist/utils/typingActive.js.map +1 -0
- package/dist/utils/typingLoopBackstop.d.ts +64 -0
- package/dist/utils/typingLoopBackstop.d.ts.map +1 -0
- package/dist/utils/typingLoopBackstop.js +68 -0
- package/dist/utils/typingLoopBackstop.js.map +1 -0
- package/dist/utils/verbosityRender.d.ts +18 -0
- package/dist/utils/verbosityRender.d.ts.map +1 -0
- package/dist/utils/verbosityRender.js +17 -0
- package/dist/utils/verbosityRender.js.map +1 -0
- package/dist/utils/wedgeRecovery.d.ts +57 -0
- package/dist/utils/wedgeRecovery.d.ts.map +1 -0
- package/dist/utils/wedgeRecovery.js +24 -0
- package/dist/utils/wedgeRecovery.js.map +1 -0
- package/dist/utils.d.ts +30 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +61 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.d.ts +113 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +226 -0
- package/dist/validation.js.map +1 -0
- package/dist/voiceQueue.d.ts +7 -0
- package/dist/voiceQueue.d.ts.map +1 -0
- package/dist/voiceQueue.js +33 -0
- package/dist/voiceQueue.js.map +1 -0
- package/examples/.env.example +17 -0
- package/examples/docker-compose.yml +36 -0
- package/package.json +83 -4
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jiraContextPreambleHeader = void 0;
|
|
4
|
+
exports.buildJiraContextPreamble = buildJiraContextPreamble;
|
|
5
|
+
/**
|
|
6
|
+
* @description The Jira issue's context preamble (Jira connector plan J5, R5):
|
|
7
|
+
* what `[Telegram thread context]` is for a topic — where the agent works and
|
|
8
|
+
* for whom — glued ahead of a prompt by the bot's one choke point, re-sent only
|
|
9
|
+
* when it changes. Agent-facing, so English. Kept free of the connector's
|
|
10
|
+
* heavier modules: `bot.ts` imports it statically (R20).
|
|
11
|
+
*/
|
|
12
|
+
exports.jiraContextPreambleHeader = '[Jira issue context]';
|
|
13
|
+
function buildJiraContextPreamble(input) {
|
|
14
|
+
const placeParts = [`issue: ${input.key.thread}`, `project: ${input.key.space}`, `folder: ${input.subdir}`];
|
|
15
|
+
if (input.timezone)
|
|
16
|
+
placeParts.push(`timezone: ${input.timezone}`);
|
|
17
|
+
return [
|
|
18
|
+
exports.jiraContextPreambleHeader,
|
|
19
|
+
placeParts.join(' | '),
|
|
20
|
+
'You work on this issue for its requester — the person who assigned it to you. ' +
|
|
21
|
+
'They see none of your plain output: each answer_request answer becomes a comment on the issue, ' +
|
|
22
|
+
'and a question or a final answer hands the issue back to them.',
|
|
23
|
+
// C12: restricted and internal comments are given to the agent, marked; what they say stays among those who may read them.
|
|
24
|
+
'A comment marked [restricted to …] or [internal] is not for everyone who can read this issue: ' +
|
|
25
|
+
'never quote or paraphrase it, or what it says, in an answer.',
|
|
26
|
+
// C10: the original of a file the issue lists.
|
|
27
|
+
'The issue\'s files are listed under Attachments and shown where they sit, e.g. "[image: shot.png — attachment 10234]": ' +
|
|
28
|
+
'fetch an original with the jira_get_attachment tool (the attachment id) and read the file at the path it returns.',
|
|
29
|
+
].join('\n');
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=contextPreamble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextPreamble.js","sourceRoot":"","sources":["../../../src/connectors/jira/contextPreamble.ts"],"names":[],"mappings":";;;AAoBA,4DAgBC;AAlCD;;;;;;GAMG;AAEU,QAAA,yBAAyB,GAAG,sBAAsB,CAAC;AAUhE,SAAgB,wBAAwB,CAAC,KAA+B;IACtE,MAAM,UAAU,GAAG,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5G,IAAI,KAAK,CAAC,QAAQ;QAAE,UAAU,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnE,OAAO;QACL,iCAAyB;QACzB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB,gFAAgF;YAC9E,iGAAiG;YACjG,gEAAgE;QAClE,2HAA2H;QAC3H,gGAAgG;YAC9F,8DAA8D;QAChE,+CAA+C;QAC/C,yHAAyH;YACvH,mHAAmH;KACtH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { SessionKey } from '../../sessionKey';
|
|
2
|
+
import type { OpenRequestState, RequestOrigin } from '../../requests/types';
|
|
3
|
+
import { type JiraAccount, type JiraClient } from './client';
|
|
4
|
+
import type { JiraTriggerLog } from './triggerLog';
|
|
5
|
+
import { type JiraExtraField } from './issueBlocks';
|
|
6
|
+
import type { JiraContextLedger } from './contextLedger';
|
|
7
|
+
import type { SessionPromptText } from '../../postToSession';
|
|
8
|
+
import { type JiraTrust } from './trustedGroup';
|
|
9
|
+
/**
|
|
10
|
+
* @description The Jira connector's inbound side (plan J5, D12/D13/D15/D21): a
|
|
11
|
+
* poll loop, one search per cycle, and per issue the decision chain
|
|
12
|
+
*
|
|
13
|
+
* allowlist → still matching → no post in flight → trigger (newest changelog pages first) → seen before → self-authored
|
|
14
|
+
* → hand-over backed by the trusted group (only with `trustedGroup`) → run budget → fetch the issue → bind
|
|
15
|
+
* → open a request → post (not awaited)
|
|
16
|
+
* → RECORD the trigger once the post settled
|
|
17
|
+
*
|
|
18
|
+
* The trigger is recorded only once its post SETTLED: a restart while the prompt
|
|
19
|
+
* has not reached the session yet (a session start, a busy turn the post waits
|
|
20
|
+
* out) leaves the trigger unrecorded and its request open, so the next poll opens
|
|
21
|
+
* a fresh request — which supersedes the old one — and posts it, instead of
|
|
22
|
+
* leaving a request the agent never saw. Only a crash in the instant between a
|
|
23
|
+
* finished post and its record can post a trigger twice. While a post is in
|
|
24
|
+
* flight the issue is skipped, so one process never posts two requests of an
|
|
25
|
+
* issue at once. A Jira event never cancels an armed usage-limit wait — the
|
|
26
|
+
* ledger's create hook tells the new request about it (core S5).
|
|
27
|
+
*/
|
|
28
|
+
export declare const jiraSearchPageSize = 50;
|
|
29
|
+
/** The longest wait between two attempts while Jira keeps failing (R22). */
|
|
30
|
+
export declare const jiraRetryBackoffCapMs: number;
|
|
31
|
+
/**
|
|
32
|
+
* @description R22: the wait before the next attempt after `failureCount`
|
|
33
|
+
* failures in a row — the base interval doubled per failure, up to
|
|
34
|
+
* {@link jiraRetryBackoffCapMs} (never below the base interval).
|
|
35
|
+
*/
|
|
36
|
+
export declare function getJiraRetryDelayMs(baseMs: number, failureCount: number): number;
|
|
37
|
+
/** Enough of each issue to decide; the prompt's fields are fetched only for a new request. */
|
|
38
|
+
export declare const jiraSearchFields: string[];
|
|
39
|
+
/** @name JiraProjectTrigger @description One allowlisted project as the poller uses it. */
|
|
40
|
+
export interface JiraProjectTrigger {
|
|
41
|
+
folder: string;
|
|
42
|
+
triggerStatusIds: ReadonlySet<string>;
|
|
43
|
+
/** The project's `extraFields` the site knows, named (an unknown id was dropped at boot). */
|
|
44
|
+
extraFields: readonly JiraExtraField[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @name JiraIssueDecision
|
|
48
|
+
* @description What the poller did with one returned issue.
|
|
49
|
+
* - `notAllowed` — its project is not in the allowlist (dropped).
|
|
50
|
+
* - `notMatching` — no longer assigned to the AI account, or not in a trigger status.
|
|
51
|
+
* - `posting` — the post of its last request has not settled yet (skipped).
|
|
52
|
+
* - `seen` — its trigger was decided before.
|
|
53
|
+
* - `selfAuthored`, `parked`, `untrusted`, `request` — the recorded outcomes; `untrusted` — the hand-over was
|
|
54
|
+
* made by someone the trusted group does not back (a notice and the hand-back, no request).
|
|
55
|
+
* - `failed` — an error stopped it; the next poll tries again.
|
|
56
|
+
*/
|
|
57
|
+
export type JiraIssueDecision = 'notAllowed' | 'notMatching' | 'posting' | 'seen' | 'selfAuthored' | 'parked' | 'untrusted' | 'request' | 'failed';
|
|
58
|
+
export interface JiraInboundDeps {
|
|
59
|
+
client: Pick<JiraClient, 'searchIssues' | 'getChangelogPage' | 'getIssue' | 'getComments' | 'getRemoteLinks'>;
|
|
60
|
+
aiAccountId: string;
|
|
61
|
+
/** `https://<site>` (or the test-only loopback base) — issue links are `<siteUrl>/browse/<KEY>`. */
|
|
62
|
+
siteUrl: string;
|
|
63
|
+
projects: ReadonlyMap<string, JiraProjectTrigger>;
|
|
64
|
+
runBudgetPer24h: number;
|
|
65
|
+
pollIntervalMs: number;
|
|
66
|
+
/** Where a conversation's text too long for its prompt is written whole (`promptSpill.ts`). */
|
|
67
|
+
getSpillDir: (key: SessionKey) => string;
|
|
68
|
+
triggerLog: JiraTriggerLog;
|
|
69
|
+
/** The trusted group (`trustedGroup.ts`); `null` without `trustedGroup` in `jira.json`: no filter. */
|
|
70
|
+
trust: JiraTrust | null;
|
|
71
|
+
now: () => number;
|
|
72
|
+
/** Bind the issue's conversation to its project's folder. */
|
|
73
|
+
bindConversation: (key: SessionKey, folder: string) => Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Open the request; `createPrompt` builds its prompt — kept by the request for a re-post (R21) — from
|
|
76
|
+
* its id and the ids of the same requester's open requests it replaced, which the header names (R34).
|
|
77
|
+
*/
|
|
78
|
+
createRequest: (key: SessionKey, origin: RequestOrigin, createPrompt: (requestId: string, supersededRequestIds: readonly string[]) => string) => Promise<Pick<OpenRequestState, 'id' | 'supersededRequestIds'>>;
|
|
79
|
+
/**
|
|
80
|
+
* Post the request's prompt to the issue's session (and start watching its turn): `fullText` is the whole
|
|
81
|
+
* issue (the request keeps it for a re-post, a hold keeps it); `buildText` runs right before the forward and
|
|
82
|
+
* makes the delta for a session that already knows the issue (C5).
|
|
83
|
+
*/
|
|
84
|
+
postRequest: (key: SessionKey, requestId: string, prompt: SessionPromptText) => Promise<void>;
|
|
85
|
+
/** What each issue's conversation was already told (C4). */
|
|
86
|
+
contextLedger: Pick<JiraContextLedger, 'getSnapshot' | 'recordBuild'>;
|
|
87
|
+
/** Over the run budget: the park notice and the hand-back (the answer side, J6). */
|
|
88
|
+
parkIssue: (issueKey: string, requester: JiraAccount | null) => Promise<void>;
|
|
89
|
+
/** A hand-over the trusted group `groupName` does not back: the fixed notice and the hand-back (the answer side). */
|
|
90
|
+
refuseUntrusted: (issueKey: string, requester: JiraAccount | null, groupName: string) => Promise<void>;
|
|
91
|
+
}
|
|
92
|
+
/** @description The poll's JQL (D13): the allowlist, assigned to the AI account, in a trigger status. */
|
|
93
|
+
export declare function buildJiraTriggerJql(projects: ReadonlyMap<string, JiraProjectTrigger>): string;
|
|
94
|
+
export declare class JiraInbound {
|
|
95
|
+
private readonly deps;
|
|
96
|
+
private timer;
|
|
97
|
+
private isRunning;
|
|
98
|
+
/** Polls in a row that failed — the backoff's exponent (R22). */
|
|
99
|
+
private failureCount;
|
|
100
|
+
/** Issues whose last request's post has not settled yet. */
|
|
101
|
+
private readonly postingIssueKeys;
|
|
102
|
+
constructor(deps: JiraInboundDeps);
|
|
103
|
+
/** @description Poll now, then every `pollIntervalMs` after each poll ENDS (never two at once). */
|
|
104
|
+
start(): void;
|
|
105
|
+
stop(): void;
|
|
106
|
+
private scheduleNext;
|
|
107
|
+
private runScheduledPoll;
|
|
108
|
+
/**
|
|
109
|
+
* @description One poll: every matching issue, each decided once. A {@link JiraAuthError} and a
|
|
110
|
+
* {@link JiraTrustedGroupGoneError} propagate, and so does a failed membership read: nothing is decided on a
|
|
111
|
+
* trusted-group list older than its age.
|
|
112
|
+
*/
|
|
113
|
+
pollOnce(): Promise<Map<string, JiraIssueDecision>>;
|
|
114
|
+
private getDecisionSafely;
|
|
115
|
+
private getDecision;
|
|
116
|
+
private openRequest;
|
|
117
|
+
/**
|
|
118
|
+
* @description Post the request, then record its trigger — also when the post
|
|
119
|
+
* failed: the request stays open and the wake-up engine takes it from there
|
|
120
|
+
* (its backstop resumes the session, or alerts when nothing can be resumed).
|
|
121
|
+
* A record that cannot be written is still remembered for this process, so the
|
|
122
|
+
* posted request is never posted again before a restart. Never rejects.
|
|
123
|
+
*/
|
|
124
|
+
private postAndRecord;
|
|
125
|
+
private recordOrWarn;
|
|
126
|
+
/**
|
|
127
|
+
* @description The issue's trigger and its requester, reading the changelog
|
|
128
|
+
* newest pages first and only as far as needed (D13, J5b): the first page with
|
|
129
|
+
* a matching entry holds the newest one — already seen, the read stops there,
|
|
130
|
+
* so a long-lived issue costs one page a poll — and older pages are read only
|
|
131
|
+
* while an app's trigger still needs the nearest earlier person (R24).
|
|
132
|
+
*/
|
|
133
|
+
private findTrigger;
|
|
134
|
+
/**
|
|
135
|
+
* The changelog in pages, NEWEST first: the search's own copy when complete,
|
|
136
|
+
* else read backwards from its end through its endpoint (which lists oldest
|
|
137
|
+
* first), never fetching an entry twice.
|
|
138
|
+
*/
|
|
139
|
+
private getChangelogNewestPagesFirst;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=inbound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../../src/connectors/jira/inbound.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JiraInbound = exports.jiraSearchFields = exports.jiraRetryBackoffCapMs = exports.jiraSearchPageSize = void 0;
|
|
4
|
+
exports.getJiraRetryDelayMs = getJiraRetryDelayMs;
|
|
5
|
+
exports.buildJiraTriggerJql = buildJiraTriggerJql;
|
|
6
|
+
const requestGroup_1 = require("../../requests/requestGroup");
|
|
7
|
+
const client_1 = require("./client");
|
|
8
|
+
const sessionKeyCodec_1 = require("./sessionKeyCodec");
|
|
9
|
+
const trigger_1 = require("./trigger");
|
|
10
|
+
const issueBlocks_1 = require("./issueBlocks");
|
|
11
|
+
const issueContext_1 = require("./issueContext");
|
|
12
|
+
const prompt_1 = require("./prompt");
|
|
13
|
+
const issueDelta_1 = require("./issueDelta");
|
|
14
|
+
const promptSpill_1 = require("./promptSpill");
|
|
15
|
+
const trustedGroup_1 = require("./trustedGroup");
|
|
16
|
+
/**
|
|
17
|
+
* @description The Jira connector's inbound side (plan J5, D12/D13/D15/D21): a
|
|
18
|
+
* poll loop, one search per cycle, and per issue the decision chain
|
|
19
|
+
*
|
|
20
|
+
* allowlist → still matching → no post in flight → trigger (newest changelog pages first) → seen before → self-authored
|
|
21
|
+
* → hand-over backed by the trusted group (only with `trustedGroup`) → run budget → fetch the issue → bind
|
|
22
|
+
* → open a request → post (not awaited)
|
|
23
|
+
* → RECORD the trigger once the post settled
|
|
24
|
+
*
|
|
25
|
+
* The trigger is recorded only once its post SETTLED: a restart while the prompt
|
|
26
|
+
* has not reached the session yet (a session start, a busy turn the post waits
|
|
27
|
+
* out) leaves the trigger unrecorded and its request open, so the next poll opens
|
|
28
|
+
* a fresh request — which supersedes the old one — and posts it, instead of
|
|
29
|
+
* leaving a request the agent never saw. Only a crash in the instant between a
|
|
30
|
+
* finished post and its record can post a trigger twice. While a post is in
|
|
31
|
+
* flight the issue is skipped, so one process never posts two requests of an
|
|
32
|
+
* issue at once. A Jira event never cancels an armed usage-limit wait — the
|
|
33
|
+
* ledger's create hook tells the new request about it (core S5).
|
|
34
|
+
*/
|
|
35
|
+
exports.jiraSearchPageSize = 50;
|
|
36
|
+
/** The longest wait between two attempts while Jira keeps failing (R22). */
|
|
37
|
+
exports.jiraRetryBackoffCapMs = 15 * 60 * 1000;
|
|
38
|
+
/**
|
|
39
|
+
* @description R22: the wait before the next attempt after `failureCount`
|
|
40
|
+
* failures in a row — the base interval doubled per failure, up to
|
|
41
|
+
* {@link jiraRetryBackoffCapMs} (never below the base interval).
|
|
42
|
+
*/
|
|
43
|
+
function getJiraRetryDelayMs(baseMs, failureCount) {
|
|
44
|
+
return Math.min(baseMs * 2 ** failureCount, Math.max(baseMs, exports.jiraRetryBackoffCapMs));
|
|
45
|
+
}
|
|
46
|
+
/** Enough of each issue to decide; the prompt's fields are fetched only for a new request. */
|
|
47
|
+
exports.jiraSearchFields = ['status', 'assignee', 'reporter', 'creator'];
|
|
48
|
+
/** Decisions that change nothing, left out of the poll's log line. */
|
|
49
|
+
const quietDecisions = new Set(['notMatching', 'posting', 'seen']);
|
|
50
|
+
/** @description The poll's JQL (D13): the allowlist, assigned to the AI account, in a trigger status. */
|
|
51
|
+
function buildJiraTriggerJql(projects) {
|
|
52
|
+
const projectKeys = [...projects.keys()].map((projectKey) => `"${projectKey}"`).join(', ');
|
|
53
|
+
const statusIds = [...new Set([...projects.values()].flatMap((project) => [...project.triggerStatusIds]))]
|
|
54
|
+
.map((statusId) => `"${statusId}"`)
|
|
55
|
+
.join(', ');
|
|
56
|
+
return `project in (${projectKeys}) AND assignee = currentUser() AND status in (${statusIds}) ORDER BY created ASC`;
|
|
57
|
+
}
|
|
58
|
+
class JiraInbound {
|
|
59
|
+
deps;
|
|
60
|
+
timer = null;
|
|
61
|
+
isRunning = false;
|
|
62
|
+
/** Polls in a row that failed — the backoff's exponent (R22). */
|
|
63
|
+
failureCount = 0;
|
|
64
|
+
/** Issues whose last request's post has not settled yet. */
|
|
65
|
+
postingIssueKeys = new Set();
|
|
66
|
+
constructor(deps) {
|
|
67
|
+
this.deps = deps;
|
|
68
|
+
}
|
|
69
|
+
/** @description Poll now, then every `pollIntervalMs` after each poll ENDS (never two at once). */
|
|
70
|
+
start() {
|
|
71
|
+
if (this.isRunning)
|
|
72
|
+
return;
|
|
73
|
+
this.isRunning = true;
|
|
74
|
+
this.scheduleNext(0);
|
|
75
|
+
}
|
|
76
|
+
stop() {
|
|
77
|
+
this.isRunning = false;
|
|
78
|
+
if (this.timer)
|
|
79
|
+
clearTimeout(this.timer);
|
|
80
|
+
this.timer = null;
|
|
81
|
+
}
|
|
82
|
+
scheduleNext(delayMs) {
|
|
83
|
+
// Not unref'd on purpose: in a Jira-only instance this timer is what keeps the process alive (D9).
|
|
84
|
+
this.timer = setTimeout(() => {
|
|
85
|
+
void this.runScheduledPoll();
|
|
86
|
+
}, delayMs);
|
|
87
|
+
}
|
|
88
|
+
async runScheduledPoll() {
|
|
89
|
+
try {
|
|
90
|
+
await this.pollOnce();
|
|
91
|
+
this.failureCount = 0;
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (error instanceof client_1.JiraAuthError || error instanceof trustedGroup_1.JiraTrustedGroupGoneError) {
|
|
95
|
+
// D14: wrong or revoked credentials, or a trusted group deleted from the site, do not fix themselves;
|
|
96
|
+
// one loud line, then stop.
|
|
97
|
+
console.error(`[jira] polling STOPPED: ${error.message}`);
|
|
98
|
+
this.stop();
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// R22: a Jira outage never stops polling — the next attempt just waits longer.
|
|
102
|
+
this.failureCount += 1;
|
|
103
|
+
console.warn(`[jira] poll failed (${this.failureCount} in a row): ${error instanceof Error ? error.message : String(error)}`);
|
|
104
|
+
}
|
|
105
|
+
if (this.isRunning)
|
|
106
|
+
this.scheduleNext(getJiraRetryDelayMs(this.deps.pollIntervalMs, this.failureCount));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* @description One poll: every matching issue, each decided once. A {@link JiraAuthError} and a
|
|
110
|
+
* {@link JiraTrustedGroupGoneError} propagate, and so does a failed membership read: nothing is decided on a
|
|
111
|
+
* trusted-group list older than its age.
|
|
112
|
+
*/
|
|
113
|
+
async pollOnce() {
|
|
114
|
+
const decisions = new Map();
|
|
115
|
+
const jql = buildJiraTriggerJql(this.deps.projects);
|
|
116
|
+
let nextPageToken;
|
|
117
|
+
do {
|
|
118
|
+
// Before every page, not only the first: deciding a long page takes time, and the list must not age out under it.
|
|
119
|
+
await this.deps.trust?.refreshIfStale();
|
|
120
|
+
const page = await this.deps.client.searchIssues({
|
|
121
|
+
jql,
|
|
122
|
+
fields: exports.jiraSearchFields,
|
|
123
|
+
isChangelogExpanded: true,
|
|
124
|
+
maxResults: exports.jiraSearchPageSize,
|
|
125
|
+
nextPageToken,
|
|
126
|
+
});
|
|
127
|
+
for (const issue of page.issues)
|
|
128
|
+
decisions.set(issue.key, await this.getDecisionSafely(issue));
|
|
129
|
+
nextPageToken = page.isLast ? undefined : (page.nextPageToken ?? undefined);
|
|
130
|
+
} while (nextPageToken);
|
|
131
|
+
const acted = [...decisions].filter(([, decision]) => !quietDecisions.has(decision));
|
|
132
|
+
if (acted.length > 0)
|
|
133
|
+
console.log(`[jira] poll: ${acted.map(([issueKey, decision]) => `${issueKey} ${decision}`).join(', ')}`);
|
|
134
|
+
return decisions;
|
|
135
|
+
}
|
|
136
|
+
async getDecisionSafely(issue) {
|
|
137
|
+
try {
|
|
138
|
+
return await this.getDecision(issue);
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
if (error instanceof client_1.JiraAuthError)
|
|
142
|
+
throw error;
|
|
143
|
+
console.warn(`[jira] ${issue.key}: ${error instanceof Error ? error.message : String(error)}`);
|
|
144
|
+
return 'failed';
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async getDecision(issue) {
|
|
148
|
+
const { deps } = this;
|
|
149
|
+
const projectKey = (0, sessionKeyCodec_1.getJiraIssueProjectKey)(issue.key);
|
|
150
|
+
const project = projectKey === null ? undefined : deps.projects.get(projectKey);
|
|
151
|
+
// D13: the JQL names only the allowlist, but every returned issue is checked again.
|
|
152
|
+
if (!project)
|
|
153
|
+
return 'notAllowed';
|
|
154
|
+
const statusId = issue.fields.status?.id;
|
|
155
|
+
if (issue.fields.assignee?.accountId !== deps.aiAccountId || statusId === undefined || !project.triggerStatusIds.has(statusId)) {
|
|
156
|
+
return 'notMatching';
|
|
157
|
+
}
|
|
158
|
+
if (this.postingIssueKeys.has(issue.key))
|
|
159
|
+
return 'posting';
|
|
160
|
+
const found = await this.findTrigger(issue, project);
|
|
161
|
+
if (found === 'seen')
|
|
162
|
+
return 'seen';
|
|
163
|
+
const { trigger, requester } = found;
|
|
164
|
+
const at = deps.now();
|
|
165
|
+
if (trigger.author?.accountId === deps.aiAccountId) {
|
|
166
|
+
this.recordOrWarn({ issueKey: issue.key, triggerId: trigger.triggerId, outcome: 'selfAuthored', at });
|
|
167
|
+
return 'selfAuthored';
|
|
168
|
+
}
|
|
169
|
+
// The HAND-OVER decides: the account that made the change — an app or automation is trusted, so what it hands
|
|
170
|
+
// over starts the agent whoever the requester turns out to be. A change Jira names no one for falls back to the
|
|
171
|
+
// requester, and no account at all is untrusted (fail closed).
|
|
172
|
+
if (deps.trust && !deps.trust.checkIsTrusted(trigger.author ?? requester)) {
|
|
173
|
+
// Recorded first, as a park: the notice is posted at most once per trigger, never again by a failed or repeated poll.
|
|
174
|
+
if (!this.recordOrWarn({ issueKey: issue.key, triggerId: trigger.triggerId, outcome: 'untrusted', at }))
|
|
175
|
+
return 'failed';
|
|
176
|
+
await deps.refuseUntrusted(issue.key, requester, deps.trust.groupName);
|
|
177
|
+
return 'untrusted';
|
|
178
|
+
}
|
|
179
|
+
if (deps.triggerLog.getRequestCountLastDay(issue.key, at) >= deps.runBudgetPer24h) {
|
|
180
|
+
// Recorded first: a failed notice is not repeated on every poll (at most one per trigger).
|
|
181
|
+
if (!this.recordOrWarn({ issueKey: issue.key, triggerId: trigger.triggerId, outcome: 'parked', at }))
|
|
182
|
+
return 'failed';
|
|
183
|
+
await deps.parkIssue(issue.key, requester);
|
|
184
|
+
return 'parked';
|
|
185
|
+
}
|
|
186
|
+
return this.openRequest(issue, project, trigger, requester, at);
|
|
187
|
+
}
|
|
188
|
+
async openRequest(issue, project, trigger, requester, at) {
|
|
189
|
+
const { deps } = this;
|
|
190
|
+
const { trust } = deps;
|
|
191
|
+
// Fetched before the request opens: a request is never left without its prompt. The whole changelog is read
|
|
192
|
+
// only with a trusted group — it says who wrote each field — and once per request, never per poll.
|
|
193
|
+
const context = await (0, issueContext_1.fetchJiraIssueContext)(deps.client, issue.key, project.extraFields.map((extraField) => extraField.id), trust !== null);
|
|
194
|
+
const blockTrust = trust && {
|
|
195
|
+
checkIsTrusted: (account) => trust.checkIsTrusted(account),
|
|
196
|
+
allowlistedProjectKeys: new Set(deps.projects.keys()),
|
|
197
|
+
};
|
|
198
|
+
const blocks = (0, issueBlocks_1.buildIssueBlocks)(context, project.extraFields, deps.aiAccountId, blockTrust);
|
|
199
|
+
const key = (0, sessionKeyCodec_1.makeJiraKey)(issue.key);
|
|
200
|
+
const promptInput = {
|
|
201
|
+
issueKey: issue.key,
|
|
202
|
+
statusName: context.issue.fields.status?.name,
|
|
203
|
+
issueUrl: `${deps.siteUrl.replace(/\/+$/, '')}/browse/${issue.key}`,
|
|
204
|
+
trigger,
|
|
205
|
+
requester,
|
|
206
|
+
isTextFiltered: trust !== null,
|
|
207
|
+
};
|
|
208
|
+
// Rendered and written BEFORE the request opens: the ledger builds the prompt inside its own synchronous update.
|
|
209
|
+
const fitted = await (0, promptSpill_1.fitBlocksToPrompt)({
|
|
210
|
+
blocks,
|
|
211
|
+
textDir: deps.getSpillDir(key),
|
|
212
|
+
measure: (candidate) => (0, prompt_1.buildJiraRequestPrompt)({ ...promptInput, requestId: promptSpill_1.standInRequestId, ...candidate }).length,
|
|
213
|
+
});
|
|
214
|
+
await deps.bindConversation(key, project.folder);
|
|
215
|
+
const createPrompt = (requestId, supersededRequestIds) => (0, prompt_1.buildJiraRequestPrompt)({
|
|
216
|
+
...promptInput,
|
|
217
|
+
requestId,
|
|
218
|
+
...fitted,
|
|
219
|
+
supersededRequestIds,
|
|
220
|
+
});
|
|
221
|
+
// R34: the requester is part of the request's group key — a second person's trigger on the same
|
|
222
|
+
// issue opens a request of its own instead of superseding the first (`requests/requestGroup.ts`).
|
|
223
|
+
const request = await deps.createRequest(key, {
|
|
224
|
+
kind: 'trackerEvent',
|
|
225
|
+
attributes: { issueKey: issue.key, triggerId: trigger.triggerId, [requestGroup_1.requestRequesterAttribute]: requester?.accountId ?? requestGroup_1.emptyRequester },
|
|
226
|
+
}, createPrompt);
|
|
227
|
+
const supersededRequestIds = request.supersededRequestIds ?? [];
|
|
228
|
+
const fullText = createPrompt(request.id, supersededRequestIds);
|
|
229
|
+
const prompt = {
|
|
230
|
+
fullText,
|
|
231
|
+
// C5: built only once the post knows whether the session is fresh — right before the forward.
|
|
232
|
+
buildText: ({ isFresh }) => {
|
|
233
|
+
const snapshot = deps.contextLedger.getSnapshot(issue.key);
|
|
234
|
+
const isWhole = isFresh || Object.keys(snapshot.sent).length === 0;
|
|
235
|
+
const delta = (0, issueDelta_1.getIssueDelta)(fitted.blocks, isWhole ? {} : snapshot.sent);
|
|
236
|
+
// Counted as sent only once the agent takes it in (C4): the connector commits it then.
|
|
237
|
+
deps.contextLedger.recordBuild(issue.key, request.id, snapshot.generation, delta.sent);
|
|
238
|
+
return isWhole ? fullText : (0, prompt_1.buildJiraDeltaPrompt)({ ...promptInput, requestId: request.id, supersededRequestIds, delta });
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
// Not awaited: a busy session may take minutes to take the prompt, and the rest of
|
|
242
|
+
// the poll must not wait for it; until the post settles, the issue is skipped.
|
|
243
|
+
this.postingIssueKeys.add(issue.key);
|
|
244
|
+
void this.postAndRecord(key, request.id, prompt, { issueKey: issue.key, triggerId: trigger.triggerId, outcome: 'request', at, requestId: request.id });
|
|
245
|
+
return 'request';
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* @description Post the request, then record its trigger — also when the post
|
|
249
|
+
* failed: the request stays open and the wake-up engine takes it from there
|
|
250
|
+
* (its backstop resumes the session, or alerts when nothing can be resumed).
|
|
251
|
+
* A record that cannot be written is still remembered for this process, so the
|
|
252
|
+
* posted request is never posted again before a restart. Never rejects.
|
|
253
|
+
*/
|
|
254
|
+
async postAndRecord(key, requestId, prompt, record) {
|
|
255
|
+
try {
|
|
256
|
+
await this.deps.postRequest(key, requestId, prompt);
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
console.warn(`[jira] ${record.issueKey}: request ${requestId} not posted: ${error instanceof Error ? error.message : String(error)}`);
|
|
260
|
+
}
|
|
261
|
+
if (!this.recordOrWarn(record))
|
|
262
|
+
this.deps.triggerLog.remember(record);
|
|
263
|
+
this.postingIssueKeys.delete(record.issueKey);
|
|
264
|
+
}
|
|
265
|
+
recordOrWarn(record) {
|
|
266
|
+
const isRecorded = this.deps.triggerLog.record(record);
|
|
267
|
+
if (!isRecorded)
|
|
268
|
+
console.warn(`[jira] ${record.issueKey}: trigger ${record.triggerId} (${record.outcome}) could not be recorded`);
|
|
269
|
+
return isRecorded;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* @description The issue's trigger and its requester, reading the changelog
|
|
273
|
+
* newest pages first and only as far as needed (D13, J5b): the first page with
|
|
274
|
+
* a matching entry holds the newest one — already seen, the read stops there,
|
|
275
|
+
* so a long-lived issue costs one page a poll — and older pages are read only
|
|
276
|
+
* while an app's trigger still needs the nearest earlier person (R24).
|
|
277
|
+
*/
|
|
278
|
+
async findTrigger(issue, project) {
|
|
279
|
+
const { deps } = this;
|
|
280
|
+
const match = { aiAccountId: deps.aiAccountId, triggerStatusIds: project.triggerStatusIds };
|
|
281
|
+
const reporter = issue.fields.reporter ?? null;
|
|
282
|
+
const histories = [];
|
|
283
|
+
for await (const page of this.getChangelogNewestPagesFirst(issue)) {
|
|
284
|
+
histories.push(...page);
|
|
285
|
+
const trigger = (0, trigger_1.findNewestTrigger)(histories, match);
|
|
286
|
+
if (!trigger)
|
|
287
|
+
continue;
|
|
288
|
+
if (deps.triggerLog.checkIsSeen(issue.key, trigger.triggerId))
|
|
289
|
+
return 'seen';
|
|
290
|
+
const isRequesterKnown = trigger.author?.accountId === deps.aiAccountId
|
|
291
|
+
|| (0, trigger_1.getRequester)(trigger, histories, null, deps.aiAccountId) !== null;
|
|
292
|
+
if (isRequesterKnown)
|
|
293
|
+
return { trigger, requester: (0, trigger_1.getRequester)(trigger, histories, reporter, deps.aiAccountId) };
|
|
294
|
+
}
|
|
295
|
+
const trigger = (0, trigger_1.getIssueTrigger)(histories, match, issue.fields.creator ?? reporter);
|
|
296
|
+
if (deps.triggerLog.checkIsSeen(issue.key, trigger.triggerId))
|
|
297
|
+
return 'seen';
|
|
298
|
+
return { trigger, requester: (0, trigger_1.getRequester)(trigger, histories, reporter, deps.aiAccountId) };
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* The changelog in pages, NEWEST first: the search's own copy when complete,
|
|
302
|
+
* else read backwards from its end through its endpoint (which lists oldest
|
|
303
|
+
* first), never fetching an entry twice.
|
|
304
|
+
*/
|
|
305
|
+
async *getChangelogNewestPagesFirst(issue) {
|
|
306
|
+
const { changelog } = issue;
|
|
307
|
+
if (changelog && changelog.total <= changelog.histories.length) {
|
|
308
|
+
yield changelog.histories;
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
let total = changelog?.total;
|
|
312
|
+
if (total === undefined) {
|
|
313
|
+
const first = await this.deps.client.getChangelogPage(issue.key, 0, client_1.jiraChangelogPageSize);
|
|
314
|
+
if (first.total <= first.values.length) {
|
|
315
|
+
yield first.values;
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
total = first.total;
|
|
319
|
+
}
|
|
320
|
+
for (let end = total; end > 0;) {
|
|
321
|
+
const startAt = Math.max(0, end - client_1.jiraChangelogPageSize);
|
|
322
|
+
const page = await this.deps.client.getChangelogPage(issue.key, startAt, end - startAt);
|
|
323
|
+
if (page.values.length === 0)
|
|
324
|
+
return;
|
|
325
|
+
yield page.values;
|
|
326
|
+
end = startAt;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
exports.JiraInbound = JiraInbound;
|
|
331
|
+
//# sourceMappingURL=inbound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../../src/connectors/jira/inbound.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { JiraAccount } from './client';
|
|
2
|
+
import type { JiraIssueContext } from './issueContext';
|
|
3
|
+
/**
|
|
4
|
+
* @description An issue as the ordered list of blocks its prompt is made of
|
|
5
|
+
* (plan C3): `fields`, `description`, `hierarchy`, `links`, `attachments`, then
|
|
6
|
+
* one `comment:<id>` per comment, oldest first. Each block is rendered to text
|
|
7
|
+
* once and hashed, so a later request can tell a block that changed from one the
|
|
8
|
+
* agent already has. Every name and title is kept to one line and every body
|
|
9
|
+
* quoted line by line (`promptText.ts`): all of it is written by people who can
|
|
10
|
+
* edit the issue, or a linked one.
|
|
11
|
+
*
|
|
12
|
+
* With a trusted group (`trust` set) a piece of the issue's own text reaches the
|
|
13
|
+
* agent only when EVERYONE who wrote it is trusted — a member, the AI account or
|
|
14
|
+
* an app; an author Jira does not name counts as untrusted. Text that does not
|
|
15
|
+
* is replaced IN PLACE by a marker (`[withheld: …]`) before the blocks are
|
|
16
|
+
* hashed, fitted or spilled, so it never reaches a prompt, a delta or a file.
|
|
17
|
+
*/
|
|
18
|
+
export type IssueBlockKind = 'fields' | 'description' | 'hierarchy' | 'links' | 'attachments' | 'comment';
|
|
19
|
+
export interface IssueBlock {
|
|
20
|
+
/** Stable across requests: the kind, or `comment:<id>`. */
|
|
21
|
+
key: string;
|
|
22
|
+
kind: IssueBlockKind;
|
|
23
|
+
/** The block's first line, without its colon and without any state note. */
|
|
24
|
+
heading: string;
|
|
25
|
+
/** The lines under the heading, already single-line or quoted. A spilled block's is a pointer to its file. */
|
|
26
|
+
body: string;
|
|
27
|
+
/** What the block says, whole and unquoted: a comment's or the description's own text, else the body. A spill file holds exactly this. */
|
|
28
|
+
fullText: string;
|
|
29
|
+
/** sha256 of what the block says. A comment's covers its text and visibility marker only, so a no-op save never changes it. Spilling does not change it. */
|
|
30
|
+
hash: string;
|
|
31
|
+
/** Set once the block was moved to a file (`promptSpill.ts`): where. */
|
|
32
|
+
spilledTo?: string;
|
|
33
|
+
/** A comment block's own facts; absent for the other kinds. */
|
|
34
|
+
comment?: IssueBlockComment;
|
|
35
|
+
/** The whole text was written or edited by someone outside the trusted group: the block is a marker, on the heading's own line. */
|
|
36
|
+
isWithheld?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/** What a delta says about a comment beyond its text (prompt context C4–C7). */
|
|
39
|
+
export interface IssueBlockComment {
|
|
40
|
+
/** `comment <id> by <name> from <date>`: what the line of a deleted comment names. */
|
|
41
|
+
label: string;
|
|
42
|
+
/** `edited <date> by <name>`: the note of a comment that changed since it was sent. */
|
|
43
|
+
editNote: string;
|
|
44
|
+
/** Written by the AI account and edited by nobody else: the agent's own answer, never sent back in a delta (C7). */
|
|
45
|
+
isOwn: boolean;
|
|
46
|
+
}
|
|
47
|
+
/** A project's extra field as the site names it (resolved from `jira.json` `extraFields` at boot). */
|
|
48
|
+
export interface JiraExtraField {
|
|
49
|
+
id: string;
|
|
50
|
+
name: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @name JiraBlockTrust
|
|
54
|
+
* @description The trusted group as the blocks need it: who is trusted, and which projects the operator listed —
|
|
55
|
+
* another issue's summary is shown only from those (the agent may read them through its own tools anyway).
|
|
56
|
+
*/
|
|
57
|
+
export interface JiraBlockTrust {
|
|
58
|
+
checkIsTrusted: (account: JiraAccount | null | undefined) => boolean;
|
|
59
|
+
allowlistedProjectKeys: ReadonlySet<string>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @description The block as the prompt prints it; `stateNote` (`new`, `changed since your last prompt`, …) follows
|
|
63
|
+
* the heading. A withheld block is one line: its marker follows the heading's colon.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getIssueBlockText(block: IssueBlock, stateNote?: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* @description The issue as blocks, in prompt order. Media in the description
|
|
68
|
+
* and the comments become placeholders naming their attachment (C9); the
|
|
69
|
+
* attachments block then says where each file is referenced. With `trust` set,
|
|
70
|
+
* text outside the trusted group is replaced by markers (see the file header);
|
|
71
|
+
* `null` is the unfiltered issue, as it always was.
|
|
72
|
+
*/
|
|
73
|
+
export declare function buildIssueBlocks(context: JiraIssueContext, extraFields: readonly JiraExtraField[], aiAccountId: string, trust?: JiraBlockTrust | null): IssueBlock[];
|
|
74
|
+
//# sourceMappingURL=issueBlocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issueBlocks.d.ts","sourceRoot":"","sources":["../../../src/connectors/jira/issueBlocks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAkE,MAAM,UAAU,CAAC;AAC5G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD;;;;;;;;;;;;;;GAcG;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,CAAC;AAE1G,MAAM,WAAW,UAAU;IACzB,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,cAAc,CAAC;IACrB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,8GAA8G;IAC9G,IAAI,EAAE,MAAM,CAAC;IACb,0IAA0I;IAC1I,QAAQ,EAAE,MAAM,CAAC;IACjB,4JAA4J;IAC5J,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,mIAAmI;IACnI,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,QAAQ,EAAE,MAAM,CAAC;IACjB,oHAAoH;IACpH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,sGAAsG;AACtG,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,KAAK,OAAO,CAAC;IACrE,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC7C;AAeD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/E;AAkMD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,SAAS,cAAc,EAAE,EACtC,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,cAAc,GAAG,IAAW,GAClC,UAAU,EAAE,CAgDd"}
|