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,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pure helpers for naming bot-created OpenCode sessions.
|
|
4
|
+
*
|
|
5
|
+
* Primary mechanism (R1, verified live 2026-06-04): a session created WITHOUT
|
|
6
|
+
* an explicit `title` lets opencode auto-name it from the first prompt's LLM
|
|
7
|
+
* turn — nicer than any raw snippet, and it ignores the glued thread-context
|
|
8
|
+
* preamble. A session created WITH a title is treated as user-set and never
|
|
9
|
+
* auto-renamed, so the bot only passes a title for the explicit `/opencode
|
|
10
|
+
* <args>` case.
|
|
11
|
+
*
|
|
12
|
+
* Fallback mechanism: if auto-title never lands (the title stays the bare
|
|
13
|
+
* `New session - <ts>` placeholder — e.g. the server failed to generate one),
|
|
14
|
+
* the adapter renames the session itself via `PATCH /session/:id {title}` on
|
|
15
|
+
* the first MEANINGFUL prompt, using {@link buildSessionTitleSnippet}. The
|
|
16
|
+
* snippet always derives from the RAW user text (the caller strips the
|
|
17
|
+
* preamble first), so it can never carry the service header.
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.sessionTitleSnippetMaxLength = exports.meaningfulPromptMinLength = void 0;
|
|
21
|
+
exports.checkIsMeaningfulPrompt = checkIsMeaningfulPrompt;
|
|
22
|
+
exports.buildSessionTitleSnippet = buildSessionTitleSnippet;
|
|
23
|
+
exports.checkIsPlaceholderTitle = checkIsPlaceholderTitle;
|
|
24
|
+
const threadContextPreamble_1 = require("./threadContextPreamble");
|
|
25
|
+
/**
|
|
26
|
+
* Minimum length (chars, after trim) for a prompt to count as "meaningful"
|
|
27
|
+
* enough to name a session after. Short acknowledgements ("да", "go", "ok")
|
|
28
|
+
* sit below it and leave the name to be decided by a later, substantial
|
|
29
|
+
* prompt. 10 is the locked value from the plan's IDEAL.
|
|
30
|
+
*/
|
|
31
|
+
exports.meaningfulPromptMinLength = 10;
|
|
32
|
+
/** Max length (chars) of a fallback snippet title; longer text is truncated. */
|
|
33
|
+
exports.sessionTitleSnippetMaxLength = 60;
|
|
34
|
+
/** Marker appended when a snippet is truncated, so the cut is visible. */
|
|
35
|
+
const truncationEllipsis = '…';
|
|
36
|
+
/**
|
|
37
|
+
* Placeholder titles opencode assigns to a session that has no real name yet:
|
|
38
|
+
* the `New session - <ISO timestamp>` form (untitled create) and the legacy
|
|
39
|
+
* `Telegram session <key>` the bot used to set. A title matching either is
|
|
40
|
+
* "not yet meaningfully named", so the fallback rename may overwrite it; any
|
|
41
|
+
* other title is a real name (auto-generated or user-set) and is left alone.
|
|
42
|
+
*/
|
|
43
|
+
const untitledPlaceholderPrefix = 'New session - ';
|
|
44
|
+
const legacyBotTitlePrefix = 'Telegram session ';
|
|
45
|
+
/**
|
|
46
|
+
* @description Whether a forwarded prompt is substantial enough to name a
|
|
47
|
+
* session after. A slash command (`/clear`, `/model …`) is a control token,
|
|
48
|
+
* never a name source; anything shorter than {@link meaningfulPromptMinLength}
|
|
49
|
+
* is a throwaway acknowledgement. The argument MUST be the RAW user text —
|
|
50
|
+
* strip the thread-context preamble before calling (see
|
|
51
|
+
* {@link buildSessionTitleSnippet} for the same requirement).
|
|
52
|
+
*/
|
|
53
|
+
function checkIsMeaningfulPrompt(rawText) {
|
|
54
|
+
const trimmed = rawText.trim();
|
|
55
|
+
if (trimmed.startsWith('/'))
|
|
56
|
+
return false;
|
|
57
|
+
return trimmed.length >= exports.meaningfulPromptMinLength;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @description Build a fallback session-title snippet from the first
|
|
61
|
+
* meaningful prompt. Collapses all internal whitespace (incl. newlines) to
|
|
62
|
+
* single spaces, trims, and truncates to {@link sessionTitleSnippetMaxLength}
|
|
63
|
+
* with an ellipsis. The thread-context preamble is stripped first so the title
|
|
64
|
+
* reflects what the USER said, never the bot's glue.
|
|
65
|
+
*/
|
|
66
|
+
function buildSessionTitleSnippet(rawText) {
|
|
67
|
+
const withoutPreamble = (0, threadContextPreamble_1.stripThreadContextPreamble)(rawText);
|
|
68
|
+
const collapsed = withoutPreamble.replace(/\s+/g, ' ').trim();
|
|
69
|
+
if (collapsed.length <= exports.sessionTitleSnippetMaxLength)
|
|
70
|
+
return collapsed;
|
|
71
|
+
// Reserve one char for the ellipsis so the result never exceeds the cap.
|
|
72
|
+
return collapsed.slice(0, exports.sessionTitleSnippetMaxLength - 1).trimEnd() + truncationEllipsis;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* @description Whether `title` is one of opencode's "no real name yet"
|
|
76
|
+
* placeholders, so the fallback rename is allowed to overwrite it. A real
|
|
77
|
+
* auto-generated or user-set title returns `false` and is left untouched.
|
|
78
|
+
*/
|
|
79
|
+
function checkIsPlaceholderTitle(title) {
|
|
80
|
+
if (!title)
|
|
81
|
+
return true;
|
|
82
|
+
return title.startsWith(untitledPlaceholderPrefix) || title.startsWith(legacyBotTitlePrefix);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=openCodeSessionTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openCodeSessionTitle.js","sourceRoot":"","sources":["../src/openCodeSessionTitle.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAoCH,0DAIC;AASD,4DAMC;AAOD,0DAGC;AA/DD,mEAAqE;AAErE;;;;;GAKG;AACU,QAAA,yBAAyB,GAAG,EAAE,CAAC;AAE5C,gFAAgF;AACnE,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AACnD,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,OAAO,CAAC,MAAM,IAAI,iCAAyB,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,OAAe;IACtD,MAAM,eAAe,GAAG,IAAA,kDAA0B,EAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,IAAI,SAAS,CAAC,MAAM,IAAI,oCAA4B;QAAE,OAAO,SAAS,CAAC;IACvE,yEAAyE;IACzE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,oCAA4B,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,kBAAkB,CAAC;AAC7F,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAyB;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,KAAK,CAAC,UAAU,CAAC,yBAAyB,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC/F,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { SessionKey } from './sessionKey';
|
|
2
|
+
/**
|
|
3
|
+
* @description Snapshot of the persisted trace toggle. Mirrors what is stored
|
|
4
|
+
* in `state.json` so the bot can read the current config back for `/trace`
|
|
5
|
+
* status replies and re-seed this module after a restart.
|
|
6
|
+
*/
|
|
7
|
+
export interface TraceConfig {
|
|
8
|
+
allThreads: boolean;
|
|
9
|
+
threadKeys: string[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @description Replace the in-memory trace toggle from persisted state. Called
|
|
13
|
+
* once at boot (seed from `state.json`) and again on every `/trace` mutation so
|
|
14
|
+
* the writer and the persisted record never drift. Lifecycle-independent: only
|
|
15
|
+
* `/trace` touches it — session stop/new/quit/resume/unbind never do.
|
|
16
|
+
*/
|
|
17
|
+
export declare function setTraceConfig(config: TraceConfig): void;
|
|
18
|
+
/** Current trace toggle as a plain snapshot — for `/trace` status + persistence. */
|
|
19
|
+
export declare function getTraceConfig(): TraceConfig;
|
|
20
|
+
/**
|
|
21
|
+
* @description Whether ANY tracing is active (all-flag set OR at least one
|
|
22
|
+
* thread opted in). The single fast-path gate every hook hits first — when it
|
|
23
|
+
* returns false the hook does no work beyond this check.
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkIsTracingActive(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* @description Whether a specific thread's events should be recorded:
|
|
28
|
+
* the all-flag covers everything, otherwise the thread must be opted in.
|
|
29
|
+
*/
|
|
30
|
+
export declare function checkIsThreadTraced(key: SessionKey): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* @description Delete trace buckets older than the shared 6h retention window
|
|
33
|
+
* (the hourly `output-trace-*.jsonl` files + their `.1` siblings). Best-effort;
|
|
34
|
+
* called at boot and on the file-sweep interval by the bot's janitor.
|
|
35
|
+
*/
|
|
36
|
+
export declare function pruneTraceBuckets(nowMs: number): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* @description Truncate `text` to a greppable one-liner without splitting a
|
|
39
|
+
* UTF-16 surrogate pair. A naive `slice(0, 120)` can cut between the high and
|
|
40
|
+
* low half of an emoji, leaving a lone high surrogate that serialises to an
|
|
41
|
+
* unpaired `\ud83d` and breaks `jq` consumers of the trace file (observed in
|
|
42
|
+
* the real trace). If the slice ends on a high surrogate we drop that trailing
|
|
43
|
+
* half so only whole code points survive.
|
|
44
|
+
*/
|
|
45
|
+
export declare function createTracePreview(text: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* @description Filesystem + timer seams the buffered writer depends on. Tests
|
|
48
|
+
* inject fakes so they can assert flush ordering / threshold / rotation /
|
|
49
|
+
* exit-flush deterministically without real IO or wall-clock timers.
|
|
50
|
+
*/
|
|
51
|
+
export interface TraceWriterDeps {
|
|
52
|
+
appendFile(filePath: string, data: string): Promise<void>;
|
|
53
|
+
appendFileSync(filePath: string, data: string): void;
|
|
54
|
+
mkdir(dirPath: string): Promise<void>;
|
|
55
|
+
/** File size in bytes, or null if the file does not exist. */
|
|
56
|
+
getFileSize(filePath: string): Promise<number | null>;
|
|
57
|
+
rename(fromPath: string, toPath: string): Promise<void>;
|
|
58
|
+
setTimer(callback: () => void, ms: number): unknown;
|
|
59
|
+
clearTimer(handle: unknown): void;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* @description Override the writer's fs/timer seams (tests only). Also resets
|
|
63
|
+
* the buffer + flush state so each test starts clean. Returns a restore fn.
|
|
64
|
+
*/
|
|
65
|
+
export declare function configureTraceWriterForTests(deps: Partial<TraceWriterDeps>): () => void;
|
|
66
|
+
/**
|
|
67
|
+
* @description Best-effort SYNCHRONOUS flush of whatever is still buffered.
|
|
68
|
+
* Registered on `process.on('exit')` — exit handlers can only do sync work, so
|
|
69
|
+
* the async writer would otherwise lose the final unflushed window on shutdown.
|
|
70
|
+
*/
|
|
71
|
+
export declare function flushTraceBufferSyncOnExit(): void;
|
|
72
|
+
export interface RecvTraceFields {
|
|
73
|
+
updateType: string;
|
|
74
|
+
updateId: number;
|
|
75
|
+
fromId?: number;
|
|
76
|
+
chatId?: number;
|
|
77
|
+
threadId?: number;
|
|
78
|
+
preview?: string;
|
|
79
|
+
/** Telegram-side `message.date` in seconds — lets us compute receive latency. */
|
|
80
|
+
tgDateSec?: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @description Record an incoming update the moment the first middleware sees
|
|
84
|
+
* it — only if the update's own thread is traced. The key is built the same way
|
|
85
|
+
* routing does (`{chatId, threadId}`); a missing thread id maps to the General
|
|
86
|
+
* topic's `threadId: 1` so it filters consistently. When `chatId` is absent
|
|
87
|
+
* (rare service updates) we can't derive a key, so it records only under the
|
|
88
|
+
* all-flag.
|
|
89
|
+
*/
|
|
90
|
+
export declare function traceRecvUpdate(fields: RecvTraceFields): void;
|
|
91
|
+
/** Record an adapter `output`/`status`/`thinking`/`toolResult` event entering the bot's send path. */
|
|
92
|
+
export declare function traceAgentEmit(event: 'output' | 'status' | 'thinking' | 'toolResult', key: SessionKey, text: string): void;
|
|
93
|
+
/**
|
|
94
|
+
* @description Structural view of `Telegram`/`ApiClient` — just enough to wrap
|
|
95
|
+
* `callApi`. Method syntax keeps `Telegram` assignable (bivariant params), and
|
|
96
|
+
* lets unit tests pass a plain fake instead of booting Telegraf.
|
|
97
|
+
*/
|
|
98
|
+
export interface CallApiHost {
|
|
99
|
+
callApi(method: string, payload: object, options?: object): Promise<object | boolean | number | string>;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @description Wrap `telegram.callApi` so every outgoing Bot API call is
|
|
103
|
+
* traced with its outcome. Installed unconditionally at boot — when tracing is
|
|
104
|
+
* off each call costs one boolean check. The wrap sits BELOW `enqueueSend`'s
|
|
105
|
+
* queue/bucket/429-retry layers, so each real HTTP attempt traces separately.
|
|
106
|
+
*/
|
|
107
|
+
export declare function installCallApiTrace(host: CallApiHost): void;
|
|
108
|
+
//# sourceMappingURL=outputTrace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputTrace.d.ts","sourceRoot":"","sources":["../src/outputTrace.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA8D/C;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAIxD;AAED,oFAAoF;AACpF,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAE5D;AAcD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQvD;AAMD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,8DAA8D;IAC9D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACpD,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC;AAgCD;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,IAAI,CAavF;AAsDD;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAcjD;AAiBD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAW7D;AAcD,sGAAsG;AACtG,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ1H;AAyED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;CACzG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CA4B3D"}
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.setTraceConfig = setTraceConfig;
|
|
7
|
+
exports.getTraceConfig = getTraceConfig;
|
|
8
|
+
exports.checkIsTracingActive = checkIsTracingActive;
|
|
9
|
+
exports.checkIsThreadTraced = checkIsThreadTraced;
|
|
10
|
+
exports.pruneTraceBuckets = pruneTraceBuckets;
|
|
11
|
+
exports.createTracePreview = createTracePreview;
|
|
12
|
+
exports.configureTraceWriterForTests = configureTraceWriterForTests;
|
|
13
|
+
exports.flushTraceBufferSyncOnExit = flushTraceBufferSyncOnExit;
|
|
14
|
+
exports.traceRecvUpdate = traceRecvUpdate;
|
|
15
|
+
exports.traceAgentEmit = traceAgentEmit;
|
|
16
|
+
exports.installCallApiTrace = installCallApiTrace;
|
|
17
|
+
const node_fs_1 = require("node:fs");
|
|
18
|
+
const node_fs_2 = require("node:fs");
|
|
19
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
20
|
+
const state_1 = require("./state");
|
|
21
|
+
const rotatingLogFile_1 = require("./utils/rotatingLogFile");
|
|
22
|
+
const threadRouting_1 = require("./threadRouting");
|
|
23
|
+
const sessionKey_1 = require("./sessionKey");
|
|
24
|
+
const sessionKeyCodec_1 = require("./connectors/telegram/sessionKeyCodec");
|
|
25
|
+
/**
|
|
26
|
+
* @description Output-trace special mode: a JSONL record of what the bot
|
|
27
|
+
* factually did versus what reached Telegram, so live verification can diff
|
|
28
|
+
* `emit → sendTry → sendOk/sendErr` against `get_history` instead of guessing
|
|
29
|
+
* from the controlling terminal (which is not capturable after the fact).
|
|
30
|
+
*
|
|
31
|
+
* Toggled at RUNTIME via the `/trace` command (no boot-time env var anymore):
|
|
32
|
+
* - `/trace on` — trace THIS topic's events
|
|
33
|
+
* - `/trace on all` — trace every thread (cross-thread forensics)
|
|
34
|
+
* - `/trace off` — stop tracing this topic
|
|
35
|
+
* - `/trace off all`— clear the all-threads flag AND the per-thread set
|
|
36
|
+
* The toggle state is persisted in `state.json` and seeded back into this
|
|
37
|
+
* module at boot via {@link setTraceConfig}, so it survives hot rebuilds.
|
|
38
|
+
*
|
|
39
|
+
* ON by default for ALL threads (always-on observability): a fresh state file
|
|
40
|
+
* reads back `allThreads: true`, so every thread is recorded with zero setup.
|
|
41
|
+
* `/trace off all` turns it off DURABLY. When tracing IS off (off-all + no
|
|
42
|
+
* opted-in thread) every hook early-returns after one cheap boolean / `Set`
|
|
43
|
+
* check (zero IO).
|
|
44
|
+
*
|
|
45
|
+
* When ON the writer is async-buffered: {@link appendTraceEntry} builds the
|
|
46
|
+
* JSON line immediately and pushes it to an in-memory buffer; a single-flight
|
|
47
|
+
* background flush (`fsp.appendFile`) drains the whole buffer at once, armed
|
|
48
|
+
* by a {@link traceFlushIntervalMs} timer or a {@link traceFlushMaxEntries}
|
|
49
|
+
* length threshold. A `process.on('exit')` hook does a best-effort SYNC flush
|
|
50
|
+
* of the remainder. Entries land in an hourly bucket file
|
|
51
|
+
* `DATA_DIR/output-trace-YYYYMMDDHH.jsonl` (size-capped per bucket with a single
|
|
52
|
+
* `.1` rollover like `diagLog.ts`); buckets older than 6h are pruned by the
|
|
53
|
+
* bot's janitor via {@link pruneTraceBuckets}.
|
|
54
|
+
*
|
|
55
|
+
* Entry kinds:
|
|
56
|
+
* - `recv` — incoming Telegram update (middleware): type, from, preview,
|
|
57
|
+
* latency vs the update's own timestamp
|
|
58
|
+
* - `emit` — adapter `output`/`status` event entering the bot send path
|
|
59
|
+
* - `sendTry` / `sendOk` / `sendErr` — every outgoing Bot API call, recorded
|
|
60
|
+
* at the `callApi` chokepoint (i.e. AFTER queue/bucket waits;
|
|
61
|
+
* each 429 retry attempt is its own try/err pair)
|
|
62
|
+
*/
|
|
63
|
+
const maxTraceBytes = 10 * 1024 * 1024;
|
|
64
|
+
const previewLength = 120;
|
|
65
|
+
/** Bucket file base + extension — `output-trace-YYYYMMDDHH.jsonl` per hour. */
|
|
66
|
+
const traceFileBase = 'output-trace';
|
|
67
|
+
const traceFileExt = 'jsonl';
|
|
68
|
+
/** Flush the buffer at least this often (ms) even if it never fills up. */
|
|
69
|
+
const traceFlushIntervalMs = 500;
|
|
70
|
+
/** Flush early once the buffer reaches this many lines (bounds memory + lag). */
|
|
71
|
+
const traceFlushMaxEntries = 200;
|
|
72
|
+
/** Unicode high-surrogate range — a lone leading half breaks JSON consumers. */
|
|
73
|
+
const highSurrogateMin = 0xd800;
|
|
74
|
+
const highSurrogateMax = 0xdbff;
|
|
75
|
+
// ─── runtime toggle state (seeded from state.json at boot via setTraceConfig) ───
|
|
76
|
+
/** When true every thread is traced (cross-thread forensics). */
|
|
77
|
+
let traceAllThreads = false;
|
|
78
|
+
/** SessionKey strings (`"<chatId>:<threadId>"`) explicitly opted into tracing. */
|
|
79
|
+
const tracedThreadKeys = new Set();
|
|
80
|
+
/**
|
|
81
|
+
* @description Replace the in-memory trace toggle from persisted state. Called
|
|
82
|
+
* once at boot (seed from `state.json`) and again on every `/trace` mutation so
|
|
83
|
+
* the writer and the persisted record never drift. Lifecycle-independent: only
|
|
84
|
+
* `/trace` touches it — session stop/new/quit/resume/unbind never do.
|
|
85
|
+
*/
|
|
86
|
+
function setTraceConfig(config) {
|
|
87
|
+
traceAllThreads = config.allThreads;
|
|
88
|
+
tracedThreadKeys.clear();
|
|
89
|
+
for (const keyStr of config.threadKeys)
|
|
90
|
+
tracedThreadKeys.add(keyStr);
|
|
91
|
+
}
|
|
92
|
+
/** Current trace toggle as a plain snapshot — for `/trace` status + persistence. */
|
|
93
|
+
function getTraceConfig() {
|
|
94
|
+
return { allThreads: traceAllThreads, threadKeys: [...tracedThreadKeys] };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* @description Whether ANY tracing is active (all-flag set OR at least one
|
|
98
|
+
* thread opted in). The single fast-path gate every hook hits first — when it
|
|
99
|
+
* returns false the hook does no work beyond this check.
|
|
100
|
+
*/
|
|
101
|
+
function checkIsTracingActive() {
|
|
102
|
+
return traceAllThreads || tracedThreadKeys.size > 0;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* @description Whether a specific thread's events should be recorded:
|
|
106
|
+
* the all-flag covers everything, otherwise the thread must be opted in.
|
|
107
|
+
*/
|
|
108
|
+
function checkIsThreadTraced(key) {
|
|
109
|
+
return traceAllThreads || tracedThreadKeys.has((0, sessionKey_1.keyToString)(key));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* @description Path of the CURRENT hour's trace bucket
|
|
113
|
+
* (`DATA_DIR/output-trace-YYYYMMDDHH.jsonl`). Recomputed per flush so the writer
|
|
114
|
+
* rolls into a fresh file every hour with no live-file trimming — old buckets
|
|
115
|
+
* are pruned wholesale by {@link pruneTraceBuckets} (a writer never touches a
|
|
116
|
+
* past bucket, so prune races nothing). The per-bucket 10MB `.1` rollover still
|
|
117
|
+
* applies WITHIN an hour.
|
|
118
|
+
*/
|
|
119
|
+
function getTraceFilePath() {
|
|
120
|
+
return (0, rotatingLogFile_1.getHourBucketPath)((0, state_1.resolveDataDir)(), traceFileBase, traceFileExt, Date.now());
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* @description Delete trace buckets older than the shared 6h retention window
|
|
124
|
+
* (the hourly `output-trace-*.jsonl` files + their `.1` siblings). Best-effort;
|
|
125
|
+
* called at boot and on the file-sweep interval by the bot's janitor.
|
|
126
|
+
*/
|
|
127
|
+
function pruneTraceBuckets(nowMs) {
|
|
128
|
+
return (0, rotatingLogFile_1.pruneExpiredBuckets)((0, state_1.resolveDataDir)(), traceFileBase, traceFileExt, rotatingLogFile_1.retentionMs, nowMs);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* @description Truncate `text` to a greppable one-liner without splitting a
|
|
132
|
+
* UTF-16 surrogate pair. A naive `slice(0, 120)` can cut between the high and
|
|
133
|
+
* low half of an emoji, leaving a lone high surrogate that serialises to an
|
|
134
|
+
* unpaired `\ud83d` and breaks `jq` consumers of the trace file (observed in
|
|
135
|
+
* the real trace). If the slice ends on a high surrogate we drop that trailing
|
|
136
|
+
* half so only whole code points survive.
|
|
137
|
+
*/
|
|
138
|
+
function createTracePreview(text) {
|
|
139
|
+
if (text.length <= previewLength)
|
|
140
|
+
return text;
|
|
141
|
+
let cut = previewLength;
|
|
142
|
+
const lastCharCode = text.charCodeAt(cut - 1);
|
|
143
|
+
if (lastCharCode >= highSurrogateMin && lastCharCode <= highSurrogateMax) {
|
|
144
|
+
cut -= 1;
|
|
145
|
+
}
|
|
146
|
+
return `${text.slice(0, cut)}…`;
|
|
147
|
+
}
|
|
148
|
+
const defaultWriterDeps = {
|
|
149
|
+
// Trace lines quote message previews / agent output → files are owner-only
|
|
150
|
+
// (0600; mode applies at creation), and DATA_DIR is created owner-only too.
|
|
151
|
+
appendFile: (filePath, data) => node_fs_1.promises.appendFile(filePath, data, { mode: 0o600 }),
|
|
152
|
+
appendFileSync: (filePath, data) => (0, node_fs_2.appendFileSync)(filePath, data, { mode: 0o600 }),
|
|
153
|
+
mkdir: async (dirPath) => {
|
|
154
|
+
await node_fs_1.promises.mkdir(dirPath, { recursive: true, mode: 0o700 });
|
|
155
|
+
},
|
|
156
|
+
getFileSize: async (filePath) => {
|
|
157
|
+
try {
|
|
158
|
+
return (await node_fs_1.promises.stat(filePath)).size;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
rename: (fromPath, toPath) => node_fs_1.promises.rename(fromPath, toPath),
|
|
165
|
+
setTimer: (callback, ms) => setTimeout(callback, ms),
|
|
166
|
+
clearTimer: (handle) => clearTimeout(handle),
|
|
167
|
+
};
|
|
168
|
+
let writerDeps = defaultWriterDeps;
|
|
169
|
+
/** Lines waiting to be flushed, in arrival order. */
|
|
170
|
+
let traceBuffer = [];
|
|
171
|
+
/** A flush is currently in flight — defer the next one (single-flight order). */
|
|
172
|
+
let isFlushing = false;
|
|
173
|
+
/** Armed flush timer handle (or null when none is pending). */
|
|
174
|
+
let flushTimerHandle = null;
|
|
175
|
+
/** mkdir is issued once per process, not per entry. */
|
|
176
|
+
let isTraceDirEnsured = false;
|
|
177
|
+
/**
|
|
178
|
+
* @description Override the writer's fs/timer seams (tests only). Also resets
|
|
179
|
+
* the buffer + flush state so each test starts clean. Returns a restore fn.
|
|
180
|
+
*/
|
|
181
|
+
function configureTraceWriterForTests(deps) {
|
|
182
|
+
writerDeps = { ...defaultWriterDeps, ...deps };
|
|
183
|
+
traceBuffer = [];
|
|
184
|
+
isFlushing = false;
|
|
185
|
+
flushTimerHandle = null;
|
|
186
|
+
isTraceDirEnsured = false;
|
|
187
|
+
return () => {
|
|
188
|
+
writerDeps = defaultWriterDeps;
|
|
189
|
+
traceBuffer = [];
|
|
190
|
+
isFlushing = false;
|
|
191
|
+
flushTimerHandle = null;
|
|
192
|
+
isTraceDirEnsured = false;
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function armFlushTimer() {
|
|
196
|
+
if (flushTimerHandle !== null)
|
|
197
|
+
return;
|
|
198
|
+
flushTimerHandle = writerDeps.setTimer(() => {
|
|
199
|
+
flushTimerHandle = null;
|
|
200
|
+
void flushTraceBuffer();
|
|
201
|
+
}, traceFlushIntervalMs);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* @description Rotate the trace file to `.1` if it has grown past the cap.
|
|
205
|
+
* Checked once per flush (not per entry) to keep the hot path append-only.
|
|
206
|
+
*/
|
|
207
|
+
async function rotateIfOversized(filePath) {
|
|
208
|
+
const size = await writerDeps.getFileSize(filePath);
|
|
209
|
+
if (size === null || size <= maxTraceBytes)
|
|
210
|
+
return;
|
|
211
|
+
await writerDeps.rename(filePath, `${filePath}.1`);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* @description Drain the whole buffer into one `appendFile`. Single-flight: if
|
|
215
|
+
* a flush is already running, we return and the in-flight flush re-checks the
|
|
216
|
+
* buffer when it finishes, so lines are appended strictly in arrival order with
|
|
217
|
+
* no interleaving. Never throws — tracing must not be able to take the bot down.
|
|
218
|
+
*/
|
|
219
|
+
async function flushTraceBuffer() {
|
|
220
|
+
if (isFlushing)
|
|
221
|
+
return;
|
|
222
|
+
if (traceBuffer.length === 0)
|
|
223
|
+
return;
|
|
224
|
+
isFlushing = true;
|
|
225
|
+
try {
|
|
226
|
+
const filePath = getTraceFilePath();
|
|
227
|
+
if (!isTraceDirEnsured) {
|
|
228
|
+
await writerDeps.mkdir(node_path_1.default.dirname(filePath));
|
|
229
|
+
isTraceDirEnsured = true;
|
|
230
|
+
}
|
|
231
|
+
await rotateIfOversized(filePath);
|
|
232
|
+
// Snapshot + clear BEFORE the await so concurrent pushes land in a fresh
|
|
233
|
+
// buffer and are flushed by the re-check below, never lost or reordered.
|
|
234
|
+
const pending = traceBuffer;
|
|
235
|
+
traceBuffer = [];
|
|
236
|
+
await writerDeps.appendFile(filePath, pending.join(''));
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
// Tracing is best-effort; a logging failure must never break the bot.
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
isFlushing = false;
|
|
243
|
+
// A push (or another rotation-deferred chunk) may have arrived mid-flush.
|
|
244
|
+
if (traceBuffer.length > 0) {
|
|
245
|
+
if (traceBuffer.length >= traceFlushMaxEntries)
|
|
246
|
+
void flushTraceBuffer();
|
|
247
|
+
else
|
|
248
|
+
armFlushTimer();
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* @description Best-effort SYNCHRONOUS flush of whatever is still buffered.
|
|
254
|
+
* Registered on `process.on('exit')` — exit handlers can only do sync work, so
|
|
255
|
+
* the async writer would otherwise lose the final unflushed window on shutdown.
|
|
256
|
+
*/
|
|
257
|
+
function flushTraceBufferSyncOnExit() {
|
|
258
|
+
if (traceBuffer.length === 0)
|
|
259
|
+
return;
|
|
260
|
+
try {
|
|
261
|
+
const filePath = getTraceFilePath();
|
|
262
|
+
(0, node_fs_2.mkdirSync)(node_path_1.default.dirname(filePath), { recursive: true, mode: 0o700 });
|
|
263
|
+
if ((0, node_fs_2.existsSync)(filePath) && (0, node_fs_2.statSync)(filePath).size > maxTraceBytes) {
|
|
264
|
+
(0, node_fs_2.renameSync)(filePath, `${filePath}.1`);
|
|
265
|
+
}
|
|
266
|
+
const pending = traceBuffer;
|
|
267
|
+
traceBuffer = [];
|
|
268
|
+
writerDeps.appendFileSync(filePath, pending.join(''));
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
// Best-effort on shutdown; a failure here must not block the exit.
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* @description Build one trace entry and enqueue it for the buffered writer.
|
|
276
|
+
* The JSON line is materialised immediately (the field object is not retained),
|
|
277
|
+
* then a flush is triggered on the length threshold or armed on the timer.
|
|
278
|
+
* `undefined` fields are dropped by `JSON.stringify`.
|
|
279
|
+
*/
|
|
280
|
+
function appendTraceEntry(kind, fields) {
|
|
281
|
+
traceBuffer.push(`${JSON.stringify({ ts: new Date().toISOString(), kind, ...fields })}\n`);
|
|
282
|
+
if (traceBuffer.length >= traceFlushMaxEntries) {
|
|
283
|
+
void flushTraceBuffer();
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
armFlushTimer();
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* @description Record an incoming update the moment the first middleware sees
|
|
291
|
+
* it — only if the update's own thread is traced. The key is built the same way
|
|
292
|
+
* routing does (`{chatId, threadId}`); a missing thread id maps to the General
|
|
293
|
+
* topic's `threadId: 1` so it filters consistently. When `chatId` is absent
|
|
294
|
+
* (rare service updates) we can't derive a key, so it records only under the
|
|
295
|
+
* all-flag.
|
|
296
|
+
*/
|
|
297
|
+
function traceRecvUpdate(fields) {
|
|
298
|
+
if (!checkIsTracingActive())
|
|
299
|
+
return;
|
|
300
|
+
const { tgDateSec, preview, chatId, threadId, ...rest } = fields;
|
|
301
|
+
if (!checkIsRecvThreadTraced(chatId, threadId))
|
|
302
|
+
return;
|
|
303
|
+
appendTraceEntry('recv', {
|
|
304
|
+
...rest,
|
|
305
|
+
chatId,
|
|
306
|
+
threadId,
|
|
307
|
+
preview: preview === undefined ? undefined : createTracePreview(preview),
|
|
308
|
+
latencyMs: tgDateSec === undefined ? undefined : Date.now() - tgDateSec * 1000,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* @description Decide whether a recv update belongs to a traced thread. The
|
|
313
|
+
* all-flag covers everything. Otherwise we need a chat id to build the key;
|
|
314
|
+
* a thread-less message (no `message_thread_id`) is the General topic, which
|
|
315
|
+
* routing keys under `GENERAL_THREAD_ID`.
|
|
316
|
+
*/
|
|
317
|
+
function checkIsRecvThreadTraced(chatId, threadId) {
|
|
318
|
+
if (traceAllThreads)
|
|
319
|
+
return true;
|
|
320
|
+
if (chatId === undefined)
|
|
321
|
+
return false;
|
|
322
|
+
return tracedThreadKeys.has((0, sessionKey_1.keyToString)((0, sessionKeyCodec_1.makeTelegramKey)(chatId, threadId ?? threadRouting_1.GENERAL_THREAD_ID)));
|
|
323
|
+
}
|
|
324
|
+
/** Record an adapter `output`/`status`/`thinking`/`toolResult` event entering the bot's send path. */
|
|
325
|
+
function traceAgentEmit(event, key, text) {
|
|
326
|
+
if (!checkIsThreadTraced(key))
|
|
327
|
+
return;
|
|
328
|
+
appendTraceEntry('emit', {
|
|
329
|
+
event,
|
|
330
|
+
key: (0, sessionKey_1.keyToString)(key),
|
|
331
|
+
len: text.length,
|
|
332
|
+
preview: createTracePreview(text),
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
function extractTelegramErrorFields(err) {
|
|
336
|
+
if (typeof err !== 'object' || err === null) {
|
|
337
|
+
return { error: JSON.stringify(err) };
|
|
338
|
+
}
|
|
339
|
+
const e = err;
|
|
340
|
+
return {
|
|
341
|
+
errorCode: e.response?.error_code,
|
|
342
|
+
description: e.response?.description,
|
|
343
|
+
retryAfterSec: e.response?.parameters?.retry_after,
|
|
344
|
+
error: typeof e.message === 'string' ? e.message : undefined,
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
function getNumberField(source, field) {
|
|
348
|
+
const value = source[field];
|
|
349
|
+
return typeof value === 'number' ? value : undefined;
|
|
350
|
+
}
|
|
351
|
+
function getStringField(source, field) {
|
|
352
|
+
const value = source[field];
|
|
353
|
+
return typeof value === 'string' ? value : undefined;
|
|
354
|
+
}
|
|
355
|
+
function getBooleanField(source, field) {
|
|
356
|
+
const value = source[field];
|
|
357
|
+
return typeof value === 'boolean' ? value : undefined;
|
|
358
|
+
}
|
|
359
|
+
function extractApiCallFields(method, payload) {
|
|
360
|
+
const p = payload;
|
|
361
|
+
const text = getStringField(p, 'text');
|
|
362
|
+
return {
|
|
363
|
+
method,
|
|
364
|
+
chatId: getNumberField(p, 'chat_id'),
|
|
365
|
+
threadId: getNumberField(p, 'message_thread_id'),
|
|
366
|
+
messageId: getNumberField(p, 'message_id'),
|
|
367
|
+
callbackQueryId: getStringField(p, 'callback_query_id'),
|
|
368
|
+
// Whether a (un)pin / send suppresses the member notification — load-bearing
|
|
369
|
+
// for the question-pin "one question = one notification" rule (first pin
|
|
370
|
+
// notifies, repins are silent), so it must be visible in the trace.
|
|
371
|
+
disableNotification: getBooleanField(p, 'disable_notification'),
|
|
372
|
+
len: text?.length,
|
|
373
|
+
preview: text === undefined ? undefined : createTracePreview(text),
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* @description Decide whether an outgoing Bot API call should be recorded.
|
|
378
|
+
* A call WITH a derivable thread id (chat_id + the General-default thread)
|
|
379
|
+
* filters like recv/emit. A call with NO derivable thread id (e.g.
|
|
380
|
+
* `editMessageText` payloads carry only `message_id`) is recorded whenever ANY
|
|
381
|
+
* tracing is active — over-inclusion beats silently losing edit records
|
|
382
|
+
* (locked decision, plan S3).
|
|
383
|
+
*/
|
|
384
|
+
function checkIsApiCallTraced(fields) {
|
|
385
|
+
if (traceAllThreads)
|
|
386
|
+
return true;
|
|
387
|
+
const chatId = typeof fields.chatId === 'number' ? fields.chatId : undefined;
|
|
388
|
+
if (chatId === undefined)
|
|
389
|
+
return true;
|
|
390
|
+
const threadId = typeof fields.threadId === 'number' ? fields.threadId : threadRouting_1.GENERAL_THREAD_ID;
|
|
391
|
+
return tracedThreadKeys.has((0, sessionKey_1.keyToString)((0, sessionKeyCodec_1.makeTelegramKey)(chatId, threadId)));
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* @description Wrap `telegram.callApi` so every outgoing Bot API call is
|
|
395
|
+
* traced with its outcome. Installed unconditionally at boot — when tracing is
|
|
396
|
+
* off each call costs one boolean check. The wrap sits BELOW `enqueueSend`'s
|
|
397
|
+
* queue/bucket/429-retry layers, so each real HTTP attempt traces separately.
|
|
398
|
+
*/
|
|
399
|
+
function installCallApiTrace(host) {
|
|
400
|
+
const originalCallApi = host.callApi.bind(host);
|
|
401
|
+
host.callApi = async (method, payload, options) => {
|
|
402
|
+
if (!checkIsTracingActive())
|
|
403
|
+
return originalCallApi(method, payload, options);
|
|
404
|
+
const callFields = extractApiCallFields(method, payload);
|
|
405
|
+
if (!checkIsApiCallTraced(callFields))
|
|
406
|
+
return originalCallApi(method, payload, options);
|
|
407
|
+
appendTraceEntry('sendTry', callFields);
|
|
408
|
+
const startedAt = Date.now();
|
|
409
|
+
try {
|
|
410
|
+
const result = await originalCallApi(method, payload, options);
|
|
411
|
+
appendTraceEntry('sendOk', {
|
|
412
|
+
...callFields,
|
|
413
|
+
durMs: Date.now() - startedAt,
|
|
414
|
+
resultMessageId: typeof result === 'object' && result !== null
|
|
415
|
+
? getNumberField(result, 'message_id')
|
|
416
|
+
: undefined,
|
|
417
|
+
});
|
|
418
|
+
return result;
|
|
419
|
+
}
|
|
420
|
+
catch (err) {
|
|
421
|
+
appendTraceEntry('sendErr', {
|
|
422
|
+
...callFields,
|
|
423
|
+
durMs: Date.now() - startedAt,
|
|
424
|
+
...extractTelegramErrorFields(err),
|
|
425
|
+
});
|
|
426
|
+
throw err;
|
|
427
|
+
}
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=outputTrace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputTrace.js","sourceRoot":"","sources":["../src/outputTrace.ts"],"names":[],"mappings":"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"}
|