@magmamath/students-features 1.6.3 → 1.6.4
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/dist/commonjs/features/chatbot/index.js +7 -0
- package/dist/commonjs/features/chatbot/index.js.map +1 -1
- package/dist/commonjs/features/chatbot/model/VoiceTranscriptSnapshotModel.js +126 -0
- package/dist/commonjs/features/chatbot/model/VoiceTranscriptSnapshotModel.js.map +1 -0
- package/dist/commonjs/features/voice/recording/components/VoiceRecordButton.js +2 -1
- package/dist/commonjs/features/voice/recording/components/VoiceRecordButton.js.map +1 -1
- package/dist/commonjs/lib/effector/createControllerEffect.js +7 -6
- package/dist/commonjs/lib/effector/createControllerEffect.js.map +1 -1
- package/dist/module/features/chatbot/index.js +1 -0
- package/dist/module/features/chatbot/index.js.map +1 -1
- package/dist/module/features/chatbot/model/VoiceTranscriptSnapshotModel.js +121 -0
- package/dist/module/features/chatbot/model/VoiceTranscriptSnapshotModel.js.map +1 -0
- package/dist/module/features/voice/recording/components/VoiceRecordButton.js +2 -1
- package/dist/module/features/voice/recording/components/VoiceRecordButton.js.map +1 -1
- package/dist/module/lib/effector/createControllerEffect.js +7 -6
- package/dist/module/lib/effector/createControllerEffect.js.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/index.d.ts +1 -0
- package/dist/typescript/commonjs/features/chatbot/index.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/model/VoiceTranscriptSnapshotModel.d.ts +32 -0
- package/dist/typescript/commonjs/features/chatbot/model/VoiceTranscriptSnapshotModel.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts +1 -0
- package/dist/typescript/commonjs/features/chatbot/types/api.types.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/pmProgress/shared/pmProgress.constants.d.ts +1 -1
- package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordButton.d.ts.map +1 -1
- package/dist/typescript/commonjs/lib/effector/createControllerEffect.d.ts +1 -0
- package/dist/typescript/commonjs/lib/effector/createControllerEffect.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/index.d.ts +1 -0
- package/dist/typescript/module/features/chatbot/index.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/model/VoiceTranscriptSnapshotModel.d.ts +32 -0
- package/dist/typescript/module/features/chatbot/model/VoiceTranscriptSnapshotModel.d.ts.map +1 -0
- package/dist/typescript/module/features/chatbot/types/api.types.d.ts +1 -0
- package/dist/typescript/module/features/chatbot/types/api.types.d.ts.map +1 -1
- package/dist/typescript/module/features/pmProgress/shared/pmProgress.constants.d.ts +1 -1
- package/dist/typescript/module/features/voice/recording/components/VoiceRecordButton.d.ts.map +1 -1
- package/dist/typescript/module/lib/effector/createControllerEffect.d.ts +1 -0
- package/dist/typescript/module/lib/effector/createControllerEffect.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/features/chatbot/index.ts +1 -0
- package/src/features/chatbot/model/VoiceTranscriptSnapshotModel.ts +159 -0
- package/src/features/chatbot/types/api.types.ts +1 -0
- package/src/features/voice/recording/components/VoiceRecordButton.tsx +2 -3
- package/src/i18n/.generated/schema.json +1 -0
- package/src/lib/effector/createControllerEffect.ts +13 -6
|
@@ -63,6 +63,12 @@ Object.defineProperty(exports, "MessageVariant", {
|
|
|
63
63
|
return _modelTypes.MessageVariant;
|
|
64
64
|
}
|
|
65
65
|
});
|
|
66
|
+
Object.defineProperty(exports, "VoiceTranscriptSnapshotModel", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () {
|
|
69
|
+
return _VoiceTranscriptSnapshotModel.VoiceTranscriptSnapshotModel;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
66
72
|
Object.defineProperty(exports, "getChatbotAvatarVariant", {
|
|
67
73
|
enumerable: true,
|
|
68
74
|
get: function () {
|
|
@@ -73,6 +79,7 @@ var _Chatbot = require("./components/Chatbot.js");
|
|
|
73
79
|
var _ChatbotAvatar = require("./components/Chat/ChatbotAvatar.js");
|
|
74
80
|
var _ChatLauncher = require("./components/ChatControls/ChatLauncher.js");
|
|
75
81
|
var _ChatBotModel = require("./model/ChatBotModel.js");
|
|
82
|
+
var _VoiceTranscriptSnapshotModel = require("./model/VoiceTranscriptSnapshotModel.js");
|
|
76
83
|
var _t2sTypes = require("./types/t2s.types.js");
|
|
77
84
|
var _modelTypes = require("./types/model.types.js");
|
|
78
85
|
var _constants = require("./constants.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Chatbot","require","_ChatbotAvatar","_ChatLauncher","_ChatBotModel","_t2sTypes","_modelTypes","_constants","_helpers","_DefaultMessageCreator","_styleTypes"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_Chatbot","require","_ChatbotAvatar","_ChatLauncher","_ChatBotModel","_VoiceTranscriptSnapshotModel","_t2sTypes","_modelTypes","_constants","_helpers","_DefaultMessageCreator","_styleTypes"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,6BAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AAMA,IAAAM,WAAA,GAAAN,OAAA;AAKA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,QAAA,GAAAR,OAAA;AAYA,IAAAS,sBAAA,GAAAT,OAAA;AAGA,IAAAU,WAAA,GAAAV,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.VoiceTranscriptSnapshotModel = void 0;
|
|
7
|
+
var _effector = require("effector");
|
|
8
|
+
var _types = require("../../voice/types.js");
|
|
9
|
+
var _i18n = require("../../../i18n/i18n.js");
|
|
10
|
+
const TRANSCRIPT_RETRY_INTERVAL_MS = 2000;
|
|
11
|
+
const TRANSCRIPT_MAX_RETRIES = 20;
|
|
12
|
+
const CHAT_WITH_VOICE_TIMEOUT_MS = 60_000;
|
|
13
|
+
// Voice key: `${assignmentId}-${problemId}-${attemptsCount}`
|
|
14
|
+
// Chat key: `${assignmentId}-${problemId}` — survives attempt increments and voice deletion.
|
|
15
|
+
const toChatKey = voiceKey => {
|
|
16
|
+
const lastDashIndex = voiceKey.lastIndexOf('-');
|
|
17
|
+
if (lastDashIndex <= 0) return null;
|
|
18
|
+
return voiceKey.slice(0, lastDashIndex);
|
|
19
|
+
};
|
|
20
|
+
class VoiceTranscriptSnapshotModel {
|
|
21
|
+
fetchTranscript = audioFileId => {
|
|
22
|
+
const cached = this.transcriptByAudioFileId.get(audioFileId);
|
|
23
|
+
if (cached) return cached;
|
|
24
|
+
const promise = this.pollTranscript(audioFileId).catch(() => undefined);
|
|
25
|
+
this.transcriptByAudioFileId.set(audioFileId, promise);
|
|
26
|
+
return promise;
|
|
27
|
+
};
|
|
28
|
+
getTranscriptForCurrent = async () => {
|
|
29
|
+
const voiceKey = this.voiceRecord.$currentKey.getState();
|
|
30
|
+
if (!voiceKey) return undefined;
|
|
31
|
+
const chatKey = toChatKey(voiceKey);
|
|
32
|
+
if (chatKey) {
|
|
33
|
+
const snapshot = this.snapshotByChatKey.get(chatKey);
|
|
34
|
+
if (snapshot) return snapshot;
|
|
35
|
+
}
|
|
36
|
+
const record = this.voiceRecord.collection.get(voiceKey);
|
|
37
|
+
if (!record) return undefined;
|
|
38
|
+
const audioFileId = await this.resolveAudioFileId(record);
|
|
39
|
+
if (!audioFileId) return undefined;
|
|
40
|
+
return this.fetchTranscript(audioFileId);
|
|
41
|
+
};
|
|
42
|
+
wrapRequestHint = apiFn => {
|
|
43
|
+
return async (params, requestConfig) => {
|
|
44
|
+
if (this.hasPendingVoice()) {
|
|
45
|
+
requestConfig?.extendTimeoutMs?.(CHAT_WITH_VOICE_TIMEOUT_MS);
|
|
46
|
+
}
|
|
47
|
+
const voiceTranscript = await this.getTranscriptForCurrent();
|
|
48
|
+
return apiFn(voiceTranscript ? {
|
|
49
|
+
...params,
|
|
50
|
+
voiceTranscript
|
|
51
|
+
} : params, requestConfig);
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
hasPendingVoice() {
|
|
55
|
+
const voiceKey = this.voiceRecord.$currentKey.getState();
|
|
56
|
+
if (!voiceKey) return false;
|
|
57
|
+
const chatKey = toChatKey(voiceKey);
|
|
58
|
+
if (chatKey && this.snapshotByChatKey.has(chatKey)) return true;
|
|
59
|
+
return !!this.voiceRecord.collection.get(voiceKey);
|
|
60
|
+
}
|
|
61
|
+
constructor({
|
|
62
|
+
voiceRecord,
|
|
63
|
+
api,
|
|
64
|
+
errorHandler
|
|
65
|
+
}) {
|
|
66
|
+
this.voiceRecord = voiceRecord;
|
|
67
|
+
this.api = api;
|
|
68
|
+
this.errorHandler = errorHandler;
|
|
69
|
+
(0, _effector.sample)({
|
|
70
|
+
clock: voiceRecord.setCurrentRecord,
|
|
71
|
+
source: voiceRecord.$currentKey,
|
|
72
|
+
filter: (_, record) => !!record,
|
|
73
|
+
fn: (voiceKey, record) => ({
|
|
74
|
+
voiceKey,
|
|
75
|
+
record
|
|
76
|
+
}),
|
|
77
|
+
target: this.captureSnapshotFx
|
|
78
|
+
});
|
|
79
|
+
(0, _effector.sample)({
|
|
80
|
+
clock: voiceRecord.deleteCurrentRecording,
|
|
81
|
+
source: voiceRecord.$currentKey,
|
|
82
|
+
target: this.clearSnapshotFx
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
transcriptByAudioFileId = new Map();
|
|
86
|
+
snapshotByChatKey = new Map();
|
|
87
|
+
captureSnapshotFx = (0, _effector.createEffect)(({
|
|
88
|
+
voiceKey,
|
|
89
|
+
record
|
|
90
|
+
}) => {
|
|
91
|
+
const chatKey = toChatKey(voiceKey);
|
|
92
|
+
if (!chatKey) return;
|
|
93
|
+
const transcriptPromise = this.resolveAudioFileId(record).then(audioFileId => audioFileId ? this.fetchTranscript(audioFileId) : undefined);
|
|
94
|
+
this.snapshotByChatKey.set(chatKey, transcriptPromise);
|
|
95
|
+
});
|
|
96
|
+
clearSnapshotFx = (0, _effector.createEffect)(voiceKey => {
|
|
97
|
+
const chatKey = toChatKey(voiceKey);
|
|
98
|
+
if (chatKey) this.snapshotByChatKey.delete(chatKey);
|
|
99
|
+
});
|
|
100
|
+
async pollTranscript(audioFileId) {
|
|
101
|
+
for (let attempt = 0; attempt < TRANSCRIPT_MAX_RETRIES; attempt++) {
|
|
102
|
+
await new Promise(resolve => setTimeout(resolve, TRANSCRIPT_RETRY_INTERVAL_MS));
|
|
103
|
+
try {
|
|
104
|
+
const response = await this.api.getAudioFileTranscript(audioFileId);
|
|
105
|
+
if (response.status === _types.TranscriptionStatus.COMPLETED) return response.text;
|
|
106
|
+
if (response.status === _types.TranscriptionStatus.FAILED) break;
|
|
107
|
+
} catch {
|
|
108
|
+
// network/request failure — retry on next iteration
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
this.errorHandler?.((0, _i18n.getText)('voice.transcriptionError'));
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
async resolveAudioFileId(record) {
|
|
115
|
+
if (record.id) return record.id;
|
|
116
|
+
if (!record.audioUploadPromise) return undefined;
|
|
117
|
+
try {
|
|
118
|
+
const result = await record.audioUploadPromise;
|
|
119
|
+
return result?.id;
|
|
120
|
+
} catch {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.VoiceTranscriptSnapshotModel = VoiceTranscriptSnapshotModel;
|
|
126
|
+
//# sourceMappingURL=VoiceTranscriptSnapshotModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_effector","require","_types","_i18n","TRANSCRIPT_RETRY_INTERVAL_MS","TRANSCRIPT_MAX_RETRIES","CHAT_WITH_VOICE_TIMEOUT_MS","toChatKey","voiceKey","lastDashIndex","lastIndexOf","slice","VoiceTranscriptSnapshotModel","fetchTranscript","audioFileId","cached","transcriptByAudioFileId","get","promise","pollTranscript","catch","undefined","set","getTranscriptForCurrent","voiceRecord","$currentKey","getState","chatKey","snapshot","snapshotByChatKey","record","collection","resolveAudioFileId","wrapRequestHint","apiFn","params","requestConfig","hasPendingVoice","extendTimeoutMs","voiceTranscript","has","constructor","api","errorHandler","sample","clock","setCurrentRecord","source","filter","_","fn","target","captureSnapshotFx","deleteCurrentRecording","clearSnapshotFx","Map","createEffect","transcriptPromise","then","delete","attempt","Promise","resolve","setTimeout","response","getAudioFileTranscript","status","TranscriptionStatus","COMPLETED","text","FAILED","getText","id","audioUploadPromise","result","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/VoiceTranscriptSnapshotModel.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -43,13 +43,14 @@ const AdvancedButton = ({
|
|
|
43
43
|
},
|
|
44
44
|
isActive: isRecording,
|
|
45
45
|
variant: _reactNativeUi.ButtonVariant.TERTIARY,
|
|
46
|
+
disabled: disabled,
|
|
46
47
|
onPressIn: onPressIn,
|
|
47
48
|
icon: isRecording ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeUi.CheckIcon, {
|
|
48
49
|
size: 25,
|
|
49
50
|
color: _reactNativeUi.COLORS.NEUTRAL_1
|
|
50
51
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeUi.MicrophoneIcon, {
|
|
51
52
|
style: styles.advancedMicrophoneIcon,
|
|
52
|
-
color:
|
|
53
|
+
color: isRecording ? _reactNativeUi.COLORS.NEUTRAL_1 : _reactNativeUi.COLORS.NEUTRAL_9
|
|
53
54
|
})
|
|
54
55
|
})
|
|
55
56
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeUi","_reactNative","_effectorReact","_studentsQa","_constants","_types","_i18n","_jsxRuntime","e","__esModule","default","defaultButtonStyles","button","width","height","AdvancedButton","isRecording","disabled","onPressIn","jsx","Pressable","style","styles","advancedButtonContainer","disabledCursor","children","Button","customColorScheme","ButtonStates","ACTIVE","backgroundColor","COLORS","PRIMARY_BLUE","borderColor","raiseColor","color","advancedButton","isActive","variant","ButtonVariant","TERTIARY","icon","CheckIcon","size","NEUTRAL_1","MicrophoneIcon","advancedMicrophoneIcon","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNativeUi","_reactNative","_effectorReact","_studentsQa","_constants","_types","_i18n","_jsxRuntime","e","__esModule","default","defaultButtonStyles","button","width","height","AdvancedButton","isRecording","disabled","onPressIn","jsx","Pressable","style","styles","advancedButtonContainer","disabledCursor","children","Button","customColorScheme","ButtonStates","ACTIVE","backgroundColor","COLORS","PRIMARY_BLUE","borderColor","raiseColor","color","advancedButton","isActive","variant","ButtonVariant","TERTIARY","icon","CheckIcon","size","NEUTRAL_1","MicrophoneIcon","advancedMicrophoneIcon","NEUTRAL_9","VoiceRecordButton","model","buttonVariant","t","useText","availableInputs","useUnit","recorderModel","$availableInputs","voiceRecordState","$voiceRecordState","isButtonDisabled","$isButtonDisabled","isInitializing","initializeRecording","pending","VoiceRecorderState","RECORDING","hasInputs","length","preventDefault","notification","warning","pointerEvents","undefined","RecordButtonVariant","ADVANCED","recorderButtonHandler","testID","TEST_IDS","VOICE_RECORD_BUTTON","ButtonSize","LARGE","SECONDARY","colorScheme","ButtonColor","WHITE","IS_WEB","microphoneIconWeb","microphoneIconNative","exports","StyleSheet","create","alignItems","justifyContent","borderRadius","BORDER_RADIUS","boxShadow","VOICE_RECORD_SHADOWS","advancedIconContainer","cursor","minWidth","minHeight","advancedIconContainerActive"],"sourceRoot":"../../../../../../src","sources":["features/voice/recording/components/VoiceRecordButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,14 +13,15 @@ function controlledRequest(request) {
|
|
|
13
13
|
abortAfter = 20000
|
|
14
14
|
}) => {
|
|
15
15
|
let timeout = null;
|
|
16
|
-
|
|
17
|
-
timeout
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
const scheduleAbort = ms => {
|
|
17
|
+
if (timeout !== null) clearTimeout(timeout);
|
|
18
|
+
timeout = ms > 0 ? setTimeout(() => controller.abort('timeout'), ms) : null;
|
|
19
|
+
};
|
|
20
|
+
if (abortAfter) scheduleAbort(abortAfter);
|
|
21
21
|
try {
|
|
22
22
|
const response = await request(data, {
|
|
23
|
-
signal: controller?.signal
|
|
23
|
+
signal: controller?.signal,
|
|
24
|
+
extendTimeoutMs: scheduleAbort
|
|
24
25
|
});
|
|
25
26
|
if (timeout !== null) clearTimeout(timeout);
|
|
26
27
|
return response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_effector","require","controlledRequest","request","data","controller","AbortController","abortAfter","timeout","setTimeout","abort","response","signal","
|
|
1
|
+
{"version":3,"names":["_effector","require","controlledRequest","request","data","controller","AbortController","abortAfter","timeout","scheduleAbort","ms","clearTimeout","setTimeout","abort","response","signal","extendTimeoutMs","error","code","reason","Error","createControllerEffect","fn","effect","createEffect","fail","watch","exports"],"sourceRoot":"../../../../src","sources":["lib/effector/createControllerEffect.ts"],"mappings":";;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAqBO,SAASC,iBAAiBA,CAC/BC,OAAiE,EACjE;EACA,OAAO,OAAO;IACZC,IAAI;IACJC,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;IAClCC,UAAU,GAAG;EACY,CAAC,KAAK;IAC/B,IAAIC,OAA6C,GAAG,IAAI;IAExD,MAAMC,aAAa,GAAIC,EAAU,IAAK;MACpC,IAAIF,OAAO,KAAK,IAAI,EAAEG,YAAY,CAACH,OAAO,CAAC;MAC3CA,OAAO,GAAGE,EAAE,GAAG,CAAC,GAAGE,UAAU,CAAC,MAAMP,UAAU,CAACQ,KAAK,CAAC,SAAS,CAAC,EAAEH,EAAE,CAAC,GAAG,IAAI;IAC7E,CAAC;IAED,IAAIH,UAAU,EAAEE,aAAa,CAACF,UAAU,CAAC;IAEzC,IAAI;MACF,MAAMO,QAAQ,GAAG,MAAMX,OAAO,CAACC,IAAI,EAAE;QACnCW,MAAM,EAAEV,UAAU,EAAEU,MAAM;QAC1BC,eAAe,EAAEP;MACnB,CAAC,CAAC;MACF,IAAID,OAAO,KAAK,IAAI,EAAEG,YAAY,CAACH,OAAO,CAAC;MAC3C,OAAOM,QAAQ;IACjB,CAAC,CAAC,OAAOG,KAAc,EAAE;MACvB,IAAKA,KAAK,CAAuBC,IAAI,KAAK,cAAc,EAAE;QACxD,IAAIb,UAAU,CAACU,MAAM,CAACI,MAAM,KAAK,SAAS,EAAE;UAC1C,MAAM,IAAIC,KAAK,CAAC,mBAAmB,CAAC;QACtC;QACA,MAAM,IAAIA,KAAK,CAAC,0BAA0B,CAAC;MAC7C;MAEA,MAAMH,KAAK;IACb;EACF,CAAC;AACH;AAEO,MAAMI,sBAAsB,GACjCC,EAA4D,IACzD;EACH,MAAMnB,OAAO,GAAGD,iBAAiB,CAAOoB,EAAE,CAAC;EAC3C,MAAMC,MAAM,GAAG,IAAAC,sBAAY,EAAEpB,IAAO,IAClCD,OAAO,CAAC;IAAEC,IAAI;IAAEC,UAAU,EAAEkB,MAAM,CAAClB;EAAW,CAAC,CACjD,CAA2B;EAC3BkB,MAAM,CAAClB,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;EAEzCiB,MAAM,CAACE,IAAI,CAACC,KAAK,CAAC,MAAM;IACtBH,MAAM,CAAClB,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;EAC3C,CAAC,CAAC;EAEF,OAAOiB,MAAM;AACf,CAAC;AAAAI,OAAA,CAAAN,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ export { Chatbot } from "./components/Chatbot.js";
|
|
|
4
4
|
export { ChatbotAvatar } from "./components/Chat/ChatbotAvatar.js";
|
|
5
5
|
export { ChatLauncher } from "./components/ChatControls/ChatLauncher.js";
|
|
6
6
|
export { ChatbotModel } from "./model/ChatBotModel.js";
|
|
7
|
+
export { VoiceTranscriptSnapshotModel } from "./model/VoiceTranscriptSnapshotModel.js";
|
|
7
8
|
export { AudioStatus } from "./types/t2s.types.js";
|
|
8
9
|
export { MessageVariant } from "./types/model.types.js";
|
|
9
10
|
export { ChatbotAvatarVariant, ChatbotVariant } from "./constants.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Chatbot","ChatbotAvatar","ChatLauncher","ChatbotModel","AudioStatus","MessageVariant","ChatbotAvatarVariant","ChatbotVariant","getChatbotAvatarVariant","DefaultMessagesCreator","ColorScheme"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,yBAAsB;AAC9C,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,YAAY,QAAQ,2CAAwC;AACrE,SAASC,YAAY,QAAQ,yBAAsB;AACnD,SACEC,WAAW,QAIN,sBAAmB;AAC1B,SACEC,cAAc,QAGT,wBAAqB;AAC5B,SAASC,oBAAoB,EAAEC,cAAc,QAAQ,gBAAa;AAClE,SAASC,uBAAuB,QAAQ,cAAW;AAYnD,SAASC,sBAAsB,QAAQ,kCAA+B;AAGtE,SAASC,WAAW,QAAQ,wBAAqB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Chatbot","ChatbotAvatar","ChatLauncher","ChatbotModel","VoiceTranscriptSnapshotModel","AudioStatus","MessageVariant","ChatbotAvatarVariant","ChatbotVariant","getChatbotAvatarVariant","DefaultMessagesCreator","ColorScheme"],"sourceRoot":"../../../../src","sources":["features/chatbot/index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,yBAAsB;AAC9C,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,YAAY,QAAQ,2CAAwC;AACrE,SAASC,YAAY,QAAQ,yBAAsB;AACnD,SAASC,4BAA4B,QAAQ,yCAAsC;AACnF,SACEC,WAAW,QAIN,sBAAmB;AAC1B,SACEC,cAAc,QAGT,wBAAqB;AAC5B,SAASC,oBAAoB,EAAEC,cAAc,QAAQ,gBAAa;AAClE,SAASC,uBAAuB,QAAQ,cAAW;AAYnD,SAASC,sBAAsB,QAAQ,kCAA+B;AAGtE,SAASC,WAAW,QAAQ,wBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createEffect, sample } from 'effector';
|
|
4
|
+
import { TranscriptionStatus } from "../../voice/types.js";
|
|
5
|
+
import { getText } from "../../../i18n/i18n.js";
|
|
6
|
+
const TRANSCRIPT_RETRY_INTERVAL_MS = 2000;
|
|
7
|
+
const TRANSCRIPT_MAX_RETRIES = 20;
|
|
8
|
+
const CHAT_WITH_VOICE_TIMEOUT_MS = 60_000;
|
|
9
|
+
// Voice key: `${assignmentId}-${problemId}-${attemptsCount}`
|
|
10
|
+
// Chat key: `${assignmentId}-${problemId}` — survives attempt increments and voice deletion.
|
|
11
|
+
const toChatKey = voiceKey => {
|
|
12
|
+
const lastDashIndex = voiceKey.lastIndexOf('-');
|
|
13
|
+
if (lastDashIndex <= 0) return null;
|
|
14
|
+
return voiceKey.slice(0, lastDashIndex);
|
|
15
|
+
};
|
|
16
|
+
export class VoiceTranscriptSnapshotModel {
|
|
17
|
+
fetchTranscript = audioFileId => {
|
|
18
|
+
const cached = this.transcriptByAudioFileId.get(audioFileId);
|
|
19
|
+
if (cached) return cached;
|
|
20
|
+
const promise = this.pollTranscript(audioFileId).catch(() => undefined);
|
|
21
|
+
this.transcriptByAudioFileId.set(audioFileId, promise);
|
|
22
|
+
return promise;
|
|
23
|
+
};
|
|
24
|
+
getTranscriptForCurrent = async () => {
|
|
25
|
+
const voiceKey = this.voiceRecord.$currentKey.getState();
|
|
26
|
+
if (!voiceKey) return undefined;
|
|
27
|
+
const chatKey = toChatKey(voiceKey);
|
|
28
|
+
if (chatKey) {
|
|
29
|
+
const snapshot = this.snapshotByChatKey.get(chatKey);
|
|
30
|
+
if (snapshot) return snapshot;
|
|
31
|
+
}
|
|
32
|
+
const record = this.voiceRecord.collection.get(voiceKey);
|
|
33
|
+
if (!record) return undefined;
|
|
34
|
+
const audioFileId = await this.resolveAudioFileId(record);
|
|
35
|
+
if (!audioFileId) return undefined;
|
|
36
|
+
return this.fetchTranscript(audioFileId);
|
|
37
|
+
};
|
|
38
|
+
wrapRequestHint = apiFn => {
|
|
39
|
+
return async (params, requestConfig) => {
|
|
40
|
+
if (this.hasPendingVoice()) {
|
|
41
|
+
requestConfig?.extendTimeoutMs?.(CHAT_WITH_VOICE_TIMEOUT_MS);
|
|
42
|
+
}
|
|
43
|
+
const voiceTranscript = await this.getTranscriptForCurrent();
|
|
44
|
+
return apiFn(voiceTranscript ? {
|
|
45
|
+
...params,
|
|
46
|
+
voiceTranscript
|
|
47
|
+
} : params, requestConfig);
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
hasPendingVoice() {
|
|
51
|
+
const voiceKey = this.voiceRecord.$currentKey.getState();
|
|
52
|
+
if (!voiceKey) return false;
|
|
53
|
+
const chatKey = toChatKey(voiceKey);
|
|
54
|
+
if (chatKey && this.snapshotByChatKey.has(chatKey)) return true;
|
|
55
|
+
return !!this.voiceRecord.collection.get(voiceKey);
|
|
56
|
+
}
|
|
57
|
+
constructor({
|
|
58
|
+
voiceRecord,
|
|
59
|
+
api,
|
|
60
|
+
errorHandler
|
|
61
|
+
}) {
|
|
62
|
+
this.voiceRecord = voiceRecord;
|
|
63
|
+
this.api = api;
|
|
64
|
+
this.errorHandler = errorHandler;
|
|
65
|
+
sample({
|
|
66
|
+
clock: voiceRecord.setCurrentRecord,
|
|
67
|
+
source: voiceRecord.$currentKey,
|
|
68
|
+
filter: (_, record) => !!record,
|
|
69
|
+
fn: (voiceKey, record) => ({
|
|
70
|
+
voiceKey,
|
|
71
|
+
record
|
|
72
|
+
}),
|
|
73
|
+
target: this.captureSnapshotFx
|
|
74
|
+
});
|
|
75
|
+
sample({
|
|
76
|
+
clock: voiceRecord.deleteCurrentRecording,
|
|
77
|
+
source: voiceRecord.$currentKey,
|
|
78
|
+
target: this.clearSnapshotFx
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
transcriptByAudioFileId = new Map();
|
|
82
|
+
snapshotByChatKey = new Map();
|
|
83
|
+
captureSnapshotFx = createEffect(({
|
|
84
|
+
voiceKey,
|
|
85
|
+
record
|
|
86
|
+
}) => {
|
|
87
|
+
const chatKey = toChatKey(voiceKey);
|
|
88
|
+
if (!chatKey) return;
|
|
89
|
+
const transcriptPromise = this.resolveAudioFileId(record).then(audioFileId => audioFileId ? this.fetchTranscript(audioFileId) : undefined);
|
|
90
|
+
this.snapshotByChatKey.set(chatKey, transcriptPromise);
|
|
91
|
+
});
|
|
92
|
+
clearSnapshotFx = createEffect(voiceKey => {
|
|
93
|
+
const chatKey = toChatKey(voiceKey);
|
|
94
|
+
if (chatKey) this.snapshotByChatKey.delete(chatKey);
|
|
95
|
+
});
|
|
96
|
+
async pollTranscript(audioFileId) {
|
|
97
|
+
for (let attempt = 0; attempt < TRANSCRIPT_MAX_RETRIES; attempt++) {
|
|
98
|
+
await new Promise(resolve => setTimeout(resolve, TRANSCRIPT_RETRY_INTERVAL_MS));
|
|
99
|
+
try {
|
|
100
|
+
const response = await this.api.getAudioFileTranscript(audioFileId);
|
|
101
|
+
if (response.status === TranscriptionStatus.COMPLETED) return response.text;
|
|
102
|
+
if (response.status === TranscriptionStatus.FAILED) break;
|
|
103
|
+
} catch {
|
|
104
|
+
// network/request failure — retry on next iteration
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
this.errorHandler?.(getText('voice.transcriptionError'));
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
async resolveAudioFileId(record) {
|
|
111
|
+
if (record.id) return record.id;
|
|
112
|
+
if (!record.audioUploadPromise) return undefined;
|
|
113
|
+
try {
|
|
114
|
+
const result = await record.audioUploadPromise;
|
|
115
|
+
return result?.id;
|
|
116
|
+
} catch {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=VoiceTranscriptSnapshotModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createEffect","sample","TranscriptionStatus","getText","TRANSCRIPT_RETRY_INTERVAL_MS","TRANSCRIPT_MAX_RETRIES","CHAT_WITH_VOICE_TIMEOUT_MS","toChatKey","voiceKey","lastDashIndex","lastIndexOf","slice","VoiceTranscriptSnapshotModel","fetchTranscript","audioFileId","cached","transcriptByAudioFileId","get","promise","pollTranscript","catch","undefined","set","getTranscriptForCurrent","voiceRecord","$currentKey","getState","chatKey","snapshot","snapshotByChatKey","record","collection","resolveAudioFileId","wrapRequestHint","apiFn","params","requestConfig","hasPendingVoice","extendTimeoutMs","voiceTranscript","has","constructor","api","errorHandler","clock","setCurrentRecord","source","filter","_","fn","target","captureSnapshotFx","deleteCurrentRecording","clearSnapshotFx","Map","transcriptPromise","then","delete","attempt","Promise","resolve","setTimeout","response","getAudioFileTranscript","status","COMPLETED","text","FAILED","id","audioUploadPromise","result"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/VoiceTranscriptSnapshotModel.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -38,13 +38,14 @@ const AdvancedButton = ({
|
|
|
38
38
|
},
|
|
39
39
|
isActive: isRecording,
|
|
40
40
|
variant: ButtonVariant.TERTIARY,
|
|
41
|
+
disabled: disabled,
|
|
41
42
|
onPressIn: onPressIn,
|
|
42
43
|
icon: isRecording ? /*#__PURE__*/_jsx(CheckIcon, {
|
|
43
44
|
size: 25,
|
|
44
45
|
color: COLORS.NEUTRAL_1
|
|
45
46
|
}) : /*#__PURE__*/_jsx(MicrophoneIcon, {
|
|
46
47
|
style: styles.advancedMicrophoneIcon,
|
|
47
|
-
color:
|
|
48
|
+
color: isRecording ? COLORS.NEUTRAL_1 : COLORS.NEUTRAL_9
|
|
48
49
|
})
|
|
49
50
|
})
|
|
50
51
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","BORDER_RADIUS","Button","ButtonColor","ButtonSize","ButtonStates","ButtonVariant","CheckIcon","COLORS","IS_WEB","MicrophoneIcon","Pressable","StyleSheet","useUnit","TEST_IDS","VOICE_RECORD_SHADOWS","VoiceRecorderState","RecordButtonVariant","useText","jsx","_jsx","defaultButtonStyles","button","width","height","AdvancedButton","isRecording","disabled","onPressIn","style","styles","advancedButtonContainer","disabledCursor","children","customColorScheme","ACTIVE","backgroundColor","PRIMARY_BLUE","borderColor","raiseColor","color","advancedButton","isActive","variant","TERTIARY","icon","size","NEUTRAL_1","advancedMicrophoneIcon","
|
|
1
|
+
{"version":3,"names":["React","BORDER_RADIUS","Button","ButtonColor","ButtonSize","ButtonStates","ButtonVariant","CheckIcon","COLORS","IS_WEB","MicrophoneIcon","Pressable","StyleSheet","useUnit","TEST_IDS","VOICE_RECORD_SHADOWS","VoiceRecorderState","RecordButtonVariant","useText","jsx","_jsx","defaultButtonStyles","button","width","height","AdvancedButton","isRecording","disabled","onPressIn","style","styles","advancedButtonContainer","disabledCursor","children","customColorScheme","ACTIVE","backgroundColor","PRIMARY_BLUE","borderColor","raiseColor","color","advancedButton","isActive","variant","TERTIARY","icon","size","NEUTRAL_1","advancedMicrophoneIcon","NEUTRAL_9","VoiceRecordButton","model","buttonVariant","t","availableInputs","recorderModel","$availableInputs","voiceRecordState","$voiceRecordState","isButtonDisabled","$isButtonDisabled","isInitializing","initializeRecording","pending","RECORDING","hasInputs","length","e","preventDefault","notification","warning","pointerEvents","undefined","ADVANCED","recorderButtonHandler","testID","VOICE_RECORD_BUTTON","LARGE","SECONDARY","colorScheme","WHITE","microphoneIconWeb","microphoneIconNative","create","alignItems","justifyContent","borderRadius","boxShadow","advancedIconContainer","cursor","minWidth","minHeight","advancedIconContainerActive"],"sourceRoot":"../../../../../../src","sources":["features/voice/recording/components/VoiceRecordButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,14 +8,15 @@ export function controlledRequest(request) {
|
|
|
8
8
|
abortAfter = 20000
|
|
9
9
|
}) => {
|
|
10
10
|
let timeout = null;
|
|
11
|
-
|
|
12
|
-
timeout
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const scheduleAbort = ms => {
|
|
12
|
+
if (timeout !== null) clearTimeout(timeout);
|
|
13
|
+
timeout = ms > 0 ? setTimeout(() => controller.abort('timeout'), ms) : null;
|
|
14
|
+
};
|
|
15
|
+
if (abortAfter) scheduleAbort(abortAfter);
|
|
16
16
|
try {
|
|
17
17
|
const response = await request(data, {
|
|
18
|
-
signal: controller?.signal
|
|
18
|
+
signal: controller?.signal,
|
|
19
|
+
extendTimeoutMs: scheduleAbort
|
|
19
20
|
});
|
|
20
21
|
if (timeout !== null) clearTimeout(timeout);
|
|
21
22
|
return response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createEffect","controlledRequest","request","data","controller","AbortController","abortAfter","timeout","setTimeout","abort","response","signal","
|
|
1
|
+
{"version":3,"names":["createEffect","controlledRequest","request","data","controller","AbortController","abortAfter","timeout","scheduleAbort","ms","clearTimeout","setTimeout","abort","response","signal","extendTimeoutMs","error","code","reason","Error","createControllerEffect","fn","effect","fail","watch"],"sourceRoot":"../../../../src","sources":["lib/effector/createControllerEffect.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAqB,UAAU;AAqBpD,OAAO,SAASC,iBAAiBA,CAC/BC,OAAiE,EACjE;EACA,OAAO,OAAO;IACZC,IAAI;IACJC,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;IAClCC,UAAU,GAAG;EACY,CAAC,KAAK;IAC/B,IAAIC,OAA6C,GAAG,IAAI;IAExD,MAAMC,aAAa,GAAIC,EAAU,IAAK;MACpC,IAAIF,OAAO,KAAK,IAAI,EAAEG,YAAY,CAACH,OAAO,CAAC;MAC3CA,OAAO,GAAGE,EAAE,GAAG,CAAC,GAAGE,UAAU,CAAC,MAAMP,UAAU,CAACQ,KAAK,CAAC,SAAS,CAAC,EAAEH,EAAE,CAAC,GAAG,IAAI;IAC7E,CAAC;IAED,IAAIH,UAAU,EAAEE,aAAa,CAACF,UAAU,CAAC;IAEzC,IAAI;MACF,MAAMO,QAAQ,GAAG,MAAMX,OAAO,CAACC,IAAI,EAAE;QACnCW,MAAM,EAAEV,UAAU,EAAEU,MAAM;QAC1BC,eAAe,EAAEP;MACnB,CAAC,CAAC;MACF,IAAID,OAAO,KAAK,IAAI,EAAEG,YAAY,CAACH,OAAO,CAAC;MAC3C,OAAOM,QAAQ;IACjB,CAAC,CAAC,OAAOG,KAAc,EAAE;MACvB,IAAKA,KAAK,CAAuBC,IAAI,KAAK,cAAc,EAAE;QACxD,IAAIb,UAAU,CAACU,MAAM,CAACI,MAAM,KAAK,SAAS,EAAE;UAC1C,MAAM,IAAIC,KAAK,CAAC,mBAAmB,CAAC;QACtC;QACA,MAAM,IAAIA,KAAK,CAAC,0BAA0B,CAAC;MAC7C;MAEA,MAAMH,KAAK;IACb;EACF,CAAC;AACH;AAEA,OAAO,MAAMI,sBAAsB,GACjCC,EAA4D,IACzD;EACH,MAAMnB,OAAO,GAAGD,iBAAiB,CAAOoB,EAAE,CAAC;EAC3C,MAAMC,MAAM,GAAGtB,YAAY,CAAEG,IAAO,IAClCD,OAAO,CAAC;IAAEC,IAAI;IAAEC,UAAU,EAAEkB,MAAM,CAAClB;EAAW,CAAC,CACjD,CAA2B;EAC3BkB,MAAM,CAAClB,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;EAEzCiB,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,MAAM;IACtBF,MAAM,CAAClB,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;EAC3C,CAAC,CAAC;EAEF,OAAOiB,MAAM;AACf,CAAC","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@ export { Chatbot } from './components/Chatbot';
|
|
|
2
2
|
export { ChatbotAvatar } from './components/Chat/ChatbotAvatar';
|
|
3
3
|
export { ChatLauncher } from './components/ChatControls/ChatLauncher';
|
|
4
4
|
export { ChatbotModel } from './model/ChatBotModel';
|
|
5
|
+
export { VoiceTranscriptSnapshotModel } from './model/VoiceTranscriptSnapshotModel';
|
|
5
6
|
export { AudioStatus, type AudioProvider, type TTSHighlightRenderer, type TTSHighlightRendererProps, } from './types/t2s.types';
|
|
6
7
|
export { MessageVariant, type ChatbotModelProps, type IChatDrawBoardAdapter, } from './types/model.types';
|
|
7
8
|
export { ChatbotAvatarVariant, ChatbotVariant } from './constants';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/chatbot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,YAAY,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAA;AACtF,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/chatbot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAA;AACnF,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,YAAY,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAA;AACtF,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AudioTranscriptResponse } from '../../voice/types';
|
|
2
|
+
import { VoiceRecordModel } from '../../voice/recording/model/VoiceRecord.model';
|
|
3
|
+
import { RequestOptionalConfig } from '../../../lib/effector/createControllerEffect';
|
|
4
|
+
type GetTranscriptApi = {
|
|
5
|
+
getAudioFileTranscript: (audioFileId: string) => Promise<AudioTranscriptResponse>;
|
|
6
|
+
};
|
|
7
|
+
export type VoiceTranscriptErrorHandler = (errorMessage: string) => void;
|
|
8
|
+
type VoiceTranscriptSnapshotModelProps = {
|
|
9
|
+
voiceRecord: VoiceRecordModel;
|
|
10
|
+
api: GetTranscriptApi;
|
|
11
|
+
errorHandler?: VoiceTranscriptErrorHandler;
|
|
12
|
+
};
|
|
13
|
+
export declare class VoiceTranscriptSnapshotModel {
|
|
14
|
+
readonly fetchTranscript: (audioFileId: string) => Promise<string | undefined>;
|
|
15
|
+
readonly getTranscriptForCurrent: () => Promise<string | undefined>;
|
|
16
|
+
readonly wrapRequestHint: <P extends object, R>(apiFn: (params: P & {
|
|
17
|
+
voiceTranscript?: string;
|
|
18
|
+
}, requestConfig?: RequestOptionalConfig) => Promise<R>) => (params: P, requestConfig?: RequestOptionalConfig) => Promise<R>;
|
|
19
|
+
private hasPendingVoice;
|
|
20
|
+
constructor({ voiceRecord, api, errorHandler }: VoiceTranscriptSnapshotModelProps);
|
|
21
|
+
private readonly voiceRecord;
|
|
22
|
+
private readonly api;
|
|
23
|
+
private readonly errorHandler?;
|
|
24
|
+
private readonly transcriptByAudioFileId;
|
|
25
|
+
private readonly snapshotByChatKey;
|
|
26
|
+
private readonly captureSnapshotFx;
|
|
27
|
+
private readonly clearSnapshotFx;
|
|
28
|
+
private pollTranscript;
|
|
29
|
+
private resolveAudioFileId;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=VoiceTranscriptSnapshotModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceTranscriptSnapshotModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/VoiceTranscriptSnapshotModel.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EAGxB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAA;AAOpF,KAAK,gBAAgB,GAAG;IACtB,sBAAsB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAClF,CAAA;AAOD,MAAM,MAAM,2BAA2B,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;AAExE,KAAK,iCAAiC,GAAG;IACvC,WAAW,EAAE,gBAAgB,CAAA;IAC7B,GAAG,EAAE,gBAAgB,CAAA;IACrB,YAAY,CAAC,EAAE,2BAA2B,CAAA;CAC3C,CAAA;AAUD,qBAAa,4BAA4B;IACvC,SAAgB,eAAe,gBAAiB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAOnF;IAED,SAAgB,uBAAuB,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB9E;IAED,SAAgB,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAC7C,CACL,MAAM,EAAE,CAAC,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,EACxC,aAAa,CAAC,EAAE,qBAAqB,KAClC,OAAO,CAAC,CAAC,CAAC,cAEO,CAAC,kBAAkB,qBAAqB,KAAG,OAAO,CAAC,CAAC,CAAC,CAO5E;IAED,OAAO,CAAC,eAAe;gBAQX,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,iCAAiC;IAoBjF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiD;IACzF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiD;IAEnF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAQhC;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;YAEY,cAAc;YAgBd,kBAAkB;CAUjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/types/api.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/types/api.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ export declare enum SessionStorageKeys {
|
|
|
32
32
|
* Primary → _4 → _6 variants, cycling through 7 base colors.
|
|
33
33
|
* Supports up to 21 unique colors before repeating.
|
|
34
34
|
*/
|
|
35
|
-
export declare const DOMAIN_COLORS: ("#
|
|
35
|
+
export declare const DOMAIN_COLORS: ("#5cd497" | "#ff5279" | "#976fe6" | "#cb60af" | "#768de3" | "#58BFBB" | "#7dddac" | "#29a96f" | "#ff7594" | "#d9295b" | "#ac8ceb" | "#7853c6" | "#d681c0" | "#BA459B" | "#92a4e9" | "#4e6ed1" | "#7ACDD1" | "#279799")[];
|
|
36
36
|
export declare const EMPTY_PIE_CHART_DATA: {
|
|
37
37
|
value: number;
|
|
38
38
|
fillPercent: number;
|
package/dist/typescript/commonjs/features/voice/recording/components/VoiceRecordButton.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoiceRecordButton.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/recording/components/VoiceRecordButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAI7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,gBAAgB,CAAA;IACvB,aAAa,EAAE,mBAAmB,CAAA;CACnC,CAAA;
|
|
1
|
+
{"version":3,"file":"VoiceRecordButton.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/recording/components/VoiceRecordButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAI7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,gBAAgB,CAAA;IACvB,aAAa,EAAE,mBAAmB,CAAA;CACnC,CAAA;AAqDD,eAAO,MAAM,iBAAiB,6BAA8B,sBAAsB,sBAiDjF,CAAA"}
|
|
@@ -9,6 +9,7 @@ type ControlledRequestProps<P> = {
|
|
|
9
9
|
};
|
|
10
10
|
export type RequestOptionalConfig = {
|
|
11
11
|
signal?: AbortSignal;
|
|
12
|
+
extendTimeoutMs?: (ms: number) => void;
|
|
12
13
|
};
|
|
13
14
|
export declare function controlledRequest<R = void, P = void>(request: (props: P, config?: RequestOptionalConfig) => Promise<R>): ({ data, controller, abortAfter, }: ControlledRequestProps<P>) => Promise<R>;
|
|
14
15
|
export declare const createControllerEffect: <T, P = void>(fn: (props: P, config?: RequestOptionalConfig) => Promise<T>) => ControlledEffect<P, T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createControllerEffect.d.ts","sourceRoot":"","sources":["../../../../../src/lib/effector/createControllerEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAMpD,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAClD,UAAU,EAAE,eAAe,CAAA;CAC5B,CAAA;AAED,KAAK,sBAAsB,CAAC,CAAC,IAAI;IAC/B,IAAI,EAAE,CAAC,CAAA;IACP,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;
|
|
1
|
+
{"version":3,"file":"createControllerEffect.d.ts","sourceRoot":"","sources":["../../../../../src/lib/effector/createControllerEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAMpD,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAClD,UAAU,EAAE,eAAe,CAAA;CAC5B,CAAA;AAED,KAAK,sBAAsB,CAAC,CAAC,IAAI;IAC/B,IAAI,EAAE,CAAC,CAAA;IACP,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC,CAAA;AAED,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAClD,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,CAAC,CAAC,uCAM9D,sBAAsB,CAAC,CAAC,CAAC,gBA4B7B;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,EAAE,CAAC,aACrC,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,CAAC,CAAC,2BAa7D,CAAA"}
|
|
@@ -2,6 +2,7 @@ export { Chatbot } from './components/Chatbot';
|
|
|
2
2
|
export { ChatbotAvatar } from './components/Chat/ChatbotAvatar';
|
|
3
3
|
export { ChatLauncher } from './components/ChatControls/ChatLauncher';
|
|
4
4
|
export { ChatbotModel } from './model/ChatBotModel';
|
|
5
|
+
export { VoiceTranscriptSnapshotModel } from './model/VoiceTranscriptSnapshotModel';
|
|
5
6
|
export { AudioStatus, type AudioProvider, type TTSHighlightRenderer, type TTSHighlightRendererProps, } from './types/t2s.types';
|
|
6
7
|
export { MessageVariant, type ChatbotModelProps, type IChatDrawBoardAdapter, } from './types/model.types';
|
|
7
8
|
export { ChatbotAvatarVariant, ChatbotVariant } from './constants';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/chatbot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,YAAY,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAA;AACtF,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/chatbot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAA;AACnF,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,YAAY,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAA;AACtF,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AudioTranscriptResponse } from '../../voice/types';
|
|
2
|
+
import { VoiceRecordModel } from '../../voice/recording/model/VoiceRecord.model';
|
|
3
|
+
import { RequestOptionalConfig } from '../../../lib/effector/createControllerEffect';
|
|
4
|
+
type GetTranscriptApi = {
|
|
5
|
+
getAudioFileTranscript: (audioFileId: string) => Promise<AudioTranscriptResponse>;
|
|
6
|
+
};
|
|
7
|
+
export type VoiceTranscriptErrorHandler = (errorMessage: string) => void;
|
|
8
|
+
type VoiceTranscriptSnapshotModelProps = {
|
|
9
|
+
voiceRecord: VoiceRecordModel;
|
|
10
|
+
api: GetTranscriptApi;
|
|
11
|
+
errorHandler?: VoiceTranscriptErrorHandler;
|
|
12
|
+
};
|
|
13
|
+
export declare class VoiceTranscriptSnapshotModel {
|
|
14
|
+
readonly fetchTranscript: (audioFileId: string) => Promise<string | undefined>;
|
|
15
|
+
readonly getTranscriptForCurrent: () => Promise<string | undefined>;
|
|
16
|
+
readonly wrapRequestHint: <P extends object, R>(apiFn: (params: P & {
|
|
17
|
+
voiceTranscript?: string;
|
|
18
|
+
}, requestConfig?: RequestOptionalConfig) => Promise<R>) => (params: P, requestConfig?: RequestOptionalConfig) => Promise<R>;
|
|
19
|
+
private hasPendingVoice;
|
|
20
|
+
constructor({ voiceRecord, api, errorHandler }: VoiceTranscriptSnapshotModelProps);
|
|
21
|
+
private readonly voiceRecord;
|
|
22
|
+
private readonly api;
|
|
23
|
+
private readonly errorHandler?;
|
|
24
|
+
private readonly transcriptByAudioFileId;
|
|
25
|
+
private readonly snapshotByChatKey;
|
|
26
|
+
private readonly captureSnapshotFx;
|
|
27
|
+
private readonly clearSnapshotFx;
|
|
28
|
+
private pollTranscript;
|
|
29
|
+
private resolveAudioFileId;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=VoiceTranscriptSnapshotModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceTranscriptSnapshotModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/VoiceTranscriptSnapshotModel.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EAGxB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAA;AAOpF,KAAK,gBAAgB,GAAG;IACtB,sBAAsB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAClF,CAAA;AAOD,MAAM,MAAM,2BAA2B,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;AAExE,KAAK,iCAAiC,GAAG;IACvC,WAAW,EAAE,gBAAgB,CAAA;IAC7B,GAAG,EAAE,gBAAgB,CAAA;IACrB,YAAY,CAAC,EAAE,2BAA2B,CAAA;CAC3C,CAAA;AAUD,qBAAa,4BAA4B;IACvC,SAAgB,eAAe,gBAAiB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAOnF;IAED,SAAgB,uBAAuB,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB9E;IAED,SAAgB,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAC7C,CACL,MAAM,EAAE,CAAC,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,EACxC,aAAa,CAAC,EAAE,qBAAqB,KAClC,OAAO,CAAC,CAAC,CAAC,cAEO,CAAC,kBAAkB,qBAAqB,KAAG,OAAO,CAAC,CAAC,CAAC,CAO5E;IAED,OAAO,CAAC,eAAe;gBAQX,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,iCAAiC;IAoBjF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiD;IACzF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiD;IAEnF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAQhC;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;YAEY,cAAc;YAgBd,kBAAkB;CAUjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/types/api.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.types.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/types/api.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ export declare enum SessionStorageKeys {
|
|
|
32
32
|
* Primary → _4 → _6 variants, cycling through 7 base colors.
|
|
33
33
|
* Supports up to 21 unique colors before repeating.
|
|
34
34
|
*/
|
|
35
|
-
export declare const DOMAIN_COLORS: ("#
|
|
35
|
+
export declare const DOMAIN_COLORS: ("#5cd497" | "#ff5279" | "#976fe6" | "#cb60af" | "#768de3" | "#58BFBB" | "#7dddac" | "#29a96f" | "#ff7594" | "#d9295b" | "#ac8ceb" | "#7853c6" | "#d681c0" | "#BA459B" | "#92a4e9" | "#4e6ed1" | "#7ACDD1" | "#279799")[];
|
|
36
36
|
export declare const EMPTY_PIE_CHART_DATA: {
|
|
37
37
|
value: number;
|
|
38
38
|
fillPercent: number;
|
package/dist/typescript/module/features/voice/recording/components/VoiceRecordButton.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoiceRecordButton.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/recording/components/VoiceRecordButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAI7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,gBAAgB,CAAA;IACvB,aAAa,EAAE,mBAAmB,CAAA;CACnC,CAAA;
|
|
1
|
+
{"version":3,"file":"VoiceRecordButton.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/voice/recording/components/VoiceRecordButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAI7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,gBAAgB,CAAA;IACvB,aAAa,EAAE,mBAAmB,CAAA;CACnC,CAAA;AAqDD,eAAO,MAAM,iBAAiB,6BAA8B,sBAAsB,sBAiDjF,CAAA"}
|
|
@@ -9,6 +9,7 @@ type ControlledRequestProps<P> = {
|
|
|
9
9
|
};
|
|
10
10
|
export type RequestOptionalConfig = {
|
|
11
11
|
signal?: AbortSignal;
|
|
12
|
+
extendTimeoutMs?: (ms: number) => void;
|
|
12
13
|
};
|
|
13
14
|
export declare function controlledRequest<R = void, P = void>(request: (props: P, config?: RequestOptionalConfig) => Promise<R>): ({ data, controller, abortAfter, }: ControlledRequestProps<P>) => Promise<R>;
|
|
14
15
|
export declare const createControllerEffect: <T, P = void>(fn: (props: P, config?: RequestOptionalConfig) => Promise<T>) => ControlledEffect<P, T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createControllerEffect.d.ts","sourceRoot":"","sources":["../../../../../src/lib/effector/createControllerEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAMpD,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAClD,UAAU,EAAE,eAAe,CAAA;CAC5B,CAAA;AAED,KAAK,sBAAsB,CAAC,CAAC,IAAI;IAC/B,IAAI,EAAE,CAAC,CAAA;IACP,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;
|
|
1
|
+
{"version":3,"file":"createControllerEffect.d.ts","sourceRoot":"","sources":["../../../../../src/lib/effector/createControllerEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAMpD,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAClD,UAAU,EAAE,eAAe,CAAA;CAC5B,CAAA;AAED,KAAK,sBAAsB,CAAC,CAAC,IAAI;IAC/B,IAAI,EAAE,CAAC,CAAA;IACP,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC,CAAA;AAED,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAClD,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,CAAC,CAAC,uCAM9D,sBAAsB,CAAC,CAAC,CAAC,gBA4B7B;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,EAAE,CAAC,aACrC,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,CAAC,CAAC,2BAa7D,CAAA"}
|
package/package.json
CHANGED
|
@@ -2,6 +2,7 @@ export { Chatbot } from './components/Chatbot'
|
|
|
2
2
|
export { ChatbotAvatar } from './components/Chat/ChatbotAvatar'
|
|
3
3
|
export { ChatLauncher } from './components/ChatControls/ChatLauncher'
|
|
4
4
|
export { ChatbotModel } from './model/ChatBotModel'
|
|
5
|
+
export { VoiceTranscriptSnapshotModel } from './model/VoiceTranscriptSnapshotModel'
|
|
5
6
|
export {
|
|
6
7
|
AudioStatus,
|
|
7
8
|
type AudioProvider,
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { createEffect, sample } from 'effector'
|
|
2
|
+
import {
|
|
3
|
+
AudioTranscriptResponse,
|
|
4
|
+
TranscriptionStatus,
|
|
5
|
+
VoiceRecordCollectionItem,
|
|
6
|
+
} from '../../voice/types'
|
|
7
|
+
import { VoiceRecordModel } from '../../voice/recording/model/VoiceRecord.model'
|
|
8
|
+
import { RequestOptionalConfig } from '../../../lib/effector/createControllerEffect'
|
|
9
|
+
import { getText } from '../../../i18n/i18n'
|
|
10
|
+
|
|
11
|
+
const TRANSCRIPT_RETRY_INTERVAL_MS = 2000
|
|
12
|
+
const TRANSCRIPT_MAX_RETRIES = 20
|
|
13
|
+
const CHAT_WITH_VOICE_TIMEOUT_MS = 60_000
|
|
14
|
+
|
|
15
|
+
type GetTranscriptApi = {
|
|
16
|
+
getAudioFileTranscript: (audioFileId: string) => Promise<AudioTranscriptResponse>
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type CaptureParams = {
|
|
20
|
+
voiceKey: string
|
|
21
|
+
record: VoiceRecordCollectionItem
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type VoiceTranscriptErrorHandler = (errorMessage: string) => void
|
|
25
|
+
|
|
26
|
+
type VoiceTranscriptSnapshotModelProps = {
|
|
27
|
+
voiceRecord: VoiceRecordModel
|
|
28
|
+
api: GetTranscriptApi
|
|
29
|
+
errorHandler?: VoiceTranscriptErrorHandler
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Voice key: `${assignmentId}-${problemId}-${attemptsCount}`
|
|
33
|
+
// Chat key: `${assignmentId}-${problemId}` — survives attempt increments and voice deletion.
|
|
34
|
+
const toChatKey = (voiceKey: string): string | null => {
|
|
35
|
+
const lastDashIndex = voiceKey.lastIndexOf('-')
|
|
36
|
+
if (lastDashIndex <= 0) return null
|
|
37
|
+
return voiceKey.slice(0, lastDashIndex)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export class VoiceTranscriptSnapshotModel {
|
|
41
|
+
public readonly fetchTranscript = (audioFileId: string): Promise<string | undefined> => {
|
|
42
|
+
const cached = this.transcriptByAudioFileId.get(audioFileId)
|
|
43
|
+
if (cached) return cached
|
|
44
|
+
|
|
45
|
+
const promise = this.pollTranscript(audioFileId).catch(() => undefined)
|
|
46
|
+
this.transcriptByAudioFileId.set(audioFileId, promise)
|
|
47
|
+
return promise
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public readonly getTranscriptForCurrent = async (): Promise<string | undefined> => {
|
|
51
|
+
const voiceKey = this.voiceRecord.$currentKey.getState()
|
|
52
|
+
if (!voiceKey) return undefined
|
|
53
|
+
|
|
54
|
+
const chatKey = toChatKey(voiceKey)
|
|
55
|
+
if (chatKey) {
|
|
56
|
+
const snapshot = this.snapshotByChatKey.get(chatKey)
|
|
57
|
+
if (snapshot) return snapshot
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const record = this.voiceRecord.collection.get(voiceKey)
|
|
61
|
+
if (!record) return undefined
|
|
62
|
+
|
|
63
|
+
const audioFileId = await this.resolveAudioFileId(record)
|
|
64
|
+
if (!audioFileId) return undefined
|
|
65
|
+
|
|
66
|
+
return this.fetchTranscript(audioFileId)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public readonly wrapRequestHint = <P extends object, R>(
|
|
70
|
+
apiFn: (
|
|
71
|
+
params: P & { voiceTranscript?: string },
|
|
72
|
+
requestConfig?: RequestOptionalConfig,
|
|
73
|
+
) => Promise<R>,
|
|
74
|
+
) => {
|
|
75
|
+
return async (params: P, requestConfig?: RequestOptionalConfig): Promise<R> => {
|
|
76
|
+
if (this.hasPendingVoice()) {
|
|
77
|
+
requestConfig?.extendTimeoutMs?.(CHAT_WITH_VOICE_TIMEOUT_MS)
|
|
78
|
+
}
|
|
79
|
+
const voiceTranscript = await this.getTranscriptForCurrent()
|
|
80
|
+
return apiFn(voiceTranscript ? { ...params, voiceTranscript } : params, requestConfig)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
private hasPendingVoice(): boolean {
|
|
85
|
+
const voiceKey = this.voiceRecord.$currentKey.getState()
|
|
86
|
+
if (!voiceKey) return false
|
|
87
|
+
const chatKey = toChatKey(voiceKey)
|
|
88
|
+
if (chatKey && this.snapshotByChatKey.has(chatKey)) return true
|
|
89
|
+
return !!this.voiceRecord.collection.get(voiceKey)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
constructor({ voiceRecord, api, errorHandler }: VoiceTranscriptSnapshotModelProps) {
|
|
93
|
+
this.voiceRecord = voiceRecord
|
|
94
|
+
this.api = api
|
|
95
|
+
this.errorHandler = errorHandler
|
|
96
|
+
|
|
97
|
+
sample({
|
|
98
|
+
clock: voiceRecord.setCurrentRecord,
|
|
99
|
+
source: voiceRecord.$currentKey,
|
|
100
|
+
filter: (_, record): record is VoiceRecordCollectionItem => !!record,
|
|
101
|
+
fn: (voiceKey, record) => ({ voiceKey, record }),
|
|
102
|
+
target: this.captureSnapshotFx,
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
sample({
|
|
106
|
+
clock: voiceRecord.deleteCurrentRecording,
|
|
107
|
+
source: voiceRecord.$currentKey,
|
|
108
|
+
target: this.clearSnapshotFx,
|
|
109
|
+
})
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
private readonly voiceRecord: VoiceRecordModel
|
|
113
|
+
private readonly api: GetTranscriptApi
|
|
114
|
+
private readonly errorHandler?: VoiceTranscriptErrorHandler
|
|
115
|
+
private readonly transcriptByAudioFileId = new Map<string, Promise<string | undefined>>()
|
|
116
|
+
private readonly snapshotByChatKey = new Map<string, Promise<string | undefined>>()
|
|
117
|
+
|
|
118
|
+
private readonly captureSnapshotFx = createEffect(({ voiceKey, record }: CaptureParams) => {
|
|
119
|
+
const chatKey = toChatKey(voiceKey)
|
|
120
|
+
if (!chatKey) return
|
|
121
|
+
|
|
122
|
+
const transcriptPromise = this.resolveAudioFileId(record).then((audioFileId) =>
|
|
123
|
+
audioFileId ? this.fetchTranscript(audioFileId) : undefined,
|
|
124
|
+
)
|
|
125
|
+
this.snapshotByChatKey.set(chatKey, transcriptPromise)
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
private readonly clearSnapshotFx = createEffect((voiceKey: string) => {
|
|
129
|
+
const chatKey = toChatKey(voiceKey)
|
|
130
|
+
if (chatKey) this.snapshotByChatKey.delete(chatKey)
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
private async pollTranscript(audioFileId: string): Promise<string | undefined> {
|
|
134
|
+
for (let attempt = 0; attempt < TRANSCRIPT_MAX_RETRIES; attempt++) {
|
|
135
|
+
await new Promise((resolve) => setTimeout(resolve, TRANSCRIPT_RETRY_INTERVAL_MS))
|
|
136
|
+
|
|
137
|
+
try {
|
|
138
|
+
const response = await this.api.getAudioFileTranscript(audioFileId)
|
|
139
|
+
if (response.status === TranscriptionStatus.COMPLETED) return response.text
|
|
140
|
+
if (response.status === TranscriptionStatus.FAILED) break
|
|
141
|
+
} catch {
|
|
142
|
+
// network/request failure — retry on next iteration
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
this.errorHandler?.(getText('voice.transcriptionError'))
|
|
146
|
+
return undefined
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
private async resolveAudioFileId(record: VoiceRecordCollectionItem): Promise<string | undefined> {
|
|
150
|
+
if (record.id) return record.id
|
|
151
|
+
if (!record.audioUploadPromise) return undefined
|
|
152
|
+
try {
|
|
153
|
+
const result = await record.audioUploadPromise
|
|
154
|
+
return result?.id
|
|
155
|
+
} catch {
|
|
156
|
+
return undefined
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -59,6 +59,7 @@ const AdvancedButton = ({ isRecording, disabled, onPressIn }: AdvancedButtonProp
|
|
|
59
59
|
}}
|
|
60
60
|
isActive={isRecording}
|
|
61
61
|
variant={ButtonVariant.TERTIARY}
|
|
62
|
+
disabled={disabled}
|
|
62
63
|
onPressIn={onPressIn}
|
|
63
64
|
icon={
|
|
64
65
|
isRecording ? (
|
|
@@ -66,9 +67,7 @@ const AdvancedButton = ({ isRecording, disabled, onPressIn }: AdvancedButtonProp
|
|
|
66
67
|
) : (
|
|
67
68
|
<MicrophoneIcon
|
|
68
69
|
style={styles.advancedMicrophoneIcon}
|
|
69
|
-
color={
|
|
70
|
-
disabled ? COLORS.NEUTRAL_5 : isRecording ? COLORS.NEUTRAL_1 : COLORS.NEUTRAL_9
|
|
71
|
-
}
|
|
70
|
+
color={isRecording ? COLORS.NEUTRAL_1 : COLORS.NEUTRAL_9}
|
|
72
71
|
/>
|
|
73
72
|
)
|
|
74
73
|
}
|
|
@@ -144,6 +144,7 @@
|
|
|
144
144
|
"redo": "Redo",
|
|
145
145
|
"redoRecording": "Redo recording?",
|
|
146
146
|
"thisWillRemoveRecording": "This will remove your previous recording.",
|
|
147
|
+
"transcriptionError": "Transcription request error",
|
|
147
148
|
"transcriptions": "Transcriptions",
|
|
148
149
|
"transcriptNotAvailable": "Transcript not available",
|
|
149
150
|
"uploadFailed": "Upload failed. Please try again.",
|
|
@@ -14,7 +14,10 @@ type ControlledRequestProps<P> = {
|
|
|
14
14
|
abortAfter?: number
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export type RequestOptionalConfig = {
|
|
17
|
+
export type RequestOptionalConfig = {
|
|
18
|
+
signal?: AbortSignal
|
|
19
|
+
extendTimeoutMs?: (ms: number) => void
|
|
20
|
+
}
|
|
18
21
|
|
|
19
22
|
export function controlledRequest<R = void, P = void>(
|
|
20
23
|
request: (props: P, config?: RequestOptionalConfig) => Promise<R>,
|
|
@@ -26,14 +29,18 @@ export function controlledRequest<R = void, P = void>(
|
|
|
26
29
|
}: ControlledRequestProps<P>) => {
|
|
27
30
|
let timeout: ReturnType<typeof setTimeout> | null = null
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
timeout
|
|
31
|
-
|
|
32
|
-
}, abortAfter)
|
|
32
|
+
const scheduleAbort = (ms: number) => {
|
|
33
|
+
if (timeout !== null) clearTimeout(timeout)
|
|
34
|
+
timeout = ms > 0 ? setTimeout(() => controller.abort('timeout'), ms) : null
|
|
33
35
|
}
|
|
34
36
|
|
|
37
|
+
if (abortAfter) scheduleAbort(abortAfter)
|
|
38
|
+
|
|
35
39
|
try {
|
|
36
|
-
const response = await request(data, {
|
|
40
|
+
const response = await request(data, {
|
|
41
|
+
signal: controller?.signal,
|
|
42
|
+
extendTimeoutMs: scheduleAbort,
|
|
43
|
+
})
|
|
37
44
|
if (timeout !== null) clearTimeout(timeout)
|
|
38
45
|
return response
|
|
39
46
|
} catch (error: unknown) {
|