charness 0.0.0-stage → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +88 -0
- package/DEVELOPMENT.md +110 -0
- package/LICENSE +21 -0
- package/MIGRATION_1_TO_2.md +24 -0
- package/README.md +1024 -2
- package/dist/accessControl.d.ts +71 -0
- package/dist/accessControl.d.ts.map +1 -0
- package/dist/accessControl.js +108 -0
- package/dist/accessControl.js.map +1 -0
- package/dist/adapters/adapterEventRouting.d.ts +51 -0
- package/dist/adapters/adapterEventRouting.d.ts.map +1 -0
- package/dist/adapters/adapterEventRouting.js +74 -0
- package/dist/adapters/adapterEventRouting.js.map +1 -0
- package/dist/adapters/adapterNames.d.ts +19 -0
- package/dist/adapters/adapterNames.d.ts.map +1 -0
- package/dist/adapters/adapterNames.js +25 -0
- package/dist/adapters/adapterNames.js.map +1 -0
- package/dist/adapters/claudeCliAdapter.d.ts +1336 -0
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeCliAdapter.js +4204 -0
- package/dist/adapters/claudeCliAdapter.js.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +548 -0
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -0
- package/dist/adapters/claudeJsonStreamAdapter.js +1810 -0
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -0
- package/dist/adapters/claudePlatformFlags.d.ts +35 -0
- package/dist/adapters/claudePlatformFlags.d.ts.map +1 -0
- package/dist/adapters/claudePlatformFlags.js +46 -0
- package/dist/adapters/claudePlatformFlags.js.map +1 -0
- package/dist/adapters/createAdapter.d.ts +252 -0
- package/dist/adapters/createAdapter.d.ts.map +1 -0
- package/dist/adapters/createAdapter.js +475 -0
- package/dist/adapters/createAdapter.js.map +1 -0
- package/dist/adapters/openCodeAdapter.d.ts +1446 -0
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -0
- package/dist/adapters/openCodeAdapter.js +4540 -0
- package/dist/adapters/openCodeAdapter.js.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts +28 -0
- package/dist/adapters/sessionLaunchDefaults.d.ts.map +1 -0
- package/dist/adapters/sessionLaunchDefaults.js +15 -0
- package/dist/adapters/sessionLaunchDefaults.js.map +1 -0
- package/dist/adapters/terminalAdapter.d.ts +68 -0
- package/dist/adapters/terminalAdapter.d.ts.map +1 -0
- package/dist/adapters/terminalAdapter.js +371 -0
- package/dist/adapters/terminalAdapter.js.map +1 -0
- package/dist/agentLogin/agentLogin.d.ts +31 -0
- package/dist/agentLogin/agentLogin.d.ts.map +1 -0
- package/dist/agentLogin/agentLogin.js +493 -0
- package/dist/agentLogin/agentLogin.js.map +1 -0
- package/dist/agentTrigger.d.ts +28 -0
- package/dist/agentTrigger.d.ts.map +1 -0
- package/dist/agentTrigger.js +53 -0
- package/dist/agentTrigger.js.map +1 -0
- package/dist/apiErrorRetry.d.ts +209 -0
- package/dist/apiErrorRetry.d.ts.map +1 -0
- package/dist/apiErrorRetry.js +351 -0
- package/dist/apiErrorRetry.js.map +1 -0
- package/dist/apiRetryKick.d.ts +148 -0
- package/dist/apiRetryKick.d.ts.map +1 -0
- package/dist/apiRetryKick.js +158 -0
- package/dist/apiRetryKick.js.map +1 -0
- package/dist/bootClassifier.d.ts +46 -0
- package/dist/bootClassifier.d.ts.map +1 -0
- package/dist/bootClassifier.js +43 -0
- package/dist/bootClassifier.js.map +1 -0
- package/dist/bot.d.ts +207 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +10611 -0
- package/dist/bot.js.map +1 -0
- package/dist/botFileStorage.d.ts +60 -0
- package/dist/botFileStorage.d.ts.map +1 -0
- package/dist/botFileStorage.js +205 -0
- package/dist/botFileStorage.js.map +1 -0
- package/dist/cli/applyDnsFix.d.ts +7 -0
- package/dist/cli/applyDnsFix.d.ts.map +1 -0
- package/dist/cli/applyDnsFix.js +46 -0
- package/dist/cli/applyDnsFix.js.map +1 -0
- package/dist/cli/bot.d.ts +27 -0
- package/dist/cli/bot.d.ts.map +1 -0
- package/dist/cli/bot.js +98 -0
- package/dist/cli/bot.js.map +1 -0
- package/dist/cli/botEntry.d.ts +3 -0
- package/dist/cli/botEntry.d.ts.map +1 -0
- package/dist/cli/botEntry.js +11 -0
- package/dist/cli/botEntry.js.map +1 -0
- package/dist/cli/connectorGuards.d.ts +31 -0
- package/dist/cli/connectorGuards.d.ts.map +1 -0
- package/dist/cli/connectorGuards.js +159 -0
- package/dist/cli/connectorGuards.js.map +1 -0
- package/dist/cli/envLoader.d.ts +34 -0
- package/dist/cli/envLoader.d.ts.map +1 -0
- package/dist/cli/envLoader.js +132 -0
- package/dist/cli/envLoader.js.map +1 -0
- package/dist/cli/hot.d.ts +82 -0
- package/dist/cli/hot.d.ts.map +1 -0
- package/dist/cli/hot.js +323 -0
- package/dist/cli/hot.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +130 -0
- package/dist/cli.js.map +1 -0
- package/dist/connectors/jira/adf.d.ts +72 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -0
- package/dist/connectors/jira/adf.js +407 -0
- package/dist/connectors/jira/adf.js.map +1 -0
- package/dist/connectors/jira/agentBinaries.d.ts +14 -0
- package/dist/connectors/jira/agentBinaries.d.ts.map +1 -0
- package/dist/connectors/jira/agentBinaries.js +75 -0
- package/dist/connectors/jira/agentBinaries.js.map +1 -0
- package/dist/connectors/jira/answerSink.d.ts +52 -0
- package/dist/connectors/jira/answerSink.d.ts.map +1 -0
- package/dist/connectors/jira/answerSink.js +220 -0
- package/dist/connectors/jira/answerSink.js.map +1 -0
- package/dist/connectors/jira/attachmentDownload.d.ts +41 -0
- package/dist/connectors/jira/attachmentDownload.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentDownload.js +92 -0
- package/dist/connectors/jira/attachmentDownload.js.map +1 -0
- package/dist/connectors/jira/attachmentTool.d.ts +43 -0
- package/dist/connectors/jira/attachmentTool.d.ts.map +1 -0
- package/dist/connectors/jira/attachmentTool.js +150 -0
- package/dist/connectors/jira/attachmentTool.js.map +1 -0
- package/dist/connectors/jira/client.d.ts +490 -0
- package/dist/connectors/jira/client.d.ts.map +1 -0
- package/dist/connectors/jira/client.js +453 -0
- package/dist/connectors/jira/client.js.map +1 -0
- package/dist/connectors/jira/config.d.ts +117 -0
- package/dist/connectors/jira/config.d.ts.map +1 -0
- package/dist/connectors/jira/config.js +350 -0
- package/dist/connectors/jira/config.js.map +1 -0
- package/dist/connectors/jira/configFile.d.ts +10 -0
- package/dist/connectors/jira/configFile.d.ts.map +1 -0
- package/dist/connectors/jira/configFile.js +50 -0
- package/dist/connectors/jira/configFile.js.map +1 -0
- package/dist/connectors/jira/connector.d.ts +68 -0
- package/dist/connectors/jira/connector.d.ts.map +1 -0
- package/dist/connectors/jira/connector.js +257 -0
- package/dist/connectors/jira/connector.js.map +1 -0
- package/dist/connectors/jira/contextLedger.d.ts +59 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -0
- package/dist/connectors/jira/contextLedger.js +194 -0
- package/dist/connectors/jira/contextLedger.js.map +1 -0
- package/dist/connectors/jira/contextPreamble.d.ts +18 -0
- package/dist/connectors/jira/contextPreamble.d.ts.map +1 -0
- package/dist/connectors/jira/contextPreamble.js +31 -0
- package/dist/connectors/jira/contextPreamble.js.map +1 -0
- package/dist/connectors/jira/inbound.d.ts +132 -0
- package/dist/connectors/jira/inbound.d.ts.map +1 -0
- package/dist/connectors/jira/inbound.js +316 -0
- package/dist/connectors/jira/inbound.js.map +1 -0
- package/dist/connectors/jira/issueBlocks.d.ts +51 -0
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -0
- package/dist/connectors/jira/issueBlocks.js +182 -0
- package/dist/connectors/jira/issueBlocks.js.map +1 -0
- package/dist/connectors/jira/issueContext.d.ts +25 -0
- package/dist/connectors/jira/issueContext.d.ts.map +1 -0
- package/dist/connectors/jira/issueContext.js +53 -0
- package/dist/connectors/jira/issueContext.js.map +1 -0
- package/dist/connectors/jira/issueDelta.d.ts +35 -0
- package/dist/connectors/jira/issueDelta.d.ts.map +1 -0
- package/dist/connectors/jira/issueDelta.js +50 -0
- package/dist/connectors/jira/issueDelta.js.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts +20 -0
- package/dist/connectors/jira/mediaPlaceholders.d.ts.map +1 -0
- package/dist/connectors/jira/mediaPlaceholders.js +92 -0
- package/dist/connectors/jira/mediaPlaceholders.js.map +1 -0
- package/dist/connectors/jira/outbound.d.ts +6 -0
- package/dist/connectors/jira/outbound.d.ts.map +1 -0
- package/dist/connectors/jira/outbound.js +38 -0
- package/dist/connectors/jira/outbound.js.map +1 -0
- package/dist/connectors/jira/prompt.d.ts +37 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -0
- package/dist/connectors/jira/prompt.js +99 -0
- package/dist/connectors/jira/prompt.js.map +1 -0
- package/dist/connectors/jira/promptSpill.d.ts +50 -0
- package/dist/connectors/jira/promptSpill.d.ts.map +1 -0
- package/dist/connectors/jira/promptSpill.js +157 -0
- package/dist/connectors/jira/promptSpill.js.map +1 -0
- package/dist/connectors/jira/promptText.d.ts +7 -0
- package/dist/connectors/jira/promptText.d.ts.map +1 -0
- package/dist/connectors/jira/promptText.js +26 -0
- package/dist/connectors/jira/promptText.js.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts +16 -0
- package/dist/connectors/jira/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/jira/sessionKeyCodec.js +101 -0
- package/dist/connectors/jira/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/jira/trigger.d.ts +50 -0
- package/dist/connectors/jira/trigger.d.ts.map +1 -0
- package/dist/connectors/jira/trigger.js +93 -0
- package/dist/connectors/jira/trigger.js.map +1 -0
- package/dist/connectors/jira/triggerLog.d.ts +51 -0
- package/dist/connectors/jira/triggerLog.d.ts.map +1 -0
- package/dist/connectors/jira/triggerLog.js +78 -0
- package/dist/connectors/jira/triggerLog.js.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts +58 -0
- package/dist/connectors/jira/unconfirmedPosts.d.ts.map +1 -0
- package/dist/connectors/jira/unconfirmedPosts.js +105 -0
- package/dist/connectors/jira/unconfirmedPosts.js.map +1 -0
- package/dist/connectors/telegram/answerSink.d.ts +46 -0
- package/dist/connectors/telegram/answerSink.d.ts.map +1 -0
- package/dist/connectors/telegram/answerSink.js +71 -0
- package/dist/connectors/telegram/answerSink.js.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +31 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js +142 -0
- package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -0
- package/dist/connectors/telegram/commands/botCore.d.ts +46 -0
- package/dist/connectors/telegram/commands/botCore.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/botCore.js +3 -0
- package/dist/connectors/telegram/commands/botCore.js.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.js +13 -0
- package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -0
- package/dist/connectors/telegram/commands/compaction.d.ts +47 -0
- package/dist/connectors/telegram/commands/compaction.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/compaction.js +868 -0
- package/dist/connectors/telegram/commands/compaction.js.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts +13 -0
- package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/displayModes.js +335 -0
- package/dist/connectors/telegram/commands/displayModes.js.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts +95 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.js +841 -0
- package/dist/connectors/telegram/commands/modelProviders.js.map +1 -0
- package/dist/connectors/telegram/commands/reminders.d.ts +54 -0
- package/dist/connectors/telegram/commands/reminders.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/reminders.js +624 -0
- package/dist/connectors/telegram/commands/reminders.js.map +1 -0
- package/dist/connectors/telegram/fileIntake.d.ts +166 -0
- package/dist/connectors/telegram/fileIntake.d.ts.map +1 -0
- package/dist/connectors/telegram/fileIntake.js +304 -0
- package/dist/connectors/telegram/fileIntake.js.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts +57 -0
- package/dist/connectors/telegram/fileSendGateway.d.ts.map +1 -0
- package/dist/connectors/telegram/fileSendGateway.js +221 -0
- package/dist/connectors/telegram/fileSendGateway.js.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts +52 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.d.ts.map +1 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js +71 -0
- package/dist/connectors/telegram/foreignKeyFallbacks.js.map +1 -0
- package/dist/connectors/telegram/inbound.d.ts +131 -0
- package/dist/connectors/telegram/inbound.d.ts.map +1 -0
- package/dist/connectors/telegram/inbound.js +278 -0
- package/dist/connectors/telegram/inbound.js.map +1 -0
- package/dist/connectors/telegram/languagePicker.d.ts +32 -0
- package/dist/connectors/telegram/languagePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/languagePicker.js +55 -0
- package/dist/connectors/telegram/languagePicker.js.map +1 -0
- package/dist/connectors/telegram/messageSplit.d.ts +62 -0
- package/dist/connectors/telegram/messageSplit.d.ts.map +1 -0
- package/dist/connectors/telegram/messageSplit.js +119 -0
- package/dist/connectors/telegram/messageSplit.js.map +1 -0
- package/dist/connectors/telegram/outbound.d.ts +62 -0
- package/dist/connectors/telegram/outbound.d.ts.map +1 -0
- package/dist/connectors/telegram/outbound.js +116 -0
- package/dist/connectors/telegram/outbound.js.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts +34 -0
- package/dist/connectors/telegram/output/createOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/createOutputTransport.js +77 -0
- package/dist/connectors/telegram/output/createOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts +47 -0
- package/dist/connectors/telegram/output/dmOutputTransport.d.ts.map +1 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js +412 -0
- package/dist/connectors/telegram/output/dmOutputTransport.js.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts +38 -0
- package/dist/connectors/telegram/outputBacklogGlue.d.ts.map +1 -0
- package/dist/connectors/telegram/outputBacklogGlue.js +49 -0
- package/dist/connectors/telegram/outputBacklogGlue.js.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts +93 -0
- package/dist/connectors/telegram/outputFlushPlan.d.ts.map +1 -0
- package/dist/connectors/telegram/outputFlushPlan.js +120 -0
- package/dist/connectors/telegram/outputFlushPlan.js.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts +30 -0
- package/dist/connectors/telegram/questionKeyboards.d.ts.map +1 -0
- package/dist/connectors/telegram/questionKeyboards.js +37 -0
- package/dist/connectors/telegram/questionKeyboards.js.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts +27 -0
- package/dist/connectors/telegram/renderAgentHtml.d.ts.map +1 -0
- package/dist/connectors/telegram/renderAgentHtml.js +97 -0
- package/dist/connectors/telegram/renderAgentHtml.js.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts +28 -0
- package/dist/connectors/telegram/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/telegram/sessionKeyCodec.js +107 -0
- package/dist/connectors/telegram/sessionKeyCodec.js.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts +19 -0
- package/dist/connectors/telegram/telegramCallGuard.d.ts.map +1 -0
- package/dist/connectors/telegram/telegramCallGuard.js +35 -0
- package/dist/connectors/telegram/telegramCallGuard.js.map +1 -0
- package/dist/connectors/telegram/timezonePicker.d.ts +85 -0
- package/dist/connectors/telegram/timezonePicker.d.ts.map +1 -0
- package/dist/connectors/telegram/timezonePicker.js +142 -0
- package/dist/connectors/telegram/timezonePicker.js.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts +85 -0
- package/dist/connectors/telegram/updateDispatcher.d.ts.map +1 -0
- package/dist/connectors/telegram/updateDispatcher.js +159 -0
- package/dist/connectors/telegram/updateDispatcher.js.map +1 -0
- package/dist/connectors/test/connector.d.ts +52 -0
- package/dist/connectors/test/connector.d.ts.map +1 -0
- package/dist/connectors/test/connector.js +143 -0
- package/dist/connectors/test/connector.js.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts +25 -0
- package/dist/connectors/test/sessionKeyCodec.d.ts.map +1 -0
- package/dist/connectors/test/sessionKeyCodec.js +50 -0
- package/dist/connectors/test/sessionKeyCodec.js.map +1 -0
- package/dist/diagLog.d.ts +6 -0
- package/dist/diagLog.d.ts.map +1 -0
- package/dist/diagLog.js +58 -0
- package/dist/diagLog.js.map +1 -0
- package/dist/effortLevels.d.ts +68 -0
- package/dist/effortLevels.d.ts.map +1 -0
- package/dist/effortLevels.js +114 -0
- package/dist/effortLevels.js.map +1 -0
- package/dist/folderName.d.ts +42 -0
- package/dist/folderName.d.ts.map +1 -0
- package/dist/folderName.js +51 -0
- package/dist/folderName.js.map +1 -0
- package/dist/i18n/de.d.ts +2 -0
- package/dist/i18n/de.d.ts.map +1 -0
- package/dist/i18n/de.js +537 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en.d.ts +7 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +566 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/es.d.ts +2 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +537 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/fr.d.ts +2 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +537 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/hi.d.ts +2 -0
- package/dist/i18n/hi.d.ts.map +1 -0
- package/dist/i18n/hi.js +537 -0
- package/dist/i18n/hi.js.map +1 -0
- package/dist/i18n/ja.d.ts +2 -0
- package/dist/i18n/ja.d.ts.map +1 -0
- package/dist/i18n/ja.js +537 -0
- package/dist/i18n/ja.js.map +1 -0
- package/dist/i18n/ka.d.ts +2 -0
- package/dist/i18n/ka.d.ts.map +1 -0
- package/dist/i18n/ka.js +537 -0
- package/dist/i18n/ka.js.map +1 -0
- package/dist/i18n/pt.d.ts +2 -0
- package/dist/i18n/pt.d.ts.map +1 -0
- package/dist/i18n/pt.js +537 -0
- package/dist/i18n/pt.js.map +1 -0
- package/dist/i18n/ru.d.ts +6 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +540 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/i18n/uk.d.ts +8 -0
- package/dist/i18n/uk.d.ts.map +1 -0
- package/dist/i18n/uk.js +542 -0
- package/dist/i18n/uk.js.map +1 -0
- package/dist/i18n/uz.d.ts +2 -0
- package/dist/i18n/uz.d.ts.map +1 -0
- package/dist/i18n/uz.js +537 -0
- package/dist/i18n/uz.js.map +1 -0
- package/dist/i18n/zh.d.ts +2 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +537 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/i18n.d.ts +115 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +233 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/installManager.d.ts +99 -0
- package/dist/installManager.d.ts.map +1 -0
- package/dist/installManager.js +943 -0
- package/dist/installManager.js.map +1 -0
- package/dist/instanceLock.d.ts +161 -0
- package/dist/instanceLock.d.ts.map +1 -0
- package/dist/instanceLock.js +388 -0
- package/dist/instanceLock.js.map +1 -0
- package/dist/mcpConfig.d.ts +76 -0
- package/dist/mcpConfig.d.ts.map +1 -0
- package/dist/mcpConfig.js +270 -0
- package/dist/mcpConfig.js.map +1 -0
- package/dist/openCodeOpenQuestion.d.ts +44 -0
- package/dist/openCodeOpenQuestion.d.ts.map +1 -0
- package/dist/openCodeOpenQuestion.js +64 -0
- package/dist/openCodeOpenQuestion.js.map +1 -0
- package/dist/openCodeQuestionFlow.d.ts +105 -0
- package/dist/openCodeQuestionFlow.d.ts.map +1 -0
- package/dist/openCodeQuestionFlow.js +143 -0
- package/dist/openCodeQuestionFlow.js.map +1 -0
- package/dist/openCodeSessionRouting.d.ts +133 -0
- package/dist/openCodeSessionRouting.d.ts.map +1 -0
- package/dist/openCodeSessionRouting.js +253 -0
- package/dist/openCodeSessionRouting.js.map +1 -0
- package/dist/openCodeSessionTitle.d.ts +50 -0
- package/dist/openCodeSessionTitle.d.ts.map +1 -0
- package/dist/openCodeSessionTitle.js +84 -0
- package/dist/openCodeSessionTitle.js.map +1 -0
- package/dist/outputTrace.d.ts +108 -0
- package/dist/outputTrace.d.ts.map +1 -0
- package/dist/outputTrace.js +430 -0
- package/dist/outputTrace.js.map +1 -0
- package/dist/pendingQuestionRepost.d.ts +47 -0
- package/dist/pendingQuestionRepost.d.ts.map +1 -0
- package/dist/pendingQuestionRepost.js +29 -0
- package/dist/pendingQuestionRepost.js.map +1 -0
- package/dist/pinnedStatus.d.ts +52 -0
- package/dist/pinnedStatus.d.ts.map +1 -0
- package/dist/pinnedStatus.js +36 -0
- package/dist/pinnedStatus.js.map +1 -0
- package/dist/platform/answerSink.d.ts +93 -0
- package/dist/platform/answerSink.d.ts.map +1 -0
- package/dist/platform/answerSink.js +31 -0
- package/dist/platform/answerSink.js.map +1 -0
- package/dist/platform/capabilityFallback.d.ts +39 -0
- package/dist/platform/capabilityFallback.d.ts.map +1 -0
- package/dist/platform/capabilityFallback.js +55 -0
- package/dist/platform/capabilityFallback.js.map +1 -0
- package/dist/platform/commandRouter.d.ts +51 -0
- package/dist/platform/commandRouter.d.ts.map +1 -0
- package/dist/platform/commandRouter.js +53 -0
- package/dist/platform/commandRouter.js.map +1 -0
- package/dist/platform/connectorSet.d.ts +39 -0
- package/dist/platform/connectorSet.d.ts.map +1 -0
- package/dist/platform/connectorSet.js +55 -0
- package/dist/platform/connectorSet.js.map +1 -0
- package/dist/platform/inbound.d.ts +147 -0
- package/dist/platform/inbound.d.ts.map +1 -0
- package/dist/platform/inbound.js +18 -0
- package/dist/platform/inbound.js.map +1 -0
- package/dist/platform/outbound.d.ts +225 -0
- package/dist/platform/outbound.d.ts.map +1 -0
- package/dist/platform/outbound.js +30 -0
- package/dist/platform/outbound.js.map +1 -0
- package/dist/platform/unservedStateGuard.d.ts +27 -0
- package/dist/platform/unservedStateGuard.d.ts.map +1 -0
- package/dist/platform/unservedStateGuard.js +42 -0
- package/dist/platform/unservedStateGuard.js.map +1 -0
- package/dist/postToSession.d.ts +94 -0
- package/dist/postToSession.d.ts.map +1 -0
- package/dist/postToSession.js +56 -0
- package/dist/postToSession.js.map +1 -0
- package/dist/progressLine.d.ts +180 -0
- package/dist/progressLine.d.ts.map +1 -0
- package/dist/progressLine.js +293 -0
- package/dist/progressLine.js.map +1 -0
- package/dist/rateLimiter.d.ts +246 -0
- package/dist/rateLimiter.d.ts.map +1 -0
- package/dist/rateLimiter.js +555 -0
- package/dist/rateLimiter.js.map +1 -0
- package/dist/requests/answerRequest.d.ts +57 -0
- package/dist/requests/answerRequest.d.ts.map +1 -0
- package/dist/requests/answerRequest.js +96 -0
- package/dist/requests/answerRequest.js.map +1 -0
- package/dist/requests/answerTail.d.ts +83 -0
- package/dist/requests/answerTail.d.ts.map +1 -0
- package/dist/requests/answerTail.js +102 -0
- package/dist/requests/answerTail.js.map +1 -0
- package/dist/requests/limitWaitAnswer.d.ts +87 -0
- package/dist/requests/limitWaitAnswer.d.ts.map +1 -0
- package/dist/requests/limitWaitAnswer.js +83 -0
- package/dist/requests/limitWaitAnswer.js.map +1 -0
- package/dist/requests/requestGroup.d.ts +44 -0
- package/dist/requests/requestGroup.d.ts.map +1 -0
- package/dist/requests/requestGroup.js +63 -0
- package/dist/requests/requestGroup.js.map +1 -0
- package/dist/requests/requestHeader.d.ts +70 -0
- package/dist/requests/requestHeader.d.ts.map +1 -0
- package/dist/requests/requestHeader.js +83 -0
- package/dist/requests/requestHeader.js.map +1 -0
- package/dist/requests/requestLedger.d.ts +217 -0
- package/dist/requests/requestLedger.d.ts.map +1 -0
- package/dist/requests/requestLedger.js +468 -0
- package/dist/requests/requestLedger.js.map +1 -0
- package/dist/requests/sessionTurnProbe.d.ts +52 -0
- package/dist/requests/sessionTurnProbe.d.ts.map +1 -0
- package/dist/requests/sessionTurnProbe.js +29 -0
- package/dist/requests/sessionTurnProbe.js.map +1 -0
- package/dist/requests/types.d.ts +181 -0
- package/dist/requests/types.d.ts.map +1 -0
- package/dist/requests/types.js +9 -0
- package/dist/requests/types.js.map +1 -0
- package/dist/requests/wakeUpEngine.d.ts +160 -0
- package/dist/requests/wakeUpEngine.d.ts.map +1 -0
- package/dist/requests/wakeUpEngine.js +399 -0
- package/dist/requests/wakeUpEngine.js.map +1 -0
- package/dist/requests/wakeUpRules.d.ts +151 -0
- package/dist/requests/wakeUpRules.d.ts.map +1 -0
- package/dist/requests/wakeUpRules.js +167 -0
- package/dist/requests/wakeUpRules.js.map +1 -0
- package/dist/resumeContext.d.ts +87 -0
- package/dist/resumeContext.d.ts.map +1 -0
- package/dist/resumeContext.js +114 -0
- package/dist/resumeContext.js.map +1 -0
- package/dist/scheduler/checkRun.d.ts +95 -0
- package/dist/scheduler/checkRun.d.ts.map +1 -0
- package/dist/scheduler/checkRun.js +172 -0
- package/dist/scheduler/checkRun.js.map +1 -0
- package/dist/scheduler/delivery.d.ts +99 -0
- package/dist/scheduler/delivery.d.ts.map +1 -0
- package/dist/scheduler/delivery.js +212 -0
- package/dist/scheduler/delivery.js.map +1 -0
- package/dist/scheduler/deliveryKind.d.ts +29 -0
- package/dist/scheduler/deliveryKind.d.ts.map +1 -0
- package/dist/scheduler/deliveryKind.js +39 -0
- package/dist/scheduler/deliveryKind.js.map +1 -0
- package/dist/scheduler/directoryThreads.d.ts +19 -0
- package/dist/scheduler/directoryThreads.d.ts.map +1 -0
- package/dist/scheduler/directoryThreads.js +28 -0
- package/dist/scheduler/directoryThreads.js.map +1 -0
- package/dist/scheduler/engine.d.ts +77 -0
- package/dist/scheduler/engine.d.ts.map +1 -0
- package/dist/scheduler/engine.js +337 -0
- package/dist/scheduler/engine.js.map +1 -0
- package/dist/scheduler/injection.d.ts +102 -0
- package/dist/scheduler/injection.d.ts.map +1 -0
- package/dist/scheduler/injection.js +122 -0
- package/dist/scheduler/injection.js.map +1 -0
- package/dist/scheduler/mcpBoot.d.ts +65 -0
- package/dist/scheduler/mcpBoot.d.ts.map +1 -0
- package/dist/scheduler/mcpBoot.js +60 -0
- package/dist/scheduler/mcpBoot.js.map +1 -0
- package/dist/scheduler/mcpSurface.d.ts +355 -0
- package/dist/scheduler/mcpSurface.d.ts.map +1 -0
- package/dist/scheduler/mcpSurface.js +1257 -0
- package/dist/scheduler/mcpSurface.js.map +1 -0
- package/dist/scheduler/rebindResume.d.ts +27 -0
- package/dist/scheduler/rebindResume.d.ts.map +1 -0
- package/dist/scheduler/rebindResume.js +17 -0
- package/dist/scheduler/rebindResume.js.map +1 -0
- package/dist/scheduler/recurrence.d.ts +58 -0
- package/dist/scheduler/recurrence.d.ts.map +1 -0
- package/dist/scheduler/recurrence.js +210 -0
- package/dist/scheduler/recurrence.js.map +1 -0
- package/dist/scheduler/runLedger.d.ts +59 -0
- package/dist/scheduler/runLedger.d.ts.map +1 -0
- package/dist/scheduler/runLedger.js +54 -0
- package/dist/scheduler/runLedger.js.map +1 -0
- package/dist/scheduler/store.d.ts +97 -0
- package/dist/scheduler/store.d.ts.map +1 -0
- package/dist/scheduler/store.js +124 -0
- package/dist/scheduler/store.js.map +1 -0
- package/dist/scheduler/timezoneRecompute.d.ts +61 -0
- package/dist/scheduler/timezoneRecompute.d.ts.map +1 -0
- package/dist/scheduler/timezoneRecompute.js +46 -0
- package/dist/scheduler/timezoneRecompute.js.map +1 -0
- package/dist/scheduler/types.d.ts +139 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +8 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/sendErrorClassifier.d.ts +45 -0
- package/dist/sendErrorClassifier.d.ts.map +1 -0
- package/dist/sendErrorClassifier.js +65 -0
- package/dist/sendErrorClassifier.js.map +1 -0
- package/dist/sessionKey.d.ts +136 -0
- package/dist/sessionKey.d.ts.map +1 -0
- package/dist/sessionKey.js +153 -0
- package/dist/sessionKey.js.map +1 -0
- package/dist/sessionPick.d.ts +42 -0
- package/dist/sessionPick.d.ts.map +1 -0
- package/dist/sessionPick.js +39 -0
- package/dist/sessionPick.js.map +1 -0
- package/dist/shutdown.d.ts +126 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +164 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/startupPromptBuffer.d.ts +85 -0
- package/dist/startupPromptBuffer.d.ts.map +1 -0
- package/dist/startupPromptBuffer.js +123 -0
- package/dist/startupPromptBuffer.js.map +1 -0
- package/dist/state.d.ts +1245 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +1830 -0
- package/dist/state.js.map +1 -0
- package/dist/threadContextPreamble.d.ts +89 -0
- package/dist/threadContextPreamble.d.ts.map +1 -0
- package/dist/threadContextPreamble.js +102 -0
- package/dist/threadContextPreamble.js.map +1 -0
- package/dist/threadRouting.d.ts +164 -0
- package/dist/threadRouting.d.ts.map +1 -0
- package/dist/threadRouting.js +182 -0
- package/dist/threadRouting.js.map +1 -0
- package/dist/types.d.ts +1015 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/abortableFifo.d.ts +10 -0
- package/dist/utils/abortableFifo.d.ts.map +1 -0
- package/dist/utils/abortableFifo.js +55 -0
- package/dist/utils/abortableFifo.js.map +1 -0
- package/dist/utils/adoptedToolList.d.ts +27 -0
- package/dist/utils/adoptedToolList.d.ts.map +1 -0
- package/dist/utils/adoptedToolList.js +22 -0
- package/dist/utils/adoptedToolList.js.map +1 -0
- package/dist/utils/agentEnvironment.d.ts +42 -0
- package/dist/utils/agentEnvironment.d.ts.map +1 -0
- package/dist/utils/agentEnvironment.js +122 -0
- package/dist/utils/agentEnvironment.js.map +1 -0
- package/dist/utils/ansiClean.d.ts +11 -0
- package/dist/utils/ansiClean.d.ts.map +1 -0
- package/dist/utils/ansiClean.js +139 -0
- package/dist/utils/ansiClean.js.map +1 -0
- package/dist/utils/autoContinueOnLimit.d.ts +49 -0
- package/dist/utils/autoContinueOnLimit.d.ts.map +1 -0
- package/dist/utils/autoContinueOnLimit.js +69 -0
- package/dist/utils/autoContinueOnLimit.js.map +1 -0
- package/dist/utils/canonicalPathContainment.d.ts +7 -0
- package/dist/utils/canonicalPathContainment.d.ts.map +1 -0
- package/dist/utils/canonicalPathContainment.js +48 -0
- package/dist/utils/canonicalPathContainment.js.map +1 -0
- package/dist/utils/claudeAuthLogin.d.ts +71 -0
- package/dist/utils/claudeAuthLogin.d.ts.map +1 -0
- package/dist/utils/claudeAuthLogin.js +93 -0
- package/dist/utils/claudeAuthLogin.js.map +1 -0
- package/dist/utils/claudeChunkClassifier.d.ts +97 -0
- package/dist/utils/claudeChunkClassifier.d.ts.map +1 -0
- package/dist/utils/claudeChunkClassifier.js +254 -0
- package/dist/utils/claudeChunkClassifier.js.map +1 -0
- package/dist/utils/claudeCodeVersion.d.ts +31 -0
- package/dist/utils/claudeCodeVersion.d.ts.map +1 -0
- package/dist/utils/claudeCodeVersion.js +62 -0
- package/dist/utils/claudeCodeVersion.js.map +1 -0
- package/dist/utils/claudeCompactHook.d.ts +64 -0
- package/dist/utils/claudeCompactHook.d.ts.map +1 -0
- package/dist/utils/claudeCompactHook.js +98 -0
- package/dist/utils/claudeCompactHook.js.map +1 -0
- package/dist/utils/claudeLivenessAction.d.ts +208 -0
- package/dist/utils/claudeLivenessAction.d.ts.map +1 -0
- package/dist/utils/claudeLivenessAction.js +135 -0
- package/dist/utils/claudeLivenessAction.js.map +1 -0
- package/dist/utils/claudeMcpHeal.d.ts +92 -0
- package/dist/utils/claudeMcpHeal.d.ts.map +1 -0
- package/dist/utils/claudeMcpHeal.js +91 -0
- package/dist/utils/claudeMcpHeal.js.map +1 -0
- package/dist/utils/claudeRelayRouting.d.ts +86 -0
- package/dist/utils/claudeRelayRouting.d.ts.map +1 -0
- package/dist/utils/claudeRelayRouting.js +159 -0
- package/dist/utils/claudeRelayRouting.js.map +1 -0
- package/dist/utils/claudeRuntimeInfo.d.ts +26 -0
- package/dist/utils/claudeRuntimeInfo.d.ts.map +1 -0
- package/dist/utils/claudeRuntimeInfo.js +151 -0
- package/dist/utils/claudeRuntimeInfo.js.map +1 -0
- package/dist/utils/claudeScrapeShapes.d.ts +256 -0
- package/dist/utils/claudeScrapeShapes.d.ts.map +1 -0
- package/dist/utils/claudeScrapeShapes.js +290 -0
- package/dist/utils/claudeScrapeShapes.js.map +1 -0
- package/dist/utils/claudeSessionTitle.d.ts +27 -0
- package/dist/utils/claudeSessionTitle.d.ts.map +1 -0
- package/dist/utils/claudeSessionTitle.js +90 -0
- package/dist/utils/claudeSessionTitle.js.map +1 -0
- package/dist/utils/claudeStreamJson.d.ts +202 -0
- package/dist/utils/claudeStreamJson.d.ts.map +1 -0
- package/dist/utils/claudeStreamJson.js +351 -0
- package/dist/utils/claudeStreamJson.js.map +1 -0
- package/dist/utils/claudeSubagentTail.d.ts +93 -0
- package/dist/utils/claudeSubagentTail.d.ts.map +1 -0
- package/dist/utils/claudeSubagentTail.js +136 -0
- package/dist/utils/claudeSubagentTail.js.map +1 -0
- package/dist/utils/clearThreadOutputQueues.d.ts +43 -0
- package/dist/utils/clearThreadOutputQueues.d.ts.map +1 -0
- package/dist/utils/clearThreadOutputQueues.js +39 -0
- package/dist/utils/clearThreadOutputQueues.js.map +1 -0
- package/dist/utils/compactCommandRoute.d.ts +45 -0
- package/dist/utils/compactCommandRoute.d.ts.map +1 -0
- package/dist/utils/compactCommandRoute.js +36 -0
- package/dist/utils/compactCommandRoute.js.map +1 -0
- package/dist/utils/compactOnIdle.d.ts +329 -0
- package/dist/utils/compactOnIdle.d.ts.map +1 -0
- package/dist/utils/compactOnIdle.js +379 -0
- package/dist/utils/compactOnIdle.js.map +1 -0
- package/dist/utils/consoleFileTap.d.ts +51 -0
- package/dist/utils/consoleFileTap.d.ts.map +1 -0
- package/dist/utils/consoleFileTap.js +86 -0
- package/dist/utils/consoleFileTap.js.map +1 -0
- package/dist/utils/displayVerbosity.d.ts +44 -0
- package/dist/utils/displayVerbosity.d.ts.map +1 -0
- package/dist/utils/displayVerbosity.js +75 -0
- package/dist/utils/displayVerbosity.js.map +1 -0
- package/dist/utils/download.d.ts +72 -0
- package/dist/utils/download.d.ts.map +1 -0
- package/dist/utils/download.js +216 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/draftFinalize.d.ts +110 -0
- package/dist/utils/draftFinalize.d.ts.map +1 -0
- package/dist/utils/draftFinalize.js +100 -0
- package/dist/utils/draftFinalize.js.map +1 -0
- package/dist/utils/draftId.d.ts +36 -0
- package/dist/utils/draftId.d.ts.map +1 -0
- package/dist/utils/draftId.js +46 -0
- package/dist/utils/draftId.js.map +1 -0
- package/dist/utils/draftPacer.d.ts +72 -0
- package/dist/utils/draftPacer.d.ts.map +1 -0
- package/dist/utils/draftPacer.js +53 -0
- package/dist/utils/draftPacer.js.map +1 -0
- package/dist/utils/effortStartupKeystroke.d.ts +20 -0
- package/dist/utils/effortStartupKeystroke.d.ts.map +1 -0
- package/dist/utils/effortStartupKeystroke.js +28 -0
- package/dist/utils/effortStartupKeystroke.js.map +1 -0
- package/dist/utils/ensureSessionPlan.d.ts +70 -0
- package/dist/utils/ensureSessionPlan.d.ts.map +1 -0
- package/dist/utils/ensureSessionPlan.js +54 -0
- package/dist/utils/ensureSessionPlan.js.map +1 -0
- package/dist/utils/fileSendPlan.d.ts +217 -0
- package/dist/utils/fileSendPlan.d.ts.map +1 -0
- package/dist/utils/fileSendPlan.js +291 -0
- package/dist/utils/fileSendPlan.js.map +1 -0
- package/dist/utils/fileSendService.d.ts +94 -0
- package/dist/utils/fileSendService.d.ts.map +1 -0
- package/dist/utils/fileSendService.js +387 -0
- package/dist/utils/fileSendService.js.map +1 -0
- package/dist/utils/groupFinalizePlan.d.ts +38 -0
- package/dist/utils/groupFinalizePlan.d.ts.map +1 -0
- package/dist/utils/groupFinalizePlan.js +35 -0
- package/dist/utils/groupFinalizePlan.js.map +1 -0
- package/dist/utils/identicalOutputGuard.d.ts +83 -0
- package/dist/utils/identicalOutputGuard.d.ts.map +1 -0
- package/dist/utils/identicalOutputGuard.js +99 -0
- package/dist/utils/identicalOutputGuard.js.map +1 -0
- package/dist/utils/isoTimestamp.d.ts +16 -0
- package/dist/utils/isoTimestamp.d.ts.map +1 -0
- package/dist/utils/isoTimestamp.js +34 -0
- package/dist/utils/isoTimestamp.js.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts +130 -0
- package/dist/utils/jsonStreamBusyWatchdog.d.ts.map +1 -0
- package/dist/utils/jsonStreamBusyWatchdog.js +122 -0
- package/dist/utils/jsonStreamBusyWatchdog.js.map +1 -0
- package/dist/utils/jsonStreamHost.d.ts +227 -0
- package/dist/utils/jsonStreamHost.d.ts.map +1 -0
- package/dist/utils/jsonStreamHost.js +417 -0
- package/dist/utils/jsonStreamHost.js.map +1 -0
- package/dist/utils/keyedTransitionQueue.d.ts +18 -0
- package/dist/utils/keyedTransitionQueue.d.ts.map +1 -0
- package/dist/utils/keyedTransitionQueue.js +34 -0
- package/dist/utils/keyedTransitionQueue.js.map +1 -0
- package/dist/utils/limitEpisodeRecovery.d.ts +92 -0
- package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -0
- package/dist/utils/limitEpisodeRecovery.js +133 -0
- package/dist/utils/limitEpisodeRecovery.js.map +1 -0
- package/dist/utils/limitHeldPromptQueue.d.ts +48 -0
- package/dist/utils/limitHeldPromptQueue.d.ts.map +1 -0
- package/dist/utils/limitHeldPromptQueue.js +59 -0
- package/dist/utils/limitHeldPromptQueue.js.map +1 -0
- package/dist/utils/limitHeldPrompts.d.ts +58 -0
- package/dist/utils/limitHeldPrompts.d.ts.map +1 -0
- package/dist/utils/limitHeldPrompts.js +65 -0
- package/dist/utils/limitHeldPrompts.js.map +1 -0
- package/dist/utils/linkPreviewSuppression.d.ts +18 -0
- package/dist/utils/linkPreviewSuppression.d.ts.map +1 -0
- package/dist/utils/linkPreviewSuppression.js +37 -0
- package/dist/utils/linkPreviewSuppression.js.map +1 -0
- package/dist/utils/localClock.d.ts +15 -0
- package/dist/utils/localClock.d.ts.map +1 -0
- package/dist/utils/localClock.js +29 -0
- package/dist/utils/localClock.js.map +1 -0
- package/dist/utils/markdownTableRender.d.ts +83 -0
- package/dist/utils/markdownTableRender.d.ts.map +1 -0
- package/dist/utils/markdownTableRender.js +298 -0
- package/dist/utils/markdownTableRender.js.map +1 -0
- package/dist/utils/mediaGroupCollector.d.ts +51 -0
- package/dist/utils/mediaGroupCollector.d.ts.map +1 -0
- package/dist/utils/mediaGroupCollector.js +90 -0
- package/dist/utils/mediaGroupCollector.js.map +1 -0
- package/dist/utils/messageSendService.d.ts +136 -0
- package/dist/utils/messageSendService.d.ts.map +1 -0
- package/dist/utils/messageSendService.js +165 -0
- package/dist/utils/messageSendService.js.map +1 -0
- package/dist/utils/minutesOverride.d.ts +7 -0
- package/dist/utils/minutesOverride.d.ts.map +1 -0
- package/dist/utils/minutesOverride.js +16 -0
- package/dist/utils/minutesOverride.js.map +1 -0
- package/dist/utils/modelPickerPlan.d.ts +119 -0
- package/dist/utils/modelPickerPlan.d.ts.map +1 -0
- package/dist/utils/modelPickerPlan.js +171 -0
- package/dist/utils/modelPickerPlan.js.map +1 -0
- package/dist/utils/modelSetReplyDecision.d.ts +67 -0
- package/dist/utils/modelSetReplyDecision.d.ts.map +1 -0
- package/dist/utils/modelSetReplyDecision.js +27 -0
- package/dist/utils/modelSetReplyDecision.js.map +1 -0
- package/dist/utils/openCodeAuthLogin.d.ts +181 -0
- package/dist/utils/openCodeAuthLogin.d.ts.map +1 -0
- package/dist/utils/openCodeAuthLogin.js +393 -0
- package/dist/utils/openCodeAuthLogin.js.map +1 -0
- package/dist/utils/openCodeCompactPlugin.d.ts +81 -0
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -0
- package/dist/utils/openCodeCompactPlugin.js +146 -0
- package/dist/utils/openCodeCompactPlugin.js.map +1 -0
- package/dist/utils/openCodeTurnActivity.d.ts +67 -0
- package/dist/utils/openCodeTurnActivity.d.ts.map +1 -0
- package/dist/utils/openCodeTurnActivity.js +27 -0
- package/dist/utils/openCodeTurnActivity.js.map +1 -0
- package/dist/utils/outputDebounce.d.ts +24 -0
- package/dist/utils/outputDebounce.d.ts.map +1 -0
- package/dist/utils/outputDebounce.js +30 -0
- package/dist/utils/outputDebounce.js.map +1 -0
- package/dist/utils/outputFlushTiming.d.ts +54 -0
- package/dist/utils/outputFlushTiming.d.ts.map +1 -0
- package/dist/utils/outputFlushTiming.js +48 -0
- package/dist/utils/outputFlushTiming.js.map +1 -0
- package/dist/utils/paginateList.d.ts +25 -0
- package/dist/utils/paginateList.d.ts.map +1 -0
- package/dist/utils/paginateList.js +32 -0
- package/dist/utils/paginateList.js.map +1 -0
- package/dist/utils/paneDiff.d.ts +55 -0
- package/dist/utils/paneDiff.d.ts.map +1 -0
- package/dist/utils/paneDiff.js +88 -0
- package/dist/utils/paneDiff.js.map +1 -0
- package/dist/utils/paneResizeGuard.d.ts +69 -0
- package/dist/utils/paneResizeGuard.d.ts.map +1 -0
- package/dist/utils/paneResizeGuard.js +91 -0
- package/dist/utils/paneResizeGuard.js.map +1 -0
- package/dist/utils/persistAdapterSessionIds.d.ts +39 -0
- package/dist/utils/persistAdapterSessionIds.d.ts.map +1 -0
- package/dist/utils/persistAdapterSessionIds.js +28 -0
- package/dist/utils/persistAdapterSessionIds.js.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts +44 -0
- package/dist/utils/pinnedBannerSkipDecision.d.ts.map +1 -0
- package/dist/utils/pinnedBannerSkipDecision.js +20 -0
- package/dist/utils/pinnedBannerSkipDecision.js.map +1 -0
- package/dist/utils/pollBackoff.d.ts +45 -0
- package/dist/utils/pollBackoff.d.ts.map +1 -0
- package/dist/utils/pollBackoff.js +44 -0
- package/dist/utils/pollBackoff.js.map +1 -0
- package/dist/utils/promptDelivery.d.ts +46 -0
- package/dist/utils/promptDelivery.d.ts.map +1 -0
- package/dist/utils/promptDelivery.js +49 -0
- package/dist/utils/promptDelivery.js.map +1 -0
- package/dist/utils/providerDisconnectPlan.d.ts +82 -0
- package/dist/utils/providerDisconnectPlan.d.ts.map +1 -0
- package/dist/utils/providerDisconnectPlan.js +110 -0
- package/dist/utils/providerDisconnectPlan.js.map +1 -0
- package/dist/utils/rateLimitLog.d.ts +48 -0
- package/dist/utils/rateLimitLog.d.ts.map +1 -0
- package/dist/utils/rateLimitLog.js +43 -0
- package/dist/utils/rateLimitLog.js.map +1 -0
- package/dist/utils/recentRelayWindow.d.ts +165 -0
- package/dist/utils/recentRelayWindow.d.ts.map +1 -0
- package/dist/utils/recentRelayWindow.js +284 -0
- package/dist/utils/recentRelayWindow.js.map +1 -0
- package/dist/utils/recvPreviewRedaction.d.ts +23 -0
- package/dist/utils/recvPreviewRedaction.d.ts.map +1 -0
- package/dist/utils/recvPreviewRedaction.js +39 -0
- package/dist/utils/recvPreviewRedaction.js.map +1 -0
- package/dist/utils/reminderFlow.d.ts +148 -0
- package/dist/utils/reminderFlow.d.ts.map +1 -0
- package/dist/utils/reminderFlow.js +122 -0
- package/dist/utils/reminderFlow.js.map +1 -0
- package/dist/utils/reminderScheduleText.d.ts +87 -0
- package/dist/utils/reminderScheduleText.d.ts.map +1 -0
- package/dist/utils/reminderScheduleText.js +135 -0
- package/dist/utils/reminderScheduleText.js.map +1 -0
- package/dist/utils/reminderWizard.d.ts +710 -0
- package/dist/utils/reminderWizard.d.ts.map +1 -0
- package/dist/utils/reminderWizard.js +1164 -0
- package/dist/utils/reminderWizard.js.map +1 -0
- package/dist/utils/replyQuote.d.ts +111 -0
- package/dist/utils/replyQuote.d.ts.map +1 -0
- package/dist/utils/replyQuote.js +122 -0
- package/dist/utils/replyQuote.js.map +1 -0
- package/dist/utils/resolveBinary.d.ts +25 -0
- package/dist/utils/resolveBinary.d.ts.map +1 -0
- package/dist/utils/resolveBinary.js +99 -0
- package/dist/utils/resolveBinary.js.map +1 -0
- package/dist/utils/retryAfterHeader.d.ts +7 -0
- package/dist/utils/retryAfterHeader.d.ts.map +1 -0
- package/dist/utils/retryAfterHeader.js +17 -0
- package/dist/utils/retryAfterHeader.js.map +1 -0
- package/dist/utils/rotatingJsonlFile.d.ts +40 -0
- package/dist/utils/rotatingJsonlFile.d.ts.map +1 -0
- package/dist/utils/rotatingJsonlFile.js +106 -0
- package/dist/utils/rotatingJsonlFile.js.map +1 -0
- package/dist/utils/rotatingLogFile.d.ts +25 -0
- package/dist/utils/rotatingLogFile.d.ts.map +1 -0
- package/dist/utils/rotatingLogFile.js +74 -0
- package/dist/utils/rotatingLogFile.js.map +1 -0
- package/dist/utils/sendRateTracker.d.ts +59 -0
- package/dist/utils/sendRateTracker.d.ts.map +1 -0
- package/dist/utils/sendRateTracker.js +144 -0
- package/dist/utils/sendRateTracker.js.map +1 -0
- package/dist/utils/serialQueue.d.ts +5 -0
- package/dist/utils/serialQueue.d.ts.map +1 -0
- package/dist/utils/serialQueue.js +14 -0
- package/dist/utils/serialQueue.js.map +1 -0
- package/dist/utils/sseStreamLifecycle.d.ts +32 -0
- package/dist/utils/sseStreamLifecycle.d.ts.map +1 -0
- package/dist/utils/sseStreamLifecycle.js +41 -0
- package/dist/utils/sseStreamLifecycle.js.map +1 -0
- package/dist/utils/startupReadiness.d.ts +119 -0
- package/dist/utils/startupReadiness.d.ts.map +1 -0
- package/dist/utils/startupReadiness.js +148 -0
- package/dist/utils/startupReadiness.js.map +1 -0
- package/dist/utils/statusFlushDecision.d.ts +18 -0
- package/dist/utils/statusFlushDecision.d.ts.map +1 -0
- package/dist/utils/statusFlushDecision.js +53 -0
- package/dist/utils/statusFlushDecision.js.map +1 -0
- package/dist/utils/subagentRender.d.ts +52 -0
- package/dist/utils/subagentRender.d.ts.map +1 -0
- package/dist/utils/subagentRender.js +66 -0
- package/dist/utils/subagentRender.js.map +1 -0
- package/dist/utils/subagentStatusRender.d.ts +90 -0
- package/dist/utils/subagentStatusRender.d.ts.map +1 -0
- package/dist/utils/subagentStatusRender.js +124 -0
- package/dist/utils/subagentStatusRender.js.map +1 -0
- package/dist/utils/telegramError.d.ts +2 -0
- package/dist/utils/telegramError.d.ts.map +1 -0
- package/dist/utils/telegramError.js +16 -0
- package/dist/utils/telegramError.js.map +1 -0
- package/dist/utils/terminalEmitPlan.d.ts +74 -0
- package/dist/utils/terminalEmitPlan.d.ts.map +1 -0
- package/dist/utils/terminalEmitPlan.js +86 -0
- package/dist/utils/terminalEmitPlan.js.map +1 -0
- package/dist/utils/thinkingRender.d.ts +74 -0
- package/dist/utils/thinkingRender.d.ts.map +1 -0
- package/dist/utils/thinkingRender.js +85 -0
- package/dist/utils/thinkingRender.js.map +1 -0
- package/dist/utils/threadStatusReport.d.ts +55 -0
- package/dist/utils/threadStatusReport.d.ts.map +1 -0
- package/dist/utils/threadStatusReport.js +65 -0
- package/dist/utils/threadStatusReport.js.map +1 -0
- package/dist/utils/threadToggle.d.ts +29 -0
- package/dist/utils/threadToggle.d.ts.map +1 -0
- package/dist/utils/threadToggle.js +39 -0
- package/dist/utils/threadToggle.js.map +1 -0
- package/dist/utils/timezone.d.ts +125 -0
- package/dist/utils/timezone.d.ts.map +1 -0
- package/dist/utils/timezone.js +278 -0
- package/dist/utils/timezone.js.map +1 -0
- package/dist/utils/tmuxExec.d.ts +61 -0
- package/dist/utils/tmuxExec.d.ts.map +1 -0
- package/dist/utils/tmuxExec.js +109 -0
- package/dist/utils/tmuxExec.js.map +1 -0
- package/dist/utils/tmuxSessionName.d.ts +34 -0
- package/dist/utils/tmuxSessionName.d.ts.map +1 -0
- package/dist/utils/tmuxSessionName.js +51 -0
- package/dist/utils/tmuxSessionName.js.map +1 -0
- package/dist/utils/toolResultRender.d.ts +61 -0
- package/dist/utils/toolResultRender.d.ts.map +1 -0
- package/dist/utils/toolResultRender.js +62 -0
- package/dist/utils/toolResultRender.js.map +1 -0
- package/dist/utils/topicRequest.d.ts +61 -0
- package/dist/utils/topicRequest.d.ts.map +1 -0
- package/dist/utils/topicRequest.js +68 -0
- package/dist/utils/topicRequest.js.map +1 -0
- package/dist/utils/topicView.d.ts +55 -0
- package/dist/utils/topicView.d.ts.map +1 -0
- package/dist/utils/topicView.js +56 -0
- package/dist/utils/topicView.js.map +1 -0
- package/dist/utils/transcribeAudio.d.ts +89 -0
- package/dist/utils/transcribeAudio.d.ts.map +1 -0
- package/dist/utils/transcribeAudio.js +249 -0
- package/dist/utils/transcribeAudio.js.map +1 -0
- package/dist/utils/transientFrames.d.ts +52 -0
- package/dist/utils/transientFrames.d.ts.map +1 -0
- package/dist/utils/transientFrames.js +41 -0
- package/dist/utils/transientFrames.js.map +1 -0
- package/dist/utils/typingActive.d.ts +35 -0
- package/dist/utils/typingActive.d.ts.map +1 -0
- package/dist/utils/typingActive.js +22 -0
- package/dist/utils/typingActive.js.map +1 -0
- package/dist/utils/typingLoopBackstop.d.ts +64 -0
- package/dist/utils/typingLoopBackstop.d.ts.map +1 -0
- package/dist/utils/typingLoopBackstop.js +68 -0
- package/dist/utils/typingLoopBackstop.js.map +1 -0
- package/dist/utils/verbosityRender.d.ts +18 -0
- package/dist/utils/verbosityRender.d.ts.map +1 -0
- package/dist/utils/verbosityRender.js +17 -0
- package/dist/utils/verbosityRender.js.map +1 -0
- package/dist/utils/wedgeRecovery.d.ts +57 -0
- package/dist/utils/wedgeRecovery.d.ts.map +1 -0
- package/dist/utils/wedgeRecovery.js +24 -0
- package/dist/utils/wedgeRecovery.js.map +1 -0
- package/dist/utils.d.ts +30 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +61 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.d.ts +113 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +226 -0
- package/dist/validation.js.map +1 -0
- package/dist/voiceQueue.d.ts +7 -0
- package/dist/voiceQueue.d.ts.map +1 -0
- package/dist/voiceQueue.js +33 -0
- package/dist/voiceQueue.js.map +1 -0
- package/examples/.env.example +17 -0
- package/examples/docker-compose.yml +36 -0
- package/package.json +83 -4
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description Derive a human-readable title for a Claude session from its
|
|
4
|
+
* stored user prompts, so the `/sessions` picker shows the session's TOPIC
|
|
5
|
+
* instead of noise.
|
|
6
|
+
*
|
|
7
|
+
* Why this exists: current Claude Code (2.1.201) no longer writes the
|
|
8
|
+
* LLM-generated `type:"summary"` line the old picker relied on, so
|
|
9
|
+
* {@link listClaudeSessionsForWorkDir} always fell back to the LAST stored
|
|
10
|
+
* prompt — which for bot-driven sessions is almost always garbage (the
|
|
11
|
+
* `[Telegram thread context]` preamble, a `/effort` command echo, a
|
|
12
|
+
* `<task-notification>`, or a bare `yes`/`commit`/`...`). We instead pick the
|
|
13
|
+
* FIRST *meaningful* prompt: preamble/marker stripped, tooling noise skipped.
|
|
14
|
+
*
|
|
15
|
+
* Pure (string-in, string-out) so it is unit-tested in isolation.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.getSessionTitleLine = getSessionTitleLine;
|
|
19
|
+
exports.getSessionTitleCandidate = getSessionTitleCandidate;
|
|
20
|
+
const threadContextPreamble_1 = require("../threadContextPreamble");
|
|
21
|
+
/**
|
|
22
|
+
* @description Leading `[Scheduled run "<name>"]` marker a scheduled run glues
|
|
23
|
+
* ahead of its prompt (see `scheduler/delivery.ts`). Anchored + single `\n`,
|
|
24
|
+
* matching how it is written.
|
|
25
|
+
*/
|
|
26
|
+
const scheduledRunMarkerRe = /^\[Scheduled run "[^"]*"\]\n/;
|
|
27
|
+
/**
|
|
28
|
+
* @description Prompt prefixes that mark a stored user turn as bot/tooling
|
|
29
|
+
* plumbing rather than a real topic — never a session title. Matched after the
|
|
30
|
+
* preamble/marker is stripped and whitespace collapsed.
|
|
31
|
+
*/
|
|
32
|
+
const noisePromptPrefixes = [
|
|
33
|
+
'[Telegram thread context]', // a preamble with no prompt after it (strip failed)
|
|
34
|
+
'[Telegram file]',
|
|
35
|
+
'[Telegram album]',
|
|
36
|
+
'[Request interrupted',
|
|
37
|
+
'<local-command-', // stdout / stderr / caveat wrappers around a slash command
|
|
38
|
+
'<command-',
|
|
39
|
+
'<task-notification>',
|
|
40
|
+
'<system-reminder>',
|
|
41
|
+
'<tool-use-',
|
|
42
|
+
'Base directory for this skill:',
|
|
43
|
+
'Caveat: The messages below',
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* @description Whole-prompt values that are follow-up chatter, never a topic:
|
|
47
|
+
* bare affirmations / short control words (RU + EN) and the "continue" dots.
|
|
48
|
+
*/
|
|
49
|
+
const noiseExactPrompts = new Set([
|
|
50
|
+
'...', '..', '.', 'yes', 'no', 'ok', 'okay', 'y', 'n', 'go', 'go ahead',
|
|
51
|
+
'да', 'нет', 'ага', 'угу', 'давай', 'да, давай', 'да, давай.',
|
|
52
|
+
'commit', 'commit.', 'push', 'пуш', 'коммить', 'коммит', 'обнови my',
|
|
53
|
+
]);
|
|
54
|
+
/** Effort / model slash-command stdout that lost its `<local-command-*>` wrapper. */
|
|
55
|
+
const commandEchoRe = /^set (effort level|model) /i;
|
|
56
|
+
/**
|
|
57
|
+
* @description Strip the bot's service wrappers (thread-context preamble first —
|
|
58
|
+
* it is the outermost, then the scheduled-run marker) off a stored prompt and
|
|
59
|
+
* collapse it to a single display line. No noise filtering — the raw topic line.
|
|
60
|
+
*/
|
|
61
|
+
function getSessionTitleLine(rawPrompt) {
|
|
62
|
+
let text = rawPrompt.trim();
|
|
63
|
+
text = (0, threadContextPreamble_1.stripThreadContextPreamble)(text);
|
|
64
|
+
text = text.replace(scheduledRunMarkerRe, '');
|
|
65
|
+
return text.replace(/\s+/g, ' ').trim();
|
|
66
|
+
}
|
|
67
|
+
/** @description Whether a stripped single-line prompt is tooling noise, not a topic. */
|
|
68
|
+
function checkIsNoisePrompt(line) {
|
|
69
|
+
const lower = line.toLowerCase();
|
|
70
|
+
if (noiseExactPrompts.has(lower))
|
|
71
|
+
return true;
|
|
72
|
+
if (/^\.+$/.test(line))
|
|
73
|
+
return true; // pure dots ("continue" signal)
|
|
74
|
+
if (commandEchoRe.test(line))
|
|
75
|
+
return true;
|
|
76
|
+
return noisePromptPrefixes.some(prefix => line.startsWith(prefix));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @description A session-title candidate from ONE stored prompt: the stripped
|
|
80
|
+
* single-line topic, or `null` when the prompt is empty or tooling noise.
|
|
81
|
+
*/
|
|
82
|
+
function getSessionTitleCandidate(rawPrompt) {
|
|
83
|
+
const line = getSessionTitleLine(rawPrompt);
|
|
84
|
+
if (!line)
|
|
85
|
+
return null;
|
|
86
|
+
if (checkIsNoisePrompt(line))
|
|
87
|
+
return null;
|
|
88
|
+
return line;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=claudeSessionTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeSessionTitle.js","sourceRoot":"","sources":["../../src/utils/claudeSessionTitle.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAgDH,kDAKC;AAeD,4DAKC;AAvED,oEAAsE;AAEtE;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAE5D;;;;GAIG;AACH,MAAM,mBAAmB,GAAG;IAC1B,2BAA2B,EAAE,oDAAoD;IACjF,iBAAiB;IACjB,kBAAkB;IAClB,sBAAsB;IACtB,iBAAiB,EAAE,2DAA2D;IAC9E,WAAW;IACX,qBAAqB;IACrB,mBAAmB;IACnB,YAAY;IACZ,gCAAgC;IAChC,4BAA4B;CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU;IACvE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY;IAC7D,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW;CACrE,CAAC,CAAC;AAEH,qFAAqF;AACrF,MAAM,aAAa,GAAG,6BAA6B,CAAC;AAEpD;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,SAAiB;IACnD,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,GAAG,IAAA,kDAA0B,EAAC,IAAI,CAAC,CAAC;IACxC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,wFAAwF;AACxF,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,gCAAgC;IACrE,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,SAAiB;IACxD,MAAM,IAAI,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,kBAAkB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pure parser for the `claude` CLI's
|
|
3
|
+
* `--output-format stream-json` protocol (the `claude-json-stream` adapter's
|
|
4
|
+
* event core). Kept dependency-free and side-effect-free so it is unit-testable
|
|
5
|
+
* against REAL captured stream-json samples (see `claudeStreamJson.test.ts`):
|
|
6
|
+
* the adapter feeds every stdout chunk through {@link ClaudeStreamLineReader}
|
|
7
|
+
* (partial-line buffering across chunks) and each complete line through
|
|
8
|
+
* {@link classifyClaudeStreamMessage}, which maps ONE stream-json message to a
|
|
9
|
+
* list of backend-neutral {@link ClaudeStreamAction}s the adapter then turns
|
|
10
|
+
* into `AgentAdapter` events.
|
|
11
|
+
*
|
|
12
|
+
* The wire format was reverse-engineered from a live `claude -p
|
|
13
|
+
* --input-format stream-json --output-format stream-json` run (v2.1.201) and
|
|
14
|
+
* cross-read against `@anthropic-ai/claude-agent-sdk` `sdk.d.ts` /`sdk.mjs`.
|
|
15
|
+
* Every event type below is backed by a captured sample.
|
|
16
|
+
*/
|
|
17
|
+
/** Narrow an untyped `JSON.parse` result to a plain object (parse-boundary
|
|
18
|
+
* pattern for untrusted process output; mirrors `checkIsRecord` elsewhere). */
|
|
19
|
+
export declare function checkIsStreamRecord(value: unknown): value is Record<string, unknown>;
|
|
20
|
+
/**
|
|
21
|
+
* @description Newline-delimited-JSON reader with partial-line buffering. The
|
|
22
|
+
* CLI writes one JSON object per line, but a stdout chunk can split a line at
|
|
23
|
+
* any byte (a mid-line truncation), so a naive `chunk.split('\n')` would try to
|
|
24
|
+
* `JSON.parse` half a line. {@link push} returns only the COMPLETE lines seen so
|
|
25
|
+
* far and retains the trailing partial in {@link buffer} until its newline
|
|
26
|
+
* arrives in a later chunk.
|
|
27
|
+
*/
|
|
28
|
+
export declare class ClaudeStreamLineReader {
|
|
29
|
+
private buffer;
|
|
30
|
+
/** Feed a stdout chunk; return every complete (newline-terminated) line it
|
|
31
|
+
* completed, retaining any trailing partial for the next call. Blank lines
|
|
32
|
+
* are dropped. */
|
|
33
|
+
push(chunk: string): string[];
|
|
34
|
+
/** Any buffered, not-yet-terminated content (diagnostic only). */
|
|
35
|
+
get pending(): string;
|
|
36
|
+
}
|
|
37
|
+
/** Parse one NDJSON line to a record, or `null` for blank / malformed
|
|
38
|
+
* (a torn line that slipped past the reader) — never throws. */
|
|
39
|
+
export declare function parseStreamJsonLine(line: string): Record<string, unknown> | null;
|
|
40
|
+
/**
|
|
41
|
+
* @description Backend-neutral action produced from ONE stream-json message.
|
|
42
|
+
* The adapter turns these into `AgentAdapter` events (accumulation / debounce /
|
|
43
|
+
* control-channel handling stay in the adapter; classification stays pure here).
|
|
44
|
+
*/
|
|
45
|
+
export type ClaudeStreamAction =
|
|
46
|
+
/** `system/init` — the session is up (first one carries the authoritative id).
|
|
47
|
+
* `claudeCodeVersion` is the CLI's own version (`claude_code_version`) — the
|
|
48
|
+
* auto-stop gate reads it (`utils/claudeCodeVersion.ts`). */
|
|
49
|
+
{
|
|
50
|
+
kind: 'init';
|
|
51
|
+
sessionId: string | null;
|
|
52
|
+
model: string | null;
|
|
53
|
+
apiKeySource: string | null;
|
|
54
|
+
claudeCodeVersion: string | null;
|
|
55
|
+
}
|
|
56
|
+
/** A streamed answer-text delta (`content_block_delta` `text_delta`). */
|
|
57
|
+
| {
|
|
58
|
+
kind: 'textDelta';
|
|
59
|
+
text: string;
|
|
60
|
+
isSubagent: boolean;
|
|
61
|
+
}
|
|
62
|
+
/** A streamed reasoning delta (`content_block_delta` `thinking_delta`). */
|
|
63
|
+
| {
|
|
64
|
+
kind: 'thinkingDelta';
|
|
65
|
+
text: string;
|
|
66
|
+
isSubagent: boolean;
|
|
67
|
+
}
|
|
68
|
+
/** A settled assistant `tool_use` block → drives the transient tool status. */
|
|
69
|
+
| {
|
|
70
|
+
kind: 'toolUse';
|
|
71
|
+
tool: string;
|
|
72
|
+
toolUseId: string;
|
|
73
|
+
isSubagent: boolean;
|
|
74
|
+
}
|
|
75
|
+
/** A `tool_result` fed back in a `user` message → the `toolResult` event. */
|
|
76
|
+
| {
|
|
77
|
+
kind: 'toolResult';
|
|
78
|
+
toolUseId: string;
|
|
79
|
+
output: string;
|
|
80
|
+
isSubagent: boolean;
|
|
81
|
+
}
|
|
82
|
+
/** The turn ended (`result`); `resultText` is the final answer text; `usage`
|
|
83
|
+
* is the turn's token accounting (`null` when the frame carries none). */
|
|
84
|
+
| {
|
|
85
|
+
kind: 'turnEnd';
|
|
86
|
+
isError: boolean;
|
|
87
|
+
errorText: string | null;
|
|
88
|
+
resultText: string | null;
|
|
89
|
+
usage: ClaudeTurnUsage | null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* `system/background_tasks_changed` — the CLI's CURRENT list of background
|
|
93
|
+
* tasks (a background Bash / Monitor = `local_bash`, a background sub-agent =
|
|
94
|
+
* `local_agent`), re-sent whole on every change; an empty list means nothing
|
|
95
|
+
* runs in the background. A finished task starts its own turn
|
|
96
|
+
* (`task_notification`). Probed on Claude Code 2.1.287 — older CLIs never emit
|
|
97
|
+
* it, which is why auto-stop is gated on the version.
|
|
98
|
+
*/
|
|
99
|
+
| {
|
|
100
|
+
kind: 'backgroundTasks';
|
|
101
|
+
taskIds: string[];
|
|
102
|
+
}
|
|
103
|
+
/** A control_request off stdout (permission / AskUserQuestion / dialog). */
|
|
104
|
+
| {
|
|
105
|
+
kind: 'controlRequest';
|
|
106
|
+
requestId: string;
|
|
107
|
+
subtype: string;
|
|
108
|
+
toolName?: string;
|
|
109
|
+
input?: Record<string, unknown>;
|
|
110
|
+
toolUseId?: string;
|
|
111
|
+
dialogKind?: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A control_response off stdout — the CLI's reply to a control_request the BOT
|
|
115
|
+
* wrote (the `initialize` handshake, the MCP `mcp_status` / `mcp_reconnect`
|
|
116
|
+
* round-trips). `payload` is the INNER `response` record, present only for a
|
|
117
|
+
* data-returning subtype. (The adapter also WRITES frames of this type to
|
|
118
|
+
* stdin when answering a `can_use_tool`; that is an unrelated write path.)
|
|
119
|
+
*/
|
|
120
|
+
| {
|
|
121
|
+
kind: 'controlResponse';
|
|
122
|
+
requestId: string;
|
|
123
|
+
isSuccess: boolean;
|
|
124
|
+
payload: Record<string, unknown> | null;
|
|
125
|
+
}
|
|
126
|
+
/** `system/status` carrying a `/compact` outcome (`compact_result` /
|
|
127
|
+
* `compact_error`) — how the json-stream backend confirms a compaction ran. */
|
|
128
|
+
| {
|
|
129
|
+
kind: 'compactStatus';
|
|
130
|
+
result: string | null;
|
|
131
|
+
error: string | null;
|
|
132
|
+
}
|
|
133
|
+
/** `system/compact_boundary` — a completed compaction; `compact_metadata`
|
|
134
|
+
* carries `trigger` (manual/auto) and pre/post token counts. */
|
|
135
|
+
| {
|
|
136
|
+
kind: 'compactBoundary';
|
|
137
|
+
trigger: string | null;
|
|
138
|
+
preTokens: number | null;
|
|
139
|
+
postTokens: number | null;
|
|
140
|
+
}
|
|
141
|
+
/** `system/api_retry` — a provider retry the CLI is performing. */
|
|
142
|
+
| {
|
|
143
|
+
kind: 'apiRetry';
|
|
144
|
+
text: string;
|
|
145
|
+
}
|
|
146
|
+
/** `rate_limit_event` — subscription usage window signal (billing proof). */
|
|
147
|
+
| {
|
|
148
|
+
kind: 'rateLimit';
|
|
149
|
+
rateLimitType: string | null;
|
|
150
|
+
utilization: number | null;
|
|
151
|
+
}
|
|
152
|
+
/** `--replay-user-messages` echo of a message the BOT wrote — the input-ack
|
|
153
|
+
* signal (see {@link checkIsOwnInputEcho} for the user lines that are not). */
|
|
154
|
+
| {
|
|
155
|
+
kind: 'userEcho';
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* @description The token accounting of one turn, from `result.usage` — or, when
|
|
159
|
+
* that is all zero, the sum of the result's per-model `modelUsage` entries: a
|
|
160
|
+
* `/compact` turn's result reports its summary call only there (probe
|
|
161
|
+
* 2026-10-05). The cache fields are the cross-process prompt-cache proof: a
|
|
162
|
+
* resumed process whose `cacheReadTokens` covers the context read the previous
|
|
163
|
+
* process's cache.
|
|
164
|
+
*/
|
|
165
|
+
export interface ClaudeTurnUsage {
|
|
166
|
+
inputTokens: number;
|
|
167
|
+
cacheReadTokens: number;
|
|
168
|
+
cacheWriteTokens: number;
|
|
169
|
+
outputTokens: number;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* @description Map ONE parsed stream-json message to zero or more
|
|
173
|
+
* {@link ClaudeStreamAction}s. Pure: no accumulation, no timers, no IO. An
|
|
174
|
+
* unrecognized / uninteresting message (status, thinking_tokens, message_start,
|
|
175
|
+
* content_block_start/stop, …) yields `[]`.
|
|
176
|
+
*/
|
|
177
|
+
export declare function classifyClaudeStreamMessage(msg: Record<string, unknown>): ClaudeStreamAction[];
|
|
178
|
+
/** The `response` payload of a `can_use_tool` control_response (allow / deny). */
|
|
179
|
+
export type CanUseToolResponse = {
|
|
180
|
+
behavior: 'allow';
|
|
181
|
+
updatedInput: Record<string, unknown>;
|
|
182
|
+
toolUseID?: string;
|
|
183
|
+
} | {
|
|
184
|
+
behavior: 'deny';
|
|
185
|
+
message: string;
|
|
186
|
+
toolUseID?: string;
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* @description Build the `allow` body of a `can_use_tool` control_response.
|
|
190
|
+
*
|
|
191
|
+
* The CLI's control-response schema REQUIRES `updatedInput` to be a record on an
|
|
192
|
+
* allow — omit it and the CLI rejects the whole response ("Tool permission
|
|
193
|
+
* request failed: ZodError"), which silently blocks the tool it was meant to
|
|
194
|
+
* permit. This builder makes that field impossible to forget: `input` is echoed
|
|
195
|
+
* unchanged (`{}` when the request carried none). Used for the generic auto-allow
|
|
196
|
+
* of ordinary tools and for the empty-question fast-path.
|
|
197
|
+
*/
|
|
198
|
+
export declare function buildCanUseToolAllow(input: Record<string, unknown> | undefined, toolUseId: string | undefined): CanUseToolResponse;
|
|
199
|
+
/** Build the `deny` body of a `can_use_tool` control_response (schema requires
|
|
200
|
+
* `message`). Used when the user declines / abandons an AskUserQuestion. */
|
|
201
|
+
export declare function buildCanUseToolDeny(message: string, toolUseId: string | undefined): CanUseToolResponse;
|
|
202
|
+
//# sourceMappingURL=claudeStreamJson.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeStreamJson.d.ts","sourceRoot":"","sources":["../../src/utils/claudeStreamJson.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;gFACgF;AAChF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEpF;AAED;;;;;;;GAOG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAM;IAEpB;;uBAEmB;IACnB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAY7B,kEAAkE;IAClE,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF;AAED;iEACiE;AACjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAUhF;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB;AAC5B;;8DAE8D;AAC5D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AACjI,yEAAyE;GACvE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE;AAC1D,2EAA2E;GACzE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE;AAC9D,+EAA+E;GAC7E;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE;AAC3E,6EAA6E;GAC3E;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE;AAChF;2EAC2E;GACzE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE;AAC3H;;;;;;;GAOG;GACD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE;AAChD,4EAA4E;GAC1E;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AACH;;;;;;GAMG;GACD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAAE;AAC7G;gFACgF;GAC9E;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AACxE;iEACiE;GAC/D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AAC1G,mEAAmE;GACjE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACpC,6EAA6E;GAC3E;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AACjF;gFACgF;GAC9E;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAoBzB;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAkFD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,EAAE,CA+I9F;AAED,kFAAkF;AAClF,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAChF;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,kBAAkB,CAIlI;AAED;6EAC6E;AAC7E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,kBAAkB,CAItG"}
|
|
@@ -0,0 +1,351 @@
|
|
|
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
|
+
return [{
|
|
227
|
+
kind: 'rateLimit',
|
|
228
|
+
rateLimitType: readString(info, 'rateLimitType'),
|
|
229
|
+
utilization: typeof info.utilization === 'number' ? info.utilization : null,
|
|
230
|
+
}];
|
|
231
|
+
}
|
|
232
|
+
if (type === 'stream_event') {
|
|
233
|
+
const event = checkIsStreamRecord(msg.event) ? msg.event : null;
|
|
234
|
+
if (!event || event.type !== 'content_block_delta')
|
|
235
|
+
return [];
|
|
236
|
+
const delta = checkIsStreamRecord(event.delta) ? event.delta : null;
|
|
237
|
+
if (!delta)
|
|
238
|
+
return [];
|
|
239
|
+
if (delta.type === 'text_delta' && typeof delta.text === 'string') {
|
|
240
|
+
return delta.text ? [{ kind: 'textDelta', text: delta.text, isSubagent }] : [];
|
|
241
|
+
}
|
|
242
|
+
if (delta.type === 'thinking_delta' && typeof delta.thinking === 'string') {
|
|
243
|
+
return delta.thinking ? [{ kind: 'thinkingDelta', text: delta.thinking, isSubagent }] : [];
|
|
244
|
+
}
|
|
245
|
+
return [];
|
|
246
|
+
}
|
|
247
|
+
if (type === 'assistant') {
|
|
248
|
+
// The settled assistant message. Text/thinking already streamed via deltas;
|
|
249
|
+
// here we only surface tool_use blocks (transient tool status).
|
|
250
|
+
const message = checkIsStreamRecord(msg.message) ? msg.message : null;
|
|
251
|
+
const content = message && Array.isArray(message.content) ? message.content : [];
|
|
252
|
+
const actions = [];
|
|
253
|
+
for (const block of content) {
|
|
254
|
+
if (!checkIsStreamRecord(block))
|
|
255
|
+
continue;
|
|
256
|
+
if (block.type === 'tool_use' && typeof block.name === 'string' && typeof block.id === 'string') {
|
|
257
|
+
actions.push({ kind: 'toolUse', tool: block.name, toolUseId: block.id, isSubagent });
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return actions;
|
|
261
|
+
}
|
|
262
|
+
if (type === 'user') {
|
|
263
|
+
// Either a `--replay-user-messages` echo OR a tool_result fed back to the model.
|
|
264
|
+
const message = checkIsStreamRecord(msg.message) ? msg.message : null;
|
|
265
|
+
const content = message ? message.content : undefined;
|
|
266
|
+
if (Array.isArray(content)) {
|
|
267
|
+
const actions = [];
|
|
268
|
+
for (const block of content) {
|
|
269
|
+
if (checkIsStreamRecord(block) && block.type === 'tool_result' && typeof block.tool_use_id === 'string') {
|
|
270
|
+
actions.push({ kind: 'toolResult', toolUseId: block.tool_use_id, output: extractToolResultOutput(block.content), isSubagent });
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
if (actions.length > 0)
|
|
274
|
+
return actions;
|
|
275
|
+
}
|
|
276
|
+
return checkIsOwnInputEcho(msg) ? [{ kind: 'userEcho' }] : [];
|
|
277
|
+
}
|
|
278
|
+
if (type === 'result') {
|
|
279
|
+
return [{
|
|
280
|
+
kind: 'turnEnd',
|
|
281
|
+
isError: msg.is_error === true,
|
|
282
|
+
errorText: readString(msg, 'api_error_status') ?? (msg.is_error === true ? (readString(msg, 'result') ?? 'API error') : null),
|
|
283
|
+
resultText: readString(msg, 'result'),
|
|
284
|
+
usage: readTurnUsage(msg.usage, msg.modelUsage),
|
|
285
|
+
}];
|
|
286
|
+
}
|
|
287
|
+
if (type === 'control_request') {
|
|
288
|
+
const request = checkIsStreamRecord(msg.request) ? msg.request : null;
|
|
289
|
+
const requestId = readString(msg, 'request_id');
|
|
290
|
+
const subtype = request ? readString(request, 'subtype') : null;
|
|
291
|
+
if (!request || !requestId || !subtype)
|
|
292
|
+
return [];
|
|
293
|
+
const action = { kind: 'controlRequest', requestId, subtype };
|
|
294
|
+
const toolName = readString(request, 'tool_name');
|
|
295
|
+
if (toolName)
|
|
296
|
+
action.toolName = toolName;
|
|
297
|
+
if (checkIsStreamRecord(request.input))
|
|
298
|
+
action.input = request.input;
|
|
299
|
+
const toolUseId = readString(request, 'tool_use_id');
|
|
300
|
+
if (toolUseId)
|
|
301
|
+
action.toolUseId = toolUseId;
|
|
302
|
+
const dialogKind = readString(request, 'dialog_kind');
|
|
303
|
+
if (dialogKind)
|
|
304
|
+
action.dialogKind = dialogKind;
|
|
305
|
+
return [action];
|
|
306
|
+
}
|
|
307
|
+
if (type === 'control_response') {
|
|
308
|
+
// Measured shape: `{response:{subtype:'success'|'error', request_id,
|
|
309
|
+
// response?:{…}}}` — the OUTER `response` carries the verdict + the id to
|
|
310
|
+
// match, the INNER one the returned record (present for `mcp_status`,
|
|
311
|
+
// ABSENT for a plain `mcp_reconnect` ack). Without a `request_id` the frame
|
|
312
|
+
// cannot be matched to the request it answers, so it is not actionable —
|
|
313
|
+
// same defensive rule as the `control_request` branch above.
|
|
314
|
+
const response = checkIsStreamRecord(msg.response) ? msg.response : null;
|
|
315
|
+
const requestId = response ? readString(response, 'request_id') : null;
|
|
316
|
+
if (!response || !requestId)
|
|
317
|
+
return [];
|
|
318
|
+
return [{
|
|
319
|
+
kind: 'controlResponse',
|
|
320
|
+
requestId,
|
|
321
|
+
isSuccess: readString(response, 'subtype') === 'success',
|
|
322
|
+
payload: checkIsStreamRecord(response.response) ? response.response : null,
|
|
323
|
+
}];
|
|
324
|
+
}
|
|
325
|
+
return [];
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* @description Build the `allow` body of a `can_use_tool` control_response.
|
|
329
|
+
*
|
|
330
|
+
* The CLI's control-response schema REQUIRES `updatedInput` to be a record on an
|
|
331
|
+
* allow — omit it and the CLI rejects the whole response ("Tool permission
|
|
332
|
+
* request failed: ZodError"), which silently blocks the tool it was meant to
|
|
333
|
+
* permit. This builder makes that field impossible to forget: `input` is echoed
|
|
334
|
+
* unchanged (`{}` when the request carried none). Used for the generic auto-allow
|
|
335
|
+
* of ordinary tools and for the empty-question fast-path.
|
|
336
|
+
*/
|
|
337
|
+
function buildCanUseToolAllow(input, toolUseId) {
|
|
338
|
+
const response = { behavior: 'allow', updatedInput: input ?? {} };
|
|
339
|
+
if (toolUseId)
|
|
340
|
+
response.toolUseID = toolUseId;
|
|
341
|
+
return response;
|
|
342
|
+
}
|
|
343
|
+
/** Build the `deny` body of a `can_use_tool` control_response (schema requires
|
|
344
|
+
* `message`). Used when the user declines / abandons an AskUserQuestion. */
|
|
345
|
+
function buildCanUseToolDeny(message, toolUseId) {
|
|
346
|
+
const response = { behavior: 'deny', message };
|
|
347
|
+
if (toolUseId)
|
|
348
|
+
response.toolUseID = toolUseId;
|
|
349
|
+
return response;
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=claudeStreamJson.js.map
|