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,491 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runSttCommand = exports.missingPythonToolError = exports.gigaamModelApproxBytes = exports.gigaamPinnedRequirements = exports.gigaamScriptVersion = void 0;
|
|
37
|
+
exports.getSttPaths = getSttPaths;
|
|
38
|
+
exports.getSidecarScriptPath = getSidecarScriptPath;
|
|
39
|
+
exports.planSttInstall = planSttInstall;
|
|
40
|
+
exports.detectSttInstallFacts = detectSttInstallFacts;
|
|
41
|
+
exports.isGigaamInstalled = isGigaamInstalled;
|
|
42
|
+
exports.isGigaamInstalling = isGigaamInstalling;
|
|
43
|
+
exports.getLastSttInstallProgress = getLastSttInstallProgress;
|
|
44
|
+
exports.readSttInstallProgress = readSttInstallProgress;
|
|
45
|
+
exports.formatDownloadDetail = formatDownloadDetail;
|
|
46
|
+
exports.runSttInstall = runSttInstall;
|
|
47
|
+
exports.removeSttInstall = removeSttInstall;
|
|
48
|
+
const child_process_1 = require("child_process");
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const os = __importStar(require("os"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const installManager_1 = require("../installManager");
|
|
53
|
+
const jsonStreamHost_1 = require("../utils/jsonStreamHost");
|
|
54
|
+
const sttChildEnv_1 = require("./sttChildEnv");
|
|
55
|
+
const configDirFile_1 = require("../configDirFile");
|
|
56
|
+
/**
|
|
57
|
+
* @description The install of the local speech engine: a private Python venv
|
|
58
|
+
* under `<DATA_DIR>/stt` holding the pinned `onnx-asr` + `soundfile`, and the
|
|
59
|
+
* GigaAM model fetched into a private Hugging Face cache — nothing is shared
|
|
60
|
+
* with, or written into, the operator's Python. There is NO user-facing command:
|
|
61
|
+
* the bot runs this from `/stt` ("Add engine → GigaAM (local)") or, when `stt.json`
|
|
62
|
+
* names the local engine, at boot; both launch the detached `sttInstallEntry`.
|
|
63
|
+
*/
|
|
64
|
+
/** Must equal `SCRIPT_VERSION` in `stt/gigaam_sidecar.py` (a unit test holds them together). */
|
|
65
|
+
exports.gigaamScriptVersion = '1';
|
|
66
|
+
/** The one place the pinned packages are named. */
|
|
67
|
+
exports.gigaamPinnedRequirements = ['onnx-asr[cpu,hub]==0.12.0', 'soundfile==0.14.0'];
|
|
68
|
+
/** The Python the packages need. */
|
|
69
|
+
const minimumPythonMajor = 3;
|
|
70
|
+
const minimumPythonMinor = 10;
|
|
71
|
+
const pythonRequest = `>=${minimumPythonMajor}.${minimumPythonMinor}`;
|
|
72
|
+
const mebibyte = 1024 * 1024;
|
|
73
|
+
/** The int8 e2e-rnnt files as fetched (216 MiB: the 215 MB encoder, decoder, joint, vocab), the progress denominator. */
|
|
74
|
+
exports.gigaamModelApproxBytes = 216 * mebibyte;
|
|
75
|
+
/** A lock with no owner file (its taker died between `mkdir` and the write) is left after this long. */
|
|
76
|
+
const ownerlessLockStaleMs = 60 * 1000;
|
|
77
|
+
const downloadPollIntervalMs = 2_000;
|
|
78
|
+
const pythonProbeTimeoutMs = 10_000;
|
|
79
|
+
const logTailLineCount = 20;
|
|
80
|
+
const logTailLineMaxLength = 300;
|
|
81
|
+
const installStepTimeoutMs = 20 * 60 * 1000;
|
|
82
|
+
/** The model check downloads ~220 MB: a slow link needs far longer than the pip steps. */
|
|
83
|
+
const modelCheckTimeoutMs = 60 * 60 * 1000;
|
|
84
|
+
const rootDirName = 'stt';
|
|
85
|
+
const venvDirName = 'venv';
|
|
86
|
+
const hfDirName = 'hf';
|
|
87
|
+
const uvCacheDirName = 'uv-cache';
|
|
88
|
+
const markerFileName = 'installed.json';
|
|
89
|
+
const lockDirName = 'install.lock';
|
|
90
|
+
const lockOwnerFileName = 'owner';
|
|
91
|
+
const installLogFileName = 'install.log';
|
|
92
|
+
const progressFileName = 'install-progress.json';
|
|
93
|
+
const sidecarScriptName = 'gigaam_sidecar.py';
|
|
94
|
+
function getSttPaths(dataDir) {
|
|
95
|
+
const root = path.join(dataDir, rootDirName);
|
|
96
|
+
const venvDir = path.join(root, venvDirName);
|
|
97
|
+
return {
|
|
98
|
+
root,
|
|
99
|
+
venvDir,
|
|
100
|
+
venvPython: path.join(venvDir, 'bin', 'python'),
|
|
101
|
+
hfHome: path.join(root, hfDirName),
|
|
102
|
+
uvCacheDir: path.join(root, uvCacheDirName),
|
|
103
|
+
markerFile: path.join(root, markerFileName),
|
|
104
|
+
lockDir: path.join(root, lockDirName),
|
|
105
|
+
installLog: path.join(root, installLogFileName),
|
|
106
|
+
progressFile: path.join(root, progressFileName),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* @description The sidecar script that ships in the package's `stt/` dir, two
|
|
111
|
+
* levels above this module (`src/stt` under tsx, `dist/stt` once built).
|
|
112
|
+
*/
|
|
113
|
+
function getSidecarScriptPath() {
|
|
114
|
+
return path.join(fs.realpathSync(__dirname), '..', '..', 'stt', sidecarScriptName);
|
|
115
|
+
}
|
|
116
|
+
exports.missingPythonToolError = 'Local recognition needs either uv (https://docs.astral.sh/uv/) or Python 3.10+ with the venv module ' +
|
|
117
|
+
'(on Debian/Ubuntu: apt install python3-venv). Neither was found.';
|
|
118
|
+
/**
|
|
119
|
+
* @description Decide how to build the venv: `uv` first (it needs no `ensurepip`
|
|
120
|
+
* and can fetch a Python), else a `python3` >= 3.10 that can create a venv with
|
|
121
|
+
* pip, else an error naming what is missing.
|
|
122
|
+
*/
|
|
123
|
+
function planSttInstall(facts) {
|
|
124
|
+
const { venvDir, venvPython } = facts.paths;
|
|
125
|
+
if (facts.uvPath) {
|
|
126
|
+
return {
|
|
127
|
+
ok: true,
|
|
128
|
+
tool: 'uv',
|
|
129
|
+
commands: [
|
|
130
|
+
{ command: facts.uvPath, args: ['venv', '--python', pythonRequest, venvDir], phase: 'creatingEnvironment' },
|
|
131
|
+
{
|
|
132
|
+
command: facts.uvPath,
|
|
133
|
+
args: ['pip', 'install', '--python', venvPython, ...exports.gigaamPinnedRequirements],
|
|
134
|
+
phase: 'installingPackages',
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
const python3 = facts.python3;
|
|
140
|
+
const isNewEnough = python3 !== null &&
|
|
141
|
+
(python3.major > minimumPythonMajor || (python3.major === minimumPythonMajor && python3.minor >= minimumPythonMinor));
|
|
142
|
+
if (python3 && isNewEnough && python3.hasVenvSupport) {
|
|
143
|
+
return {
|
|
144
|
+
ok: true,
|
|
145
|
+
tool: 'pip',
|
|
146
|
+
commands: [
|
|
147
|
+
{ command: python3.path, args: ['-m', 'venv', venvDir], phase: 'creatingEnvironment' },
|
|
148
|
+
{
|
|
149
|
+
command: venvPython,
|
|
150
|
+
args: ['-m', 'pip', 'install', '--no-cache-dir', ...exports.gigaamPinnedRequirements],
|
|
151
|
+
phase: 'installingPackages',
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return { ok: false, error: exports.missingPythonToolError };
|
|
157
|
+
}
|
|
158
|
+
function findOnPath(binaryName, env) {
|
|
159
|
+
const candidates = (env.PATH ?? '').split(path.delimiter).map((directory) => path.join(directory, binaryName));
|
|
160
|
+
candidates.push(path.join(os.homedir(), '.local', 'bin', binaryName));
|
|
161
|
+
return candidates.find((candidate) => path.isAbsolute(candidate) && checkIsExecutableFile(candidate)) ?? null;
|
|
162
|
+
}
|
|
163
|
+
function checkIsExecutableFile(filePath) {
|
|
164
|
+
try {
|
|
165
|
+
fs.accessSync(filePath, fs.constants.X_OK);
|
|
166
|
+
return fs.statSync(filePath).isFile();
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/** @description Look at the host: where `uv` and a usable `python3` are. */
|
|
173
|
+
function detectSttInstallFacts(paths, env = process.env) {
|
|
174
|
+
const uvPath = findOnPath('uv', env);
|
|
175
|
+
const python3Path = findOnPath('python3', env);
|
|
176
|
+
let python3 = null;
|
|
177
|
+
if (python3Path) {
|
|
178
|
+
try {
|
|
179
|
+
const probe = (0, child_process_1.execFileSync)(python3Path, ['-c', 'import sys, importlib.util; print(sys.version_info.major, sys.version_info.minor, importlib.util.find_spec("ensurepip") is not None and importlib.util.find_spec("venv") is not None)'], { encoding: 'utf8', timeout: pythonProbeTimeoutMs }).trim().split(' ');
|
|
180
|
+
python3 = { path: python3Path, major: Number(probe[0]), minor: Number(probe[1]), hasVenvSupport: probe[2] === 'True' };
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
python3 = null;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return { uvPath, python3, paths };
|
|
187
|
+
}
|
|
188
|
+
function readMarker(paths) {
|
|
189
|
+
try {
|
|
190
|
+
const parsed = JSON.parse(fs.readFileSync(paths.markerFile, 'utf8'));
|
|
191
|
+
if (typeof parsed.scriptVersion !== 'string' || !Array.isArray(parsed.pins) || typeof parsed.installedAt !== 'string')
|
|
192
|
+
return null;
|
|
193
|
+
return { scriptVersion: parsed.scriptVersion, pins: parsed.pins, installedAt: parsed.installedAt };
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* @description Whether the local engine is ready to start: the marker names the
|
|
201
|
+
* script version and pins this build ships, and the venv's interpreter is still
|
|
202
|
+
* there. Cheap and synchronous — it runs for every voice note.
|
|
203
|
+
*/
|
|
204
|
+
function isGigaamInstalled(dataDir) {
|
|
205
|
+
const paths = getSttPaths(dataDir);
|
|
206
|
+
const marker = readMarker(paths);
|
|
207
|
+
if (!marker || marker.scriptVersion !== exports.gigaamScriptVersion)
|
|
208
|
+
return false;
|
|
209
|
+
if (marker.pins.join(' ') !== exports.gigaamPinnedRequirements.join(' '))
|
|
210
|
+
return false;
|
|
211
|
+
return checkIsExecutableFile(paths.venvPython);
|
|
212
|
+
}
|
|
213
|
+
/** The owner file: the job's pid, and its start token so a reused pid is not mistaken for the job. */
|
|
214
|
+
function readLockOwner(paths) {
|
|
215
|
+
try {
|
|
216
|
+
const [pidText, startToken] = fs.readFileSync(path.join(paths.lockDir, lockOwnerFileName), 'utf8').split('\n');
|
|
217
|
+
const pid = Number(pidText);
|
|
218
|
+
return Number.isInteger(pid) && pid > 0 ? { pid, startToken: startToken?.trim() || null } : null;
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* The install lock is held while its owner lives — however long a slow download takes. Age matters only for a
|
|
226
|
+
* lock nobody ever wrote an owner into (its taker died in between), which goes stale quickly.
|
|
227
|
+
*/
|
|
228
|
+
function checkIsLockHeld(paths, nowMs) {
|
|
229
|
+
let lockModifiedMs;
|
|
230
|
+
try {
|
|
231
|
+
lockModifiedMs = fs.statSync(paths.lockDir).mtimeMs;
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
const owner = readLockOwner(paths);
|
|
237
|
+
if (!owner)
|
|
238
|
+
return nowMs - lockModifiedMs <= ownerlessLockStaleMs;
|
|
239
|
+
return owner.startToken ? (0, installManager_1.checkIsProcessIdentityCurrent)({ pid: owner.pid, startToken: owner.startToken }) : (0, jsonStreamHost_1.checkIsPidAlive)(owner.pid);
|
|
240
|
+
}
|
|
241
|
+
/** @description An install job is running right now (its lock is held by a live process, not stale). */
|
|
242
|
+
function isGigaamInstalling(dataDir, nowMs = Date.now()) {
|
|
243
|
+
return checkIsLockHeld(getSttPaths(dataDir), nowMs);
|
|
244
|
+
}
|
|
245
|
+
/** Take the lock; a stale or dead-owner one is replaced. False when a live install holds it. */
|
|
246
|
+
function acquireInstallLock(paths, nowMs) {
|
|
247
|
+
fs.mkdirSync(paths.root, { recursive: true });
|
|
248
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
249
|
+
try {
|
|
250
|
+
fs.mkdirSync(paths.lockDir);
|
|
251
|
+
fs.writeFileSync(path.join(paths.lockDir, lockOwnerFileName), `${process.pid}\n${(0, installManager_1.getProcessIdentity)(process.pid)?.startToken ?? ''}\n`);
|
|
252
|
+
return true;
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
if (!(error instanceof Error && (0, configDirFile_1.getErrnoCode)(error) === 'EEXIST'))
|
|
256
|
+
throw error;
|
|
257
|
+
if (checkIsLockHeld(paths, nowMs))
|
|
258
|
+
return false;
|
|
259
|
+
fs.rmSync(paths.lockDir, { recursive: true, force: true });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
function releaseInstallLock(paths) {
|
|
265
|
+
fs.rmSync(paths.lockDir, { recursive: true, force: true });
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* @description The last complete progress report in the text of the progress
|
|
269
|
+
* file (one JSON object per line); a torn last line from a crash is skipped.
|
|
270
|
+
*/
|
|
271
|
+
function getLastSttInstallProgress(text) {
|
|
272
|
+
const lines = text.split('\n').map((line) => line.trim()).filter(Boolean);
|
|
273
|
+
for (const line of lines.reverse()) {
|
|
274
|
+
try {
|
|
275
|
+
const parsed = JSON.parse(line);
|
|
276
|
+
if (typeof parsed.phase === 'string' && typeof parsed.bytesDownloaded === 'number') {
|
|
277
|
+
return { phase: parsed.phase, detail: parsed.detail ?? '', bytesDownloaded: parsed.bytesDownloaded, error: parsed.error, logTail: parsed.logTail };
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// a half-written line: try the one before
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
function readSttInstallProgress(dataDir) {
|
|
287
|
+
try {
|
|
288
|
+
return getLastSttInstallProgress(fs.readFileSync(getSttPaths(dataDir).progressFile, 'utf8'));
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/** @description "120/217 MB" — the download line of the progress report. */
|
|
295
|
+
function formatDownloadDetail(bytesDownloaded) {
|
|
296
|
+
const doneMegabytes = Math.min(Math.floor(bytesDownloaded / mebibyte), Math.round(exports.gigaamModelApproxBytes / mebibyte));
|
|
297
|
+
return `${doneMegabytes}/${Math.round(exports.gigaamModelApproxBytes / mebibyte)} MB`;
|
|
298
|
+
}
|
|
299
|
+
function getDirectorySizeBytes(directory) {
|
|
300
|
+
let total = 0;
|
|
301
|
+
let entries;
|
|
302
|
+
try {
|
|
303
|
+
entries = fs.readdirSync(directory, { withFileTypes: true });
|
|
304
|
+
}
|
|
305
|
+
catch {
|
|
306
|
+
return 0;
|
|
307
|
+
}
|
|
308
|
+
for (const entry of entries) {
|
|
309
|
+
const entryPath = path.join(directory, entry.name);
|
|
310
|
+
try {
|
|
311
|
+
total += entry.isDirectory() ? getDirectorySizeBytes(entryPath) : fs.lstatSync(entryPath).size;
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
// vanished between readdir and stat: a temp file renamed into place
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return total;
|
|
318
|
+
}
|
|
319
|
+
const runSttCommand = (command, args, { env, logFile, timeoutMs }) => new Promise((resolve) => {
|
|
320
|
+
const logFd = fs.openSync(logFile, 'a');
|
|
321
|
+
fs.writeSync(logFd, `\n$ ${command} ${args.join(' ')}\n`);
|
|
322
|
+
const child = (0, child_process_1.spawn)(command, args, { env, stdio: ['ignore', 'pipe', logFd] });
|
|
323
|
+
let stdout = '';
|
|
324
|
+
child.stdout?.setEncoding('utf8');
|
|
325
|
+
child.stdout?.on('data', (chunk) => {
|
|
326
|
+
stdout += chunk;
|
|
327
|
+
fs.writeSync(logFd, chunk);
|
|
328
|
+
});
|
|
329
|
+
const timer = setTimeout(() => child.kill('SIGKILL'), timeoutMs);
|
|
330
|
+
let isFinished = false;
|
|
331
|
+
const finish = (exitCode) => {
|
|
332
|
+
if (isFinished)
|
|
333
|
+
return; // 'error' and 'close' can both fire for one failed spawn
|
|
334
|
+
isFinished = true;
|
|
335
|
+
clearTimeout(timer);
|
|
336
|
+
fs.closeSync(logFd);
|
|
337
|
+
resolve({ exitCode, stdout });
|
|
338
|
+
};
|
|
339
|
+
child.once('error', (error) => {
|
|
340
|
+
fs.writeSync(logFd, `spawn failed: ${error.message}\n`);
|
|
341
|
+
finish(null);
|
|
342
|
+
});
|
|
343
|
+
child.once('close', finish);
|
|
344
|
+
});
|
|
345
|
+
exports.runSttCommand = runSttCommand;
|
|
346
|
+
function appendProgressLine(paths, progress) {
|
|
347
|
+
try {
|
|
348
|
+
fs.appendFileSync(paths.progressFile, `${JSON.stringify(progress)}\n`);
|
|
349
|
+
}
|
|
350
|
+
catch {
|
|
351
|
+
// The file only feeds a status message; a full disk must not fail the install itself.
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
function readLogTail(logFile) {
|
|
355
|
+
try {
|
|
356
|
+
// Progress bars redraw one line with carriage returns: split on those too, and cap what one line can carry.
|
|
357
|
+
return fs
|
|
358
|
+
.readFileSync(logFile, 'utf8')
|
|
359
|
+
.split(/[\r\n]+/)
|
|
360
|
+
.filter((line) => line.trim())
|
|
361
|
+
.map((line) => line.slice(0, logTailLineMaxLength))
|
|
362
|
+
.slice(-logTailLineCount);
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
return [];
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* @description Build the venv, install the pinned packages and fetch the model
|
|
370
|
+
* (`--check` loads it and recognises a second of silence, so a broken download
|
|
371
|
+
* is caught here, not by the first voice). Idempotent: a current marker means
|
|
372
|
+
* nothing to do unless `force`. One install at a time per data dir (a lock
|
|
373
|
+
* directory; a stale one or a dead owner's is replaced). Child output goes to
|
|
374
|
+
* `install.log`; a failure returns its last lines.
|
|
375
|
+
*/
|
|
376
|
+
async function runSttInstall(dataDir, options = {}) {
|
|
377
|
+
const paths = getSttPaths(dataDir);
|
|
378
|
+
const env = options.env ?? process.env;
|
|
379
|
+
const nowMs = options.nowMs ?? Date.now;
|
|
380
|
+
const runCommand = options.runCommand ?? exports.runSttCommand;
|
|
381
|
+
const report = (progress) => {
|
|
382
|
+
appendProgressLine(paths, progress);
|
|
383
|
+
options.onProgress?.(progress);
|
|
384
|
+
};
|
|
385
|
+
if (!acquireInstallLock(paths, nowMs())) {
|
|
386
|
+
return { ok: false, reason: 'locked', error: 'another install is already running', logTail: [] };
|
|
387
|
+
}
|
|
388
|
+
// This run's progress starts from an empty file, so a reader never mistakes an earlier run's `done` for it.
|
|
389
|
+
fs.writeFileSync(paths.progressFile, '');
|
|
390
|
+
const fail = (error) => {
|
|
391
|
+
const logTail = readLogTail(paths.installLog);
|
|
392
|
+
report({ phase: 'failed', detail: '', bytesDownloaded: 0, error, logTail });
|
|
393
|
+
return { ok: false, reason: 'failed', error, logTail };
|
|
394
|
+
};
|
|
395
|
+
try {
|
|
396
|
+
if (!options.force && isGigaamInstalled(dataDir)) {
|
|
397
|
+
report({ phase: 'done', detail: '', bytesDownloaded: getDirectorySizeBytes(paths.hfHome) });
|
|
398
|
+
return { ok: true, wasAlreadyInstalled: true };
|
|
399
|
+
}
|
|
400
|
+
fs.mkdirSync(paths.hfHome, { recursive: true });
|
|
401
|
+
fs.rmSync(paths.installLog, { force: true });
|
|
402
|
+
fs.rmSync(paths.markerFile, { force: true });
|
|
403
|
+
fs.rmSync(paths.venvDir, { recursive: true, force: true });
|
|
404
|
+
const plan = planSttInstall((options.detectFacts ?? detectSttInstallFacts)(paths, env));
|
|
405
|
+
if (!plan.ok)
|
|
406
|
+
return fail(plan.error);
|
|
407
|
+
// The model has to come from the network here (the running sidecar is offline), whatever the parent env says.
|
|
408
|
+
// ... and from a short allowlist, not the bot's whole environment: pip / uv run third-party package code.
|
|
409
|
+
const { HF_HUB_OFFLINE: _hubOffline, ...inheritedEnv } = (0, sttChildEnv_1.getSttChildEnv)(env);
|
|
410
|
+
const installEnv = {
|
|
411
|
+
...inheritedEnv,
|
|
412
|
+
HF_HOME: paths.hfHome,
|
|
413
|
+
UV_CACHE_DIR: paths.uvCacheDir,
|
|
414
|
+
PIP_DISABLE_PIP_VERSION_CHECK: '1',
|
|
415
|
+
};
|
|
416
|
+
for (const step of plan.commands) {
|
|
417
|
+
report({ phase: step.phase, detail: '', bytesDownloaded: 0 });
|
|
418
|
+
const result = await runCommand(step.command, step.args, { env: installEnv, logFile: paths.installLog, timeoutMs: installStepTimeoutMs });
|
|
419
|
+
if (result.exitCode !== 0)
|
|
420
|
+
return fail(`${path.basename(step.command)} ${step.args[0]} failed (exit ${result.exitCode ?? 'none'})`);
|
|
421
|
+
}
|
|
422
|
+
const pollMs = options.downloadPollIntervalMs ?? downloadPollIntervalMs;
|
|
423
|
+
const reportDownload = () => {
|
|
424
|
+
const bytesDownloaded = getDirectorySizeBytes(paths.hfHome);
|
|
425
|
+
const isDownloaded = bytesDownloaded >= exports.gigaamModelApproxBytes;
|
|
426
|
+
report({
|
|
427
|
+
phase: isDownloaded ? 'checking' : 'downloadingModel',
|
|
428
|
+
detail: isDownloaded ? '' : formatDownloadDetail(bytesDownloaded),
|
|
429
|
+
bytesDownloaded,
|
|
430
|
+
});
|
|
431
|
+
};
|
|
432
|
+
reportDownload();
|
|
433
|
+
const poller = setInterval(reportDownload, pollMs);
|
|
434
|
+
let check;
|
|
435
|
+
try {
|
|
436
|
+
check = await runCommand(paths.venvPython, ['-I', getSidecarScriptPath(), '--check'], {
|
|
437
|
+
env: installEnv,
|
|
438
|
+
logFile: paths.installLog,
|
|
439
|
+
timeoutMs: modelCheckTimeoutMs,
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
finally {
|
|
443
|
+
clearInterval(poller);
|
|
444
|
+
}
|
|
445
|
+
const checkReport = getLastJsonLine(check.stdout);
|
|
446
|
+
if (check.exitCode !== 0 || checkReport?.ok !== true) {
|
|
447
|
+
return fail(`the model check failed${checkReport?.error ? `: ${checkReport.error}` : ` (exit ${check.exitCode ?? 'none'})`}`);
|
|
448
|
+
}
|
|
449
|
+
const marker = {
|
|
450
|
+
scriptVersion: exports.gigaamScriptVersion,
|
|
451
|
+
pins: [...exports.gigaamPinnedRequirements],
|
|
452
|
+
installedAt: new Date(nowMs()).toISOString(),
|
|
453
|
+
};
|
|
454
|
+
fs.writeFileSync(paths.markerFile, `${JSON.stringify(marker, null, 2)}\n`);
|
|
455
|
+
report({ phase: 'done', detail: '', bytesDownloaded: getDirectorySizeBytes(paths.hfHome) });
|
|
456
|
+
return { ok: true, wasAlreadyInstalled: false };
|
|
457
|
+
}
|
|
458
|
+
catch (error) {
|
|
459
|
+
return fail(error instanceof Error ? error.message : 'the install crashed');
|
|
460
|
+
}
|
|
461
|
+
finally {
|
|
462
|
+
releaseInstallLock(paths);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
function getLastJsonLine(stdout) {
|
|
466
|
+
const lines = stdout.split('\n').map((line) => line.trim()).filter(Boolean);
|
|
467
|
+
const lastLine = lines[lines.length - 1];
|
|
468
|
+
if (!lastLine)
|
|
469
|
+
return null;
|
|
470
|
+
try {
|
|
471
|
+
return JSON.parse(lastLine);
|
|
472
|
+
}
|
|
473
|
+
catch {
|
|
474
|
+
return null;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* @description Delete the local engine's files (venv, model cache, uv cache,
|
|
479
|
+
* marker, install log). Refuses while an install runs. The caller stops the
|
|
480
|
+
* sidecar first.
|
|
481
|
+
*/
|
|
482
|
+
function removeSttInstall(dataDir) {
|
|
483
|
+
const paths = getSttPaths(dataDir);
|
|
484
|
+
if (checkIsLockHeld(paths, Date.now()))
|
|
485
|
+
return false;
|
|
486
|
+
for (const target of [paths.venvDir, paths.hfHome, paths.uvCacheDir, paths.markerFile, paths.installLog, paths.progressFile, paths.lockDir]) {
|
|
487
|
+
fs.rmSync(target, { recursive: true, force: true });
|
|
488
|
+
}
|
|
489
|
+
return true;
|
|
490
|
+
}
|
|
491
|
+
//# sourceMappingURL=sttInstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sttInstall.js","sourceRoot":"","sources":["../../src/stt/sttInstall.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEA,kCAcC;AAMD,oDAEC;AA+BD,wCAmCC;AAkBD,sDAiBC;AA0BD,8CAMC;AA8BD,gDAEC;AA+CD,8DAaC;AAED,wDAMC;AAGD,oDAGC;AA6GD,sCAwFC;AAuBD,4CAOC;AA3iBD,iDAAoD;AACpD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,sDAAsF;AACtF,4DAA0D;AAC1D,+CAA+C;AAC/C,oDAAgD;AAEhD;;;;;;;GAOG;AAEH,gGAAgG;AACnF,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC,mDAAmD;AACtC,QAAA,wBAAwB,GAAsB,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,CAAC;AAE9G,oCAAoC;AACpC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,aAAa,GAAG,KAAK,kBAAkB,IAAI,kBAAkB,EAAE,CAAC;AAEtE,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7B,yHAAyH;AAC5G,QAAA,sBAAsB,GAAG,GAAG,GAAG,QAAQ,CAAC;AAErD,wGAAwG;AACxG,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC;AACvC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AACrC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5C,0FAA0F;AAC1F,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3C,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,cAAc,GAAG,UAAU,CAAC;AAClC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AACxC,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAClC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AACzC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AACjD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAgB9C,SAAgB,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7C,OAAO;QACL,IAAI;QACJ,OAAO;QACP,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;QAC/C,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAClC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;QAC3C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;QAC3C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QACrC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC;QAC/C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC;KAChD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACrF,CAAC;AAsBY,QAAA,sBAAsB,GACjC,sGAAsG;IACtG,kEAAkE,CAAC;AAErE;;;;GAIG;AACH,SAAgB,cAAc,CAAC,KAAsB;IACnD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE;gBAC3G;oBACE,OAAO,EAAE,KAAK,CAAC,MAAM;oBACrB,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,gCAAwB,CAAC;oBAC7E,KAAK,EAAE,oBAAoB;iBAC5B;aACF;SACF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,WAAW,GACf,OAAO,KAAK,IAAI;QAChB,CAAC,OAAO,CAAC,KAAK,GAAG,kBAAkB,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,kBAAkB,IAAI,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAAC,CAAC,CAAC;IACxH,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QACrD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE;gBACR,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE;gBACtF;oBACE,OAAO,EAAE,UAAU;oBACnB,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,gCAAwB,CAAC;oBAC7E,KAAK,EAAE,oBAAoB;iBAC5B;aACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8BAAsB,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,UAAU,CAAC,UAAkB,EAAE,GAAsB;IAC5D,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/G,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IACtE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC;AAChH,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,SAAgB,qBAAqB,CAAC,KAAe,EAAE,MAAyB,OAAO,CAAC,GAAG;IACzF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC/C,IAAI,OAAO,GAA+B,IAAI,CAAC;IAC/C,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAA,4BAAY,EACxB,WAAW,EACX,CAAC,IAAI,EAAE,uLAAuL,CAAC,EAC/L,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,CACpD,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACzH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC;AAWD,SAAS,UAAU,CAAC,KAAe;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAA8B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAChG,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnI,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IACrG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,KAAK,2BAAmB;QAAE,OAAO,KAAK,CAAC;IAC1E,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gCAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,OAAO,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,sGAAsG;AACtG,SAAS,aAAa,CAAC,KAAe;IACpC,IAAI,CAAC;QACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/G,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,KAAe,EAAE,KAAa;IACrD,IAAI,cAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,cAAc,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,GAAG,cAAc,IAAI,oBAAoB,CAAC;IAClE,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,8CAA6B,EAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,gCAAe,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzI,CAAC;AAED,wGAAwG;AACxG,SAAgB,kBAAkB,CAAC,OAAe,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE;IAC5E,OAAO,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,gGAAgG;AAChG,SAAS,kBAAkB,CAAC,KAAe,EAAE,KAAa;IACxD,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,KAAK,IAAA,mCAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,IAAI,EAAE,IAAI,CAAC,CAAC;YACxI,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,IAAI,IAAA,4BAAY,EAAC,KAAK,CAAC,KAAK,QAAQ,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC/E,IAAI,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChD,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAe;IACzC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AAsBD;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,IAAY;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1E,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAgC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;gBACnF,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YACrJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAe;IACpD,IAAI,CAAC;QACH,OAAO,yBAAyB,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,SAAgB,oBAAoB,CAAC,eAAuB;IAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,8BAAsB,GAAG,QAAQ,CAAC,CAAC,CAAC;IACtH,OAAO,GAAG,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,8BAAsB,GAAG,QAAQ,CAAC,KAAK,CAAC;AAChF,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;QACjG,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;QACtE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAiBM,MAAM,aAAa,GAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAC5F,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC;QAChB,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IACjE,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,MAAM,GAAG,CAAC,QAAuB,EAAQ,EAAE;QAC/C,IAAI,UAAU;YAAE,OAAO,CAAC,yDAAyD;QACjF,UAAU,GAAG,IAAI,CAAC;QAClB,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5B,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,iBAAiB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAzBQ,QAAA,aAAa,iBAyBrB;AAkBL,SAAS,kBAAkB,CAAC,KAAe,EAAE,QAA4B;IACvE,IAAI,CAAC;QACH,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,sFAAsF;IACxF,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,IAAI,CAAC;QACH,4GAA4G;QAC5G,OAAO,EAAE;aACN,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;aAC7B,KAAK,CAAC,SAAS,CAAC;aAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;aAClD,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,UAA6B,EAAE;IAClF,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,qBAAa,CAAC;IACvD,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAQ,EAAE;QACpD,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,oCAAoC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnG,CAAC;IACD,4GAA4G;IAC5G,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAoB,EAAE;QAC/C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACzD,CAAC,CAAC;IACF,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;QACjD,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3D,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,qBAAqB,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,8GAA8G;QAC9G,0GAA0G;QAC1G,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,GAAG,IAAA,4BAAc,EAAC,GAAG,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAsB;YACpC,GAAG,YAAY;YACf,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,YAAY,EAAE,KAAK,CAAC,UAAU;YAC9B,6BAA6B,EAAE,GAAG;SACnC,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAC1I,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC;QACtI,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,sBAAsB,IAAI,sBAAsB,CAAC;QACxE,MAAM,cAAc,GAAG,GAAS,EAAE;YAChC,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,YAAY,GAAG,eAAe,IAAI,8BAAsB,CAAC;YAC/D,MAAM,CAAC;gBACL,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB;gBACrD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC;gBACjE,eAAe;aAChB,CAAC,CAAC;QACL,CAAC,CAAC;QACF,cAAc,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,KAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,EAAE,SAAS,CAAC,EAAE;gBACpF,GAAG,EAAE,UAAU;gBACf,OAAO,EAAE,KAAK,CAAC,UAAU;gBACzB,SAAS,EAAE,mBAAmB;aAC/B,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,WAAW,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,yBAAyB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;QAChI,CAAC;QAED,MAAM,MAAM,GAAqB;YAC/B,aAAa,EAAE,2BAAmB;YAClC,IAAI,EAAE,CAAC,GAAG,gCAAwB,CAAC;YACnC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE;SAC7C,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACT,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAOD,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5I,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sttInstallEntry.d.ts","sourceRoot":"","sources":["../../src/stt/sttInstallEntry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const sttInstall_1 = require("./sttInstall");
|
|
4
|
+
/**
|
|
5
|
+
* @description The detached install job — NOT a user command (there is no CLI
|
|
6
|
+
* for voice setup). The bot launches it through `startExternallyParentedProcess`
|
|
7
|
+
* so a hot reload in the middle of a 450 MB download never kills it:
|
|
8
|
+
* `node dist/stt/sttInstallEntry.js <dataDir> [--force]`.
|
|
9
|
+
*
|
|
10
|
+
* Progress is appended to `<dataDir>/stt/install-progress.json` by
|
|
11
|
+
* `runSttInstall` itself; this file only maps the outcome to an exit code:
|
|
12
|
+
* 0 installed (or already was), 1 failed, 2 bad usage, 3 another install holds the lock.
|
|
13
|
+
*/
|
|
14
|
+
const exitInstalled = 0;
|
|
15
|
+
const exitFailed = 1;
|
|
16
|
+
const exitUsage = 2;
|
|
17
|
+
const exitLocked = 3;
|
|
18
|
+
async function main() {
|
|
19
|
+
const dataDir = process.argv[2];
|
|
20
|
+
if (!dataDir)
|
|
21
|
+
return exitUsage;
|
|
22
|
+
const result = await (0, sttInstall_1.runSttInstall)(dataDir, { force: process.argv.includes('--force') });
|
|
23
|
+
if (result.ok)
|
|
24
|
+
return exitInstalled;
|
|
25
|
+
return result.reason === 'locked' ? exitLocked : exitFailed;
|
|
26
|
+
}
|
|
27
|
+
main().then((exitCode) => process.exit(exitCode), (error) => {
|
|
28
|
+
console.error('[STT] install job crashed:', error instanceof Error ? error.message : error);
|
|
29
|
+
process.exit(exitFailed);
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=sttInstallEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sttInstallEntry.js","sourceRoot":"","sources":["../../src/stt/sttInstallEntry.ts"],"names":[],"mappings":";;AAAA,6CAA6C;AAE7C;;;;;;;;;GASG;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACzF,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,aAAa,CAAC;IACpC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;AAC9D,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CACT,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpC,CAAC,KAAK,EAAE,EAAE;IACR,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5F,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { SttInstallProgressMessage, StateStore } from '../state';
|
|
2
|
+
import type { SessionKey } from '../sessionKey';
|
|
3
|
+
import type { SttInstallReporter } from './sttAutoInstall';
|
|
4
|
+
import { type SttTranslate } from './sttScreenPlan';
|
|
5
|
+
/**
|
|
6
|
+
* @description Reporters for an install job's progress: one that keeps a SINGLE message of a topic up to date
|
|
7
|
+
* (the boot auto-install in General, the `/stt` button in its own topic), and one that only writes `[STT]` log
|
|
8
|
+
* lines (no group is paired). The message id is kept in `state.json` so a reloaded bot re-attaches to the same
|
|
9
|
+
* message instead of posting a second one.
|
|
10
|
+
*/
|
|
11
|
+
export interface SttInstallMessagePorts {
|
|
12
|
+
getState: () => Pick<StateStore, 'getSttInstallProgressMessage' | 'setSttInstallProgressMessage'>;
|
|
13
|
+
/** Post into the topic; the new message's id, or `null` when it failed. */
|
|
14
|
+
replyToThread: (key: SessionKey, text: string) => Promise<number | null>;
|
|
15
|
+
/** Edit a message of the topic; false when it failed (a deleted message). */
|
|
16
|
+
editThreadMessage: (key: SessionKey, messageId: number, text: string) => Promise<boolean>;
|
|
17
|
+
/** `t(...)` in the topic's locale, for the whole text of one report. */
|
|
18
|
+
translateFor: (key: SessionKey) => SttTranslate;
|
|
19
|
+
nowMs: () => number;
|
|
20
|
+
}
|
|
21
|
+
/** @description A message reporter and the id of the message it currently edits (it can change when a deleted message is replaced). */
|
|
22
|
+
export interface SttInstallMessageReporter {
|
|
23
|
+
report: SttInstallReporter;
|
|
24
|
+
getMessageId: () => number | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @description Keep ONE message up to date with a running install. It edits `existing` (a message the caller
|
|
28
|
+
* already posted — the `/stt` confirm screen), else the one `state.json` remembers for THIS topic, else posts one
|
|
29
|
+
* on the first report, and remembers its id together with the "enable on done" flag. The END of the job is not
|
|
30
|
+
* reported here: the finisher turns the message into the outcome (with its buttons) and forgets it, so a job that
|
|
31
|
+
* outlives the bot is finished the same way by whoever re-attaches.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createSttInstallMessageReporter(ports: SttInstallMessagePorts, key: SessionKey, existing?: SttInstallProgressMessage): SttInstallMessageReporter;
|
|
34
|
+
/** @description The reporter for an install nobody is watching in a chat: one `[STT] install: …` line per phase change. */
|
|
35
|
+
export declare function createSttInstallLogReporter(log: (line: string) => void): SttInstallReporter;
|
|
36
|
+
/** What the Telegram side lends the install message: the topic send helpers and the locale. */
|
|
37
|
+
export interface SttInstallMessageCore {
|
|
38
|
+
getState: SttInstallMessagePorts['getState'];
|
|
39
|
+
replyToThread: (key: SessionKey, text: string, extra?: object) => Promise<number | null>;
|
|
40
|
+
editThreadMessage: (key: SessionKey, messageId: number, text: string, extra?: object) => Promise<boolean>;
|
|
41
|
+
withThreadLocale: <TResult>(key: SessionKey, fn: () => TResult) => TResult;
|
|
42
|
+
}
|
|
43
|
+
/** @description The ports of {@link createSttInstallMessageReporter} over the bot's topic helpers; `translate` is `t(…)`. */
|
|
44
|
+
export declare function createSttInstallMessagePorts(core: SttInstallMessageCore, translate: SttTranslate): SttInstallMessagePorts;
|
|
45
|
+
//# sourceMappingURL=sttInstallReporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sttInstallReporter.d.ts","sourceRoot":"","sources":["../../src/stt/sttInstallReporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAwD,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE1G;;;;;GAKG;AAEH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,8BAA8B,GAAG,8BAA8B,CAAC,CAAC;IAClG,2EAA2E;IAC3E,aAAa,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzE,6EAA6E;IAC7E,iBAAiB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,wEAAwE;IACxE,YAAY,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,YAAY,CAAC;IAChD,KAAK,EAAE,MAAM,MAAM,CAAC;CACrB;AAED,uIAAuI;AACvI,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,sBAAsB,EAC7B,GAAG,EAAE,UAAU,EACf,QAAQ,CAAC,EAAE,yBAAyB,GACnC,yBAAyB,CAoB3B;AAED,2HAA2H;AAC3H,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,kBAAkB,CAO3F;AAED,+FAA+F;AAC/F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC7C,aAAa,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzF,iBAAiB,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1G,gBAAgB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,OAAO,KAAK,OAAO,CAAC;CAC5E;AAED,6HAA6H;AAC7H,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,YAAY,GAAG,sBAAsB,CAQzH"}
|