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,364 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Pure parser for the `claude` CLI's
|
|
4
|
+
* `--output-format stream-json` protocol (the `claude-json-stream` adapter's
|
|
5
|
+
* event core). Kept dependency-free and side-effect-free so it is unit-testable
|
|
6
|
+
* against REAL captured stream-json samples (see `claudeStreamJson.test.ts`):
|
|
7
|
+
* the adapter feeds every stdout chunk through {@link ClaudeStreamLineReader}
|
|
8
|
+
* (partial-line buffering across chunks) and each complete line through
|
|
9
|
+
* {@link classifyClaudeStreamMessage}, which maps ONE stream-json message to a
|
|
10
|
+
* list of backend-neutral {@link ClaudeStreamAction}s the adapter then turns
|
|
11
|
+
* into `AgentAdapter` events.
|
|
12
|
+
*
|
|
13
|
+
* The wire format was reverse-engineered from a live `claude -p
|
|
14
|
+
* --input-format stream-json --output-format stream-json` run (v2.1.201) and
|
|
15
|
+
* cross-read against `@anthropic-ai/claude-agent-sdk` `sdk.d.ts` /`sdk.mjs`.
|
|
16
|
+
* Every event type below is backed by a captured sample.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.ClaudeStreamLineReader = void 0;
|
|
20
|
+
exports.checkIsStreamRecord = checkIsStreamRecord;
|
|
21
|
+
exports.parseStreamJsonLine = parseStreamJsonLine;
|
|
22
|
+
exports.classifyClaudeStreamMessage = classifyClaudeStreamMessage;
|
|
23
|
+
exports.buildCanUseToolAllow = buildCanUseToolAllow;
|
|
24
|
+
exports.buildCanUseToolDeny = buildCanUseToolDeny;
|
|
25
|
+
/** Narrow an untyped `JSON.parse` result to a plain object (parse-boundary
|
|
26
|
+
* pattern for untrusted process output; mirrors `checkIsRecord` elsewhere). */
|
|
27
|
+
function checkIsStreamRecord(value) {
|
|
28
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @description Newline-delimited-JSON reader with partial-line buffering. The
|
|
32
|
+
* CLI writes one JSON object per line, but a stdout chunk can split a line at
|
|
33
|
+
* any byte (a mid-line truncation), so a naive `chunk.split('\n')` would try to
|
|
34
|
+
* `JSON.parse` half a line. {@link push} returns only the COMPLETE lines seen so
|
|
35
|
+
* far and retains the trailing partial in {@link buffer} until its newline
|
|
36
|
+
* arrives in a later chunk.
|
|
37
|
+
*/
|
|
38
|
+
class ClaudeStreamLineReader {
|
|
39
|
+
buffer = '';
|
|
40
|
+
/** Feed a stdout chunk; return every complete (newline-terminated) line it
|
|
41
|
+
* completed, retaining any trailing partial for the next call. Blank lines
|
|
42
|
+
* are dropped. */
|
|
43
|
+
push(chunk) {
|
|
44
|
+
this.buffer += chunk;
|
|
45
|
+
const lines = [];
|
|
46
|
+
let nl;
|
|
47
|
+
while ((nl = this.buffer.indexOf('\n')) >= 0) {
|
|
48
|
+
const line = this.buffer.slice(0, nl);
|
|
49
|
+
this.buffer = this.buffer.slice(nl + 1);
|
|
50
|
+
if (line.trim())
|
|
51
|
+
lines.push(line);
|
|
52
|
+
}
|
|
53
|
+
return lines;
|
|
54
|
+
}
|
|
55
|
+
/** Any buffered, not-yet-terminated content (diagnostic only). */
|
|
56
|
+
get pending() {
|
|
57
|
+
return this.buffer;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.ClaudeStreamLineReader = ClaudeStreamLineReader;
|
|
61
|
+
/** Parse one NDJSON line to a record, or `null` for blank / malformed
|
|
62
|
+
* (a torn line that slipped past the reader) — never throws. */
|
|
63
|
+
function parseStreamJsonLine(line) {
|
|
64
|
+
const trimmed = line.trim();
|
|
65
|
+
if (!trimmed)
|
|
66
|
+
return null;
|
|
67
|
+
let parsed;
|
|
68
|
+
try {
|
|
69
|
+
parsed = JSON.parse(trimmed);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return checkIsStreamRecord(parsed) ? parsed : null;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* @description Whether a non-tool-result `user` line is the
|
|
78
|
+
* `--replay-user-messages` echo of a message the bot wrote. The stream also
|
|
79
|
+
* carries `user` lines the CLI produced on its own, and counting one of those as
|
|
80
|
+
* our echo marks a message still waiting mid-turn as taken in (live
|
|
81
|
+
* `stdout.jsonl` logs): `isSynthetic` lines (a skill being loaded, the summary
|
|
82
|
+
* that opens a compacted session, `isReplay:false`), a sub-agent's own prompt
|
|
83
|
+
* and markers (`parent_tool_use_id` set), and a replayed background-task
|
|
84
|
+
* notification (`origin` set). Only POSITIVE evidence excludes a line, so a CLI
|
|
85
|
+
* that stamps none of these fields keeps counting every echo rather than none.
|
|
86
|
+
*/
|
|
87
|
+
function checkIsOwnInputEcho(msg) {
|
|
88
|
+
return msg.parent_tool_use_id == null
|
|
89
|
+
&& msg.isSynthetic !== true
|
|
90
|
+
&& msg.isReplay !== false
|
|
91
|
+
&& msg.origin === undefined;
|
|
92
|
+
}
|
|
93
|
+
/** Read a non-negative integer field, defaulting an ABSENT field to 0 and
|
|
94
|
+
* rejecting any other shape (`null`). */
|
|
95
|
+
function readTokenCount(rec, key) {
|
|
96
|
+
const value = rec[key];
|
|
97
|
+
if (value === undefined)
|
|
98
|
+
return 0;
|
|
99
|
+
return typeof value === 'number' && Number.isInteger(value) && value >= 0 ? value : null;
|
|
100
|
+
}
|
|
101
|
+
/** Parse `result.usage`; `null` when absent or when any present count is malformed
|
|
102
|
+
* (a half-read accounting would mislead the cache check — better no line). */
|
|
103
|
+
function readResultUsage(usage) {
|
|
104
|
+
if (!checkIsStreamRecord(usage))
|
|
105
|
+
return null;
|
|
106
|
+
const inputTokens = readTokenCount(usage, 'input_tokens');
|
|
107
|
+
const cacheReadTokens = readTokenCount(usage, 'cache_read_input_tokens');
|
|
108
|
+
const cacheWriteTokens = readTokenCount(usage, 'cache_creation_input_tokens');
|
|
109
|
+
const outputTokens = readTokenCount(usage, 'output_tokens');
|
|
110
|
+
if (inputTokens === null || cacheReadTokens === null || cacheWriteTokens === null || outputTokens === null)
|
|
111
|
+
return null;
|
|
112
|
+
return { inputTokens, cacheReadTokens, cacheWriteTokens, outputTokens };
|
|
113
|
+
}
|
|
114
|
+
/** The turn's total over `result.modelUsage` (one entry per model used); `null` when absent or any entry is malformed. */
|
|
115
|
+
function readModelUsageTotal(modelUsage) {
|
|
116
|
+
if (!checkIsStreamRecord(modelUsage))
|
|
117
|
+
return null;
|
|
118
|
+
const total = { inputTokens: 0, cacheReadTokens: 0, cacheWriteTokens: 0, outputTokens: 0 };
|
|
119
|
+
for (const entry of Object.values(modelUsage)) {
|
|
120
|
+
if (!checkIsStreamRecord(entry))
|
|
121
|
+
return null;
|
|
122
|
+
const inputTokens = readTokenCount(entry, 'inputTokens');
|
|
123
|
+
const cacheReadTokens = readTokenCount(entry, 'cacheReadInputTokens');
|
|
124
|
+
const cacheWriteTokens = readTokenCount(entry, 'cacheCreationInputTokens');
|
|
125
|
+
const outputTokens = readTokenCount(entry, 'outputTokens');
|
|
126
|
+
if (inputTokens === null || cacheReadTokens === null || cacheWriteTokens === null || outputTokens === null)
|
|
127
|
+
return null;
|
|
128
|
+
total.inputTokens += inputTokens;
|
|
129
|
+
total.cacheReadTokens += cacheReadTokens;
|
|
130
|
+
total.cacheWriteTokens += cacheWriteTokens;
|
|
131
|
+
total.outputTokens += outputTokens;
|
|
132
|
+
}
|
|
133
|
+
return total;
|
|
134
|
+
}
|
|
135
|
+
function checkIsZeroUsage(usage) {
|
|
136
|
+
return usage.inputTokens === 0 && usage.cacheReadTokens === 0 && usage.cacheWriteTokens === 0 && usage.outputTokens === 0;
|
|
137
|
+
}
|
|
138
|
+
/** The turn's accounting: `result.usage`, or the `modelUsage` total when `usage` is all zero (a `/compact` turn). */
|
|
139
|
+
function readTurnUsage(usage, modelUsage) {
|
|
140
|
+
const resultUsage = readResultUsage(usage);
|
|
141
|
+
if (resultUsage === null || !checkIsZeroUsage(resultUsage))
|
|
142
|
+
return resultUsage;
|
|
143
|
+
return readModelUsageTotal(modelUsage) ?? resultUsage;
|
|
144
|
+
}
|
|
145
|
+
/** The `task_id`s of a `background_tasks_changed` frame's `tasks` list; an
|
|
146
|
+
* entry without a string id is skipped (it cannot be matched to anything). */
|
|
147
|
+
function readBackgroundTaskIds(tasks) {
|
|
148
|
+
if (!Array.isArray(tasks))
|
|
149
|
+
return [];
|
|
150
|
+
const taskIds = [];
|
|
151
|
+
for (const task of tasks) {
|
|
152
|
+
if (checkIsStreamRecord(task) && typeof task.task_id === 'string')
|
|
153
|
+
taskIds.push(task.task_id);
|
|
154
|
+
}
|
|
155
|
+
return taskIds;
|
|
156
|
+
}
|
|
157
|
+
/** Read a string field, or null. */
|
|
158
|
+
function readString(rec, key) {
|
|
159
|
+
const value = rec[key];
|
|
160
|
+
return typeof value === 'string' ? value : null;
|
|
161
|
+
}
|
|
162
|
+
/** Concatenate the text of a tool_result `content` (string, or array of
|
|
163
|
+
* `{type:'text',text}` / `{type:'tool_result'…}` blocks). */
|
|
164
|
+
function extractToolResultOutput(content) {
|
|
165
|
+
if (typeof content === 'string')
|
|
166
|
+
return content;
|
|
167
|
+
if (!Array.isArray(content))
|
|
168
|
+
return '';
|
|
169
|
+
const parts = [];
|
|
170
|
+
for (const block of content) {
|
|
171
|
+
if (typeof block === 'string') {
|
|
172
|
+
parts.push(block);
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (checkIsStreamRecord(block) && typeof block.text === 'string')
|
|
176
|
+
parts.push(block.text);
|
|
177
|
+
}
|
|
178
|
+
return parts.join('');
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* @description Map ONE parsed stream-json message to zero or more
|
|
182
|
+
* {@link ClaudeStreamAction}s. Pure: no accumulation, no timers, no IO. An
|
|
183
|
+
* unrecognized / uninteresting message (status, thinking_tokens, message_start,
|
|
184
|
+
* content_block_start/stop, …) yields `[]`.
|
|
185
|
+
*/
|
|
186
|
+
function classifyClaudeStreamMessage(msg) {
|
|
187
|
+
const type = msg.type;
|
|
188
|
+
const isSubagent = msg.parent_tool_use_id != null;
|
|
189
|
+
if (type === 'system' && msg.subtype === 'init') {
|
|
190
|
+
return [{
|
|
191
|
+
kind: 'init',
|
|
192
|
+
sessionId: readString(msg, 'session_id'),
|
|
193
|
+
model: readString(msg, 'model'),
|
|
194
|
+
apiKeySource: readString(msg, 'apiKeySource'),
|
|
195
|
+
claudeCodeVersion: readString(msg, 'claude_code_version'),
|
|
196
|
+
}];
|
|
197
|
+
}
|
|
198
|
+
if (type === 'system' && msg.subtype === 'background_tasks_changed') {
|
|
199
|
+
return [{ kind: 'backgroundTasks', taskIds: readBackgroundTaskIds(msg.tasks) }];
|
|
200
|
+
}
|
|
201
|
+
if (type === 'system' && msg.subtype === 'status') {
|
|
202
|
+
// A `/compact` turn reports its outcome on a status frame carrying
|
|
203
|
+
// `compact_result` (e.g. "success") and, on failure, `compact_error`. Every
|
|
204
|
+
// other status frame (a plain `status` string) is not interesting.
|
|
205
|
+
if ('compact_result' in msg || 'compact_error' in msg) {
|
|
206
|
+
return [{ kind: 'compactStatus', result: readString(msg, 'compact_result'), error: readString(msg, 'compact_error') }];
|
|
207
|
+
}
|
|
208
|
+
return [];
|
|
209
|
+
}
|
|
210
|
+
if (type === 'system' && msg.subtype === 'compact_boundary') {
|
|
211
|
+
const meta = checkIsStreamRecord(msg.compact_metadata) ? msg.compact_metadata : {};
|
|
212
|
+
return [{
|
|
213
|
+
kind: 'compactBoundary',
|
|
214
|
+
trigger: readString(meta, 'trigger'),
|
|
215
|
+
preTokens: typeof meta.pre_tokens === 'number' ? meta.pre_tokens : null,
|
|
216
|
+
postTokens: typeof meta.post_tokens === 'number' ? meta.post_tokens : null,
|
|
217
|
+
}];
|
|
218
|
+
}
|
|
219
|
+
if (type === 'system' && msg.subtype === 'api_retry') {
|
|
220
|
+
// The retry carries an `error` description (documented category enum + text).
|
|
221
|
+
const text = readString(msg, 'error') ?? readString(msg, 'message') ?? JSON.stringify(msg);
|
|
222
|
+
return [{ kind: 'apiRetry', text }];
|
|
223
|
+
}
|
|
224
|
+
if (type === 'rate_limit_event') {
|
|
225
|
+
const info = checkIsStreamRecord(msg.rate_limit_info) ? msg.rate_limit_info : {};
|
|
226
|
+
// `resetsAt` is epoch SECONDS on the frame (measured 2026-10: `1791202200`).
|
|
227
|
+
const readResetMs = (value) => (typeof value === 'number' && Number.isFinite(value) ? value * 1000 : null);
|
|
228
|
+
const windows = [];
|
|
229
|
+
if (checkIsStreamRecord(info.unifiedWindows)) {
|
|
230
|
+
for (const [name, window] of Object.entries(info.unifiedWindows)) {
|
|
231
|
+
if (!checkIsStreamRecord(window) || typeof window.utilization !== 'number')
|
|
232
|
+
continue;
|
|
233
|
+
windows.push({ name, utilization: window.utilization, resetsAtMs: readResetMs(window.resetsAt) });
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return [{
|
|
237
|
+
kind: 'rateLimit',
|
|
238
|
+
rateLimitType: readString(info, 'rateLimitType'),
|
|
239
|
+
utilization: typeof info.utilization === 'number' ? info.utilization : null,
|
|
240
|
+
status: readString(info, 'status'),
|
|
241
|
+
resetsAtMs: readResetMs(info.resetsAt),
|
|
242
|
+
windows,
|
|
243
|
+
}];
|
|
244
|
+
}
|
|
245
|
+
if (type === 'stream_event') {
|
|
246
|
+
const event = checkIsStreamRecord(msg.event) ? msg.event : null;
|
|
247
|
+
if (!event || event.type !== 'content_block_delta')
|
|
248
|
+
return [];
|
|
249
|
+
const delta = checkIsStreamRecord(event.delta) ? event.delta : null;
|
|
250
|
+
if (!delta)
|
|
251
|
+
return [];
|
|
252
|
+
if (delta.type === 'text_delta' && typeof delta.text === 'string') {
|
|
253
|
+
return delta.text ? [{ kind: 'textDelta', text: delta.text, isSubagent }] : [];
|
|
254
|
+
}
|
|
255
|
+
if (delta.type === 'thinking_delta' && typeof delta.thinking === 'string') {
|
|
256
|
+
return delta.thinking ? [{ kind: 'thinkingDelta', text: delta.thinking, isSubagent }] : [];
|
|
257
|
+
}
|
|
258
|
+
return [];
|
|
259
|
+
}
|
|
260
|
+
if (type === 'assistant') {
|
|
261
|
+
// The settled assistant message. Text/thinking already streamed via deltas;
|
|
262
|
+
// here we only surface tool_use blocks (transient tool status).
|
|
263
|
+
const message = checkIsStreamRecord(msg.message) ? msg.message : null;
|
|
264
|
+
const content = message && Array.isArray(message.content) ? message.content : [];
|
|
265
|
+
const actions = [];
|
|
266
|
+
for (const block of content) {
|
|
267
|
+
if (!checkIsStreamRecord(block))
|
|
268
|
+
continue;
|
|
269
|
+
if (block.type === 'tool_use' && typeof block.name === 'string' && typeof block.id === 'string') {
|
|
270
|
+
actions.push({ kind: 'toolUse', tool: block.name, toolUseId: block.id, isSubagent });
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return actions;
|
|
274
|
+
}
|
|
275
|
+
if (type === 'user') {
|
|
276
|
+
// Either a `--replay-user-messages` echo OR a tool_result fed back to the model.
|
|
277
|
+
const message = checkIsStreamRecord(msg.message) ? msg.message : null;
|
|
278
|
+
const content = message ? message.content : undefined;
|
|
279
|
+
if (Array.isArray(content)) {
|
|
280
|
+
const actions = [];
|
|
281
|
+
for (const block of content) {
|
|
282
|
+
if (checkIsStreamRecord(block) && block.type === 'tool_result' && typeof block.tool_use_id === 'string') {
|
|
283
|
+
actions.push({ kind: 'toolResult', toolUseId: block.tool_use_id, output: extractToolResultOutput(block.content), isSubagent });
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (actions.length > 0)
|
|
287
|
+
return actions;
|
|
288
|
+
}
|
|
289
|
+
return checkIsOwnInputEcho(msg) ? [{ kind: 'userEcho' }] : [];
|
|
290
|
+
}
|
|
291
|
+
if (type === 'result') {
|
|
292
|
+
return [{
|
|
293
|
+
kind: 'turnEnd',
|
|
294
|
+
isError: msg.is_error === true,
|
|
295
|
+
errorText: readString(msg, 'api_error_status') ?? (msg.is_error === true ? (readString(msg, 'result') ?? 'API error') : null),
|
|
296
|
+
resultText: readString(msg, 'result'),
|
|
297
|
+
usage: readTurnUsage(msg.usage, msg.modelUsage),
|
|
298
|
+
}];
|
|
299
|
+
}
|
|
300
|
+
if (type === 'control_request') {
|
|
301
|
+
const request = checkIsStreamRecord(msg.request) ? msg.request : null;
|
|
302
|
+
const requestId = readString(msg, 'request_id');
|
|
303
|
+
const subtype = request ? readString(request, 'subtype') : null;
|
|
304
|
+
if (!request || !requestId || !subtype)
|
|
305
|
+
return [];
|
|
306
|
+
const action = { kind: 'controlRequest', requestId, subtype };
|
|
307
|
+
const toolName = readString(request, 'tool_name');
|
|
308
|
+
if (toolName)
|
|
309
|
+
action.toolName = toolName;
|
|
310
|
+
if (checkIsStreamRecord(request.input))
|
|
311
|
+
action.input = request.input;
|
|
312
|
+
const toolUseId = readString(request, 'tool_use_id');
|
|
313
|
+
if (toolUseId)
|
|
314
|
+
action.toolUseId = toolUseId;
|
|
315
|
+
const dialogKind = readString(request, 'dialog_kind');
|
|
316
|
+
if (dialogKind)
|
|
317
|
+
action.dialogKind = dialogKind;
|
|
318
|
+
return [action];
|
|
319
|
+
}
|
|
320
|
+
if (type === 'control_response') {
|
|
321
|
+
// Measured shape: `{response:{subtype:'success'|'error', request_id,
|
|
322
|
+
// response?:{…}}}` — the OUTER `response` carries the verdict + the id to
|
|
323
|
+
// match, the INNER one the returned record (present for `mcp_status`,
|
|
324
|
+
// ABSENT for a plain `mcp_reconnect` ack). Without a `request_id` the frame
|
|
325
|
+
// cannot be matched to the request it answers, so it is not actionable —
|
|
326
|
+
// same defensive rule as the `control_request` branch above.
|
|
327
|
+
const response = checkIsStreamRecord(msg.response) ? msg.response : null;
|
|
328
|
+
const requestId = response ? readString(response, 'request_id') : null;
|
|
329
|
+
if (!response || !requestId)
|
|
330
|
+
return [];
|
|
331
|
+
return [{
|
|
332
|
+
kind: 'controlResponse',
|
|
333
|
+
requestId,
|
|
334
|
+
isSuccess: readString(response, 'subtype') === 'success',
|
|
335
|
+
payload: checkIsStreamRecord(response.response) ? response.response : null,
|
|
336
|
+
}];
|
|
337
|
+
}
|
|
338
|
+
return [];
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* @description Build the `allow` body of a `can_use_tool` control_response.
|
|
342
|
+
*
|
|
343
|
+
* The CLI's control-response schema REQUIRES `updatedInput` to be a record on an
|
|
344
|
+
* allow — omit it and the CLI rejects the whole response ("Tool permission
|
|
345
|
+
* request failed: ZodError"), which silently blocks the tool it was meant to
|
|
346
|
+
* permit. This builder makes that field impossible to forget: `input` is echoed
|
|
347
|
+
* unchanged (`{}` when the request carried none). Used for the generic auto-allow
|
|
348
|
+
* of ordinary tools and for the empty-question fast-path.
|
|
349
|
+
*/
|
|
350
|
+
function buildCanUseToolAllow(input, toolUseId) {
|
|
351
|
+
const response = { behavior: 'allow', updatedInput: input ?? {} };
|
|
352
|
+
if (toolUseId)
|
|
353
|
+
response.toolUseID = toolUseId;
|
|
354
|
+
return response;
|
|
355
|
+
}
|
|
356
|
+
/** Build the `deny` body of a `can_use_tool` control_response (schema requires
|
|
357
|
+
* `message`). Used when the user declines / abandons an AskUserQuestion. */
|
|
358
|
+
function buildCanUseToolDeny(message, toolUseId) {
|
|
359
|
+
const response = { behavior: 'deny', message };
|
|
360
|
+
if (toolUseId)
|
|
361
|
+
response.toolUseID = toolUseId;
|
|
362
|
+
return response;
|
|
363
|
+
}
|
|
364
|
+
//# sourceMappingURL=claudeStreamJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeStreamJson.js","sourceRoot":"","sources":["../../src/utils/claudeStreamJson.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure decision logic for tailing Claude's on-disk SUB-AGENT
|
|
3
|
+
* transcripts (`/subagent full` on the Claude backend, plan
|
|
4
|
+
* 2026-06-11-subagent-claude-and-progress-flood S3). Claude writes each
|
|
5
|
+
* Task-tool child transcript to
|
|
6
|
+
* `<projectsRoot>/<slug>/<claudeSessionId>/subagents/agent-<agentId>.jsonl`;
|
|
7
|
+
* the adapter's poll loop scans that directory and feeds file sizes /
|
|
8
|
+
* appended bytes in — this module owns every decision (what to read, what to
|
|
9
|
+
* emit) and never touches the filesystem, so the rules are unit-testable
|
|
10
|
+
* without tmux or a real transcript dir.
|
|
11
|
+
*
|
|
12
|
+
* Locked rules:
|
|
13
|
+
* - the FIRST scan of a session seeds every existing file's offset to its
|
|
14
|
+
* current size and emits NOTHING — resuming/adopting a session must never
|
|
15
|
+
* replay an old sub-agent's backlog (a fresh session's dir is empty, so
|
|
16
|
+
* nothing is lost there);
|
|
17
|
+
* - mode ≠ `full` fast-forwards offsets to the current size WITHOUT the
|
|
18
|
+
* caller reading file contents, so a mid-run flip to `full` streams from
|
|
19
|
+
* that moment, not from history;
|
|
20
|
+
* - only `text` blocks of `assistant` entries are extracted — child reasoning
|
|
21
|
+
* (`thinking`) and `tool_use` blocks are never rendered (parity with the
|
|
22
|
+
* OpenCode sub-agent matrix in `subagentRender.ts`).
|
|
23
|
+
*/
|
|
24
|
+
import type { DisplayVerbosityMode } from '../types';
|
|
25
|
+
/**
|
|
26
|
+
* @description Tail bookkeeping for ONE sub-agent transcript file.
|
|
27
|
+
*/
|
|
28
|
+
export interface SubagentFileTail {
|
|
29
|
+
/** Bytes of this transcript already consumed (or deliberately skipped). */
|
|
30
|
+
offsetBytes: number;
|
|
31
|
+
/** Trailing partial line carried into the next appended read. */
|
|
32
|
+
carry: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @description Per-session sub-agent tail state. Created fresh on every
|
|
36
|
+
* session object (start / resume / adopt) so the first-scan seeding rule
|
|
37
|
+
* applies per session lifetime. Bounded by the session's sub-agent count —
|
|
38
|
+
* no eviction needed (the transcript dir is scoped to one `claudeSessionId`).
|
|
39
|
+
*/
|
|
40
|
+
export interface SubagentTailState {
|
|
41
|
+
/** Flips on the very first scan, which only seeds offsets and never reads. */
|
|
42
|
+
isFirstScanDone: boolean;
|
|
43
|
+
/** Per transcript-file tail, keyed by file name (unique within the dir). */
|
|
44
|
+
fileTails: Map<string, SubagentFileTail>;
|
|
45
|
+
}
|
|
46
|
+
/** One transcript file observed by a directory scan: its name + current size. */
|
|
47
|
+
export interface SubagentScanFile {
|
|
48
|
+
fileName: string;
|
|
49
|
+
sizeBytes: number;
|
|
50
|
+
}
|
|
51
|
+
/** A byte range the caller must read and feed to
|
|
52
|
+
* {@link extractAppendedSubagentTexts}: `[startOffset..endOffset)`. */
|
|
53
|
+
export interface SubagentTailRead {
|
|
54
|
+
fileName: string;
|
|
55
|
+
/** First byte to read (inclusive). */
|
|
56
|
+
startOffset: number;
|
|
57
|
+
/** Byte to stop at (exclusive) — the file's size at scan time. */
|
|
58
|
+
endOffset: number;
|
|
59
|
+
}
|
|
60
|
+
export declare function createSubagentTailState(): SubagentTailState;
|
|
61
|
+
/**
|
|
62
|
+
* @description Is `fileName` a sub-agent transcript (`agent-*.jsonl`)?
|
|
63
|
+
* Filters out the sibling `agent-*.meta.json` files and anything else the
|
|
64
|
+
* directory may grow in future Claude versions.
|
|
65
|
+
*/
|
|
66
|
+
export declare function checkIsSubagentTranscriptName(fileName: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* @description Decide which byte ranges the caller must read this scan,
|
|
69
|
+
* advancing per-file offsets. Offsets advance OPTIMISTICALLY (to the scanned
|
|
70
|
+
* size) even before the read happens: if the caller's read then fails, those
|
|
71
|
+
* bytes are skipped rather than replayed — drop-over-resend, same tradeoff as
|
|
72
|
+
* the relay window.
|
|
73
|
+
*
|
|
74
|
+
* - First scan ever → seed every file's offset to its size, return no reads
|
|
75
|
+
* (no backlog replay on resume/adopt).
|
|
76
|
+
* - Mode ≠ `full` → fast-forward offsets to the current size, return no reads
|
|
77
|
+
* (the carry is dropped too: its line's remainder was skipped with the jump).
|
|
78
|
+
* - Mode = `full` → return `[offset..size)` for every grown file; a file first
|
|
79
|
+
* seen AFTER the first scan starts at offset 0 (it belongs to work started
|
|
80
|
+
* under this session).
|
|
81
|
+
* - A file SMALLER than its recorded offset (truncated/rewritten — should not
|
|
82
|
+
* happen for append-only transcripts) is re-seeded to its new EOF.
|
|
83
|
+
*/
|
|
84
|
+
export declare function getSubagentTailReads(state: SubagentTailState, scannedFiles: readonly SubagentScanFile[], mode: DisplayVerbosityMode): SubagentTailRead[];
|
|
85
|
+
/**
|
|
86
|
+
* @description Turn the bytes appended to one transcript (the range a
|
|
87
|
+
* {@link getSubagentTailReads} entry asked for) into the ordered list of
|
|
88
|
+
* renderable sub-agent text blocks. Prepends the file's carried partial line,
|
|
89
|
+
* splits on `\n`, keeps the new trailing partial line as the carry, and
|
|
90
|
+
* extracts via {@link getAssistantTextBlocks}.
|
|
91
|
+
*/
|
|
92
|
+
export declare function extractAppendedSubagentTexts(state: SubagentTailState, fileName: string, appendedText: string): string[];
|
|
93
|
+
//# sourceMappingURL=claudeSubagentTail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeSubagentTail.d.ts","sourceRoot":"","sources":["../../src/utils/claudeSubagentTail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAMrD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,eAAe,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC1C;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;uEACuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvE;AAWD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,iBAAiB,EACxB,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,IAAI,EAAE,oBAAoB,GACzB,gBAAgB,EAAE,CAkCpB;AAiCD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,CAWV"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSubagentTailState = createSubagentTailState;
|
|
4
|
+
exports.checkIsSubagentTranscriptName = checkIsSubagentTranscriptName;
|
|
5
|
+
exports.getSubagentTailReads = getSubagentTailReads;
|
|
6
|
+
exports.extractAppendedSubagentTexts = extractAppendedSubagentTexts;
|
|
7
|
+
/** Claude's sub-agent transcript filename shape (`agent-<agentId>.jsonl`).
|
|
8
|
+
* The sibling `agent-<agentId>.meta.json` files must NOT match. */
|
|
9
|
+
const subagentTranscriptNamePattern = /^agent-.+\.jsonl$/;
|
|
10
|
+
function createSubagentTailState() {
|
|
11
|
+
return { isFirstScanDone: false, fileTails: new Map() };
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @description Is `fileName` a sub-agent transcript (`agent-*.jsonl`)?
|
|
15
|
+
* Filters out the sibling `agent-*.meta.json` files and anything else the
|
|
16
|
+
* directory may grow in future Claude versions.
|
|
17
|
+
*/
|
|
18
|
+
function checkIsSubagentTranscriptName(fileName) {
|
|
19
|
+
return subagentTranscriptNamePattern.test(fileName);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @description Narrow an untyped `JSON.parse` result to a plain object so its
|
|
23
|
+
* fields can be read with `typeof` guards instead of casts (parse-boundary
|
|
24
|
+
* pattern for untrusted on-disk data; mirrors `isRecord` in `state.ts`).
|
|
25
|
+
*/
|
|
26
|
+
function checkIsRecord(value) {
|
|
27
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @description Decide which byte ranges the caller must read this scan,
|
|
31
|
+
* advancing per-file offsets. Offsets advance OPTIMISTICALLY (to the scanned
|
|
32
|
+
* size) even before the read happens: if the caller's read then fails, those
|
|
33
|
+
* bytes are skipped rather than replayed — drop-over-resend, same tradeoff as
|
|
34
|
+
* the relay window.
|
|
35
|
+
*
|
|
36
|
+
* - First scan ever → seed every file's offset to its size, return no reads
|
|
37
|
+
* (no backlog replay on resume/adopt).
|
|
38
|
+
* - Mode ≠ `full` → fast-forward offsets to the current size, return no reads
|
|
39
|
+
* (the carry is dropped too: its line's remainder was skipped with the jump).
|
|
40
|
+
* - Mode = `full` → return `[offset..size)` for every grown file; a file first
|
|
41
|
+
* seen AFTER the first scan starts at offset 0 (it belongs to work started
|
|
42
|
+
* under this session).
|
|
43
|
+
* - A file SMALLER than its recorded offset (truncated/rewritten — should not
|
|
44
|
+
* happen for append-only transcripts) is re-seeded to its new EOF.
|
|
45
|
+
*/
|
|
46
|
+
function getSubagentTailReads(state, scannedFiles, mode) {
|
|
47
|
+
if (!state.isFirstScanDone) {
|
|
48
|
+
state.isFirstScanDone = true;
|
|
49
|
+
for (const { fileName, sizeBytes } of scannedFiles) {
|
|
50
|
+
state.fileTails.set(fileName, { offsetBytes: sizeBytes, carry: '' });
|
|
51
|
+
}
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
const reads = [];
|
|
55
|
+
for (const { fileName, sizeBytes } of scannedFiles) {
|
|
56
|
+
const tail = state.fileTails.get(fileName);
|
|
57
|
+
if (!tail) {
|
|
58
|
+
state.fileTails.set(fileName, { offsetBytes: sizeBytes, carry: '' });
|
|
59
|
+
if (mode === 'full' && sizeBytes > 0) {
|
|
60
|
+
reads.push({ fileName, startOffset: 0, endOffset: sizeBytes });
|
|
61
|
+
}
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (sizeBytes < tail.offsetBytes) {
|
|
65
|
+
tail.offsetBytes = sizeBytes;
|
|
66
|
+
tail.carry = '';
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (sizeBytes === tail.offsetBytes)
|
|
70
|
+
continue;
|
|
71
|
+
if (mode !== 'full') {
|
|
72
|
+
tail.offsetBytes = sizeBytes;
|
|
73
|
+
tail.carry = '';
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
reads.push({ fileName, startOffset: tail.offsetBytes, endOffset: sizeBytes });
|
|
77
|
+
tail.offsetBytes = sizeBytes;
|
|
78
|
+
}
|
|
79
|
+
return reads;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* @description Pull the renderable text out of ONE transcript JSONL line.
|
|
83
|
+
* Only `assistant` entries contribute, and only their `text` content blocks —
|
|
84
|
+
* `thinking` / `tool_use` blocks and `user` / `attachment` entries are
|
|
85
|
+
* dropped (locked parity with OpenCode sub-agent rendering). A line that is
|
|
86
|
+
* not valid JSON (torn write caught mid-append) is skipped silently — the
|
|
87
|
+
* next complete line still parses.
|
|
88
|
+
*/
|
|
89
|
+
function getAssistantTextBlocks(line) {
|
|
90
|
+
const trimmedLine = line.trim();
|
|
91
|
+
if (!trimmedLine)
|
|
92
|
+
return [];
|
|
93
|
+
let parsed;
|
|
94
|
+
try {
|
|
95
|
+
parsed = JSON.parse(trimmedLine);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
if (!checkIsRecord(parsed) || parsed.type !== 'assistant')
|
|
101
|
+
return [];
|
|
102
|
+
const message = parsed.message;
|
|
103
|
+
if (!checkIsRecord(message))
|
|
104
|
+
return [];
|
|
105
|
+
const content = message.content;
|
|
106
|
+
if (!Array.isArray(content))
|
|
107
|
+
return [];
|
|
108
|
+
const texts = [];
|
|
109
|
+
for (const block of content) {
|
|
110
|
+
if (checkIsRecord(block) && block.type === 'text' && typeof block.text === 'string' && block.text.trim()) {
|
|
111
|
+
texts.push(block.text);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return texts;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @description Turn the bytes appended to one transcript (the range a
|
|
118
|
+
* {@link getSubagentTailReads} entry asked for) into the ordered list of
|
|
119
|
+
* renderable sub-agent text blocks. Prepends the file's carried partial line,
|
|
120
|
+
* splits on `\n`, keeps the new trailing partial line as the carry, and
|
|
121
|
+
* extracts via {@link getAssistantTextBlocks}.
|
|
122
|
+
*/
|
|
123
|
+
function extractAppendedSubagentTexts(state, fileName, appendedText) {
|
|
124
|
+
const tail = state.fileTails.get(fileName);
|
|
125
|
+
if (!tail)
|
|
126
|
+
return [];
|
|
127
|
+
const combined = tail.carry + appendedText;
|
|
128
|
+
const lines = combined.split('\n');
|
|
129
|
+
tail.carry = lines.pop() ?? '';
|
|
130
|
+
const texts = [];
|
|
131
|
+
for (const line of lines) {
|
|
132
|
+
texts.push(...getAssistantTextBlocks(line));
|
|
133
|
+
}
|
|
134
|
+
return texts;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=claudeSubagentTail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeSubagentTail.js","sourceRoot":"","sources":["../../src/utils/claudeSubagentTail.ts"],"names":[],"mappings":"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"}
|