charness 3.2.0 → 3.3.1
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 +3 -6
- package/DEVELOPMENT.md +15 -0
- package/README.md +111 -38
- package/SETUP.md +121 -16
- 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 +29 -6
- package/dist/adapters/claudeCliAdapter.d.ts.map +1 -1
- package/dist/adapters/claudeCliAdapter.js +70 -16
- 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 +93 -30
- 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 +385 -119
- 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 +736 -184
- package/dist/bot.js.map +1 -1
- package/dist/cli/claudeProfiles.d.ts +1 -1
- package/dist/cli/claudeProfiles.js +1 -1
- package/dist/cli/hot.d.ts +7 -1
- package/dist/cli/hot.d.ts.map +1 -1
- package/dist/cli/hot.js +29 -3
- package/dist/cli/hot.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/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/installManager.d.ts +20 -4
- package/dist/installManager.d.ts.map +1 -1
- package/dist/installManager.js +82 -14
- package/dist/installManager.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/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/requests/requestLedger.d.ts +8 -0
- package/dist/requests/requestLedger.d.ts.map +1 -1
- package/dist/requests/requestLedger.js +19 -1
- package/dist/requests/requestLedger.js.map +1 -1
- package/dist/scheduler/mcpSurface.js +4 -4
- 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 +54 -2
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +62 -1
- 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/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/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 +7 -3
- package/examples/docker-compose.yml +9 -7
- package/package.json +5 -4
- package/stt/gigaam_sidecar.py +800 -0
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sttInputTimeoutMs = void 0;
|
|
4
|
+
exports.createStt = createStt;
|
|
5
|
+
/**
|
|
6
|
+
* `/stt` — the voice-recognition settings, from any topic (General included), instance-wide like `/limits`: the
|
|
7
|
+
* main screen holds the ordered engine chain, Add engine and the language; each engine has a card (reorder, use /
|
|
8
|
+
* don't use, timeout, key, remove), and the local engine's own settings live only on its card and in its adding
|
|
9
|
+
* (add = install with live progress when needed; idle exit, workers, "try again" after the spawn-storm guard,
|
|
10
|
+
* remove its files). Everything is written to `stt.json` and applies to the next voice note. The screens, the callback codec and the decision of what a tap
|
|
11
|
+
* does are pure (`stt/sttScreenPlan.ts`); this file renders them, reads the host's facts and runs the effects.
|
|
12
|
+
* See README.md in this folder.
|
|
13
|
+
*/
|
|
14
|
+
const telegraf_1 = require("telegraf");
|
|
15
|
+
const i18n_1 = require("../../../i18n");
|
|
16
|
+
const sessionKey_1 = require("../../../sessionKey");
|
|
17
|
+
const sttInstall_1 = require("../../../stt/sttInstall");
|
|
18
|
+
const sttConfigEdit_1 = require("../../../stt/sttConfigEdit");
|
|
19
|
+
const sttAutoInstall_1 = require("../../../stt/sttAutoInstall");
|
|
20
|
+
const sttInstallReporter_1 = require("../../../stt/sttInstallReporter");
|
|
21
|
+
const sttScreenPlan_1 = require("../../../stt/sttScreenPlan");
|
|
22
|
+
const configDirFile_1 = require("../../../configDirFile");
|
|
23
|
+
const sttSettings_1 = require("../../../stt/sttSettings");
|
|
24
|
+
const callbackMessage_1 = require("./callbackMessage");
|
|
25
|
+
const callbackToast_1 = require("./callbackToast");
|
|
26
|
+
/** How long a typed-input step (the address, the key) waits before it is given up and its prompt retired. */
|
|
27
|
+
exports.sttInputTimeoutMs = 10 * 60 * 1000;
|
|
28
|
+
/** The first line of the install progress before the job reports anything. */
|
|
29
|
+
const initialInstallProgress = { phase: 'creatingEnvironment', detail: '', bytesDownloaded: 0 };
|
|
30
|
+
/** @description Build the `/stt` feature over its ports: the command (+ hidden aliases), its buttons and the typed-input hooks the text handler calls. */
|
|
31
|
+
function createStt(ports) {
|
|
32
|
+
const { bot, command, getState, replyToThread, editThreadMessage, deleteThreadMessage, authoriseContext, withThreadLocale, getConfigPath, getDataDir, getResolvedSettings, getOwnerContext, owner, installJobs, getGeneralKey, } = ports;
|
|
33
|
+
const answerWithWholeText = (0, callbackToast_1.createWholeTextAnswerer)(replyToThread);
|
|
34
|
+
const pendingInputs = new Map();
|
|
35
|
+
const installMessagePorts = (0, sttInstallReporter_1.createSttInstallMessagePorts)({ getState, replyToThread, editThreadMessage, withThreadLocale }, i18n_1.t);
|
|
36
|
+
// ── rendering ──
|
|
37
|
+
async function gatherScreenInput() {
|
|
38
|
+
const dataDir = getDataDir();
|
|
39
|
+
const isInstalling = (0, sttInstall_1.isGigaamInstalling)(dataDir);
|
|
40
|
+
return {
|
|
41
|
+
resolved: getResolvedSettings(),
|
|
42
|
+
configPath: getConfigPath(),
|
|
43
|
+
isLocalInstalled: (0, sttInstall_1.isGigaamInstalled)(dataDir),
|
|
44
|
+
installing: isInstalling ? ((0, sttInstall_1.readSttInstallProgress)(dataDir) ?? initialInstallProgress) : null,
|
|
45
|
+
sidecar: await owner.getStatus(),
|
|
46
|
+
hasOwnerContext: getOwnerContext() !== null,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function toMarkup(rows) {
|
|
50
|
+
return telegraf_1.Markup.inlineKeyboard(rows.map((row) => row.map((button) => telegraf_1.Markup.button.callback(button.text, button.data))));
|
|
51
|
+
}
|
|
52
|
+
function formatNotice(notice) {
|
|
53
|
+
return notice ? (0, i18n_1.t)(notice.code, notice.vars) : undefined;
|
|
54
|
+
}
|
|
55
|
+
/** Show a screen: a new message when `messageId` is null, else an edit of it (a new message when the edit fails). */
|
|
56
|
+
async function render(key, messageId, screenId, notice) {
|
|
57
|
+
const input = await gatherScreenInput();
|
|
58
|
+
const noticeText = typeof notice === 'string' ? notice : formatNotice(notice);
|
|
59
|
+
const screen = (0, sttScreenPlan_1.buildSttScreen)(screenId, input, i18n_1.t, noticeText) ?? (0, sttScreenPlan_1.buildSttScreen)({ id: 'main' }, input, i18n_1.t, noticeText);
|
|
60
|
+
if (!screen)
|
|
61
|
+
return messageId;
|
|
62
|
+
const markup = toMarkup(screen.rows);
|
|
63
|
+
if (messageId !== null && (await editThreadMessage(key, messageId, screen.text, markup)))
|
|
64
|
+
return messageId;
|
|
65
|
+
return replyToThread(key, screen.text, markup);
|
|
66
|
+
}
|
|
67
|
+
// ── saving ──
|
|
68
|
+
/** Write the next settings and stop a process the change invalidates; `false` (and a log line) when the file cannot be written. */
|
|
69
|
+
async function save(previous, next) {
|
|
70
|
+
try {
|
|
71
|
+
(0, sttSettings_1.saveSttConfig)(getConfigPath(), next);
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
console.warn(`[STT] could not write ${getConfigPath()} (${(0, configDirFile_1.getCaughtErrnoCode)(e)})`);
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
await owner.applySettingsChange(previous, next);
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
console.warn('[STT] applying the settings change failed:', e instanceof Error ? e.message : e);
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
// ── typed input (the address, the key) ──
|
|
86
|
+
function clearPending(threadKey) {
|
|
87
|
+
const pending = pendingInputs.get(threadKey);
|
|
88
|
+
if (pending)
|
|
89
|
+
clearTimeout(pending.timer);
|
|
90
|
+
pendingInputs.delete(threadKey);
|
|
91
|
+
return pending;
|
|
92
|
+
}
|
|
93
|
+
function armInput(key, spec) {
|
|
94
|
+
const threadKey = (0, sessionKey_1.keyToString)(key);
|
|
95
|
+
clearPending(threadKey);
|
|
96
|
+
const timer = setTimeout(() => {
|
|
97
|
+
const pending = pendingInputs.get(threadKey);
|
|
98
|
+
if (!pending || pending.promptMessageId !== spec.promptMessageId)
|
|
99
|
+
return;
|
|
100
|
+
pendingInputs.delete(threadKey);
|
|
101
|
+
void withThreadLocale(key, () => editThreadMessage(key, pending.promptMessageId, (0, i18n_1.t)('stt.input.expired'))).catch(() => { });
|
|
102
|
+
}, exports.sttInputTimeoutMs);
|
|
103
|
+
timer.unref();
|
|
104
|
+
pendingInputs.set(threadKey, { ...spec, timer });
|
|
105
|
+
}
|
|
106
|
+
/** Edit the screen message into a prompt with a cancel button and arm the step. */
|
|
107
|
+
async function armPrompt(key, messageId, spec, promptText) {
|
|
108
|
+
const revision = (0, sttScreenPlan_1.computeSttRevision)(getResolvedSettings().settings);
|
|
109
|
+
const markup = toMarkup((0, sttScreenPlan_1.buildSttCancelRow)(i18n_1.t, revision));
|
|
110
|
+
let promptMessageId = messageId;
|
|
111
|
+
if (promptMessageId === null || !(await editThreadMessage(key, promptMessageId, promptText, markup))) {
|
|
112
|
+
promptMessageId = await replyToThread(key, promptText, markup);
|
|
113
|
+
}
|
|
114
|
+
if (promptMessageId !== null)
|
|
115
|
+
armInput(key, { ...spec, promptMessageId });
|
|
116
|
+
}
|
|
117
|
+
/** The typed step the next plain message of the topic answers; the output trace must not record that message. */
|
|
118
|
+
function getAwaitedStep(key) {
|
|
119
|
+
const step = pendingInputs.get((0, sessionKey_1.keyToString)(key))?.step;
|
|
120
|
+
return step === 'url' || step === 'key' ? step : null;
|
|
121
|
+
}
|
|
122
|
+
/** A slash command or a topic teardown ends an armed step; the prompt is retired out loud only when asked to. */
|
|
123
|
+
async function cancelInput(key, options = {}) {
|
|
124
|
+
const pending = clearPending((0, sessionKey_1.keyToString)(key));
|
|
125
|
+
if (!pending || options.isSilent)
|
|
126
|
+
return;
|
|
127
|
+
await withThreadLocale(key, () => editThreadMessage(key, pending.promptMessageId, (0, i18n_1.t)('stt.input.cancelled')));
|
|
128
|
+
}
|
|
129
|
+
async function saveNewKey(previous, target, apiKey) {
|
|
130
|
+
let result;
|
|
131
|
+
let engineId;
|
|
132
|
+
if (target.kind === 'engine') {
|
|
133
|
+
result = (0, sttConfigEdit_1.setSttEngineApiKey)(previous, target.engineId, apiKey);
|
|
134
|
+
engineId = target.engineId;
|
|
135
|
+
}
|
|
136
|
+
else if (target.kind === 'newKeyed') {
|
|
137
|
+
result = (0, sttConfigEdit_1.addSttEngine)(previous, { kind: target.engineKind, apiKey });
|
|
138
|
+
engineId = result.engineId;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
result = (0, sttConfigEdit_1.addSttEngine)(previous, { kind: 'url', url: target.url, apiKey });
|
|
142
|
+
engineId = result.engineId;
|
|
143
|
+
}
|
|
144
|
+
if (!result.ok || engineId === undefined || !(await save(previous, result.config)))
|
|
145
|
+
return { ok: false };
|
|
146
|
+
return { ok: true, next: result.config, engineId };
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* @description The text handler's hook: the message is the answer to an armed step. A plausible key is deleted
|
|
150
|
+
* from the topic the moment it is accepted and never echoed, logged or put into an error; an implausible one
|
|
151
|
+
* stays visible (it is not a secret) and the step re-arms.
|
|
152
|
+
*/
|
|
153
|
+
async function submitInput(key, text, userMessageId) {
|
|
154
|
+
const threadKey = (0, sessionKey_1.keyToString)(key);
|
|
155
|
+
const pending = pendingInputs.get(threadKey);
|
|
156
|
+
if (!pending || (pending.step !== 'url' && pending.step !== 'key'))
|
|
157
|
+
return;
|
|
158
|
+
await withThreadLocale(key, async () => {
|
|
159
|
+
const decision = (0, sttScreenPlan_1.decideSttInput)(pending.step === 'url' ? 'url' : 'key', text);
|
|
160
|
+
if (decision.outcome !== 'accept') {
|
|
161
|
+
if (decision.outcome === 'retryAndDelete')
|
|
162
|
+
await deleteThreadMessage(key, userMessageId);
|
|
163
|
+
armInput(key, { step: pending.step, target: pending.target, promptMessageId: pending.promptMessageId });
|
|
164
|
+
await replyToThread(key, (0, i18n_1.t)(`stt.input.${decision.hint}`));
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (pending.step === 'url') {
|
|
168
|
+
armInput(key, { step: 'keyChoice', url: decision.value, promptMessageId: pending.promptMessageId });
|
|
169
|
+
await render(key, pending.promptMessageId, { id: 'keyChoice' });
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
// A key: out of the topic's history FIRST, then used.
|
|
173
|
+
await deleteThreadMessage(key, userMessageId);
|
|
174
|
+
clearPending(threadKey);
|
|
175
|
+
const previous = getResolvedSettings().settings;
|
|
176
|
+
const target = pending.target;
|
|
177
|
+
const saved = target ? await saveNewKey(previous, target, decision.value) : { ok: false };
|
|
178
|
+
if (!saved.ok) {
|
|
179
|
+
await render(key, pending.promptMessageId, { id: 'main' }, buildSaveFailedNotice());
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
await render(key, pending.promptMessageId, { id: 'card', engineId: saved.engineId }, { code: 'stt.input.keySaved' });
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
// ── the install ──
|
|
186
|
+
/** True while this process runs an install report that `stt.json` asked for (never two messages for one job). */
|
|
187
|
+
let isAutoInstallRunning = false;
|
|
188
|
+
function logInstallOutcome(outcome) {
|
|
189
|
+
if (outcome.phase === 'failed')
|
|
190
|
+
console.warn(`[STT] install failed: ${outcome.error ?? 'unknown error'}`);
|
|
191
|
+
else
|
|
192
|
+
console.log('[STT] install finished: the local engine starts with the next voice note');
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* The install is over: a finished one puts the local engine into the chain (when the install was asked for in
|
|
196
|
+
* `/stt`) and says so — or names why it could not; a failed one shows the error and the log tail with Retry.
|
|
197
|
+
*/
|
|
198
|
+
async function buildInstallEnding(outcome, shouldEnable) {
|
|
199
|
+
// Read after the save: a button must carry the revision of the settings it now opens.
|
|
200
|
+
const buildButton = (text, action) => ({
|
|
201
|
+
text,
|
|
202
|
+
data: (0, sttScreenPlan_1.buildSttCallback)(action, [], (0, sttScreenPlan_1.computeSttRevision)(getResolvedSettings().settings)),
|
|
203
|
+
});
|
|
204
|
+
const openSettingsText = (0, i18n_1.t)('stt.btn.openSettings');
|
|
205
|
+
if (outcome.phase !== 'done') {
|
|
206
|
+
return {
|
|
207
|
+
text: (0, sttScreenPlan_1.buildSttInstallProgressText)(outcome, 0, i18n_1.t),
|
|
208
|
+
rows: [[buildButton((0, i18n_1.t)('stt.btn.retry'), 'er'), buildButton(openSettingsText, 'bk')]],
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
let text = (0, i18n_1.t)('stt.install.done');
|
|
212
|
+
if (shouldEnable) {
|
|
213
|
+
const previous = getResolvedSettings().settings;
|
|
214
|
+
const enabled = (0, sttConfigEdit_1.enableLocalSttEngine)(previous);
|
|
215
|
+
if (!enabled.ok)
|
|
216
|
+
text = (0, i18n_1.t)('stt.install.doneNotAdded', { limit: sttSettings_1.sttEngineLimit });
|
|
217
|
+
else if (enabled.config !== previous && !(await save(previous, enabled.config)))
|
|
218
|
+
text = (0, i18n_1.t)('stt.install.doneNotSaved', { path: getConfigPath() });
|
|
219
|
+
}
|
|
220
|
+
// Ready and listed: the message becomes the local engine's card (read after the save, so it shows the saved list).
|
|
221
|
+
const localEngine = getResolvedSettings().settings.engines.find((engine) => engine.kind === 'gigaam');
|
|
222
|
+
const card = localEngine ? (0, sttScreenPlan_1.buildSttScreen)({ id: 'card', engineId: localEngine.id }, await gatherScreenInput(), i18n_1.t, text) : null;
|
|
223
|
+
if (card)
|
|
224
|
+
return card;
|
|
225
|
+
return { text, rows: [[buildButton(openSettingsText, 'bk')]] };
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* The ONE way an install that reports into a message ends — the tapped button, a re-attach after a reload and an
|
|
229
|
+
* install that finished while the bot was down all come through here: enable, save, the final edit, and only
|
|
230
|
+
* then forget the message (a reload in between repeats this idempotent step instead of losing it).
|
|
231
|
+
*/
|
|
232
|
+
async function finishInstall(key, messageId, outcome, shouldEnable) {
|
|
233
|
+
logInstallOutcome(outcome);
|
|
234
|
+
await withThreadLocale(key, async () => {
|
|
235
|
+
const ending = await buildInstallEnding(outcome, shouldEnable);
|
|
236
|
+
const markup = toMarkup(ending.rows);
|
|
237
|
+
if (messageId === null || !(await editThreadMessage(key, messageId, ending.text, markup))) {
|
|
238
|
+
await replyToThread(key, ending.text, markup);
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
const remembered = getState().getSttInstallProgressMessage();
|
|
242
|
+
// Only the message this job owned: another job's message (a /stt tap during an auto-install) stays remembered.
|
|
243
|
+
if (remembered && remembered.threadKey === (0, sessionKey_1.keyToString)(key) && (messageId === null || remembered.messageId === messageId)) {
|
|
244
|
+
await getState().setSttInstallProgressMessage(null);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/** Install (or attach to the running install) with the progress edited into `messageId`; on success the local engine joins the chain. */
|
|
248
|
+
async function runInstall(key, messageId, isAttach) {
|
|
249
|
+
const threadKey = (0, sessionKey_1.keyToString)(key);
|
|
250
|
+
if (!isAttach) {
|
|
251
|
+
await editThreadMessage(key, messageId, (0, sttScreenPlan_1.buildSttInstallProgressText)(initialInstallProgress, 0, i18n_1.t));
|
|
252
|
+
}
|
|
253
|
+
const message = { threadKey, messageId, shouldEnableOnDone: true };
|
|
254
|
+
await getState().setSttInstallProgressMessage(message);
|
|
255
|
+
const reporter = (0, sttInstallReporter_1.createSttInstallMessageReporter)(installMessagePorts, key, message);
|
|
256
|
+
const outcome = await installJobs.start({ reportTo: reporter.report });
|
|
257
|
+
await finishInstall(key, reporter.getMessageId() ?? messageId, outcome, true);
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* `stt.json` names the local engine before it is installed (a hand edit, or boot): fetch it with the progress in
|
|
261
|
+
* one message in General — or as `[STT] install:` lines when no group is paired. The engine is already named, so
|
|
262
|
+
* nothing is enabled at the end. A job whose message is already owned (a `/stt` tap, a boot re-attach) is left
|
|
263
|
+
* to that owner; a failure is reported once and not retried.
|
|
264
|
+
*/
|
|
265
|
+
async function startAutoInstall() {
|
|
266
|
+
if (isAutoInstallRunning || getState().getSttInstallProgressMessage())
|
|
267
|
+
return;
|
|
268
|
+
isAutoInstallRunning = true;
|
|
269
|
+
try {
|
|
270
|
+
const generalKey = getGeneralKey();
|
|
271
|
+
if (generalKey === null) {
|
|
272
|
+
logInstallOutcome(await installJobs.start({ reportTo: (0, sttInstallReporter_1.createSttInstallLogReporter)((line) => console.log(line)) }));
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
const reporter = (0, sttInstallReporter_1.createSttInstallMessageReporter)(installMessagePorts, generalKey);
|
|
276
|
+
const outcome = await installJobs.start({ reportTo: reporter.report });
|
|
277
|
+
await finishInstall(generalKey, reporter.getMessageId(), outcome, false);
|
|
278
|
+
}
|
|
279
|
+
catch (e) {
|
|
280
|
+
console.warn('[STT] install job error:', e instanceof Error ? e.message : e);
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
isAutoInstallRunning = false;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/** How a job that is no longer running ended, from what it left on disk: done only while the engine is really installed. */
|
|
287
|
+
function readEndedInstallOutcome() {
|
|
288
|
+
const dataDir = getDataDir();
|
|
289
|
+
const last = (0, sttInstall_1.readSttInstallProgress)(dataDir);
|
|
290
|
+
if (last?.phase === 'failed')
|
|
291
|
+
return last;
|
|
292
|
+
if (last?.phase === 'done' && (0, sttInstall_1.isGigaamInstalled)(dataDir))
|
|
293
|
+
return last;
|
|
294
|
+
return (0, sttAutoInstall_1.createFailedInstallProgress)(sttAutoInstall_1.installJobEndedWithoutResultError);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Boot, after the state is loaded: an install a reload interrupted is picked up where it stands — attached to
|
|
298
|
+
* while its job still runs, or settled at once when it ended while the bot was down (the remembered message is
|
|
299
|
+
* turned into the outcome, never left frozen at "installing"); with no message to continue, a running job or a
|
|
300
|
+
* `stt.json` that names the missing engine starts the auto-install.
|
|
301
|
+
*/
|
|
302
|
+
async function resumeInstallAtBoot() {
|
|
303
|
+
const remembered = getState().getSttInstallProgressMessage();
|
|
304
|
+
const rememberedKey = remembered ? (0, sessionKey_1.tryKeyFromString)(remembered.threadKey) : null;
|
|
305
|
+
if (remembered && rememberedKey) {
|
|
306
|
+
const shouldEnable = remembered.shouldEnableOnDone === true;
|
|
307
|
+
if (!(0, sttInstall_1.isGigaamInstalling)(getDataDir())) {
|
|
308
|
+
await finishInstall(rememberedKey, remembered.messageId, readEndedInstallOutcome(), shouldEnable);
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
try {
|
|
312
|
+
const reporter = (0, sttInstallReporter_1.createSttInstallMessageReporter)(installMessagePorts, rememberedKey, remembered);
|
|
313
|
+
const outcome = await installJobs.start({ reportTo: reporter.report });
|
|
314
|
+
await finishInstall(rememberedKey, reporter.getMessageId() ?? remembered.messageId, outcome, shouldEnable);
|
|
315
|
+
}
|
|
316
|
+
catch (e) {
|
|
317
|
+
console.warn('[STT] install job error:', e instanceof Error ? e.message : e);
|
|
318
|
+
}
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
if (remembered)
|
|
322
|
+
await getState().setSttInstallProgressMessage(null);
|
|
323
|
+
if ((0, sttInstall_1.isGigaamInstalling)(getDataDir()) || getResolvedSettings().needsAutoInstall)
|
|
324
|
+
await startAutoInstall();
|
|
325
|
+
}
|
|
326
|
+
async function removeLocalEngineFiles() {
|
|
327
|
+
await owner.stop();
|
|
328
|
+
return (0, sttInstall_1.removeSttInstall)(getDataDir());
|
|
329
|
+
}
|
|
330
|
+
// ── command and buttons ──
|
|
331
|
+
function registerSttCommands() {
|
|
332
|
+
// Bare `/stt` opens the screen; `/voice` and `/speech` are hidden aliases. Not gated on a bound folder or a
|
|
333
|
+
// session: the voice settings are instance-wide and must be reachable before anything else is set up.
|
|
334
|
+
command(['stt', 'voice', 'speech'], async (_ctx, key) => {
|
|
335
|
+
await render(key, null, { id: 'main' });
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
/** The shared tap prologue: authorise, resolve the topic, run under its locale. */
|
|
339
|
+
async function handleTap(ctx, run) {
|
|
340
|
+
const key = await authoriseContext(ctx);
|
|
341
|
+
if (!key) {
|
|
342
|
+
await ctx.answerCbQuery((0, i18n_1.t)('cb.access_denied'));
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
await withThreadLocale(key, () => run(key, (0, callbackMessage_1.getCallbackMessageId)(ctx)));
|
|
346
|
+
}
|
|
347
|
+
/** The notice for a save that failed: it names the file, so the operator knows which directory to fix. */
|
|
348
|
+
function buildSaveFailedNotice() {
|
|
349
|
+
return { code: 'stt.saveFailed', vars: { path: getConfigPath() } };
|
|
350
|
+
}
|
|
351
|
+
/** A tap's answer: the notice as the toast (whole, or cut with the full text posted), or a bare answer when there is none. */
|
|
352
|
+
async function answerWith(ctx, key, notice) {
|
|
353
|
+
const text = formatNotice(notice);
|
|
354
|
+
if (text === undefined)
|
|
355
|
+
await ctx.answerCbQuery();
|
|
356
|
+
else
|
|
357
|
+
await answerWithWholeText(ctx, key, text);
|
|
358
|
+
}
|
|
359
|
+
function registerSttCallbacks() {
|
|
360
|
+
bot.action(sttScreenPlan_1.sttCallbackRe, (ctx) => handleTap(ctx, async (key, messageId) => {
|
|
361
|
+
const parsed = (0, sttScreenPlan_1.parseSttCallback)(ctx.match[0]);
|
|
362
|
+
if (!parsed) {
|
|
363
|
+
await ctx.answerCbQuery();
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
const dataDir = getDataDir();
|
|
367
|
+
const settings = getResolvedSettings().settings;
|
|
368
|
+
const pending = pendingInputs.get((0, sessionKey_1.keyToString)(key));
|
|
369
|
+
const outcome = (0, sttScreenPlan_1.reduceSttAction)(parsed, {
|
|
370
|
+
config: settings,
|
|
371
|
+
isLocalInstalled: (0, sttInstall_1.isGigaamInstalled)(dataDir),
|
|
372
|
+
isLocalInstalling: (0, sttInstall_1.isGigaamInstalling)(dataDir),
|
|
373
|
+
pendingUrl: pending?.step === 'keyChoice' ? (pending.url ?? null) : null,
|
|
374
|
+
});
|
|
375
|
+
switch (outcome.kind) {
|
|
376
|
+
case 'stale':
|
|
377
|
+
await ctx.answerCbQuery((0, i18n_1.t)('stt.stale'));
|
|
378
|
+
await render(key, messageId, { id: 'main' });
|
|
379
|
+
return;
|
|
380
|
+
case 'show':
|
|
381
|
+
await ctx.answerCbQuery();
|
|
382
|
+
await render(key, messageId, outcome.screen);
|
|
383
|
+
return;
|
|
384
|
+
case 'save':
|
|
385
|
+
if (!(await save(settings, outcome.config))) {
|
|
386
|
+
await answerWith(ctx, key, buildSaveFailedNotice());
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
await answerWith(ctx, key, outcome.notice);
|
|
390
|
+
await render(key, messageId, outcome.screen);
|
|
391
|
+
return;
|
|
392
|
+
case 'armKey':
|
|
393
|
+
await ctx.answerCbQuery();
|
|
394
|
+
await armPrompt(key, messageId, { step: 'key', target: outcome.target }, (0, i18n_1.t)('stt.prompt.key'));
|
|
395
|
+
return;
|
|
396
|
+
case 'armUrl':
|
|
397
|
+
await ctx.answerCbQuery();
|
|
398
|
+
await armPrompt(key, messageId, { step: 'url' }, (0, i18n_1.t)('stt.prompt.url'));
|
|
399
|
+
return;
|
|
400
|
+
case 'cancelInput':
|
|
401
|
+
await ctx.answerCbQuery();
|
|
402
|
+
clearPending((0, sessionKey_1.keyToString)(key));
|
|
403
|
+
await render(key, messageId, { id: 'main' });
|
|
404
|
+
return;
|
|
405
|
+
case 'effect':
|
|
406
|
+
await runEffect(ctx, key, messageId, outcome.effect, settings, outcome.screen);
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
}));
|
|
410
|
+
}
|
|
411
|
+
async function runEffect(ctx, key, messageId, effect, settings, screenAfter = { id: 'main' }) {
|
|
412
|
+
switch (effect) {
|
|
413
|
+
case 'close':
|
|
414
|
+
await ctx.answerCbQuery();
|
|
415
|
+
if (messageId !== null)
|
|
416
|
+
await deleteThreadMessage(key, messageId);
|
|
417
|
+
return;
|
|
418
|
+
case 'resetGuard':
|
|
419
|
+
owner.resetSpawnGuard();
|
|
420
|
+
await ctx.answerCbQuery((0, i18n_1.t)('stt.notice.guardReset'));
|
|
421
|
+
await render(key, messageId, screenAfter);
|
|
422
|
+
return;
|
|
423
|
+
case 'install':
|
|
424
|
+
case 'attachInstall':
|
|
425
|
+
await ctx.answerCbQuery();
|
|
426
|
+
if (messageId === null)
|
|
427
|
+
return;
|
|
428
|
+
// Minutes long: never hold the update handler (the topic's other taps and messages) for it.
|
|
429
|
+
void runInstall(key, messageId, effect === 'attachInstall').catch((e) => {
|
|
430
|
+
console.warn('[STT] install flow error:', e instanceof Error ? e.message : e);
|
|
431
|
+
});
|
|
432
|
+
return;
|
|
433
|
+
case 'removeFiles': {
|
|
434
|
+
const isRemoved = await removeLocalEngineFiles();
|
|
435
|
+
if (!isRemoved) {
|
|
436
|
+
// An install started between the tap and the removal: the files stay, the card (with its progress) is shown again.
|
|
437
|
+
await ctx.answerCbQuery((0, i18n_1.t)('stt.notice.busyInstalling'));
|
|
438
|
+
await render(key, messageId, screenAfter);
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
const dropped = (0, sttConfigEdit_1.dropLocalSttEngine)(settings);
|
|
442
|
+
if (dropped.ok && dropped.config.engines.length !== settings.engines.length)
|
|
443
|
+
await save(settings, dropped.config);
|
|
444
|
+
await ctx.answerCbQuery((0, i18n_1.t)('stt.notice.localRemoved'));
|
|
445
|
+
await render(key, messageId, { id: 'main' });
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
return {
|
|
451
|
+
registerSttCommands,
|
|
452
|
+
registerSttCallbacks,
|
|
453
|
+
startSttAutoInstall: startAutoInstall,
|
|
454
|
+
resumeSttInstallAtBoot: resumeInstallAtBoot,
|
|
455
|
+
getAwaitedSttStep: getAwaitedStep,
|
|
456
|
+
submitSttInput: submitInput,
|
|
457
|
+
cancelSttInput: cancelInput,
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
//# sourceMappingURL=stt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stt.js","sourceRoot":"","sources":["../../../../src/connectors/telegram/commands/stt.ts"],"names":[],"mappings":"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"}
|
package/dist/effortLevels.d.ts
CHANGED
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
* OpenCode adapter reads it live from `GET /config/providers` and applies
|
|
19
19
|
* the chosen variant per-prompt. See `openCodeAdapter.ts`.
|
|
20
20
|
*/
|
|
21
|
+
import type { SessionKey } from './sessionKey';
|
|
22
|
+
import type { AgentAdapter } from './types';
|
|
21
23
|
/**
|
|
22
24
|
* @description Claude `/effort` slash-command levels, in the order they're
|
|
23
25
|
* shown to the user. Verified against `claude 2.1.158`.
|
|
@@ -28,16 +30,57 @@
|
|
|
28
30
|
export declare const claudeEffortLevels: readonly ["low", "medium", "high", "xhigh", "max", "auto", "ultracode"];
|
|
29
31
|
export type ClaudeEffortLevel = (typeof claudeEffortLevels)[number];
|
|
30
32
|
/**
|
|
31
|
-
* @description The
|
|
32
|
-
*
|
|
33
|
-
* `/effort` pref. An explicit pick always wins and is never overwritten;
|
|
34
|
-
* the default is a derived fallback, never persisted as a pref.
|
|
33
|
+
* @description The code fallback for the reasoning effort of a bot-started session — the last link of the chain
|
|
34
|
+
* that decides what a session runs with, first that exists wins:
|
|
35
35
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
36
|
+
* 1. the topic's own `/effort` pick (the per-thread pref);
|
|
37
|
+
* 2. the platform's default (Jira: `jira.json`'s effort, `sessionLaunchDefaults.ts`);
|
|
38
|
+
* 3. the instance default — `defaultEffort` in `settings.json`, set from `/effort` in General
|
|
39
|
+
* ({@link getInstanceDefaultEffort});
|
|
40
|
+
* 4. this constant.
|
|
41
|
+
*
|
|
42
|
+
* An explicit pick always wins and is never overwritten; the default is a derived fallback, never persisted as a
|
|
43
|
+
* pref. The only real levels are `low`/`medium`/`high`/`xhigh`/`max` (there is no `xlarge`). OpenCode clamps the
|
|
44
|
+
* result to the resolved model's variants via {@link clampEffortToAvailable}; Claude clamps unsupported levels itself.
|
|
39
45
|
*/
|
|
40
46
|
export declare const defaultEffortLevel: ClaudeEffortLevel;
|
|
47
|
+
/**
|
|
48
|
+
* @description Where the instance default effort comes from (`settings.json`). `null` = nothing set. The
|
|
49
|
+
* composition root registers the file-backed reader; a module that merely needs the level never touches the file.
|
|
50
|
+
*/
|
|
51
|
+
export type InstanceDefaultEffortReader = () => ClaudeEffortLevel | null;
|
|
52
|
+
/** @description Register where {@link getInstanceDefaultEffort} reads the instance default from (the bot, once, at start-up). */
|
|
53
|
+
export declare function setInstanceDefaultEffortReader(reader: InstanceDefaultEffortReader): void;
|
|
54
|
+
/**
|
|
55
|
+
* @description The reasoning effort of every topic that has no `/effort` pick of its own: the instance default
|
|
56
|
+
* from `settings.json`, else the code fallback {@link defaultEffortLevel}. Read per call (the reader caches by the
|
|
57
|
+
* file's stamp), so a hand edit applies to the next session start without a restart.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getInstanceDefaultEffort(): ClaudeEffortLevel;
|
|
60
|
+
/**
|
|
61
|
+
* @name ThreadEffortView
|
|
62
|
+
* @description What `/status`, the banner, the ready notice and `/effort` show for a thread.
|
|
63
|
+
*/
|
|
64
|
+
export interface ThreadEffortView {
|
|
65
|
+
/** The level the live session really uses; with no live session (or an unknown one), the level the next start will use. */
|
|
66
|
+
level: string;
|
|
67
|
+
/** Set only when the next start will use a DIFFERENT level than `level` (the default changed under a running session). */
|
|
68
|
+
nextStartLevel: string | null;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @description The effort a thread shows: the level its RUNNING session uses (a General change never reaches a
|
|
72
|
+
* running session — it applies from the next start), else the level the next start will use; plus the next start's
|
|
73
|
+
* level when it differs, so the screen can say "xhigh (medium from the next start)". `null` for a backend with no
|
|
74
|
+
* effort concept (no `getEffortState`) and for a thread whose model is known to offer no levels — then there is
|
|
75
|
+
* nothing to show.
|
|
76
|
+
*/
|
|
77
|
+
export declare function getThreadEffortView(adapter: Pick<AgentAdapter, 'getEffortState'>, key: SessionKey): ThreadEffortView | null;
|
|
78
|
+
/**
|
|
79
|
+
* @description The level a backend that offers only `levels` runs for `level`: the level itself when offered, else
|
|
80
|
+
* the nearest it has ({@link clampEffortToAvailable}); the level itself when the clamp has nothing to say (`auto`,
|
|
81
|
+
* which sends no variant, or a model with no variants).
|
|
82
|
+
*/
|
|
83
|
+
export declare function getEffortAmongLevels(level: string, levels: readonly string[]): string;
|
|
41
84
|
/**
|
|
42
85
|
* @description Clamp a desired effort level to what a model actually offers.
|
|
43
86
|
*
|
|
@@ -51,6 +94,13 @@ export declare const defaultEffortLevel: ClaudeEffortLevel;
|
|
|
51
94
|
* - else return the highest known variant with rank ≤ rank(desired); if none
|
|
52
95
|
* are below, return the lowest known variant (closest above).
|
|
53
96
|
*
|
|
97
|
+
* The two Claude-only levels have no rank, and "nothing is below them" must not
|
|
98
|
+
* mean the lowest variant (a General default of `ultracode` would run every
|
|
99
|
+
* OpenCode topic at its weakest):
|
|
100
|
+
*
|
|
101
|
+
* - `ultracode` (the heaviest profile) → the model's HIGHEST known variant.
|
|
102
|
+
* - `auto` (claude's own per-model default) → `null`: no variant is sent.
|
|
103
|
+
*
|
|
54
104
|
* Claude clamps itself, so it never calls this.
|
|
55
105
|
*/
|
|
56
106
|
export declare function clampEffortToAvailable(desired: string, available: readonly string[]): string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effortLevels.d.ts","sourceRoot":"","sources":["../src/effortLevels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"effortLevels.d.ts","sourceRoot":"","sources":["../src/effortLevels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,yEAQrB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,EAAE,iBAA4B,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAIzE,iIAAiI;AACjI,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,2BAA2B,GAAG,IAAI,CAExF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,iBAAiB,CAE5D;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2HAA2H;IAC3H,KAAK,EAAE,MAAM,CAAC;IACd,0HAA0H;IAC1H,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAK3H;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAErF;AAYD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,MAAM,GAAG,IAAI,CA4Bf;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAEnD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAElF"}
|