charness 3.1.0 โ 3.3.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 +11 -13
- package/DEVELOPMENT.md +27 -6
- package/MIGRATION_1_TO_2.md +1 -1
- package/MIGRATION_RENAME_TO_CHARNESS.md +133 -0
- package/README.md +185 -618
- package/SETUP.md +644 -0
- package/dist/adapters/adapterEventRouting.d.ts +2 -1
- package/dist/adapters/adapterEventRouting.d.ts.map +1 -1
- package/dist/adapters/adapterEventRouting.js +3 -0
- package/dist/adapters/adapterEventRouting.js.map +1 -1
- package/dist/adapters/adapterNames.d.ts +13 -0
- package/dist/adapters/adapterNames.d.ts.map +1 -1
- package/dist/adapters/adapterNames.js +16 -0
- package/dist/adapters/adapterNames.js.map +1 -1
- package/dist/adapters/backendUnavailableError.d.ts +11 -0
- package/dist/adapters/backendUnavailableError.d.ts.map +1 -0
- package/dist/adapters/backendUnavailableError.js +19 -0
- package/dist/adapters/backendUnavailableError.js.map +1 -0
- package/dist/adapters/claudeCliAdapter.d.ts +30 -7
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -1
- package/dist/adapters/claudeCliAdapter.js +71 -17
- package/dist/adapters/claudeCliAdapter.js.map +1 -1
- package/dist/adapters/claudeJsonStreamAdapter.d.ts +36 -3
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -1
- package/dist/adapters/claudeJsonStreamAdapter.js +95 -31
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -1
- package/dist/adapters/createAdapter.d.ts +3 -14
- package/dist/adapters/createAdapter.d.ts.map +1 -1
- package/dist/adapters/createAdapter.js +9 -19
- package/dist/adapters/createAdapter.js.map +1 -1
- package/dist/adapters/openCodeAdapter.d.ts +140 -12
- package/dist/adapters/openCodeAdapter.d.ts.map +1 -1
- package/dist/adapters/openCodeAdapter.js +386 -120
- package/dist/adapters/openCodeAdapter.js.map +1 -1
- package/dist/apiErrorRetry.d.ts +70 -6
- package/dist/apiErrorRetry.d.ts.map +1 -1
- package/dist/apiErrorRetry.js +312 -34
- package/dist/apiErrorRetry.js.map +1 -1
- package/dist/apiRetryKick.d.ts +26 -1
- package/dist/apiRetryKick.d.ts.map +1 -1
- package/dist/apiRetryKick.js +41 -2
- package/dist/apiRetryKick.js.map +1 -1
- package/dist/bot.d.ts +2 -1
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +743 -190
- package/dist/bot.js.map +1 -1
- package/dist/cli/bot.d.ts +4 -2
- package/dist/cli/bot.d.ts.map +1 -1
- package/dist/cli/bot.js +11 -3
- package/dist/cli/bot.js.map +1 -1
- package/dist/cli/botEntry.js +3 -1
- package/dist/cli/botEntry.js.map +1 -1
- package/dist/cli/claudeProfiles.d.ts +4 -4
- package/dist/cli/claudeProfiles.js +5 -5
- package/dist/cli/claudeProfiles.js.map +1 -1
- package/dist/cli/envLoader.d.ts +6 -5
- package/dist/cli/envLoader.d.ts.map +1 -1
- package/dist/cli/envLoader.js +8 -27
- package/dist/cli/envLoader.js.map +1 -1
- package/dist/cli/hot.d.ts +9 -3
- package/dist/cli/hot.d.ts.map +1 -1
- package/dist/cli/hot.js +55 -19
- package/dist/cli/hot.js.map +1 -1
- package/dist/cli.js +12 -12
- package/dist/cli.js.map +1 -1
- package/dist/configDirFile.d.ts +73 -0
- package/dist/configDirFile.d.ts.map +1 -0
- package/dist/configDirFile.js +216 -0
- package/dist/configDirFile.js.map +1 -0
- package/dist/connectors/jira/adf.d.ts +21 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -1
- package/dist/connectors/jira/adf.js +39 -0
- package/dist/connectors/jira/adf.js.map +1 -1
- package/dist/connectors/jira/answerSink.d.ts +20 -3
- package/dist/connectors/jira/answerSink.d.ts.map +1 -1
- package/dist/connectors/jira/answerSink.js +126 -13
- package/dist/connectors/jira/answerSink.js.map +1 -1
- package/dist/connectors/jira/client.d.ts +4 -0
- package/dist/connectors/jira/client.d.ts.map +1 -1
- package/dist/connectors/jira/client.js +3 -0
- package/dist/connectors/jira/client.js.map +1 -1
- package/dist/connectors/jira/config.d.ts +10 -1
- package/dist/connectors/jira/config.d.ts.map +1 -1
- package/dist/connectors/jira/config.js +11 -2
- package/dist/connectors/jira/config.js.map +1 -1
- package/dist/connectors/jira/connector.d.ts +7 -1
- package/dist/connectors/jira/connector.d.ts.map +1 -1
- package/dist/connectors/jira/connector.js +23 -4
- package/dist/connectors/jira/connector.js.map +1 -1
- package/dist/connectors/jira/contextLedger.d.ts +6 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -1
- package/dist/connectors/jira/contextLedger.js +16 -0
- package/dist/connectors/jira/contextLedger.js.map +1 -1
- package/dist/connectors/jira/contextPreamble.d.ts.map +1 -1
- package/dist/connectors/jira/contextPreamble.js +6 -3
- package/dist/connectors/jira/contextPreamble.js.map +1 -1
- package/dist/connectors/jira/inbound.d.ts +60 -7
- package/dist/connectors/jira/inbound.d.ts.map +1 -1
- package/dist/connectors/jira/inbound.js +169 -16
- package/dist/connectors/jira/inbound.js.map +1 -1
- package/dist/connectors/jira/issueBlocks.d.ts +6 -1
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -1
- package/dist/connectors/jira/issueBlocks.js +5 -1
- package/dist/connectors/jira/issueBlocks.js.map +1 -1
- package/dist/connectors/jira/prompt.d.ts +2 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -1
- package/dist/connectors/jira/prompt.js +16 -0
- package/dist/connectors/jira/prompt.js.map +1 -1
- package/dist/connectors/jira/trigger.d.ts +12 -3
- package/dist/connectors/jira/trigger.d.ts.map +1 -1
- package/dist/connectors/jira/trigger.js +8 -1
- package/dist/connectors/jira/trigger.js.map +1 -1
- package/dist/connectors/jira/triggerLog.d.ts +10 -3
- package/dist/connectors/jira/triggerLog.d.ts.map +1 -1
- package/dist/connectors/jira/triggerLog.js +18 -2
- package/dist/connectors/jira/triggerLog.js.map +1 -1
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts +2 -2
- package/dist/connectors/telegram/commands/autoContinueLimits.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/autoContinueLimits.js +4 -4
- package/dist/connectors/telegram/commands/autoContinueLimits.js.map +1 -1
- package/dist/connectors/telegram/commands/backendSwitch.d.ts +25 -0
- package/dist/connectors/telegram/commands/backendSwitch.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/backendSwitch.js +104 -0
- package/dist/connectors/telegram/commands/backendSwitch.js.map +1 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts +12 -0
- package/dist/connectors/telegram/commands/callbackMessage.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/callbackMessage.js +24 -0
- package/dist/connectors/telegram/commands/callbackMessage.js.map +1 -1
- package/dist/connectors/telegram/commands/callbackToast.d.ts +36 -0
- package/dist/connectors/telegram/commands/callbackToast.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/callbackToast.js +83 -0
- package/dist/connectors/telegram/commands/callbackToast.js.map +1 -0
- package/dist/connectors/telegram/commands/claudeAccounts.d.ts +18 -0
- package/dist/connectors/telegram/commands/claudeAccounts.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/claudeAccounts.js +220 -66
- package/dist/connectors/telegram/commands/claudeAccounts.js.map +1 -1
- package/dist/connectors/telegram/commands/displayModes.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/displayModes.js +4 -2
- package/dist/connectors/telegram/commands/displayModes.js.map +1 -1
- package/dist/connectors/telegram/commands/fallbackChain.d.ts +5 -8
- package/dist/connectors/telegram/commands/fallbackChain.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/fallbackChain.js +183 -193
- package/dist/connectors/telegram/commands/fallbackChain.js.map +1 -1
- package/dist/connectors/telegram/commands/limitsBoard.d.ts +40 -0
- package/dist/connectors/telegram/commands/limitsBoard.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/limitsBoard.js +281 -0
- package/dist/connectors/telegram/commands/limitsBoard.js.map +1 -0
- package/dist/connectors/telegram/commands/modelPage.d.ts +130 -0
- package/dist/connectors/telegram/commands/modelPage.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/modelPage.js +120 -0
- package/dist/connectors/telegram/commands/modelPage.js.map +1 -0
- package/dist/connectors/telegram/commands/modelProviders.d.ts +9 -1
- package/dist/connectors/telegram/commands/modelProviders.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/modelProviders.js +203 -111
- package/dist/connectors/telegram/commands/modelProviders.js.map +1 -1
- package/dist/connectors/telegram/commands/stt.d.ts +32 -0
- package/dist/connectors/telegram/commands/stt.d.ts.map +1 -0
- package/dist/connectors/telegram/commands/stt.js +460 -0
- package/dist/connectors/telegram/commands/stt.js.map +1 -0
- package/dist/effortLevels.d.ts +57 -7
- package/dist/effortLevels.d.ts.map +1 -1
- package/dist/effortLevels.js +65 -9
- package/dist/effortLevels.js.map +1 -1
- package/dist/i18n/de.d.ts.map +1 -1
- package/dist/i18n/de.js +160 -17
- package/dist/i18n/de.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +160 -17
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +160 -17
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +160 -17
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/hi.d.ts.map +1 -1
- package/dist/i18n/hi.js +160 -17
- package/dist/i18n/hi.js.map +1 -1
- package/dist/i18n/ja.d.ts.map +1 -1
- package/dist/i18n/ja.js +160 -17
- package/dist/i18n/ja.js.map +1 -1
- package/dist/i18n/ka.d.ts.map +1 -1
- package/dist/i18n/ka.js +160 -17
- package/dist/i18n/ka.js.map +1 -1
- package/dist/i18n/pt.d.ts.map +1 -1
- package/dist/i18n/pt.js +160 -17
- package/dist/i18n/pt.js.map +1 -1
- package/dist/i18n/ru.d.ts.map +1 -1
- package/dist/i18n/ru.js +160 -17
- package/dist/i18n/ru.js.map +1 -1
- package/dist/i18n/uk.d.ts.map +1 -1
- package/dist/i18n/uk.js +160 -17
- package/dist/i18n/uk.js.map +1 -1
- package/dist/i18n/uz.d.ts.map +1 -1
- package/dist/i18n/uz.js +160 -17
- package/dist/i18n/uz.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +160 -17
- package/dist/i18n/zh.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installManager.d.ts +36 -6
- package/dist/installManager.d.ts.map +1 -1
- package/dist/installManager.js +124 -26
- package/dist/installManager.js.map +1 -1
- package/dist/instanceLock.d.ts.map +1 -1
- package/dist/instanceLock.js +10 -8
- package/dist/instanceLock.js.map +1 -1
- package/dist/instanceSettings.d.ts +52 -0
- package/dist/instanceSettings.d.ts.map +1 -0
- package/dist/instanceSettings.js +136 -0
- package/dist/instanceSettings.js.map +1 -0
- package/dist/legacyMigration.d.ts +69 -0
- package/dist/legacyMigration.d.ts.map +1 -0
- package/dist/legacyMigration.js +338 -0
- package/dist/legacyMigration.js.map +1 -0
- package/dist/legacyNames.d.ts +107 -0
- package/dist/legacyNames.d.ts.map +1 -0
- package/dist/legacyNames.js +230 -0
- package/dist/legacyNames.js.map +1 -0
- package/dist/pinnedStatus.d.ts +7 -1
- package/dist/pinnedStatus.d.ts.map +1 -1
- package/dist/pinnedStatus.js +1 -1
- package/dist/pinnedStatus.js.map +1 -1
- package/dist/platform/answerSink.d.ts +5 -0
- package/dist/platform/answerSink.d.ts.map +1 -1
- package/dist/platform/answerSink.js.map +1 -1
- package/dist/requests/answerRequest.d.ts +2 -0
- package/dist/requests/answerRequest.d.ts.map +1 -1
- package/dist/requests/answerRequest.js +3 -1
- package/dist/requests/answerRequest.js.map +1 -1
- package/dist/requests/answerStyle.d.ts +11 -0
- package/dist/requests/answerStyle.d.ts.map +1 -0
- package/dist/requests/answerStyle.js +14 -0
- package/dist/requests/answerStyle.js.map +1 -0
- package/dist/requests/answerTail.d.ts.map +1 -1
- package/dist/requests/answerTail.js +2 -0
- package/dist/requests/answerTail.js.map +1 -1
- package/dist/requests/requestHeader.d.ts.map +1 -1
- package/dist/requests/requestHeader.js +3 -0
- package/dist/requests/requestHeader.js.map +1 -1
- package/dist/requests/requestLedger.d.ts +8 -0
- package/dist/requests/requestLedger.d.ts.map +1 -1
- package/dist/requests/requestLedger.js +20 -2
- package/dist/requests/requestLedger.js.map +1 -1
- package/dist/requests/types.d.ts +3 -1
- package/dist/requests/types.d.ts.map +1 -1
- package/dist/scheduler/mcpSurface.d.ts +9 -1
- package/dist/scheduler/mcpSurface.d.ts.map +1 -1
- package/dist/scheduler/mcpSurface.js +49 -16
- package/dist/scheduler/mcpSurface.js.map +1 -1
- package/dist/shutdown.d.ts +14 -0
- package/dist/shutdown.d.ts.map +1 -1
- package/dist/shutdown.js +16 -0
- package/dist/shutdown.js.map +1 -1
- package/dist/state.d.ts +57 -3
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +67 -3
- package/dist/state.js.map +1 -1
- package/dist/stt/sttAutoInstall.d.ts +39 -0
- package/dist/stt/sttAutoInstall.d.ts.map +1 -0
- package/dist/stt/sttAutoInstall.js +158 -0
- package/dist/stt/sttAutoInstall.js.map +1 -0
- package/dist/stt/sttChildEnv.d.ts +11 -0
- package/dist/stt/sttChildEnv.d.ts.map +1 -0
- package/dist/stt/sttChildEnv.js +30 -0
- package/dist/stt/sttChildEnv.js.map +1 -0
- package/dist/stt/sttConfigEdit.d.ts +71 -0
- package/dist/stt/sttConfigEdit.d.ts.map +1 -0
- package/dist/stt/sttConfigEdit.js +144 -0
- package/dist/stt/sttConfigEdit.js.map +1 -0
- package/dist/stt/sttInstall.d.ts +147 -0
- package/dist/stt/sttInstall.d.ts.map +1 -0
- package/dist/stt/sttInstall.js +491 -0
- package/dist/stt/sttInstall.js.map +1 -0
- package/dist/stt/sttInstallEntry.d.ts +2 -0
- package/dist/stt/sttInstallEntry.d.ts.map +1 -0
- package/dist/stt/sttInstallEntry.js +31 -0
- package/dist/stt/sttInstallEntry.js.map +1 -0
- package/dist/stt/sttInstallReporter.d.ts +45 -0
- package/dist/stt/sttInstallReporter.d.ts.map +1 -0
- package/dist/stt/sttInstallReporter.js +57 -0
- package/dist/stt/sttInstallReporter.js.map +1 -0
- package/dist/stt/sttRuntime.d.ts +35 -0
- package/dist/stt/sttRuntime.d.ts.map +1 -0
- package/dist/stt/sttRuntime.js +73 -0
- package/dist/stt/sttRuntime.js.map +1 -0
- package/dist/stt/sttScreenPlan.d.ts +193 -0
- package/dist/stt/sttScreenPlan.d.ts.map +1 -0
- package/dist/stt/sttScreenPlan.js +541 -0
- package/dist/stt/sttScreenPlan.js.map +1 -0
- package/dist/stt/sttSettings.d.ts +201 -0
- package/dist/stt/sttSettings.d.ts.map +1 -0
- package/dist/stt/sttSettings.js +387 -0
- package/dist/stt/sttSettings.js.map +1 -0
- package/dist/stt/sttSidecarOwner.d.ts +115 -0
- package/dist/stt/sttSidecarOwner.d.ts.map +1 -0
- package/dist/stt/sttSidecarOwner.js +475 -0
- package/dist/stt/sttSidecarOwner.js.map +1 -0
- package/dist/stt/transcribeChain.d.ts +36 -0
- package/dist/stt/transcribeChain.d.ts.map +1 -0
- package/dist/stt/transcribeChain.js +42 -0
- package/dist/stt/transcribeChain.js.map +1 -0
- package/dist/types.d.ts +77 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/adapterSwitchSessionIds.d.ts +32 -0
- package/dist/utils/adapterSwitchSessionIds.d.ts.map +1 -0
- package/dist/utils/adapterSwitchSessionIds.js +44 -0
- package/dist/utils/adapterSwitchSessionIds.js.map +1 -0
- package/dist/utils/backendSwitchPlan.d.ts +63 -0
- package/dist/utils/backendSwitchPlan.d.ts.map +1 -0
- package/dist/utils/backendSwitchPlan.js +73 -0
- package/dist/utils/backendSwitchPlan.js.map +1 -0
- package/dist/utils/claudeAccountPickerPlan.d.ts +12 -1
- package/dist/utils/claudeAccountPickerPlan.d.ts.map +1 -1
- package/dist/utils/claudeAccountPickerPlan.js +20 -1
- package/dist/utils/claudeAccountPickerPlan.js.map +1 -1
- package/dist/utils/claudeProfiles.d.ts +7 -0
- package/dist/utils/claudeProfiles.d.ts.map +1 -1
- package/dist/utils/claudeProfiles.js +19 -0
- package/dist/utils/claudeProfiles.js.map +1 -1
- package/dist/utils/claudeTranscriptContent.d.ts +24 -0
- package/dist/utils/claudeTranscriptContent.d.ts.map +1 -0
- package/dist/utils/claudeTranscriptContent.js +107 -0
- package/dist/utils/claudeTranscriptContent.js.map +1 -0
- package/dist/utils/claudeUsage.d.ts +47 -8
- package/dist/utils/claudeUsage.d.ts.map +1 -1
- package/dist/utils/claudeUsage.js +76 -14
- package/dist/utils/claudeUsage.js.map +1 -1
- package/dist/utils/claudeUsageRefresher.d.ts +8 -1
- package/dist/utils/claudeUsageRefresher.d.ts.map +1 -1
- package/dist/utils/claudeUsageRefresher.js +9 -4
- package/dist/utils/claudeUsageRefresher.js.map +1 -1
- package/dist/utils/effortPickerPlan.d.ts +54 -0
- package/dist/utils/effortPickerPlan.d.ts.map +1 -0
- package/dist/utils/effortPickerPlan.js +56 -0
- package/dist/utils/effortPickerPlan.js.map +1 -0
- package/dist/utils/ensureSessionPlan.d.ts +20 -4
- package/dist/utils/ensureSessionPlan.d.ts.map +1 -1
- package/dist/utils/ensureSessionPlan.js +17 -4
- package/dist/utils/ensureSessionPlan.js.map +1 -1
- package/dist/utils/fallbackBridge.d.ts +6 -2
- package/dist/utils/fallbackBridge.d.ts.map +1 -1
- package/dist/utils/fallbackBridge.js +10 -3
- package/dist/utils/fallbackBridge.js.map +1 -1
- package/dist/utils/fallbackChain.d.ts +36 -0
- package/dist/utils/fallbackChain.d.ts.map +1 -1
- package/dist/utils/fallbackChain.js +65 -1
- package/dist/utils/fallbackChain.js.map +1 -1
- package/dist/utils/fallbackSwitchNotice.d.ts +41 -0
- package/dist/utils/fallbackSwitchNotice.d.ts.map +1 -0
- package/dist/utils/fallbackSwitchNotice.js +75 -0
- package/dist/utils/fallbackSwitchNotice.js.map +1 -0
- package/dist/utils/fileSendService.d.ts +33 -10
- package/dist/utils/fileSendService.d.ts.map +1 -1
- package/dist/utils/fileSendService.js +78 -27
- package/dist/utils/fileSendService.js.map +1 -1
- package/dist/utils/jsonStreamHost.d.ts +39 -0
- package/dist/utils/jsonStreamHost.d.ts.map +1 -1
- package/dist/utils/jsonStreamHost.js +60 -1
- package/dist/utils/jsonStreamHost.js.map +1 -1
- package/dist/utils/limitEpisodeRecovery.d.ts +16 -2
- package/dist/utils/limitEpisodeRecovery.d.ts.map +1 -1
- package/dist/utils/limitEpisodeRecovery.js +44 -3
- package/dist/utils/limitEpisodeRecovery.js.map +1 -1
- package/dist/utils/limitSettings.d.ts +25 -0
- package/dist/utils/limitSettings.d.ts.map +1 -0
- package/dist/utils/limitSettings.js +31 -0
- package/dist/utils/limitSettings.js.map +1 -0
- package/dist/utils/limitsBoardPlan.d.ts +52 -0
- package/dist/utils/limitsBoardPlan.d.ts.map +1 -0
- package/dist/utils/limitsBoardPlan.js +93 -0
- package/dist/utils/limitsBoardPlan.js.map +1 -0
- package/dist/utils/openCodeCompactPlugin.d.ts +11 -3
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -1
- package/dist/utils/openCodeCompactPlugin.js +37 -5
- package/dist/utils/openCodeCompactPlugin.js.map +1 -1
- package/dist/utils/openCodeUsage.d.ts +93 -0
- package/dist/utils/openCodeUsage.d.ts.map +1 -0
- package/dist/utils/openCodeUsage.js +248 -0
- package/dist/utils/openCodeUsage.js.map +1 -0
- package/dist/utils/operatorSwitchPlan.d.ts +61 -0
- package/dist/utils/operatorSwitchPlan.d.ts.map +1 -0
- package/dist/utils/operatorSwitchPlan.js +32 -0
- package/dist/utils/operatorSwitchPlan.js.map +1 -0
- package/dist/utils/promptDelivery.d.ts +40 -0
- package/dist/utils/promptDelivery.d.ts.map +1 -1
- package/dist/utils/promptDelivery.js +31 -0
- package/dist/utils/promptDelivery.js.map +1 -1
- package/dist/utils/recvPreviewRedaction.d.ts +14 -4
- package/dist/utils/recvPreviewRedaction.d.ts.map +1 -1
- package/dist/utils/recvPreviewRedaction.js +19 -7
- package/dist/utils/recvPreviewRedaction.js.map +1 -1
- package/dist/utils/startupReadiness.d.ts +3 -3
- package/dist/utils/startupReadiness.d.ts.map +1 -1
- package/dist/utils/startupReadiness.js +2 -2
- package/dist/utils/startupReadiness.js.map +1 -1
- package/dist/utils/threadStatusReport.d.ts +3 -1
- package/dist/utils/threadStatusReport.d.ts.map +1 -1
- package/dist/utils/threadStatusReport.js +4 -3
- package/dist/utils/threadStatusReport.js.map +1 -1
- package/dist/utils/timezone.d.ts +23 -0
- package/dist/utils/timezone.d.ts.map +1 -1
- package/dist/utils/timezone.js +38 -0
- package/dist/utils/timezone.js.map +1 -1
- package/dist/utils/transcribeAudio.d.ts +25 -12
- package/dist/utils/transcribeAudio.d.ts.map +1 -1
- package/dist/utils/transcribeAudio.js +39 -21
- package/dist/utils/transcribeAudio.js.map +1 -1
- package/dist/utils/usageRefreshBudget.d.ts +9 -0
- package/dist/utils/usageRefreshBudget.d.ts.map +1 -0
- package/dist/utils/usageRefreshBudget.js +27 -0
- package/dist/utils/usageRefreshBudget.js.map +1 -0
- package/examples/.env.example +13 -9
- package/examples/docker-compose.yml +20 -17
- package/package.json +4 -1
- package/stt/gigaam_sidecar.py +800 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description The names the project had before it was renamed from TelegramCode
|
|
3
|
+
* to Charness, and the one place that knows how a running instance falls back to
|
|
4
|
+
* them.
|
|
5
|
+
*
|
|
6
|
+
* WHY a fallback exists: instances hot-reload `main`, so for a while old and new
|
|
7
|
+
* code meet โ the hot SUPERVISOR keeps running the code it was started with (and
|
|
8
|
+
* keeps setting the old env var names for each new worker), other hosts' mirrors
|
|
9
|
+
* pull the rename without moving their data dir, and a running agent keeps the
|
|
10
|
+
* MCP header its launch config named. Every renamed name is therefore read as
|
|
11
|
+
* `new ?? old`, the old one only as a fallback, and each use of a fallback is
|
|
12
|
+
* announced ONCE per process, naming the migration doc.
|
|
13
|
+
*
|
|
14
|
+
* Nothing here moves a user's file: the fallback only decides which existing path
|
|
15
|
+
* is read. Moving them is `legacyMigration.ts`'s job, at a cold start.
|
|
16
|
+
*/
|
|
17
|
+
/** The document an operator or an agent finds the old โ new table and the steps in. */
|
|
18
|
+
export declare const renameMigrationDoc = "MIGRATION_RENAME_TO_CHARNESS.md";
|
|
19
|
+
/** Default `DATA_DIR` under the home dir, and the one the pre-rename releases used. */
|
|
20
|
+
export declare const defaultDataDirName = ".charness";
|
|
21
|
+
export declare const legacyDefaultDataDirName = ".telegramCode";
|
|
22
|
+
/**
|
|
23
|
+
* Per-user config dir under `~/.config`, and the ones earlier releases used,
|
|
24
|
+
* newest first: `telegramcode` before the rename, `telegram-code` before that.
|
|
25
|
+
*/
|
|
26
|
+
export declare const configDirName = "charness";
|
|
27
|
+
export declare const legacyConfigDirNames: readonly string[];
|
|
28
|
+
/** A renamed environment variable: the current name and the one earlier releases used. */
|
|
29
|
+
export interface RenamedEnvName {
|
|
30
|
+
current: string;
|
|
31
|
+
legacy: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The supervisor โ worker handshake of hot mode (`charness hot`). An operator
|
|
35
|
+
* never sets these: the supervisor does, so a legacy one reaching a worker means
|
|
36
|
+
* the supervisor still runs pre-rename code.
|
|
37
|
+
*/
|
|
38
|
+
export declare const hotReloadEnvName: RenamedEnvName;
|
|
39
|
+
export declare const openCodeProcessFileEnvName: RenamedEnvName;
|
|
40
|
+
/**
|
|
41
|
+
* @description The value of a renamed variable: the current name wins, the legacy
|
|
42
|
+
* one is the fallback. An empty value counts as unset, as everywhere the bot
|
|
43
|
+
* reads these.
|
|
44
|
+
*/
|
|
45
|
+
export declare function readRenamedEnv(env: NodeJS.ProcessEnv, name: RenamedEnvName): string | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* @description The default `DATA_DIR` (no explicit `DATA_DIR`): `~/.charness`,
|
|
48
|
+
* except that an existing `~/.telegramCode` is kept while `~/.charness` does not
|
|
49
|
+
* exist โ an install made before the rename keeps its state where it is. A
|
|
50
|
+
* `~/.charness` that holds no `state.json` while `~/.telegramCode` does (made by
|
|
51
|
+
* hand, or as the parent of another instance's explicit `DATA_DIR`) does not
|
|
52
|
+
* take over either: the bot would start with none of its bindings. Never creates
|
|
53
|
+
* or moves anything.
|
|
54
|
+
*
|
|
55
|
+
* Decided ONCE per process and home dir: several modules resolve their paths at
|
|
56
|
+
* load and others at every call, and a `~/.charness` that appears while the
|
|
57
|
+
* process runs (the console tee creates it on a fresh install; an operator may
|
|
58
|
+
* `mkdir` it) must not make the two halves disagree until the next restart.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveDefaultDataDir(homeDir?: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* @description Decide the default `DATA_DIR` again, forgetting the earlier
|
|
63
|
+
* decision โ for the one place that moves the dir (`legacyMigration.ts`), so the
|
|
64
|
+
* rest of the process sees the new path from then on.
|
|
65
|
+
*/
|
|
66
|
+
export declare function redecideDefaultDataDir(homeDir?: string): string;
|
|
67
|
+
/** @description `~/.config/<dirName>/.env` under `homeDir`. */
|
|
68
|
+
export declare function buildGlobalConfigEnvPath(dirName: string, homeDir?: string): string;
|
|
69
|
+
/**
|
|
70
|
+
* @description The per-user global config file: `~/.config/charness/.env`, else
|
|
71
|
+
* the first existing of the earlier releases' dirs. When none exists the
|
|
72
|
+
* canonical path is returned โ the location a fresh install should use. Nothing
|
|
73
|
+
* is moved.
|
|
74
|
+
*/
|
|
75
|
+
export declare function resolveGlobalConfigEnvPath(homeDir?: string): string;
|
|
76
|
+
/** @description The deprecation line every fallback prints: what to rename, to what, and where it is written down. */
|
|
77
|
+
export declare function formatDeprecation(legacyName: string, currentName: string): string;
|
|
78
|
+
type WriteLine = (text: string) => void;
|
|
79
|
+
/**
|
|
80
|
+
* @description Print one deprecation line, once per process per `key`. Returns
|
|
81
|
+
* whether it printed. The default sink is `process.stderr` (read at call time, so
|
|
82
|
+
* the console tee sees it).
|
|
83
|
+
*/
|
|
84
|
+
export declare function warnLegacyNameOnce(key: string, message: string, write?: WriteLine): boolean;
|
|
85
|
+
/** Forget what was announced and decided โ for tests, which assert the once-only rules per case. */
|
|
86
|
+
export declare function resetLegacyNameState(): void;
|
|
87
|
+
/** One fallback in use at boot. */
|
|
88
|
+
export interface LegacyNameUse {
|
|
89
|
+
key: string;
|
|
90
|
+
message: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* @description Every legacy name the environment and the home dir make the
|
|
94
|
+
* process fall back to right now: a legacy supervisor variable with no current
|
|
95
|
+
* one, the global config dir when it is a pre-rename one, and the default data
|
|
96
|
+
* dir when it is the pre-rename one. (The MCP header and the plugin file are
|
|
97
|
+
* announced where they are seen.)
|
|
98
|
+
*/
|
|
99
|
+
export declare function findLegacyNameUses(env?: NodeJS.ProcessEnv, homeDir?: string): LegacyNameUse[];
|
|
100
|
+
/**
|
|
101
|
+
* @description The boot-time announcement: print each fallback in use, once per
|
|
102
|
+
* process. Called by the plain start (after the console tee, so it reaches the
|
|
103
|
+
* bot log) and by the hot supervisor.
|
|
104
|
+
*/
|
|
105
|
+
export declare function warnLegacyNamesAtBoot(env?: NodeJS.ProcessEnv, homeDir?: string, write?: WriteLine): void;
|
|
106
|
+
export {};
|
|
107
|
+
//# sourceMappingURL=legacyNames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacyNames.d.ts","sourceRoot":"","sources":["../src/legacyNames.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AAEpE,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAsC,CAAC;AAEzF,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAG9B,CAAC;AACF,eAAO,MAAM,0BAA0B,EAAE,cAGxC,CAAC;AAGF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAE/F;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAY5E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAG7E;AAED,+DAA+D;AAC/D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAqB,GAAG,MAAM,CAEhG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAQjF;AAED,sHAAsH;AACtH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,KAAK,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAQxC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,SAAyB,GAAG,OAAO,CAK1G;AAED,oGAAoG;AACpG,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C;AAED,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,OAAO,GAAE,MAAqB,GAC7B,aAAa,EAAE,CA+BjB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,OAAO,GAAE,MAAqB,EAC9B,KAAK,GAAE,SAAyB,GAC/B,IAAI,CAEN"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description The names the project had before it was renamed from TelegramCode
|
|
4
|
+
* to Charness, and the one place that knows how a running instance falls back to
|
|
5
|
+
* them.
|
|
6
|
+
*
|
|
7
|
+
* WHY a fallback exists: instances hot-reload `main`, so for a while old and new
|
|
8
|
+
* code meet โ the hot SUPERVISOR keeps running the code it was started with (and
|
|
9
|
+
* keeps setting the old env var names for each new worker), other hosts' mirrors
|
|
10
|
+
* pull the rename without moving their data dir, and a running agent keeps the
|
|
11
|
+
* MCP header its launch config named. Every renamed name is therefore read as
|
|
12
|
+
* `new ?? old`, the old one only as a fallback, and each use of a fallback is
|
|
13
|
+
* announced ONCE per process, naming the migration doc.
|
|
14
|
+
*
|
|
15
|
+
* Nothing here moves a user's file: the fallback only decides which existing path
|
|
16
|
+
* is read. Moving them is `legacyMigration.ts`'s job, at a cold start.
|
|
17
|
+
*/
|
|
18
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
21
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
22
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
23
|
+
}
|
|
24
|
+
Object.defineProperty(o, k2, desc);
|
|
25
|
+
}) : (function(o, m, k, k2) {
|
|
26
|
+
if (k2 === undefined) k2 = k;
|
|
27
|
+
o[k2] = m[k];
|
|
28
|
+
}));
|
|
29
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
30
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
31
|
+
}) : function(o, v) {
|
|
32
|
+
o["default"] = v;
|
|
33
|
+
});
|
|
34
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
35
|
+
var ownKeys = function(o) {
|
|
36
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
37
|
+
var ar = [];
|
|
38
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
39
|
+
return ar;
|
|
40
|
+
};
|
|
41
|
+
return ownKeys(o);
|
|
42
|
+
};
|
|
43
|
+
return function (mod) {
|
|
44
|
+
if (mod && mod.__esModule) return mod;
|
|
45
|
+
var result = {};
|
|
46
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
47
|
+
__setModuleDefault(result, mod);
|
|
48
|
+
return result;
|
|
49
|
+
};
|
|
50
|
+
})();
|
|
51
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
52
|
+
exports.openCodeProcessFileEnvName = exports.hotReloadEnvName = exports.legacyConfigDirNames = exports.configDirName = exports.legacyDefaultDataDirName = exports.defaultDataDirName = exports.renameMigrationDoc = void 0;
|
|
53
|
+
exports.readRenamedEnv = readRenamedEnv;
|
|
54
|
+
exports.resolveDefaultDataDir = resolveDefaultDataDir;
|
|
55
|
+
exports.redecideDefaultDataDir = redecideDefaultDataDir;
|
|
56
|
+
exports.buildGlobalConfigEnvPath = buildGlobalConfigEnvPath;
|
|
57
|
+
exports.resolveGlobalConfigEnvPath = resolveGlobalConfigEnvPath;
|
|
58
|
+
exports.formatDeprecation = formatDeprecation;
|
|
59
|
+
exports.warnLegacyNameOnce = warnLegacyNameOnce;
|
|
60
|
+
exports.resetLegacyNameState = resetLegacyNameState;
|
|
61
|
+
exports.findLegacyNameUses = findLegacyNameUses;
|
|
62
|
+
exports.warnLegacyNamesAtBoot = warnLegacyNamesAtBoot;
|
|
63
|
+
const fs = __importStar(require("fs"));
|
|
64
|
+
const os = __importStar(require("os"));
|
|
65
|
+
const path = __importStar(require("path"));
|
|
66
|
+
/** The document an operator or an agent finds the old โ new table and the steps in. */
|
|
67
|
+
exports.renameMigrationDoc = 'MIGRATION_RENAME_TO_CHARNESS.md';
|
|
68
|
+
/** Default `DATA_DIR` under the home dir, and the one the pre-rename releases used. */
|
|
69
|
+
exports.defaultDataDirName = '.charness';
|
|
70
|
+
exports.legacyDefaultDataDirName = '.telegramCode';
|
|
71
|
+
/**
|
|
72
|
+
* Per-user config dir under `~/.config`, and the ones earlier releases used,
|
|
73
|
+
* newest first: `telegramcode` before the rename, `telegram-code` before that.
|
|
74
|
+
*/
|
|
75
|
+
exports.configDirName = 'charness';
|
|
76
|
+
exports.legacyConfigDirNames = ['telegramcode', 'telegram-code'];
|
|
77
|
+
/**
|
|
78
|
+
* The supervisor โ worker handshake of hot mode (`charness hot`). An operator
|
|
79
|
+
* never sets these: the supervisor does, so a legacy one reaching a worker means
|
|
80
|
+
* the supervisor still runs pre-rename code.
|
|
81
|
+
*/
|
|
82
|
+
exports.hotReloadEnvName = {
|
|
83
|
+
current: 'CHARNESS_HOT_RELOAD',
|
|
84
|
+
legacy: 'TELEGRAMCODE_HOT_RELOAD',
|
|
85
|
+
};
|
|
86
|
+
exports.openCodeProcessFileEnvName = {
|
|
87
|
+
current: 'CHARNESS_OPENCODE_PROCESS_FILE',
|
|
88
|
+
legacy: 'TELEGRAMCODE_OPENCODE_PROCESS_FILE',
|
|
89
|
+
};
|
|
90
|
+
const supervisorEnvNames = [exports.hotReloadEnvName, exports.openCodeProcessFileEnvName];
|
|
91
|
+
/**
|
|
92
|
+
* @description The value of a renamed variable: the current name wins, the legacy
|
|
93
|
+
* one is the fallback. An empty value counts as unset, as everywhere the bot
|
|
94
|
+
* reads these.
|
|
95
|
+
*/
|
|
96
|
+
function readRenamedEnv(env, name) {
|
|
97
|
+
return env[name.current] || env[name.legacy] || undefined;
|
|
98
|
+
}
|
|
99
|
+
const defaultDataDirByHome = new Map();
|
|
100
|
+
/** The file whose presence marks a data dir as an instance's state, not just a parent of other dirs. */
|
|
101
|
+
const stateFileName = 'state.json';
|
|
102
|
+
/**
|
|
103
|
+
* @description The default `DATA_DIR` (no explicit `DATA_DIR`): `~/.charness`,
|
|
104
|
+
* except that an existing `~/.telegramCode` is kept while `~/.charness` does not
|
|
105
|
+
* exist โ an install made before the rename keeps its state where it is. A
|
|
106
|
+
* `~/.charness` that holds no `state.json` while `~/.telegramCode` does (made by
|
|
107
|
+
* hand, or as the parent of another instance's explicit `DATA_DIR`) does not
|
|
108
|
+
* take over either: the bot would start with none of its bindings. Never creates
|
|
109
|
+
* or moves anything.
|
|
110
|
+
*
|
|
111
|
+
* Decided ONCE per process and home dir: several modules resolve their paths at
|
|
112
|
+
* load and others at every call, and a `~/.charness` that appears while the
|
|
113
|
+
* process runs (the console tee creates it on a fresh install; an operator may
|
|
114
|
+
* `mkdir` it) must not make the two halves disagree until the next restart.
|
|
115
|
+
*/
|
|
116
|
+
function resolveDefaultDataDir(homeDir = os.homedir()) {
|
|
117
|
+
const decided = defaultDataDirByHome.get(homeDir);
|
|
118
|
+
if (decided !== undefined)
|
|
119
|
+
return decided;
|
|
120
|
+
const currentDir = path.join(homeDir, exports.defaultDataDirName);
|
|
121
|
+
const legacyDir = path.join(homeDir, exports.legacyDefaultDataDirName);
|
|
122
|
+
const isLegacyKept = fs.existsSync(legacyDir) &&
|
|
123
|
+
(!fs.existsSync(currentDir) ||
|
|
124
|
+
(!fs.existsSync(path.join(currentDir, stateFileName)) && fs.existsSync(path.join(legacyDir, stateFileName))));
|
|
125
|
+
const resolved = isLegacyKept ? legacyDir : currentDir;
|
|
126
|
+
defaultDataDirByHome.set(homeDir, resolved);
|
|
127
|
+
return resolved;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* @description Decide the default `DATA_DIR` again, forgetting the earlier
|
|
131
|
+
* decision โ for the one place that moves the dir (`legacyMigration.ts`), so the
|
|
132
|
+
* rest of the process sees the new path from then on.
|
|
133
|
+
*/
|
|
134
|
+
function redecideDefaultDataDir(homeDir = os.homedir()) {
|
|
135
|
+
defaultDataDirByHome.delete(homeDir);
|
|
136
|
+
return resolveDefaultDataDir(homeDir);
|
|
137
|
+
}
|
|
138
|
+
/** @description `~/.config/<dirName>/.env` under `homeDir`. */
|
|
139
|
+
function buildGlobalConfigEnvPath(dirName, homeDir = os.homedir()) {
|
|
140
|
+
return path.join(homeDir, '.config', dirName, '.env');
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* @description The per-user global config file: `~/.config/charness/.env`, else
|
|
144
|
+
* the first existing of the earlier releases' dirs. When none exists the
|
|
145
|
+
* canonical path is returned โ the location a fresh install should use. Nothing
|
|
146
|
+
* is moved.
|
|
147
|
+
*/
|
|
148
|
+
function resolveGlobalConfigEnvPath(homeDir = os.homedir()) {
|
|
149
|
+
const canonicalPath = buildGlobalConfigEnvPath(exports.configDirName, homeDir);
|
|
150
|
+
if (fs.existsSync(canonicalPath))
|
|
151
|
+
return canonicalPath;
|
|
152
|
+
for (const legacyDirName of exports.legacyConfigDirNames) {
|
|
153
|
+
const legacyPath = buildGlobalConfigEnvPath(legacyDirName, homeDir);
|
|
154
|
+
if (fs.existsSync(legacyPath))
|
|
155
|
+
return legacyPath;
|
|
156
|
+
}
|
|
157
|
+
return canonicalPath;
|
|
158
|
+
}
|
|
159
|
+
/** @description The deprecation line every fallback prints: what to rename, to what, and where it is written down. */
|
|
160
|
+
function formatDeprecation(legacyName, currentName) {
|
|
161
|
+
return `${legacyName} is deprecated, rename it to ${currentName} (see ${exports.renameMigrationDoc})`;
|
|
162
|
+
}
|
|
163
|
+
function writeToStderr(text) {
|
|
164
|
+
process.stderr.write(text);
|
|
165
|
+
}
|
|
166
|
+
const announcedKeys = new Set();
|
|
167
|
+
/**
|
|
168
|
+
* @description Print one deprecation line, once per process per `key`. Returns
|
|
169
|
+
* whether it printed. The default sink is `process.stderr` (read at call time, so
|
|
170
|
+
* the console tee sees it).
|
|
171
|
+
*/
|
|
172
|
+
function warnLegacyNameOnce(key, message, write = writeToStderr) {
|
|
173
|
+
if (announcedKeys.has(key))
|
|
174
|
+
return false;
|
|
175
|
+
announcedKeys.add(key);
|
|
176
|
+
write(`[deprecated] ${message}\n`);
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
/** Forget what was announced and decided โ for tests, which assert the once-only rules per case. */
|
|
180
|
+
function resetLegacyNameState() {
|
|
181
|
+
announcedKeys.clear();
|
|
182
|
+
defaultDataDirByHome.clear();
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* @description Every legacy name the environment and the home dir make the
|
|
186
|
+
* process fall back to right now: a legacy supervisor variable with no current
|
|
187
|
+
* one, the global config dir when it is a pre-rename one, and the default data
|
|
188
|
+
* dir when it is the pre-rename one. (The MCP header and the plugin file are
|
|
189
|
+
* announced where they are seen.)
|
|
190
|
+
*/
|
|
191
|
+
function findLegacyNameUses(env = process.env, homeDir = os.homedir()) {
|
|
192
|
+
const uses = [];
|
|
193
|
+
for (const name of supervisorEnvNames) {
|
|
194
|
+
if (env[name.current] || !env[name.legacy])
|
|
195
|
+
continue;
|
|
196
|
+
uses.push({
|
|
197
|
+
key: `env:${name.legacy}`,
|
|
198
|
+
message: `${name.legacy} is deprecated, the running \`charness hot\` supervisor still sets it: ` +
|
|
199
|
+
`restart it to set ${name.current} (see ${exports.renameMigrationDoc})`,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
// An isolated instance (`ENV_FILE`) reads no global config at all.
|
|
203
|
+
if (!env.ENV_FILE) {
|
|
204
|
+
const globalConfigPath = resolveGlobalConfigEnvPath(homeDir);
|
|
205
|
+
const legacyDirName = exports.legacyConfigDirNames.find((dirName) => buildGlobalConfigEnvPath(dirName, homeDir) === globalConfigPath);
|
|
206
|
+
if (legacyDirName !== undefined) {
|
|
207
|
+
uses.push({
|
|
208
|
+
key: 'global-config-dir',
|
|
209
|
+
message: formatDeprecation(`~/.config/${legacyDirName}`, `~/.config/${exports.configDirName}`),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (!env.DATA_DIR && resolveDefaultDataDir(homeDir) === path.join(homeDir, exports.legacyDefaultDataDirName)) {
|
|
214
|
+
uses.push({
|
|
215
|
+
key: 'default-data-dir',
|
|
216
|
+
message: formatDeprecation(`~/${exports.legacyDefaultDataDirName}`, `~/${exports.defaultDataDirName}`),
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return uses;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* @description The boot-time announcement: print each fallback in use, once per
|
|
223
|
+
* process. Called by the plain start (after the console tee, so it reaches the
|
|
224
|
+
* bot log) and by the hot supervisor.
|
|
225
|
+
*/
|
|
226
|
+
function warnLegacyNamesAtBoot(env = process.env, homeDir = os.homedir(), write = writeToStderr) {
|
|
227
|
+
for (const use of findLegacyNameUses(env, homeDir))
|
|
228
|
+
warnLegacyNameOnce(use.key, use.message, write);
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=legacyNames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacyNames.js","sourceRoot":"","sources":["../src/legacyNames.ts"],"names":[],"mappings":"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"}
|
package/dist/pinnedStatus.d.ts
CHANGED
|
@@ -25,10 +25,16 @@ export interface PinnedStatusInputs {
|
|
|
25
25
|
*/
|
|
26
26
|
model: string | null;
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* The reasoning-effort level the thread runs at (e.g. `"high"`, `"xhigh"`): the live session's own, else the
|
|
29
|
+
* level its next start will use.
|
|
29
30
|
* Optional โ shown right after the model when set, omitted otherwise.
|
|
30
31
|
*/
|
|
31
32
|
effort?: string | null;
|
|
33
|
+
/**
|
|
34
|
+
* The level the next session start will use when it differs from `effort` (the default changed under a running
|
|
35
|
+
* session); shown beside it.
|
|
36
|
+
*/
|
|
37
|
+
effortNextStart?: string | null;
|
|
32
38
|
/** True if the adapter reports an active session right now. */
|
|
33
39
|
isActive: boolean;
|
|
34
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinnedStatus.d.ts","sourceRoot":"","sources":["../src/pinnedStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,OAAO,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"pinnedStatus.d.ts","sourceRoot":"","sources":["../src/pinnedStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,OAAO,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAerE"}
|
package/dist/pinnedStatus.js
CHANGED
|
@@ -24,7 +24,7 @@ function formatPinnedStatus(inputs) {
|
|
|
24
24
|
if (inputs.model)
|
|
25
25
|
parts.push(inputs.model);
|
|
26
26
|
if (inputs.effort)
|
|
27
|
-
parts.push(`โ๏ธ ${inputs.effort}`);
|
|
27
|
+
parts.push(`โ๏ธ ${inputs.effort}${inputs.effortNextStart ? ` (${inputs.effortNextStart} from the next start)` : ''}`);
|
|
28
28
|
if (inputs.binding.closed) {
|
|
29
29
|
parts.push('๐ closed');
|
|
30
30
|
}
|
package/dist/pinnedStatus.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinnedStatus.js","sourceRoot":"","sources":["../src/pinnedStatus.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"pinnedStatus.js","sourceRoot":"","sources":["../src/pinnedStatus.ts"],"names":[],"mappings":";;AA0DA,gDAeC;AA/BD;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,kBAAkB,CAAC,MAA0B;IAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,eAAe,uBAAuB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAExI,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -21,6 +21,11 @@ export interface RequestAnswerDelivery {
|
|
|
21
21
|
body: string;
|
|
22
22
|
origin: RequestOrigin;
|
|
23
23
|
isRequestOpen: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Platform-owned: the ids of the conversation's comments this answer replies to, as the agent named them. The
|
|
26
|
+
* core passes it through untouched; a sink that has no such notion ignores it.
|
|
27
|
+
*/
|
|
28
|
+
replyToCommentIds?: readonly string[];
|
|
24
29
|
}
|
|
25
30
|
/**
|
|
26
31
|
* @name AnswerDeliveryResult
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answerSink.d.ts","sourceRoot":"","sources":["../../src/platform/answerSink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEtH;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"answerSink.d.ts","sourceRoot":"","sources":["../../src/platform/answerSink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEtH;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/F,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzF,uFAAuF;IACvF,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7F;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAGzF;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answerSink.js","sourceRoot":"","sources":["../../src/platform/answerSink.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"answerSink.js","sourceRoot":"","sources":["../../src/platform/answerSink.ts"],"names":[],"mappings":";;AA+EA,sCAGC;AASD,kDAMC;AAjGD,8CAAmF;AA0EnF;;;;GAIG;AACH,SAAgB,aAAa,CAAC,WAAwB,EAAE,GAAe;IACrE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC9G,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CAAC,WAAwB,EAAE,KAA6B;IAC/F,MAAM,GAAG,GAAG,IAAA,6BAAgB,EAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -42,6 +42,8 @@ export interface AnswerRequestArgs {
|
|
|
42
42
|
requestId: string;
|
|
43
43
|
kind: RequestAnswerKind;
|
|
44
44
|
body: string;
|
|
45
|
+
/** Platform-owned (a tracker's comment ids); handed to the sink untouched. */
|
|
46
|
+
replyToCommentIds?: readonly string[];
|
|
45
47
|
checkIsConversationInScope: (conversationKey: string) => boolean;
|
|
46
48
|
}
|
|
47
49
|
/** @description What the tool reports back to the agent. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answerRequest.d.ts","sourceRoot":"","sources":["../../src/requests/answerRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"answerRequest.d.ts","sourceRoot":"","sources":["../../src/requests/answerRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAuB,iBAAiB,EAAsB,MAAM,SAAS,CAAC;AAE1F;;;;;;;;;;;;;;;;GAgBG;AAEH,sFAAsF;AACtF,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAS3C;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,YAAY,GAAG,mBAAmB,GAAG,cAAc,CAAC,CAAC;IAChG,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC3F;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,0BAA0B,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC;CAClE;AAED,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAyBhG,iEAAiE;AACjE,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA6CnH"}
|
|
@@ -4,6 +4,7 @@ exports.answerBodyMaxLength = void 0;
|
|
|
4
4
|
exports.answerRequest = answerRequest;
|
|
5
5
|
const sessionKey_1 = require("../sessionKey");
|
|
6
6
|
const answerSink_1 = require("../platform/answerSink");
|
|
7
|
+
const answerStyle_1 = require("./answerStyle");
|
|
7
8
|
/**
|
|
8
9
|
* @description The `answer_request` contract (request/answer core S3), kept out
|
|
9
10
|
* of the MCP surface so the rules are testable without HTTP:
|
|
@@ -38,7 +39,7 @@ function buildOpenAnswerMessage(requestId, kind, wasClosedMeanwhile) {
|
|
|
38
39
|
return `Delivered. Request ${requestId} had just been closed (by a newer request or another answer), so nothing about it changed.`;
|
|
39
40
|
}
|
|
40
41
|
if (kind === 'progress') {
|
|
41
|
-
return `Delivered. Request ${requestId} stays open โ send the full result with kind "final" (or "question" if you need the requester) at the end of your turn
|
|
42
|
+
return `Delivered. Request ${requestId} stays open โ send the full result with kind "final" (or "question" if you need the requester) at the end of your turn. ${answerStyle_1.answerStyleInstruction}`;
|
|
42
43
|
}
|
|
43
44
|
return `Delivered. Request ${requestId} is now closed (${kind}).`;
|
|
44
45
|
}
|
|
@@ -70,6 +71,7 @@ async function answerRequest(deps, args) {
|
|
|
70
71
|
body: args.body,
|
|
71
72
|
origin: lookup.request.origin,
|
|
72
73
|
isRequestOpen: lookup.isOpen,
|
|
74
|
+
...(args.replyToCommentIds === undefined ? {} : { replyToCommentIds: args.replyToCommentIds }),
|
|
73
75
|
});
|
|
74
76
|
if (!delivery.ok) {
|
|
75
77
|
return { ok: false, error: `The answer was NOT delivered: ${delivery.error}. Request ${args.requestId} is unchanged; you may retry.` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answerRequest.js","sourceRoot":"","sources":["../../src/requests/answerRequest.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"answerRequest.js","sourceRoot":"","sources":["../../src/requests/answerRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description The one sentence that says HOW an answer is written. Every
|
|
3
|
+
* surface that tells the agent to answer through `answer_request` โ the request
|
|
4
|
+
* header, the reminders, the bot MCP's instructions and tool description, the
|
|
5
|
+
* Jira context preamble โ carries exactly this text, so the guidance cannot
|
|
6
|
+
* drift between them. The readers of an answer are managers and QA, not
|
|
7
|
+
* engineers. Agent-facing, so English on every surface. Kept free of imports:
|
|
8
|
+
* the Jira preamble, which `bot.ts` loads statically, uses it.
|
|
9
|
+
*/
|
|
10
|
+
export declare const answerStyleInstruction = "Prefer to write each answer like for a manager or QA, brief and to the point.";
|
|
11
|
+
//# sourceMappingURL=answerStyle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerStyle.d.ts","sourceRoot":"","sources":["../../src/requests/answerStyle.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,kFAAkF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.answerStyleInstruction = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @description The one sentence that says HOW an answer is written. Every
|
|
6
|
+
* surface that tells the agent to answer through `answer_request` โ the request
|
|
7
|
+
* header, the reminders, the bot MCP's instructions and tool description, the
|
|
8
|
+
* Jira context preamble โ carries exactly this text, so the guidance cannot
|
|
9
|
+
* drift between them. The readers of an answer are managers and QA, not
|
|
10
|
+
* engineers. Agent-facing, so English on every surface. Kept free of imports:
|
|
11
|
+
* the Jira preamble, which `bot.ts` loads statically, uses it.
|
|
12
|
+
*/
|
|
13
|
+
exports.answerStyleInstruction = 'Prefer to write each answer like for a manager or QA, brief and to the point.';
|
|
14
|
+
//# sourceMappingURL=answerStyle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerStyle.js","sourceRoot":"","sources":["../../src/requests/answerStyle.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,+EAA+E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answerTail.d.ts","sourceRoot":"","sources":["../../src/requests/answerTail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"answerTail.d.ts","sourceRoot":"","sources":["../../src/requests/answerTail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC,2FAA2F;AAC3F,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAC5C,mGAAmG;AACnG,eAAO,MAAM,mBAAmB,QAAiB,CAAC;AAClD,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAGjG;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAE7E;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAQ/E;AAED,yFAAyF;AACzF,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAExE;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAK7G;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQjE"}
|
|
@@ -7,6 +7,7 @@ exports.addAnswerTailOutput = addAnswerTailOutput;
|
|
|
7
7
|
exports.checkIsAnswerTailWorthReminder = checkIsAnswerTailWorthReminder;
|
|
8
8
|
exports.decideAnswerTail = decideAnswerTail;
|
|
9
9
|
exports.buildAnswerTailReminder = buildAnswerTailReminder;
|
|
10
|
+
const answerStyle_1 = require("./answerStyle");
|
|
10
11
|
/**
|
|
11
12
|
* @description The answer tail: what the agent writes into its own stream AFTER
|
|
12
13
|
* its final answer, as pure decisions (the wake-up engine holds the state and
|
|
@@ -97,6 +98,7 @@ function buildAnswerTailReminder(requestId) {
|
|
|
97
98
|
'You kept working after that answer and wrote more in your own output. The requester does not see it: only answer_request reaches them.',
|
|
98
99
|
`If any of it matters to them (a result, a change, a problem), send it with answer_request (requestId "${requestId}", kind "final"). ` +
|
|
99
100
|
'If nothing new came of it, send nothing.',
|
|
101
|
+
answerStyle_1.answerStyleInstruction,
|
|
100
102
|
].join('\n');
|
|
101
103
|
}
|
|
102
104
|
//# sourceMappingURL=answerTail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answerTail.js","sourceRoot":"","sources":["../../src/requests/answerTail.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"answerTail.js","sourceRoot":"","sources":["../../src/requests/answerTail.ts"],"names":[],"mappings":";;;AA2DA,0DAGC;AAGD,4CAEC;AAGD,kDAQC;AAGD,wEAEC;AAiBD,4CAKC;AAOD,0DAQC;AAvHD,+CAAuD;AAGvD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,8EAA8E;AACjE,QAAA,iBAAiB,GAAG,MAAM,CAAC;AACxC,2FAA2F;AAC9E,QAAA,sBAAsB,GAAG,CAAC,CAAC;AACxC;;;;GAIG;AACU,QAAA,sBAAsB,GAAG,KAAK,CAAC;AAC5C,mGAAmG;AACtF,QAAA,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAClD,qFAAqF;AACxE,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAgBxC;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,MAAc,EAAE,KAAgC;IACtF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,CAAC,KAAK,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,mBAAmB,IAAI,CAAC,KAAK,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC;AACvG,CAAC;AAED,8DAA8D;AAC9D,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,KAAa;IAC/D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AACjF,CAAC;AAED,sEAAsE;AACtE,SAAgB,mBAAmB,CAAC,IAAgB,EAAE,KAAa;IACjE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,8BAAsB,CAAC;IAC3G,OAAO;QACL,GAAG,IAAI;QACP,YAAY,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,yBAAiB;KACjF,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,SAAgB,8BAA8B,CAAC,IAAgB;IAC7D,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,IAAI,8BAAsB,CAAC;AAC3E,CAAC;AASD;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,IAAgB,EAAE,KAAuB,EAAE,KAAa;IACvF,IAAI,KAAK,CAAC,gBAAgB;QAAE,OAAO,MAAM,CAAC;IAC1C,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACnF,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IACnC,OAAO,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,2BAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACjH,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,SAAiB;IACvD,OAAO;QACL,kDAAkD,SAAS,GAAG;QAC9D,wIAAwI;QACxI,yGAAyG,SAAS,oBAAoB;YACpI,0CAA0C;QAC5C,oCAAsB;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestHeader.d.ts","sourceRoot":"","sources":["../../src/requests/requestHeader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"requestHeader.d.ts","sourceRoot":"","sources":["../../src/requests/requestHeader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAErE;;;;;;;GAOG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,yGAAyG;AACzG,wBAAgB,2BAA2B,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAM3F;AAED,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAaxE;AAUD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEpG;AAKD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,GAAG,SAAS,CAG/F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,GAAG,aAAa,CAItG;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG,MAAM,CAQvG"}
|
|
@@ -6,6 +6,7 @@ exports.getPromptNotTakenIn = getPromptNotTakenIn;
|
|
|
6
6
|
exports.joinPromptsNotTakenIn = joinPromptsNotTakenIn;
|
|
7
7
|
exports.getWakeUpMessage = getWakeUpMessage;
|
|
8
8
|
exports.buildWakeUpReminder = buildWakeUpReminder;
|
|
9
|
+
const answerStyle_1 = require("./answerStyle");
|
|
9
10
|
/** @description The header's line naming the requests this one replaced; empty when it replaced none. */
|
|
10
11
|
function buildSupersededRequestsLine(supersededRequestIds) {
|
|
11
12
|
if (supersededRequestIds.length === 0)
|
|
@@ -21,6 +22,7 @@ function buildRequestHeader(options) {
|
|
|
21
22
|
`[Request ${options.requestId} ยท from: ${options.originDescription}]`,
|
|
22
23
|
`Answer it with the answer_request tool (requestId "${options.requestId}"): kind "final" with the full result at the end of your turn, ` +
|
|
23
24
|
'"question" if you need the requester before you can go on, "progress" for an interim note.',
|
|
25
|
+
answerStyle_1.answerStyleInstruction,
|
|
24
26
|
];
|
|
25
27
|
const supersededLine = buildSupersededRequestsLine(options.supersededRequestIds ?? []);
|
|
26
28
|
if (supersededLine !== '')
|
|
@@ -78,6 +80,7 @@ function buildWakeUpReminder(options) {
|
|
|
78
80
|
wakeUpReasonLines[options.reason],
|
|
79
81
|
`Answer it with answer_request (requestId "${options.requestId}"): kind "final" if the work is done, ` +
|
|
80
82
|
'"question" if you need the requester, or a short "progress" note if you are still working โ then continue.',
|
|
83
|
+
answerStyle_1.answerStyleInstruction,
|
|
81
84
|
].join('\n');
|
|
82
85
|
}
|
|
83
86
|
//# sourceMappingURL=requestHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestHeader.js","sourceRoot":"","sources":["../../src/requests/requestHeader.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"requestHeader.js","sourceRoot":"","sources":["../../src/requests/requestHeader.ts"],"names":[],"mappings":";;AAiCA,kEAMC;AAGD,gDAaC;AA0BD,kDAEC;AAWD,sDAGC;AAMD,4CAIC;AAOD,kDAQC;AA1HD,+CAAuD;AAgCvD,yGAAyG;AACzG,SAAgB,2BAA2B,CAAC,oBAAuC;IACjF,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC;IAChD,OAAO,4CAA4C,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACtH,2BAA2B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,qEAAqE;QACrH,+DAA+D,CAAC;AACpE,CAAC;AAED,6FAA6F;AAC7F,SAAgB,kBAAkB,CAAC,OAA6B;IAC9D,MAAM,KAAK,GAAG;QACZ,YAAY,OAAO,CAAC,SAAS,YAAY,OAAO,CAAC,iBAAiB,GAAG;QACrE,sDAAsD,OAAO,CAAC,SAAS,iEAAiE;YACtI,4FAA4F;QAC9F,oCAAsB;KACvB,CAAC;IACF,MAAM,cAAc,GAAG,2BAA2B,CAAC,OAAO,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IACvF,IAAI,cAAc,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,8HAA8H,CAAC,CAAC;IAC7I,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,CAAC;AAED,6DAA6D;AAC7D,MAAM,iBAAiB,GAAkD;IACvE,UAAU,EAAE,4CAA4C;IACxD,gBAAgB,EAAE,2DAA2D;IAC7E,QAAQ,EAAE,uFAAuF;IACjG,SAAS,EAAE,2CAA2C;CACvD,CAAC;AAaF;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,OAA4C;IAC9E,OAAO,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC;AACzE,CAAC;AAED,qHAAqH;AACrH,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,QAAqC;IACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC7G,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,OAAyB,EAAE,MAA2B;IACrF,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACjF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;AAC1G,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,OAA2D;IAC7F,OAAO;QACL,uBAAuB,OAAO,CAAC,SAAS,iBAAiB;QACzD,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC;QACjC,6CAA6C,OAAO,CAAC,SAAS,wCAAwC;YACpG,4GAA4G;QAC9G,oCAAsB;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -145,6 +145,14 @@ export declare class RequestLedger {
|
|
|
145
145
|
checkIsLoaded(): boolean;
|
|
146
146
|
private runLoad;
|
|
147
147
|
private assertLoaded;
|
|
148
|
+
/**
|
|
149
|
+
* @description The `createdAt` of a request created now in `conversationKey`: the clock, but after every request that
|
|
150
|
+
* stays open beside it โ another requester's in the same conversation. A conversation's open requests are ordered by
|
|
151
|
+
* it (oldest first), and two created in the same millisecond tied, the tie falling back to the store's key order, where
|
|
152
|
+
* a superseded requester's slot keeps the position of its FIRST request. The groups the new request replaces
|
|
153
|
+
* (`replacedGroups`) and other conversations do not count: they never sit beside it.
|
|
154
|
+
*/
|
|
155
|
+
private getNextCreatedAt;
|
|
148
156
|
/** Open entries whose group key still decodes (a key of an unregistered platform is left alone), oldest first. */
|
|
149
157
|
private getOpenEntries;
|
|
150
158
|
private getOpenEntryById;
|