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,438 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Host layout + IO primitives for the json-stream Claude backend's
|
|
4
|
+
* EXTERNAL process transport (plan 2026-07-05-jsonstream-restart-isolation).
|
|
5
|
+
*
|
|
6
|
+
* The `claude -p … stream-json` process is NOT a bot child any more: a `#!/bin/sh`
|
|
7
|
+
* wrapper hosts it inside a detached tmux session, with stdio rerouted to files
|
|
8
|
+
* under `DATA_DIR/jsonstream/<serialized key with ":" → "_">/` (Telegram:
|
|
9
|
+
* `<chatId>_<threadId>`):
|
|
10
|
+
*
|
|
11
|
+
* stdin.fifo ← the bot's control/user-turn writes (claude holds it `0<>`,
|
|
12
|
+
* i.e. open read-write on fd 0, so a bot restart — the writer
|
|
13
|
+
* dying — never EOFs claude's stdin; proven by the P1 probe)
|
|
14
|
+
* stdout.jsonl ← append-only stream-json event log the bot TAILS from a byte
|
|
15
|
+
* offset (deltas keep landing while the bot is down)
|
|
16
|
+
* stderr.log ← passive; read only for spawn-fail / exit diagnostics
|
|
17
|
+
* pid, exitcode ← written by the wrapper; the adapter's poll tick uses them
|
|
18
|
+
* for exit detection (pid-alive + exitcode file)
|
|
19
|
+
* wrapper.sh ← the generated host script itself
|
|
20
|
+
* question.json ← the pending AskUserQuestion control_request (written when
|
|
21
|
+
* surfaced, removed when resolved) so an adopt after a bot
|
|
22
|
+
* restart can still answer it over the FIFO
|
|
23
|
+
*
|
|
24
|
+
* Everything here is either pure decision logic (tail offsets, wrapper text,
|
|
25
|
+
* name codecs) or a thin fs primitive (FIFO open/write, pid/exitcode readers)
|
|
26
|
+
* — the orchestration lives in `adapters/claudeJsonStreamAdapter.ts`.
|
|
27
|
+
*/
|
|
28
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
31
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
32
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
33
|
+
}
|
|
34
|
+
Object.defineProperty(o, k2, desc);
|
|
35
|
+
}) : (function(o, m, k, k2) {
|
|
36
|
+
if (k2 === undefined) k2 = k;
|
|
37
|
+
o[k2] = m[k];
|
|
38
|
+
}));
|
|
39
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
40
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
41
|
+
}) : function(o, v) {
|
|
42
|
+
o["default"] = v;
|
|
43
|
+
});
|
|
44
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
45
|
+
var ownKeys = function(o) {
|
|
46
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
47
|
+
var ar = [];
|
|
48
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
49
|
+
return ar;
|
|
50
|
+
};
|
|
51
|
+
return ownKeys(o);
|
|
52
|
+
};
|
|
53
|
+
return function (mod) {
|
|
54
|
+
if (mod && mod.__esModule) return mod;
|
|
55
|
+
var result = {};
|
|
56
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
57
|
+
__setModuleDefault(result, mod);
|
|
58
|
+
return result;
|
|
59
|
+
};
|
|
60
|
+
})();
|
|
61
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
|
+
exports.stderrTailMaxChars = exports.stdoutOversizeWarnBytes = exports.fifoWriteRetryDelayMs = exports.fifoWriteMaxRetries = exports.fifoOpenRetryDelayMs = exports.fifoOpenMaxTries = exports.pidFilePollIntervalMs = exports.pidFileWaitTimeoutMs = exports.wrapperCdFailExitCode = exports.jsonStreamTmuxPrefix = exports.jsonStreamRootDirName = void 0;
|
|
63
|
+
exports.resolveJsonStreamRoot = resolveJsonStreamRoot;
|
|
64
|
+
exports.resolveJsonStreamSessionDir = resolveJsonStreamSessionDir;
|
|
65
|
+
exports.parseJsonStreamDirName = parseJsonStreamDirName;
|
|
66
|
+
exports.getJsonStreamSessionPaths = getJsonStreamSessionPaths;
|
|
67
|
+
exports.buildJsonStreamTmuxSessionName = buildJsonStreamTmuxSessionName;
|
|
68
|
+
exports.parseJsonStreamTmuxSessionName = parseJsonStreamTmuxSessionName;
|
|
69
|
+
exports.buildWrapperScript = buildWrapperScript;
|
|
70
|
+
exports.readWrapperScriptConfigDir = readWrapperScriptConfigDir;
|
|
71
|
+
exports.openFifoWriterNonBlocking = openFifoWriterNonBlocking;
|
|
72
|
+
exports.writeFifoText = writeFifoText;
|
|
73
|
+
exports.readPidFile = readPidFile;
|
|
74
|
+
exports.readExitCodeFile = readExitCodeFile;
|
|
75
|
+
exports.checkIsPidAlive = checkIsPidAlive;
|
|
76
|
+
exports.waitForPidFile = waitForPidFile;
|
|
77
|
+
exports.readStderrTail = readStderrTail;
|
|
78
|
+
exports.getFileSize = getFileSize;
|
|
79
|
+
exports.readFileByteRange = readFileByteRange;
|
|
80
|
+
exports.resolveAdoptedTail = resolveAdoptedTail;
|
|
81
|
+
exports.createStdoutTailState = createStdoutTailState;
|
|
82
|
+
exports.getStdoutTailDecision = getStdoutTailDecision;
|
|
83
|
+
exports.decodeStdoutTailChunk = decodeStdoutTailChunk;
|
|
84
|
+
exports.getStdoutLineBoundaryOffset = getStdoutLineBoundaryOffset;
|
|
85
|
+
exports.sweepOrphanJsonStreamDirs = sweepOrphanJsonStreamDirs;
|
|
86
|
+
const fs = __importStar(require("fs"));
|
|
87
|
+
const path = __importStar(require("path"));
|
|
88
|
+
const string_decoder_1 = require("string_decoder");
|
|
89
|
+
const promises_1 = require("timers/promises");
|
|
90
|
+
const sessionKey_1 = require("../sessionKey");
|
|
91
|
+
const tmuxSessionName_1 = require("./tmuxSessionName");
|
|
92
|
+
const tmuxExec_1 = require("./tmuxExec");
|
|
93
|
+
const claudeProfiles_1 = require("./claudeProfiles");
|
|
94
|
+
/** Subdirectory of `DATA_DIR` that holds every thread's json-stream host dir. */
|
|
95
|
+
exports.jsonStreamRootDirName = 'jsonstream';
|
|
96
|
+
/** tmux session-name prefix for this backend — distinct from the scrape
|
|
97
|
+
* backend's `claude` and the terminal's `term`, so adopt-at-boot scans never
|
|
98
|
+
* cross-talk (locked decision). */
|
|
99
|
+
exports.jsonStreamTmuxPrefix = 'cjson';
|
|
100
|
+
/** Exit code the wrapper reports when `cd <workDir>` fails (folder vanished
|
|
101
|
+
* between bind and spawn) — claude must never run in the wrong directory. */
|
|
102
|
+
exports.wrapperCdFailExitCode = 96;
|
|
103
|
+
/** How long a fresh spawn waits for the wrapper to write the `pid` file. */
|
|
104
|
+
exports.pidFileWaitTimeoutMs = 5000;
|
|
105
|
+
exports.pidFilePollIntervalMs = 100;
|
|
106
|
+
/** FIFO write-open guard (P1 probe): `O_WRONLY|O_NONBLOCK` raises `ENXIO`
|
|
107
|
+
* while nothing holds the read end — a BLOCKING open would hang forever.
|
|
108
|
+
* Retried because claude opens its `0<>` end asynchronously during spawn;
|
|
109
|
+
* `ENXIO` persisting past the retries means the process is dead. */
|
|
110
|
+
exports.fifoOpenMaxTries = 10;
|
|
111
|
+
exports.fifoOpenRetryDelayMs = 500;
|
|
112
|
+
/** A full FIFO buffer raises `EAGAIN` on a non-blocking write — transient,
|
|
113
|
+
* claude drains it. Bounded so a truly wedged reader can't spin forever. */
|
|
114
|
+
exports.fifoWriteMaxRetries = 100;
|
|
115
|
+
exports.fifoWriteRetryDelayMs = 50;
|
|
116
|
+
/** No rotation in v1 (locked decision): the file is per-session and deleted on
|
|
117
|
+
* stop/release. Past this size we log ONE warning, never rotate. */
|
|
118
|
+
exports.stdoutOversizeWarnBytes = 256 * 1024 * 1024;
|
|
119
|
+
/** Cap for the stderr excerpt quoted into spawn-fail / unexpected-exit logs. */
|
|
120
|
+
exports.stderrTailMaxChars = 400;
|
|
121
|
+
/** Absolute path of the `jsonstream/` root under a given data dir. */
|
|
122
|
+
function resolveJsonStreamRoot(dataDir) {
|
|
123
|
+
return path.join(dataDir, exports.jsonStreamRootDirName);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* @description Separator standing in for the serialized key's `:` inside a
|
|
127
|
+
* directory name — `:` is illegal on some filesystems. Same convention as
|
|
128
|
+
* `botFileStorage`'s intake dirs.
|
|
129
|
+
*/
|
|
130
|
+
const threadDirSeparator = '_';
|
|
131
|
+
/** The per-thread host dir name — the key slug, for Telegram `<chatId>_<threadId>`. */
|
|
132
|
+
function threadDirName(key) {
|
|
133
|
+
return (0, sessionKey_1.keyToSlug)(key, threadDirSeparator);
|
|
134
|
+
}
|
|
135
|
+
/** Absolute path of one thread's json-stream host dir. */
|
|
136
|
+
function resolveJsonStreamSessionDir(dataDir, key) {
|
|
137
|
+
return path.join(resolveJsonStreamRoot(dataDir), threadDirName(key));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* @description Inverse of the host-dir naming for the orphan-dir janitor.
|
|
141
|
+
* Strictness lives in the connector's codec (mirrors `parseTmuxSessionName`),
|
|
142
|
+
* so a foreign dir that happens to sit under `jsonstream/` is skipped, never
|
|
143
|
+
* swept by a mis-parse.
|
|
144
|
+
*/
|
|
145
|
+
function parseJsonStreamDirName(name) {
|
|
146
|
+
return (0, sessionKey_1.tryKeyFromSlug)(name, threadDirSeparator);
|
|
147
|
+
}
|
|
148
|
+
function getJsonStreamSessionPaths(dir) {
|
|
149
|
+
return {
|
|
150
|
+
dir,
|
|
151
|
+
stdinFifo: path.join(dir, 'stdin.fifo'),
|
|
152
|
+
stdoutFile: path.join(dir, 'stdout.jsonl'),
|
|
153
|
+
stderrFile: path.join(dir, 'stderr.log'),
|
|
154
|
+
pidFile: path.join(dir, 'pid'),
|
|
155
|
+
exitCodeFile: path.join(dir, 'exitcode'),
|
|
156
|
+
wrapperFile: path.join(dir, 'wrapper.sh'),
|
|
157
|
+
questionFile: path.join(dir, 'question.json'),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/** tmux session name for a json-stream thread (`cjson-<chatId>-<threadId>`). */
|
|
161
|
+
function buildJsonStreamTmuxSessionName(key) {
|
|
162
|
+
return (0, tmuxSessionName_1.buildTmuxSessionName)(exports.jsonStreamTmuxPrefix, key);
|
|
163
|
+
}
|
|
164
|
+
/** Inverse of {@link buildJsonStreamTmuxSessionName}; `null` for foreign names. */
|
|
165
|
+
function parseJsonStreamTmuxSessionName(name) {
|
|
166
|
+
return (0, tmuxSessionName_1.parseTmuxSessionName)(exports.jsonStreamTmuxPrefix, name);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* @description The `#!/bin/sh` host script (exact shape proven by the P1 probe
|
|
170
|
+
* `p1-probe2.mjs`): background claude with its stdio rerouted to the host files,
|
|
171
|
+
* record the child pid, then `wait` and record the exit code. `0<>` opens the
|
|
172
|
+
* stdin FIFO READ-WRITE on fd 0 — the load-bearing trick: claude itself holds a
|
|
173
|
+
* read end open, so the bot (a plain writer) can die and reconnect freely.
|
|
174
|
+
* `env -u ANTHROPIC_API_KEY` keeps subscription billing (`apiKeySource:"none"`)
|
|
175
|
+
* even if the tmux server environment carries a key. With an `environment`
|
|
176
|
+
* (a tracker conversation, R32) claude gets exactly those variables instead —
|
|
177
|
+
* `env -i`, so nothing of the tmux server's environment reaches it (no API key
|
|
178
|
+
* either). A non-default Claude account profile adds `CLAUDE_CONFIG_DIR=<dir>` to
|
|
179
|
+
* either `env` form (`utils/claudeProfiles.ts`); the default profile adds nothing,
|
|
180
|
+
* so the wrapper of a topic that never picked an account is byte-identical to
|
|
181
|
+
* the golden shape. The variable sits in the process environment — not only in
|
|
182
|
+
* the CLI's own reading of it — so a child `claude` the agent starts inherits the
|
|
183
|
+
* same account. All embedded strings are single-quoted; `claudePath` must be
|
|
184
|
+
* ABSOLUTE (tmux server PATH differs).
|
|
185
|
+
*/
|
|
186
|
+
function buildWrapperScript(claudePath, args, workDir, paths, environment = null, configDir = null) {
|
|
187
|
+
const command = [claudePath, ...args].map(tmuxExec_1.shellSingleQuote).join(' ');
|
|
188
|
+
const configDirAssignment = configDir === null ? [] : [(0, tmuxExec_1.shellSingleQuote)(`${claudeProfiles_1.claudeConfigDirVariableName}=${configDir}`)];
|
|
189
|
+
const envCommand = environment === null
|
|
190
|
+
? ['env', '-u', 'ANTHROPIC_API_KEY', ...configDirAssignment].join(' ')
|
|
191
|
+
: ['env', '-i', ...Object.entries(environment).map(([name, value]) => (0, tmuxExec_1.shellSingleQuote)(`${name}=${value}`)), ...configDirAssignment].join(' ');
|
|
192
|
+
return `#!/bin/sh
|
|
193
|
+
cd ${(0, tmuxExec_1.shellSingleQuote)(workDir)} || exit ${exports.wrapperCdFailExitCode}
|
|
194
|
+
${envCommand} ${command} \\
|
|
195
|
+
0<> ${(0, tmuxExec_1.shellSingleQuote)(paths.stdinFifo)} >> ${(0, tmuxExec_1.shellSingleQuote)(paths.stdoutFile)} 2>> ${(0, tmuxExec_1.shellSingleQuote)(paths.stderrFile)} &
|
|
196
|
+
CHILD=$!
|
|
197
|
+
echo $CHILD > ${(0, tmuxExec_1.shellSingleQuote)(paths.pidFile)}
|
|
198
|
+
wait $CHILD
|
|
199
|
+
echo $? > ${(0, tmuxExec_1.shellSingleQuote)(paths.exitCodeFile)}
|
|
200
|
+
`;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* @description The `CLAUDE_CONFIG_DIR` a persisted wrapper script starts claude with, `null` for the default
|
|
204
|
+
* profile or an unreadable script. Read at adopt: the running process keeps the account it was spawned with,
|
|
205
|
+
* and the bot compares it with the profile its topic has now.
|
|
206
|
+
*/
|
|
207
|
+
function readWrapperScriptConfigDir(wrapperFile) {
|
|
208
|
+
try {
|
|
209
|
+
return (0, claudeProfiles_1.parseClaudeConfigDirFromCommand)(fs.readFileSync(wrapperFile, 'utf8'));
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* @description Open the stdin FIFO for writing WITHOUT ever blocking: a plain
|
|
217
|
+
* `open(O_WRONLY)` on a FIFO with no reader hangs forever (the P1 probe's first
|
|
218
|
+
* attempt did exactly that). `O_NONBLOCK` turns "no reader" into `ENXIO`,
|
|
219
|
+
* retried on a short delay while claude is still coming up. Returns the fd, or
|
|
220
|
+
* `null` when `ENXIO` persists — i.e. the claude process is NOT holding the
|
|
221
|
+
* FIFO, so the session is dead.
|
|
222
|
+
*/
|
|
223
|
+
async function openFifoWriterNonBlocking(fifoPath, maxTries = exports.fifoOpenMaxTries) {
|
|
224
|
+
for (let attempt = 0; attempt < maxTries; attempt++) {
|
|
225
|
+
try {
|
|
226
|
+
return fs.openSync(fifoPath, fs.constants.O_WRONLY | fs.constants.O_NONBLOCK);
|
|
227
|
+
}
|
|
228
|
+
catch (e) {
|
|
229
|
+
if (e.code !== 'ENXIO')
|
|
230
|
+
throw e;
|
|
231
|
+
await (0, promises_1.setTimeout)(exports.fifoOpenRetryDelayMs);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* @description Write `text` to a non-blocking FIFO fd, retrying transient
|
|
238
|
+
* `EAGAIN` (buffer full — claude drains it) with a bounded backoff and
|
|
239
|
+
* continuing partial writes (a payload larger than the FIFO buffer lands in
|
|
240
|
+
* chunks). Anything else (`EPIPE` after claude died, `EBADF` after close)
|
|
241
|
+
* propagates to the caller's per-session write chain, which logs it.
|
|
242
|
+
*/
|
|
243
|
+
async function writeFifoText(fd, text) {
|
|
244
|
+
const payload = Buffer.from(text, 'utf8');
|
|
245
|
+
let written = 0;
|
|
246
|
+
let retries = 0;
|
|
247
|
+
while (written < payload.length) {
|
|
248
|
+
try {
|
|
249
|
+
written += fs.writeSync(fd, payload, written, payload.length - written);
|
|
250
|
+
}
|
|
251
|
+
catch (e) {
|
|
252
|
+
if (e.code !== 'EAGAIN' || retries >= exports.fifoWriteMaxRetries)
|
|
253
|
+
throw e;
|
|
254
|
+
retries += 1;
|
|
255
|
+
await (0, promises_1.setTimeout)(exports.fifoWriteRetryDelayMs);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/** Parse a `pid`/`exitcode` file: strict digits, `null` for missing/garbage. */
|
|
260
|
+
function readIntFile(filePath) {
|
|
261
|
+
let raw;
|
|
262
|
+
try {
|
|
263
|
+
raw = fs.readFileSync(filePath, 'utf8').trim();
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
return /^\d+$/.test(raw) ? Number(raw) : null;
|
|
269
|
+
}
|
|
270
|
+
function readPidFile(pidFile) {
|
|
271
|
+
return readIntFile(pidFile);
|
|
272
|
+
}
|
|
273
|
+
function readExitCodeFile(exitCodeFile) {
|
|
274
|
+
return readIntFile(exitCodeFile);
|
|
275
|
+
}
|
|
276
|
+
/** `kill(pid, 0)` liveness probe (no signal actually delivered). */
|
|
277
|
+
function checkIsPidAlive(pid) {
|
|
278
|
+
try {
|
|
279
|
+
process.kill(pid, 0);
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/** Wait (bounded) for the wrapper to write the `pid` file after tmux spawn.
|
|
287
|
+
* Returns the pid, or `null` on timeout (spawn diagnostics read stderr). */
|
|
288
|
+
async function waitForPidFile(pidFile, timeoutMs = exports.pidFileWaitTimeoutMs) {
|
|
289
|
+
const deadline = Date.now() + timeoutMs;
|
|
290
|
+
while (Date.now() < deadline) {
|
|
291
|
+
const pid = readPidFile(pidFile);
|
|
292
|
+
if (pid !== null)
|
|
293
|
+
return pid;
|
|
294
|
+
await (0, promises_1.setTimeout)(exports.pidFilePollIntervalMs);
|
|
295
|
+
}
|
|
296
|
+
return readPidFile(pidFile);
|
|
297
|
+
}
|
|
298
|
+
/** Last `maxChars` of the passive stderr log — spawn-fail / exit diagnostics
|
|
299
|
+
* only (locked decision: no live stderr consumer). Empty when absent. */
|
|
300
|
+
function readStderrTail(stderrFile, maxChars = exports.stderrTailMaxChars) {
|
|
301
|
+
try {
|
|
302
|
+
const raw = fs.readFileSync(stderrFile, 'utf8').trim();
|
|
303
|
+
return raw.length > maxChars ? raw.slice(-maxChars) : raw;
|
|
304
|
+
}
|
|
305
|
+
catch {
|
|
306
|
+
return '';
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/** File size in bytes, or `null` when the file doesn't exist (yet). */
|
|
310
|
+
function getFileSize(filePath) {
|
|
311
|
+
try {
|
|
312
|
+
return fs.statSync(filePath).size;
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
/** Read the byte range `[startOffset..endOffset)` of a file. May return fewer
|
|
319
|
+
* bytes than asked on a race — the tail accounts by ACTUAL bytes consumed. */
|
|
320
|
+
function readFileByteRange(filePath, startOffset, endOffset) {
|
|
321
|
+
const fd = fs.openSync(filePath, 'r');
|
|
322
|
+
try {
|
|
323
|
+
const wanted = endOffset - startOffset;
|
|
324
|
+
const buffer = Buffer.alloc(wanted);
|
|
325
|
+
const bytesRead = fs.readSync(fd, buffer, 0, wanted, startOffset);
|
|
326
|
+
return bytesRead === wanted ? buffer : buffer.subarray(0, bytesRead);
|
|
327
|
+
}
|
|
328
|
+
finally {
|
|
329
|
+
fs.closeSync(fd);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* @description Decide where an ADOPT resumes the stdout tail. A persisted offset
|
|
334
|
+
* is trusted only when it was recorded for the SAME claude session — a foreign /
|
|
335
|
+
* unknown offset seeds to the current EOF (no backlog flood, the first-migration
|
|
336
|
+
* case) — and is clamped to the file size (an externally truncated file). The
|
|
337
|
+
* background-task list persisted with the offset is restored on the same
|
|
338
|
+
* condition: the frames that built it lie before the offset and will not
|
|
339
|
+
* replay, so without it an adopted session with a running background task
|
|
340
|
+
* would read as idle and could be stopped (L-D2). The turn-in-flight flag and
|
|
341
|
+
* the outstanding tool calls are restored the same way — a turn in a long,
|
|
342
|
+
* silent tool call leaves no frame after the offset either, and the outstanding
|
|
343
|
+
* tool is what keeps the busy-idle watchdog from clearing the restored turn.
|
|
344
|
+
*/
|
|
345
|
+
function resolveAdoptedTail(persistedTail, claudeSessionId, stdoutSizeBytes) {
|
|
346
|
+
if (persistedTail === null || persistedTail.sessionId !== claudeSessionId) {
|
|
347
|
+
return { startOffset: stdoutSizeBytes, backgroundTaskIds: [], isTurnInFlight: false, outstandingToolUseIds: [], claudeCodeVersion: null };
|
|
348
|
+
}
|
|
349
|
+
return {
|
|
350
|
+
startOffset: Math.min(persistedTail.offsetBytes, stdoutSizeBytes),
|
|
351
|
+
backgroundTaskIds: persistedTail.backgroundTaskIds ?? [],
|
|
352
|
+
isTurnInFlight: persistedTail.isTurnInFlight ?? false,
|
|
353
|
+
outstandingToolUseIds: persistedTail.outstandingToolUseIds ?? [],
|
|
354
|
+
claudeCodeVersion: persistedTail.claudeCodeVersion ?? null,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
function createStdoutTailState(startOffsetBytes) {
|
|
358
|
+
return { consumedBytes: startOffsetBytes, decoderRetainedBytes: 0, decoder: new string_decoder_1.StringDecoder('utf8') };
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* @description Decide the next tail action. Does NOT advance offsets on a
|
|
362
|
+
* `read` — {@link decodeStdoutTailChunk} advances by the bytes ACTUALLY read,
|
|
363
|
+
* so a short read (race with a concurrent append) self-heals next poll.
|
|
364
|
+
*/
|
|
365
|
+
function getStdoutTailDecision(state, sizeBytes) {
|
|
366
|
+
if (sizeBytes < state.consumedBytes) {
|
|
367
|
+
state.consumedBytes = sizeBytes;
|
|
368
|
+
state.decoderRetainedBytes = 0;
|
|
369
|
+
state.decoder = new string_decoder_1.StringDecoder('utf8');
|
|
370
|
+
return { kind: 'reseed' };
|
|
371
|
+
}
|
|
372
|
+
if (sizeBytes === state.consumedBytes)
|
|
373
|
+
return { kind: 'none' };
|
|
374
|
+
return { kind: 'read', startOffset: state.consumedBytes, endOffset: sizeBytes };
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* @description Feed one appended byte chunk through the stateful utf8 decoder.
|
|
378
|
+
* Returns the decoded text (possibly empty while a multi-byte char is split);
|
|
379
|
+
* advances `consumedBytes` by the chunk length and re-derives the decoder's
|
|
380
|
+
* retained-byte count (`retainedNew = retainedPrior + chunkLen - decodedLen`,
|
|
381
|
+
* clamped defensively — invalid utf8 replacement chars could otherwise skew it
|
|
382
|
+
* negative).
|
|
383
|
+
*/
|
|
384
|
+
function decodeStdoutTailChunk(state, chunk) {
|
|
385
|
+
const text = state.decoder.write(chunk);
|
|
386
|
+
const retained = state.decoderRetainedBytes + chunk.length - Buffer.byteLength(text, 'utf8');
|
|
387
|
+
state.decoderRetainedBytes = Math.max(0, retained);
|
|
388
|
+
state.consumedBytes += chunk.length;
|
|
389
|
+
return text;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* @description The byte offset up to which every COMPLETE line has been
|
|
393
|
+
* processed — the value persisted across bot restarts. `pendingLineText` is the
|
|
394
|
+
* line reader's buffered partial line (`ClaudeStreamLineReader.pending`): those
|
|
395
|
+
* bytes were consumed but not yet processed, so the persisted offset excludes
|
|
396
|
+
* them and a restarted tail re-reads exactly the unprocessed remainder.
|
|
397
|
+
*/
|
|
398
|
+
function getStdoutLineBoundaryOffset(state, pendingLineText) {
|
|
399
|
+
return state.consumedBytes - state.decoderRetainedBytes - Buffer.byteLength(pendingLineText, 'utf8');
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* @description Janitor: remove `jsonstream/` host dirs whose thread no longer
|
|
403
|
+
* owns a json-stream session (crash leftovers — the normal stop/release paths
|
|
404
|
+
* delete the dir themselves, and reattach handles live tmux sessions).
|
|
405
|
+
* `checkIsThreadOwned` is injected by the bot (persisted json-stream agent row
|
|
406
|
+
* with a session id, or a currently-active adapter session). Unparseable dir
|
|
407
|
+
* names are skipped, never swept. Returns the number of dirs removed. Runs at
|
|
408
|
+
* boot + the daily file sweep.
|
|
409
|
+
*/
|
|
410
|
+
async function sweepOrphanJsonStreamDirs(jsonStreamRoot, checkIsThreadOwned) {
|
|
411
|
+
let entries;
|
|
412
|
+
try {
|
|
413
|
+
entries = await fs.promises.readdir(jsonStreamRoot, { withFileTypes: true });
|
|
414
|
+
}
|
|
415
|
+
catch (e) {
|
|
416
|
+
if (e.code !== 'ENOENT') {
|
|
417
|
+
console.warn(`[jsonStreamSweep] cannot read ${jsonStreamRoot}:`, e);
|
|
418
|
+
}
|
|
419
|
+
return 0;
|
|
420
|
+
}
|
|
421
|
+
let removedCount = 0;
|
|
422
|
+
for (const entry of entries) {
|
|
423
|
+
if (!entry.isDirectory())
|
|
424
|
+
continue;
|
|
425
|
+
const key = parseJsonStreamDirName(entry.name);
|
|
426
|
+
if (!key || checkIsThreadOwned(key))
|
|
427
|
+
continue;
|
|
428
|
+
try {
|
|
429
|
+
await fs.promises.rm(path.join(jsonStreamRoot, entry.name), { recursive: true, force: true });
|
|
430
|
+
removedCount += 1;
|
|
431
|
+
}
|
|
432
|
+
catch (e) {
|
|
433
|
+
console.warn(`[jsonStreamSweep] cannot remove orphan dir ${entry.name}:`, e);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return removedCount;
|
|
437
|
+
}
|
|
438
|
+
//# sourceMappingURL=jsonStreamHost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonStreamHost.js","sourceRoot":"","sources":["../../src/utils/jsonStreamHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description One session transition at a time per conversation (plan
|
|
3
|
+
* 2026-10-04-claude-process-lifecycle, L2 review / L3): a start, a resume and an
|
|
4
|
+
* idle stop of the same key are chained, never run side by side. Two triggers
|
|
5
|
+
* that hit a sleeping topic together both ask for a resume; the second runs
|
|
6
|
+
* after the first and finds the session live. A trigger that arrives while the
|
|
7
|
+
* idle stop runs waits for it, then resumes. A transition that throws does not
|
|
8
|
+
* block the next one.
|
|
9
|
+
*/
|
|
10
|
+
export declare class KeyedTransitionQueue {
|
|
11
|
+
/** Per key, a promise that settles (never rejects) once the last queued transition did. */
|
|
12
|
+
private readonly tails;
|
|
13
|
+
/** Run `transition` once every transition queued before it for `key` has settled. */
|
|
14
|
+
run<TResult>(key: string, transition: () => Promise<TResult>): Promise<TResult>;
|
|
15
|
+
/** Whether a transition of `key` is running or queued. */
|
|
16
|
+
checkIsInFlight(key: string): boolean;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=keyedTransitionQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyedTransitionQueue.d.ts","sourceRoot":"","sources":["../../src/utils/keyedTransitionQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;IAC/B,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAE1D,qFAAqF;IACrF,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAW/E,0DAA0D;IAC1D,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAGtC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KeyedTransitionQueue = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @description One session transition at a time per conversation (plan
|
|
6
|
+
* 2026-10-04-claude-process-lifecycle, L2 review / L3): a start, a resume and an
|
|
7
|
+
* idle stop of the same key are chained, never run side by side. Two triggers
|
|
8
|
+
* that hit a sleeping topic together both ask for a resume; the second runs
|
|
9
|
+
* after the first and finds the session live. A trigger that arrives while the
|
|
10
|
+
* idle stop runs waits for it, then resumes. A transition that throws does not
|
|
11
|
+
* block the next one.
|
|
12
|
+
*/
|
|
13
|
+
class KeyedTransitionQueue {
|
|
14
|
+
/** Per key, a promise that settles (never rejects) once the last queued transition did. */
|
|
15
|
+
tails = new Map();
|
|
16
|
+
/** Run `transition` once every transition queued before it for `key` has settled. */
|
|
17
|
+
run(key, transition) {
|
|
18
|
+
const previous = this.tails.get(key) ?? Promise.resolve();
|
|
19
|
+
const next = previous.then(transition);
|
|
20
|
+
const settled = next.then(() => undefined, () => undefined);
|
|
21
|
+
this.tails.set(key, settled);
|
|
22
|
+
void settled.then(() => {
|
|
23
|
+
if (this.tails.get(key) === settled)
|
|
24
|
+
this.tails.delete(key);
|
|
25
|
+
});
|
|
26
|
+
return next;
|
|
27
|
+
}
|
|
28
|
+
/** Whether a transition of `key` is running or queued. */
|
|
29
|
+
checkIsInFlight(key) {
|
|
30
|
+
return this.tails.has(key);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.KeyedTransitionQueue = KeyedTransitionQueue;
|
|
34
|
+
//# sourceMappingURL=keyedTransitionQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyedTransitionQueue.js","sourceRoot":"","sources":["../../src/utils/keyedTransitionQueue.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;GAQG;AACH,MAAa,oBAAoB;IAC/B,2FAA2F;IAC1E,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE1D,qFAAqF;IACrF,GAAG,CAAU,GAAW,EAAE,UAAkC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACrB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0DAA0D;IAC1D,eAAe,CAAC,GAAW;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF;AApBD,oDAoBC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure layer behind the boot recovery of a usage/session-limit
|
|
3
|
+
* episode that ENDED BEFORE the bot restarted.
|
|
4
|
+
*
|
|
5
|
+
* An ARMED retry survives a restart on its own (`state.json` `apiRetries`,
|
|
6
|
+
* re-armed after reattach). An UNRECOGNISED limit error leaves nothing behind —
|
|
7
|
+
* so a topic whose agent died on a limit before the detector understood that
|
|
8
|
+
* wording just sits there, and a bot update alone does not resume it. This module
|
|
9
|
+
* reads the evidence the json-stream Claude backend leaves on disk (the terminal
|
|
10
|
+
* `result` frame at the end of its `stdout.jsonl`) and decides whether the bot
|
|
11
|
+
* should arm the limit wait itself.
|
|
12
|
+
*
|
|
13
|
+
* V1 IS JSON-STREAM ONLY, by evidence availability: the tmux-scrape backend keeps
|
|
14
|
+
* its history only in a tmux pane (already repainted by adopt time) and OpenCode's
|
|
15
|
+
* error lives in a transient SSE event, so neither has a comparable on-disk tail
|
|
16
|
+
* to re-read. Those backends recover the normal way — the next live error fires
|
|
17
|
+
* the detector.
|
|
18
|
+
*
|
|
19
|
+
* Only the decisions live here; the fs read and the `handleApiError` call stay in
|
|
20
|
+
* `bot.ts` (the apiErrorRetry pure-layer / manager split).
|
|
21
|
+
*/
|
|
22
|
+
import type { AgentApiErrorClass, LimitEpisodeMarker } from '../types';
|
|
23
|
+
/**
|
|
24
|
+
* How much of a session's `stdout.jsonl` to read when hunting the last terminal
|
|
25
|
+
* frame. The log holds a whole session's events and can reach hundreds of MB, so
|
|
26
|
+
* only the tail is read — the terminal `result` frame is by definition the last
|
|
27
|
+
* thing written. A torn first line is simply skipped by the NDJSON parser.
|
|
28
|
+
*/
|
|
29
|
+
export declare const limitEpisodeTailMaxBytes: number;
|
|
30
|
+
/**
|
|
31
|
+
* Max age of the stdout log for its trailing error to still count as "the episode
|
|
32
|
+
* the topic is stuck on". Older than this and the topic has moved on (or the limit
|
|
33
|
+
* window is long expired), so resurrecting it would push an unexpected prompt into
|
|
34
|
+
* a quiet topic.
|
|
35
|
+
*/
|
|
36
|
+
export declare const limitEpisodeMaxAgeMs: number;
|
|
37
|
+
/**
|
|
38
|
+
* @description The error text the session is PARKED on, read out of a stdout
|
|
39
|
+
* tail: the last terminal `result` frame's error, or `null` when the tail ends on
|
|
40
|
+
* a healthy turn, holds no terminal frame, or shows the session moving on after
|
|
41
|
+
* the error. Reuses the adapter's own NDJSON parse + message classifier, so "what
|
|
42
|
+
* counts as a terminal error and where its text lives" has exactly one definition.
|
|
43
|
+
*
|
|
44
|
+
* Anything real written AFTER the error — the echo of a message sent to the
|
|
45
|
+
* session, the agent's text, thinking or tool frames — clears the verdict, though
|
|
46
|
+
* the turn it belongs to has no terminal frame yet. That is what a limit resume
|
|
47
|
+
* leaves in the log: the bot's own "continue" nudge and the work on it. A topic
|
|
48
|
+
* with that tail is not stuck on the old error, and re-arming it at a restart
|
|
49
|
+
* in the middle of that turn would resume the same episode a second time.
|
|
50
|
+
*
|
|
51
|
+
* Only the PARENT session's frames count. A terminal `result` ends the parent
|
|
52
|
+
* turn, so the one thing that can still write after it without a resume is a
|
|
53
|
+
* background sub-agent finishing its own work (`parent_tool_use_id` set); a
|
|
54
|
+
* resume always starts with the parent's own frames (the nudge's echo first), so
|
|
55
|
+
* leaving the sub-agent's out loses nothing and keeps a parked topic parked.
|
|
56
|
+
*/
|
|
57
|
+
export declare function getLastTerminalErrorText(tailText: string): string | null;
|
|
58
|
+
export type LimitEpisodeDecision =
|
|
59
|
+
/** Arm the limit wait through the normal live-error path. */
|
|
60
|
+
{
|
|
61
|
+
action: 'arm';
|
|
62
|
+
cls: AgentApiErrorClass;
|
|
63
|
+
}
|
|
64
|
+
/** Nothing to do; `reason` is for the boot log only. */
|
|
65
|
+
| {
|
|
66
|
+
action: 'skip';
|
|
67
|
+
reason: 'noError' | 'notUsageLimit' | 'stale' | 'alreadyArmed' | 'alreadyHandled';
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* @description Decide whether a session's trailing error should re-arm a limit
|
|
71
|
+
* wait at boot. Deliberately strict — every guard exists to keep a boot from
|
|
72
|
+
* pushing a surprise prompt into a topic:
|
|
73
|
+
* - only when no persisted retry record already covers the thread (that one is
|
|
74
|
+
* re-armed by the normal restore path — arming twice would double-notice);
|
|
75
|
+
* - only when the log CHANGED since the episode a previous boot already handled
|
|
76
|
+
* ({@link checkIsSameHandledLog});
|
|
77
|
+
* - only the `usageLimit` class (a transient error is long past by restart time,
|
|
78
|
+
* and an `auth` error needs a human, not a wait);
|
|
79
|
+
* - only when the log is younger than {@link limitEpisodeMaxAgeMs}.
|
|
80
|
+
* A `resetAt` already in the past needs no special case: the retry plan clamps a
|
|
81
|
+
* negative delay to zero and the boot arming turns that into one prompt catch-up.
|
|
82
|
+
*/
|
|
83
|
+
export declare function decideLimitEpisodeRecovery(input: {
|
|
84
|
+
errorText: string | null;
|
|
85
|
+
/** Identity (size + mtime) of the session's `stdout.jsonl` right now. */
|
|
86
|
+
log: LimitEpisodeMarker;
|
|
87
|
+
/** Identity recorded when a previous boot armed from this log, if any. */
|
|
88
|
+
handled?: LimitEpisodeMarker;
|
|
89
|
+
now: number;
|
|
90
|
+
hasArmedRetry: boolean;
|
|
91
|
+
}): LimitEpisodeDecision;
|
|
92
|
+
//# sourceMappingURL=limitEpisodeRecovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitEpisodeRecovery.d.ts","sourceRoot":"","sources":["../../src/utils/limitEpisodeRecovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEvE;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAY,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,QAAsB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAexE;AAYD,MAAM,MAAM,oBAAoB;AAC9B,6DAA6D;AAC3D;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,kBAAkB,CAAA;CAAE;AAC5C,wDAAwD;GACtD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,eAAe,GAAG,OAAO,GAAG,cAAc,GAAG,gBAAgB,CAAA;CAAE,CAAC;AAgB1G;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yEAAyE;IACzE,GAAG,EAAE,kBAAkB,CAAC;IACxB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,oBAAoB,CAQvB"}
|